简单Atm系统JAVA代码

package com.atm;


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 中文;英文:如果用户输入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) 选取系统界面上的固定金额(50010002000),或是输入要取的金额,进行取款,界面如下.

----------------------------------请选择取款金额------------------------------------

                               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. 退出模块 项目,给用户一个欢迎再次使用的界面,退出系统!





   
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值