ATM项目

1.系统架构搭建、欢迎页设计

  1. ATM系统的架构

    • 定义了一个账户类Account,定义系统关心的账户信息。
    • 定义了一个ATM类,代表ATM系统,负责处理账户相关的业务需求。
    • 定义了一个Test类,负责测试系统:创建ATM对象代表ATM系统并启动。
  2. ATM类使用ArrayList储存账户信息

    1
    ArrayList<Account> accounts = new ArrayList<>();

2.开户功能实现

  1. 开户功能
    • 定义一个开户方法:createAccount。
    • 在方法里创建一个Account账户对象,负责封装用户的账户信息(姓名、性别、密码、卡号等)。
    • 卡号由系统自动随机生成。
    • 将对象存入账户集合。
    • 提示开户成功。
  2. 账户新卡号生成方法
    • 定义一个生成卡号方法:createCardId(),用来返回一个不重复的卡号。
    • 随机生成一个八位数并转化为字符串作为卡号。
    • 判断卡号是否与其他账户卡号重复
    • 定义一个根据卡号查找账户的函数:getAccountByCardId(String id),用来根据id查找账户。
    • 根据生成卡号查找账户,若没查到,说明没有重复账户,生成的卡号可用。
    • 若查询到了账户对象,说明卡号出现重复,循环继续生成随机卡号。

3.登录功能实现

  1. 登录功能
    • 设计一个登录方法:login,负责完成用户的登录。
    • 若系统里没有账户对象,直接结束登陆操作。
    • 有账户对象,则让用户输入卡号,根据卡号去账户集合中查询账户对象。
    • 若没找到账户对象,说明输入的卡号不存在,重新输入卡号。
    • 若找到账户对象,说明卡号存在,继续输入密码。
    • 若密码不正确,提示密码错误,继续输入密码。
    • 若密码正确,则提示登陆成功。

4.操作页展示、查询账户、退出账户

  1. 登陆成功后,进入用户操作页。
  2. 查询账户,即展示当前登陆成功的用户账户信息。
  3. 退出账户,回到主页。

5.存款、取款功能实现

  1. 存款功能

    • 存款后直接更新账户余额。
  2. 取款功能

    • 从自己的账户中取钱:
      ①判断是否有余额,如果为0,提示用户存钱。
      ②判断金额是否为100的整数倍。
      ③判断当此取款是否超过限额,是否超过余额。
  3. 存款和取款都是调用.getMoney()和.setMoney实现的

6.转账功能实现

  1. 转帐前需要判断:
    • 系统中是否有其他账户。
    • 自己账户中余额是否为0。
    • 输入对方卡号,判断该卡号是否存在。
    • 对方卡号存在,则认证姓氏。
    • 判断输入金额是否超过限额,是否超过余额。

7.销户功能实现

  1. 销户需求:
    • 若账户中有余额,拒绝销户。
    • 若没有余额,请用户输入密码,再次询问是否确定销户。

8.用户密码修改

  1. 修改密码的要求
    • 认证用户当前密码。
    • 让用户输入2次新密码。
    • 两次密码一样,则更新密码并回到主页。