要求:
1、额度 15000或自定义 2、实现购物商城,买东西加入 购物车,调用信用卡接口结账 3、可以提现,手续费5% 4、支持多账户登录 5、支持账户间转账 6、记录每月日常消费流水 7、提供还款接口 8、ATM记录操作日志 9、提供管理接口,包括添加账户、用户额度,冻结账户等。。。 10、用户认证用装饰器
流程图
代码:
优化代码,模块化
leco@leco:~/PycharmProjects/luxffy/homework/atm$ tree . . ├── ATM+购物车.bmp # 流程图 ├── bin │ ├── __init__.py │ └── start.py # 启动文件 ├── conf │ ├── __init__.py │ └── settings.py # 全局配置文件 ├── core │ ├── atm.py # 主文件 │ ├── common.py # 公共文件 │ ├── __init__.py │ ├── slog.py # 日志文件 │ └── sys_bill.py # 流水账文件 ├── log # 购物车,系统,atm,用户信息文件夹(默认不存在,运行时候初始化,相关文件) │ ├── atm.log # 根据时间记录atm操作 │ ├── shopping_car.log # 根据时间记录购物车操作 │ ├── system.log # 根据时间记录系统运行状态 │ └── user_info # 记录用户信息(账号,密码,额度,余额,锁定状态) └── readme # 程序说明文件
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import os import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # print(BASE_DIR) sys.path.append(BASE_DIR) #/home/leco/PycharmProjects/luxffy/homework/atm from core import atm if __name__ == "__main__": atm.main()
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import os root_info = { "username": "root", "password": "root", "quota": 15000, "balance": 15000, "lock": False } # 商品清单列表 product_list = [ {"name": "电脑", "price": 5000}, {"name": "鼠标", "price": 300}, {"name": "电视", "price": 2000}, {"name": "水果", "price": 800}, ] log_type = { "atm": "atm.log", "shopping_car": "shopping_car.log", "system": "system.log" } BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # data_name = "data" data_name = "log" data_path = os.path.join(BASE_DIR,data_name) # data_path = BASE_DIR + "/data" # 数据文件夹 # data_path = "data" account_file = "user_info" # 用户账户,密码,余额,额度,锁定状态文件 # account = data_path + "/" + account_file account = os.path.join(data_path, account_file) # 收费手续费 5% ratio = 0.05
#!/usr/bin/env python import os import shelve import sys from conf import settings from core import shel_file from core import slog from core import common from core import sys_bill account = settings.account data_path = settings.data_path ratio = settings.ratio sys_login_status = False # 用户登录了就把这个改成True sys_login_username = None # 全部变量记录谁登陆系统 shopping_car = {} def sys_login(func): """ :param func: 系统三次登录装饰器 :return: """ def inner(*args, **kwargs): all_username_passwd = shel_file.get_all_username_passwd_info(account) global sys_login_status, sys_login_username # 记录系统全局登陆状态和登陆用户 for count in range(3): if not sys_login_status: sys_login_username, input_password = common.login_input() if not sys_login_username: continue if sys_login_username in all_username_passwd: lock_statu = shel_file.get_user_info(account, sys_login_username)["lock"] if lock_statu: print("抱歉该账户 %s 被锁定,请联系管理员" % sys_login_username) sys_logger.error("抱歉该账户 %s 被锁定,请联系管理员" % sys_login_username) break if input_password == all_username_passwd[sys_login_username]: sys_login_status = True else: print("抱歉,密码错误") sys_logger.error("抱歉 %s,你输入的密码错误" % sys_login_username) else: print("抱歉,账号不存在") sys_logger.warning("抱歉 %s,账号不存在" % sys_login_username) if sys_login_status: func(*args, **kwargs) return inner def add_user(): """ :return: 创建用户信息 """ common.screen_clear() username, password = common.login_input() all_users_dic = shel_file.get_all_username_passwd_info(account) if username in all_users_dic: print("抱歉,该用户已经存在") sys_logger.warning("抱歉,该用户已经存在") else: new_user_info = { "username": username, "password": password, "quota": 15000, "balance": 15000, "lock": False } shel_file.save_user_info(account, username, new_user_info) print("新增用户 %s 创建成功" % username) sys_logger.info("新增用户 %s 创建成功" % username) common.show_person_data(username) def del_user(): count = 0 all_username_passwd = shel_file.get_all_username_passwd_info(account) while True: common.screen_clear() print("------------------------- 删除用户操作 -------------------------") print("当前系统登录用户是: ", sys_login_username) count += 1 username = input("请输入将要被删除的用户名: ").strip() if username == "root": print("抱歉,你不能删除自己,你是超级管理员啊") shopping_car_logger.warning("抱歉,你不能删除自己,你是超级管理员啊") break elif username in all_username_passwd: with shelve.open(account) as fd: del fd[username] print("用户 %s 已经被删除" % username) shopping_car_logger.info("用户 %s 已经被删除" % username) break elif count == 3: print("抱歉,输入次数过多,请稍后再试") shopping_car_logger.warning("抱歉,输入次数过多,请稍后再试") break elif username.lower() == "b": break else: print("抱歉,用户 %s 不存在" % username) shopping_car_logger.error("抱歉,用户 %s 不存在" % username) def show_users(): for username in shel_file.get_all_username_passwd_info(account): common.show_person_data(username) def modify_user_quota(): while True: common.screen_clear() print("------------------------- 用户额度被修改 -------------------------") print("当前系统登录用户是:", sys_login_username) if sys_login_username == "root": name = input("请输入要修改的用户: ") if name not in shel_file.get_all_username_passwd_info(account): print("抱歉,你输入的用户不存在") shopping_car_logger.warning("抱歉,你输入的用户不存在") break quota = input("请输入额度金额: ") if quota.isdigit(): tmp_user_info = shel_file.get_user_info(account, name) tmp_user_info["quota"] = quota shel_file.save_user_info(account, name, tmp_user_info) break else: print("抱歉,额度必须是数字") shopping_car_logger.warning("抱歉,额度必须是数字") def add_lock(lock_name, lock=True): """ :param lock_name: 锁定的账号名 :param lock: 默认锁定账户 :return: """ user_info = shel_file.get_user_info(account, lock_name) user_info["lock"] = True if lock else False shel_file.save_user_info(account, lock_name, user_info) def lock_user(): """ 通过当前系统账户 :return: """ all_users_dic = {} common.screen_clear() all_users_dic = shel_file.get_all_username_passwd_info(account) print("------------------------- 冻结账户 -------------------------") if sys_login_username != "root": user_info = shel_file.get_user_info(account, sys_login_username) user_info["lock"] = True shel_file.save_user_info(account, sys_login_username, user_info) print("用户 %s 已经被锁定,请联系管理员解冻账号" % sys_login_username) shopping_car_logger.info("用户 %s 已经被锁定,请联系管理员解冻账号" % sys_login_username) else: while True: lock_user = input("请输入需要被冻结的账号名<b|B 返回上一层>: ").strip() if lock_user == "root": print("抱歉,你不能冻结你自己,你是超级管理员啊") shopping_car_logger.warning("抱歉,你不能冻结你自己,你是超级管理员啊") break if lock_user in all_users_dic: add_lock(lock_user) print("用户 %s 已经被锁定" % lock_user) shopping_car_logger.info("用户 %s 已经被锁定" % lock_user) break elif lock_user.lower() == "b": break else: print("抱歉,你要冻结的账号 %s 不存在" % lock_user) shopping_car_logger.warning("抱歉,你要冻结的账号 %s 不存在" % lock_user) def unlock_user(): while True: common.screen_clear() all_users_dic = shel_file.get_all_username_passwd_info(account) print("------------------------- 解冻账户 -------------------------") lock_user = input("请输入需要被解冻的账号名<b|B 返回上一层>: ").strip() if lock_user in all_users_dic: add_lock(lock_user, lock=False) print("亲爱的用户 %s 你的账号已经被解冻" % lock_user) shopping_car_logger.info("亲爱的用户 %s 你的账号已经被解冻" % lock_user) break elif lock_user.lower() == "b": break else: print("抱歉,你要冻结的账号 %s 不存在" % lock_user) shopping_car_logger.warning("抱歉,你要冻结的账号 %s 不存在" % lock_user) def account_balance(): """ 通过用户名,打印其详细列表,包括余额 :return: None """ print("------------------------- 账户余额 -------------------------") user_info = shel_file.get_user_info(account, sys_login_username) msg = """ ------------ %s 用户信息 ------------ 用户 名: %s 余 额: %s """ % (user_info["username"], user_info["username"], user_info["balance"]) print(msg) @sys_login def shopping(): common.screen_clear() while True: product_list = settings.product_list user_info = shel_file.get_user_info(account, sys_login_username) balance, quota = user_info["balance"], user_info["quota"] # 当前用户余额,和信用卡剩余额度 print("\n------------------------- 购物 -------------------------") print("亲爱的用户 %s你好,你当前的余额 = %s 信用卡额度 = %s" % (sys_login_username, balance, quota)) for item, p in enumerate(product_list, 1): print("%s. %s 价格: %s" % (item, p['name'], p['price'])) select = input("请输入商品ID<b|B 返回>: ") if select.isdigit(): if 0 < int(select) < len(product_list) + 1: if int(balance) - product_list[int(select) - 1]["price"] > 0: # 剩余钱充足,不调用信用卡付款 print("--> 商品 <%s> 已经被添加到购物车" % product_list[int(select) - 1]["name"]) remain_money = int(balance) - product_list[int(select) - 1]["price"] print("亲爱的用户 %s你好,你当前的余额 = %s 信用卡额度 = %s" % (sys_login_username, remain_money, quota)) shopping_car_logger.info("--> 商品 <%s> 已经被添加到购物车" % product_list[int(select) - 1]["name"]) atm_logger.info("亲爱的用户 %s你好,你当前的余额 = %s 信用卡额度 = %s" % (sys_login_username, remain_money, quota)) user_info["balance"] = remain_money shel_file.save_user_info(account, sys_login_username, user_info) if product_list[int(select) - 1]["name"] in shopping_car: number = shopping_car[product_list[int(select) - 1]["name"]] shopping_car[product_list[int(select) - 1]["name"]] = (number + 1) else: shopping_car[product_list[int(select) - 1]["name"]] = 1 else: # 余额不足 print("你的额度不足,请充值") shopping_car_logger.warning("你的额度不足,请充值") else: print("抱歉,你输入的商品ID不存在") shopping_car_logger.warning("抱歉,你输入的商品ID不存在") elif select.lower() == "b": break else: print("抱歉,你输入的商品ID必须为整数") shopping_car_logger.warning("抱歉,你输入的商品ID必须为整数") @sys_login def recharge(): """ 为账户充值 :return: None """ while True: common.screen_clear() print("------------------------- 充值 -------------------------") tmp_user_info = shel_file.get_user_info(account, sys_login_username) print("亲爱的用户 %s你好,充值前余额 = %s " % (sys_login_username, tmp_user_info["balance"])) recharge_money = input("请输入充值金额: ") if recharge_money.isdigit(): tmp_user_info["balance"] += int(recharge_money) shel_file.save_user_info(account, sys_login_username, tmp_user_info) print("恭喜,%s 你账户已经成功充值 %s " % (sys_login_username, recharge_money)) print("亲爱的用户 %s 你好,充值后余额 = %s " % (sys_login_username, tmp_user_info["balance"])) atm_logger.info("恭喜,用户 %s你好,你的账户已经成功充值 %s " % (sys_login_username, recharge_money)) atm_logger.info("亲爱的用户 %s你好,充值后余额 = %s " % (sys_login_username, tmp_user_info["balance"])) break else: print("抱歉,充值金额必须是数字") atm_logger.warning("抱歉,充值金额必须是数字") @sys_login def shopping_car_manager(): common.screen_clear() if len(shopping_car): print(" 购物车清单 ".center(60, "-")) for k, v in shopping_car.items(): print("购买的商品: %s 购买数量: %s" % (k, v)) else: print("购物车空空如也,抓紧去购物吧") shopping_car_logger.info("购物车空空如也,抓紧去购物吧") @sys_login def settlement(): print("------------------------- 结算 -------------------------") print("功能暂时没开放") common.screen_clear() @sys_login def transfer_money(): all_users_dic = shel_file.get_all_username_passwd_info(account) tmp_user_info = shel_file.get_user_info(account, sys_login_username) current_money = tmp_user_info["balance"] common.screen_clear() while True: print("------------------------- 转账 -------------------------") print("当前系统登录用户是: ", sys_login_username) print("亲爱的用户 %s你好,汇款前您的余额 = %s" % (sys_login_username, current_money)) username = input("请输入收款人用户名<b|B 返回上一级>: ") if username in all_users_dic: if username == sys_login_username: print("抱歉亲爱的用户%s 你不能转账给自己" % sys_login_username) break money = input("请输入汇款金额<b|B 返回上一级>: ").strip() if money.isdigit(): if int(money) > current_money: print("抱歉,你的余额不足") atm_logger.warning("抱歉,你的余额不足") else: # 保存当前汇款方用户余额 tmp_user_info = shel_file.get_user_info(account, sys_login_username) tmp_user_info["balance"] = int(current_money) - int(money) shel_file.save_user_info(account, sys_login_username, tmp_user_info) # 保存接受方余额 tmp_user_info = shel_file.get_user_info(account, username) tmp_user_info["balance"] = int(money) + tmp_user_info["balance"] shel_file.save_user_info(account, username, tmp_user_info) print("亲爱的用户 %s你好,汇款后您的余额 = %s" % (sys_login_username, int(current_money) - int(money))) atm_logger.info("汇款方 %s,收款方 %s,汇款金额 %s" % (sys_login_username,username,money)) break elif money.lower() == "b": break else: print("抱歉,输入汇款金额必须是整数") atm_logger.warning("抱歉,输入汇款金额必须是整数") elif username.lower() == "b": break else: print("抱歉,收款人 %s 不存在" % username) atm_logger.warning("抱歉,收款人 %s 不存在" % username) @sys_login def cash_withdrawal(): balance = shel_file.get_user_info(account, sys_login_username)["balance"] while True: common.screen_clear() print("------------------------- 取现 -------------------------") print("亲爱的用户 %s你好,你当前的余额 = %s ,取现的手续费比例 = %s" % (sys_login_username, balance, ratio)) money = input("请输入取款金额<b|B 返回>: ").strip() if money.isdigit(): remain_money = balance - (1 + ratio) * int(money) if remain_money > 0: print("本次手续费是: %s ,取现后余额是: %s" % (int(money) * ratio, remain_money)) tmp_user_info = shel_file.get_user_info(account, sys_login_username) tmp_user_info["balance"] = remain_money shel_file.save_user_info(account, sys_login_username, tmp_user_info) break else: print("抱歉,你的余额不足,无法取现") atm_logger.warning("抱歉,你的余额不足,无法取现") break if money.lower() == "b": break else: print("抱歉,输入取款金额必须是整数") atm_logger.warning("抱歉,输入取款金额必须是整数") @sys_login def manage_user(): msg_root_user = """------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 """ msg_no_root_user = """------------------------- 管理用户操作说明 ------------------------- 5. 冻结账户 6. 账户余额 """ while True: print(msg_root_user) if sys_login_username == "root" else print(msg_no_root_user) select = input("请选择模式<q|Q 退出> <b|B 返回上一层>: ").strip().lower() if select.isdigit(): if sys_login_username == "root": root_account_manage_select.get(select)() if select in root_account_manage_select else print("输入的序号不存在") else: no_root_account_manage_select.get(select)() if select in no_root_account_manage_select else print("输入的序号不存在") elif select == "q": sys.exit() elif select == "b": break else: print("抱歉输入错误") @sys_login def user_bill(): while True: msg_bill = """------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 """ print(msg_bill) if sys_login_username != "root": print("抱歉,亲爱的用户 %s,你不是系统管理员你没有此权限,请使用管理员root用户登录查看" % sys_login_username) break select = input("请选择模式<q|Q 退出> <b|B 返回上一层>: ").strip().lower() if select.isdigit(): sys_bill.bill_select.get(select)() if select in sys_bill.bill_select else print("输入的序号不存在") elif select == "q": sys.exit() elif select == "b": break else: print("抱歉输入错误") common.screen_clear() user_select = { "1": shopping, # 购物环节 "2": recharge, # 充值环节 "3": shopping_car_manager, # 购物车管理环节 "4": settlement, # 结算环节 "5": transfer_money, # 转账环节 "6": cash_withdrawal, # 取现环节 "7": manage_user, # 管理用户环节 "8": user_bill, # 账单环节 } root_account_manage_select = { "1": add_user, # 新增用户 "2": del_user, # 删除用户 "3": show_users, # 查看所有用户 "4": modify_user_quota, # 修改用户额度 "5": lock_user, # 冻结用户 "6": account_balance, # 账户余额 "7": unlock_user, # 解锁结用户 } no_root_account_manage_select = { "4": modify_user_quota, # 修改用户额度 "5": lock_user, # 冻结用户 "6": account_balance, # 账户余额 } if not os.path.exists(settings.data_path): os.mkdir(settings.data_path) shopping_car_logger = slog.logger('shopping_car.log', "shopping_car") sys_logger = slog.logger('system.log', "system") atm_logger = slog.logger('atm.log', "atm") def main(): # 主函数 common.sys_login_info() # 系统登录提示信息 common.init_data() # 初始化超级管理员数据,并打印相关数据 sys_logger.info("系统重新启动") while True: common.sys_operation_info() # 操作提示 select = input('请选择模式<q|Q 退出>: ').strip().lower() if select.isdigit(): user_select.get(select)() if select in user_select else print("输入的序号不存在") elif select == "q": exit() else: print("请输入正确的序号") shopping_car_logger.warning("请输入正确的序号") if __name__ == "__main__": main()
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import os import sys from core import shel_file from conf import settings def init_data(): """ 初始化 超级管理员数据 :return: None """ msg = """--------------- 系统超级管理员账户初始化成功 --------------- 1. 账户: root 2. 密码: root 3. 余额: 15000 4. 额度: 15000 请妥善保管好信息""" if not os.path.exists(settings.data_path): os.mkdir(settings.data_path) if not os.path.exists(settings.account): shel_file.save_user_info(settings.account, "root", settings.root_info) print(msg) # 登录系统显示样式 def sys_login_info(): print(''.center(60, '-')) print('|', ''.center(56, ' '), '|') print('|', '欢迎来到购物广场'.center(48, ' '), '|') print('|', ''.center(56, ' '), '|') def sys_operation_info(): msg = """------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 """ print(msg) def show_person_data(username): """ 格式化输出用户信息 :param username: 用户名 :return: None """ user_info = shel_file.get_user_info(settings.account, username) msg = """ ------------ %s 用户信息 ------------ 用户 名: %s 密 码: %s 余 额: %s 额 度: %s 锁定状态: %s """ % (user_info["username"], user_info["username"], user_info["password"],\ user_info["balance"], user_info["quota"], user_info["lock"]) print(msg) def login_input(): """ 获取用户输入的账号和密码 :return: None """ user = input("请输入用户名: ").strip() passwd = input("请输入密码: ").strip() return user, passwd def screen_clear(): """ 清屏 :return: None """ os.system("clear") if sys.platform == "linux" else os.system("cls")
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import shelve def get_user_info(account, username): """ :param account: 存储用户账号,密码,额度,余额,锁定状态的文件 :param username: 用户名 :return: 返回字典内容为用户账号,密码,额度,余额,锁定状态 """ with shelve.open(account) as fd: ret = fd.get(username) return ret def get_all_username_passwd_info(account): """ 从存储用户账号,密码,额度,余额,锁定状态文件切出所有用户名和密码组成的键值对的字典 :param account: :return: 字典(用户名和对应的密码组成的键值对) """ all_users_dic = {} with shelve.open(account) as fd: all_users_list = list(fd.keys()) for username in all_users_list: all_users_dic[username] = fd[username]["password"] return all_users_dic def save_user_info(account, username, user_info): """ :param account: 存储用户账号文件 :param username: 用户账号 :param user_info: 账号相关(用户名,密码,余额,信用度,锁定状态) :return: """ with shelve.open(account) as fd: fd[username] = user_info
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import logging from conf import settings # # 日志记录 # def logger(logfilename, logfile): # logger_fh = logging.FileHandler(settings.data_path + "/" + logfilename) # logger_fh.setLevel(logging.INFO) # # formatter # formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - %(message)s') # # bind formatter to ch # logger_fh.setFormatter(formatter) # logger = logging.getLogger(logfile) # logger.setLevel(logging.DEBUG) # logger.addHandler(logger_fh) # return logger # 日志记录 def logger(logfilename, logfile): logger_fh = logging.FileHandler(settings.data_path + "/" + logfilename) logger_fh.setLevel(logging.INFO) logger_ch = logging.StreamHandler() logger_ch.setLevel(logging.INFO) # formatter formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - %(message)s') ch_formatter = logging.Formatter('%(message)s') # bind formatter to ch logger_fh.setFormatter(formatter) logger_ch.setFormatter(ch_formatter) logger = logging.getLogger(logfile) logger.setLevel(logging.DEBUG) logger.addHandler(logger_fh) # logger.addHandler(logger_ch) return logger
#!/usr/bin/env python # _*_ coding: utf-8 _*_ import os import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) #/home/leco/PycharmProjects/luxffy/homework/atm from conf import settings def display_file(file): if not os.path.exists(file): print("%s log is not exist" % file) else: if os.path.getsize(file) > 0: # 判断流水账单文件大小,若是0 就表示暂时还么有产生 with open(file,"r") as fd: for line in fd: print(line,end="") else: print("抱歉,此账单还没有流水") def shopping_car_bill(): display_file(os.path.join(settings.data_path, settings.log_type["shopping_car"])) def atm_bill(): display_file(os.path.join(settings.data_path, settings.log_type["atm"])) def system_bill(): display_file(os.path.join(settings.data_path,settings.log_type["system"])) bill_select = { "1": shopping_car_bill, # 购物流水清单 "2": atm_bill, # atm流水清单 "3": system_bill, # 系统流水清单 } if __name__ == "__main__": shopping_car_bill() atm_bill() system_bill()
终端测试
[BEGIN] 2018/1/31 14:12:13 leco@leco:~/PycharmProjects/luxffy/homework/atm$ tree . . ├── ATM+购物车.bmp ├── bin │?? ├── __init__.py │?? └── start.py ├── conf │?? ├── __init__.py │?? ├── __pycache__ │?? │?? ├── __init__.cpython-35.pyc │?? │?? └── settings.cpython-35.pyc │?? └── settings.py ├── core │?? ├── atm.py │?? ├── common.py │?? ├── __init__.py │?? ├── __pycache__ │?? │?? ├── atm.cpython-35.pyc │?? │?? ├── common.cpython-35.pyc │?? │?? ├── __init__.cpython-35.pyc │?? │?? ├── shel_file.cpython-35.pyc │?? │?? ├── slog.cpython-35.pyc │?? │?? └── sys_bill.cpython-35.pyc │?? ├── shel_file.py │?? ├── slog.py │?? └── sys_bill.py └── readme.md 5 directories, 20 files leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | --------------- 系统超级管理员账户初始化成功 --------------- 1. 账户: root 2. 密码: root 3. 余额: 15000 4. 额度: 15000 请妥善保管好信息 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 1 请输入用户名: root 请输入密码: root ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 15000 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: 1 --> 商品 <电脑> 已经被添加到购物车 亲爱的用户 root你好,你当前的余额 = 10000 信用卡额度 = 15000 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 10000 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: 2 --> 商品 <鼠标> 已经被添加到购物车 亲爱的用户 root你好,你当前的余额 = 9700 信用卡额度 = 15000 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 9700 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: 3 --> 商品 <电视> 已经被添加到购物车 亲爱的用户 root你好,你当前的余额 = 7700 信用卡额度 = 15000 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 7700 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: 4 --> 商品 <水果> 已经被添加到购物车 亲爱的用户 root你好,你当前的余额 = 6900 信用卡额度 = 15000 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 6900 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: 5 抱歉,你输入的商品ID不存在 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 6900 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: as 抱歉,你输入的商品ID必须为整数 ------------------------- 购物 ------------------------- 亲爱的用户 root你好,你当前的余额 = 6900 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 3 -------------------------- 购物车清单 --------------------------- 购买的商品: 电脑 购买数量: 1 购买的商品: 电视 购买数量: 1 购买的商品: 水果 购买数量: 1 购买的商品: 鼠标 购买数量: 1 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 2 ------------------------- 充值 ------------------------- 亲爱的用户 root你好,充值前余额 = 6900 请输入充值金额: 3100 恭喜,root 你账户已经成功充值 3100 亲爱的用户 root 你好,充值后余额 = 10000 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 1 请输入用户名: cc 请输入密码: cc 新增用户 cc 创建成功 ------------ cc 用户信息 ------------ 用户 名: cc 密 码: cc 余 额: 15000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 1 请输入用户名: cc 请输入密码: cc 抱歉,该用户已经存在 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 1 请输入用户名: cmz 请输入密码: cmz 新增用户 cmz 创建成功 ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 15000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 2 ------------------------- 删除用户操作 ------------------------- 当前系统登录用户是: root 请输入将要被删除的用户名: root 抱歉,你不能删除自己,你是超级管理员啊 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 2 ------------------------- 删除用户操作 ------------------------- 当前系统登录用户是: root 请输入将要被删除的用户名: cc 用户 cc 已经被删除 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 ------------ root 用户信息 ------------ 用户 名: root 密 码: root 余 额: 10000 额 度: 15000 锁定状态: False ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 15000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 4 ------------------------- 用户额度被修改 ------------------------- 当前系统登录用户是: root 请输入要修改的用户: root 请输入额度金额: 20000 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 ------------ root 用户信息 ------------ 用户 名: root 密 码: root 余 额: 10000 额 度: 20000 锁定状态: False ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 15000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 5 ------------------------- 冻结账户 ------------------------- 请输入需要被冻结的账号名<b|B 返回上一层>: leco 抱歉,你要冻结的账号 leco 不存在 请输入需要被冻结的账号名<b|B 返回上一层>: cmz 用户 cmz 已经被锁定 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 7 ------------------------- 解冻账户 ------------------------- 请输入需要被解冻的账号名<b|B 返回上一层>: leco 抱歉,你要冻结的账号 leco 不存在 ------------------------- 解冻账户 ------------------------- 请输入需要被解冻的账号名<b|B 返回上一层>: cmz 亲爱的用户 cmz 你的账号已经被解冻 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 6 ------------------------- 账户余额 ------------------------- ------------ root 用户信息 ------------ 用户 名: root 余 额: 10000 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 5 ------------------------- 转账 ------------------------- 当前系统登录用户是: root 亲爱的用户 root你好,汇款前您的余额 = 10000 请输入收款人用户名<b|B 返回上一级>: cc 抱歉,收款人 cc 不存在 ------------------------- 转账 ------------------------- 当前系统登录用户是: root 亲爱的用户 root你好,汇款前您的余额 = 10000 请输入收款人用户名<b|B 返回上一级>: leco 抱歉,收款人 leco 不存在 ------------------------- 转账 ------------------------- 当前系统登录用户是: root 亲爱的用户 root你好,汇款前您的余额 = 10000 请输入收款人用户名<b|B 返回上一级>: cmz 请输入汇款金额<b|B 返回上一级>: 5000 亲爱的用户 root你好,汇款后您的余额 = 5000 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 ------------ root 用户信息 ------------ 用户 名: root 密 码: root 余 额: 5000 额 度: 20000 锁定状态: False ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 20000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 7 ------------------------- 解冻账户 ------------------------- 请输入需要被解冻的账号名<b|B 返回上一层>: cmz 亲爱的用户 cmz 你的账号已经被解冻 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: cmz 请输入正确的序号 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 1 请输入用户名: cmz 请输入密码: cmz ------------------------- 购物 ------------------------- 亲爱的用户 cmz你好,你当前的余额 = 20000 信用卡额度 = 15000 1. 电脑 价格: 5000 2. 鼠标 价格: 300 3. 电视 价格: 2000 4. 水果 价格: 800 请输入商品ID<b|B 返回>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 请输入用户名: root 请输入密码: root ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 ------------ root 用户信息 ------------ 用户 名: root 密 码: root 余 额: 5000 额 度: 20000 锁定状态: False ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 20000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 6^\Quit (core dumped) leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 请输入用户名: root 请输入密码: root ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 5 ------------------------- 冻结账户 ------------------------- 请输入需要被冻结的账号名<b|B 返回上一层>: cmz 用户 cmz 已经被锁定 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 1 请输入用户名: cmz 请输入密码: cmz 抱歉该账户 cmz 被锁定,请联系管理员 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 8 请输入用户名: root 请输入密码: root ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 请选择模式<q|Q 退出> <b|B 返回上一层>: 1 2018-01-31 14:12:49,041 - shopping_car - atm.py - --> 商品 <电脑> 已经被添加到购物车 2018-01-31 14:12:49,579 - shopping_car - atm.py - --> 商品 <鼠标> 已经被添加到购物车 2018-01-31 14:12:50,088 - shopping_car - atm.py - --> 商品 <电视> 已经被添加到购物车 2018-01-31 14:12:50,789 - shopping_car - atm.py - --> 商品 <水果> 已经被添加到购物车 2018-01-31 14:12:51,418 - shopping_car - atm.py - 抱歉,你输入的商品ID不存在 2018-01-31 14:12:52,436 - shopping_car - atm.py - 抱歉,你输入的商品ID必须为整数 2018-01-31 14:13:33,720 - shopping_car - atm.py - 抱歉,你不能删除自己,你是超级管理员啊 2018-01-31 14:13:37,323 - shopping_car - atm.py - 用户 cc 已经被删除 2018-01-31 14:14:02,868 - shopping_car - atm.py - 抱歉,你要冻结的账号 leco 不存在 2018-01-31 14:14:10,775 - shopping_car - atm.py - 用户 cmz 已经被锁定 2018-01-31 14:14:17,144 - shopping_car - atm.py - 抱歉,你要冻结的账号 leco 不存在 2018-01-31 14:14:18,208 - shopping_car - atm.py - 亲爱的用户 cmz 你的账号已经被解冻 2018-01-31 14:15:27,865 - shopping_car - atm.py - 亲爱的用户 cmz 你的账号已经被解冻 2018-01-31 14:15:33,096 - shopping_car - atm.py - 请输入正确的序号 2018-01-31 14:16:21,409 - shopping_car - atm.py - 用户 cmz 已经被锁定 ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 请选择模式<q|Q 退出> <b|B 返回上一层>: 2 2018-01-31 14:12:49,041 - atm - atm.py - 亲爱的用户 root你好,你当前的余额 = 10000 信用卡额度 = 15000 2018-01-31 14:12:49,579 - atm - atm.py - 亲爱的用户 root你好,你当前的余额 = 9700 信用卡额度 = 15000 2018-01-31 14:12:50,089 - atm - atm.py - 亲爱的用户 root你好,你当前的余额 = 7700 信用卡额度 = 15000 2018-01-31 14:12:50,790 - atm - atm.py - 亲爱的用户 root你好,你当前的余额 = 6900 信用卡额度 = 15000 2018-01-31 14:13:03,436 - atm - atm.py - 恭喜,用户 root你好,你的账户已经成功充值 3100 2018-01-31 14:13:03,436 - atm - atm.py - 亲爱的用户 root你好,充值后余额 = 10000 2018-01-31 14:15:00,781 - atm - atm.py - 抱歉,收款人 cc 不存在 2018-01-31 14:15:02,235 - atm - atm.py - 抱歉,收款人 leco 不存在 2018-01-31 14:15:06,831 - atm - atm.py - 汇款方 root,收款方 cmz,汇款金额 5000 ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 2018-01-31 14:12:40,802 - system - atm.py - 系统重新启动 2018-01-31 14:13:17,703 - system - atm.py - 新增用户 cc 创建成功 2018-01-31 14:13:22,467 - system - atm.py - 抱歉,该用户已经存在 2018-01-31 14:13:28,041 - system - atm.py - 新增用户 cmz 创建成功 2018-01-31 14:15:31,104 - system - atm.py - 系统重新启动 2018-01-31 14:15:51,322 - system - atm.py - 系统重新启动 2018-01-31 14:16:10,239 - system - atm.py - 系统重新启动 2018-01-31 14:16:23,875 - system - atm.py - 系统重新启动 2018-01-31 14:16:26,887 - system - atm.py - 抱歉该账户 cmz 被锁定,请联系管理员 ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 请选择模式<q|Q 退出> <b|B 返回上一层>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 7 ------------------------- 解冻账户 ------------------------- 请输入需要被解冻的账号名<b|B 返回上一层>: cmz 亲爱的用户 cmz 你的账号已经被解冻 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 请输入用户名: cmz 请输入密码: cmz ------------------------- 管理用户操作说明 ------------------------- 5. 冻结账户 6. 账户余额 请选择模式<q|Q 退出> <b|B 返回上一层>: 6 ------------------------- 账户余额 ------------------------- ------------ cmz 用户信息 ------------ 用户 名: cmz 余 额: 20000 ------------------------- 管理用户操作说明 ------------------------- 5. 冻结账户 6. 账户余额 请选择模式<q|Q 退出> <b|B 返回上一层>: 5 ------------------------- 冻结账户 ------------------------- 用户 cmz 已经被锁定,请联系管理员解冻账号 ------------------------- 管理用户操作说明 ------------------------- 5. 冻结账户 6. 账户余额 请选择模式<q|Q 退出> <b|B 返回上一层>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 1 请输入用户名: cmz 请输入密码: cmz 抱歉该账户 cmz 被锁定,请联系管理员 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 请输入用户名: root 请输入密码: root ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 7 ------------------------- 解冻账户 ------------------------- 请输入需要被解冻的账号名<b|B 返回上一层>: cmz 亲爱的用户 cmz 你的账号已经被解冻 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 8 请输入用户名: cmz 请输入密码: cmz ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 抱歉,亲爱的用户 cmz,你不是系统管理员你没有此权限,请使用管理员root用户登录查看 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 8 ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 抱歉,亲爱的用户 cmz,你不是系统管理员你没有此权限,请使用管理员root用户登录查看 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 8 ------------------------- 查看流水账 ------------------------- 1. 购物流水清单 2. atm流水清单 3. 系统流水清单 抱歉,亲爱的用户 cmz,你不是系统管理员你没有此权限,请使用管理员root用户登录查看 ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: q leco@leco:~/PycharmProjects/luxffy/homework/atm$ leco@leco:~/PycharmProjects/luxffy/homework/atm$ python3 bin/start.py ------------------------------------------------------------ | | | 欢迎来到购物广场 | | | ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 5 请输入用户名: root 请输入密码: root ------------------------- 转账 ------------------------- 当前系统登录用户是: root 亲爱的用户 root你好,汇款前您的余额 = 5000 请输入收款人用户名<b|B 返回上一级>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: 7 ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: 3 ------------ root 用户信息 ------------ 用户 名: root 密 码: root 余 额: 5000 额 度: 20000 锁定状态: False ------------ cmz 用户信息 ------------ 用户 名: cmz 密 码: cmz 余 额: 20000 额 度: 15000 锁定状态: False ------------------------- 管理用户操作说明 ------------------------- 1. 新增用户 2. 删除用户 3. 查看所有用户 4. 修改用户额度 5. 冻结账户 6. 账户余额 7. 解锁账户 请选择模式<q|Q 退出> <b|B 返回上一层>: b ------------------------- 操作说明 ------------------------- 1. 购物 2. 充值 3. 查看购物车 4. 保留 5. 转账 6. 取现 7. 管理用户 8. 流水账 请选择模式<q|Q 退出>: q