ATM 项目

ATM 系统项目说明文档

运用基础阶段所学的 Python 知识,来模拟出银行的 ATM 系统。 要求:使用面向对象编程来完成这个项目

ATM 系统的主要功能:

  1. 注册:用户名,手机号,身份证号(18 位),密码(两次确认,长度 6 位)
  2. 查询:账号必须存在,密码(3 次机会,不对就锁卡)
  3. 取款:账号必须存在,密码(3 次机会,不对就锁卡),取款金额不能大于存款
  4. 存款:账号必须存在,存款金额不能低于 0 元
  5. 转账:您的账户,转款账户都必须存在,密码(3 次机会,不对就锁卡),转账金额不能超过余额
  6. 锁卡:账号必须存在,可以使用密码冻结,还可以使用身份证号冻结
  7. 解卡:账号必须存在,只能使用身份证号进行解锁
  8. 补卡:使用身份证进行补卡,每个身份证只能有一张卡,之前的卡作废
  9. 改密:原密码进行改密,也可以使用身份证进行改密
  10. 退出:保存数据

项目分析

根据需求进行分析,思考如何对项目进行设计和架构

思考问题一:如何使用面向对象编程思想来完成

当前的项目功能和项目演示中,有几个对象?

银行卡对象: Card 存储银行卡信息

  • 卡号: cardid
  • 密码: password
  • 余额: money
  • 是否锁卡: islock

用户对象: Person 存储用户信息

  • 用户名: name
  • 身份证号: userid
  • 手机号: phone
  • 卡号: card

控制器对象: Controller 具体的操作控制类

控制器对象中主要就是去实现 ATM 这个系统中的操作 在上面定义的呐十个方法

  • 注册:register
  • 查询:query
  • 取款:get_money
  • 存款:add_money
  • 转账:save_money
  • 锁卡:lock
  • 解卡:unlock
  • 补卡:new_card
  • 改密:change_pwd
  • 退出:save

视图对象:Views 显示操作界面

欢迎界面,操作界面

思考问题二:如何存储数据

肯定是用文件进行存储

  • 卡号:用户 ===> user_dict ===> user.txt
  • 身份证:卡号 ===> user_id_dict ===> userid.txt

项目基本结构搭建

ATM

项目说明文档

项目基本功能

当前的 ATM 系统模拟实现银行 ATM 机的操作系统功能

  • 注册:register
  • 查询:query
  • 取款:get_money
  • 存款:add_money
  • 转账:save_money
  • 锁卡:lock
  • 解卡:unlock
  • 补卡:new_card
  • 改密:change_pwd
  • 退出:save

项目基本结构

1
2
3
4
5
6
7
8
9
10
11
12
├── ATM/                        # 项目目录
│ ├── README.md # 项目文档
│ ├── databases/ # 数据存储目录
│ │ ├── user.txt # 卡号
│ │ └── userid.txt # 身份证
│ ├── main.py # 程序单入口文件
│ └── packages/ # 包
│ ├── __init__.py
│ ├── cardclass.py # 银行卡类
│ ├── controllerclass.py # 操作控制类
│ ├── personclass.py # 用户类
│ └── viewsclass.py # 视图显示类

运行环境

  • 系统:windows、Mac OS、Linux
  • 版本:python3.5+
  • 其他:无

迭代计划

  • 增加银行操作日志
  • 将数据存储更改为数据库 MySQL

详细内容见代码

https://github.com/BlockZachary/Python_oop/tree/master/ATM

更新: 2024-01-10 22:46:43
原文: https://www.yuque.com/zacharyblock/cx2om6/ozwmftr5d8430maz