目 录
前言 ............................................. 错误!未定义书签。
1、程序设思路 .................................... 错误!未定义书签。
2、程序的整体描述 ...............................................1
2.1 使用说明 .................................................1
2.2 程序流程图 ...............................................2
2.3 JAVA 类与自定义类的 ......................................3
2.4 自定义类的说明 .......................................... 3
2.5 事件监听器 ............................... 错误!未定义书签。
2.6 运行效果 ................................................ 5
2.7 存在的问题 .............................................. 5
3、源程序清单 ..................................................... 8
4、参考文献.............................................................................. 错误!未定义书签。
ATM 柜员机模拟程序
摘要:运用了事件监听技术来实现 ATM 的各种功能例如:存款、取款、修改密码、查询。
利用 NetBeans 进行用户图形的界面排版,符合日常软件使用规范来设计菜单和界面,方便
用户操作,同时也使的程序更加简单。
关键字: JAVA、ATM
前言 :ATM 柜员机模拟实现了 ATM 柜员机的基本功能,本文主要介绍了编写 ATM 柜员机的
一些过程和方法。系统需要账户要有密码保护功能,只有输入相应的密码才可以进入该账户,
登陆界面中密码框须使用‘*’保护。用户登录后,进入服务选择界面,浏览各种服务,选
择所需要的服务。服务包括(取款,存款,查询余额,修改密码)。 文中列出了所有的自定
义的类和类中所包含的成员。以及 Java 类与自定义类相互之间继承的层次关系及。同时也
画出了程序运行的流程图。
1.程序设计思路阐述
该程序设置了 8 个类,1 个主类 7 个辅助类,7 个辅助类都是内部类的形式,辅助类包
括五个实现 ATM 的功能,一个用来显示 ATM 主界面,一个存放账户资料,之所以用内部
类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类
中创建一次就可以在各个内部类中引用。至于界面的实现则利用 NetBeans 对图形用户界面
进行排版,这样比起用 JCreator 来写更容易,布局不需要自己用语言写出来,只要按着程序
的需要在 NetBeans 中设置控件属性就可以了。该程序利用的功能是利用 Java 事件监听技术
来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。
2.程序整体描述
2.1 使用说明
用户可以根据流程图很快就可以了解该模拟柜员机的使用:用户输入正确的
账号和密码就可以登录到该系统中去,进行相应的操作:取款、存款、查询、修
改密码。通过查询功能
我们可以查询账户的余额,在查询过程中我们可以选择取款的业务。取款功能在
对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是
100 的整数倍,取款完毕,可以选择显示余额的操作。返回后可以进行存款操作,
在对话中输入你需要存入的金额,所输入的数字也要是 100 的整数倍,而且不可
1
以是负数,支取金额也不允许透支。选择修改密码按钮可以进行密码修改,但是
要先输入就正确密码并且两次输入一致的新密码才可以修改密码。
2.2 程序流程图
如下图:
图 1
2
2.3 Java 类与自定义类的层次关系
如下图:
JFrame
MainFrame
Load
Take
Input
Setpew
Display
图 2
MyAccount 类、MainFrame 类、Load 类、Take 类、Input 类、Display 类、Setpew
类和 Doing 类都继承了 Java 类 JFrame 类。
2.4 自定义类的说明:
(1)Class MyAccount 创建客户,初始化客户信息功能以及保存客户信息,例
如:卡号、密码、原有余额、取款后卡里的余额以及存款后卡里的余额。此类包
含的成员有:修改密码方法 setpw(),设置取款后的账户余额方法 deccount(),设
置存款后的账户余额方法 reccount(),获得账户金额方法 get(),取得账号方法
getaccount()和获得密码方法 getpw(),成员变量 count、account、password 和方法
构造方法 MyAccount()。
(2)Class MainFrame 构造主界面,提供业务选择,让用户可以在这个界面选择
存款、取款、查询余额、修改密码。它包含的成员有:构造方法 MainFrame()和
初始化主界面的方法 initComponents()以及成员变量 checked、cunkuan、quite、
qukuan、reset。
(3)Class Load 实现登录功能和登录界面,如果用户名和密码匹配就可以登录
到主界面否则报错。它的成员有:Jpassword、accountnum、committ、JL1、JL2
和构造方法 Load()和初始化方法 initComponents()。
(4)Class Take 实现取款功能,按返回键返回主界面,按清除键可以删除输入数
字,并且取出的金额必须是 100 的整数倍,一次取出的金额不能超过 5000,而
且不可以是负数,支取金额也不允许透支,取完款后可以显示余额。该类的成员
有 :back 、clear 、commit 、quite 、JL1 、JT1 和 构 造 方 法 Take() 和 初 始 化 的
initComponents()。
(5)Class input 实现存款功能,存款的金额必须是 100 的整数倍,否则报错提
3
示重新输入。成员有:成员变量:str、back、clear、commit、doing、jB0、jB00、
jB1、jB2、jB3、jB4、jB5、jB6、jB7、jB8、jB9、jL1、jPanel1、jT1、quite 以及
构造函数 Inputhe()和初始化方法 initComponents()
(6)Class Display 功能为显示当前余额,在显示余额时 JTextField 的内容不可以
编辑,成员有:成员变量 back、jL1、jT1、quit、qukuan 和构造方法 Display()和
方法数 set(String str)和初始化的方法 initComponents()。
(7)class Setpw 创建此类是为了实现修改密码的功能,设置的密码必须是六位
以上的字符,并且所设置的密码不能是同一个字符组成,否则报错。成员有:成
员变量 commit、commitpw、jPwcommit、jPwnew、jPwold、newpw、oldpw、quit
和构造方法 Setpw()和初始化方法 initComponents()。
(8)Class Doing 功能是为显示取款时的状态类,当用户进行取款操作时显示“处
理中…”,成员有:成员变量 JL 和 font 以及构造方法 Doing()。
2.5 事件监听器
(1)MainFrame 类的监听器
在该类中设置了五个监听器,监听鼠标单击按钮,分别监听存款、取款、
查询、修改密码、退出等按钮的事件。
(2) Load 类的监听器
在该类中只有一个监听器,监听鼠标单击“确定”按钮时的事件。
(3) Take 类的监听器
在该类中设置了四个监听器,同样是监听鼠标单击按钮事件,分别监听“清
除”、“退出”、“返回”、“确定”按钮的事件。
(4 )input 类的监听器
在这个类中共设置了两个监听器,它们也是监听鼠标单击按钮事件。它们
监听“清除”、“确定”按钮事件。
(5 )display 类的监听器
在 display 中设置了三个监听器,都属于监听鼠标单击按钮事件,分别监听
“退出”、“返回”、“取款”按钮事件。
(6 )Setpw 类的监听器
在这个类中设置了两个监听器,它们是监听鼠标单击按钮事件,分别监听
“确定”、“退出”按钮事件
4
2.6 运行效果
程序运行能够实现图形用户界面。当输入给定的卡号和密码(初始卡号和
密码为 123456)时,系统能登录 ATM 柜员机系统,登录界面如下:
登录后界面如下:
图 3
图 4
用户可以按照以下规则进行:
(1) 查询余额:初始余额为 10000 元
(2) ATM 取款:每次取款金额为 100 的倍数,总额不超过 5000 元,支取金额
不允许透支。
(3)ATM 存款:不能出现负存款。
(4) 修改密码:新密码长度不小于 6 位,不允许出现 6 位完全相同的情况,只
有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
2.7 存在的问题:
5
通过了这些天的课程设计,对于我这个编程新手来说,还的确有些困难。
首先,我需要了解一些基本的术语。程序是计算机执行的一系列的指令。这些指
令说明了计算机要做什么,究竟是用文字处理、电子表格、玩游戏还是其他用途。
然后,我还要去图书馆查阅资料,找一些与这次课设有关的内容作参考,以便能
更方便的完成课设的内容。另外,我还去网上查阅了一些资料,充实一下自己,
一切都准备好了,我就可以完成我的 ATM 柜员机设计报告了。
由于对 neatbeans 运用的不够熟练,界面不美观,功能与真实的有一定的差
距。多个账户的实现需要创建数据库,而因为对此还不是很熟练,故没能实现多
个账户。
通过此次课程设计,将我本学期所学的 JAVA 知识得到巩固和应用,在设计
的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很
好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识
面,开阔视野,拓展思维。感谢傅老师,他循循善诱的教导和不拘一格的思路给
予我的启迪。同时也感谢同学对我的帮助和指点。
3.源程序清单
import javax.swing.JOptionPane;
import javax.swing.JDialog;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Color;
import javax.swing.SwingConstants;
import java.awt.event.*;
/**
* 该类是主类,在该类中定义了其他各个类的全局对象
* 登录界面的类 Load、主界面的类 MainFrame、取款的界面类 Take
* 存款界面的类 Input、显示余额的界面类 Display
* 修改密码的类 Setpw、账户类 MyAccount
* 状态显示类 Doing
*/
6
public class ATMModel {
MyAccount myaccount=new MyAccount();//账户类 MyAccount
Load load=new Load();//登录界面的类 Load
MainFrame Jmain=new MainFrame();//主界面的类 MainFrame
Take take=new Take();//取款的界面类 Take
Input input=new Input();//存款界面的类 Input
Display dis=new Display();//显示余额的界面类 Display
Setpw setpw=new Setpw();//修改密码的类 Setpw
Doing doing=new Doing();// 状态显示类 Doing
public ATMModel() {
}
public static void main(String[] args) {
ATMModel atm=new ATMModel();
}
/**
*我的账户,在该类中定义了初始账户余额 count
*初始账号 account
*初始密码 password
*/
class MyAccount {
private int count=10000;//初始账户余额 10000
private String account="123456";//初始账号
private String password="123456";//初始密码
7