一、代码需求:
用户入口:
1.商品的信息存到文件里
2.已购商品,余额记录
商家入口:
1.可以添加商品
2.修改商品价格
3.存储商品列表
二、程序代码:
功能实现:
1、加载商品信息和用户余额信息
2、用户界面实现购物、打印购物清单和用户余额及用户余额更新;
3、商家界面实现商品添加、修改商品价格及商品信息更新。
程序目录:
其中test.py为实现过程中,部分功能的测试片段,可不予考虑。
买家用户名和密码存在名为‘balance.txt’的文件中。
1 VisonWong:4200 2 VisonWong1:20000 3 VisonWong2:30000 4 VisonWong4:4969
商品列表和价格存在名为‘product.txt’的文件中。
1 Iphone:5800 2 Mac Pro:9800 3 Bike:800 4 Watch:10600 5 Coffee:31 6 Beats:1200 7 books:80
程序代码:
1 #!/user/bin/env ptyhon 2 # -*- coding:utf-8 -*- 3 # Author: VisonWong 4 5 6 import fileinput 7 8 #读取商品信息 9 product_list = [] 10 f = open("product.txt", "r") # 打开文件 11 for line in f.readlines(): 12 line = line.strip() # 去掉前后的空格 13 item, price = line.split(":") # 以冒号分割得到前后两个数据的字符串列表,分别赋给两个变量 14 product_list.append([item,int(price)]) # 添加数据 15 f.close() 16 17 #读取用户余额信息 18 user_name = [] 19 user_balance = [] 20 f1 = open("balance.txt", "r") # 打开文件 21 for line1 in f1.readlines(): 22 line1 = line1.strip() # 去掉前后的空格 23 user, balance = line1.split(":") # 以冒号分割得到前后两个数据的字符串列表,分别赋给两个变量 24 user_name.append(user) 25 user_balance.append(balance) 26 f1.close() 27 28 29 # 用户入口 30 # 用户购物 31 def user_shopping(): 32 Username = input("请输入你的用户名:") 33 if Username in user_name: 34 salary = user_balance[user_name.index(Username)] #检索用户名获得所在位置 35 index_updata = '{}:{}'.format(Username, salary) #为后面修改文件提供索引 36 print("你的余额还有{}元".format(salary)) 37 else: 38 salary = input("请输入你的薪水:") 39 for index, item in enumerate(product_list): 40 print(index, item) 41 if salary.isdigit(): #检测字符串是否只由数字组成 42 salary = int(salary) 43 shopping_list = [] # 存放用户购物车清单 44 while True: 45 option = input("请输入你要购买的商品标号或“quit”退出") 46 if option.isdigit(): 47 option = int(option) 48 if option >= 0 and option <= len(product_list): 49 p_item = product_list[option] # 用户选择的商品 50 if salary >= p_item[1]: 51 shopping_list.append(p_item) 52 salary -= p_item[1] 53 print("添加{}到购物车成功,你的余额还有{}".format(p_item[0],salary)) 54 else: 55 print("你的余额不足,只剩{}元".format(salary)) 56 else: 57 print("输入错误,请重新输入!") 58 elif option == "quit": 59 print("----------------购物清单---------------") 60 for i in shopping_list: 61 print(i) 62 print("你的余额为{}".format(salary)) 63 print("..........exit.........") 64 if Username in user_name: 65 for line in fileinput.input('balance.txt', inplace=1): 66 print(line.replace(index_updata, '{}:{}'.format(Username, salary)).strip()) 67 else: 68 f1 = open('balance.txt', 'a') 69 f1.write(' {}:{}'.format(Username, salary)) 70 f1.close() 71 exit() 72 else: 73 print("无效的输入") 74 75 76 # 商家入口 77 # 商家添加商品 78 def add_product(): 79 while True: 80 product_name = input("请输入你要添加的商品名字或'quit'退出") 81 if product_name == 'quit': 82 break 83 product_price = input("请输入你要添加商品的价格:") 84 f = open("product.txt", "a") 85 f.write(' {}:{}'.format(product_name, product_price)) 86 f.close() 87 print("添加成功!") 88 89 # 修改商品价格 90 def change_price(): 91 while True: 92 for index, item in enumerate(product_list): 93 print(index, item) 94 choice = input("请输入修改商品所对应的标号或输入'quit'退出") 95 if choice.isdigit(): 96 choice = int(choice) 97 if choice >= 0 and choice <= len(product_list): 98 index_updata = '{}:{}'.format(product_list[choice][0], product_list[choice][1]) # 为后面修改文件提供索引 99 price_change = input("请输入你要改变商品的价格:") 100 product_list[choice][1] = price_change 101 for line in fileinput.input("product.txt", inplace=1): # 对输入的选择行进行修改 102 print(line.replace(index_updata, '{}:{}'.format(product_list[choice][0], price_change)).strip()) 103 else: 104 print("输入无效") 105 elif choice == "quit": 106 break 107 else: 108 print("无效的输入") 109 110 #主函数 111 while True: 112 print("33[31;0m欢迎进入购物模拟程序33[0m".center(50, "#"), 113 " 1 买家 " 114 "2 商户 " 115 "q 退出程序 ") 116 Ident = input("33[32;0m选择要进入模式的ID:33[0m") 117 if Ident == '1': 118 user_shopping() 119 break 120 elif Ident == '2': 121 process = input("请输入相应ID:【1】添加商品 【2】修改商品价格 【q】退出") 122 if process == "1": 123 add_product() 124 break 125 elif process == "2" : 126 change_price() 127 break 128 elif process == "q": 129 break 130 else: 131 print("输入的ID无效,请重新选择") 132 elif Ident == 'q': 133 break 134 else: 135 print("33[31;0m输入的ID无效,请重新选择33[0m")
运行效果:
买家界面:
1 E:PythonPythonExercisingshoppingvenvScriptspython.exe E:/Python/PythonExercising/shopping/shopping.py 2 ##############欢迎进入购物模拟程序############### 3 1 买家 4 2 商户 5 q 退出程序 6 7 选择要进入模式的ID:1 8 请输入你的用户名:VisonWong 9 你的余额还有5800元 10 0 ['Iphone', 5800] 11 1 ['Mac Pro', 9800] 12 2 ['Bike', 800] 13 3 ['Watch', 10600] 14 4 ['Coffee', 40] 15 5 ['Beats', 1200] 16 6 ['books', 80] 17 请输入你要购买的商品标号或“quit”退出4 18 添加Coffee到购物车成功,你的余额还有5760 19 请输入你要购买的商品标号或“quit”退出5 20 添加Beats到购物车成功,你的余额还有4560 21 请输入你要购买的商品标号或“quit”退出quit 22 ----------------购物清单--------------- 23 ['Coffee', 40] 24 ['Beats', 1200] 25 你的余额为4560 26 ..........exit......... 27 28 Process finished with exit code 0
商户界面:
1 E:PythonPythonExercisingshoppingvenvScriptspython.exe E:/Python/PythonExercising/shopping/shopping.py 2 ##############欢迎进入购物模拟程序############### 3 1 买家 4 2 商户 5 q 退出程序 6 7 选择要进入模式的ID:2 8 请输入相应ID:【1】添加商品 【2】修改商品价格 【q】退出2 9 0 ['Iphone', 5800] 10 1 ['Mac Pro', 9800] 11 2 ['Bike', 800] 12 3 ['Watch', 10600] 13 4 ['Coffee', 31] 14 5 ['Beats', 1200] 15 6 ['books', 80] 16 请输入修改商品所对应的标号或输入'quit'退出4 17 请输入你要改变商品的价格:40 18 0 ['Iphone', 5800] 19 1 ['Mac Pro', 9800] 20 2 ['Bike', 800] 21 3 ['Watch', 10600] 22 4 ['Coffee', '40'] 23 5 ['Beats', 1200] 24 6 ['books', 80] 25 请输入修改商品所对应的标号或输入'quit'退出quit 26 27 Process finished with exit code 0