ATM取款机系统——java课程设计.doc

上传人:文库蛋蛋多 文档编号:2386712 上传时间:2023-02-17 格式:DOC 页数:58 大小:417.50KB
返回 下载 相关 举报
ATM取款机系统——java课程设计.doc_第1页
第1页 / 共58页
ATM取款机系统——java课程设计.doc_第2页
第2页 / 共58页
ATM取款机系统——java课程设计.doc_第3页
第3页 / 共58页
ATM取款机系统——java课程设计.doc_第4页
第4页 / 共58页
ATM取款机系统——java课程设计.doc_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《ATM取款机系统——java课程设计.doc》由会员分享,可在线阅读,更多相关《ATM取款机系统——java课程设计.doc(58页珍藏版)》请在三一办公上搜索。

1、软件开发课程设计报告 设计题目:ATM取款机系统专 业 双学位 姓 名 学 号 指导教师 时 间:目录一、概述2二、设计目的2三、系统总体设计23.1系统功能模块划分23.2 ATM取款机系统功能结构图33.3各模块详细设计及用户使用说明43.3.1 登陆模块43.3.2 选择服务模块43.3.3 取款服务模块53.3.4 修改密码模块63.3.5 存款服务模块63.3.6 查询余额模块63.3.7 转账服务模块73.3.8 通信缴费模块73.3.9 咨询服务模块83.3.10 退出操作模块8四、系统运行结果及存在问题84.1运行结果84.2存在问题14五、设计体会14六、源程序14ATM取款

2、机系统一、概述自动柜员机(ATM)自发明以来,以其高效和低成本一直受到银行业的青睐,从我国引进第一台柜员机至今已经拥有6万台左右的规模,但与世界平均水平相比,我国的人均拥有量还有差距,与先进国家相比人均拥有数量甚至不到四分之一。为了增强我国银行的竞争力,国家相继出台了很多相关措施,比如关于促进银行卡产业发展的若干意见等,各商业银行也对柜员机的发展制定了详细的规划,甚至出现了由银行单独购买模式发展为银行租赁商业公司ATM的模式。可以说,随着我国经济的屈起,我国的柜员机也正面临着一个快速发展的春天。二、设计目的(1)复习、巩固软件开发的基础知识,进一步加深对软件开发的理解和掌握;(2)课程设计为学

3、生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;(3)培养学生在项目开发中团队合作精神、创新意识及能力。三、系统总体设计3.1系统功能模块划分本系统主要包括登陆模块设计,选择服务模块设计,取款服务模块设计,修改密码模块设计,存款服务模块设计,查询余额模块设计,转账服务模块设计,通信缴费模块设计,咨询服务模块设计,退出操作模块设计等几个功能模块。其中(1)登陆模块设计:与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。(2) 选择服

4、务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。(3) 取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。(4) 修改密码模块设计:在修改密码模块中,必须要两次输入你的新密码,且两次要匹配,否则系统会报错,然后再重新回到修改密码的界面。(5) 存款模块设计:在存款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。(6) 查询余额模块设计:此功能非常简单,仅仅是实现弹出卡的功能。(7) 转账服务模块设计:在转账模块中,必须

5、两次输入要转账的账户号,并且两次输入必须相同,否则系统会报错;然后输入转账金额,完成转账。(8) 通信缴费模块设计:在通信缴费模块中,首先,登陆人要选择指定的冲值金额,其次,要两次输入要缴费的手机号码,且两次输入要相同,否则系统会报错。(9) 咨询服务模块设计:该功能仅需要实现弹出卡的功能。(10) 退出操作模块设计:此功能非常简单,仅仅是实现弹出卡的功能。3.2 ATM取款机系统功能结构图我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款服务模块、修改密码模块、存款服务模块、查询余额模块、转账服务模块、通信缴费模块、咨询服务模块、退出操作模块组成。总体设

6、计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化。ATM取款机系统功能结构图,如下图1所示:登陆页面模块存款服务模块选择服务模块通信缴费模块查询余额模块转账服务模块修改密码模块咨询服务模块取款服务模块退出操作模块图1 ATM取款机系统功能结构图该ATM取款机系统各个部分负责的主要业务如下:(1) 登陆页面模块,对取款者进行身份验证。(2) 选择服务模块 ,包括取款服务,修改密码,存款服务,查询余额,转账服务,通信缴费,咨询服务,退出操作等功能模块。(3) 取款服务模块,实现取款的具体操作。(4) 修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。(5) 存款服务

7、模块,实现存款的具体操作。(6) 查询余额模块,查看当前登陆人员的余额。(7) 转账服务模块,实现当前登陆人员向另一账户进行转账。(8) 通信缴费模块,实现当前登陆人员对手机进行缴费冲值。(9) 咨询服务模块,对当前登陆人员提供电话人工服务。(10) 退卡模块,完成取款,查询等功能后退出银行卡。3.3各模块详细设计及用户使用说明 初始密码:1234563.3.1登陆模块程序运行后,进入登陆页面一,要求登陆着插卡,并点击确认,进入登陆页面二,要求登陆者输入密码,点击确定,若密码正确,进入选择服务模块,否则系统提示“帐号不一致或帐号与金额输入有误,请确认”,此模块相应的详细源代码见附录部分,部分代

8、码如下: panelmain=new JPanel(null);panelmain.setBackground(new Color(119,119,253);lblpwd=new JLabel(请输入您的银行卡密码:);panelmain.add(lblpwd);lblpwd.setBounds(150, 20, 150, 30);3.3.2选择服务模块在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,监视器就会知道所发生的事件,对此事件进行处理。其中的详细源代码请参见附录部分,部分代码如下: panel3=new JPane

9、l(null);panel3.setBackground(new Color(119,119,253);lblwel=new JLabel(username+,欢迎使用罗灿银行ATM系统);lblwel.setBounds(20,15,350,30);panel3.add(lblwel);lblwel1=new JLabel(请选择您需要的交易类型);lblwel1.setBounds(220,55,350,30);panel3.add(lblwel1);btn3=new JButton(取款服务);btn3.addActionListener(this);btn3.setBounds(20,

10、90,100,30);panel3.add(btn3);btn4=new JButton(修改密码);btn4.addActionListener(this);btn4.setBounds(20,150,100,30);panel3.add(btn4);btn5=new JButton(存款服务);btn5.addActionListener(this);btn5.setBounds(20,210,100,30);panel3.add(btn5);btn6=new JButton(查询余额);btn6.addActionListener(this);btn6.setBounds(20,270,

11、100,30);panel3.add(btn6);btn7=new JButton(转账服务);btn7.addActionListener(this);btn7.setBounds(300,90,100,30);panel3.add(btn7);btn8=new JButton(通信交费);btn8.addActionListener(this);btn8.setBounds(300,150,100,30);panel3.add(btn8);btn9=new JButton(咨询服务);btn9.addActionListener(this);btn9.setBounds(300,210,1

12、00,30);panel3.add(btn9);btn10=new JButton(退出操作);btn10.addActionListener(this);btn10.setBounds(300,270,100,30);panel3.add(btn10);3.3.3取款服务模块在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不能为负,否则就会弹出报错的窗口。其方法的具体实现代码请参见附录部分,部分代码如下: panel4=new JPanel(nul

13、l);panel4.setBackground(new Color(119,119,253);lblqukuan=new JLabel(请输入您的取款数:);panel4.add(lblqukuan);lblqukuan.setBounds(115, 20, 150, 30); lblqukuan=new JLabel(提示:只能是100元或100元的整数倍。);panel4.add(lblqukuan);lblqukuan.setBounds(115, 50, 300, 30);3.3.4修改密码模块在修改密码模块中,你必须要两次输入你的新密码,且两次药匹配,否则会报错,然后再重新回到修改密

14、码的界面。在修改密码时用到的方法的具体实现代码请参见附录部分,部分代码如下: panelchangepwd=new JPanel(null);panelchangepwd.setBackground(new Color(119,119,253);lblpwd1=new JLabel(请输入您需要修改的6位密码:);lblpwd1.setBounds(115, 30, 300, 30);panelchangepwd.add(lblpwd1);lblpwd2=new JLabel(请再次输入您需要修改的6位密码:);lblpwd2.setBounds(115, 110, 300, 30);pane

15、lchangepwd.add(lblpwd2);3.3.5存款服务模块在存款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在存款口放入存款,但是必须是100的倍数。其方法的具体实现代码请参见附录部分,部分代码如下: panelsave=new JPanel(null);panelsave.setBackground(new Color(119,119,253);lblsave=new JLabel(请在存款口处放入存款);lblsave.setBounds(90,70,350,30);panelsave.add(lblsave);lblsave1=new J

16、Label(请注意:只接收100元或100元的整数倍存款);lblsave1.setBounds(90,110,350,30);panelsave.add(lblsave1);3.3.6查询余额模块用户点击查询余额按钮,则会弹出用户账户中的余额,并显示用户的卡号。其方法的具体实现代码请参见附录部分,部分代码如下: panelremain=new JPanel(null);panelremain.setBackground(new Color(119,119,253);lblremain1=new JLabel(卡号:+cardnum);lblremain1.setBounds(90,70,35

17、0,30);panelremain.add(lblremain1);lblremain=new JLabel(您的余额为+lastmoney+元,请继续您的操作!”);lblremain.setBounds(90,110,350,30);panelremain.add(lblremain);3.3.7转账服务模块在该模块中,为防止用户将对方的账号输入错误,要求用户输入两遍对方的账号,并输入转账金额,若输入错误,则系统会提示用户“帐号不一致或帐号与金额输入有误,请确认”。其方法的具体实现代码请参见附录部分,部分代码如下: paneltrans=new JPanel(null);paneltran

18、s.setBackground(new Color(119,119,253);lbltra=new JLabel(请输入对方的19位帐号:);lbltra.setBounds(20, 30, 160, 30);paneltrans.add(lbltra);lbltra1=new JLabel(请再次输入对方的19位帐号:);lbltra1.setBounds(20, 80, 190, 30);paneltrans.add(lbltra1);lbltra2=new JLabel(请输入您的转账金额:);lbltra2.setBounds(20, 130, 160, 30);paneltrans.

19、add(lbltra2);3.3.8通信缴费模块在该模块中,用户可以为手机进行冲值,要求用户选则指定的冲值金额,并且输入手机号码,点击确定完成冲值。其方法的具体实现代码请参见附录部分,部分代码如下: panelmobile=new JPanel(null);panelmobile.setBackground(new Color(119,119,253);lblmo=new JLabel(请输入充值的11位手机号码:);panelmobile.add(lblmo);lblmo.setBounds(20, 140, 350, 30);lblmo1=new JLabel(提示:只接受30元、50元、

20、100元、200元、500元的充值 );3.3.9咨询服务模块选择该服务模块后,系统会显示“系统升级中”,并提供银行的人工客服电话。其方法的具体实现代码请参见附录部分,部分代码如下: panelconsult=new JPanel(null);panelconsult.setBackground(new Color(119,119,253);lblcon=new JLabel(系统升级中.咨询请拨打24小时客服电话95566);lblcon.setBounds(80,70,390,30);panelconsult.add(lblcon);3.3.10退出操作模块用户完成操作后,需要将银行卡退出

21、。其方法的具体实现代码请参见附录部分,部分代码如下: if(e.getSource()=btngetcard)JOptionPane.showMessageDialog(null, 磁卡已退出,请保管好您的银行卡!, 退卡成功!, JOptionPane.INFORMATION_MESSAGE);四、系统运行结果及存在问题4.1运行结果运行程序进入插卡页面,运行效果图,如图2所示:图2:插卡界面点击按钮插卡、继续后,进入输入密码界面,如图3所示:图3:输入密码界面输入不正确,则会提醒你密码不正确,请重新输入,当输入正确密码后,点击确定进入系统主界面,运行效果图,如图4所示:图4:系统主界面在主

22、界面中包含了8个主要功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。当点击取款服务按钮时弹出取款界面,运行效果图,如图5所示:图5:取款服务界面在选择服务界面,点击修改密码功能按钮,则会弹出修改密码界面,运行效果图,如图6所示:图6:修改密码界面在选择服务界面,点击存款服务功能按钮,则会弹出存款服务界面,运行效果图,如图7所示:图7:存款服务界面取款服务及存款服务完成后均可以打印凭条,运行效果图,如图8所示:图8:打印凭条界面当点击余额查询界面时系统会自动帮助你检索你的当前账户还有多少钱,并且在查询完后会自动弹出友好界面,来显示你的当前余额,余额查询界面,运行效果图,如图9所示:图

23、9:余额查询界面在选择服务界面,点击转账服务功能按钮,则会弹出转账服务界面,运行效果图,如图10所示:图10:转账服务界面在选择服务界面,点击通信缴费功能按钮,则会弹出通信缴费界面,运行效果图,如图11所示:图11:通信缴费界面在选择服务界面,点击咨询服务功能按钮,则会弹出咨询服务界面,运行效果图,如图12所示:图12:咨询服务界面在选择服务界面,点击退出操作功能按钮,则会弹出退出操作界面,运行效果图,如图13所示:图13:退出操作界面用户在完成退出操作后进行取卡操作,点击取卡功能按钮,则会弹出取卡成功界面,运行效果图,如图14所示:图14:取卡界面42存在问题在此次课程设计中,我遇到了一些问

24、题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的

25、练习与操作,才能有大的进步。五、设计体会通过这次课程设计,使我更加熟悉的掌握了软件开发知识的运用。帮助我们熟悉了更多软件开发语言的功能,提高了我们的动手能力。在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外还用了Swing控件。输入输出流等技术。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。通过这次课程设计,使我更

26、加熟悉的掌握了软件开发知识的运用。帮助我们熟悉了更多软件开发语言的功能,提高了我们的动手能力。六、源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyATM extends JFrame implements ActionListenerJPanel panelfirst,panelmain,panel3,panel4,panel5,panel6,panel7,panelchangepwd,panelchangepwded,panelsave,panelsaved,panelremai

27、n,paneltrans,paneltransed,panelmobile,panelmobiled,panelconsult;JButton btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btnsure,btnback,btnok,btncard,btngetcard,btnincard;JButton btn00,btn01,btn02,btn03,btn04,btn05,btn06,btn07,btn08,btn09,btn010,btnback1,btnremain,btnremain1,btnremain2;JButt

28、on btn000,btn001,btn002,btn003,btn004,btn005,btn006,btn007,btn008,btn009,btn100,btn200,btn300,btn1000,btn500,btnsure1,btnback2,btn0010,btnquok1,btnquok2,btnquok3,btnquok4;JButton btnpwd,btnpwd1,btnpwd2,btnpwd3,btnpwd4,btn11,btn12,btn13,btn14,btn15,btn16,btn17,btn18,btn19,btn20,btnsave,btnsave1,btnsa

29、ve2,btnsaved,btnsaved1,btnsaved2,btnsaved3;JButton btntra,btntra1,btntra2,btntraed,btntraed1,btn21,btn22,btn23,btn24,btn25,btn26,btn27,btn28,btn29,btn30,btncon,btncon1;JButton btnmo,btnmo1,btnmo2,btnmo30,btnmo50,btnmo100,btnmo200,btnmo500,btnmo10,btnmo11,btnmo12,btnmo13,btnmo14,btnmo15,btnmo16,btnmo

30、17,btnmo18,btnmo19,btnmoed,btnmoed1;JTextField txt2,txttrans,txttrans1,txttrans2,txtmo,txtmo1;JLabel lbljixu,lblpwd,lblwrong,lblqukuan,lblquok1,lblquok2,lblpwd1,lblpwd2,lblpwd3,lblpwd4,lblsave,lblsave1,lblsaved,lblremain,lblremain1,lbltra,lbltra1,lbltra2,lbltraed,lbltraed1;JLabel lblwel,lblwel1,lblm

31、o,lblmo1,lblmo2,lblmo3,lblmoed,lblmoed1,lblcon,lblcon1;JPasswordField txt1,txtpwd,txtpwd1;Container container;CardLayout Layout;int money,savemoney,mobilemoney=0;double lastmoney,trainsmoney;String userpwd,cardnum,trains,username;boolean flag=true,flag1=false,flag2=false,flag3=true,flag4=false,flag5

32、=false;/构造方法public MyATM()super(中国银行);this.setSize(435,350);this.setLocation(500, 250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); /设置不可改变窗口大小this.setResizable(false); /设置程序小图标this.setIconImage(this.getToolkit().getImage(imageshaizei.jpg);/布局public void setLayout()/用卡片布局Layout=new CardLayo

33、ut();container=getContentPane();container.setLayout(Layout);/添加第一张卡片panelfirst=new JPanel(null);/设置卡片的背景颜色panelfirst.setBackground(new Color(119,119,253);lbljixu=new JLabel(请放入磁卡,然后继续操作);/设置卡片在Panel中的位置lbljixu.setBounds(140,90,350,30);/为第一张卡片添加一个Labelpanelfirst.add(lbljixu);/为第一张卡片添加一个按钮btncard=new

34、JButton(继续);btncard.setBounds(310,180,80,30);/为按钮注册事件监听器btncard.addActionListener(this);/开始时设置按钮不可按btncard.setEnabled(false);panelfirst.add(btncard);/为第一张卡片添加一个按钮btngetcard=new JButton(取卡);btngetcard.setEnabled(false);btngetcard.setBounds(310,220,80,30);btngetcard.addActionListener(this);panelfirst.

35、add(btngetcard);/为第一张卡片添加一个按钮btnincard=new JButton(插卡);btnincard.setBounds(40,220,80,30);btnincard.addActionListener(this);panelfirst.add(btnincard);container.add(panelfirst,first);/添加登录输入密码卡片panelmain=new JPanel(null);panelmain.setBackground(new Color(119,119,253);lblpwd=new JLabel(请输入您的银行卡密码:);pan

36、elmain.add(lblpwd);lblpwd.setBounds(150, 20, 150, 30);/设置文本框为密码型txt1=new JPasswordField(12);/文本框不可选中txt1.enable(false);panelmain.add(txt1);/文本框的输入内容用*显示txt1.setEchoChar(*);txt1.setBounds(115,50,200,30);/添加选择按钮btnsure=new JButton(确定);btnsure.addActionListener(this);panelmain.add(btnsure);btnsure.setB

37、ounds(70,160,80,30);/添加重输按钮btn010=new JButton(重输);btn010.addActionListener(this);panelmain.add(btn010);btn010.setBounds(175,160,80,30);btnback=new JButton(退出);btnback.addActionListener(this);panelmain.add(btnback);btnback.setBounds(280,160,80,30);lblwrong=new JLabel(请注意保护好您的密码!);panelmain.add(lblwro

38、ng);lblwrong.setBounds(150,90,200,30);/添加输入按钮btn01=new JButton(1);btn01.addActionListener(this);panelmain.add(btn01);btn01.setBounds(45,210,60,30);btn02=new JButton(2);btn02.addActionListener(this);panelmain.add(btn02);btn02.setBounds(115,210,60,30);btn03=new JButton(3);btn03.addActionListener(this)

39、;panelmain.add(btn03);btn03.setBounds(185,210,60,30);btn04=new JButton(4);btn04.addActionListener(this);panelmain.add(btn04);btn04.setBounds(255,210,60,30);btn05=new JButton(5);btn05.addActionListener(this);panelmain.add(btn05);btn05.setBounds(325,210,60,30);btn06=new JButton(6);btn06.addActionListe

40、ner(this);panelmain.add(btn06);btn06.setBounds(45,260,60,30);btn07=new JButton(7);btn07.addActionListener(this);panelmain.add(btn07);btn07.setBounds(115,260,60,30);container.add(panelmain,main);btn08=new JButton(8);btn08.addActionListener(this);panelmain.add(btn08);btn08.setBounds(185,260,60,30);btn

41、09=new JButton(9);btn09.addActionListener(this);panelmain.add(btn09);btn09.setBounds(255,260,60,30);btn00=new JButton(0);btn00.addActionListener(this);panelmain.add(btn00);btn00.setBounds(325,260,60,30);/添加主界面卡片panel3=new JPanel(null);panel3.setBackground(new Color(119,119,253);lblwel=new JLabel(use

42、rname+,欢迎使用中国银行ATM系统);lblwel.setBounds(20,15,350,30);panel3.add(lblwel);lblwel1=new JLabel(请选择您需要的交易类型);lblwel1.setBounds(220,55,350,30);panel3.add(lblwel1);btn3=new JButton(取款服务);btn3.addActionListener(this);btn3.setBounds(20,90,100,30);panel3.add(btn3);btn4=new JButton(修改密码);btn4.addActionListener

43、(this);btn4.setBounds(20,150,100,30);panel3.add(btn4);btn5=new JButton(存款服务);btn5.addActionListener(this);btn5.setBounds(20,210,100,30);panel3.add(btn5);btn6=new JButton(查询余额);btn6.addActionListener(this);btn6.setBounds(20,270,100,30);panel3.add(btn6);btn7=new JButton(转账服务);btn7.addActionListener(this);btn7.setBounds(300,90,100,30);panel3.add(btn7);btn8=new JButton(通信交费);btn8.addActionListener(this);btn8.setBounds(300,150,100,30);panel3.add(btn8);btn9=new JButton(咨询服务);btn9.addActionListener(this);btn

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号