java课程设计ATM柜员机模拟程序.doc_第1页
java课程设计ATM柜员机模拟程序.doc_第2页
java课程设计ATM柜员机模拟程序.doc_第3页
java课程设计ATM柜员机模拟程序.doc_第4页
java课程设计ATM柜员机模拟程序.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 atm柜员机模拟程序 专业班级 软件10-2班 学 号 1020010235 姓 名 赵 庆 国 指导教师 刘 腊 梅 2012 年 06月目录1 设计时间12 设计目的13设计任务14 设计内容14.1需求分析14.1.1问题描述14.1.2基本要求24.2总体设计24.2.1 包的描述24.2.2 类的描述24.2.3类之间的关系34.3详细设计34.3.1类图34.3.2页面设计34.4测试与分析84.5 程序代码135总结与展望30参考文献:31成绩评定311 设计时间2012年6月11日2012年6月17日2 设计目的java程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完java程序设计课程后,进行的一次全面的综合训练,java程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。理论联系实际,巩固所学知识,提高学生处理处理实际问题的能力。进一步培养学生面向对象程序设计的思想。将所学知识与社会实际现象相联系,使学生更清楚java的用途。3设计任务按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握java程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。4 设计内容 4.1需求分析运用了事件监听技术来实现atm的各种功能例如:存款、取款、修改密码、查询。利用netbeans进行用户图形的界面排版,符合日常软件使用规范来设计菜单和界面,方便用户操作,同时也使的程序更加简单。利用netbeans对图形用户界面进行排版;用jdbcutil.java文件进行数据库的连接。本次设计的需求还有设计一个有存款、取款、修改密码、查询功能。4.1.1问题描述 我们可以查询账户的余额,在查询过程中我们可以选择取款的业务。取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,取款完毕,可以选择显示余额的操作。按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输入的数字也要是100的整数倍,而且不可以是负数。选择修改密码按钮可以进行修改密码房,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。4.1.2基本要求账号登陆:银行账号和初始密码为“123456”修改密码:旧密码等于原密码,新密码必须不小于6位,并且新密码两次输入的一致查询余额:初始余额为10000元atm取款:取款的金额必须为100的倍数,不大于5000元,并且不能大于余额atm存款:存款的金额不能为负数4.2总体设计4.2.1 包的描述1. java.awt包,包含构成抽象窗口的工具集(abstract window toolkit)的多个类,用来构建和管理应用程序的图形用户界面(gui)。2. javax.swing包,扩充和增强图形用户界面功能。3. java.awt.event包,提供接口和类来处理不同类型的事件触发的awt组件。4.2.2 类的描述1. atm类,是构建atm柜员机类,完成其构建与操作的实现。2. actonlistener类,这个监听器接口接收操作事件。类处理操作事件实现这个接口,并创建这个对象与该类登记使用一个组件,使用组件的addactionlistener方法。当操作事件发生时,该对象的actionperformed方法被调用。3. gridbaglayout类gridbaglayout的类是一个灵活的布局管理器组件相吻合的水平和垂直方向,不要求组件具有相同的大小。每个gridbaglayout对象维护一个动态、矩形单元网格,每个组件占用一个或更多的单元,称为它的显示区域。4. gridbagconstraiints类,这个gridbagconstraints类指定约束的组件布局使用gridbaglayout类。5. jframe类,一款加长版java.awt。 框架添加支持jfc / swing组件体系结构。6. jpanel类,jpanel是一个通用的轻量级容器。7. jlabel类,一个显示区域很短一段文本字符串或一个图像,或两者兼而有之。一个标签输入事件不会发生反应。因此,它无法获得键盘焦点。一个标签可以,然而,显示一个键盘替代作为一个方便附近的一个组件,它有一个键盘替代,jlabel对象可以显示是文本、图像、或两者。可以指定在标签的显示区域标签的内容是一致的,通过设置的垂直和水平对齐。默认情况下,标签垂直集中在他们的显示区域。文本标签前缘对齐的,默认情况下,仅仅是图像标签水平居中,默认情况下。8. jtextfield类,是一个轻量级的jtextfield组件,允许编辑一行文本。9. jbutton类,一个实现的“推动”按钮。10. jpasswordfield类,一个轻量级组件,允许编辑一行文本视图显示出是类型,但未显示原来的字符4.2.3类之间的关系atm继承jframe类和actionlistener接口;jframe,jpanel,jlabel,jtextfile,jbutton,jpasswordfiled这些类同在java.swing包中; gridbagconstraiints类是gridbaglayout类,gridbaglayout类继承jframe类。类:jlabel变量:lb1,lb2,lb3,lb4,zh,mm,lbe1, lbe2,lbe3,cw1,cw2,cw3,label,tt,tt1,aa,bb,ww1,w1,w2,ww,方法:,jlabel(string title)4.3详细设计类:jframe变量:frame1,frame2,frame3,frame4,frame5,frame6方法:jframe(string title),gridbagconstraints()4.3.1类图 图1 图2类:jbutton变量:bt1,bt2,bt3,b1,b2,b3,b4,b5,b6,button1,button2,button3,bb1,bb2,qq1,qq2,qq3,q1,q2,q3方法:jbutton(string title)类:jpanel变量:pane,p1,p2,pq3,pp,p3方法:buidconstraints(),jpanel(),gridbagconstraints() 图3 4.3.2页面设计 图4帐号 :密码 : 取消更正确定 图5请输入要取款的数目: 退出业务确认 图6你当前可用的余额: 业务退出 图7 图8旧密码 新密码确认密码确认退出业务 图9 请输入你要存款的数目: 图104.4测试与分析1、atm自动柜员机登陆演示(1)运行程序,可以出现以下界面:(2)默认的银行帐号为“123456”,输入错误时会出现下面第二个窗口的提示:(3)输入正确的帐户号码。默认的密码为“123456”,当输入错误时出现以下提醒:(4)输入正确的帐户和密码:帐户号“123456”,密码“123456”单击“确定”后将跳转到2的查询业务界面,想重新输入则单击“更正”,转到1(1)界面,单击“退出”则退出。 2、选择业务演示当帐户号和密码都对时进入“选择业务”界面,在里面可以选择您所修要办理的业务:3、修改密码演示(1)在2“选择业务”界面选择“修改密码”进入下面的界面:(2)如果输入的原密码和前面的密码不对,就会出现下面的提示: (3)原密码输入正确,如果输入的新密码小于六位,则显示以下提示:(4)密码输入长度满足条件后,若两次输入的新密码不一致,则会出现下面的提示:(5)原密码输入正确,新密码长度不小于六位并且新密码两次输入一致,则密码修改成功,回到登录界面用新密码登录。4、余额查询演示:单击2“选择业务”界面的“查询余额”,初始余额为10000元:5、atm取款演示:(1)选择2“选择业务”界面中的“我要取款”,进入“atm取款”界面,如果输入的金额不对,就会出现下图二的提示:(3)在取款成功后可以查看余额,减少了1000元:(4)如果输入的金额大于余额时,就会提示:余额不足!(2)如果输入正确的金额,就会出现下面图二的提示,表示存款成功:(3)存款成功后查询余额,余额在前面的基础上增加了2000元。以上界面中单击“退出”可以直接退出程序运行,单击“业务”可以进入“业务选择”界面,进行所需要的操作。4.5 程序代码atm自动柜员机模拟程序代码如下:atm.java程序import java.awt.*; import javax.swing.*; import java.awt.event.*; public class atm extends jframe implements actionlistener private void buildconstraints(gridbagconstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) gbc.gridx=gx; gbc.gridy=gy; gbc.gridwidth=gw; gbc.gridheight=gh; gbc.weightx=wx; gbc.weighty=wy; /第一个窗口 变量:atm自动柜员模拟登陆jframe frame1; jlabel lb1,lb2,lb3,lb4,zh,mm; jtextfield text1; jpasswordfield text2; jpanel pane; jbutton bt1,bt2,bt3; /第二个窗口变量 :选择业务jframe frame2; jpanel p1,p2,pq3; jbutton b1,b2,b3,b4,b5,b6; /第三个窗口 变量:修改密码jframe frame3; jlabel lbe1,lbe2,lbe3,cw1,cw2,cw3; jbutton button1,button2,button3; jpasswordfield tf1,tf2,tf3; /第四个窗口 变量:查询余额jframe frame4; jlabel label,tt,tt1; jbutton bb1,bb2; /第五个窗口 变量:atm取款jframe frame5; jlabel aa,bb,ww1; jtextfield ff; jpanel pp; jbutton qq1,qq2,qq3; /第六个窗口 变量:atm存款jframe frame6; jlabel w1,w2,ww; jtextfield f; jpanel p3; jbutton q1,q2,q3;atm() /第一个窗口界面设计:atm自动柜员模拟登陆frame1=new jframe(模拟atm柜员机); frame1.setsize(400, 200); frame1.setlocation(300, 200); frame1.setresizable(false);gridbaglayout gridbag=new gridbaglayout(); gridbagconstraints constraints=new gridbagconstraints(); constraints.fill=gridbagconstraints.center; constraints.insets=new insets(2,2,2,2); frame1.setlayout(gridbag); lb1=new jlabel(请输入您的银行卡号:); lb4=new jlabel(); text1=new jtextfield(10); lb2=new jlabel(请输入您的银行卡密码:); text2=new jpasswordfield(10); text2.setechochar(); lb3=new jlabel(); zh=new jlabel(123456); zh.setvisible(false); mm=new jlabel(123456); mm.setvisible(false); pane=new jpanel(); bt1=new jbutton(更正); bt2=new jbutton(确定); bt3=new jbutton(退出); pane.add(bt1); pane.add(bt2); pane.add(bt3); buildconstraints(constraints,0,0,1,1,20,25); gridbag.setconstraints(lb1, constraints); frame1.add(lb1); buildconstraints(constraints,1,0,1,1,40,20); gridbag.setconstraints(text1, constraints); frame1.add(text1); buildconstraints(constraints,1,1,1,1,20,12); gridbag.setconstraints(lb4, constraints); frame1.add(lb4); buildconstraints(constraints,0,1,1,1,20,12); gridbag.setconstraints(zh, constraints); frame1.add(zh); buildconstraints(constraints,0,2,1,1,20,5); gridbag.setconstraints(lb2, constraints); frame1.add(lb2); buildconstraints(constraints,1,2,1,1,40,10); gridbag.setconstraints(text2, constraints); frame1.add(text2); buildconstraints(constraints,1,3,1,1,20,12); gridbag.setconstraints(lb3, constraints); frame1.add(lb3); buildconstraints(constraints,0,3,1,1,20,12); gridbag.setconstraints(mm, constraints); frame1.add(mm); buildconstraints(constraints,1,4,1,1,20,5); gridbag.setconstraints(pane, constraints); frame1.add(pane); bt1.addactionlistener(this); bt2.addactionlistener(this); bt3.addactionlistener(this); pack(); frame1.setvisible(true); /第二个窗口界面设计:选择业务 frame2=new jframe(选择业务); frame2.setsize(400, 200); frame2.setlocation(300, 200); frame2.setresizable(false);p1=new jpanel(); p2=new jpanel(); p3=new jpanel(); b1=new jbutton(修改密码); b2=new jbutton(查询余额); b3=new jbutton(我要取款); b4=new jbutton(我要存款); b5=new jbutton(退出); b6=new jbutton(返回); p1.add(b1); p1.add(b2); p2.add(b3); p2.add(b4); p3.add(b6); p3.add(b5); frame2.add(p1,borderlayout.north); frame2.add(p2,borderlayout.center); frame2.add(p3,borderlayout.south); b1.addactionlistener(this); b2.addactionlistener(this); b3.addactionlistener(this); b4.addactionlistener(this); b6.addactionlistener(this); b5.addactionlistener(this); /第三个窗口界面设计:修改密码 frame3=new jframe(修改密码); frame3.setsize(400, 180); frame3.setlocation(300, 200); frame3.setresizable(false);gridbaglayout gridbag1=new gridbaglayout(); gridbagconstraints constraints1=new gridbagconstraints(); constraints1.fill=gridbagconstraints.both; constraints1.insets=new insets(2,2,2,2); frame3.setlayout(gridbag); lbe1=new jlabel(旧密码:); lbe2=new jlabel(新密码:); lbe3=new jlabel(确认密码:); cw1=new jlabel(); cw2=new jlabel(); cw3=new jlabel(); button1=new jbutton(确认); button2=new jbutton(业务); button3=new jbutton(退出); tf1=new jpasswordfield(10); tf2=new jpasswordfield(10); tf3=new jpasswordfield(10); tf1.setechochar(); tf2.setechochar(); tf3.setechochar(); buildconstraints(constraints,0,0,1,1,20,12); gridbag.setconstraints(lbe1, constraints); frame3.add(lbe1); buildconstraints(constraints,1,0,1,1,40,0); gridbag.setconstraints(tf1, constraints); frame3.add(tf1); buildconstraints(constraints,2,0,1,1,40,5); gridbag.setconstraints(cw1, constraints); frame3.add(cw1); buildconstraints(constraints,0,1,1,1,20,12); gridbag.setconstraints(lbe2, constraints); frame3.add(lbe2); buildconstraints(constraints,1,1,1,1,40,0); gridbag.setconstraints(tf2, constraints); frame3.add(tf2); buildconstraints(constraints,2,1,1,1,40,5); gridbag.setconstraints(cw2, constraints); frame3.add(cw2); buildconstraints(constraints,0,2,1,1,20,12); gridbag.setconstraints(lbe3, constraints); frame3.add(lbe3); buildconstraints(constraints,1,2,1,1,40,0); gridbag.setconstraints(tf3, constraints); frame3.add(tf3); buildconstraints(constraints,2,2,1,1,40,5); gridbag.setconstraints(cw3, constraints); frame3.add(cw3); buildconstraints(constraints,0,3,1,1,20,12); gridbag.setconstraints(button1, constraints); frame3.add(button1); buildconstraints(constraints,1,3,1,1,40,5); gridbag.setconstraints(button2, constraints); frame3.add(button2); buildconstraints(constraints,2,3,1,1,40,5); gridbag.setconstraints(button3, constraints); frame3.add(button3); button1.addactionlistener(this); button2.addactionlistener(this); button3.addactionlistener(this); /第四个窗口界面设计:查询余额 frame4=new jframe(查询余额); frame4.setsize(400, 200); frame4.setlocation(300, 200); frame4.setresizable(false);gridbaglayout gridbag2=new gridbaglayout(); gridbagconstraints constraints2=new gridbagconstraints(); constraints2.fill=gridbagconstraints.both; constraints2.insets=new insets(2,2,2,2); frame4.setlayout(gridbag); label=new jlabel(您当前的可用余额为:); tt=new jlabel(10000); tt1=new jlabel(元); bb1=new jbutton(业务); bb2=new jbutton(退出); buildconstraints(constraints,0,0,1,1,20,30); gridbag.setconstraints(label, constraints); frame4.add(label); buildconstraints(constraints,1,0,1,1,1,30); gridbag.setconstraints(tt, constraints); frame4.add(tt); buildconstraints(constraints,2,0,1,1,30,30); gridbag.setconstraints(tt1, constraints); frame4.add(tt1); buildconstraints(constraints,0,1,1,1,1,2); gridbag.setconstraints(bb1, constraints); frame4.add(bb1); buildconstraints(constraints,2,1,1,1,1,2); gridbag.setconstraints(bb2, constraints); frame4.add(bb2); bb1.addactionlistener(this); bb2.addactionlistener(this); /第五个窗口界面设计:atm取款 frame5=new jframe(atm取款); frame5.setsize(400, 200); frame5.setlocation(300, 200); frame5.setresizable(false);gridbaglayout gridbag3=new gridbaglayout(); gridbagconstraints constraints3=new gridbagconstraints(); constraints3.fill=gridbagconstraints.center; constraints3.insets=new insets(2,2,2,2); frame5.setlayout(gridbag3); aa=new jlabel(请输入您要取的数目); ff=new jtextfield(10); bb=new jlabel(元); pp=new jpanel(); qq1=new jbutton(确定); qq2=new jbutton(业务); qq3=new jbutton(退出); ww1=new jlabel(); pp.add(qq1); pp.add(qq2); pp.add(qq3); buildconstraints(constraints3,0,0,1,1,20,10); gridbag3.setconstraints(aa, constraints3); frame5.add(aa); buildconstraints(constraints3,0,1,1,1,1,1); gridbag3.setconstraints(ff, constraints3); frame5.add(ff); buildconstraints(constraints3,1,1,1,1,30,0); gridbag3.setconstraints(bb, constraints3); frame5.add(bb); buildconstraints(constraints3,0,2,1,1,20,10); gridbag3.setconstraints(pp, constraints3); frame5.add(pp); buildconstraints(constraints3,2,2,1,1,20,0); gridbag3.setconstraints(ww1, constraints3); frame5.add(ww1); qq1.addactionlistener(this); qq2.addactionlistener(this); qq3.addactionlistener(this); pack();/第六个窗口界面设计:atm存款 frame6=new jframe(atm存款); frame6.setsize(400, 200); frame6.setlocation(300, 200); frame6.setresizable(false);gridbaglayout gridbag4=new gridbaglayout(); gridbagconstraints constraints4=new gridbagconstraints(); constraints4.fill=gridbagconstraints.center; constraints4.insets=new insets(2,2,2,2); frame6.setlayout(gridbag4); w1=new jlabel(请输入您要存款的数目); f=new jtextfield(10); w2=new jlabel(元); p3=new jpanel(); q1=new jbutton(确定); q2=new jbutton(业务); q3=new jbutton(退出); ww=new jlabel(); p3.add(q1); p3.add(q2); p3.add(q3); buildconstraints(constraints4,0,0,1,1,20,10); gridbag4.setconstraints(w1, constraints4); frame6.add(w1); buildconstraints(constraints4,0,1,1,1,1,1); gridbag4.setconstraints(f, constraints4); frame6.add(f); buildconstraints(constraints4,1,1,1,1,30,0); gridbag4.setconstraints(w2, constraints4); frame6.add(w2); buildconstraints(constraints4,0,2,1,1,20,10); gridbag4.setconstraints(p3, constraints4); frame6.add(p3); buildconstraints(constraints4,2,2,1,1,20,0); gridbag4.setconstraints(ww, constraints4); frame6.add(ww); q1.addactionlistener(this); q2.addactionlistener(this); q3.addactionlistener(this); pack(); public void actionperformed(actionevent aa) /第一个窗口事件:atm自动柜员模拟登陆 if(aa.getsource()=bt1) lb3.settext(); lb4.settext(); text1.settext(); text2.settext(); if(aa.getsource()=bt2) string zh1=zh.gettext(); string mm1=mm.gettext(); if(text1.gettext().equals(zh1) & text2.gettext().equals(mm1) frame1.setvisible(false); frame2.setvisible(true); if(!(text1.gettext().equals(123456) text1.settext(); text2.settext(); lb4.settext(); lb4.settext(帐户不存在,请重新输入!); if(text1.gettext().equals(123456) & !(text2.gettext().equals(123456) if(text2.gettext().equals() text2.settext(); lb4.settext(); lb3.settext(请输入密码!); else text2.settext(); lb4.settext(); lb3.settext(密码不正确,请重新输入!); if(aa.getsource()=bt3) system.exit(0); /第二个窗口事件 :选择业务if(aa.getsource()=b1) tf1.settext();tf2.settext();tf3.settext();cw1.settext();cw2.settext();cw3.settext();frame2.setvisible(false); frame3.setvisible(true); if(aa.getsource()=b2) frame2.setvisible(false); frame4.setvisible(true); if(aa.getsource()=b3) frame2.setvisible(false); frame5.setvisible(true); ww1.settext();ff.settext(); if(aa.getsource()=b4) ww.settext(); frame2.setvisible(false); frame6.setvisible(true); f.settext(); if(aa.getsource()=b6) text1.settext(); text2.settext(); lb4.settext(); lb3.settext(); frame2.setvisible(false); frame1.setvisible(true); if(aa.getsource()=b5) system.exit(0); /第三个窗口事件 :修改密码if(aa.getsource()=button1) string mm2=mm.gettext(); int xmms=tf2.gettext().length();if(tf1.gettext().equals(mm2) if(xmms=6)if(tf3.gettext

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论