# ATM-Simulation-System
湖南大学(HNU)数据库系统课程大作业 ATM系统 前端基于Python的PyQt5,后端基于MySQL。这是一项小组设计项目,本人负责了MySQL的全部后端设计和大部分的前端编写。
> 本项目参考了@Er-Jia 的[PyQt5--ATM](https://github.com/Er-Jia/PyQt5--ATM),在此致谢。
## 项目功能
项目功能基本参照了老师提供的参考题目功能需求:
> - 系统需要有确认用户(系统检验客户个人账户是否与客户的账户上记载的账户一致)功能,账户要有密码保护功能,只有输入相应的密码才可以进入该账户,登陆界面中密码框须使用‘*’保护。
> - 用户登录后,进入服务选择界面,浏览各种服务,选择所需要的服务。服务包括(取款,存款,查询余额,转账,修改密码).
> - 取款:
> - 进入取款后选择账户类型(活期账户,定期账户,信用卡帐户),选好账户类型后,提示该ATM机一次能取款的最大金额-2000元,该用户的一个帐户(用户可能有多个帐户)一天取款累计的最大金额为5000。
> - 用户选择“取款”后,选取系统界面上的固定金额(500,1000,1500,2000),或是输入要取的金额,进行取款。
> - 若是取款金额大于余额,提示余额不足;若是所取金额大于ATM机一次能取款的最大金额2000,给出提示,重新输入取款金额或是选择退卡;若是一天所取累计金额大于该帐户一天取款累计金额(5000)的限制,给出提示信息,重新输入取款金额或是选择退卡。
> - 信用卡帐户可透支取款,透支额为2000元,其他帐户不允许透支取款。
取款后,给出提示选择退卡或是继续服务。
定期账户取款,如定期账户没有到期,一次取款交易收取手续费10元,从余额中扣除;活期账户取款,如当月取款交易数累计不大于5次(<=5),无交易手续费,如超过5次,一次取款交易收取手续费2元,从余额中扣除;信用卡帐户取款,业务规则无(不用实现)完成后用户可选择退卡或是继续选择服务。
> - 存款:(不要实现,提供菜单选项即可)
> - 查询余额:
> - 选择帐户后,进入查询余额后,显示界面信息包括如下:
> - 显示账户信息
> 显示实际余额
> - 显示可取款数额(5000减去当天已取款数)
> - 完成后用户可选择退卡或是继续选择服务
> - 转账:
> - 进入转账后,(用下拉框,给出该客户所有帐户)用户选择转帐帐户源(该客户的一个帐户),及转帐目标账户(该客户的另一个帐户),以及转帐数额如转帐数额大于该帐户余额,给出提示信息,要求用户重新输入转帐数额;
> - 转账服务按所转账的1%收取手续费,从余额中扣除,(若是余额不足,转账服务取消),转账一次的金额不能超过1万元;
> - 完成后用户可选择退卡或是继续选择服务;
> - 转帐交易包括两个交易事务,即从一帐户中取款和另一帐户中取款,这两个交易事务(Transaction)信息须记录到数据库。
> - 修改密码:
> - 进入修改密码选项,提示输入老密码,新密码,再次输入新密码进行确认修改,修改密码完成后选择退卡或是继续服务。
> - 查询历史事务(Transactions)记录:
> - 进入查询历史交易选项,交易指取款、转帐、汇入帐户款等,应提供不同查询条件(例如最近的交易、近一个月交易,过去一年交易等),查询结果应包括交易类型、发生时间、数额)。
> - 其他:
> - 所有发生的交易(Transaction),包括取款、转帐交易中取款和存入的交易事务,须记录到数据库(提示:包括1。帐,号2。交易类型-取款或存款,3。数额, 4。时间-年月日小时分钟)。
**一些功能的细节做了调整,详情见后端设计文档**
## 设计原理
### 后端设计原理
数据库关系模式设计图如下:
![](./img/E-R.png)
建立名为atm的数据库,在库内建立6个基本表,各个表之间通过外键联系。
本项目后端没有显式的服务端封装,即不是传统的(客户端<->服务端<->数据库端)的模式,这带来了安全性相关的问题,如果在前端直接登录具有权限的账户执行select,insert,update等语句,那么如果前端软件遭到破坏后将会造成数据库管理权限的外泄,造成数据库入侵,带来威胁。
经过讨论,我们决定以数据库账户和权限为切入点,借由存储过程,模拟后端的接口封装。前端连接到数据库端的子账户仅能调用注册,登录,存取款等存储过程,实现更加细化的功能权限,而没有对任何基本表的通用增删改查权限。从而在一定程度上解决了软件被破坏数据库账号泄露等问题下的安全性问题。按照实验设计需求,数据库参考功能要求,共设置有8个存储过程。
MySQL数据库建表过程、存储过程功能接口设计说明见[后端设计报告](%E5%90%8E%E7%AB%AF%E8%AE%BE%E8%AE%A1%E6%8A%A5%E5%91%8A.pdf)
### 前端设计原理
参考项目[PyQt5--ATM](https://github.com/Er-Jia/PyQt5--ATM)
## 运行展示
| 界面种类 | 界面样式 | 具体功能 |
| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 初始界面 | <img src="./img/image-20220523181632275.png" alt="image-20220523181632275" style="zoom: 50%;" /> | 打开程序的初始界面。退出:退卡;开户:增加一个用户;登录:登录为已有用户。 |
| 注册界面 | <img src="./img/image-20220523185456552.png" alt="image-20220523185456552" style="zoom:50%;" /> | 注册新的用户。需要姓名、身份证号(区别唯一)、密码。密码使用密文输入。 |
| 登录界面 | <img src="./img/image-20220523185614661.png" alt="image-20220523185614661" style="zoom:50%;" /> | 进行登录,卡号为系统自动生成、给出,密码为开户时自行给出。密码使用密文输入。 |
| 账户选择界面 | <img src="./img/image-20220523181909853.png" alt="image-20220523181909853" style="zoom:50%;" /> | 对账户进行选择,不同种类账户对账户操作要求不同。 |
| 服务选择界面 | <img src="./img/image-20220523182112036.png" alt="image-20220523182112036" style="zoom:50%;" /> | 六种要求的服务与退卡选择。选择或完成服务后可选择回到此界面或直接退卡。 |
| 转账界面 | <img src="./img/image-20220523182235196.png" alt="image-20220523182235196" style="zoom:50%;" /> | 默认以当前选择的账户作为转出账户,需确定转入账号的卡号和类型进行转账。 |
| 查询界面 | <img src="./img/image-20220523183438633.png" alt="image-20220523183438633" style="zoom:50%;" /> | 前端从数据库中获取信息并进行显示。 |
| 交易记录界面 | <img src="./img/image-20220523183550619.png" alt="image-20220523183550619" style="zoom:50%;" /> | 三种查询方式,交易记录内容包括交易时间、交易类型、发起人或接收方、发起人或接收方类型、变动金额、余额、交易备注。 |
| 取款界面 | <img src="./img/image-20220523183756806.png" alt="image-20220523183756806" style="zoom:50%;" /><img src="./img/image-20220523183843034.png" alt="image-20220523183843034" style="zoom:50%;" /> | 取款必须整取,可定义具体取款金额。 |
| 存款界面 | <img src="./img/image-20220523184859955.png" alt="image-20220523184859955" style="zoom:50%;" /><img src="./img/image-2022
没有合适的资源?快使用搜索试试~ 我知道了~
湖南大学(HNU)数据库系统课程大作业 ATM系统 前端基于Python的PyQt5,后端基于MySQL.zip
共69个文件
png:30个
py:17个
ui:14个
0 下载量 94 浏览量
2024-08-28
13:09:02
上传
评论
收藏 5.39MB ZIP 举报
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:项目具体内容可查看/点击本页面下方的*资源详情*,包含完整源码+工程文件+说明(若有)等。【若无VIP,此资源可私信获取】 【本人专注IT领域】:有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为您提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发出更多功能 #注 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担 2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答
资源推荐
资源详情
资源评论
收起资源包目录
湖南大学(HNU)数据库系统课程大作业 ATM系统 前端基于Python的PyQt5,后端基于MySQL.zip (69个子文件)
PythonDS937
ATM-pyQT5
func.py 5KB
cashAccount.py 6KB
main.spec 1KB
signup.py 7KB
cash1.ui 6KB
signup.ui 8KB
card_out.py 5KB
main.py 23KB
atm.py 8KB
atm.ui 8KB
pwchange.py 6KB
login.ui 6KB
card_out.ui 5KB
deposit.ui 9KB
pwchange.ui 7KB
cash1.py 6KB
transfer.ui 7KB
deposit1.ui 6KB
record.py 11KB
hnu_rc.py 2.87MB
transfer.py 7KB
back.png 712KB
inquiry.ui 9KB
requirements.txt 226B
manager.py 5KB
hnu.qrc 82B
record.ui 11KB
inquiry.py 9KB
cash.py 8KB
cashAccount.ui 6KB
login.py 5KB
deposit.py 8KB
manager.ui 5KB
deposit1.py 6KB
logo.ico 75KB
cash.ui 8KB
.gitattributes 66B
后端设计报告.pdf 641KB
img
image-20220523181513416.png 140KB
image-20220523181704735.png 139KB
image-20220523200659887.png 17KB
E-R.png 259KB
image-20220523181909853.png 147KB
image-20220523185456552.png 140KB
image-20220523181218583.png 149KB
image-20220523185349690.png 156KB
image-20220523183843034.png 142KB
image-20220523200312313.png 23KB
image-20220523200218264.png 13KB
image-20220523185614661.png 138KB
image-20220523181632275.png 146KB
image-20220523183756806.png 142KB
image-20220523201659420.png 9KB
image-20220523182226158.png 139KB
image-20220523184859955.png 136KB
image-20220523185451825.png 140KB
image-20220523182112036.png 139KB
image-20220523182235196.png 139KB
image-20220523184911320.png 143KB
image-20220523200424222.png 14KB
image-20220523202451716.png 6KB
image-20220523183550619.png 83KB
image-20220523202337788.png 7KB
image-20220523181842204.png 12KB
image-20220523200343228.png 22KB
image-20220523185322549.png 132KB
image-20220523183438633.png 153KB
atm.sql 30KB
README.md 10KB
共 69 条
- 1
资源评论
热爱技术。
- 粉丝: 2665
- 资源: 7860
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功