课程设计报告(本科)课程:面向对象程序设计学号:姓名:班级:教师:时间:计算机学院1设计名称:ATM柜员机模拟程序设计内容、目的与要求:设计内容:(1)程序要求(2)算法分析(3)流程图(4)源程序(5)调试及运行结果(6)总结目的:设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。要求:使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:1、查询余额:初始余额为10000元2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。3、ATM存款:不能出现负存款。4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。计划与进度安排:2设计过程、步骤(可加页):算法设计:根据程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、存款、修改密码。除此之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出。根据上述的功能分析,我们可以吧整个ATM系统分为登陆模块、查询模块、取款模块、存款模块、修改密码模块。除此之外,还有在登陆系统后的功能选择模块,退出功能则镶嵌在各个需要的模块中。由于各个模块的功能实现是通过界面显示出来的,则程序设计又可以理解为几大界面的设计:登陆界面、主界面、查询余额界面、取款界面、存款界面、修改密码界面。除了几大界面之外,还有系统的初始化,主要是初始卡号、密码的设定等。在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。3(1)登陆界面用户输入正确的账号和密码就可以登录到该系统的主界面中去,进行相应的操作:取款、存款、查询、修改密码。(2)主界面主界面包括查询、存款、取款、修改密码、退出的功能按钮,按下相应的按钮,可以进行相应的操作。登陆界面输卡号密码开始正确?否是进入主界面查询余额取款修改密码退出存款4(3)查询界面在主界面中按下查询按钮可以进行查询操作。通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回和退出的操作。返回的操作会使用户回到主界面,退出的操作会使用户直接回到登陆界面。(4)存款界面在主界面按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输入的数字也要是100的整数倍,而且不可以是负数。存款返回清除退出存储余额确定查询余额返回取款显示余额退出5(5)取款界面取款界面既可以通过主界面进入,也可以通过查询、存款等操作过程中的界面进入。取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,输入取款金额,会弹出取款对话框,点确定,取款完毕。(6)修改密码选择修改密码按钮可以进行修改密码,但是要先输入旧密码正确并且两次输入新密码一致才可以修改密码。修改完成后,会返回主界面。修改密码确认新密码确定退出输入旧密码输入新密码取款返回清除退出取款余额确定6结果与分析(可以加页):(1)打开Ecplise,编译运行程序后,将会看到如图所示的欢迎界面。点击确定之后,会进入如图所示的登陆界面。用如下代码段实现:publicclassAtm{Useruser=newUser();LandingFramelf=newLandingFrame();publicAtm(){JOptionPane.showMessageDialog(null,欢迎使用ATM柜员机,提示,JOptionPane.INFORMATION_MESSAGE);}publicvoiduserLand(){………………landing.setText(用户登录);userNo.setText(卡号:);password.setText(密码:);btnSub.setText(登录);btnReset.setText(重置);……………….}进入到登陆界面后,需要输入账号和密码,当账号和密码正确时,才会进入到主界面。账号和密码不符合时,会进入如图所示的错误提示界面。初始账号为‘abc’和密码为“123456”7(2)当输入的密码和卡号正确,单击确定后就会进入到主界面,选择服务,如图所示,点击相应的按钮就可以选择所需要的服务了,点击“退出”会回到登陆界面。用如下代码实现:classMainextendsJFrame{publicJPanelmain;publicJButtonbutton1;publicJButtonbutton2;publicJButtonbutton3;publicJButtonbutton4;publicJButtonbutton5;Main(){…………..button1.setText(查询余额);button2.setText(取款);button3.setText(存款);button4.setText(修改密码);button5.setText(退出);……………….}8(3)点击存款,进入存款界面,如图所示。当输入的钱数不是100的倍数时,就会弹出如图所示的错误提示界面。输入正确时,进入如图所示的界面。用如下代码实现:classDepositextendsJFrame{…………………..publicDeposit(){…………………………button1.setText(确定);button2.setText(返回);button3.setText(清除);button4.setText(退出);…………………………}9(4)点击取款按钮,进入取款界面,如图所示。当输入的钱数是负数,或者是0,或者不是100的倍数,又或者大于5000时,会弹出如图所示的出错提示界面。当输入的钱数符合要求时,取款成功。用如下代码实现:classWithdrawextendsJFrame{…………….publicWithdraw(){…………………………}10publicvoidWithdrawFrame(){this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(400,400);this.setResizable(false);this.setTitle(取款);this.add(withdrawMoney);this.setVisible(true);this.setLocation(450,200);withdrawMoney.setLayout(null);jl.setText(取款金额:);button1.setText(确定);button2.setText(返回);button3.setText(清除);button4.setText(退出);………………………….}11(5)点击主界面中的查询按钮,就会进入到如图所示的查询界面。点击取款按钮,会进入到取款界面。初始金额为10000。用如下代码实现:classQueryextendsJFrame{…………………..StringmoneyStr=+user.getMoney();//取当前用户的余额publicQuery(){…………………………}publicvoidQueryFrame(){…………………………this.setTitle(查询余额);this.add(queryMoney);this.setVisible(true);this.setLocation(450,200);queryMoney.setLayout(null);extraMoney.setText(您的总余额是:);numberEMoney.setText(moneyStr);numberEMoney.setEditable(false);button1.setText(取款);button2.setText(返回);button3.setText(退出);12(6)点击主界面中的修改密码按钮,进入到如图所示的修改密码界面。新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码,弹出如图所示的提示界面,点击确定后会回到主界面。否则,密码修改不成功,点击确定按钮,界面没有反应。用如下代码实现:classChangePasswordextendsJFrame{………………………..publicChangePassword(){………………………..}publicvoidCpwdInterface(){this.add(cpwd);this.setVisible(true);this.setLocation(450,200);cpwd.setLayout(null);jl1.setText(旧密码:);jl2.setText(新密码:);jl3.setText(确认新密码:);button1.setText(确定);button2.setText(退出);13经过上面的操作,既测试了程序的实现效果,又对系统的使用进行了详细的说明。从上面的运行结果可以看出,程序基本上实现了所有的设计要求,而且运行正常。14设计体会与建议:***:在这次的课程设计中,我们主要运用了Java图形界面编程方面的知识,加深了对Java语言中各个基础知识点的了解和应用,将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。通过这次设计,我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。***:在这次课程设计中,我查了很多资料,很好的锻炼了自己的查阅资料的能力和快速吸收新知识的能力。同时,也加深了与同学的交流,在设计过程中,我们互相帮助,共度难关,培养了很好的默契。总之,在这次课程设计中,我学到了很多的知识,同时也感谢我的合作伙伴们。在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。***:本次Java程序课程设计让我学到了很多,也在自学的过程中积累了很多在平时学不到的东西,虽然在这个过程中遇到了许多问题,但在我们小组的共同努力下顺利完成了课程设计。通过本次课程设计,我熟悉掌握了Java和SOL语言以及eclipse软件的应用。在以后的学习中,我要更加努力了,努力学习,努力做一名出色的大学生。15importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;importjava.io.*;publicclassAtm{Useruser=newUser();LandingFramelf=newLandingFrame();publicAtm(){JOptionPane.showMessageDialog(null,欢迎使用ATM柜员机,提示,JOptionPane.INFORMATION_MESSAGE);}publicstaticvoidmain(String[]args){Atmatm=newAtm();}//用户classUser{privateintmoney=10000;privateStringno=abc;privateStringpwd=123;publicUser(){}//修改密码publicvoidchangePwd(Stringpwd){16this.pwd=pwd;}//修改钱publicvoidreduceMoney(intmon){money-=mon;}publicvoidincreaseMoney(intmon){money+=mon;}//取当前用户的钱、卡号、密码publicintgetMoney(){returnmoney;}publicStringgetNo