ATM取款机系统java课程设计.docx
- 文档编号:5930652
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:75
- 大小:230.28KB
ATM取款机系统java课程设计.docx
《ATM取款机系统java课程设计.docx》由会员分享,可在线阅读,更多相关《ATM取款机系统java课程设计.docx(75页珍藏版)》请在冰豆网上搜索。
ATM取款机系统java课程设计
ATM取款机系统——java课程设计
软件开发课程设计报告
设计题目:
ATM取款机系统
专业双学位
姓名
学号
指导教师
时间:
ATM取款机系统
一、概述
自动柜员机(ATM)自发明以来,以其高效和低成本一直受到银行业的青睐,从我国引进第一台柜员机至今已经拥有6万台左右的规模,但与世界平均水平相比,我国的人均拥有量还有差距,与先进国家相比人均拥有数量甚至不到四分之一。
为了增强我国银行的竞争力,国家相继出台了很多相关措施,比如《关于促进银行卡产业发展的若干意见》等,各商业银行也对柜员机的发展制定了详细的规划,甚至出现了由银行单独购买模式发展为银行租赁商业公司ATM的模式。
可以说,随着我国经济的屈起,我国的柜员机也正面临着一个快速发展的春天。
二、设计目的
(1)复习、巩固软件开发的基础知识,进一步加深对软件开发的理解和掌握;
(2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;
(3)培养学生在项目开发中团队合作精神、创新意识及能力。
三、系统总体设计
3.1系统功能模块划分
本系统主要包括登陆模块设计,选择服务模块设计,取款服务模块设计,修改密码模块设计,存款服务模块设计,查询余额模块设计,转账服务模块设计,通信缴费模块设计,咨询服务模块设计,退出操作模块设计等几个功能模块。
其中
(1)登陆模块设计:
与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入密码和卡号才能继续服务。
(2)选择服务模块设计:
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
(3)取款模块设计:
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。
(4)修改密码模块设计:
在修改密码模块中,必须要两次输入你的新密码,且两次要匹配,否则系统会报错,然后再重新回到修改密码的界面。
(5)存款模块设计:
在存款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。
(6)查询余额模块设计:
此功能非常简单,仅仅是实现弹出卡的功能。
(7)转账服务模块设计:
在转账模块中,必须两次输入要转账的账户号,并且两次输入必须相同,否则系统会报错;然后输入转账金额,完成转账。
(8)通信缴费模块设计:
在通信缴费模块中,首先,登陆人要选择指定的冲值金额,其次,要两次输入要缴费的手机号码,且两次输入要相同,否则系统会报错。
(9)咨询服务模块设计:
该功能仅需要实现弹出卡的功能。
(10)退出操作模块设计:
此功能非常简单,仅仅是实现弹出卡的功能。
3.2ATM取款机系统功能结构图
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款服务模块、修改密码模块、存款服务模块、查询余额模块、转账服务模块、通信缴费模块、咨询服务模块、退出操作模块组成。
总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化。
ATM取款机系统功能结构图,如下图1所示:
图1ATM取款机系统功能结构图
该ATM取款机系统各个部分负责的主要业务如下:
(1)登陆页面模块,对取款者进行身份验证。
(2)选择服务模块,包括取款服务,修改密码,存款服务,查询余额,转账服务,通信缴费,咨询服务,退出操作等功能模块。
(3)取款服务模块,实现取款的具体操作。
(4)修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。
(5)存款服务模块,实现存款的具体操作。
(6)查询余额模块,查看当前登陆人员的余额。
(7)转账服务模块,实现当前登陆人员向另一账户进行转账。
(8)通信缴费模块,实现当前登陆人员对手机进行缴费冲值。
(9)咨询服务模块,对当前登陆人员提供电话人工服务。
(10)退卡模块,完成取款,查询等功能后退出银行卡。
3.3各模块详细设计及用户使用说明
初始密码:
123456
3.3.1登陆模块
程序运行后,进入登陆页面一,要求登陆着插卡,并点击确认,进入登陆页面二,要求登陆者输入密码,点击确定,若密码正确,进入选择服务模块,否则系统提示“帐号不一致或帐号与金额输入有误,请确认”,此模块相应的详细源代码见附录部分,部分代码如下:
panelmain=newJPanel(null);
panelmain.setBackground(newColor(119,119,253));
lblpwd=newJLabel("请输入您的银行卡密码:
");
panelmain.add(lblpwd);
lblpwd.setBounds(150,20,150,30);
3.3.2选择服务模块
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
每一个按钮都有监听器,监视器就会知道所发生的事件,对此事件进行处理。
其中的详细源代码请参见附录部分,部分代码如下:
panel3=newJPanel(null);
panel3.setBackground(newColor(119,119,253));
lblwel=newJLabel(username+",欢迎使用罗灿银行ATM系统");
lblwel.setBounds(20,15,350,30);
panel3.add(lblwel);
lblwel1=newJLabel("请选择您需要的交易类型");
lblwel1.setBounds(220,55,350,30);
panel3.add(lblwel1);
btn3=newJButton("取款服务");
btn3.addActionListener(this);
btn3.setBounds(20,90,100,30);
panel3.add(btn3);
btn4=newJButton("修改密码");
btn4.addActionListener(this);
btn4.setBounds(20,150,100,30);
panel3.add(btn4);
btn5=newJButton("存款服务");
btn5.addActionListener(this);
btn5.setBounds(20,210,100,30);
panel3.add(btn5);
btn6=newJButton("查询余额");
btn6.addActionListener(this);
btn6.setBounds(20,270,100,30);
panel3.add(btn6);
btn7=newJButton("转账服务");
btn7.addActionListener(this);
btn7.setBounds(300,90,100,30);
panel3.add(btn7);
btn8=newJButton("通信交费");
btn8.addActionListener(this);
btn8.setBounds(300,150,100,30);
panel3.add(btn8);
btn9=newJButton("咨询服务");
btn9.addActionListener(this);
btn9.setBounds(300,210,100,30);
panel3.add(btn9);
btn10=newJButton("退出操作");
btn10.addActionListener(this);
btn10.setBounds(300,270,100,30);
panel3.add(btn10);
3.3.3取款服务模块
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想取的数额,但是必须是100的倍数。
当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不能为负,否则就会弹出报错的窗口。
其方法的具体实现代码请参见附录部分,部分代码如下:
panel4=newJPanel(null);
panel4.setBackground(newColor(119,119,253));
lblqukuan=newJLabel("请输入您的取款数:
");
panel4.add(lblqukuan);
lblqukuan.setBounds(115,20,150,30);
lblqukuan=newJLabel("提示:
只能是100元或100元的整数倍。
");
panel4.add(lblqukuan);
lblqukuan.setBounds(115,50,300,30);
3.3.4修改密码模块
在修改密码模块中,你必须要两次输入你的新密码,且两次药匹配,否则会报错,然后再重新回到修改密码的界面。
在修改密码时用到的方法的具体实现代码请参见附录部分,部分代码如下:
panelchangepwd=newJPanel(null);
panelchangepwd.setBackground(newColor(119,119,253));
lblpwd1=newJLabel("请输入您需要修改的6位密码:
");
lblpwd1.setBounds(115,30,300,30);
panelchangepwd.add(lblpwd1);
lblpwd2=newJLabel("请再次输入您需要修改的6位密码:
");
lblpwd2.setBounds(115,110,300,30);
panelchangepwd.add(lblpwd2);
3.3.5存款服务模块
在存款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在存款口放入存款,但是必须是100的倍数。
其方法的具体实现代码请参见附录部分,部分代码如下:
panelsave=newJPanel(null);
panelsave.setBackground(newColor(119,119,253));
lblsave=newJLabel("请在存款口处放入存款");
lblsave.setBounds(90,70,350,30);
panelsave.add(lblsave);
lblsave1=newJLabel("请注意:
只接收100元或100元的整数倍存款");
lblsave1.setBounds(90,110,350,30);
panelsave.add(lblsave1);
3.3.6查询余额模块
用户点击查询余额按钮,则会弹出用户账户中的余额,并显示用户的卡号。
其方法的具体实现代码请参见附录部分,部分代码如下:
panelremain=newJPanel(null);
panelremain.setBackground(newColor(119,119,253));
lblremain1=newJLabel("卡号:
"+cardnum);
lblremain1.setBounds(90,70,350,30);
panelremain.add(lblremain1);
lblremain=newJLabel("您的余额为"+lastmoney+"元,请继续您的操作!
”);
lblremain.setBounds(90,110,350,30);
panelremain.add(lblremain);
3.3.7转账服务模块
在该模块中,为防止用户将对方的账号输入错误,要求用户输入两遍对方的账号,并输入转账金额,若输入错误,则系统会提示用户“帐号不一致或帐号与金额输入有误,请确认”。
其方法的具体实现代码请参见附录部分,部分代码如下:
paneltrans=newJPanel(null);
paneltrans.setBackground(newColor(119,119,253));
lbltra=newJLabel("请输入对方的19位帐号:
");
lbltra.setBounds(20,30,160,30);
paneltrans.add(lbltra);
lbltra1=newJLabel("请再次输入对方的19位帐号:
");
lbltra1.setBounds(20,80,190,30);
paneltrans.add(lbltra1);
lbltra2=newJLabel("请输入您的转账金额:
");
lbltra2.setBounds(20,130,160,30);
paneltrans.add(lbltra2);
3.3.8通信缴费模块
在该模块中,用户可以为手机进行冲值,要求用户选则指定的冲值金额,并且输入手机号码,点击确定完成冲值。
其方法的具体实现代码请参见附录部分,部分代码如下:
panelmobile=newJPanel(null);
panelmobile.setBackground(newColor(119,119,253));
lblmo=newJLabel("请输入充值的11位手机号码:
");
panelmobile.add(lblmo);
lblmo.setBounds(20,140,350,30);
lblmo1=newJLabel("提示:
只接受30元、50元、100元、200元、500元的充值");
3.3.9咨询服务模块
选择该服务模块后,系统会显示“系统升级中……”,并提供银行的人工客服电话。
其方法的具体实现代码请参见附录部分,部分代码如下:
panelconsult=newJPanel(null);
panelconsult.setBackground(newColor(119,119,253));
lblcon=newJLabel("系统升级中...咨询请拨打24小时客服电话95566");
lblcon.setBounds(80,70,390,30);
panelconsult.add(lblcon);
3.3.10退出操作模块
用户完成操作后,需要将银行卡退出。
其方法的具体实现代码请参见附录部分,部分代码如下:
if(e.getSource()==btngetcard){
JOptionPane.showMessageDialog(null,"磁卡已退出,请保管好您的银行卡!
","退卡成功!
",JOptionPane.INFORMATION_MESSAGE);
四、系统运行结果及存在问题
4.1运行结果
运行程序进入插卡页面,运行效果图,如图2所示:
图2:
插卡界面
点击按钮插卡、继续后,进入输入密码界面,如图3所示:
图3:
输入密码界面
输入不正确,则会提醒你密码不正确,请重新输入,当输入正确密码后,点击确定进入系统主界面,运行效果图,如图4所示:
图4:
系统主界面
在主界面中包含了8个主要功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
当点击取款服务按钮时弹出取款界面,运行效果图,如图5所示:
图5:
取款服务界面
在选择服务界面,点击修改密码功能按钮,则会弹出修改密码界面,运行效果图,如图6所示:
图6:
修改密码界面
在选择服务界面,点击存款服务功能按钮,则会弹出存款服务界面,运行效果图,如图7所示:
图7:
存款服务界面
取款服务及存款服务完成后均可以打印凭条,运行效果图,如图8所示:
图8:
打印凭条界面
当点击余额查询界面时系统会自动帮助你检索你的当前账户还有多少钱,并且在查询完后会自动弹出友好界面,来显示你的当前余额,余额查询界面,运行效果图,如图9所示:
图9:
余额查询界面
在选择服务界面,点击转账服务功能按钮,则会弹出转账服务界面,运行效果图,如图10所示:
图10:
转账服务界面
在选择服务界面,点击通信缴费功能按钮,则会弹出通信缴费界面,运行效果图,如图11所示:
图11:
通信缴费界面
在选择服务界面,点击咨询服务功能按钮,则会弹出咨询服务界面,运行效果图,如图12所示:
图12:
咨询服务界面
在选择服务界面,点击退出操作功能按钮,则会弹出退出操作界面,运行效果图,如图13所示:
图13:
退出操作界面
用户在完成退出操作后进行取卡操作,点击取卡功能按钮,则会弹出取卡成功界面,运行效果图,如图14所示:
图14:
取卡界面
4.2存在问题
在此次课程设计中,我遇到了一些问题,如:
对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。
对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。
对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。
五、设计体会
通过这次课程设计,使我更加熟悉的掌握了软件开发知识的运用。
帮助我们熟悉了更多软件开发语言的功能,提高了我们的动手能力。
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
输入输出流等技术。
由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。
正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
通过这次课程设计,使我更加熟悉的掌握了软件开发知识的运用。
帮助我们熟悉了更多软件开发语言的功能,提高了我们的动手能力。
六、源程序
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassMyATMextendsJFrameimplementsActionListener{
JPanelpanelfirst,panelmain,panel3,panel4,panel5,panel6,panel7,panelchangepwd,panelchangepwded,panelsave,panelsaved,panelremain,paneltrans,paneltransed,panelmobile,panelmobiled,
panelconsult;
JButtonbtn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btnsure,btnback,btnok,btncard,btngetcard,btnincard;
JButtonbtn00,btn01,btn02,btn03,btn04,btn05,btn06,btn07,btn08,btn09,btn010,btnback1,btnremain,btnremain1,btnremain2;
JButtonbtn000,btn001,btn002,btn003,btn004,btn005,btn006,btn007,btn008,btn009,btn100,btn200,btn300,btn1000,btn500,btnsure1,btnback2,btn0010,btnquok1,btnquok2,btnquok3,btnquok4;
JButtonbtnpwd,btnpwd1,btnpwd2,btnpwd3,btnpwd4,btn11,btn12,btn13,btn14,btn15,btn16,btn17,btn18,btn19,btn20,btnsave,btnsave1,btnsave2,btnsaved,btnsaved1,btnsaved2,btnsaved3;
JButtonbtntra,btntra1,btntra2,btntraed,btntraed1,btn21,btn22,btn23,btn24,btn25,btn26,btn27,btn28,btn29,btn30,btncon,btncon1;
JButtonbtnmo,btnmo1,btnmo2,btnmo30,btnmo50,btnmo100,btnmo200,btnmo500,btnmo10,btnmo11,btnmo12,btnmo13,btnmo14,btnmo15,btnmo16,btnmo17,btnmo18,btnmo19,btnmoed,btnmoed1;
JTextFieldtxt2,txttrans,txttrans1,txttrans2,txtmo,txtmo1;
JLabellbljixu,lblpwd,lblwrong,lblqukuan,lblquok1,lblquok2,lblpwd1,lblpwd2,lblpwd3,lblpwd4,lblsave,lblsave1,lblsaved,lblremain,lblremain1,lbltra,lbltra1,lbltra2,lbltraed,lbltraed1;
JLabellblwel,lblwel1,lblmo,lblmo1,lblmo2,lblmo3,lblmoed,lblmoed1,lblcon,lblcon1;
JPasswordFieldtxt1,txtpwd,txtpwd1;
Containercontainer;
CardLayoutLayout;
intmoney,savemoney,mobilemoney=0;
doublelastmoney,trainsmoney;
Stringuserpwd,cardnum,trains,username;
booleanflag=true,flag1=false,flag2=false,flag3=true,flag4=false,flag5=false;
//构造方法
publicMyATM(){
super("中国银行");
this.setSize(435,350);
this.setLocation(500,250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不可改变窗口大小
this.setResizable(false);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 取款 系统 java 课程设计