Java期中课程设计(ATM机)报告_第1页
Java期中课程设计(ATM机)报告_第2页
Java期中课程设计(ATM机)报告_第3页
Java期中课程设计(ATM机)报告_第4页
Java期中课程设计(ATM机)报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Java期中课程设计报告 报告题目:ATM模拟程序 姓名: 学号: 学院:信息科学与技术学院 专业:计算机科学与技术 一、课程设计目的和内容目的:课程设计的主要目的是结合面向对象程序设计课程,培养面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。内容:设计ATM取款机主要包括登录页面、选择服务、存款、取款、查询余额、修改密码和退出等功能。注:各种按钮的事件和功能简单模拟ATM取款机的要求。二、系统需求分析 1、功能需求分析(1)模拟ATM柜员机程序;(2)修改密码。当用户需要修改密码时,可以用这个功能,新密码长度不小于6位,不允许

2、出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。(3)取款。用户根据自己需要取多少钱,输入要取的金额,每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(4)查询余额。用户需要知道自己帐户还剩多少钱时,可以查询自己帐户的余额。(5)存款。用户可以存款,金额为100的倍数,不能出现负存款。(6)锁机。当用户3次输入密码错误时,停止操作。2、设计需求分析A界面设计简洁、友好、美观大方。B操作简单、快捷方便。C信息分类清晰、准确。3.ATM功能模块图4、 约束条件(1)设计工具开发工具:NetBeans运行环境:Windows 7

3、(2)界面要求 以Windows窗口形式显示,标题栏为ATM自动取款机不同的窗口中有不同的按钮和选择菜单。3、 系统设计1、功能结构模块图 我们所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。其功能结构图如下所示:2、业务流程图四、详细设计1、界面设计概述 我设计的ATM机,主要应用java图形用户界面开发的知识,在netbeans上根据要求来创建窗体,窗体整个框架使用JFrame类构造,JFrame有自己的外边框和自己的标题,创建JFrame时可以指定其窗口标题,在创建窗口时,好多代码是自动生成,我只是在其

4、基础上添加一些约束条件的代码,比如说每次输入的取款金额必须为100的整数,当密码输入三次错误,便锁卡等代码需要自己编写,这里我会主要说明自己编写的那部分代码,也是程序中比较重要的部分,其中有许多Swing组件重复应用,代码相同,在报告中不重复说明,比如说数字“0-9”的代码,“退卡”按钮的代码等。1、 各模块界面设计与程序设计主模块设计: 主函数中定义了6个静态变量:密码(thePassword ),余额(balance),新密码1(password1),新密码2(password2),其中密码为String类型,余额是double型,计数器(counter),用来记密码的输入次数,整型,初始

5、化为0,dataStr是String类型,初始化为空字符串,还定义了FileWriter()和FileReader()方法分别用来写和读ATM在交易中的余额和密码也就是dataStr,使用户的余额和密码变成变化后的值。在主方法中首先要调用一次FileReader()方法,获取余额和密码。程序代码如下:import java.io.*;public class Atm /* * param args the command line arguments */ static String thePassword ; static double balance ; static int counte

6、r = 0; static String password1; static String password2; static String filePath = ./temp.txt; static File file = new File(filePath);static String dataStr = ;/写文件 static void FileWriter() String dataStr; try if(!file.exists() file.createNewFile(); dataStr = balance + , + thePassword + ,; byte data =

7、dataStr.getBytes(); FileOutputStream fos = new FileOutputStream(file); fos.write(data); fos.close(); catch(Exception e) e.printStackTrace(); /读文件 static void FileReader() try if(!file.exists() file.createNewFile(); byte data = new byte64; FileInputStream fis = new FileInputStream(file); int rs = 0;

8、while(rs = fis.read(data) 0) dataStr += new String(data,0,rs); if(!dataStr.isEmpty() String sets = dataStr.split(,); balance = Double.parseDouble(sets0); thePassword = sets1; fis.close(); catch(Exception e) e.printStackTrace(); public static void main(String args) FileReader();/调用读文件 try for (javax.

9、swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels() if (Nimbus.equals(info.getName() javax.swing.UIManager.setLookAndFeel(info.getClassName(); break; catch (ClassNotFoundException ex) java.util.logging.Logger.getLogger(AtmWelcome.class.getName().log(java.util.logg

10、ing.Level.SEVERE, null, ex); catch (InstantiationException ex) java.util.logging.Logger.getLogger(AtmWelcome.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (IllegalAccessException ex) java.util.logging.Logger.getLogger(AtmWelcome.class.getName().log(java.util.logging.Level.SEVE

11、RE, null, ex); catch (javax.swing.UnsupportedLookAndFeelException ex) java.util.logging.Logger.getLogger(AtmWelcome.class.getName().log(java.util.logging.Level.SEVERE, null, ex); AtmWelcome aw=new AtmWelcome();aw.setSize(390,290); aw.setVisible(true); 1)待机界面 这个界面可以说是一个待机界面,点击“插卡”按钮,进入登陆界面,其过程相当于ATM读

12、取磁卡信息的过程,利用了Swing控件中的标签和按钮,在“插卡”按钮添加鼠标点击事件代码如下:private void jButton1MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmEnter().setVisible(true);/进入登陆界面 this.setVisible(false); 2) 登陆界面 这个登陆界面,用户名和账号在插卡时相当于系统已经读取,所以下面这个界面只是密码验证,输入正确的密码,若正确,则进入主交易界面,若错误则进入密码错误,重新输入,若

13、输入3次错误,则进入锁卡界面,具体界面和程序代码如下所示: “确定”按钮的鼠标点击事件代码(用户三次输入错误判断程序):private void jButton11MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: int l=jPasswordField1.getText().length(); if( l=6&jPasswordField1.getText().equals(Atm.thePassword ) new AtmEnterSuccess().setVisible(true

14、); this.setVisible(false); else if(Atm.counter=Double.valueOf(jButton1.getText() new AtmWithdrawlSuccess().setVisible(true);/进入取款成功界面 this.setVisible(false); Atm.balance=Atm.balance-Double.valueOf(jButton1.getText(); Atm.FileWriter(); else new AtmBalanceNotEnough().setVisible(true);/进入余额不足界面 this.se

15、tVisible(false); private void jButton3MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: if(Atm.balance=Double.valueOf(jButton3.getText() new AtmWithdrawlSuccess().setVisible(true);/进入取款成功界面 this.setVisible(false); Atm.balance=Atm.balance-Double.valueOf(jButton3.getText(

16、); Atm.FileWriter(); else new AtmBalanceNotEnough().setVisible(true);/进入余额不足界面 this.setVisible(false); private void jButton5MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here if(Atm.balance=Double.valueOf(jButton5.getText() new AtmWithdrawlSuccess().setVisible(true);/进入取款

17、成功界面 this.setVisible(false); Atm.balance=Atm.balance-Double.valueOf(jButton5.getText(); Atm.FileWriter(); else new AtmBalanceNotEnough().setVisible(true);/进入余额不足界面 this.setVisible(false); private void jButton4MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: if(Atm.bala

18、nce=Double.valueOf(jButton4.getText() new AtmWithdrawlSuccess().setVisible(true);/进入取款成功界面 this.setVisible(false); Atm.balance=Atm.balance-Double.valueOf(jButton4.getText(); Atm.FileWriter(); else new AtmBalanceNotEnough().setVisible(true);/进入余额不足界面 this.setVisible(false); private void jButton6Mouse

19、Clicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: if(Atm.balance=Double.valueOf(jButton6.getText() new AtmWithdrawlSuccess().setVisible(true);/进入取款成功界面 this.setVisible(false); Atm.balance=Atm.balance-Double.valueOf(jButton6.getText(); Atm.FileWriter(); else new AtmBalanceNot

20、Enough().setVisible(true);/进入余额不足界面 this.setVisible(false); “其他面额”按钮鼠标点击事件代码: private void jButton2MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmWithdrawlInput().setVisible(true);/输入取款金额界面 this.setVisible(false); “返回”按钮的鼠标点击事件代码:private void jButton7MouseClic

21、ked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmEnterSuccess().setVisible(true);/返回主交易界面 this.setVisible(false); 8) 取款金额输入界面这个界面是当用户所想取得金额在界面上没有的时候,便需要用户自己输入,规定输入的金额必须是100的倍数,且不大于5000元,具体事件代码如下所示:(其中按钮0-9的代码,“退卡”按钮等的代码和前面相同) “确定”按钮的鼠标事件代码: private void jButton11MouseCli

22、cked(java.awt.event.MouseEvent evt) / TODO add your handling code here: double a=Double.valueOf(jTextField1.getText(); if(Atm.balance=a&a%100=0&a5000) new AtmWithdrawlInputError().setVisible(true);/取款金额输入错误界面 this.setVisible(false); else new AtmBalanceNotEnough().setVisible(true);/余额不足 this.setVisib

23、le(false); “取消”按钮的鼠标事件代码: private void jButton13MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmEnterSuccess().setVisible(true);/返回到主交易界面 this.setVisible(false); 9)存款界面 和取款界面类似,具体的代码如下所示:100,300,500,1000,2000按钮的鼠标事件代码:private void jButton1MouseClicked(java.awt.

24、event.MouseEvent evt) / TODO add your handling code here: new AtmDepositSuccess().setVisible(true);/存款成功界面 this.setVisible(false); Atm.balance=Atm.balance+Double.valueOf(jButton1.getText(); Atm.FileWriter(); private void jButton3MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling co

25、de here: new AtmDepositSuccess().setVisible(true); this.setVisible(false); Atm.balance=Atm.balance+Double.valueOf(jButton3.getText(); Atm.FileWriter(); private void jButton5MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmDepositSuccess().setVisible(true); this.

26、setVisible(false); Atm.balance=Atm.balance+Double.valueOf(jButton5.getText(); Atm.FileWriter(); private void jButton4MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmDepositSuccess().setVisible(true); this.setVisible(false); Atm.balance=Atm.balance+Double.valueO

27、f(jButton4.getText(); Atm.FileWriter(); private void jButton6MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmDepositSuccess().setVisible(true); this.setVisible(false); Atm.balance=Atm.balance+Double.valueOf(jButton6.getText(); Atm.FileWriter(); “其他面额”按钮的鼠标事件代码:

28、private void jButton2MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmDepositInput().setVisible(true);/输入存款金额界面 this.setVisible(false); 10) 输入存款金额界面 和存款界面2类似,具体的事件代码如下:“确定”按钮的鼠标事件点击代码:private void jButton11MouseClicked(java.awt.event.MouseEvent evt) / TODO add y

29、our handling code here: String cs=jTextField1.getText(); if(Double.valueOf(cs)%100=0&Double.valueOf(cs)0) new AtmDepositSuccess().setVisible(true); this.setVisible(false); Atm.balance=Atm.balance+Double.valueOf(cs); Atm.FileWriter(); elsenew AtmDepositInputError().setVisible(true);/存款金额输入错误界面 this.s

30、etVisible(false); 11)密码修改界面 本来修改密码是要输入原密码的,但我们在使用ATM时,一开始就输入了密码,否则也不能进入修改密码界面,所以在这里直接输入新密码,连续两次输入,且两次输入的密码相同,且6位密码不完全相同,则修改密码成功,否则失败,具体代码如下:“确定”按钮的鼠标事件代码:private void jButton11MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: String a=jPasswordField1.getText(); Atm.pass

31、word1=a; new AtmPasswordInAgain().setVisible(true);/进入密码确认界面 this.setVisible(false); “返回”按钮的鼠标事件代码:private void jButton10MouseClicked(java.awt.event.MouseEvent evt) / TODO add your handling code here: new AtmEnterSuccess().setVisible(true); this.setVisible(false); 12) 密码修改确认界面第二次输入新密码,具体代码如下:“确定”按钮的鼠标事件代码:private boolean Samechars(String str) /若6位密码相同,则返回false if(str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =true | str.equals() =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论