zoukankan      html  css  js  c++  java
  • 函数基础实战之ATM和购物车系统

    函数基础实战之ATM和购物车系统

    一、系统功能

    1. 用户名和密码存放于文件中,格式为:randy|123456
    2. 启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
    3. 允许用户根据商品编号购买商品
    4. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    5. 可随时退出,退出时,打印已购买商品和余额

    [
    ['Iphone7', 5800],
    ['Coffee', 30],
    ['疙瘩汤', 10],
    ['Python Book', 99],
    ['Bike', 199],
    ['ViVo X9', 2499],
    ]

    二、逻辑代码实现

    user_dic = {'username': None}
    user_goods_dic = dict()
    money = [0]
    
    
    def login():
        """登录模块"""
        print("欢迎来到登录界面!")
    
        user_name = input("请输入用户名:").strip()
        user_pwd = input("请输入密码:").strip()
        user_info = f'{user_name}:{user_pwd}'
        # 实现登录验证
    
        with open('user_info', 'r', encoding='utf-8') as fr:
            data = fr.read()
            data_list = data.split("
    ")
            if user_info in data_list:
                print("登录成功!你可以去购物啦!")
                user_dic["username"] = user_name
            else:
                print("账号或密码错误!")
    
    
    def register():
        """注册模块"""
        if not user_dic['username']:
            print("欢迎来到注册页面!")
    
            user_name = input("请输入用户名:").strip()
            user_pwd = input("请输入密码:").strip()
    
            # 实现注册
            with open('user_info', 'a', encoding='utf-8') as fa:
                fa.write(f'{user_name}:{user_pwd}
    ')
                print('注册成功!')
        else:
            print("你已经登录了!")
    
    
    def get_goods():
        """获取商品"""
        with open('shopping', 'r', encoding='utf-8') as fr:
            googs = fr.read()
            googs_list = eval(googs)
        return googs_list
    
    
    def shopping():
        """购物模块"""
    
        if user_dic['username']:
            print("欢迎来到购物界面!")
    
            global user_goods_dic
    
            googs_list = get_goods()
    
            while True:
                for i, em in enumerate(googs_list):
                    print(f"商品编号:{i}  {em}")
    
                googs_choice = input("请输入商品编号(输入q退出):").strip()
    
                if googs_choice == 'q':
                    break
    
                googs_choice = int(googs_choice)
                # 通过列表索引保存数据
                googs_res = googs_list[googs_choice]
                googs_name = googs_res[0]
                googs_price = googs_res[1]
    
                # 将用户商品加入购物车
                if googs_name in user_goods_dic:
                    user_goods_dic[googs_name] += 1
                else:
                    user_goods_dic[googs_name] = 1
                print(f'你选择的商品{googs_name}加入购物车')
                money[0] += googs_price
    
            print(f"购物车商品为{user_goods_dic} 共花费了{money[0]}元")
    
        else:
            print("你没有登录!请先登录!")
    
    
    def shopping_car():
        """购物车模块"""
    
        if len(user_goods_dic) > 0:
            print("欢迎来到购物车界面!")
    
            # 是否删除购物车
            while True:
                print(f"购物车商品为{user_goods_dic} 共花费了{money[0]}元")
                shoop_choice = input("请问需要删除哪个商品并输入商品名,不需要删除请按q退出: ")
    
                if shoop_choice == 'q':
                    break
    
                user_goods_dic[shoop_choice] -= 1
                googs_list = get_goods()
    
                # 减掉价格
                for googs in googs_list:
                    money[0] -= googs[1]
        else:
            print("购物车为空,快去购买!")
    
    def pay():
        """支付模块"""
        if money[0] != 0:
            print("欢迎来到支付界面")
            print(f"购物车商品为{user_goods_dic} 共花费了{money[0]}元")
            confirm_choice = input("是否需要支付(Y/y),不支付会清空购物车(N/n):").lower()
    
            # 判断是否购买
            if confirm_choice == 'y':
                print(f'购买商品为{user_goods_dic} 共花费了{money[0]}元')
                print("正在准备发货,请耐心等待!")
            elif confirm_choice == 'n':
                user_goods_dic.clear()
                money[0] = 0
                print('取消成功!祝你购物愉快!')
            else:
                print('输入不合法!')
        else:
            print('你还没有购物呢!')
    
    func_msc = """
    [1] 登录
    [2] 注册
    [3] 购物
    [4] 购物车
    [5] 支付
    [q] 退出
    """
    
    func_dict = {
        "1": login,
        "2": register,
        "3": shopping,
        "4": shopping_car,
        "5": pay
    }
    
    
    def func_mian():
        while True:
    
            print(func_msc)
            func_choice = input("请选择功能(输入q退出):").strip()
    
            if not func_choice.isdigit() or len(func_choice)>1:
                print("请输入正确数值!")
                continue
    
            # 退出主程序
            if func_choice == 'q':
                break
    
            func_dict[func_choice]()
    
    
    if __name__ == "__main__":
        # 主程序
        func_mian()
    
    
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    [LeetCode] 67. 二进制求和
    [LeetCode] 66. 加一
    [LeetCode] 65. 有效数字
    [LeetCode] 63. 不同路径 II
    [LeetCode] 64. 最小路径和
    [LeetCode] 61. 旋转链表
    [LeetCode] 62. 不同路径
    [LeetCode] 59. 螺旋矩阵 II
    [LeetCode] 60. 第k个排列
    [LeetCode] 58. 最后一个单词的长度
  • 原文地址:https://www.cnblogs.com/randysun/p/12240472.html
Copyright © 2011-2022 走看看