python-面对过程项目实战-购物系统
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,否则会出现报错:
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。