您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > Java期中课程设计(ATM机)报告
Java期中课程设计报告报告题目:ATM模拟程序姓名:学号:2009118246学院:信息科学与技术学院专业:计算机科学与技术1一、课程设计目的和内容目的:课程设计的主要目的是结合面向对象程序设计课程,培养面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。内容:设计ATM取款机主要包括登录页面、选择服务、存款、取款、查询余额、修改密码和退出等功能。注:各种按钮的事件和功能简单模拟ATM取款机的要求。二、系统需求分析1、功能需求分析(1)模拟ATM柜员机程序;(2)修改密码。当用户需要修改密码时,可以用这个功能,新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。(3)取款。用户根据自己需要取多少钱,输入要取的金额,每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(4)查询余额。用户需要知道自己帐户还剩多少钱时,可以查询自己帐户的余额。(5)存款。用户可以存款,金额为100的倍数,不能出现负存款。(6)锁机。当用户3次输入密码错误时,停止操作。2、设计需求分析A界面设计简洁、友好、美观大方。B操作简单、快捷方便。2C信息分类清晰、准确。3.ATM功能模块图4、约束条件(1)设计工具开发工具:NetBeans运行环境:Windows7(2)界面要求以Windows窗口形式显示,标题栏为ATM自动取款机不同的窗口中有不同的按钮和选择菜单。三、系统设计1、功能结构模块图3我们所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。其功能结构图如下所示:2、业务流程图4四、详细设计1、界面设计概述我设计的ATM机,主要应用java图形用户界面开发的知识,在netbeans上根据要求来创建窗体,窗体整个框架使用JFrame类构造,JFrame有自己的外边框和自己的标题,创建JFrame时可以指定其窗口标题,在创建窗口时,好多代码是自动生成,我只是在其基础上添加一些约束条件的代码,比如说每次输入的取款金额必须为100的整数,当密码输入三次错误,便锁卡等代码需要自己编写,这里我会主要说明自己编写的那部分代码,也是程序中比较重要的部分,其中有许多Swing组件重复应用,代码相同,在报告中不重复说明,比如说数字“0-9”的代码,“退卡”按钮的代码等。1、各模块界面设计与程序设计5主模块设计:主函数中定义了6个静态变量:密码(thePassword),余额(balance),新密码1(password1),新密码2(password2),其中密码为String类型,余额是double型,计数器(counter),用来记密码的输入次数,整型,初始化为0,dataStr是String类型,初始化为空字符串,还定义了FileWriter()和FileReader()方法分别用来写和读ATM在交易中的余额和密码也就是dataStr,使用户的余额和密码变成变化后的值。在主方法中首先要调用一次FileReader()方法,获取余额和密码。程序代码如下:importjava.io.*;publicclassAtm{/***@paramargsthecommandlinearguments*/staticStringthePassword;staticdoublebalance;staticintcounter=0;staticStringpassword1;staticStringpassword2;staticStringfilePath=./temp.txt;staticFilefile=newFile(filePath);staticStringdataStr=;//写文件staticvoidFileWriter(){StringdataStr;try{if(!file.exists())file.createNewFile();dataStr=balance+,+thePassword+,;byte[]data=dataStr.getBytes();FileOutputStreamfos=newFileOutputStream(file);fos.write(data);fos.close();}6catch(Exceptione){e.printStackTrace();}}//读文件staticvoidFileReader(){try{if(!file.exists())file.createNewFile();byte[]data=newbyte[64];FileInputStreamfis=newFileInputStream(file);intrs=0;while((rs=fis.read(data))0){dataStr+=newString(data,0,rs);}if(!dataStr.isEmpty()){String[]sets=dataStr.split(,);balance=Double.parseDouble(sets[0]);thePassword=sets[1];}fis.close();}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(Stringargs[]){FileReader();//调用读文件try{for(javax.swing.UIManager.LookAndFeelInfoinfo:javax.swing.UIManager.getInstalledLookAndFeels()){if(Nimbus.equals(info.getName())){javax.swing.UIManager.setLookAndFeel(info.getClassName());break;}}}catch(ClassNotFoundExceptionex){java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);7}catch(InstantiationExceptionex){java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}catch(IllegalAccessExceptionex){java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}catch(javax.swing.UnsupportedLookAndFeelExceptionex){java.util.logging.Logger.getLogger(AtmWelcome.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);}AtmWelcomeaw=newAtmWelcome();aw.setSize(390,290);aw.setVisible(true);}}1)待机界面这个界面可以说是一个待机界面,点击“插卡”按钮,进入登陆界面,其过程相当于ATM读取磁卡信息的过程,利用了Swing控件中的标签和按钮,在“插卡”按钮添加鼠标点击事件代码如下:privatevoidjButton1MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:8newAtmEnter().setVisible(true);//进入登陆界面this.setVisible(false);}2)登陆界面这个登陆界面,用户名和账号在插卡时相当于系统已经读取,所以下面这个界面只是密码验证,输入正确的密码,若正确,则进入主交易界面,若错误则进入密码错误,重新输入,若输入3次错误,则进入锁卡界面,具体界面和程序代码如下所示:“确定”按钮的鼠标点击事件代码(用户三次输入错误判断程序):privatevoidjButton11MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:intl=jPasswordField1.getText().length();if(l==6&&jPasswordField1.getText().equals(Atm.thePassword)){newAtmEnterSuccess().setVisible(true);this.setVisible(false);}elseif(Atm.counter2){newAtmPasswordError().setVisible(true);this.setVisible(false);Atm.counter++;}9else{newAtmLock().setVisible(true);this.setVisible(false);}}“数字0-9”按钮的鼠标点击事件代码:publicvoidsetNumber(Stringc){jPasswordField1.setText(jPasswordField1.getText()+c);}privatevoidjButton4MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(1);}privatevoidjButton1MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(2);}privatevoidjButton5MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(3);}privatevoidjButton3MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(4);}privatevoidjButton2MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(5);}privatevoidjButton6MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(6);}10privatevoidjButton7MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(7);}privatevoidjButton8MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingcodehere:setNumber(8);}privatevoidjButton9MouseClicked(java.awt.event.MouseEventevt){//TODOaddyourhandlingco
本文标题:Java期中课程设计(ATM机)报告
链接地址:https://www.777doc.com/doc-4484179 .html