极限测试

ATM测试:

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();
}   

}

posted on 2020-09-22 20:03  lkwkk  阅读(443)  评论(0)    收藏  举报