模拟实现一个ATM + 购物商城程序
- 额度 15000或自定义
- 实现购物商城,买东西加入 购物车,调用信用卡接口结账
- 可以提现,手续费5%
- 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息
- 支持多账户登录
- 支持账户间转账
- 记录每月日常消费流水
- 提供还款接口
- ATM记录操作日志
- 提供管理接口,包括添加账户、用户额度,冻结账户等。。。
- 用户认证用装饰器
逻辑流程图
2018-7-14
需求分析:
角色:
管理员功能:
增删改查
记录日志
基本信息
额度 15000
普通用户功能:
可以提现,手续费5%
支持多账户登录
支持账户间转账
记录每月日常消费流水
提供还款接口
ATM记录操作日志
程序结构:
程序结构: ATM |——README |——atm #ATM执行程序 | |——__init__.py | |——bin#ATM执行程序目录 | | |——__init__.py | | |——atm.py #ATM执行程序 | | |——manage.py #ATM管理端,未实现 | |——conf #配置文件 | | |——__init__.py | | |——setting.py | |——core #主要程序逻辑 都在这个目录里 | | |——__init__.py | | |——accounts.py #用于从文件里加载和存储账户数据 | | |——auth.py #用户认证模块 | | |——db_handler.py #数据库连接引擎 | | |——logger.py #日志记录模块 | | |——main.py #侏罗纪交互程序 | | |——transaction.py #记账、还钱、取钱等所有的与账户金额相关的操作 | |——db #用户数据存储的地方 | | |——__init__.py | | |——account_sample.py #生成一个初始的账户数据,把这个数据存成一个 以这个账户id | | |——account #存各个用户的账户数据,一个用户一个文件 | | | |——1234.json #一个用户账户示例文件 | |——log #日志记录 | | |——__init__.py | | |——access.log #用户访问和操作的相关日志 | | |——transactions.log #所有的交易日志 | |——shopping_mall #电子商城程序,需要单独实现 | |——__init__.py
估计这个程序会编很久。一脸懵逼的进来:
不过,万事开头难,先抄一下目录结构,查看一下,别人的作品:
db 包下面的文件夹 account 和账户示例文件是由代码生成。
1、先编一个简单的生成文件夹 account
代码如下:
1 #__author:Administrator 2 #date:2018/7/14 3 4 import os ,sys 5 import json 6 7 acc_dic={ 8 'id':1234, #卡号 9 'password':'abc', #密码 10 'credit':15000, #信用额度 11 'balance':15000, #余额度 12 'enroll_date':'2014-12-23', #注册时间 13 'expir_date':'2019-12-22', # 到期时间 14 'pay_day':22, 15 'status':0 #0 正常 1 锁卡 2 遗失 16 } 17 18 # print(sys.platform) #返回操作系统平台名称 19 # print(sys.version) #获取Python解释程序的版本信息 20 def zhanghao(string):#生成一个测试用的银行G个人用户信息 21 22 with open(r'account\%s.json'%acc_dic['id'],'w') as f: 23 json.dump(string,f) 24 25 26 def main(): 27 if sys.platform=='win32': 28 # print('这是Windows操作系统') 29 if os.path.isdir('account'):#判断当前目录,是否存在文件名为‘account’的文件夹 30 zhanghao(acc_dic) 31 else: 32 os.mkdir('account') # 如果文件夹不存在,则创建以一个新的文件夹 33 zhanghao(acc_dic) 34 else: 35 print('本软件暂不兼容Windows以外的操作系统,如需帮助,请联系开发人员') 36 37 def del_file():#如果需要初始化数据,删除已有的数据文件,可以运行该程序 38 print(os.listdir('account')) 39 for i in os.listdir('account'): 40 file=os.path.join('account',i) 41 os.remove(file) 42 43 if __name__=='__main__': 44 main() 45 # del_file()