本项目的主要功能是模拟银行的存取款业务,当用户登录时需判断银行卡号和银行卡密码,当输入的
卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1取款:2余额:3退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。其登陆后界面如下图所示:
涉及的知识点:面向对象,集合,io
二、项目需求分析通过项目简介中的要求,我们将项目的具体需实现的功能分析如下:
- 1) 首先要实现用户的登陆,判断卡号和密码。
- 2) 登陆成功后,提示四种可操作类型(存款:1、取款:2、余额:3、退出:0),输入相应类型数
字,进入其对应功能。
3) 选择1,存款时输入金额后,要判断金额是否合理(输入金额不能小于0),合理显示存款成功,
不合理回到操作类型选择功能,让其从新选择操作。
4) 选择2,取款时输入相应金额后,也要进行金额是否合理判断,并且其取款金额不能大于账户余额,
如果大于账户余额,则提示“余额不足,取款失败!”,并回到操作类型选择功能。
5) 选择3,系统显示账户余额。
6) 选择0,退出系统,程序运行结束。
需要验证用户输入的银行卡号和银行卡密码,是否存在于银行系统中,如果是提示登录成功,否则提示登录失败,让用户重新登录。登录成功后,需根据提示的四种操作类型,输入相应的数字,对当前账户存款进行存取和查询余额操作。操作完成后,输入数字0将退出整个系统。
在这个程序中,我们分成两个类,一个是界面ATM类,一个是Account储存客户信息
ATM类
public class ATM {
private static ArrayList<Account> accounts=new ArrayList<Account>();
private static Scanner scanner;
// private static boolean isLogin1 = false;
// private static boolean isLogin2 = false;
private static boolean isLogin = false;
public static void showMenu() {
System.out.println("请选择操作");
System.out.println("1.存钱");
System.out.println("2.取钱");
System.out.println("3.查询余额");
System.out.println("0.取卡");
}
public static void processMenu(int id, int command) { //执行指定的命令
switch (command) {
case 1:
System.out.println("请输入存入的钱数");
double depositMoney = scanner.nextDouble();
accounts.get(id).deposit(depositMoney);
break;
// double withdrawMoney = scanner.nextDouble();
// accounts.get(id).withDraw(withdrawMoney);
// break;
// System.out.println("您账户里的余额式" + accounts.get(id).getBalance());
// break;
case 2:
System.out.println("请输入取出的钱数");
double withdrawMoney = scanner.nextDouble();
accounts.get(id).withDraw(withdrawMoney);
break;
case 3:
System.out.println("您账户里的余额式" + accounts.get(id).getBalance());
break;
case 0:
isLogin = false;
System.out.println("取卡并退出");
break;
default:
System.out.println("请输入正确的指令:");
break;
}
}
public static void welcome(){//一定要定义为静态方法
System.out.println("************************************************");
System.out.println("*************欢迎光临*************************");
System.out.println("***********请插入银行卡进行操作************");
System.out.println("*************************************************");
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Account acc1 = new Account(001, 100,100);
accounts.add(acc1);
Account acc2 = new Account(002, 200,150);
accounts.add(acc2);
Account acc3 = new Account(003, 300,200);
accounts.add(acc3);
Account acc4 = new Account(004, 400,250);
accounts.add(acc4);
//
while(true) {
ATM.welcome();
scanner = new Scanner(System.in);
int id = scanner.nextInt();
//
// for (int i = 0; i < 3; i++) {
for (Account acc : accounts) { //检查账户和密码是否相符
if ( id == acc.getId()) {
// isLogin1 = true;
System.out.println("请输入密码");
int password= scanner.nextInt();
if ( password == acc.getPassword()) { //)&&(password==acc.password)
isLogin = true;
break;
}
}
// else {
// System.out.println("请输入正确的账户");
// }
}
// else {
// System.out.println("请输入正确的密码");
// }
//
// //此处不能直接用acc.id 因为id 是私有变量
// }
// else {
//
// int id2= scanner.nextInt();
// break;
// }
//检测账号和密码是否正确
// }//三次机会
// else {
// System.out.println("请输入正确的ID");
// int id2 = scanner.nextInt();
// continue;
// }
// }
//
// System.out.println("请输入密码");
// int password = scanner.nextInt();
//
// else {
// System.out.println("请输入正确的ID");
// int password2= scanner.nextInt();
// break;
// }
//
//
//
//
// while (isLogin1==true||isLogin2==true)
// {
// isLogin=true;
// }
while (isLogin) {
showMenu();
scanner = new Scanner(System.in);
int command = scanner.nextInt();
processMenu(id, command);
}
}
}
}
再设置一个储存客户信息的,在这里我们用链表来引用
Account acc1 = new Account(001, 100,100);
accounts.add(acc1);
Account acc2 = new Account(002, 200,150);
accounts.add(acc2);
Account acc3 = new Account(003, 300,200);
accounts.add(acc3);
Account acc4 = new Account(004, 400,250);
accounts.add(acc4);
Account.java
import java.util.Date;
/**
* ATM
* @author mac
*
*/
public class Account {
int id;
private int password;
private double balance;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public Account() {
// TODO Auto-generated constructor stub
}
public Account(int id, int password, double balance) {
super();
this.id = id;
this.password = password;
this.balance = balance;
}
public void withDraw(double money) {
balance -= money;
}
public void deposit(double money) {
balance += money;
}
//
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
}
以上程序均为个人作业代码