ATM程序规范练习
发布时间:2020-12-14 03:50:38 所属栏目:大数据 来源:网络整理
导读:? ATM购物车程序(练习) ------------README 作者:飞乐版本:示例版本 v0. 1 程序介绍: 实现ATM常用功能 功能全部用python的基础知识实现,用到了timeossysopen函数模块知识,主要帮给大家一个简单的模块化编程的示例 注意:只实现了 " 认证 " , " 注册 "
? ATM购物车程序(练习)------------README 作者:飞乐 版本:示例版本 v0.1 程序介绍: 实现ATM常用功能 功能全部用python的基础知识实现,用到了timeossysopen函数模块知识,主要帮给大家一个简单的模块化编程的示例 注意:只实现了"认证","注册","购物"和"支付"功能 程序结构: ATM--/ ├——─ README ├── atm #ATM主程目录 │?? ├── __init__.py │?? ├── bin #ATM 执行文件 目录 │?? │?? ├── __init__.py │?? │?? ├── start.py #ATM 执行程序 │?? │?? └── manage.py #ATM 管理端,未实现 │?? ├── conf #配置文件 │?? │?? ├── __init__.py │?? │?? └── settings.py #文本配置 │?? ├── core #主要程序逻辑都 在这个目录 里 │?? │?? ├── __init__.py │?? │?? ├── auth.py #用户认证模块 │?? │?? ├── shop.py #购物商城 │?? │?? ├── register.py #用户注册模块 │?? │?? ├── src.py #主逻辑交互程序 │?? ├── db #用户数据存储的地方 │?? │?? ├── __init__.py │?? │?? ├── db.py #生成一个临时的账户数据 │?? │?? └── error_db.py #账户锁定文本 │?? ├── lib #公共程序 │?? │?? ├── __init__.py │?? │?? ├── common.py #临时获取的用户信息 │?? └── log #日志目录 │?? ├── __init__.py └── ── ├── access.log #用户访问和操作的相关日志 ATM -------bin目录 start.py 1 import sys,os 2 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) 3 sys.path.append(BASE_DIR) 4 5 from core import src 6 src.run() ? -------conf目录 settings.py 1 import os 2 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) 3 DB_PATH=r‘%sdbdb.txt‘%BASE_DIR#用户注册信息路径 4 ER_PATH=r‘%sdberror_db.txt‘%BASE_DIR#锁定账户的信息路径 -------core目录 auth.py 1 import sys,os 2 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) 3 sys.path.append(BASE_DIR) 4 from lib import common #导入读取到的用户信息 5 from conf import settings #导入配置模块获取文本路径,用于锁定账户写入文本 6 7 8 def outter(func): 9 def inner(*args,**kwargs): 10 user_info_dic = common.user_info() 11 while True: 12 if len(user_info_dic) == 0: 13 print(‘请先注册‘) 14 break 15 if common.current_user[‘username‘]: 16 print(‘用户已登录‘) 17 res = func(*args,**kwargs) 18 return res 19 20 uname=input(‘用户名>>:‘).strip() 21 if uname==‘q‘:break 22 if uname not in user_info_dic: 23 print(‘用户不存在。。。‘) 24 continue 25 26 if uname in common.user_error_info(): 27 print(‘此账户已被锁定‘) 28 continue 29 30 if user_info_dic[uname][‘status‘]>2: 31 with open(settings.ER_PATH,‘a‘,encoding=‘utf-8‘)as f: 32 f.write(‘%s|‘%uname) 33 user_info_dic[uname][‘status‘]=0 34 print(‘尝试次数过多,账户已被锁定‘) 35 continue 36 37 pwd=input(‘密码>>:‘).strip() 38 if pwd==‘q‘:break 39 if pwd==user_info_dic[uname][‘password‘]: 40 print(‘欢迎 %s 登录成功‘%uname) 41 common.current_user[‘username‘]=uname#将用户名存入临时字典内 42 common.current_user[‘balance‘]=int(user_info_dic[uname][‘balance‘])#将价格信息转成int存入字典内,用于购物运算 43 res=func(*args,**kwargs) 44 return res 45 else: 46 print(‘密码错误‘) 47 user_info_dic[uname][‘status‘] +=1 48 return inner 49 50 51 @outter 52 def auth1(): 53 pass ? register.py 1 import sys,os 2 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) 3 sys.path.append(BASE_DIR) 4 from conf import settings 5 6 def get_uname(): 7 while True: 8 uname=input(‘请输入用户名>>:‘).strip() 9 if not uname.isalpha(): 10 print(‘输入不合法‘) 11 continue 12 with open(settings.DB_PATH,‘r‘,encoding=‘utf-8‘)as f: 13 for line in f:#如果break没有运行,则运行else 14 line=line.strip(‘n‘).split(‘,‘) 15 if uname==line[0]: 16 print(‘用户已存在‘) 17 break 18 else: 19 return uname 20 def get_pwd(): 21 while True: 22 pwd1=input(‘请输入密码>>:‘).strip() 23 if not len(pwd1) > 0: 24 print(‘输入不能为空‘) 25 continue 26 pwd2=input(‘请再次输入密码>>:‘).strip() 27 if pwd1==pwd2: 28 return pwd1 29 else: 30 print(‘两次输入密码不一致,请重新输入‘) 31 def get_bal(): 32 while True: 33 bal=input(‘请输入金额>>:‘).strip() 34 if bal.isdigit(): 35 return bal 36 else: 37 print(‘输入非法‘) 38 def uinfo_write(uname,pwd,bal): 39 with open(settings.DB_PATH,encoding=‘utf-8‘)as f: 40 f.write(‘%s,%s,%sn‘%(uname,bal)) 41 print(‘注册成功‘) 42 43 #用户注册执行入口 44 def registe(): 45 print(‘ |