java课程设计ATM柜员机模拟程序.docx
- 文档编号:7333530
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:33
- 大小:291.61KB
java课程设计ATM柜员机模拟程序.docx
《java课程设计ATM柜员机模拟程序.docx》由会员分享,可在线阅读,更多相关《java课程设计ATM柜员机模拟程序.docx(33页珍藏版)》请在冰豆网上搜索。
java课程设计ATM柜员机模拟程序
软件学院
课程设计报告书
课程名称面向对象程序设计
设计题目ATM柜员机模拟程序
专业班级软件10-2班
学号1020010235
姓名赵庆国
指导教师刘腊梅
2012年06月
1设计时间
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包,包含构成抽象窗口的工具集(abstractwindowtoolkit)的多个类,用来构建和管理应用程序的图形用户界面(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类。
4.3详细设计
4.3.1类图
图1图2
图3
4.3.2页面设计图4
图5
图6
图7
图8
图9
图10
4.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程序
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassATMextendsJFrameimplementsActionListener{
privatevoidbuildConstraints(GridBagConstraintsgbc,intgx,intgy,intgw,intgh,intwx,intwy){
gbc.gridx=gx;
gbc.gridy=gy;
gbc.gridwidth=gw;
gbc.gridheight=gh;
gbc.weightx=wx;
gbc.weighty=wy;
}
//第一个窗口变量:
ATM自动柜员模拟登陆
JFrameframe1;
JLabellb1,lb2,lb3,lb4,zh,mm;
JTextFieldtext1;
JPasswordFieldtext2;
JPanelpane;
JButtonbt1,bt2,bt3;
//第二个窗口变量:
选择业务
JFrameframe2;
JPanelp1,p2,pq3;
JButtonb1,b2,b3,b4,b5,b6;
//第三个窗口变量:
修改密码
JFrameframe3;
JLabellbe1,lbe2,lbe3,cw1,cw2,cw3;
JButtonbutton1,button2,button3;
JPasswordFieldtf1,tf2,tf3;
//第四个窗口变量:
查询余额
JFrameframe4;
JLabellabel,tt,tt1;
JButtonbb1,bb2;
//第五个窗口变量:
ATM取款
JFrameframe5;
JLabelaa,bb,ww1;
JTextFieldff;
JPanelpp;
JButtonqq1,qq2,qq3;
//第六个窗口变量:
ATM存款
JFrameframe6;
JLabelw1,w2,ww;
JTextFieldf;
JPanelp3;
JButtonq1,q2,q3;
ATM(){
//第一个窗口界面设计:
ATM自动柜员模拟登陆
frame1=newJFrame("模拟ATM柜员机");
frame1.setSize(400,200);
frame1.setLocation(300,200);
frame1.setResizable(false);
GridBagLayoutgridbag=newGridBagLayout();
GridBagConstraintsconstraints=newGridBagConstraints();
constraints.fill=GridBagConstraints.CENTER;
constraints.insets=newInsets(2,2,2,2);
frame1.setLayout(gridbag);
lb1=newJLabel("请输入您的银行卡号:
");
lb4=newJLabel("");
text1=newJTextField(10);
lb2=newJLabel("请输入您的银行卡密码:
");
text2=newJPasswordField(10);
text2.setEchoChar('●');
lb3=newJLabel("");
zh=newJLabel("123456");
zh.setVisible(false);
mm=newJLabel("123456");
mm.setVisible(false);
pane=newJPanel();
bt1=newJButton("更正");
bt2=newJButton("确定");
bt3=newJButton("退出");
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=newJFrame("选择业务");
frame2.setSize(400,200);
frame2.setLocation(300,200);
frame2.setResizable(false);
p1=newJPanel();
p2=newJPanel();
p3=newJPanel();
b1=newJButton("修改密码");
b2=newJButton("查询余额");
b3=newJButton("我要取款");
b4=newJButton("我要存款");
b5=newJButton("退出");
b6=newJButton("返回");
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=newJFrame("修改密码");
frame3.setSize(400,180);
frame3.setLocation(300,200);
frame3.setResizable(false);
GridBagLayoutgridbag1=newGridBagLayout();
GridBagConstraintsconstraints1=newGridBagConstraints();
constraints1.fill=GridBagConstraints.BOTH;
constraints1.insets=newInsets(2,2,2,2);
frame3.setLayout(gridbag);
lbe1=newJLabel("旧密码:
");
lbe2=newJLabel("新密码:
");
lbe3=newJLabel("确认密码:
");
cw1=newJLabel("");
cw2=newJLabel("");
cw3=newJLabel("");
button1=newJButton("确认");
button2=newJButton("业务");
button3=newJButton("退出");
tf1=newJPasswordField(10);
tf2=newJPasswordField(10);
tf3=newJPasswordField(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=newJFrame("查询余额");
frame4.setSize(400,200);
frame4.setLocation(300,200);
frame4.setResizable(false);
GridBagLayoutgridbag2=newGridBagLayout();
GridBagConstraintsconstraints2=newGridBagConstraints();
constraints2.fill=GridBagConstraints.BOTH;
constraints2.insets=newInsets(2,2,2,2);
frame4.setLayout(gridbag);
label=newJLabel("您当前的可用余额为:
");
tt=newJLabel("10000");
tt1=newJLabel("元");
bb1=newJButton("业务");
bb2=newJButton("退出");
buildConstraints(constraints,0,0,1,1,20,30);
gridbag.setConstraints(label,constraints);
frame4.add(label);
buildCon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 ATM 柜员机 模拟 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)