第五次作业

from interface import user_interface from interface import bank_interface from interface import shoping_interface from lib import common from interface import admin_interface import datetime user_info = { 'user': None } def register(): while True: print("---注册---") user_name = input('请输入用户名:').strip() passwd = input('请输入密码:').strip() passwd_d = input('确认密码:').strip() # 接口 flat = user_interface.check_user_interface(user_name) if flat: print('用户已存在,重新输入!') continue elif passwd == passwd_d: # 接口 user_interface.register_inerface(user_name, passwd) print('注册成功!') break def login(): while True: print("---登录---") user = input('输入用户名:').strip() passwd = input('输入密码:').strip() flag, msg = user_interface.login_interface(user, passwd) if flag: print(msg) user_info['user'] = user break else: print(msg) break @common.outter def transfer(): while True: print("---转账---") to_name = input('输入转账目标用户:') to_user = user_interface.check_user_interface(to_name) if to_user: money = input('请输入转账金额:').strip() if money.isdigit(): money = int(money) flaw, msg = bank_interface.transfer_interface(to_name, money, user_info['user']) if flaw: print(msg) break else: print(msg) break else: print('输入不正确!!') continue else: print('用户不存在,重新输入!') continue @common.outter def check_balance(): print("---查询余额---") bank_interface.select_money(user_info['user']) @common.outter def repayment(): print("---还款---") money = input('输入还款金额:').strip() if money.isdigit(): money = int(money) bank_interface.repayment_interface(user_info['user'], money) else: print('输入不正确!') @common.outter def withdraw_money(): print("---取款---") money = input('输入取款金额:').strip() if money.isdigit(): money = int(money) if money >= 0: bank_interface.withdraw_interface(user_info['user'], money) else: print('必须大于0') else: print("输入不正确!") @common.outter def view_pipelining(): print("---查看流水---") bank_interface.see_worter_interface(user_info['user']) @common.outter def shopping(): # 购买过的商品 pay_list = [] num_money = 0 while True: print("---购物---") shopping_list = [ ['鞋子', 999], ['卫衣', 999], ['袜子', 99], ['T恤', 299], ['短裤', 199], ['奔驰', 5000000], ['奇瑞', 1000000] ] # 打印商品列表 for index, i in enumerate(shopping_list): print(index, i) print('q.退出 w.结账 e.查看已选商品') choice = input('请快速配置你的装备:').strip() if choice == 'q': break elif choice == 'w': yes = input('是否结账?y/n:') if yes == 'y': # 调用接口结账 bank_interface.payment(num_money, user_info['user']) # 调用接口保存购买商品 shoping_interface.save_car(pay_list, user_info['user']) break elif yes == 'n': continue elif choice == 'e': print('---已选商品---') for index, i in enumerate(pay_list): print(index, i) continue # 1.判断输入是否为数字 if not choice.isdigit(): print('输入不合法!!!你还有两次机会') continue # 2.输入的为字符串,转成int数字型 choice = int(choice) # 3.判断选择是否再范围内 if 0 <= choice <= len(shopping_list): name, money = shopping_list[choice] # 4.添加到已选商品 now_time = datetime.datetime.today() now_time = str(now_time) # 时间处理操作 2019-11-21 18:45:18.803910 处理为2019-11-21 18:45:18 now_time = now_time[0:19] # 添加时间 shopping_list[choice].append(now_time) pay_list.append(shopping_list[choice]) # 计价 num_money += money print('添加成功') continue else: print('请选择正确的范围!!!') continue @common.outter def shopping_cat(): while True: print("---查看购买商品---") shoping_interface.select_car(user_info['user']) break def admin(): while True: print(''' 1:冻结用户 2:解冻用户 q:退出 ''') dict = { '1': lock, '2': unlock } choice = input('请输入你的功能:').strip() if choice == 'q': break elif not choice.isdigit(): print('请输入数字!!') continue elif choice in dict: dict[choice]() else: print("你的输入有误,重新输入!!!") continue def lock(): print('---冻结用户---') user_name = input('请输入你要冻结的用户名:').strip() yes = input('确认冻结该用户? y/n:') if yes == 'y': res = admin_interface.lock_interface(user_name) print(res) elif yes == 'n': print('已取消冻结!') else: print('输入有误,重新输入!') def unlock(): print('---解冻用户---') user_name = input('请输入你要解冻的用户名:').strip() yes = input('确认解冻该用户? y/n:') if yes == 'y': res = admin_interface.unlock_interface(user_name) print(res) elif yes == 'n': print('已取消解冻!') else: print('输入有误,重新输入!') def run(): while True: print(''' 1.注册 2.登录 3.转账 4.查询余额 5.还款 6.取款 7.查看流水 8.购物 9.查看购买商品 10.管理员 q.注销 ''') list_dic = { '1': register, '2': login, '3': transfer, '4': check_balance, '5': repayment, '6': withdraw_money, '7': view_pipelining, '8': shopping, '9': shopping_cat, '10': admin } choice = input('前选择功能编号:').strip() if choice == 'q': break elif choice in list_dic: list_dic.get(choice)() else: print('选择功能有误,请重新输入:') continue

from db import db_hander import datetime # 转账接口 def transfer_interface(to_name, money, user): to_user_dict = db_hander.select_user(to_name) user_dict = db_hander.select_user(user) if to_name != user: # 判断转账的钱是否大于余额 if 0 <= money <= user_dict['balance']: # 加减钱的操作 user_dict['balance'] -= money to_user_dict['balance'] += money # 拼接 my = user_dict['balance'] to = to_user_dict['balance'] time = datetime.datetime.today() msg = f'【{user}】用户给【{to_name}】用户转账【{money}】元,当前余额【{my}】元 {time}' flg = f'【{to_name}】用户给收到【{user}】用户转账【{money}】元,当前余额【{to}】元 {time}' # 添加到流水信息 user_dict['worter'].append(msg) to_user_dict['worter'].append(flg) # 保存数据 db_hander.save(user_dict) db_hander.save(to_user_dict) return True, msg else: msg = '余额不足' return False, msg else: return False, '不允许给自己账户转账!' # 查看余额 def select_money(user): user_dict = db_hander.select_user(user) money = user_dict['balance'] return print('当前余额为【%s】元' % money) # 还款接口 def repayment_interface(user, money): user_dict = db_hander.select_user(user) # 加钱操作 user_dict['balance'] += money a = user_dict['balance'] time = datetime.datetime.today() msg = f'【{user}】用户还款【{money}】元成功,当前余额【{a}】元 {time}' # 添加到流水信息 user_dict['worter'].append(msg) # 保存更新 db_hander.save(user_dict) return print(msg) # 取款接口 def withdraw_interface(user, money): while True: user_dict = db_hander.select_user(user) # 判断余额是否足够 if money <= user_dict['balance']*1.05: # 减钱操作,手续费 money_s = money*0.05 user_dict['balance'] -= money*1.05 a = user_dict['balance'] time = datetime.datetime.today() msg = f'【{user}】用户取款【{money}】元成功,手续费5%【{money_s}】元,当前余额【{a}】元 {time}' # 添加到流水信息 user_dict['worter'].append(msg) # 保存更新 db_hander.save(user_dict) return print(msg) else: print('余额不足!!') break # 查看流水 def see_worter_interface(user): user_dict = db_hander.select_user(user) worter = user_dict['worter'] for i in worter: print(i) # 结账接口 def payment(num_money,user): while True: user_dict = db_hander.select_user(user) if num_money <= user_dict['balance']: # 减钱的操作 user_dict['balance'] -= num_money a = user_dict['balance'] time = datetime.datetime.today() msg = f'【{user}】用户购买商品成功,消费【{num_money}】元,当前余额【{a}】元 {time}' # 记录流水 user_dict['worter'].append(msg) # 保存信息 db_hander.save(user_dict) print(msg) break else: print('余额不足,请充值!!!') break

from db import db_hander # 保存购物车 def save_car(shopping_list, user): user_dict = db_hander.select_user(user) # 添加到字典 user_dict['shop_car'].append(shopping_list) # 保存 db_hander.save(user_dict) # 查看购物车 def select_car(user): user_dict = db_hander.select_user(user) car_list = user_dict['shop_car'] # for index, i in enumerate(car_list): # print(index, i) for line in car_list: for index, i in enumerate(line): print(index, i)

from db import db_hander from lib import common # 查看用户是否存在接口,存在返回Turn和字典,不存在返回False def check_user_interface(user): user_dict = db_hander.select_user(user) if user_dict: return user_dict else: return False # 注册接口 def register_inerface(user, passwd): # 调用接口,加密 pwd = common.get_md5(passwd) # 把用户所有信息做成一个字典,然后调用接口保存 user_dict = { 'user': user, 'pwd': pwd, 'balance': 10000, 'worter': [], 'shop_car': [], 'lock': True } db_hander.save(user_dict) return f'{user_dict["user"]}用户注册成功!' # 登录接口 def login_interface(user, passwd): user_dict = db_hander.select_user(user) passwd = common.get_md5(passwd) # 如果用户存在 if user_dict: # 如果用户没有被锁 if user_dict['lock'] == True: # 如果密码正确 if passwd == user_dict['pwd']: return True, '登录成功!' else: return False, '用户名或密码不正确,重新输入!' else: return False, '用户已被解冻,请联系管理员!' else: return False, '用户名或密码不正确,重新输入!'
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 想让你多爱自己一些的开源计时器
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析