python-面对过程项目实战-购物系统

03-25 1200阅读

python-面对过程项目实战-购物系统

项目功能:

func_dict = {

‘0’: register,

‘1’: login,

‘2’: shopping,

‘3’: shopping_car,

‘4’: check

}

# 存储系统用户信息的文件
f_userinfo = '/home/xy/y-python-study/python进阶实战/试验'
# 存储当前购买者的信息
cur_userinfo_dict = dict()
# 存储购物车中的商品信息
shopping_car_dict = dict()
# 购买商品总价
goods_price_total = 0
# 返回输入的用户名和密码
def inp_username_pwd():
    username = input("请输入您的用户名>>>")
    user_pwd = input("请输入您的密码>>>")
    return username, user_pwd
# 用于读取系统用户信息
def reads_file(filename):
    """读取文件"""
    with open(filename, 'r', encoding='utf8') as fr:
        data_list = fr.readlines()
    return data_list
# 用于向系统文件中追加用户信息
def save_file_a(filename, content):
    with open(filename, 'a', encoding='utf8') as fa:
        fa.write(content)
    return True
# 用户注册:要先判断用户输入是否和已有信息重复
def register():
    """注册"""
    print("\033[1;31;40m欢迎使用注册功能\033[0m")
    while True:
        username, user_pwd = inp_username_pwd()
        # 判断用户名是否已经存在
        userinfo_data_list = reads_file(f_userinfo)
        for userinfo in userinfo_data_list:
            user_list = userinfo.strip().split(":")
            f_username = user_list[0]
            if username == f_username:
                print("该用户名已存在,请您重新注册!")
                break
        else:
            # 将用户信息存入信息表
            save_file_a(f_userinfo, f"{username}:{user_pwd}:15000:0\n")
            print("注册成功!!!")
            break
def login():
    """登录,账号密码错误三次后退出"""
    print("\033[1;31;40m欢迎使用登陆功能\033[0m")
    count = 0
    while count >>")
        if good_choice == 'q':
            break
        if good_choice not in goods_dict:
            print('您输入的商品不在商品列表中,请您重新输入!!!')
            continue
        good_num_choice = input("请输入您需要购买的该商品数量")
        if good_num_choice == 'q':
            break
        if not good_num_choice.isdigit():
            print("你数学体育老师教的吧!")
        good_num_choice_int = int(good_num_choice)
        # type(shopping_goods)=tuple
        shopping_goods = goods_dict[good_choice]
        print(f"你购买的{shopping_goods} {good_num_choice_int}已加入购物车,请进入购物车结算")
        if not shopping_car_dict.get(good_choice):
            shopping_car_dict[goods_dict[good_choice]] = good_num_choice_int
        else:
            shopping_car_dict[goods_dict[good_choice]] += good_num_choice_int
@login_deco
def shopping_car():
    """购物车"""
    print("\033[1;31;40m欢迎使用购物车功能\033[0m")
    global goods_price_total
    while True:
        # 打印购物车信息+计算总价
        print('你购物车中有如下产品:')
        for shopping_goods, good_num in shopping_car_dict.items():
            print(shopping_goods, good_num)
            goods_price_total += shopping_goods[1] * good_num
        if goods_price_total > cur_userinfo_dict['coin']:
            print("您的余额不足,无法购买全部商品")
            print("即将跳转至商品数量修改界面")
            while True:
                modify_choice = input("请您修改购物车的商品数量/直接按q退出:")
                if modify_choice == 'q':
                    break
                for index, goods in enumerate(shopping_car_dict):
                    print(index, goods)
                modify_goods_index = input("请输入您要修改的商品编号>>>")
                shopping_car_list_tmp = [goods for _, goods in
                                         enumerate(shopping_car_dict)]  # [('iphone', 80), ('ipad', 30)]
                modify_goods = shopping_car_list_tmp[int(modify_goods_index)]
                modify_goods_num = int(input("请输入您要修改的商品数量>>>"))
                shopping_car_dict[modify_goods] = modify_goods_num
        else:
            print("您可以去结账了")
            break
@login_deco
def check():
    """结账"""
    print("\033[1;31;40m欢迎使用结账功能\033[0m")
    if goods_price_total > cur_userinfo_dict['coin']:
        print("余额不足,请前往购物车修改商品信息!")
        shopping_car()
    else:
        cur_userinfo_dict['coin'] -= goods_price_total
        global shopping_car_dict
        shopping_car_dict = dict()
        print(f"结账{goods_price_total}成功,你现在的余额为{cur_userinfo_dict['coin']}")
# 系统功能字典
func_dict = {
    '0': register,
    '1': login,
    '2': shopping,
    '3': shopping_car,
    '4': check
}
while True:
    # 打印所有功能
    func_choice = input("请输入你想要使用的功能>>>")
    # 退出
    if func_choice == 'q':
        break
    # 判断非法
    if func_choice not in func_dict:
        print("\033[1;31;40m非法输入(本系统无法提供您想要的服务)\033[0m")
        break
    func_dict[func_choice]()

注:在局部(某个函数内部)对全局变量赋值时,需要在赋值语句前加上 golbal xxx,否则会出现报错:

python-面对过程项目实战-购物系统

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]