博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ATM + 购物商城程序
阅读量:4308 次
发布时间:2019-06-06

本文共 27165 字,大约阅读时间需要 90 分钟。

模拟实现一个ATM + 购物商城程序

  1. 额度 15000或自定义

  2. 实现购物商城,买东西加入 购物车,调用信用卡接口结账

  3. 可以提现,手续费5%

  4. 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息

  5. 支持多账户登录

  6. 支持账户间转账

  7. 记录每月日常消费流水

  8. 提供还款接口

  9. ATM记录操作日志 

  10. 提供管理接口,包括添加账户、用户额度,冻结账户等。。。

  11. 用户认证用装饰器

# import time import datetime # time.time()   # 当前时间戳 # datetime.datetime.now() # 本地之间 # 数据处理===================================== # 全部用户数据 user_data = [] # 加载数据到内存 def load_data():     f = open("DB/user_db.txt","rt",encoding="utf-8")     for line in f:         line = line.strip("\n")         if line == "\n":continue         ls = line.split("|")         usr_dic = {"name":ls[0],                    "pwd":ls[1],                    "max": ls[2],                    "money": ls[3],                    "lock": ls[4]}         user_data.append(usr_dic)     f.close() # 根据账户名获取一个用户 def get_usr(name):     for usr in user_data:         if usr["name"] == name:             return usr # 将内存中的数据持久存储到文件中 def save_to_file():     f = open("DB/user_db.txt","wt",encoding="utf-8")     for usr in user_data:         text = "|".join(usr.values())         text += "\n"         f.write(text)     f.close() # 数据处理===================================== # 登录验证装饰器(闭包函数) (再不改变源代码的调用方式基础上 为这个函数添加新功能) def login_auth(func):     def wrapper(*args,**kwargs):         # 验证是否登陆过了         if current_usr == None:             print("请先登录!")             atm_login()             if current_usr:                 return func(*args,**kwargs)         else:             return func(*args,**kwargs)     return wrapper # 购物中心======================================== # 商品信息 products = [{"name":"挨粪叉","price":6888},             {"name":"锤子TNT","price":10888},             {"name":"小米mix2","price":2888}] # 购物车 car = {} # 购物 def shopping():     while True:     # 打印出所有商品信息         count = 1         for p in products:             print("序号:%-3s 名称:%-10s 价格:%-6s" % (count,p["name"],p["price"]))             count += 1         select = input("亲输入商品的序号q退出:\n")         if select == "q":             return         if select.isdigit() and int(select) >= 1 and int(select) <= len(products):             pd = products[int(select)-1]             print("%s已成功加入购物车!" % pd["name"])             # 判断商品是否已经存在于购物车             if pd["name"] in car:                 car[pd["name"]]["count"] += 1             else:                 car[pd["name"]] = {"price":pd["price"],"count":1}         else:             print("输入有误请重新输入!") # 查看购物车 def show_cars():     if not car:         s = input("你的购物车是空的! 你要买点什么吗? y/n")         if s == "y":             shopping()             return         else:             return     print("您的购物车信息:")     for p in car:         print("名称:%-10s 价格:%-8s 数量:%-3s 总价:%-10s" % (p,                                                      car[p]["price"],                                                      car[p]["count"],                                                      car[p]["price"] * car[p]["count"]))     select = input("输入y调整商品数量!(数量为0则删除商品!) 输入其他退出!")     if select == "y":         modify_count() # 调整购物车中的商品数量 def modify_count():     while True:         name = input("请输入商品名称q退出:\n")         if name == "q":             return         if name not in car:             print("输入不正确请重试!")             continue         while True:             count = input("输入调整后数量:\n")             if not count.isdigit():                 print("数量不正确 必须是整数!")                 continue             count = int(count)             if count == 0:                 car.pop(name)                 print("%s已删除" % name)                 return             else:                 car[name]["count"] = count                 print("修改成功!")                 return # 结算 @login_auth def pay_cars():     # 计算商品总价格     sum = 0     for p in car:         sum += car[p]["price"] * car[p]["count"]     print("您的订单总价为:%s元" % sum)     if paymoney(sum):         print("剁手成功! 回家等着吧!")         clear_cars() # 清空购物车 def clear_cars():     car.clear()     print("购物车已清空!") def shop_center():     shopfuncs = {"1":shopping,"2":show_cars,"3":pay_cars,"4":clear_cars}     while True:         print(""" 1.购物 2.查看购物车 3.结算 4.清空 q.退出""")         index = input("请选择:\n").strip()         if index == "q":             return         if index in shopfuncs:             shopfuncs[index]()         else:             print("输入不正确!请重试!") # 购物中心======================================== # ATM==================================================== # 用于保存登录成功的用户信息 current_usr = None # 日志装饰器. # 日志文件 atmlog_file = open("DB/log.txt","at",encoding="utf-8") # 用户流水文件 moneyflow = None def atm_logger(func):     def wrapper(*args,**kwargs):         res = func(*args,**kwargs)         # 记录日志         atmlog_file.write("[%s] user:%s function:%s\n" % (datetime.datetime.now(),current_usr["name"],func.__name__))         atmlog_file.flush() # 立即刷出缓存区的数据到硬盘 如果每次write都操作一次硬盘                             # 效率非常低 所以python内置了缓冲区  只有当缓冲区满了才会写入硬盘 一次来降低硬盘操作次数     return wrapper # 登录 def atm_login():     while True:         name = input("请输入账户名:(q退出)\n").strip()         # 手动记录日志 因为用户还没有登陆         atmlog_file.write("[%s] user:%s function:%s\n" % (datetime.datetime.now(), name, atm_login.__name__))         atmlog_file.flush()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         usr = get_usr(name)         if not usr:             print("用户名不存在!")             continue         pwd = input("请输入密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if name == usr["name"] and pwd == usr["pwd"]:             print("登录成功")             global current_usr,moneyflow             # 打开流水文件             moneyflow = open("DB/%s.txt" % name,"at",encoding="utf-8")             # 记录当前登录用户信息             current_usr = usr             return         else:             print("账户名或密码不正确!请重试!") #     提现 @login_auth @atm_logger def withdraw():     while True:         print("当前余额:%s元" % current_usr["money"])         money = input("请输入提款金额:(整数 q退出)\n")         if money == "q":return         if not money.isdigit():             print("输入有误!请重试!")             continue         money = int(money)         # 手续费         opt = money * 0.05         print("需要手续费%s元" % opt)         usr_moeny = float(current_usr["money"])         if money+opt > usr_moeny:             print("余额不足!很尴尬")             continue         current_usr["money"] = str(usr_moeny - money - opt)         save_to_file()         print("请提取你的钞票!")         moneyflow.write("[%s] 账户:%s 提现%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     current_usr["money"]))         moneyflow.flush()         return #     转账 @login_auth @atm_logger def transfer():     while True:         account = input("请输入对方的账户名:\n")         to_usr = get_usr(account)         if not to_usr:             print("账户不存在 请重新输入!")             continue         print("当前余额:%s元" % current_usr["money"])         money = input("请输入转账金额:(整数 q退出)\n")         if money == "q": return         money = str_to_num(money)         if not money:             print("输入有误!请重试!")             continue         usr_moeny = float(current_usr["money"])         if money  > usr_moeny:             print("余额不足!很尴尬")             continue         # 原始账户减去         current_usr["money"] = str(usr_moeny - money)         # 目标账户加上         to_usr["money"] = str(float(to_usr["money"]) + money)         save_to_file()         print("转账成功!")         moneyflow.write("[%s] 账户:%s 转账%s元 给%s 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     account,                                                     current_usr["money"]))         moneyflow.flush()         return # 将字符串转成数字 "11212101.s" def str_to_num(text):     if text.isdigit():         return int(text)     if "." in text:         ts = text.split(".")         if len(ts) == 2:             if ts[0].isdigit() and ts[1].isdigit():                 return float(text) #     还款 @login_auth @atm_logger def repayment():     print("您当前欠款:%s" % (str_to_num(current_usr["max"]) - str_to_num(current_usr["money"])))     while True:         print("repayment")         money = input("请输入还款金额!q退出:\n")         if money == "q":return         money = str_to_num(money)         if not money:             print("输入有误 请重试!")             continue         current_usr["money"] = str(str_to_num(current_usr["money"]) + money)         save_to_file()         print("还款成功!")         moneyflow.write("[%s] 账户:%s 还款%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     current_usr["money"]))         moneyflow.flush()         return # 结算 需要传入订单总价格 @login_auth @atm_logger def paymoney(price):     if price > str_to_num(current_usr["money"]):         print("额度不足!又尴尬了")     else:         current_usr["money"] = str(str_to_num(current_usr["money"]) - price)         save_to_file()         print("结算成功!")         moneyflow.write("[%s] 账户:%s 购物消费%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     price,                                                     current_usr["money"]))         moneyflow.flush()         return True def atm():     atm_funcs = {"1": atm_login, "2": withdraw, "3": transfer, "4": repayment}     while True:         print(""" 1.登录 2.提现 3.转账 4.还款 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             # 清空当前用户信息 关闭流水文件             global current_usr             if current_usr:                 current_usr = None                 moneyflow.close()             return         if index in atm_funcs:             atm_funcs[index]()         else:             print("输入有误请重试!") # ATM==================================================== # 管理员接口============================================= # 显示所有的用户信息 并从中选择一个用户 def show_users_and_select():     while True:         for usr in user_data:             print("%-10s %-10s %-10s %-2s" % (usr["name"],usr["max"],usr["money"],usr["lock"]))         select = input("请选择一个用户(输入用户名:q退出)\n")         if select == "q":             return         for u in user_data:             if select == u["name"]:                 return u         else:             print("输入不正确 请重新输入!") # 管理员登录 def admin_login():     while True:         name = input("请输入管理员账户名:(q退出)\n").strip()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         pwd = input("请输入管理员密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if name == "admin" and pwd == "123":             print("登录成功")             return True         else:             print("账户名或密码不正确!请重试!") #添加账户 def create_user():     while True:         name = input("请输入账户名:(q退出)\n").strip()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         # 获取用户 通过账户名         usr = get_usr(name)         if usr:             print("用户名已经存在,请重试!")             continue         pwd = input("请输入密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if pwd != input("请再次输入密码:").strip():             print("两次密码不相同请重试!")             continue         # 将用户输入的信息打包成字典 存到列表中         new_usr = {"name":name,"pwd":pwd,"max":"15000","money":"500","lock":"0"}         user_data.append(new_usr)         print("创建成功!")         # 持久化存储......         save_to_file()         return #调整额度 def modify_amount():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         return     while True:         # 输入新的额度         new_max = input("请输入新的额度:(q退出)\n").strip()         if new_max == "q":             return         if not new_max.isdigit():             print("输入不正确 请重新输入!")             continue         usr["max"] = new_max         save_to_file()         print("修改成功!")         return #冻结账户 def lock_user():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         print("取消操作!")         return     usr["lock"] = "1"     save_to_file()     print("冻结成功!") #解冻账户 def unlock_user():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         print("取消操作!")         return     usr["lock"] = "0"     save_to_file()     print("解冻成功!") # 管理员接口界面 def admin_view():     # 调用登录功能验证是否有权限执行操作     if not admin_login():         return     admin_funcs = {"1":create_user,"2":modify_amount,"3":lock_user,"4":unlock_user}     while True:         print(""" 1.添加账户 2.修改额度 3.冻结账户 4.解冻账户 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             return         if index in admin_funcs:             admin_funcs[index]()         else:             print("输入有误请重试!") # 管理员接口============================================= # 程序的入口函数 def run():     print("welcome to oldboy ATM system!")     # 将函数装到字典中 用序号作为key 方便判断     funcs = {"1": shop_center, "2": atm, "3": admin_view}     while True:         print(""" 1.购物中心 2.ATM 3.管理员接口 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             print("下次再见!")             return         if index in funcs:             funcs[index]()         else:             print("输入有误请重试!") # 启动系统 load_data() run() atmlog_file.close() # print(user_data) # print(str_to_num("100.s"))
# import time import datetime # time.time()   # 当前时间戳 # datetime.datetime.now() # 本地之间 # 数据处理===================================== # 全部用户数据 user_data = [] # 加载数据到内存 def load_data():     f = open("DB/user_db.txt","rt",encoding="utf-8")     for line in f:         line = line.strip("\n")         if line == "\n":continue         ls = line.split("|")         usr_dic = {"name":ls[0],                    "pwd":ls[1],                    "max": ls[2],                    "money": ls[3],                    "lock": ls[4]}         user_data.append(usr_dic)     f.close() # 根据账户名获取一个用户 def get_usr(name):     for usr in user_data:         if usr["name"] == name:             return usr # 将内存中的数据持久存储到文件中 def save_to_file():     f = open("DB/user_db.txt","wt",encoding="utf-8")     for usr in user_data:         text = "|".join(usr.values())         text += "\n"         f.write(text)     f.close() # 数据处理===================================== # 登录验证装饰器(闭包函数) (再不改变源代码的调用方式基础上 为这个函数添加新功能) def login_auth(func):     def wrapper(*args,**kwargs):         # 验证是否登陆过了         if current_usr == None:             print("请先登录!")             atm_login()             if current_usr:                 return func(*args,**kwargs)         else:             return func(*args,**kwargs)     return wrapper # 购物中心======================================== # 商品信息 products = [{"name":"挨粪叉","price":6888},             {"name":"锤子TNT","price":10888},             {"name":"小米mix2","price":2888}] # 购物车 car = {} # 购物 def shopping():     while True:     # 打印出所有商品信息         count = 1         for p in products:             print("序号:%-3s 名称:%-10s 价格:%-6s" % (count,p["name"],p["price"]))             count += 1         select = input("亲输入商品的序号q退出:\n")         if select == "q":             return         if select.isdigit() and int(select) >= 1 and int(select) <= len(products):             pd = products[int(select)-1]             print("%s已成功加入购物车!" % pd["name"])             # 判断商品是否已经存在于购物车             if pd["name"] in car:                 car[pd["name"]]["count"] += 1             else:                 car[pd["name"]] = {"price":pd["price"],"count":1}         else:             print("输入有误请重新输入!") # 查看购物车 def show_cars():     if not car:         s = input("你的购物车是空的! 你要买点什么吗? y/n")         if s == "y":             shopping()             return         else:             return     print("您的购物车信息:")     for p in car:         print("名称:%-10s 价格:%-8s 数量:%-3s 总价:%-10s" % (p,                                                      car[p]["price"],                                                      car[p]["count"],                                                      car[p]["price"] * car[p]["count"]))     select = input("输入y调整商品数量!(数量为0则删除商品!) 输入其他退出!")     if select == "y":         modify_count() # 调整购物车中的商品数量 def modify_count():     while True:         name = input("请输入商品名称q退出:\n")         if name == "q":             return         if name not in car:             print("输入不正确请重试!")             continue         while True:             count = input("输入调整后数量:\n")             if not count.isdigit():                 print("数量不正确 必须是整数!")                 continue             count = int(count)             if count == 0:                 car.pop(name)                 print("%s已删除" % name)                 return             else:                 car[name]["count"] = count                 print("修改成功!")                 return # 结算 @login_auth def pay_cars():     # 计算商品总价格     sum = 0     for p in car:         sum += car[p]["price"] * car[p]["count"]     print("您的订单总价为:%s元" % sum)     if paymoney(sum):         print("剁手成功! 回家等着吧!")         clear_cars() # 清空购物车 def clear_cars():     car.clear()     print("购物车已清空!") def shop_center():     shopfuncs = {"1":shopping,"2":show_cars,"3":pay_cars,"4":clear_cars}     while True:         print(""" 1.购物 2.查看购物车 3.结算 4.清空 q.退出""")         index = input("请选择:\n").strip()         if index == "q":             return         if index in shopfuncs:             shopfuncs[index]()         else:             print("输入不正确!请重试!") # 购物中心======================================== # ATM==================================================== # 用于保存登录成功的用户信息 current_usr = None # 日志装饰器. # 日志文件 atmlog_file = open("DB/log.txt","at",encoding="utf-8") # 用户流水文件 moneyflow = None def atm_logger(func):     def wrapper(*args,**kwargs):         res = func(*args,**kwargs)         # 记录日志         atmlog_file.write("[%s] user:%s function:%s\n" % (datetime.datetime.now(),current_usr["name"],func.__name__))         atmlog_file.flush() # 立即刷出缓存区的数据到硬盘 如果每次write都操作一次硬盘                             # 效率非常低 所以python内置了缓冲区  只有当缓冲区满了才会写入硬盘 一次来降低硬盘操作次数     return wrapper # 登录 def atm_login():     while True:         name = input("请输入账户名:(q退出)\n").strip()         # 手动记录日志 因为用户还没有登陆         atmlog_file.write("[%s] user:%s function:%s\n" % (datetime.datetime.now(), name, atm_login.__name__))         atmlog_file.flush()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         usr = get_usr(name)         if not usr:             print("用户名不存在!")             continue         pwd = input("请输入密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if name == usr["name"] and pwd == usr["pwd"]:             print("登录成功")             global current_usr,moneyflow             # 打开流水文件             moneyflow = open("DB/%s.txt" % name,"at",encoding="utf-8")             # 记录当前登录用户信息             current_usr = usr             return         else:             print("账户名或密码不正确!请重试!") #     提现 @login_auth @atm_logger def withdraw():     while True:         print("当前余额:%s元" % current_usr["money"])         money = input("请输入提款金额:(整数 q退出)\n")         if money == "q":return         if not money.isdigit():             print("输入有误!请重试!")             continue         money = int(money)         # 手续费         opt = money * 0.05         print("需要手续费%s元" % opt)         usr_moeny = float(current_usr["money"])         if money+opt > usr_moeny:             print("余额不足!很尴尬")             continue         current_usr["money"] = str(usr_moeny - money - opt)         save_to_file()         print("请提取你的钞票!")         moneyflow.write("[%s] 账户:%s 提现%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     current_usr["money"]))         moneyflow.flush()         return #     转账 @login_auth @atm_logger def transfer():     while True:         account = input("请输入对方的账户名:\n")         to_usr = get_usr(account)         if not to_usr:             print("账户不存在 请重新输入!")             continue         print("当前余额:%s元" % current_usr["money"])         money = input("请输入转账金额:(整数 q退出)\n")         if money == "q": return         money = str_to_num(money)         if not money:             print("输入有误!请重试!")             continue         usr_moeny = float(current_usr["money"])         if money  > usr_moeny:             print("余额不足!很尴尬")             continue         # 原始账户减去         current_usr["money"] = str(usr_moeny - money)         # 目标账户加上         to_usr["money"] = str(float(to_usr["money"]) + money)         save_to_file()         print("转账成功!")         moneyflow.write("[%s] 账户:%s 转账%s元 给%s 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     account,                                                     current_usr["money"]))         moneyflow.flush()         return # 将字符串转成数字 "11212101.s" def str_to_num(text):     if text.isdigit():         return int(text)     if "." in text:         ts = text.split(".")         if len(ts) == 2:             if ts[0].isdigit() and ts[1].isdigit():                 return float(text) #     还款 @login_auth @atm_logger def repayment():     print("您当前欠款:%s" % (str_to_num(current_usr["max"]) - str_to_num(current_usr["money"])))     while True:         print("repayment")         money = input("请输入还款金额!q退出:\n")         if money == "q":return         money = str_to_num(money)         if not money:             print("输入有误 请重试!")             continue         current_usr["money"] = str(str_to_num(current_usr["money"]) + money)         save_to_file()         print("还款成功!")         moneyflow.write("[%s] 账户:%s 还款%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     money,                                                     current_usr["money"]))         moneyflow.flush()         return # 结算 需要传入订单总价格 @login_auth @atm_logger def paymoney(price):     if price > str_to_num(current_usr["money"]):         print("额度不足!又尴尬了")     else:         current_usr["money"] = str(str_to_num(current_usr["money"]) - price)         save_to_file()         print("结算成功!")         moneyflow.write("[%s] 账户:%s 购物消费%s元 余额%s元\n" % (datetime.datetime.now(),                                                     current_usr["name"],                                                     price,                                                     current_usr["money"]))         moneyflow.flush()         return True def atm():     atm_funcs = {"1": atm_login, "2": withdraw, "3": transfer, "4": repayment}     while True:         print(""" 1.登录 2.提现 3.转账 4.还款 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             # 清空当前用户信息 关闭流水文件             global current_usr             if current_usr:                 current_usr = None                 moneyflow.close()             return         if index in atm_funcs:             atm_funcs[index]()         else:             print("输入有误请重试!") # ATM==================================================== # 管理员接口============================================= # 显示所有的用户信息 并从中选择一个用户 def show_users_and_select():     while True:         for usr in user_data:             print("%-10s %-10s %-10s %-2s" % (usr["name"],usr["max"],usr["money"],usr["lock"]))         select = input("请选择一个用户(输入用户名:q退出)\n")         if select == "q":             return         for u in user_data:             if select == u["name"]:                 return u         else:             print("输入不正确 请重新输入!") # 管理员登录 def admin_login():     while True:         name = input("请输入管理员账户名:(q退出)\n").strip()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         pwd = input("请输入管理员密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if name == "admin" and pwd == "123":             print("登录成功")             return True         else:             print("账户名或密码不正确!请重试!") #添加账户 def create_user():     while True:         name = input("请输入账户名:(q退出)\n").strip()         if name == "q":             return         if not name:             print("用户名不能为空!")             continue         # 获取用户 通过账户名         usr = get_usr(name)         if usr:             print("用户名已经存在,请重试!")             continue         pwd = input("请输入密码:\n").strip()         if not pwd:             print("密码不能为空!")             continue         if pwd != input("请再次输入密码:").strip():             print("两次密码不相同请重试!")             continue         # 将用户输入的信息打包成字典 存到列表中         new_usr = {"name":name,"pwd":pwd,"max":"15000","money":"500","lock":"0"}         user_data.append(new_usr)         print("创建成功!")         # 持久化存储......         save_to_file()         return #调整额度 def modify_amount():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         return     while True:         # 输入新的额度         new_max = input("请输入新的额度:(q退出)\n").strip()         if new_max == "q":             return         if not new_max.isdigit():             print("输入不正确 请重新输入!")             continue         usr["max"] = new_max         save_to_file()         print("修改成功!")         return #冻结账户 def lock_user():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         print("取消操作!")         return     usr["lock"] = "1"     save_to_file()     print("冻结成功!") #解冻账户 def unlock_user():     # 先选择一个用户     usr = show_users_and_select()     if not usr:         print("取消操作!")         return     usr["lock"] = "0"     save_to_file()     print("解冻成功!") # 管理员接口界面 def admin_view():     # 调用登录功能验证是否有权限执行操作     if not admin_login():         return     admin_funcs = {"1":create_user,"2":modify_amount,"3":lock_user,"4":unlock_user}     while True:         print(""" 1.添加账户 2.修改额度 3.冻结账户 4.解冻账户 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             return         if index in admin_funcs:             admin_funcs[index]()         else:             print("输入有误请重试!") # 管理员接口============================================= # 程序的入口函数 def run():     print("welcome to oldboy ATM system!")     # 将函数装到字典中 用序号作为key 方便判断     funcs = {"1": shop_center, "2": atm, "3": admin_view}     while True:         print(""" 1.购物中心 2.ATM 3.管理员接口 (q.退出!)""")         index = input("请选择:\n")         if index == "q":             print("下次再见!")             return         if index in funcs:             funcs[index]()         else:             print("输入有误请重试!") # 启动系统 load_data() run() atmlog_file.close() # print(user_data) # print(str_to_num("100.s")) # 只有程序时从当前文件开始运行时才进入if语句 # if __name__ == '__main__':
# 只有程序时从当前文件开始运行时才进入if语句 # if __name__ == '__main__':

转载于:https://www.cnblogs.com/hua-zhong/p/9768905.html

你可能感兴趣的文章
同步器之Exchanger
查看>>
IO流
查看>>
专家观点:即使在云中 硬件同样至关重要
查看>>
loadrunner11录制不成功解决方法(收集)
查看>>
jQuery 基础
查看>>
USE平台构件属性无法显示的一种解决办法
查看>>
Cannot open include file: jni.h: No such file or directory解决方法
查看>>
HDU-水饺基情 二维树状数组
查看>>
visual studio 安装Entity framework失败
查看>>
测试对bug如何分析和定位
查看>>
c/c++学习书籍
查看>>
python应用-爬取猫眼电影top100
查看>>
HC-05蓝牙模块基本使用
查看>>
phper必知必会之类库自动加载的七种方式(三)
查看>>
ansible模块介绍
查看>>
NOIP201307货车运输
查看>>
齐次坐标
查看>>
[SQLite]使用记录
查看>>
HttpRequest 类
查看>>
Qt使用信号与槽时出现的错误“Incompatible sender/receiver arguments”
查看>>