JAVA课程设计报告ATM取款机系统.doc

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

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

1、ATM取款机系统1 课程设计的目的此次课程设计让我对JAVA有了更深刻的认识,这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解,对以后在面向对象的编程中奠定基础。2 系统总体设计2.1 数据库设计在ATM取款机系统中,数据库的设计也很重要,数据库的好坏会影响到整个系统的运行效率,在此次设计中,atm数据库包括有以下1个表,客户信息表(guest)。表1客户信息表(guest)列名数据类型及长度是否为空主键说明id数字NO主键记录号gid文本NO银行卡号pwd文本NO密码gmo

2、ney货币NO钱数目2.2系统功能模块划分本系统主要包括登陆模块设计,选择服务模块设计,取款模块设计,修改密码模块设计,退卡模块设计等几个功能模块。其中,(1)登陆模块设计:与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。(2) 选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。(3) 取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。(4) 修改密码模块设计:在修改密码模块中,首先你必须要输入你的

3、旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。(5) 退卡模块设计:此功能非常简单,仅仅是实现弹出卡的功能。2.3 ATM取款机系统功能结构图总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化。ATM取款机系统功能结构图,如图1所示:登陆页面模块取款模块选择服务模块退卡模块查询余额模块修改密码模块图1 ATM取款机系统功能结构图该ATM取款机系统各个部分负责的主要业务如下:(1) 登陆页面模块,对取款者进行身份验证。(2) 选择服务模块 ,包括取款,余额查询,转帐,修改密码,退出等功能模块。(3)

4、 取款模块,实现取款的具体操作。(4) 查询余额模块,查看当前登陆人员的余额。(5) 修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。(6) 退卡模块,完成取款,查询等功能后退出银行卡。3详细设计在这次系统设计过程中,我把详细设计介绍如下:配置好环境,编译程序,当程序运行后,首先看到的页面银行管理系统页面,它的运行效果图,如图2所示: 图2银行管理系统首界面登陆页面模块设计:定义了文本框类的对象tf1,tf2。主要是用于输入单行的文本;文本区调用public String getText()方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或

5、卡号错误的警告框,并用dispose()关掉窗口。此模块相应的详细源代码见附录部分,部分代码如下: box1= Box.createVerticalBox;box1.add(new Label(请输入你的卡号); /输入卡号box1.add(Box.createVerticalStrut(8);box1.add(new Label(请输入你的密码);/输入密码 选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递

6、给方法public void actionPerformed(ActionEvent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。其中的详细源代码请参见附录部分,部分代码如下: this.setLayout(null);this.setLayout(new GridLayout(6,1);p.add(new Label(请选择你要的服务);this.add(p); 取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。当然了取款的时候也不能超过卡

7、里的余额,再就是卡里的余额不能为负,否则就会弹出报错的窗口。其方法的具体实现代码请参见附录部分,部分代码如下: if(money%100!=0)|(money=5000)/取钱数为100的倍数或不大于5000dispose();ErrorWarn6 ew6 = new ErrorWarn6(消息!,act);act.set_Balance(money);/重置余额this.setVisible(false); 修改密码模块设计:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。在修改密码

8、时用到的方法的具体实现代码请参见附录部分,部分代码如下: tf4 = new TextField(6); tf5 = new TextField(6); tf6 = new TextField(6);退卡模块设计:在退卡模块设计中,这个方法就更加的简单了,它只是用了if(e.getSource()=button4)/退出System.exit(0);dispose();这个方法就可以实现了,这里就不再多说了。4 系统运行效果及存在问题4.1系统运行效果进入系统按钮进入输入卡号页面,运行效果图,如图3所示:图3 输入卡号界面 输入卡号后,点击确定时系统会判断是否存在此卡号,如果不存在此卡号,系统

9、则会自动提醒用户此卡号不存在,请重新输入,如果输入的是正确的卡后,则进入输入密码界面,其运行效果图,如图4所示: 图4 输入密码界面 输入不正确,则会提醒你密码不正确,请重新输入,当输入正确密码后,点击确定进入系统主界面,运行效果图,如图5所示:图5 系统主界面界面在主界面中包含了6个主要功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。当点击取款按钮时弹出取款界面,运行效果图,如图6所示: 图6 取款界面当点击余额查询界面时系统会自动帮助你检索你的当前账户还有多少钱,并且在查 询完后会自动弹出友好界面,来显示你的当前余额,余额查询界面,运行效果图,如图7所示: 图7 帐户余额查看界

10、面 在取款界面中,选择要取的金额,取出金额,并且会弹出取款成功界面,运行效果图,如图8所示: 图8 取款成功界面在选择服务界面,点击转账功能按钮之后,则会弹出转账界面,运行效果图,如图9所示: 图9 转帐操作界面在选择服务界面,点击修改密码功能按钮,则会弹出修改密码界面,运行效果图,如图10所示: 图10 修改密码界面经过测试,所有的功能基本上都实现了,而且运行正常。4.2 系统存在问题在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用J

11、ava语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。 对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。5 设计体会在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外

12、还用了Swing控件。输入输出流等技术。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。6 参考文献1 张孝祥,JAVA就业培训教材M.北京:清华出版社 20062 印昊, JAVA与面向对象程序设计M.北京: 高等教育

13、出版社 20043 李尊朝, JAVA语言程序设计M.北京: 中国铁道出版社 20044 孙健.计算机周刊-CNKIJ.上海市:长江计算机(集团)公司主办,2000,10:102-165附录在附录中我们将附加一些程序设计过程中的代码: (1)登陆页面首窗口设计代码:class WindowBox extends Frame implements ActionListenerBox baseBox,box1,box2;TextField tf1,tf2;Button button1;Button button2;WindowBox(String s) /构造方法super(s); tf1 = n

14、ew TextField(6); tf2 = new TextField(6);box1= Box.createVerticalBox;box1.add(new Label(请输入你的卡号); /输入卡号box1.add(Box.createVerticalStrut(8);box1.add(new Label(请输入你的密码);/输入密码box2=Box.createVerticalBox();box2.add(tf1);/box2.add(new TextField(16);box2.add(Box.createVerticalStrut(8);box2.add(tf2);/box2.ad

15、d(new TextField(16);baseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add(Box.createHorizontalStrut(10);baseBox.add(box2);add(baseBox);button1= new Button(确定);/加入按钮button1.addActionListener(this);add(button1);button2 = new Button(退卡);/退卡按钮button2.addActionListener(this);add(button2);setLay

16、out(new FlowLayout(); (2)监听器设计代码:this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(120,125,200,175);setVisible(true);public void actionPerformed(ActionEvent e)Account act;String card; String pwd;act=new Account(000000,Devil,123456,50000);/初始

17、化 (3)选择各种服务设计代码:if(e.getSource() = button1)String number1,number2;/输入的两个卡号和密码的变量 number1=tf1.getText();number2=tf2.getText();/*判断两次输入的卡号和密码是否正确*/if(act.get_Code().equals(number1)&(act.get_Password().equals(number2)dispose();Selection s = new Selection(选择服务,act);elsedispose();ErrorWarn ew = new Error

18、Warn(消息!,act);/报输入密码或卡号不正确if(e.getSource()=button2)System.exit(0);dispose();/退出 (4)主函数设计代码:class ATMpublic static void main(String args)new WindowBox(登录页面); (5)选择服务设计代码:import java.awt.*;import java.awt.event.*;class Selection extends Frame implements ActionListenerButton button1,button2,button3,but

19、ton4,button5;Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;public Selection()Selection(String s,Account act)super(s);this.act=act;this.setLayout(null);this.setLayout(new GridLayout(6,1);p.add(new L

20、abel(请选择你要的服务);this.add(p); (6)各种服务功能设计代码:button1 = new Button(存款);p1.add(button1);this.add(p1);button2 = new Button(取款);p2.add(button2);this.add(p2);button3 = new Button(查询余额);p3.add(button3);this.add(p3);button4 = new Button(退出);p4.add(button4);this.add(p4);button5 = new Button(修改密码);p5.add(button

21、5);this.add(p5);this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(150,150,200,200);setVisible(true);validate();pu

22、blic void actionPerformed(ActionEvent e)if(e.getSource()=button2)/取款dispose();GetBalance gb = new GetBalance(取款,act);if(e.getSource()=button3)/查询余额Query q =new Query(查询余额,act);dispose();else if(e.getSource()=button4)/退出System.exit(0);dispose();else if(e.getSource()=button5)/修改密码ChangePassword cp = n

23、ew ChangePassword(修改密码,act);dispose(); (7)取款功能设计代码:import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;class GetBalance extends Frame implements ActionListenerBox baseBox, box1,box2;Button button;TextField tf;Account act;GetBalance(String s,Account act)/构造函数sup

24、er(s);this.act=act;button=new Button(确定);Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2,1);panel1.add(new Label(请输入你想取钱的数目);panel1.add(tf);panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListe

25、ner(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););setBounds(200,200,150,150);this.setVisible(true);public void actionPerformed(ActionEvent e)/System.out.println(e.getActionCommand();double money;money = Double.parseDouble(tf.getText().trim();if(e.getSource()=button)if(a

26、ct.get_Money()0)/判断余额是否为负dispose();ErrorWarn4 ew4 = new ErrorWarn4(消息!,act);else if(money=5000)/取钱数为100的倍数或不大于5000dispose();ErrorWarn6 ew6 = new ErrorWarn6(消息!,act);act.set_Balance(money);/重置余额this.setVisible(false); Selection s = new Selection(选择服务,act);/返回选择服务窗口 /dispose();else if(moneyact.get_Mon

27、ey()判断取款数额是否大于余额dispose();ErrorWarn5 ew5 = new ErrorWarn5(消息!,act);public static void main(String args)GetBalance test = new GetBalance(dfdf);GetBalance gb = new GetBalance(取款); (8)修改密码设计代码:import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;class ChangePasswor

28、d extends Frame implements ActionListenerPanel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = new Panel();Panel panel = new Panel();TextField tf4,tf5,tf6;Button button;Account act;ChangePassword(String s,Account act)super(s);this.act=act;tf4 = new TextField(6);tf5 = new TextField(6);

29、tf6 = new TextField(6);button = new Button(确定);button.addActionListener(this);(9)建立新密码设计代码:panel1.add(new Label(请输入你的旧密码:);panel1.add(tf4);panel2.add(new Label(请输入你的新密码:);panel2.add(tf5);panel3.add(new Label(请再次输入你的新密码);panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(pan

30、el3);this.add(panel);setLayout(new GridLayout(4,1);setBounds(200,200,250,250);this.setVisible(true); (10)窗口事件设计代码:this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0);); (12)查询余额功能设计代码:import javax.swing.*;import java.awt.*;import javax.swing.border.*;impo

31、rt java.awt.event.*;class Query extends Frame implements ActionListenerButton button;Account act;Query(String s,Account act)/构造函数super(s);this.act = act;button=new Button(确定);/TextField tf = new TextField(6);Panel panel1 = new Panel();Panel panel = new Panel();panel1.add(new Label(你的余额为: + act.get_Money();/查询余额的方法/panel1.add(tf);button.addActionListener(this);panel.add(button);this.add(panel);this.add(panel1);

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号