import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class Em {
int balance=20000;
String password="123456";
int sum1;
int sum2;
Scanner sc=new Scanner(System.in);
//欢迎界面登陆界面
public void Welcome() throws Exception{
System.out.println("-----------------------欢迎使用xxxx银行ATM系统---------------------");
System.out.println( "1.进入系统 \t2.退出\t");
System.out.println("请选择:");
int select=new Scanner(System.in).nextInt();
switch(select){
case 2:
exit();
break;
case 1:
mima();
break;
default:Welcome();
}
}
//密码输入
public void mima() throws Exception{
int timer=0;
do{
System.out.println("请输入密码:");
String pwd=sc.next();
if(!pwd.equals(password)){
System.out.println("密码错误,请重新输入");
timer++;
}else{
language();
}
}while(timer<3);
System.out.println("由于输入的次数过多,您的卡已经被ATM吞掉,请联系工作人员!");
exit();
}
//语言选择
public void language() throws Exception{
System.out.println("1.中文 2.英文");
System.out.println("请选择语言:");
int lan=sc.nextInt();
switch(lan){
case 1:
homepage();
break;
case 2:
System.out.println("英文系统正在建设中....");
language();
break;
default:
System.out.println("只能输入1或者2");
language();
break;
}
}
//主界面菜单
public void homepage() throws Exception{
System.out.println("------------------------请选择服务项目------------------------");
System.out.println("1.查询余额\t2.取款\t3.转账\t4.存款\t5.退出");
int check=new Scanner(System.in).nextInt();
int num=0;
do{
switch(check){
case 1:
account();
break;
case 2:
draw();
break;
case 3:
transfer();
break;
case 4:
deposit();
break;
case 5:
exit();
default:
System.out.println("服务项目不存在,请重新选择服务项目!");
num++;
//缺陷System.out.println(num);
homepage();
}
}while(num<3);
System.out.println("不要捣乱了,赶紧回家吧!");
exit();
}
//查询余额
public void account() throws Exception{
System.out.println(balance);
homepage();
}
//取款
public void draw() throws Exception{
int money=0;
if(sum1==5000){
System.out.println("\n"+"对不起,您今日取款已达到限制,请选择其他项目或去柜台取钱。");
TimerTask task = new TimerTask(){
public void run(){
sum1 = 0;
}
};
Timer timer = new Timer();
long delay = 1000*60*60*24;
long period = 1000*60*60*24;
timer.scheduleAtFixedRate(task, delay, period);
homepage();
}
System.out.println("该ATM机一次能取款的最大金额为2000元,2)用户的帐户一天取款累计的最大金额为5000.");
System.out.println("-----------------------------请选择取款金额-------------------------------");
System.out.println(" 1. 500 2. 1000 3. 2000 4. 其他金额");
System.out.println("请选取金额");
int dr=sc.nextInt();
switch(dr){
case 1:
money=500;
//balance-=money;
break;
case 2:
money=1000;
//balance-=money;
break;
case 3:
money=2000;
//balance-=money;
break;
case 4:
System.out.println("只能输入100的整数倍,并且要小于2000.");
System.out.println("请输入金额");
money=sc.nextInt();
if (money % 100 != 0 || money > 2000) {
System.out.println("您输入的金额不是100的整数倍或者大于2000,请选择:");
other(money);
}
break;
default:draw();
}
sum1=sum1+money;
if(money > balance) {
System.out.println("余额不足请重新输入");
draw();
} else if (sum1 > 5000) {
System.out.println("对不起,本次取钱后当天累计金额将超过5000,将跳转到取款界面,请重新取款:" + "\n");
draw();
} else {
balance-=money;
System.out.println("取款成功你的账户余额为" +balance);
// System.out.println(sum);
afterDraw();
}
}
// 一次取款大于2000的操作
public void other(int money) throws Exception {
int num;
System.out.println("1 重新输入取款金额;2 选择退出系统.");
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("您选择重新输入金额,将返回取款界面...");
draw();
break;
case 2:
exit();
break;
default:
other(money);
}
}
//取款成功后
public void afterDraw() throws Exception{
int numb;
System.out.println("您选择:1 继续取款;2 返回主页3 退出");
Scanner scanner = new Scanner(System.in);
numb = scanner.nextInt();
switch (numb) {
case 1:
System.out.println("您选择继续取款,将返回取款界面...");
draw();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
homepage();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterDraw();
}
}
public void exit(){
System.out.println("--------------欢迎再次使用xxxx银行ATM系统,再见!------------");
System.exit(0);
}
//转账账号登陆
public void transfer() throws Exception {
int money=0;
System.out.println("请输入账号");
String num1="null";
try{
num1=sc.next();
Integer.parseInt(num1);
}catch(Exception e){
System.out.println("学号只能是数字,并且前后要一致。请重新输入转入账户:");
transfer();
}
System.out.println("请再次输入账号");
String num2="null";
try{
num2=sc.next();
Integer.parseInt(num1);
}catch(Exception e){
System.out.println("学号只能是数字,并且前后要一致。请重新输入转入账户");
transfer();
}
if(num1.equals(num2)){
inputMoney(money);
// if(money>balance){
// System.out.println("余额不足,请重新输入");
// inputMoney(money);
// }else{
// balance-=money;
//
// }System.out.println("转账成功你的账户余额为" + balance);
// afterTransfer();
// }else{
// System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
// transfer();
// System.out.println("转账成功,账户余额为"+balance);
}
}
//输入转账金额
public void inputMoney(int money) throws Exception{
int num;
System.out.println("转账一次的金额不能超过10000元"+"\n"+"请您输入转账金额:");
try{
money=sc.nextInt();
}catch(Exception e){
System.out.println("转账金额必须要保证全是数字,并且在1~10000之间。");
inputMoney(money);
}
if(money>10000||money<1){
System.out.println("转账的金额超过10000元或者小于1元,请选择");
System.out.println("1 重新输入转出金额;2 退出系统");
num=sc.nextInt();
switch(num){
case 1:
System.out.println("您选择重新输入转出金额");
inputMoney(money);
break;
case 2:
exit();break;
default:
System.out.println("需选择1或者2,但您没有选择,默认返回输入转账账户输入界面...");
transfer();
break;
}
}else if(money>balance){
System.out.println("余额不足,请重新输入");//缺陷应该加个余额为0,有退出选项
//inputMoney(money);
afterTransfer();
}else{
balance-=money;System.out.println("转账成功你的账户余额为" + balance);
afterTransfer();
System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
transfer();
}
}
// 转账成功后操作
public void afterTransfer() throws Exception {
int num;
System.out.println("您选择:1 继续转账;2 返回主页面;3 退出");
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("您选择继续转账,将返回转账界面...");
transfer();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
homepage();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterTransfer();
}
}
public void deposit() throws Exception{
int money;
if (sum2 == 50000) {
System.out.println("\n" + "您今日存款已达到限制,请选择其他项目或去柜台存钱。");
TimerTask task = new TimerTask(){
public void run(){
sum2 = 0;
}
};
Timer timer = new Timer();
long delay = 1000*60*60*24;
long period = 1000*60*60*24;
timer.scheduleAtFixedRate(task, delay, period);
homepage();
}
System.out.println("提示该ATM机一次能存款的最大金额为10000元."+"\n"+"用户的帐户一天存款累计的最大金额为50000元.");
System.out.println("请输入存款金额:");
money=sc.nextInt();
if(money%50!=0 ||money>10000 || money<=0){
System.out.println("输入有误,请重新输入存款金额:");
deposit();
}else if(sum2>50000){
System.out.println("存款金额将超过50000,请重新存入");
deposit();
}else{
balance+=money;
sum2=sum2+money;
//System.out.println(sum2);
System.out.println("转账成功你的账户余额为" + balance);
afterdeposit();
}
}
public void afterdeposit() throws Exception {
int num;
System.out.println("您选择:1 继续服务;2 返回主页面;3 退出");
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
switch (num) {
case 1:
System.out.println("您选择继续服务,将返回服务界面...");
deposit();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
homepage();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterdeposit();
}
}
}
ATM系统功能需求
1. 运行系统的时候给用户一下提示:
----------------------------------------------------------------------------------
-----------------------欢迎使用xxxx银行ATM系统---------------------
----------------------------------------------------------------------------------
2. 给用户一下提示:
1. 进入系统 2. 退出
3. 如果用户选择退出,给用户一下提示:
----------------------------------------------------------------------------------
--------------欢迎再次使用xxxx银行ATM系统,再见!------------
----------------------------------------------------------------------------------
4. 如果用户选择进入系统,程序运行后要求用户输入密码 (123456) ,如果密码正确,进入系统,如果错误,提示用户密码错误,要求从新输入,于此同时开始计时,设置一个Timer, 超过三次给用户警告”由于输入的次数过多,您的卡已经被ATM吞掉,请联系工作人员!”
5. 用户登录成功,给用户的银行卡余额设为“20000.00”,同时给用户一个提示:提示用户选择服务语言:1 中文;2 英文:如果用户输入1,则进入主服务页面,如果2,提示用户“英文系统正在建设中....”,然后返回,让用户再次选择服务语言。如果用户输入的是其他内容,则提示用户只能输入1或者2,然后让用户再一次选择语言。
6. 用户在我们的指引下进入了主系统界面,给用户一下提示:
------------------------请选择服务项目------------------------
1. 查询余额 2. 取款 3. 转账 4. 存款 5. 退出
7. 请选择服务项目,如果用户输入非法字符或者>5 or <1的字符,给用户提示 “服务项目不存在,请重新选择服务项目!”如果超过三次用户输错,提示:不要捣乱了,赶紧回家吧!”退出系统。
----------------------------------------------------------------------------------
--------------欢迎再次使用xxxx银行ATM系统,再见!------------
----------------------------------------------------------------------------------
8. 选择1. 查询余额模块 项目,给用户一下提示“您卡上的信用余额为20000.00”
------------------------请选择服务项目------------------------
1. 查询余额 2. 取款 3. 转账 4. 存款 5. 退出
9. 选择2.取款模块 项目,当用户选择取款时,给用户一下提示:
1) 提示该ATM机一次能取款的最大金额为2000元.
2) 用户的帐户一天取款累计的最大金额为5000.
3) 选取系统界面上的固定金额(500,1000,2000),或是输入要取的金额,进行取款,界面如下.
----------------------------------请选择取款金额------------------------------------
1. 500 2. 1000 3. 2000 4. 其他金额
4) 用户选择其他金额后,给用户提示:只能输入100的整数倍,并且要小于2000.
5) 若是取款金额大于余额,提示余额不足.
6) 若是所取金额大于ATM机一次能取款的最大金额2000,给出提示,重新输入取款金额或是选择退出系统.
7) 若是一天所取累计金额大于该帐户一天取款累计金额(5000)的限制,给出提示信息,重新输入取款金额或是选择退出系统.
8) 若是用户在一天之内已经取了5000, 给用户提示“您今日取款已达到限制,请选择其他项目或去柜台取钱。”
9) 取款后,给出提示选择退卡或是继续取款.
10) 完成后用户可选择退卡或是继续选择服务
10. 选择3. 转账模块 项目,当用户选择转账时候,给用户提示。
1) 请输入转入账户的账号,这时候有一个账号验证的功能,给用户两次输入账号,如果两次输入的账户账号一样,同时要保证用户输入的账号都为数字。
2) 如果用户的输入通过验证,则给用户提示“转账一次的金额不能超过10000元”,同时“请您输入转账金额:”,转账金额必须要保证全是数字,并且在1~10000之间。
3) 如果用户的输入没有通过验证,给用户提示“账户必须都是数字,并且前后要一致。请重新输入转入账户:”
4) 若是转账金额大于余额,提示余额不足.
5) 若是所转金额大于ATM机一次能转出的最大金额10000,给出提示,重新输入转出金额或是选择退出系统.
6) 如果转账成功,给用户提示“服务完成,请选择:1. 继续服务 2.主页面 3.退出”
7) 转账后,给出提示选择退卡或是继续转账.
8) 完成后用户可选择退卡或是继续选择服务
11. 选择4. 存款模块 项目,当用户选择存款的时候,给用户提示。
1) 提示该ATM机一次能存款的最大金额为10000元.
2) 用户的帐户一天存款累计的最大金额为50000元.
3) 给用户提示“请输入存款金额:”同时有以下规则:1.存款金额必须是整数 2. 存款的金额必须是50的整数倍 3. 存款金额最大限度是 10000元.
4) 如果验证通过,则给用户的账户上加上用户输入的金额。
5) 如果验证不通过,给用户提示“输入有误,请重新输入存款金额:”
6) 如果存款成功,给用户提示“服务完成,请选择:1. 继续服务 2.主页面 3.退出”
7) 存款后,给出提示选择退卡或是继续存款.
8) 完成后用户可选择退卡或是继续选择服务
12. 选择5. 退出模块 项目,给用户一个欢迎再次使用的界面,退出系统!