《ATM课程设计报告--ATM模拟程序.docx》由会员分享,可在线阅读,更多相关《ATM课程设计报告--ATM模拟程序.docx(19页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求11.2.1登陆账户的要求11. 2.2程序实现的功能要求11.3涉及包的描述1第2章概要设计22.1 整个程序的模块结构及流程22.2 各个功能的设计思路22.3.1查询余额22.3.2ATM取款32.4.3ATM存款32.4.4更改密码32.3.5退出程序32.3美化程序3第3章功能实现43.1登录窗口的实现43.2功能选择窗口的实现63.3主要功能模块的实现63.3.1查询余额的实现73.3.2取钱的实现93.3.3存钱的实现103.3.4改密的实现10第4章调试及发现问题的解决13第5章程序测试及分析14第6章总结17参考文献18第
2、1章课题概述本次数据结构课程设计的题目是设计并实现ATM模拟程序。1.1 课题的目的ATM模拟程序是日常应用程序,将java程序和日常生活的应用相结合,表现了java语言设计的实践性和应用性。加深学生对理论教学内容的理解和掌握,使学生系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发打下一定基础。1. 2课题的要求1.2 .1登陆账户的要求输入给定的卡号和密码(初始卡号为62250028和密码为123456)时,系统能登录ATM柜员机系统,进行一系列操作。1.2.2程序实现的功能要求1、查询余额:初始余额为100OO元;2、AT
3、M取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;3、ATM存款:不能出现负存款;4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码;5、要求数据采用文件存储,如果界面实现采用了GUL则酌情加分。1.3涉及包的描述1. java,awt包,包含构成抽象窗口的工具集(abstractwindowtoolkit)的多个类,用来构建和管理应用程序的图形用于界面(GUI)。2. javax.swing包,扩充和增强图形用户界面功能。3. java.io包,通过数据流、序列化和文件系统提供
4、系统输入和输出。4. java.Iang包,提供利用Java编程语言进行程序设计的基础类。5. java,uti包,包含collection框架、遗留的collection类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。第2章概要设计2.1整个程序的模块结构及流程根据课题要求,整个程序分为两个主窗口,分别为登陆窗口和功能选择窗口。登陆窗口主要实现用户登陆。输入用户名以及密码,判断是否正确,若正确,则登入功能选择窗口,反之,重新输入。功能选择窗口分为五个模块,分别为查询:查询余额、取款:ATM取款、存款:ATM存款、改密:更改密码以及退出:退出程序
5、。程序各功能模块的划分,及主要流程如图2-1(1)和图2-1(2)所示。图2-1整个程序各功能模块间的流程2.2各个功能的设计思路程序一共有八个类,其中LoginFrame()类为登录页面。主要包括:两个标签:“卡号”、“密码”,两个文本框:JTeXtField、JPasswordField和两个按钮:“登录登退出退程序可以从文档中直接读取用户名以及密码,通过验证正确与否,进入功能选择窗口,即MainFrame()类。该页面设置安放按钮并给按钮创建监听ActionListener,对所有按钮进行监听。2.3.1查询余额按下“查询”按钮就可以进行查询功能,可以跳出一个依附功能选择窗口的小窗口(各
6、个跳出的小窗口都是如此),显示了当前用户所拥有的余额。在此小窗口里有“确认”按钮,可以销毁小窗口,即返回功能选择窗口。2.3.2ATM取款按下“取款”按钮就可以跳出取款的小窗口。在文本框中输入你想取出的金额,就可以实行取款功能,余额会相应减少。取款成功会弹出“取款成功,谢谢!”的语句,按下“确定”会销毁窗体。要注意的是1、每次取款的金额数需要是100的倍数。2、每次取款总额不超过5000元。3、取款金额不允许是负数。4、取款金额不得超过账户所拥有的余额。2.4.3ATM存款按下“存款”按钮就可以跳出存款的小窗口。在文本框中输入你想存储的金额,就可以实行存款功能,余额会相应增加。存款成功会弹出“
7、存款成功,谢谢!”的语句,按下“确定”会销毁窗体。要注意的是存款时,金额不允许有负存款。2.4.4更改密码按下“改密”按钮,会弹出更改密码的小窗口。此窗口内有3个文本框,分别是原密码,新密码和确认密码。首先,原密码必须正确,其次,输入新密码的长度不小于6位,不允许出现6位完全相同的情况,最后,输入的确认密码必须和新密码相同,才可以更改密码成功。任何一点不符合即更改密码失败。按取消或者确认按钮则可以销毁窗体。2.3.5退出程序按下“退出”按钮,就会弹出是否退出程序的小窗口,可选择是或否来决定是否退出。是,则程序结束,将余额写进文档中。2.3美化程序以JFrame对象作为此程序的容器,设置标题并实
8、现最小化窗、移动窗口等功能。其中添加JLabel(Iconimage)构造JLabel标签文本以及指定图标为image,添加JBUttOn(IConicon)构造JBUtton按钮组件,并指定图标。运用了FloWLayoUt、BorClerLayoUt等布局,布置了容器的边框布局。对容器组件进行安排,并调整其大小,在北、南、东、西、中的区域中安排组件,也安排面板中的按钮,使得按钮呈水平放置。第3章功能实现3.1登录窗口的实现程序中用了ActionListener监听JBUttOn按钮。定义了USer和PaSSWOrd,用try-catch-finalIy语句处理异常,读取文本文档count中的
9、数据。try(br=newBufferedReader(newInputStreamReader(newFiIeInputStream(z,D:/count,txt);user=br.readLine();password=br.readLine();)catch(IOExccptione)e.PrintStackTrace();finally(try(br.close();)catch(IOExceptione)e.PrintStackTrace();)在LoginFranle()类中,用语句SUPCr(ATM管理系统);继承父类,命名了窗口。定义了一个容器COntainerC=this.g
10、ctContentPanc();定义容器大小setSize(300,200);并使窗口居中显示。使用了BorderLayout的布局,在北部、南部以及中部分别放置一个组件。/北部JLabeljl=newJLabel();Iconicon=CreateIcon.getlcon(*login.jpgzz);jl.setlcon(icon);/南部JPanelpl=newJPanel();pl.SetLayout(newFlowLayout(FlowLayout.CENTER,30,2);jbl=newJButton(登录);jbl.addActionListener(this);Jb2=newJB
11、utton(退出);jb2.addActionListener(this);pl.add(jbl);pl.add(jb2);/中部JPanelcenter=newJPanel();JLabeljll=newJLabel(卡号:);jtfl=newJTextField(12);JLabeljl2=newJLabcl(密码:);jpf=newJPasswordField(12);jtfl.SCtText(user);center.SetLayout(newGridLayout(2,1);center,add(jll);center,add(jtf1);JPanel11=newJPanel();ll
12、.add(jll);11.add(jtfl);JPanel12=newJPanel();12.add(j12);12.add(jpf);center,add(ll);center,add(12);c.add(jl,BorderLayout.NORTH);c.add(pl,BorderLayout.SOUTH);c.add(center,BorderLayout.CENTER);SetDefaultcioseOperation(JFramc.EXITONCLOSE);setVisible(true);)publicstaticvoidmain(Stringargs)newLoginFrameO;
13、)监听登录按钮,执行以下代码,使用if-else语句判断登录用户名和密码是否正确。正确,则调用newMainFrameO;,错误,则显示语句“帐号或者密码错误:监听退出按钮,执行程序退出。SUPPreSSWarningS(deprecation)publicvoidactionPerformcd(ActionEvente)/登录按钮if(e.getSource()=jbl)(if(jtf1.getText().equals(user)&jpf.getText().equals(password)newMainFrame();dispose();)elseJOptionPane.ShowMess
14、ageDialog(this,帐号或者密码错误”);)/退出按钮elseif(e.getSource()=jb2)System,exit(O);3.2功能选择窗口的实现程序中用了ActionListener监听JBUttOn按钮。定义JBUttOrb定义JPanel容器,用FlowLayout流布局使五个按钮在同一直线水平放置添加在容器里。用BorderLayout布局将JPanel放在南部,将找的一张图片放在中部作为背景。用if-else语句,调用ShowMoneyDialogODrawMoneyDialogOAddMoneyDiaIog()和ModifyDialogO。确认退出程序,则将用
15、户的余额写入文本文档Colmter中,并退出程序。publicvoidactionPerformcd(ActionEvente)if(e.getSourcc()=jbl)/查询余额newShowMoneyDialog(this);elseif(e.gctSource()=jb2)/取钱按钮newDrawMoneyDialog(this);elseif(e.getSource()=jb3)/存钱newAddMoncyDialog(this);elseif(e.gctSource()=jb4)/修改密码newModifyDialog(this);elseif(e.getSource()=Jb5)/退出按钮if(JOptionPane.ShowCOnfirmDialog(this,“确认退出系统?)=0)try(BufferodWriterbr=newBufferedWriter(newOutputStreamWriter