ATM系统
系统准备、首页设计
系统准备内容分析:
每个用户的账户信息都是一个对象,需要提供账户类
需要准备一个容器,用户存储系统全部账户信息
首页只需要包含登录和注册两个功能
实现步骤:
定义账户类,用于后期创建账户对象封装用户的账户信息
账户类的信息至少包含(卡号,姓名,密码,余额,取现额度)
需要准备一个ArrayList集合,用于存储系统用户的账户对象
需要展示的欢迎页包含两个功能:开户功能,登录账户
用户开户功能实现
系统准备内容分析:
开户功能其实就是往系统的集合容器中存入一个新的账户信息的对象
实现步骤:
定义方法完成开户
键盘录入姓名,密码,确认密码(需要保证两次密码一致)
生成账户卡号,卡号必须由系统自动生成8位数字(必须保证卡号的唯一)
创建Account账户类对象用于封装账户信息(用户,卡号,密码)
把Account账户类对象存入到集合accounts中去
用户登录功能实现
系统准备内容分析:
登录功能应该定义成一个方法,并传入集合对象
让用户输入卡号,根据卡号去账户集合中查询账户对象
如果没有找到账户对象,说明登录卡号不存在,提示继续输入卡号
如果找到了账户对象,说明卡号存在,继续输入密码。
如果密码不正确,提示继续输入密码
如果密码也正确,登录成功!!
用户操作页设计、查询账户、退出账户功能实现
用户登录成功后,需要进入用户操作页
查询就是直接展示当前登录成功的账户对象的信息
退出账户是需要回到首页的
用户存款功能实现
存款就是拿到当前账户对象
然后让用户输入存款的金额
调用账户对象的setMoney将账户余额修改成存钱后的余额
存钱后需要查询一下账户信息,确认是否存钱成功了
用户取款功能实现
取款需要先判断账户是否有钱
有钱则拿到自己的账户对象
然后让用户输入取款金额
判断取款金额是否超过了当次限额,以及余额是否足够
满足要求则调用账户对象的setMoney方法完成金额的修改
用户转账功能实现
转账功能需要判断系统中是否有2个账户对象及以上
同时还需要判断自己的账户是否有钱,
接下来需要输入对方卡号,判断对方账户是否存在
对方账户存在还需要验证对方户主的姓氏
满足要求则可以把自己账户对象的金额修改到对方账户对象中去
用户密码修改、销户功能实现
修改密码就是把当前对象的密码属性使用set方法进行更新
销户是从集合对象中删除当前对象,并回到首页
// Account类
public class Account {
private String cardId;//卡号
private String userName;//客户名称
private String passWord;//密码
private double money;//余额
private double quotaMoney;//余额
public Account() {
}
public Account(String cardId, String userName, String passWord, double quotaMoney) {
this.cardId = cardId;
this.userName = userName;
this.passWord = passWord;
this.quotaMoney = quotaMoney;
}
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 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 getQuotaMoney() {
return quotaMoney;
}
public void setQuotaMoney(double quotaMoney) {
this.quotaMoney = quotaMoney;
}
}
// ATM系统
public class AtmSystem {
public static void main(String[] args) {
//1、准备系统需要的容器对象,用于存储账户对象
ArrayList<Account> accounts = new ArrayList<>();
//2、准备系统的首页:登录,开户
showmain(accounts);
}
/**
* 首页
* @param accounts
*/
public static void showmain(ArrayList<Account> accounts){
System.out.println("====================欢迎进入首页====================");
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请您输入您想做的操作: ");
System.out.println("1、登录");
System.out.println("2、开户");
System.out.println("您可以输入命令了: ");
int command = sc.nextInt();
switch(command){
case 1:
//登录
login(accounts,sc);
break;
case 2:
//开户
register(accounts,sc);
break;
default:
System.out.println("您输入的操作命令不被支持!");
}
}
}
/**
* 登录功能
* @param accounts
* @param sc
*/
private static void login