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

  1. 额度 15000或自定义

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

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

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

  5. 支持多账户登录

  6. 支持账户间转账

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

  8. 提供还款接口

  9. ATM记录操作日志

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

  11. 用户认证用装饰器

# import timeimport 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_authdef 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_loggerdef 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_loggerdef 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_loggerdef 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_loggerdef 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.ATM3.管理员接口(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 timeimport 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_authdef 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_loggerdef 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_loggerdef 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_loggerdef 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_loggerdef 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.ATM3.管理员接口(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

ATM + 购物商城程序相关推荐

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

    需求:模拟实现一个ATM+购物商城程序1.额度1500或者自定义2.实现购物商城,买东西加入购物车,调用信用卡接口3.可以提现,手续费5%4.支持账户登录5.支持账户间转账6.记录每日日常消费流水7. ...

  2. python模拟砍价代码_Python__模拟实现一个ATM+购物商城程序

    1 #Author wangmengzhu 2 ''' 3 用户认证,确认是用户登录,判断用户登录的用户名和密码是否正确,判断用户认证的长度是否为0,使用装饰器4 用户登录认证,信用卡登录认证,管理员 ...

  3. python模拟ATM + 购物商城

    模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 ...

  4. java网上商城学年论文_基于java框架的网上购物商城程序(毕业设计)+论文

    这是一份网上购物商城程序毕业设计开发语言是java,数据库是mysql 摘 要 随着现在社会信息化的高度发展,中国的互联网迎来了新一轮的发展高潮,人们选择上网的方式更加多样化了,同时网上购物作为电子商 ...

  5. [附源码]计算机毕业设计Python蛋糕购物商城(程序+源码+LW文档)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  6. python ATM购物程序

    需求: 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...

  7. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  8. python atm作业详解_Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM:指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用 ...

  9. 微信小程序购物商城系统开发系列-工具篇

    微信小程序购物商城系统开发系列-工具篇 微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操 ...

最新文章

  1. 大唐电信JAVA笔试题面试题
  2. 基于python + tushare 的股票盯盘脚本
  3. 【密码学】一万字带您走进密码学的世界(下)
  4. CompletableFuture并行异步处理类使用示例
  5. iptables之iptables命令详解
  6. HTML5_0 笔记
  7. es6 --- Promise.catch
  8. Android service 小研究
  9. 数据结构学习笔记之一 链表
  10. Java讲课笔记17:Lambda表达式
  11. centos 6.8 mysql 5.6_Mysql(5.6.35)在Linux(Centos 6.8)上安装
  12. Flutter - 底部导航详解与案例示范
  13. C# struct 性能损失
  14. 【算法模板】链表篇—(附牛客习题)
  15. 【高等数学】弧微分、渐近线、曲率和曲率半径
  16. Mozilla5.0的含义
  17. 提高 Python 代码的可读性,你需要知道这10个技巧
  18. Linux面试基础知识--汇总
  19. QPixmap存在的坑,内存泄漏
  20. It's not allowed to load an initial chunk on demand.问题处理

热门文章

  1. 线程池的种类,区别和使用场景
  2. 二叉搜索树的插入与删除图解
  3. 订餐系统之Excel批量导入
  4. asp.net与JAVASCRIPT函数的相互调用
  5. 使用VS2005进行负载测试
  6. echarts 多次通过setOption改变图形数据时 数据有时不进行变化
  7. javascript设计模式系列 - LukeLin - 博客园
  8. $nextTick 源码
  9. c++ --- 字符串中的标点符号
  10. JDK5.0新特性之:泛型