java课程设计ATM柜员机模拟程序.doc

上传人:文库蛋蛋多 文档编号:2398575 上传时间:2023-02-17 格式:DOC 页数:32 大小:325.50KB
返回 下载 相关 举报
java课程设计ATM柜员机模拟程序.doc_第1页
第1页 / 共32页
java课程设计ATM柜员机模拟程序.doc_第2页
第2页 / 共32页
java课程设计ATM柜员机模拟程序.doc_第3页
第3页 / 共32页
java课程设计ATM柜员机模拟程序.doc_第4页
第4页 / 共32页
java课程设计ATM柜员机模拟程序.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《java课程设计ATM柜员机模拟程序.doc》由会员分享,可在线阅读,更多相关《java课程设计ATM柜员机模拟程序.doc(32页珍藏版)》请在三一办公上搜索。

1、软 件 学 院课程设计报告书课程名称 面向对象程序设计 设计题目 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 设计目的

2、JAVA程序设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA程序设计课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。理论联系实际,巩固所学知识,提高学生处理处理实际问题的能力。进一步培养学生面向对象程序设计的思想。将所学知识与社会实际现象相联系,使学生更清楚java的用途。3设计任务按课

3、程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。4 设计内容 4.1需求分析运用了事件监听技术来实现ATM的各种功能例如:存款、取款、修改密码、查询。利用Net

4、Beans进行用户图形的界面排版,符合日常软件使用规范来设计菜单和界面,方便用户操作,同时也使的程序更加简单。利用NetBeans对图形用户界面进行排版;用JDBCUtil.java文件进行数据库的连接。本次设计的需求还有设计一个有存款、取款、修改密码、查询功能。4.1.1问题描述 我们可以查询账户的余额,在查询过程中我们可以选择取款的业务。取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,取款完毕,可以选择显示余额的操作。按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输入的数字也要是100的整数倍,而且不可以是负数。选择修改密码按

5、钮可以进行修改密码房,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。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包,扩充和增强图形用

6、户界面功能。3. java.awt.event包,提供接口和类来处理不同类型的事件触发的AWT组件。4.2.2 类的描述1. ATM类,是构建ATM柜员机类,完成其构建与操作的实现。2. ActonListener类,这个监听器接口接收操作事件。类处理操作事件实现这个接口,并创建这个对象与该类登记使用一个组件,使用组件的addActionListener方法。当操作事件发生时,该对象的actionPerformed方法被调用。3. GridBagLayout类GridBagLayout的类是一个灵活的布局管理器组件相吻合的水平和垂直方向,不要求组件具有相同的大小。每个GridBagLayout

7、对象维护一个动态、矩形单元网格,每个组件占用一个或更多的单元,称为它的显示区域。4. GridBagConstraiints类,这个GridBagConstraints类指定约束的组件布局使用GridBagLayout类。5. JFrame类,一款加长版java.awt。 框架添加支持JFC / Swing组件体系结构。6. JPanel类,JPanel是一个通用的轻量级容器。7. JLabel类,一个显示区域很短一段文本字符串或一个图像,或两者兼而有之。一个标签输入事件不会发生反应。因此,它无法获得键盘焦点。一个标签可以,然而,显示一个键盘替代作为一个方便附近的一个组件,它有一个键盘替代,J

8、Label对象可以显示是文本、图像、或两者。可以指定在标签的显示区域标签的内容是一致的,通过设置的垂直和水平对齐。默认情况下,标签垂直集中在他们的显示区域。文本标签前缘对齐的,默认情况下,仅仅是图像标签水平居中,默认情况下。8. JTextField类,是一个轻量级的JTextField组件,允许编辑一行文本。9. JButton类,一个实现的“推动”按钮。10. JPasswordField类,一个轻量级组件,允许编辑一行文本视图显示出是类型,但未显示原来的字符4.2.3类之间的关系ATM继承JFrame类和ActionListener接口;JFrame,JPanel,JLabel,JTex

9、tFile,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

10、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你当前可用的余

11、额: 业务退出 图7 图8旧密码 新密码确认密码确认退出业务 图9 请输入你要存款的数目: 图104.4测试与分析1、ATM自动柜员机登陆演示(1)运行程序,可以出现以下界面:(2)默认的银行帐号为“123456”,输入错误时会出现下面第二个窗口的提示:(3)输入正确的帐户号码。默认的密码为“123456”,当输入错误时出现以下提醒:(4)输入正确的帐户和密码:帐户号“123456”,密码“123456”单击“确定”后将跳转到2的查询业务界面,想重新输入则单击“更正”,转到1(1)界面,单击“退出”则退出。 2、选择业务演示当帐户号和密码都对时进入“选择业务”界面,在里面可以选择您所修要办理的

12、业务:3、修改密码演示(1)在2“选择业务”界面选择“修改密码”进入下面的界面:(2)如果输入的原密码和前面的密码不对,就会出现下面的提示: (3)原密码输入正确,如果输入的新密码小于六位,则显示以下提示:(4)密码输入长度满足条件后,若两次输入的新密码不一致,则会出现下面的提示:(5)原密码输入正确,新密码长度不小于六位并且新密码两次输入一致,则密码修改成功,回到登录界面用新密码登录。4、余额查询演示:单击2“选择业务”界面的“查询余额”,初始余额为10000元:5、ATM取款演示:(1)选择2“选择业务”界面中的“我要取款”,进入“ATM取款”界面,如果输入的金额不对,就会出现下图二的提示

13、:(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 im

14、plements 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

15、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 la

16、bel,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); fram

17、e1.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

18、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

19、(退出); 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、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

21、,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); buildConstrain

22、ts(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

23、, 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,

24、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(修改密码);

25、 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); lbe

26、1=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(); t

27、f2.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.se

28、tConstraints(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)

29、; 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

30、,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); buil

31、dConstraints(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

32、); 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=n

33、ew 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,

34、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)

35、; 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.CENT

36、ER; 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(constr

37、aints3,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); buildConstr

38、aints(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();/第六个窗口

39、界面设计: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,

40、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.setConstrain

41、ts(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.se

42、tConstraints(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

43、自动柜员模拟登陆 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().e

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号