1.优化购物程序,购买时允许用户选择购买多少件,
2.允许多用户登录,下一次登录后,继续按上次的余额继续购买 ,可以充值 (每个用户有独立的保存文件)
3.允许用户查看之前的购买记录(记录要显示商品购买时间)
4.商品列表分级展示,比如:
第一层菜单:
1.家电类
2.衣服类
3.手机类
4.车类
...
选择一个,车类,进入第2层
1。BMW X3 33333
2.Audi Q5 33333
3.Pasate 33335
4.Tesla Model_3 430000
5.Tesla Model S 888888
购物车:
1. 商品信息- 数量、单价、名称
2. 用户信息- 帐号、密码、余额
3. 用户可充值
4. 购物历史信息
5. 允许用户多次购买,每次可购买多件
6. 余额不足时进行提醒
7. 用户退出时 ,输出档次购物信息
8. 用户下次登陆时可查看购物历史
9. 商品列表分级显示
5.显示已购买商品时,如果有重复的商品,不打印多行,而是在一行展示,如
id p_name num total_price
1. TeslaModelS 2 3434343434
2. Coffe 2 60
3. Bike 1 700
###
Blog一定要写
readme一定要写
流程图 一定画
一定不要copy
会用到 文件 ,datetime模块,json
折磨啊,已经被搞晕,还有需要完善的地方。
#!/usr/bin/env python
# -*-coding:utf-8-*-
# __author__="Liudong"
import json
if __name__ == '__main__':
# user_info={'root':[123,5000],'sys':[123,10000],'admin':[123,200000]}
# json.dump(user_info, open('user_info.txt','w'))#把用户信息以user:pass:amount的格式写入文本文件
# purchase_log={'root':[['iphone7' ,2 ,'2016-6-10'],['西装',1 ,'2015-5-2']],
# 'sys':[['乐视电视',1,'2016-9-20'] ,['华为',5,'2016-7-15']],
# 'admin':[['乐视电视',1,'2016-8-10'] ,['运动服',3,'2016-10-10']]
# }
# json.dump(purchase_log,open('purchase_log.txt','w',encoding='utf-8'))
shop_car = []
welcom_msg = 'Welcome to Shopping Home'.center(50, '-')
print(welcom_msg)
for i in range(3):
username = input('Please input your username:[q=quit]')
if username == 'q':
exit()
with open('user_info.txt', 'r', encoding='utf-8') as user_account: # 读取用户信息
user_info = json.load(user_account) # 用json读取文件,字典格式
for user_name in user_info.keys(): # 判断用户名是否存在
# print(user_info[user_name][0])
# print(user_name)
# print(username)
j = 0
while j < 3: # 给3次输入密码机会
password = input('Please input your password:')
if password == str(user_info[user_name][0]):
print('login successed! Have a happy shopping Time!')
while True:
print('#' * 50)
print('1.查看购买记录
2.充值
3.查询余额
4.购物
5.查看购物车
[q:quit]')
user_want = input('What do you do?')
if user_want == 'q':
exit()
if user_want == '1':
print('user %s purchase log list:'.center(50, '*') % user_name)
with open('purchase_log.txt', 'r', encoding='utf-8') as purchase_log: # 读取购买记录文件
user_purchase_log = json.load(purchase_log)
print(user_purchase_log[username])
if user_want == '2':
print('*' * 50)
charge_amount = input('please input amount you want to charge:')
# user_info_amountw = json.load('user_info.txt', 'r')
user_info[username][1] += int(charge_amount)
# print(user_info)
json.dump(user_info, open('user_info.txt', 'w'))
print('charge successed!')
if user_want == '3':
print('*' * 50)
print('your account is ¥%s' % user_info[user_name][1])
if user_want == '4':
product_list = {
'家电类': [('乐视电视', 7000), ('海尔冰箱', 5000), ('小天鹅洗衣机', 2000)],
'衣服类': [('西装', 8000), ('休闲夹克', 2000), ('运动服', 800)],
'手机类': [('Iphone7', 7000), ('小米Note', 2000), ('华为', 1000)],
'车类': [('奔驰ML', 800000), ('特斯拉', 700000), ('奥迪Q7', 750000)]}
class_list = [] # 获取序列号和字典key组成的列表
class2 = []
while True:
print("Products list".center(50, '-'))
for index, item in enumerate(product_list): # 打印序列号和类别
print(index, item)
class_list = [index, item] # 将序列号和商品类别key保存成列表
class2.append(str(class_list[1])) # class2用于保存用户选择商品类key值
# print(class2) #存储类别用于后面选择对应类别
print('End'.center(50, '-'))
class1_choice = input('choose class number 0-3 to enter:(q:quit)').strip()
if class1_choice == '0': # 用户选择第一类商品
class_choice = product_list[class2[0]] # 根据商品类别和对应的下标号,获取商品列表
# print(class_choice)
for item in enumerate(class_choice): # 从第1级类中,枚举各个商品
index = item[0]
# print(item)
p_name = item[1][0]
p_price = item[1][1]
print(index, '.', p_name, p_price)
buy_item = input('What do you want to buy?:[q=quit,c=check]')
if buy_item.isdigit(): # 肯定为选择商品
buy_item = int(buy_item)
if buy_item < len(class_choice):
# print(class1_choice)
# print(class_list)
p_item = [p_name[1]]
# print(p_item)
# print(user_info[user_name][1])
if p_price <= user_info[user_name][1]: # 买的起
shop_car.append(p_item) # 放入购物车
user_info[user_name][1] -= p_price # 扣钱
print(
'Added [%s] into your shop car,your current balance is '
' 33[31;1m[%s] 33[0m' % (p_item, user_info[user_name][1]))
# 字体加颜色
else:
print('Your balance is [%s],cannot afford this product..' %
user_info[user_name][1])
else:
if class1_choice == 'q' or class1_choice == 'quit':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
print('END'.center(40, '*'))
print('Your balance is [%s]' % user_info[user_name][1])
print('bye.')
exit()
elif class1_choice == 'c' or class1_choice == 'check':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
# 背景加颜色
print('Your balance is 33[41;1m[%s] 33[0m' % user_info[user_name][1])
if class1_choice == '1': # 用户选择第一类商品
class_choice = product_list[class2[0]] # 根据商品类别和对应的下标号,获取商品列表
# print(class_choice)
for item in enumerate(class_choice): # 从第1级类中,枚举各个商品
index = item[0]
# print(item)
p_name = item[1][0]
p_price = item[1][1]
print(index, '.', p_name, p_price)
buy_item = input('What do you want to buy?:[q=quit,c=check]')
if buy_item.isdigit(): # 肯定为选择商品
buy_item = int(buy_item)
if buy_item < len(class_choice):
# print(class1_choice)
# print(class_list)
p_item = [p_name[1]]
# print(p_item)
# print(user_info[user_name][1])
if p_price <= user_info[user_name][1]: # 买的起
shop_car.append(p_item) # 放入购物车
user_info[user_name][1] -= p_price # 扣钱
print(
'Added [%s] into your shop car,your current balance is '
' 33[31;1m[%s] 33[0m' % (p_item, user_info[user_name][1]))
# 字体加颜色
else:
print('Your balance is [%s],cannot afford this product..' %
user_info[user_name][1])
else:
if class1_choice == 'q' or class1_choice == 'quit':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
print('END'.center(40, '*'))
print('Your balance is [%s]' % user_info[user_name][1])
print('bye.')
exit()
elif class1_choice == 'c' or class1_choice == 'check':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
# 背景加颜色
print('Your balance is 33[41;1m[%s] 33[0m' % user_info[user_name][1])
if class1_choice == '2': # 用户选择第一类商品
class_choice = product_list[class2[0]] # 根据商品类别和对应的下标号,获取商品列表
# print(class_choice)
for item in enumerate(class_choice): # 从第1级类中,枚举各个商品
index = item[0]
# print(item)
p_name = item[1][0]
p_price = item[1][1]
print(index, '.', p_name, p_price)
buy_item = input('What do you want to buy?:[q=quit,c=check]')
if buy_item.isdigit(): # 肯定为选择商品
buy_item = int(buy_item)
if buy_item < len(class_choice):
# print(class1_choice)
# print(class_list)
p_item = [p_name[1]]
# print(p_item)
# print(user_info[user_name][1])
if p_price <= user_info[user_name][1]: # 买的起
shop_car.append(p_item) # 放入购物车
user_info[user_name][1] -= p_price # 扣钱
print(
'Added [%s] into your shop car,your current balance is '
' 33[31;1m[%s] 33[0m' % (p_item, user_info[user_name][1]))
# 字体加颜色
else:
print('Your balance is [%s],cannot afford this product..' %
user_info[user_name][1])
else:
if class1_choice == 'q' or class1_choice == 'quit':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
print('END'.center(40, '*'))
print('Your balance is [%s]' % user_info[user_name][1])
print('bye.')
exit()
elif class1_choice == 'c' or class1_choice == 'check':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
# 背景加颜色
print('Your balance is 33[41;1m[%s] 33[0m' % user_info[user_name][1])
if class1_choice == '3': # 用户选择第一类商品
class_choice = product_list[class2[0]] # 根据商品类别和对应的下标号,获取商品列表
# print(class_choice)
for item in enumerate(class_choice): # 从第1级类中,枚举各个商品
index = item[0]
# print(item)
p_name = item[1][0]
p_price = item[1][1]
print(index, '.', p_name, p_price)
buy_item = input('What do you want to buy?:[q=quit,c=check]')
if buy_item.isdigit(): # 肯定为选择商品
buy_item = int(buy_item)
if buy_item < len(class_choice):
# print(class1_choice)
# print(class_list)
p_item = [p_name[1]]
# print(p_item)
# print(user_info[user_name][1])
if p_price <= user_info[user_name][1]: # 买的起
shop_car.append(p_item) # 放入购物车
user_info[user_name][1] -= p_price # 扣钱
print(
'Added [%s] into your shop car,your current balance is '
' 33[31;1m[%s] 33[0m' % (p_item, user_info[user_name][1]))
# 字体加颜色
else:
print('Your balance is [%s],cannot afford this product..' %
user_info[user_name][1])
else:
if class1_choice == 'q' or class1_choice == 'quit':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
print('END'.center(40, '*'))
print('Your balance is [%s]' % user_info[user_name][1])
print('bye.')
exit()
elif class1_choice == 'c' or class1_choice == 'check':
print('purchased products as blew:'.center(40, '*'))
for item in shop_car:
print(item)
# 背景加颜色
print('Your balance is 33[41;1m[%s] 33[0m' % user_info[user_name][1])
if user_want == '5':
print(shop_car)
else:
print('Invalid username or password...')
print('this is the %d time(s)' % (j + 1))
j += 1
else:
print('Forget password? Please send a mail to Administrator,bye')
user_account.close()
exit()