ATM取款机java课程设计第二次试验Word下载.docx
《ATM取款机java课程设计第二次试验Word下载.docx》由会员分享,可在线阅读,更多相关《ATM取款机java课程设计第二次试验Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
4.1遇到的问题及解决办法10
4.2心得体会11
ATM初始账号:
000000
初始密码:
123456
ATM柜员机
按钮的事件和功能可以简单的模拟ATM柜员机的要求。
1系统需求分析
1.1功能需求分析
本ATM柜员机的主要功能如下所述:
要求使用图形用户界面。
当输入给定的卡号和密码(初始数据保存于txt文件中)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
●查询余额:
●ATM取款:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
●ATM存款:
不能出现负存款。
●修改密码:
新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
1.2其他需求分析
(1)性能描述
实时性好、灵活性强、易于不同年龄阶段的人操作。
(2)设计约束
开发工具:
Eclipse
运行环境:
WindowsXP、Window7
能实现用户所定义的各项需求。
(3)界面要求
以Windows窗口形式显示,标题栏为ATM柜员机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。
2系统设计
2.1总体设计
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。
其功能结构图如下所示:
图1ATM功能结构示意图
2.2登陆页面模块设计
与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入密码和卡号才能继续服务。
我定义了文本框类的对象tf1,tf2。
是用于输入单行的文本;
文本区调用publicStringgetPassword()方法,获取用户想要的字符串。
用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。
此模块相应的部分源代码为:
publicvoidactionPerformed(ActionEvente){
Accountact;
act=newAccount("
000000"
"
HuangHuai"
123456"
50000);
//初始化
/*选择各种服务*/
if(e.getSource()==button1){
Stringnumber1,number2;
//输入的两个卡号和密码的变量
number1=tf1.getText().toString();
number2=newString(tf2.getPassword());
/*判断两次输入的卡号和密码是否正确*/
if((act.getCode().equals(number1))&
&
(act.getPassword().equals(number2))){
dispose();
newSelection("
选择服务"
act);
}else{
JOptionPane.showMessageDialog(this,"
密码或帐号错误!
"
账户提示信息"
JOptionPane.ERROR_MESSAGE);
newWindowBox("
ATM"
);
}
}
if(e.getSource()==button2){
System.exit(0);
dispose();
//退出
}
}
2.3选择服务模块设计
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPerformed(ActionEvente)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。
其中的部分源代码为:
p.add(newLabel("
请选择你要的服务"
));
this.add(p);
/*各种服务功能*/
buttonCUN=newButton("
存款"
);
p1.add(buttonCUN);
this.add(p1);
buttonQU=newButton("
取款"
p2.add(buttonQU);
this.add(p2);
buttonCHA=newButton("
查询余额"
p3.add(buttonCHA);
this.add(p3);
buttonTUI=newButton("
退出"
p4.add(buttonTUI);
this.add(p4);
buttonGAI=newButton("
修改密码"
2.4取款模块设计
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。
当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。
其方法为:
publicStringwithdrawMoney(doublemoney){
Stringstr=null;
if(money<
=0){
str="
取款数目须是正数!
;
if(getMoney()<
0){//判断余额是否为负
str="
余额为负数!
}elseif(money<
=getMoney()){
if((money%100!
=0)||(money>
=5000)){//取钱数为100的倍数或不大于5000
str="
取款数目须是一百的整数倍!
}else{
setBalance(money);
str="
取款成功:
余额为"
+getMoney();
}
}else{
str="
余额不足!
}
returnstr;
2.5修改密码模块设计
在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。
再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。
在修改密码时用到的方法为:
/*判断旧密码是是否正确*/
if(pwd2.equals(pwd1)){
if(pwd3.equals(pwd4)){//判断两次输入的新密码是个匹配
act.changePassword(pwd3);
//启用新的密码
dispose();
JOptionPane.showMessageDialog(this,"
修改密码成功!
newSelection("
选择"
//返回选择服务窗口
this.setVisible(true);
两次输入要修改的密码不同,更新密码失败!
}
}else{
this.setVisible(false);
输入密码错误,更新密码失败!
2.6退卡模块设计
在退卡模块设计中,这个方法就更加的简单了,它只是用了if(e.getSource()==buttonTUI){//退出
这个方法就可以实现了,这里就不再多说了。
3系统实现与测试
(1)打开MyEclipse,编译运行程序后,将会看到如下的界面,如图2所示。
如果输入的密码或卡号不正确的话就会报下图的错误。
图2主界面—登陆页面
(2)选择服务界面效果
当输入的密码和卡号正确,单击确定后就会进入到选择服务的界面,如图3所示。
然后就可以选择所需要的服务了。
图3选择服务界面
(3)取款界面,如图4所示。
图4取款界面
当输入的钱数不是100的倍数或每一次大于5000时就会报图5的错误。
图5输入错误
当取款时如果超过卡里的余额的话就会报图6的错误。
图6输入错误2
(4)查询余额界面,如图7所示。
图7查询余额界面
(5)修改密码界面,如下图所示。
经过测试,所有的功能基本上都实现了,而且运行正常。
4课程设计总结
4.1遇到的问题及解决办法
在此次课程设计中,我遇到了一些问题,如:
对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;
对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;
还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。
对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。
对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。
4.2心得体会
在这次课程设计中,我主要运用了Java语言的界面设计、异常处理、、Awt控件、Swing控件,输入输出流等,综合运用了Java语言。
我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
通过这两个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。
好了,下面就谈一下我在这些天的体会吧:
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
输入输出流等技术。
由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。
正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。
通过将近两周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。
在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。