ATM柜员机模拟程序 程序的功能点如下:
要求使用图形用户界面:
通过主界面,可以进入管理员界面、用户界面、系统设置界面、退出:
启动软件,可以进入用户模式,也可以进入系统管理模式;
进入系统管理模式,需要输入管理员账号和密码,
可以查看这台ATM机近期资金出入明细,
可以查看这台ATM机上面操作的所有账户的历史记录和明细,
可以把所有记录导出到excel文件中;
进入用户账号和密码的登录界面,当输入给定的卡号和密码(初始卡号16位和密码6位)时,
对比系统存储的账号和密码正确,能登录ATM柜员机系统,当日出错次数操作3次,
当日锁定账户不能继续操作,累计三日被锁定,需要管理员账号才能够完成解锁操作。
用户可以按照以下规则进行操作:
1、查询余额:初始余额为100000元;
2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;
3、ATM存款:不能出现负存款,要求存钱为100的整数倍;
4、ATM转账:通过登录的用户向指定的银行账号(在系统中已经保存)转账,若银行卡不存在,
则提示银行卡号输入错误,转账成功则提示“转账成功”,并且工具日期能够实现当日转账金额的限制;
5、历史交易记录查询:可以显示20条以上的交易记录,交易记录可以从文件导入,也可以把记录导出到文件;
6、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,
只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码;
7、退卡:点击退卡,返回登录界面。
复制代码
使用Java GUI开发系统界面
文件输出使用 File 导出txt文件到系统目录
电脑安装JDK,设置环境变量 双击运行即可
主界面登录功能
管理员后台
用户主界面
取款
查询交易记录
转账
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class User { //用户类User
private Set set=new TreeSet() ; //私有的成员变量——卡号
private String name; //私有的成员变量 姓名
private String miMa; //私有的成员变量 密码
private double yuE; //私有的成员变量 余额
public User(int cardNum, String name, String miMa) {
this.set.add(cardNum) ;
this.name = name;
this.miMa = miMa;
this.yuE = 0;
}
public boolean hasNum(int CardNum) {
Iterator iter=set.iterator();
while(iter.hasNext()){
int in=iter.next();
if(in==CardNum){
return true;
}
}
return false;
}
public void setCardNum(int cardNum) {
this.set.add(cardNum);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMiMa() {
return miMa;
}
public void setMiMa(String miMa) {
this.miMa = miMa;
}
public double getYuE() {
return yuE;
}
public void setYuE(double yuE) {
this.yuE += yuE;
}
public void setYuE2(double yuE) {
this.yuE -= yuE;
复制代码
package com.baidu.HomeWork.Work16;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;
public class Method {
static LinkedList userList = new LinkedList();
Scanner scan = new Scanner(System.in);
double mon;
static int cardNum = 100000;
static int Card = 0;
void saveMon(int Card, int i) {
/*存款方法
* 传入账号Card,循环变量i
*
*
*
*
*
*
*
* */
System.out.println("您的名字是" + userList.get(i).getName());
System.out.println("请输入存款金额");
try {
mon = scan.nextDouble();
} catch (InputMismatchException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
userList.get(i).setYuE(mon);
System.out.println("存入" + mon + "元");
System.out.println("现在您的账号余额" + userList.get(i).getYuE());
}
void getMon(int Card, int i) {
/*取款方法
* 传入账号Card,循环变量i
*
*
*
*
*
*
*
* */
System.out.println("您的名字是" + userList.get(i).getName());
System.out.println("请输入取款金额");
try {
mon = scan.nextDouble();
} catch (InputMismatchException e) {
e.printStackTrace();
}
if (mon < userList.get(i).getYuE()) {
userList.get(i).setYuE2(mon);
System.out.println("取出" + mon + "元");
System.out.println("现在您的账号余额" + userList.get(i).getYuE());
}
}
void cha(int Card, int i) {
/*查询方法
* 传入账号Card,循环变量i
*
*
*
*
*
*
*
* */
System.out.println("您的名字是" + userList.get(i).getName());
System.out.println("现在您的账号余额" + userList.get(i).getYuE());
}
void creatUser() {
/*创建用户方法,因为取款机不提供该功能,因此仅调用一次做测试使用
*
*
*
*
*
*
*
* */
String name = "";
String miMa = "";
System.out.println("请输入姓名");
try {
name = scan.next();
} catch (RuntimeException e) {
e.printStackTrace();
}
System.out.println("请输入密码");
try {
miMa = scan.next();
} catch (RuntimeException e) {
e.printStackTrace();
}
userList.add(new User(++cardNum, name, miMa));
System.out.println("您的账号是:" + cardNum);
}
int dengLu() { //登录方法,判断用户是否存在以及密码是否正确
boolean tag = true;
String miMa;
System.out.println("请输入账号");
try {
Card = scan.nextInt();
} catch (InputMismatchException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
System.out.println("请输入密码");
miMa = scan.next();
for (int i = 0; i < userList.size(); i++) {
if (userList.get(i).hasNum(Card)) {
if (userList.get(i).getMiMa().equals(miMa)) {
return i;
} else {
System.out.println("密码错误");
break;
}
} else {
}
}
System.out.println("查无此号");
return -2;
复制代码
package com.baidu.HomeWork.Work16;
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Scanner;
public class GetMonMachine {
static int num = 0;
static boolean tag = true;
static boolean tag_1 = true;
static Scanner scan = new Scanner(System.in);
static Method gm = new Method();
public static void main(String[] args) {
gm.creatUser();
while (tag) { // 主菜单
int num;
if ((num = gm.dengLu()) != -2) {
System.out.println("1.存款");
System.out.println("2.取款");
System.out.println("3.查询余额");
System.out.println("4.退出取款机");
int scan_num = 4;
try {
scan_num = scan.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入非法");
e.printStackTrace();
}
switch (scan_num) { // 主菜单选择
case 1:
gm.saveMon(Method.Card,num);
break;
case 2:
gm.getMon(Method.Card,num);
break;
case 3:
gm.cha(Method.Card,num);
break;
case 4:
tag = false;
break;
default:
System.out.println("输入有误,请重新输入");
break;
复制代码
最后,在有输入的地方加上try{}catch(){}处理可能发生的异常,就可以了。
添加 博主 获取源码资料