VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 购物车程序-本地版

修修改改代码终于可以执行了,这次是本地版购物车(商品、用户信息等都存在本地txt文档里的,由于还没正式学习文件操作,很多地方可能比较傻瓜),目的是加强列表操作的掌握,顺便预习一下文件操作的内容~

首先是管理员接口,需要完成的功能有:

# 1.启动程序后,输入管理员用户名密码,然后打印商品列表
# 2.可随时退出,退出时,打印已新增商品及其价格
# plus1:商品信息存放在文件里
# plus2:可以添加商品,修改商品价格

代码如下:
复制代码
 1 # 购物车程序-管理员接口
 2 # 1.启动程序后,输入管理员用户名密码,然后打印商品列表
 3 # 2.可随时退出,退出时,打印已新增商品及其价格
 4 # plus1:商品信息存放在文件里
 5 # plus2:可以添加商品,修改商品价格
 6 
 7 import sys
 8 
 9 shopping = []   # 空表,后续用于存储在文件内读取出的商品
10 ad = []         # 空表,后续用于存储在文件内读取出的用户名和密码
11 goods_new = []  # 空表,后续用于存储新增商品及其价格
12 f = open("administrator.txt")
13 f1 = f.readlines()
14 for line in f1:
15     line = line.strip('\n')
16     line = line.split(',')
17     ad.append(line)     # 将文件内的用户名密码读取至表ad内
18 f.close()
19 
20 while True:
21     username = input("请输入用户名:")
22     password = input("请输入密码:")
23     ad_user = [username, password]
24     if ad_user in ad:   # 判断用户名密码是否在表ad中
25         print(f"欢迎登录 ,{username}!".center(50, " "))
26         while True:     # 用户可以多次选择,故创建死循环
27             f2 = open("goods.txt", 'r', encoding='UTF-8')
28             f2.seek(0)
29             f3 = f2.readlines()
30             for line in f3:
31                 line = line.strip('\n')
32                 line = line.split(',')
33                 shopping.append(line)   # 读取txt文档中存储的商品及其价格信息至表shopping内(放于循环中,操作后打印的是修改后的内容)
34             f2.close()
35             print("当前商品列表".center(50, '-'))
36             for i, items in enumerate(shopping):
37                 print(i+1, items)      # 展示当前商品列表
38             choice = input("输入t增加商品,输入商品编号修改价格,输入q退出:")
39             if choice == 't':   # 选择增加商品
40                 goods_name = input("输入新增商品名称:")
41                 goods_price = input("输入该商品价格:")
42                 f2 = open("goods.txt", 'a+', encoding='UTF-8')
43                 f2.write(goods_name)
44                 f2.write(',')
45                 f2.write(goods_price)
46                 f2.write('\n')
47                 f2.close()      # 在商品列表中追加一条商品记录,内容为用户输入的名称与价格
48                 print(f"添加商品\033[31m{goods_name}\033[0m成功!")
49                 goods_new.append([goods_name, goods_price])
50                 shopping = []   # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
51             elif choice == "q":
52                 print("新增商品列表".center(50, '-'))
53                 for t, items in enumerate(goods_new):
54                     print(t+1, items)   # 输出新增商品列表
55                 sys.exit()
56             elif choice.isdigit():      # 输入的是数字
57                 choice = int(choice)    # 转换为整型
58                 if 0 < choice < len(shopping) + 1:      # 这个数字在商品编号范围内
59                     print(f"您正在修改商品\033[31m{shopping[choice-1][0]}\033[0m的价格,请确认")
60                     choice2 = input("输入y确认,输入b返回,输入q退出:")
61                     if choice2 == 'b':      # 选择返回
62                         shopping = []       # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
63                         continue            # 跳出本次循环,执行下一次循环
64                     elif choice2 == 'q':    # 选择退出
65                         sys.exit()
66                     elif choice2 == 'y':    # 确认要修改这个商品的价格
67                         f2 = open('goods.txt', 'r+', encoding='utf-8')
68                         f2.truncate()       # 把文档内原有的内容清空掉,注意打开方式必须是只写才能清空
69                         f2.close()
70                         while True:
71                             new_price = input("请输入新价格:")
72                             if new_price.isdigit():
73                                 shopping[choice-1][1] = new_price   # 在列表中更改这个商品的价格
74                                 for j in shopping:      # 将列表内的新信息重新录入文档
75                                     f2 = open('goods.txt', 'a', encoding='utf-8')
76                                     f2.write(j[0])
77                                     f2.write(',')
78                                     f2.write(j[1])
79                                     f2.write('\n')
80                                     f2.close()
81                                 print(f"修改商品\033[31m{shopping[choice-1][0]}\033[0m的价格成功,新价格为\033[31m{new_price}\033[0m")
82                                 shopping = []   # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
83                                 break           # 更改完毕,文档已更新,跳出本次循环
84                             else:
85                                 print("格式错误,请重新输入")     # 返回输入新价格出(本次循环的开始)
86                     else:
87                         print("输入错误,请重试")
88                         shopping = []   # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
89                 else:   # 输入的数字不是商品编号
90                     print("无此商品,请重试!")
91                     shopping = []   # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
92             else:   # 输入的不是t,不是q也不是一个数字
93                 print("输入错误,请重试!")
94                 shopping = []   # 将文件内容增加至列表中在循环内,要清除列表内容,否则会重复录入
95     else:
96         print("用户名或密码错误,请重试!")
复制代码

然后是用户接口,需要完成的功能有:

# 1.启动程序后,让用户输入工资,然后打印商品列表
# 2.允许用户根据商品编号购买商品
# 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
# 4.可随时退出,退出时,打印已购买商品和余额
# plus1:商品信息存放在文件里
# plus2:存储已购商品和余额记录(第二次及以后登录无需再输入工资)

代码如下
复制代码
  1 import sys
  2 
  3 customer = []
  4 goods = []
  5 customer_name = []
  6 customer_balance = []
  7 shopping_cart = []
  8 customer_new = []
  9 
 10 f = open("customer.txt", encoding='utf-8')
 11 for line in f.readlines():
 12     line = line.strip('\n')
 13     line = line.split(',')
 14     customer.append(line)
 15 f.close()
 16 f1 = open("goods.txt", encoding='utf-8')
 17 for line in f1.readlines():
 18     line = line.strip('\n')
 19     line = line.split(',')
 20     goods.append(line)
 21 f1.close()
 22 for i in customer:
 23     customer_name.append(i[0])
 24     customer_balance.append(i[1])
 25 username = input("请输入用户名:")
 26 if username in customer_name:
 27     j = customer_name.index(username)
 28     while True:
 29         print(f"您的余额还有\033[031m{customer_balance[j]}\033[0m元")
 30         print("商品清单".center(50, '-'))
 31         for k, items in enumerate(goods):
 32             print(k+1, items)
 33         while True:
 34             choice = input("请输入编号以购买商品(或输入q退出):")
 35             if choice.isdigit():
 36                 choice = int(choice)
 37                 if 0 < choice < len(goods)+1:
 38                     print(f"您即将消费\033[31m{goods[choice-1][1]}\033[0m元购买\033[31m{goods[choice-1][0]}\033[0m")
 39                     confirm = input("输入y确认购买,输入b重新选择:")
 40                     if confirm == 'y':
 41                         if int(customer_balance[j]) >= int(goods[choice-1][1]):
 42                             print(f"购买\033[31m{goods[choice-1][0]}\033[0m成功!")
 43                             balance = int(customer_balance[j]) - int(goods[choice-1][1])
 44                             customer_balance[j] = balance
 45                             customer[j][1] = str(balance)
 46                             shopping_cart.append(goods[choice-1][0])
 47                             break
 48                         else:
 49                             print("您的余额不足")
 50                             continue
 51                     elif confirm == 'b':
 52                         continue
 53             elif choice == 'q':
 54                 print("\033[31m购物清单\033[0m".center(50, '%'))
 55                 for t in shopping_cart:
 56                     print(t.center(40, ' '))
 57                 print(f"您的余额为\033[31m{customer_balance[j]}\033[0m元,欢迎下次光临!")
 58                 f = open("customer.txt", 'r+', encoding='utf-8')
 59                 f.truncate()
 60                 f.close()
 61                 f = open("customer.txt", 'a', encoding='utf-8')
 62                 for m in customer:
 63                     f.write(m[0])
 64                     f.write(',')
 65                     f.write(m[1])
 66                     f.write('\n')
 67                 f.close()
 68                 sys.exit()
 69             else:
 70                 print("格式错误,请重新输入!")
 71 else:
 72     salary = int(input("请输入您的工资:"))
 73     while True:
 74         print("商品清单".center(50, '-'))
 75         for k, items in enumerate(goods):
 76             print(k + 1, items)
 77         while True:
 78             choice = input("请输入编号以购买商品(输入q退出):")
 79             if choice.isdigit():
 80                 choice = int(choice)
 81                 if 0 < choice < len(goods) + 1:
 82                     print(f"您即将消费\033[31m{goods[choice - 1][1]}\033[0m元购买\033[31m{goods[choice - 1][0]}\033[0m")
 83                     confirm = input("输入y确认购买,输入b重新选择:")
 84                     if confirm == 'y':
 85                         if salary >= int(goods[choice - 1][1]):
 86                             print(f"购买\033[31m{goods[choice - 1][0]}\033[0m成功!")
 87                             salary = int(salary) - int(goods[choice - 1][1])
 88                             shopping_cart.append(goods[choice - 1][0])
 89                             break
 90                         else:
 91                             print("您的余额不足")
 92                             continue
 93                     elif confirm == 'b':
 94                         continue
 95             elif choice == 'q':
 96                 print("购物清单".center(50, '%'))
 97                 for t in shopping_cart:
 98                     print(t.center(50, ' '))
 99                 print(f"您的余额为\033[31m{salary}\033[0m元,欢迎下次光临!")
100                 customer_new = [username, str(salary)]
101                 f = open("customer.txt", 'a', encoding='utf-8')
102                 f.write(customer_new[0])
103                 f.write(',')
104                 f.write(customer_new[1])
105                 f.write('\n')
106                 f.close()
107                 sys.exit()
108             else:
109                 print("格式错误,请重新输入!")
复制代码

	

 
出处:
https://www.cnblogs.com/bitsjc/p/13632359.html
 


相关教程