ATM

来源:互联网 发布:怎么样看淘宝等级 编辑:程序博客网 时间:2024/04/28 03:28

//第一部分

package com.lwt.atmSystem;



public class ATMDemo {


public static void main(String[] args) throws Exception {
// TODO 自动生成的方法存根
ATM atm = new ATM();
atm.welcome();
}


}

//

第二部分

ackage com.lwt.atmSystem;


import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;


public class ATM {
Account acct;
double sum1;
double sum2;
public ATM() {
acct = new Account("123456", 20000.00);
}


// 欢迎及系统进入提示
public void welcome() throws Exception {
System.out.println("-----------------------------------------" + "\n" 
+ "------------欢迎使用xxxx银行ATM系统------------"+ "\n" 
+ "-----------------------------------------" + "\n" 
+ "请选择:1. 进入系统   2. 退出");
int num;
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
switch (num) {
case 1:
enterPwd();
break;
case 2:
exit();
break;
default:
welcome();
}
}


// 密码输入提示
public void enterPwd() throws Exception {
String pwd;
int timer = 0;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("请输入你的密码:");
pwd = scanner.nextLine();
if (!isRight(pwd)) {
System.out.println("你的密码有误,请重新输入:");
timer++;
} else {
langChoose();
}
} while (timer < 3);
System.out.println("由于输入的次数过多,您的卡已经被ATM吞掉,请联系工作人员!");
System.exit(1);
}


// 验证密码是否正确
public boolean isRight(String pwd) {
if (acct.getPassword().equals(pwd)) {
return true;
} else {
return false;
}
}


// 语言选择提示
public void langChoose() throws Exception {
int num;
Scanner scanner = new Scanner(System.in);
System.out.println("请选择服务语言:1 中文;2 英文 ");
num = scanner.nextInt();
switch (num) {
case 1:
menu();
break;
case 2:
System.out.println("英文系统正在建设中....");
langChoose();
break;
default:
System.out.println("只能输入1或者2");
langChoose();
}
}


// 主菜单页面
public void menu() throws Exception {
int num;
int counter = 0;
System.out.println("------------请选择服务项目------------" + "\n" 
+ "1. 查询余额    2. 取款   3. 转账   4. 存款   5. 退出");
Scanner scanner = new Scanner(System.in);
do {
num = scanner.nextInt();
switch (num) {
case 1:
queryBal();
break;
case 2:
withdraw();
break;
case 3:
transferAcct();
break;
case 4:
deposit();
break;
case 5:
exit();
break;
default:
System.out.println("服务项目不存在,请重新选择服务项目!");
menu();
}
} while (counter < 2);
System.out.println("不要捣乱了,赶紧回家吧!");
exit();
}


// 查询余额
public void queryBal() throws Exception {
System.out.println("您卡上的信用余额为" + acct.getMoney());
menu();
}


// 取款
public void withdraw() throws Exception {
int num;
double money = 0;
//double sum;
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);
menu();
}
System.out.println("您选择取款,请注意以下提示:" + "\n" 
+ "1)提示该ATM机一次能取款的最大金额为2000元." + "\n" 
+ "2)用户的帐户一天取款累计的最大金额为5000."+ "\n" 
+ "3)选取系统界面上的固定金额(500,1000,2000),或是输入要取的金额,进行取款." + "\n" 
+ "------------请选择取款金额------------"+ "\n"
+ "1.500   2.1000   3.2000   4.其他金额");
Scanner scanner = new Scanner(System.in);
// while (scanner.hasNext()) {
num = scanner.nextInt();
switch (num) {
case 1:
money = 500;


break;
case 2:
money = 1000;
// sum = sum + money;
break;
case 3:
money = 2000;
// sum = sum + money;
break;
case 4:
System.out.println("请输入金额:(注意:只能输入100的整数倍,并且要小于2000)");
Scanner scanner1 = new Scanner(System.in);
money = scanner1.nextDouble();
if (money % 100 != 0 || money > 2000) {
System.out.println("您输入的金额不是100的整数倍或者大于2000,请选择:");
otherAmt(money);
}
// sum = sum + money;
break;
default:
withdraw();
}


sum1 = sum1 + money;
if (money > acct.getMoney()) {
System.out.println("余额不足请重新输入");
withdraw();
} else if (sum1 > 5000) {
System.out.println("对不起,本次取钱后当天累计金额将超过5000,将跳转到取款界面,请重新取款:" + "\n");
withdraw();
} else {
acct.dropMoney(money);
// sum = sum + money;
System.out.println("取款成功你的账户余额为" + acct.getMoney());
// System.out.println(sum);
afterWithdraw();


}
// }
}


// 一次取款大于2000的操作
public void otherAmt(double 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("您选择重新输入金额,将返回取款界面...");
withdraw();
break;
case 2:
exit();
break;
default:
otherAmt(money);
}
}


// 取款成功后的操作
public void afterWithdraw() 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("您选择继续取款,将返回取款界面...");
withdraw();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
menu();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterWithdraw();
}
}


// 转账
public void transferAcct() throws Exception {
int num1 = 1;
int num2 = 0;
double money = 0;
System.out.println("请输入转账帐号:");
Scanner scanner1 = new Scanner(System.in);
try {
num1 = scanner1.nextInt();
} catch (Exception e) {
System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
transferAcct();
}
System.out.println("请再次输入转账帐号:");
Scanner scanner2 = new Scanner(System.in);
try {
num2 = scanner2.nextInt();
} catch (Exception e) {
System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
transferAcct();
}
while (num1 == num2) {
inputMoney(money);
if (money > acct.getMoney()) {
System.out.println("余额不足请重新输入");
inputMoney(money);
} else {
acct.dropMoney(money);
}
System.out.println("转账成功你的账户余额为" + acct.getMoney());
afterTransferAcct();
}
System.out.println("账户必须都是数字,并且前后要一致。请重新输入转入账户:");
transferAcct();
}


// 输入金额
public void inputMoney(double money) {
int num;
System.out.println("请您输入转账金额(注意,转账一次的金额不能超过10000元):");
Scanner scanner1 = new Scanner(System.in);
try {
money = scanner1.nextDouble();
} catch (Exception e) {
System.out.println("转账金额必须为数字,请重新输入");
inputMoney(money);
}
if (money > 10000 || money < 1) {
System.out.println("转账的金额超过10000元或者小于1元,请选择:" + "\n" 
+ "1 重新输入转出金额;2 退出系统");
Scanner scanner2 = new Scanner(System.in);
num = scanner2.nextInt();
switch (num) {
case 1:
System.out.println("您选择重新输入金额,将返回输入转账金额界面...");
inputMoney(money);
break;
case 2:
exit();
break;
default:
System.out.println("需选择1或者2,但您没有选择,默认返回输入转账金额界面...");
inputMoney(money);
break;
}
} else if (money > acct.getMoney()) {
System.out.println("余额不足请重新输入");
inputMoney(money);
} else {
acct.dropMoney(money);
}
}


// 转账成功后操作
public void afterTransferAcct() 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("您选择继续转账,将返回转账界面...");
transferAcct();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
menu();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterTransferAcct();
}
}


// 存款
public void deposit() throws Exception {
double money;
if (sum2 == 50000) {
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);
menu();
}
System.out.println("您选择存款,请注意以下提示:" + "\n" 
+ "1)提示该ATM机一次能存款的最大金额为10000元." + "\n" 
+ "2)用户的帐户一天存款累计的最大金额为50000元."+ "\n" 
+ "\n" + "请输入金额(1.存款金额必须是整数 2. 存款的金额必须是50的整数倍 3. 存款金额最大限度是 10000元):");
Scanner scanner = new Scanner(System.in);
// while(sum2!=50000){
// while (scanner.hasNext()) {
money = scanner.nextDouble();
if (money == (int) money && money % 50 == 0 && money <= 10000) {
sum2 = sum2 + money;
if (sum2 > 50000) {
System.out.println("对不起,本次存钱后当天累计金额将超过50000,将跳转到存款界面,请重新存款:" + "\n");
deposit();
}
// System.out.println(sum2);
acct.addMoney(money);
System.out.println("存款成功,你的账户余额为" + acct.getMoney());
afterDeposit();
} else {
System.out.println("输入有误,请重新输入存款金额:");
deposit();
}
// }
// }
}


// 存款成功后操作
public void afterDeposit() throws Exception {
int num;
System.out.println("您选择:1 继续存款;2 返回主页面;3 退出");
Scanner scanner2 = new Scanner(System.in);
num = scanner2.nextInt();
switch (num) {
case 1:
System.out.println("您选择继续存款,将返回存款界面...");
deposit();
break;
case 2:
System.out.println("您选择返回主页面,即将返回...");
menu();
case 3:
System.out.println("您选择退出,即将退出...");
exit();
break;
default:
afterDeposit();
}
}


// 退出
public void exit() {
System.out.println("------------------------------------------------" + "\n"
+ "------------欢迎再次使用xxxx银行ATM系统,再见!------------" + "\n"
+ "------------------------------------------------");
System.exit(0);
}
}

//第三部分

package com.lwt.atmSystem;


public class Account {
private String password;
private double balance;


public Account(String password, double balance) {
this.password = password;
this.balance = balance;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public double getMoney() {
return balance;
}


public void setMoney(double money) {
this.balance = money;
}


void dropMoney(double money) {
balance -= money;
}


void addMoney(double money) {
balance += money;
}
}

0 0
原创粉丝点击