合肥学院
计算机科学与技术系
课程设计报告
2012~2013 学年第一学期
课 程 Java 课程设计
课 程 设 计 名 称 信用卡在线管理系统
专 业 班 级 11 计本(4)班
姓 名 黄伟
指 导 教 师 张贯虹 胡春玲
2013 年 1 月
一. 需求分析
1、课程设计名称及内容
课程设计名称:信用卡在线管理系统
设计内容:设计一个信用卡管理系统,实现基于网络管理信用卡信息。
2、任务和要求
系统用户分为管理员、注册用户和普通用户。
a) 提供注册功能,系统的访问者可以注册成为注册用户,注册信息包括卡号、
密码和其他个人信息。注册用户没有任何操作权限,必须经管理员审批通过
后成为普通用户才有权操作。新注册的用户,卡上初始金额为 0。
b) 普通用户可以执行现金转入、现金转出、个人信息修改、余额查询和交易记
录查询功能。
c) 用户可以录入转入金额和转出金额,当转出金额大于信用卡的余额时,须判
断透支金额是否在本卡的信用额度内(信用额度由管理员设定),如果在则允许
透支,否则拒绝支出。
d) 当信用卡发生透支后,在 20 天内不计利息,20 天后按每天 1%计算利息,当
透支金额+透支利息超过本卡的信用额度,则本卡自动转入“黑名单”(利息继续
计算),不再允许进行现金转出操作。
e) 普通用户可以随时查看卡内余额。
f) 普通用户可以按时间段查看交易记录,包括转入、转出和透支情况。
g) 管理员可以审核注册用户,设定用户信用额度,批准成为普通用户。
h) 管理员可以查看系统内的黑名单,包括卡号和透支额度。
二. 设计
1.数据库设计思想:
(1)数据库的设计:我们使用的数据库是 Microsoft SQL 2005。
创建 record 和 user 表:
create database card;
use card;
create table record
(
id int not null primary key ,
fromId varchar(100) not null,
toId varchar(50) not null,
money float not null,
tradetime datetime
);
create table user1
(
id varchar(50) primary key not null,
password varchar(50) not null,
name varchar(100) not null,
type int ,
money float ,
credit float ,
overdraft float ,
blacklist int
);、
交易表
用户表
(2)对数据库的操作
Insert 主要时用来对数据库进行插入操作,例如在 record 表中插入一条记录
为,
public boolean insert ( Record record ){
String sql = "insert into record(id,fromId,toId,money,tradetime)
values(?,?,?,?,?)";
try {
PreparedStatement pre = (sql);
Calendar calendar=();
(());
(1 , ());
(2 , ());
(3 , ());
(4 , ());
(5 , ());
();
return true;
} catch (SQLException e) {
();
}
return false;
}
Delete 是多数据表中的记录加以删除,例如对 user 表中的记录删除操作为:
public boolean delete ( User user ){
String sql = "delete from [user] where id=?";
try {
PreparedStatement pre = (sql);
(1, ());
();
return true;
} catch (SQLException e) {
();
}
return false;
}
Update 是对数据库中的信息加以修改!
findAll 是查找数据库中的所有记录!
findById 是通过用户给定的 id 好来对数据库进行扫描,查找出所有与输入
的 id 相匹配的信息!
同时也可以根据其他的关键字对数据库进行查找查找,例如是否是黑名单,
是否已经有透支额了等等,具体的实现见代码!
程序的设计:
主要以下几个包:
--bean
--User 表示的是 user 表中的一条记录
--Record 表示的是 record 表中的一条记录
--ChangePasswordBean 是对修改密码时的所有属性的封装
--zhucBean 是在新用户注册时的一条记录,主要包括属性 id ,password ,
name ;以及 set 和 get 方法!
--dao
--DBConnection 用于连接数据库
--RecordDAO 接口是封装对数据表 Record 的操作
--UserDAO 接口是封装对数据表 User 的操作
--exception
--inputChangePasswordInfoNotRightException 是用来显示输入的修改密码的
出错的信息!
--InputGetNumNotRightException 是用户输入的取款金额不合法异常
--InputSetNumNotRightException 是用户输入的存款金额不合法异常
--LoginInfoNotRightException 是用户登陆是的不合法异常
--imp
--RecordDAOImp 是对接口 RecordDAO 中的方法的实现。
--UserDAOImp 是对接口 UserDAO 中方法的实现。
--service
--ChangePasswordService 是对修改密码服务中可能出现的不正常信息加以
分类并且予以处理。
--GetService 是对用户输入的取款信息的不正常信息加以分类并且予以处
理。
-- LoginService 是对用户在登陆时输入信息的不正常信息加以分类并且予
以处理。
-- SetService 是对用户输入的存款信息的不正常信息加以分类并且予以处
理。
-- view
-- ChangePasswordFrame 是修改密码的操作界面。
-- GetFrame 是用户进行取款操作的界面。
-- GuanlFram 是管理员进行操作的界面。
-- LoginView 是登陆主界面。
-- PtFram 是普通用户的操作界面。
-- SetFrame 是用户进行存款操作的界面。
-- zhucFram 是新注册用户进行注册的界面。
a.登陆时主界面设计
public class LoginView extends JFrame implements ActionListener{
private JButton adminLoginButton;
private JButton zhucButton;
private JButton loginButton;
private JTextField idField;
private JPasswordField passwordField;
private JLabel showMessageLabel;
private String title="登陆";
private JPanel panel=null;
//protected ImageIcon icon;
public LoginView(){
//窗口属性设置
(250, 80, 550,600);
//icon=new ImageIcon("img/");
panel=new JPanel();
(null);
(250, 80, 600,650);
//创建相应的组件
adminLoginButton=new JButton("管理员登陆");
JLabel welcomeLabel=new JLabel("欢迎使用信用卡网上管理模拟系统");
showMessageLabel=new JLabel();
JLabel nameLabel=new JLabel("账号");
JLabel passwordLabel=new JLabel("密码");
idField=new JTextField();
passwordField=new JPasswordField();
zhucButton=new JButton("注册");
loginButton=new JButton("登陆");
// (new
ImageIcon(().getImage("F:\\MyEclipse\\abcdefg\\atm\\")));
//组件属性设置
(390, 340, 120, 25);
(100, 500, 500, 30);
(new Font("隶书",,30));
(20, 50, 500, 60);
(170,240,60,30);
(170, 290, 60, 30);
(205, 240, 180, 25);
(205, 290, 180, 25);
(205, 340,60,25);
(305, 340,60,25);
('*');
// 注册监听器
(this);
(this);
(this);
(this);
//向面板中添加各个组件
(adminLoginButton);
(showMessageLabel);
(welcomeLabel);
(nameLabel);
(passwordLabel);
(idField);
(passwordField);
(zhucButton);
(loginButton);
(panel);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(0);
}
});
(false);
(true);
}
/*
* 事件处理
*/
public void actionPerformed(ActionEvent e) {
if((JButton)()==zhucButton){
new zhucFram("新用户注册界面");
}
else if((JButton)()==loginButton){
UserDAOImp userDao=new UserDAOImp();
User user=new User();
LoginService loginService=new LoginService();
(().trim());
((()));
User user1=(user);
("user="+());
try {
(user1);
//用户登陆成功后得主界面
new PtFram("用户登陆成功后的操作界面",()).setVisible(true);
(false);
("ghghj");
(null,"登陆成功!!
","",_OPTION);
} catch (LoginInfoNotRightException e1){
();
(());
(());
}
}
else if(()==adminLoginButton){
if("admin".equals(())&&"admin".equals((
d()))){
//管理员注册成功后的主界面
new GuanlFram(" 管理员登陆成功后的操作界面").setVisible(true);
(false);
}
else {
("账号错或者密码错,请查找后重新登陆!");
(null);
(null);
}
}
}
}
主界面截图:
b.注册新用户界面
public class zhucFram extends JFrame implements ActionListener {
Box basebox,box1,box2;
Button Button1,Button2;
TextField NameTextField =new TextField(12);
TextField idTextField =new TextField(12);
JPasswordField passwordTextField = new JPasswordField(12);
JPasswordField repasswordTextField = new JPasswordField(12);
public zhucFram(String s)
{
super(s);
Button1=new Button("确定");
Button2=new Button("取消");
box1=();
(new Label("姓名"));
((8));
(new Label("卡号"));
((8));
(new Label("请输入密码"));
((8));
(new Label("请再输一遍"));
((8));
(Button1);
box2=();
(NameTextField);
((8));
(idTextField);
((8));
(passwordTextField);
((8));
(repasswordTextField);
((8));
(Button2);
basebox=();
(box1);
((10));
(box2);
(this);
(this);
setLayout(new FlowLayout());
add(basebox);
setBounds(240,250,500,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(()==Button1)
{
String userName = (()) ;
String userId = (()) ;
String userPassword = (()) ;
String testPassword = (()) ;
if((testPassword)){
try{
User user1=new User();
(userId);
(userName);
(userPassword);
UserDAOImp addUser=new UserDAOImp();
boolean success=(user1);
if(success) (null,"注册成功,请重新登陆
","",_OPTION);
else{
(null,"注册失败!!","",_OPTION);
}
}
catch(Throwable www){();}
}
else{
(null,"您输入的密码前后不符,请重新输入
","",_OPTION);
}
}
else{dispose() ;}
}
}
用户注册界面截图:
c.管理员登陆界面
public class GuanlFram extends Frame implements ActionListener{
Button shenhButton=new Button("审核注册用户");
Button chakButton=new Button("查看系统内的黑名单");
Button _return = new Button("返回");
Box baseBox,box1;
public GuanlFram(String s)
{
super(s);
box1=();
((10));
(shenhButton);
((10));
(chakButton);
((10));
(_return);
baseBox=();
(box1);
(this);
(this);
(this);
setLayout(new FlowLayout());
add(baseBox);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(0);
}
});
setBounds(240,250,500,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(()==shenhButton)
{
//("新注册用户的信息");
UserDAOImp userdao=new UserDAOImp();
List list = new UserDAOImp().findByType(0);
final Frame frame=new Frame();
TextArea text=new TextArea(50,50);
(new FlowLayout());
(text);
(240,250,500,300);
// (_return);
(true);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(false);
}
});
if(()==0)
("系统现在没有新注册的用户");
else{
for(int i=0;i<();i++){
User user=(User)(i);
("卡号:"+());
("\n密码:"+());
("\n姓名:"+());
("\n余额"+());
("\n信用额度"+());
("\n透支金额"+());
("\n******************************");
("\n此时系统已经将新注册用户提升为普通用户了!");
(1);
("\n******************************");
("\n系统已经将新注册用户的信用额度设置为1000元!");
(1000);
(user);
}
}
}
else if(()==chakButton)
{
//("进入系统黑名单界面");
List list = new UserDAOImp().findByBlacklist(1);
final Frame frame=new Frame();
TextArea text=new TextArea(50,50);
(new FlowLayout());
(text);
(240,250,500,300);
(true);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(false);
}
});
if(()==0)
("系统现在没有黑名单的用户");
else{
for(int i=0;i<();i++){
User user=(User)(i);
("卡号:"+());
("\n密码:"+());
("\n姓名:"+());
("\n余额:"+());
("\n信用额度:"+());
("\n透支金额:"+());
("\n******************************");
}
}
}
else if(() == _return){
new LoginView();
dispose();
}
}
}
管理员登陆界面截图:
e.普通用户登陆界面
public class PtFram extends Frame implements ActionListener{
private String id;
Button getButton=new Button("现金转出");
Button setButton=new Button("现金转入");
Button changeButton=new Button("个人信息修改");
Button serchButton=new Button("余额查询");
Button serchjiluButton=new Button("交易记录查询");
Button serchfhButton=new Button("返回");
Box baseBox,box1;
public PtFram(String s,String id)
{
super(s);
=id;
box1=();
((10));
(getButton);
((10));
(setButton);
((10));
(changeButton);
((10));
(serchButton);
((10));
(serchjiluButton);
((10));
(serchfhButton);
baseBox=();
(box1);
(this);
(this);
(this);
(this);
(this);
(this);
setLayout(new FlowLayout());
add(baseBox);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(0);
}
});
setBounds(240,250,500,300);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(()==getButton)
{
("进入现金转出界面");
new GetFrame(id).setVisible(true);
}
else if(()==setButton)
{
("进入现金转入界面");
new SetFrame(id).setVisible(true);
}
else if(()==changeButton)
{
("进入信息修改界面");
//User user=new UserDAOImp().update(id);
new ChangePasswordFrame(id).setVisible(true);
}
else if(()==serchButton)
{
("进入余额查询界面");
List list= new UserDAOImp().findById(id);
final Frame frame=new Frame();
TextArea text=new TextArea(50,50);
(new FlowLayout());
(text);
(240,250,500,300);
(true);
for(int i=0;i<();i++){
User user=(User)(i);
("卡号:"+());
("\n密码:"+());
("\n姓名:"+());
("\n余额"+());
("\n信用额度"+());
("\n透支金额"+());
("\n******************************");
}
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(false);
}
});
}
else if(()==serchjiluButton)
{
("进入交易记录查询界面");
List list = new RecordDAOImp().findAll();
final Frame frame=new Frame();
TextArea text=new TextArea(50,50);
(new FlowLayout());
(text);
(240,250,500,300);
(new WindowAdapter(){
public void windowClosing(WindowEvent e){
(false);
}
});
(true);
for(int i=0;i<();i++){
Record record=(Record)(i);
if("admin".equals(()))
("\n id号为"+()+"的用户从系统取出金额");
else
("\n id号为"+()+"的用户"+"向系统输入金额");
("\n交易金额"+());
("\n交易时间"+());
}
}
else if(()==serchfhButton)
{
new LoginView();
dispose();
}
}
}
普通用户登陆界面截图:
f.取款界面
public class GetFrame extends JFrame implements ActionListener{
private String id;
private String title="取款";
private User pt;
private JLabel showMessageLabel=null;
private JLabel infoLabel=null;
private JButton resetButton=null;
private JButton ensureButton=null;
private JTextField inputGetCashNumField=null;
public GetFrame(String id){
=id;
(null);
(250, 80, 550,600);
//创建组件
showMessageLabel=new JLabel();
infoLabel=new JLabel("请输入金额");
resetButton=new JButton("重置");
ensureButton=new JButton("确定");
inputGetCashNumField=new JTextField();
//设置组件的属性
(100, 500, 500, 30);
(100, 250, 100, 35);
(205, 250, 180, 25);
(205, 300,60,25);
(305, 300,60,25);
//注册组件
(this);
(this);
//向面板中添加组件
(infoLabel);
(inputGetCashNumField);
(ensureButton);
(resetButton);
(showMessageLabel);
}
public void actionPerformed(ActionEvent e) {
if(()==ensureButton){
UserDAOImp getCashDao=new UserDAOImp();
RecordDAOImp recorddao=new RecordDAOImp();
GetService getCashService=new GetService();
String cashNum=();
try {
pt=(User)(id).get(0);
(cashNum,(),(),());
float getCashNum=(cashNum);
double newBalance=()-getCashNum;
User clientOne=new User();
clientOne=;
if(newBalance<=0){
(0);
((-newBalance)+());
}
else {(newBalance);}
(clientOne);
("取款成功!");
//获取系统的当前时间,以作为用户的操作时间
Calendar calendar=();
//(new Date());
int year=();
int month=(()+1);
int day=();
Date date=new Date(year,month,day);
Record record=new Record();
(date);
(getCashNum);
("admin");
(id);
(record);
} catch (InputGetNumNotRightException ex) {
(());
();
}
}
else if(()==resetButton){
("");
}
}
}
用户取款界面截图:
g.存款界面
public class SetFrame extends JFrame implements ActionListener{
private String title="存款";
private String id;
private User client;
private JLabel showMessageLabel=null;
private JLabel infoLabel=null;
private JButton resetButton=null;
private JButton ensureButton=null;
private JTextField inputsavingNumField=null;
public SetFrame(String id){
=id;
(new BorderLayout());
(250, 80, 550,600);
//创建面板
(null);
(250, 80, 550,600);
//创建组件
showMessageLabel=new JLabel();
infoLabel=new JLabel("请输入金额");
resetButton=new JButton("重置");
ensureButton=new JButton("确定");
inputsavingNumField=new JTextField();
//设置组件的属性
(100, 500, 500, 30);
(100, 250, 100, 35);
(205, 250,180, 25);
(205, 300,60,25);
(305, 300,60,25);
//注册组件
(this);
(this);
//向面板中添加组件
(infoLabel);
(inputsavingNumField);
(ensureButton);
(resetButton);
(showMessageLabel);
}
public void actionPerformed(ActionEvent e) {
if(()==ensureButton){
UserDAOImp setCashDao=new UserDAOImp();
RecordDAOImp recorddao=new RecordDAOImp();
SetService savingService=new SetService();
String savingNum=();
try {
client=(User)(id).get(0);
(savingNum);
float setCashNum=(savingNum);
double newBalance=()+setCashNum;
User clientOne=new User();
clientOne=;
if(()>0)
{
if(()>setCashNum)
(()-setCashNum);
else
{
(());
(0);
}
}
else
(newBalance);
(clientOne);
("存款成功!");
//获取系统的当前时间,以作为用户的操作时间
Calendar calendar=();
//(new Date());
int year=();
int month=(()+1);
int day=();
Date date=new Date(year,month,day);
Record record=new Record();
(date);
(setCashNum);
(id);
("admin");
(record);
} catch (InputSetNumNotRightException ex) {
(());
();
}
}
else if(()==resetButton){
("");
}
}
}
用户存款界面截图:
h.修改密码界面
public class ChangePasswordFrame extends JFrame implements ActionListener{
private String id;
private User client=new User();
private JButton resetButton;
private JButton submitButton;
private JButton backButton;
private JPasswordField oldPasswordField;
private JPasswordField newPasswordOneField;
private JPasswordField newPasswordTwoField;
private JLabel showMessageLabel;
private String title="更改密码";
public ChangePasswordFrame(String id){
=id;
(id);
(250, 80, 550,600);
(null);
(250, 80, 550,600);
//创建相应的组件
showMessageLabel=new JLabel();
JLabel oldPasswordLabel=new JLabel("原密码");
JLabel newPasswordOneLabel=new JLabel("新密码");
JLabel newPasswordTwoLabel=new JLabel("再次输入新密码");
oldPasswordField=new JPasswordField();
newPasswordOneField=new JPasswordField();
newPasswordTwoField=new JPasswordField();
resetButton=new JButton("重置");
submitButton=new JButton("提交");
backButton=new JButton("退出");
//组件属性设置
(100, 500, 500, 30);
(100, 190, 100, 30);
(100,240,100,30);
(100, 290, 100, 30);
(205, 190, 180, 25);
(205, 240, 180, 25);
(205, 290, 180, 25);
('*');
('*');
('*');
(205, 340,60,25);
(305, 340,60,25);
(450, 450, 60, 25);
// 注册监听器
(this);
(this);
(this);
//向面板中添加各个组件
(showMessageLabel);
(oldPasswordLabel);
(newPasswordOneLabel);
(newPasswordTwoLabel);
(resetButton);
(submitButton);
(backButton);
(oldPasswordField);
(newPasswordOneField);
(newPasswordTwoField);
}
public void actionPerformed(ActionEvent e) {
if(()==resetButton){
(null);
(null);
(null);
}
else if(()==submitButton){
UserDAOImp updateDao=new UserDAOImp();
ChangePasswordBean changePasswordInfo=new ChangePasswordBean();
ChangePasswordService changePasswordService=new ChangePasswordService();
String oldPassword=(());
String newPasswordOne=(());
String newPasswordTwo=(());
(());
(oldPassword);
(newPasswordOne);
(newPasswordTwo);
try {
client=(User)(id).get(0);
(());
(changePasswordInfo);
User clientOne=new User();
clientOne=;
(newPasswordOne);//只需换掉密码
boolean success=(clientOne);
if(!success){
("对不起!系统操作数据库失败!");
}
else ("更改密码成功!");
} catch (InputChangePasswordInfoNotRightException ex) {
(());
();
}
}
else if(()==backButton){
(false);
}
}
}
修改密码界面
i.余额查询
*在输出系统黑名单用户时采用以下方法:
List list = new UserDAOImp().findByBlacklist(1);//从数据库中扫描关键字为
1 即是黑名单的用户
for(int i=0;i<();i++){…}//用循环来将黑名单用户的所有的信息输出!
系统中其他地方的输出于此类似!
三. 调试及测试
1、在调试及测试的过程中有很多的问题,开始时不知道如何区别系统的
每个用户,后来用来以关键字用来区别时新注册用户还是 ng 普通用户,
关键字为 1 时为普通用户,关键字为 0 时为新注册用户,在管理员进行审
核时将新注册用户提升为普通用户!
2、在进行存款操作时,一开始没有想到用户可能已经有透支额,直接将
用户新存入的金额存入为他的剩余金额,后来出现错误,经过检查发现此
问题,知道在存入金额时系统应该优先查看此用户是否有透支额,如果有
则现将透支额还清,才可以将用户的此次的钱保存为他的剩余金额!
3、在输出系统黑名单时也遇到同的问题,也采用相同的方法加以处理,
用一个关键字来加以区别,当字为 1 时则为黑名单用户,如果关键字为 0
则不是黑名单用户!
四.使用说明
本系统对于不同权限的用户有不同的操作权限,新注册用户不能对系统进
行操作,管理员可以管理员可以审核注册用户,设定用户信用额度,批准成为普
通用户,也可以查看系统内的黑名单,包括卡号和透支额度。普通用户普通用户
可以随时查看卡内余额还可以按时间段查看交易记录,包括转入、转出和透支情
况。首先会有一个登陆的界面,用户可以根据自己的 id 和 password 登陆,经系
统审批成功后即可有相应的操作权限,如果出现错误系统将会给出提示信息,下
面对一些输入信息的限制加以描述。
1、普通用户在进行取款操作时,输入的取款金额必须是阿拉伯数据,还有用户
应该注意你输入的金额应该在你剩余的金额和透支额度之内,不可以超过 2 者之
和,否则不予以操作。
2、普通用户在进行存款操作时,输入的取款金额必须是阿拉伯数据,还有用户
应该注意你输入的金额不可以小于 0,否则系统会出错,不予以操作。
3、普通用户在进行修改密码操作时应该注意你输入的原始密码必须和系统所保
存的一致,在你输入新密码后,系统会提示你在输入一次加以确认,所以你两次
输入的新密码必须一致,否则系统会报错!
五.经验体会
通过这次课程设计,不仅使我巩固了 C 语言以及 java 的知识,还学会了将
这三门专业课的知识很好的融会贯通。这次课程设计让我受益匪浅,通过这次课
程设计让我重新认识了自己学习上的不足,自己存在的诸多问题,让我了解到在
遇到问题时如何去解决,是的,我们要正视我们的问题,发现问题后要积极的去
解决而不是自我逃避,通过不断的经历和尝试检验自身的水平和适应能力,我也
许做的不够好但我已经尝试去做的最完美了,我也学习到很多,今天我学到的所
有这些都必将对我将来的所有产生深刻的影响;我们的课程设计是开学布置的题
目,然后有两个星期的时间去做,时间有些紧张。虽然做的很匆忙,但是我们还
是查阅了很多资料,和同学讨论,有些同学参加过 java 课程的培训,所以他们
对我们这些基础比较薄弱的同学的帮助很大,。所以我就根据课件的知识很快就
把程序的概要设计了出来,剩下的就是调试了,在调试的过程中有很多小的基础
知识点我都不记得了,只好重新去翻书和询问同学,在他们的帮助下很多错误都
解决了。回头看看自己所犯的错误,看起来都有些微不足道,但是却能发现一个
人的认真程度。
认识:
一开始拿到这个问题,觉得似乎不是想象中那么难,在没有很好的规划的情
况下就开始盲目的写程序,但真正在着手写的时候就遇到了很多问题,不知道先
写哪个函数再写哪个函数,出现一些基础知识的错误,在解决问题的时候也有点
手足无措,不知道从什么地方下手,但经过这次课程设计后我了解到很多,不论
什么样的项目都需要进行详细的分析来发现和解决一些情况,这也是一个对问题
从认识到建立模型,之后提出方法,修改方法,最终解决问题的过程;在了解分
析好题目后要对自己做一个很全面、很好的计划,这样在写的过程中如果遇到问
题,更有利的去解决,去查阅书籍,这次的课程设计也是因为很好的分析与规划
才让我这么顺利的完成!在所有的准备工作都做好之后,我开始写代码,在写的
过程中我遇到了很多问题,发现自己的基本工不是很好,了解到我们不应该对一
些小的细节不在乎,只有注意了才会更好,所有的代码都不是信手拈来的,都需
要一个逐步的从点到面的认识,一次课程设计是将我们所学习的知识的一个串联,
我们不可能抱侥幸心理,希望自己拿到的题目不需要用到我们学习不好的知识,
希望我们程序不完善的地方不被老师发现,其实所有的希望都不如换成努力,我
们努力再一点学好所有的知识点,我们再努力一点把自己的缺陷弥补好,我们再
努力一点去收集我们需要的知识来做好我们的项目,虽然我做得不项老师期望的
那么好,但我已经尽力去完成了,这次的课程设计对我影响很大,我相信这些影
响对我之后的学习会起到极大的推动作用。
3.收获:
这次课程设计让我受益匪浅,通过这次课程设计让我重新认识了自己学习上
的不足,自己存在的诸多问题,让我了解到在遇到问题时如何去解决,是的,我
们要正视我们的问题,发现问题后要积极的去解决而不是自我逃避,通过不断的
经历和尝试检验自身的水平和适应能力,我也许做的不够好但我已经尝试去做的
最完美了,我也学习到很多,今天我学到的所有这些都必将对我将来的所有产生
深刻的影响。