作业题目: 模拟实现一个ATM + 购物商城程序
1、额度 15000或自定义 2、实现购物商城,买东西加入 购物车,调用信用卡接口结账 3、可以提现,手续费5% 4、支持多账户登录 5、支持账户间转账 6、记录每月日常消费流水 7、提供还款接口 8、ATM记录操作日志 9、提供管理接口,包括添加账户、用户额度,冻结账户等。。。 10、用户认证用装饰器
流程图:

作业:ATM


代码目录结构图:

atm
│ ATM.pdf
│ main_server.py --  程序入口
│ README
│ __init__.py


├─config
│ │ setting.py ---- 配置文件
│ │ __init__.py
│ │
│ └─__pycache__
│ setting.cpython-36.pyc
│ __init__.cpython-36.pyc

├─core
│ │ admin.py -- 后台管理
│ │ ATM_operation.py --- ATM操作
│ │ auth.py --- 账户验证
│ │ db_handler.py --- 文件操作
│ │ loggers.py --- 日志
│ │ main.py ---主程序入口
│ │ make.py ---  交易中心
│ │ shopping.py --- 购物商城
│ │ __init__.py
│ │
│ └─__pycache__
│ admin.cpython-36.pyc
│ ATM_operation.cpython-36.pyc
│ auth.cpython-36.pyc
│ db_handler.cpython-36.pyc
│ loggers.cpython-36.pyc
│ main.cpython-36.pyc
│ make.cpython-36.pyc
│ shopping.cpython-36.pyc
│ __init__.cpython-36.pyc



├─db
│ │ __init__.py
│ │
│ └─accounts --- 账户文件
│ 12.json
│ 123.json
│ 1234.json
│ 14.json
│ admin.json
│ __init__.py

├─log
│ │ access.log --- 普通用户操作日志
│ │ admin.log --- 管理员操作日志
│ │ shopping.log ---- 消费日志
│ │ transaction.log ---- 交易日志
│ │ __init__.py
│ │
│ └─__pycache__
│ __init__.cpython-36.pyc

└─shopp
│ __init__.py

└─__pycache__
__init__.cpython-36.pyc

 

main_server.py --  程序入口

1 import os,sys
2 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
3 sys.path.append(BASE_DIR)
4 if __name__ == '__main__':
5     from core import main
6     main.entrance()

main.py ---主程序入口

 1 from .auth import authentication
 2 from .loggers import logger_log
 3 from.ATM_operation import with_draw
 4 from .ATM_operation import transfer
 5 from .ATM_operation import pay_back
 6 from .ATM_operation import view_account_info
 7 from .shopping import shoppings
 8 from .admin import admin_load
 9 from .db_handler import load_account
10 from .db_handler import save_db
11 
12 access_logger = logger_log('access')
13 transaction_logger = logger_log('transaction')
14 
15 
16 info = [
17         ('查看账户信息',view_account_info),
18         ('转账',transfer),
19         ('还款',pay_back),
20         ('取现',with_draw),
21         ('购物商城',shoppings),
22         ('后台管理',admin_load)
23     ]
24 
25 def conroller(use_boj):
26     '功能分发器'
27     while True:
28         for i,v in enumerate(info):
29             print(i,v[0])
30         choice = input('请输入您的选择:').strip()
31         if not choice:continue
32         if choice.isdigit():
33             choice = int(choice)
34             if choice < len(info) and choice >= 0:
35                 info[choice][1](use_boj,transaction_logger=transaction_logger,access_logger=access_logger)
36 def entrance():
37     '程序入口'
38     user_obj = {
39         'is_authentication':False,
40         'data':None
41     }
42     retry_count = 0
43     while user_obj['is_authentication'] is not True:
44         account = input('请输入账号:').strip()
45         password = input('请输入密码:').strip()
46         auth_data = authentication(account,password)
47         if  auth_data:
48             user_obj['is_authentication'] = True
49             user_obj['data'] = auth_data
50             print('欢迎登陆'.center(50,'*'))
51             access_logger.info('%s已登陆'%user_obj['data']['id'])
52             conroller(user_obj)
53         else:
54             print('账号密码错误!')
55         retry_count += 1
56         if retry_count == 3:
57             msg = '用户%s已登陆3失败'%account
58             access_logger.error(msg)
59 
60             break
View Code

相关文章:

  • 2021-11-19
  • 2022-12-23
  • 2022-02-16
  • 2022-12-23
  • 2022-12-23
  • 2021-08-22
  • 2021-06-05
猜你喜欢
  • 2022-01-09
  • 2022-12-23
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2022-01-23
相关资源
相似解决方案