资源描述:
《java课程设计报告-atm取款机系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
课程设计说明书NO.20ATM取款机系统1课程设计的目的此次课程设计让我对JAVA有了更深刻的认识,这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解,对以后在面向对象的编程中奠定基础。2系统总体设计2.1数据库设计在ATM取款机系统中,数据库的设计也很重要,数据库的好坏会影响到整个系统的运行效率,在此次设计中,atm数据库包括有以下1个表,客户信息表(guest)。表1客户信息表(guest)列名数据类型及长度是否为空主键说明id数字NO主键记录号gid文本NO银行卡号pwd文本NO密码gmoney货币NO钱数目2.2系统功能模块划分本系统主要包括登陆模块设计,选择服务模块设计,取款模块设计,修改密码模块设计,退卡模块设计等几个功能模块。其中,(1)登陆模块设计:与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。(2)选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。沈阳大学 课程设计说明书NO.20(3)取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的,实现用户取款的服务。(4)修改密码模块设计:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。(5)退卡模块设计:此功能非常简单,仅仅是实现弹出卡的功能。2.3ATM取款机系统功能结构图总体设计中最核心的问题是系统总体功能结构的确定和子系统与模块的划分,结构化。ATM取款机系统功能结构图,如图1所示:登陆页面模块取款模块选择服务模块退卡模块查询余额模块修改密码模块图1ATM取款机系统功能结构图该ATM取款机系统各个部分负责的主要业务如下:(1)登陆页面模块,对取款者进行身份验证。(2)选择服务模块,包括取款,余额查询,转帐,修改密码,退出等功能模块。(3)取款模块,实现取款的具体操作。(4)查询余额模块,查看当前登陆人员的余额。(5)修改密码模块,可以方便的实现当前登陆人员对自己的密码进行修改。(6)退卡模块,完成取款,查询等功能后退出银行卡。沈阳大学 课程设计说明书NO.203详细设计在这次系统设计过程中,我把详细设计介绍如下:配置好环境,编译程序,当程序运行后,首先看到的页面银行管理系统页面,它的运行效果图,如图2所示:图2银行管理系统首界面登陆页面模块设计:定义了文本框类的对象tf1,tf2。主要是用于输入单行的文本;文本区调用publicStringgetText()方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。此模块相应的详细源代码见附录部分,部分代码如下:box1=Box.createVerticalBox;box1.add(newLabel("请输入你的卡号"));//输入卡号box1.add(Box.createVerticalStrut(8));box1.add(newLabel("请输入你的密码"));//输入密码选择服务模块设计:在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPerformed(ActionEvente)沈阳大学 课程设计说明书NO.20中的参数e,监视器就会知道所发生的事件,对此事件进行处理。其中的详细源代码请参见附录部分,部分代码如下:this.setLayout(null);this.setLayout(newGridLayout(6,1));p.add(newLabel("请选择你要的服务"));this.add(p);取款模块设计:在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不能为负,否则就会弹出报错的窗口。其方法的具体实现代码请参见附录部分,部分代码如下:if((money%100!=0)||(money>=5000)){//取钱数为100的倍数或不大于5000dispose();ErrorWarn6ew6=newErrorWarn6("消息!",act);}act.set_Balance(money);//重置余额this.setVisible(false);修改密码模块设计:在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。在修改密码时用到的方法的具体实现代码请参见附录部分,部分代码如下:tf4=newTextField(6);tf5=newTextField(6);tf6=newTextField(6);退卡模块设计:在退卡模块设计中,这个方法就更加的简单了,它只是用了if(e.getSource()==button4){//退出System.exit(0);dispose();沈阳大学 课程设计说明书NO.20}这个方法就可以实现了,这里就不再多说了。4系统运行效果及存在问题4.1系统运行效果进入系统按钮进入输入卡号页面,运行效果图,如图3所示:图3输入卡号界面输入卡号后,点击确定时系统会判断是否存在此卡号,如果不存在此卡号,系统则会自动提醒用户此卡号不存在,请重新输入,如果输入的是正确的卡后,则进入输入密码界面,其运行效果图,如图4所示:图4输入密码界面沈阳大学 课程设计说明书NO.20输入不正确,则会提醒你密码不正确,请重新输入,当输入正确密码后,点击确定进入系统主界面,运行效果图,如图5所示:图5系统主界面界面在主界面中包含了6个主要功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。当点击取款按钮时弹出取款界面,运行效果图,如图6所示:图6取款界面沈阳大学 课程设计说明书NO.20当点击余额查询界面时系统会自动帮助你检索你的当前账户还有多少钱,并且在查询完后会自动弹出友好界面,来显示你的当前余额,余额查询界面,运行效果图,如图7所示:图7帐户余额查看界面在取款界面中,选择要取的金额,取出金额,并且会弹出取款成功界面,运行效果图,如图8所示:图8取款成功界面沈阳大学 课程设计说明书NO.20在选择服务界面,点击转账功能按钮之后,则会弹出转账界面,运行效果图,如图9所示:图9转帐操作界面在选择服务界面,点击修改密码功能按钮,则会弹出修改密码界面,运行效果图,如图10所示:图10修改密码界面经过测试,所有的功能基本上都实现了,而且运行正常。4.2系统存在问题沈阳大学 课程设计说明书NO.20在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。5设计体会在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外还用了Swing控件。输入输出流等技术。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。6参考文献[1]张孝祥,JAVA就业培训教材[M].北京:清华出版社2006[2]印昊,JAVA与面向对象程序设计[M].北京:高等教育出版社2004[3]李尊朝,JAVA语言程序设计[M].北京:中国铁道出版社2004[4]孙健.计算机周刊-CNKI[J].上海市:长江计算机(集团)公司主办,2000,10:102-165沈阳大学 课程设计说明书NO.20附录在附录中我们将附加一些程序设计过程中的代码:(1)登陆页面首窗口设计代码:classWindowBoxextendsFrameimplementsActionListener{BoxbaseBox,box1,box2;TextFieldtf1,tf2;Buttonbutton1;Buttonbutton2;WindowBox(Strings){//构造方法super(s);tf1=newTextField(6);tf2=newTextField(6);box1=Box.createVerticalBox;box1.add(newLabel("请输入你的卡号"));//输入卡号box1.add(Box.createVerticalStrut(8));box1.add(newLabel("请输入你的密码"));//输入密码box2=Box.createVerticalBox();box2.add(tf1);//box2.add(newTextField(16));box2.add(Box.createVerticalStrut(8));box2.add(tf2);//box2.add(newTextField(16));baseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add(Box.createHorizontalStrut(10));baseBox.add(box2);add(baseBox);沈阳大学 课程设计说明书NO.20button1=newButton("确定");//加入按钮button1.addActionListener(this);add(button1);button2=newButton("退卡");//退卡按钮button2.addActionListener(this);add(button2);setLayout(newFlowLayout());(2)监听器设计代码:this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(120,125,200,175);setVisible(true);}publicvoidactionPerformed(ActionEvente){Accountact;Stringcard;Stringpwd;act=newAccount("000000","Devil","123456",50000);//初始化(3)选择各种服务设计代码:if(e.getSource()==button1){Stringnumber1,number2;//输入的两个卡号和密码的变量number1=tf1.getText();number2=tf2.getText();/*判断两次输入的卡号和密码是否正确*/沈阳大学 课程设计说明书NO.20if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){dispose();Selections=newSelection("选择服务",act);}else{dispose();ErrorWarnew=newErrorWarn("消息!",act);//报输入密码或卡号不正确}}if(e.getSource()==button2){System.exit(0);dispose();//退出}}}(4)主函数设计代码:classATM{publicstaticvoidmain(String[]args){newWindowBox("登录页面");}}(5)选择服务设计代码:importjava.awt.*;importjava.awt.event.*;classSelectionextendsFrameimplementsActionListener{Buttonbutton1,button2,button3,button4,button5;Panelp1=newPanel();Panelp2=newPanel();沈阳大学 课程设计说明书NO.20Panelp3=newPanel();Panelp4=newPanel();Panelp5=newPanel();Panelp=newPanel();Accountact;publicSelection(){}Selection(Strings,Accountact){super(s);this.act=act;this.setLayout(null);this.setLayout(newGridLayout(6,1));p.add(newLabel("请选择你要的服务"));this.add(p);(6)各种服务功能设计代码:button1=newButton("存款");p1.add(button1);this.add(p1);button2=newButton("取款");p2.add(button2);this.add(p2);button3=newButton("查询余额");p3.add(button3);this.add(p3);button4=newButton("退出");p4.add(button4);this.add(p4);button5=newButton("修改密码");沈阳大学 课程设计说明书NO.20p5.add(button5);this.add(p5);this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(150,150,200,200);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==button2){//取款dispose();GetBalancegb=newGetBalance("取款",act);}if(e.getSource()==button3){//查询余额Queryq=newQuery("查询余额",act);dispose();}elseif(e.getSource()==button4){//退出System.exit(0);dispose();沈阳大学 课程设计说明书NO.20}elseif(e.getSource()==button5){//修改密码ChangePasswordcp=newChangePassword("修改密码",act);dispose();}}}(7)取款功能设计代码:importjavax.swing.*;importjava.awt.*;importjavax.swing.border.*;importjava.awt.event.*;classGetBalanceextendsFrameimplementsActionListener{BoxbaseBox,box1,box2;Buttonbutton;TextFieldtf;Accountact;GetBalance(Strings,Accountact){//构造函数super(s);this.act=act;button=newButton("确定");Panelpanel=newPanel();Panelpanel1=newPanel();tf=newTextField(6);this.setLayout(newGridLayout(2,1));panel1.add(newLabel("请输入你想取钱的数目"));panel1.add(tf);沈阳大学 课程设计说明书NO.20panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(200,200,150,150);this.setVisible(true);}publicvoidactionPerformed(ActionEvente){//System.out.println(e.getActionCommand());doublemoney;money=Double.parseDouble(tf.getText().trim());if(e.getSource()==button){if(act.get_Money()<0){//判断余额是否为负dispose();ErrorWarn4ew4=newErrorWarn4("消息!",act);}elseif(money<=act.get_Money()){//取钱的数额不大于余额if((money%100!=0)||(money>=5000)){//取钱数为100的倍数或不大于5000dispose();ErrorWarn6ew6=newErrorWarn6("消息!",act);}act.set_Balance(money);//重置余额沈阳大学 课程设计说明书NO.20this.setVisible(false);Selections=newSelection("选择服务",act);//返回选择服务窗口//dispose();}elseif(money>act.get_Money()){判断取款数额是否大于余额dispose();ErrorWarn5ew5=newErrorWarn5("消息!",act);}}}}publicstaticvoidmain(String[]args){GetBalancetest=newGetBalance("dfdf");GetBalancegb=newGetBalance("取款");}}(8)修改密码设计代码:importjavax.swing.*;importjava.awt.*;importjavax.swing.border.*;importjava.awt.event.*;classChangePasswordextendsFrameimplementsActionListener{Panelpanel1=newPanel();Panelpanel2=newPanel();Panelpanel3=newPanel();Panelpanel=newPanel();TextFieldtf4,tf5,tf6;Buttonbutton;沈阳大学 课程设计说明书NO.20Accountact;ChangePassword(Strings,Accountact){super(s);this.act=act;tf4=newTextField(6);tf5=newTextField(6);tf6=newTextField(6);button=newButton("确定");button.addActionListener(this);(9)建立新密码设计代码:panel1.add(newLabel("请输入你的旧密码:"));panel1.add(tf4);panel2.add(newLabel("请输入你的新密码:"));panel2.add(tf5);panel3.add(newLabel("请再次输入你的新密码"));panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(panel3);this.add(panel);setLayout(newGridLayout(4,1));setBounds(200,200,250,250);this.setVisible(true);(10)窗口事件设计代码:this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){沈阳大学 课程设计说明书NO.20System.exit(0);}});}(12)查询余额功能设计代码:importjavax.swing.*;importjava.awt.*;importjavax.swing.border.*;importjava.awt.event.*;classQueryextendsFrameimplementsActionListener{Buttonbutton;Accountact;Query(Strings,Accountact){//构造函数super(s);this.act=act;button=newButton("确定");//TextFieldtf=newTextField(6);Panelpanel1=newPanel();Panelpanel=newPanel();panel1.add(newLabel("你的余额为:"+act.get_Money()));//查询余额的方法//panel1.add(tf);button.addActionListener(this);panel.add(button);this.add(panel);this.add(panel1);沈阳大学 课程设计说明书NO.20沈阳大学