您的位置:首页 > 其它

ATM系统

2015-10-11 21:17 204 查看
package 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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: