1.系统架构搭建和欢迎页设计
2.注册账号。包括账户名。密码,性别,取现额度,随后系统自动生成卡号,并验证卡号是唯一的。
3.用户登录功能,如果没有账户,需要先注册,验证账号密码是否正确。
4.设计用户操作页界面,查询界面,退出界面。
5.存款与取款。更新余额,如果取款金额大于限额或者大于余额,则失败。
6.销户功能,二次确认,保证账户中没有钱才能销户,返回欢迎界面。
ATM操作类
package com.lzk.test;
import java.util.ArrayList;
import java.util.Scanner;
public class ATM {
private Account loginAcc;
private ArrayList<Account> accounts = new ArrayList<Account>();
private Scanner sc = new Scanner(System.in);
//操作系统
public void start() {
while (true) {
System.out.println("==欢迎进入银行操作系统==");
System.out.println("1.用户登录");
System.out.println("2.用户注册");
System.out.println("请选择:");
int choice = sc.nextInt();
switch (choice) {
case 1:
login();
break;
case 2:
//register();
creatAccount();
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
}
//创建账户
private void creatAccount() {
Account account = new Account();
System.out.println("请输入用户名:");
String userName = sc.next();
account.setUserName(userName);
while (true) {
System.out.println("请输入密码:");
String password = sc.next();
System.out.println("请再次输入密码:");
String SecondPassword = sc.next();
if (SecondPassword.equals(password)) {
System.out.println("两次密码一致");
account.setPassword(password);
break;
} else {
System.out.println("两次密码不一致,请重新输入!");
}
}
// while (true) {
// System.out.println("请输入性别:");
// char sex = sc.next().charAt(0);//返回字符的第一个字符
// if (sex == '男' || sex == '女') {
// account.setSex(sex);
// break;
// } else {
// System.out.println("您输入的性别有误,请重新输入。");
// }
// }
System.out.println("请输入你的取现额度:");
double limit = sc.nextDouble();
account.setLimit(limit);
String cardID = createCardID();
account.setCardID(cardID);
System.out.println("您的卡号为:" + cardID);
accounts.add(account);
System.out.println("恭喜您注册成功!");
}
////生成随机卡号,且不能与系统中的其他卡号重复
private String createCardID() {
String cardID = "";
for (int i = 0; i < 10; i++) {
cardID += (int) (Math.random() * 10);//Math.random() 生成一个0到1之间的随机浮点数。
}
if (accounts.contains(cardID)) {
createCardID();
} else {
return cardID;
}
return cardID;
}
//登录
private void login() {
System.out.println("==用户登录==");
if (accounts.size() == 0) {
System.out.println("暂无用户,请注册!");
return;
}
while (true) {
System.out.println("请输入用户卡号:");
String CardID = sc.next();
System.out.println("请输入密码:");
String password = sc.next();
for (Account account : accounts) {
if (account.getCardID().equals(CardID) && account.getPassword().equals(password)) {
loginAcc = account;
System.out.println("登录成功!");
ShowUserCommand();
return;//跳出login方法,回到start
} else {
System.out.println("用户名或密码错误,请重新输入!");
}
}
}
}
//登录成功界面
private void ShowUserCommand() {
while (true) {
System.out.println("1.查看账户");
System.out.println("2.存款");
System.out.println("3.取款");
System.out.println("4.转账");
System.out.println("5.密码修改");
System.out.println("6.退出");
System.out.println("7.注销");
System.out.println("请选择:");
int choice = sc.nextInt();
switch (choice) {
case 1:
ShowUserAccount(); //查看账户
break;
case 2:
depositMoney(); //存款
break;
case 3:
drawMoney(); //取款
break;
case 4:
transferMoney(); //转账
break;
case 5:
changePassword(); //密码修改
break;
case 6:
System.out.println("欢迎下次使用!");
return;
case 7:
if (deleteAccount()) {
System.out.println("注销成功!");
return;
}//注销
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
}
private void changePassword() {
System.out.println("==密码修改==");
System.out.println("请输入原密码:");
String oldPassword = sc.next();
if (!loginAcc.getPassword().equals(oldPassword)) {
System.out.println("原密码错误,请重新输入!");
changePassword();
}
while (true) {
System.out.println("请输入新密码:");
String newPassword = sc.next();
System.out.println("请再次输入新密码:");
String SecondPassword = sc.next();
if (SecondPassword.equals(newPassword)) {
loginAcc.setPassword(newPassword);
System.out.println("密码修改成功!");
return;
} else {
System.out.println("两次密码不一致,请重新输入!");
}
}
}
private boolean deleteAccount() {
System.out.println("==注销==");
System.out.println("请问是否确认注销?(Y/N)");
String choice = sc.next();
if (choice.equals("Y")) {
accounts.remove(loginAcc);
if (loginAcc.getMoney() != 0) {
System.out.println("账户余额不为0,无法注销!");
return false;
} else {
accounts.remove(loginAcc);
System.out.println("注销成功!");
return true;
}
} else {
System.out.println("注销失败!");
return false;
}
}
private void transferMoney () {
System.out.println("==转账==");
if (accounts.size() < 2) {
System.out.println("转账失败,账户数量不足!");
return;
}
if (loginAcc.getMoney() == 0) {
System.out.println("转账失败,账户余额不足!");
return;
}
while (true) {
System.out.println("请输入转账卡号:");
String CardID = sc.next();
Account targetAcc = null;
for (Account account : accounts) {
if (account.getCardID().equals(CardID)) {
targetAcc = account;
break;
}
}
if (targetAcc == null) {
System.out.println("转账卡号不存在,请重新输入!");
} else if (targetAcc.equals(loginAcc)) {
System.out.println("不能转账给自己!");
} else {
String name = "*" + targetAcc.getUserName().substring(1);
System.out.println("被转账人的姓氏为:" + name);
String preName = sc.next();
if (targetAcc.getUserName().startsWith(preName)) {
System.out.println("请输入转账金额:");
double money = sc.nextDouble();
if (loginAcc.getMoney() < money) {
System.out.println("余额不足,请重新输入!您的余额为:" + loginAcc.getMoney());
return;
}
loginAcc.setMoney(loginAcc.getMoney() - money);
targetAcc.setMoney(targetAcc.getMoney() + money);
System.out.println("转账成功!");
return;
} else {
System.out.println("姓氏不匹配,请重新输入!");
return;
}
}
}
}
private void drawMoney () {
System.out.println("==取款==");
System.out.println("请输入取款金额:");
double money = sc.nextDouble();
if (loginAcc.getMoney() < money || money > loginAcc.getLimit()) {
System.out.println("余额不足或取款金额超过取现额度,请重新输入!");
return;
}
loginAcc.setMoney(loginAcc.getMoney() - money);
System.out.println("取款成功!");
System.out.println("当前余额:" + loginAcc.getMoney());
}
private void depositMoney () {
System.out.println("==存款==");
System.out.println("请输入存款金额:");
double money = sc.nextDouble();
loginAcc.setMoney(loginAcc.getMoney() + money);
System.out.println("存款成功!");
System.out.println("当前余额:" + loginAcc.getMoney());
}
//case1:查看账户
private void ShowUserAccount () {
System.out.println("==查看账户==");
System.out.println("卡号:" + loginAcc.getCardID());
System.out.println("用户名:" + loginAcc.getUserName());
System.out.println("余额:" + loginAcc.getMoney());
System.out.println("取现额度:" + loginAcc.getLimit());
System.out.println("性别:" + loginAcc.getSex());
}
}
Account构造器
package com.lzk.test;
public class Account {
private String cardID;
private String userName;
private char sex;
private String password;
public Account() {
}
private double money;
private double limit;// 限额
public String getCardID() {
return cardID;
}
public void setCardID(String cardID) {
this.cardID = cardID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double getLimit() {
return limit;
}
public void setLimit(double limit) {
this.limit = limit;
}
public Account(String cardID, String userName, char sex, String password, double money, double limit) {
this.cardID = cardID;
this.userName = userName;
this.sex = sex;
this.password = password;
this.money = money;
this.limit = limit;
}
}
start启动器
package com.lzk.test;
import java.util.Random;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
ATM atm = new ATM();
atm.start();
}
}