《java课程设计--ATM模拟程序.docx》由会员分享,可在线阅读,更多相关《java课程设计--ATM模拟程序.docx(17页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求11.2.1存取款的要求11.2.2修改密码的要求1第2章概要设计22.1整个程序的界面结构22.2各个界面的设计32.2.1登录界面32.2.2选择业务界面32.2.3修改密码界面42.2.4查询余额界面42.2.5取款界面52.2.6存款界面5第3章程序功能的实现63.1主界面的实现63.2业务界面的实现73.2.1选择业务界面实现73.2.2修改密码界面实现83.2.3查询余额界面实现103.2.4存取款界面实现10第4章调试及发现问题的解决12第5章程序测试及分析13第6章总结15参考文献16第1章课题概述本次java课程设计的题目
2、是简单的ATM程序。1.1 课题的目的ATM柜员机在我们生活中随处可见,24小时为我们提供了存取款等业务,让我们的生活更加的便利,我需要做的就是将这样一个程序通过图形界面模拟现实生活中的ATM界面,并且也会提供一些已有的账号和密码,在登陆页面登陆,若密码与账号无误则会显示选择业务页面,会提供常见的功能,存取款,修改密码功能。这里就有文件存储与读取来记录账号和密码,以及余额,密码的改动,密码改动后将更新密码,这样就更接近现实生活中的程序,有很大的现实意义。1.2 课题的要求1.2.1 存取款的要求(1)查询余额:初始余额为100OO元;(2) ATM取款:每次取款金额为100的倍数,总额不超过5
3、000元,支取金额不允许透支;(3) ATM存款:不能出现负存款;(4)余额变化要通过文件存储的形式保存下来,该账号对应的余额在程序下次启动时是更新后的数目;1.2.2修改密码的要求(1)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码;(2)修改的新密码需要以文件存储方式更新,下次该账户登录需要使用修改的新密码;第2章概要设计2.1整个程序的界面结构根据课题要求,首先出现的是登陆界面,在确认账号密码无误后出现选择业务页面,再可以选择业务,并根据你选择的业务出现相应界面,每个界面都有程序退出键以及返回键返回登
4、陆界面。下图是功能模块图:2.2各个界面的设计2.2.1登录界面第一个窗口的变量有JPanelimagePanel;ImageiconbackgroundJFrameframe1;JLabellbl,lb2,lb3,lb4;JTextFieldtextl;JPasswordFieldtext2;JPanelpane;JButtonbtl,bt2,bt3背景图片放在一个JLable中再将framel的背景设为透明,再将有背景图片的JLabIe放在Pane上,将Pane放在framel上达到背景的效果。窗口的其他组件在计算好坐标后就依次添加在pane上,这样第一个界面就已经设计好了2.2.2选择业
5、务界面第二个界面的变量有JBUttOnbl,b2,b3,b4,b5,b6;利用在MainFrame中的构造方法,设置每一个JButton的位置,排列好了之后添加监听,在用户选择后显示相应的界面。2.2.3修改密码界面第三个界面的变量有JButtonbtnl,btn2,btn3;JLabellbel,lbe2,lbe3,cwl,cw2,cw3;JPasswordFieldtf1,tf2,tf3;在文本输入框的右方依次放置三个JLabe1,用于提示用户输入密码的规则,密码输入框的字符是以*表示,是不可见的。在密码修改全部符合规则才可以更新密码,返回到选择业务界面。2.2.4查询余额界面第四个界面的
6、变量有JLabeIlabel;JLabeltt;JLabelttl;JButtonbbl,bb2;这个界面是一个查询的页面,用户无法修改余额,因此没有设置文本输入框,两个按键用户可以操作,可以返回选择业务界面或者退出程序。2.2.5取款界面第五个界面的变量有JLabelaa,bb,WW1;JTextFieldff;JPanelpp;JButtonqql,qq2,qq3;在这个界面用户需要输入的金额,输入的金额需要符合规则,是大于100且小于5000的100的整数,这一点也是很符合实际生活中的标准的。在这里设置了JOptionPane,来提示用户输入金额。2.26存款界面第六个界面的变量有JLa
7、belwl,w2,w;JTextFieldf;JPanelp3;JButtonql,q2,q3;这个界面与第五个界面没有什么大的区别,只是文本不一样,提示的文字也不一样,在这里用户输入的金额耍求不能为负数,且为100的倍数,大于100小于5000o第3章程序功能的实现3.1主界面的实现在设置好界面的布局后,添加事件的监听,用数组的形式依次读取账号和密码,之所以用数组是以为,数组可以存储多个用户,这样就可以实现取款机的多用户使用了。在这些准备工作做好之后就是实现登录界面的功能。代码如下:publicvoidactionPerformed(ActionEvente)if(e.getSource()
8、=btl)lb3.setText(,z,);lb4.setText();textl.SetTeXt();text2.setText(/,z,);elseif(e.getSource()=bt2)intflag=O;for(inti=O;izh.length;i+)if(textl.getText().equals(zhi)&text2.getText().equals(password)flag=1;newFrame_2();frame1.disposeO;break;)flag=-1;if(flag=-1)textl.setText(z,z,);text2.SetTeXt();lb3.set
9、Text(,z,);lb4.setText(账户不存在,请重新输入);return;elseif(e.getSource()=bt3)System,exit(O);)publicstaticvoidWriter()throwsIOExceptiontry(FileWriterf3=null;f3=newFileWriter(,d:Wpassword.txtzz);BufferedWriterff3=newBufferedWriter(f3);ff3.write(password);ff3.close();catch(FileNotFoundExceptione)e.PrintStackTrac
10、e();)publicstaticvoidWriterMoneyOthrowsIOExceptiontryFileWriterf3=null;f3二newFileWriter(z,d:count.txtz,);BufferedWriterff3=newBufferedWriter(f3);ff3.write(money+;ff3.close();catch(FileNotFoundExceptione)e.PrintStackTrace();)3.2业务界面的实现3.2.1选择业务界面实现选择业务界面主要是根据用户的选择显示相应的界面,用if-else判断并做出响应皆可。因此在选择业务界面的实
11、现里只要是方法的调用。publicvoidactionPerformed(ActionEvente)if(e.getSource()=bl)newMoclifyPassword(this);elseif(e.getSource()=b2)newSearchMoney(this);elseif(e.getSource()=b3)newDrawMoney(this);elseif(e.getSource()=b4)newAddMoney(this);elseif(e.getSourceO=b5)System,exit(O);elseif(e.getSource()=b6)System,exit(O
12、);3.2.2修改密码界面实现修改密码的实现主要是判断,在判断原密码是否错误,在判断新密码两次是否一致,以及新密码的要求,当符合所有的条件后才可以修改成功,并以写的方式写到存储密码的文件里,实现密码的刷新。publicvoidactionPerformed(ActionEvente)if(e.getSource()=btnl)/确认if(tf1.getText().equals(MainFrame.password)Strings=tf2.getText();if(s.matches(,0-96*)=true)if(s.equals(tf3.getText()intsum=O;charc=s.
13、charAt(O);for(intj=O;j=6)tf2.setText(”);tf3.SetTeXt();cw1.setText();cw2.setText(请输入不重复的六位数!);cw3.setText(/,z,);return;elsecw1.setText();cw2.setText();MainFrame.password=s;try(MainFrame.WriterO;catch(IOExceptionel)el.PrintStackTrace();)cw3.SetTeXt(密码修改成功!);return;)elsecw1.setText();cw3.setText(,z,);t
14、f1.setText();tf2.SetTeXt();tf3.SetTeXt();cw2.SetTeXt(两次输入的密码不一致!”);return;elsecw1.setText();cw2.setText(”);tf1.setText(/,z,);tf2.setText();tf3.SetTCXt();cw3.setText(”请输入六位数的密码!);return;)elsecwl.SetTeXt(原密码错误!);cw2.setTextC);cw3.setText(z,z,);tf1.SetTeXt();tf2.setText(z,z,);tf3.setText();elseif(e.getSource()=btn2)dispose();elseif(e.getSource()=btn3)System,exit(0);)3.2.3查询余额界面实现查询余额的实现就是将在文件中读取的数目显示出来publicvoidactionPerformed(ActionEvente)if(e.getSource()=bbl)this,dispo