作业需求:
1. 优化购物程序,购买时允许用户选择购买多少件;
2. 允许多用户登录,下一次登录后,继续按上次的余额继续购买(可以充值);
3. 允许用户查看之前的购买记录(纪录要显示商品购买时间);
4. 商品列表分级展示;
5. 显示已购买商品时, 如果有重复的商品, 不打印多行,而是在一行展示。
本程序包含文件:
1、shopping.py 主程序
2、shopping.jpg 流程图
3、account.txt 用户信息列表
4、login.py 用户登录模块
5、userlog.txt 用户的购买记录及余额
6、readme.txt
购物商城小程序执行说明:
一、login.py:
login中包含用户验证的函数,用户登录时输入用户名密码,传参到login函数中验证,验证通过读取用户文件中的用户信息,包括购买记录、余额,login函数对用户信息文件account.txt和userlog.txt进行只读操作。
account.txt为用户列表,保存用户名和密码;
userlog.txt为用户购买记录和余额信息文件。
二、shopping.py:
shopping是主程序,执行主程序首先导入login模块,要求用户输入用户名密码,login验证用户名信息,通过后打印商品分类;
用户通过输入选择分类标签,打印分类商品明细,包括商品名称和单价;
用户可以通过输入“c”查看购物车信息和用户余额,输入“b”可以返回商品分类选择,可以重新选择商品分类,在任意输入界面,输入“q”,可以退出程序,退出程序时打印购物车商品和余额,并保存到userlog.txt文件中,以便下次登陆认证通过后显示用户信息。
第一个程序login.py,用户登录验证程序:

1 #!/usr/bin/env python 2 # -.- coding: utf-8 -.- 3 # by sandler 4 5 account_file = 'account.txt' # 用户列表,包含用户名和密码 6 7 def login(username, password): 8 for i in range(3): 9 if len(username) != 0 and len(password) != 0: 10 f = open(account_file) 11 loginSuccess = False 12 for line in f.readlines(): 13 line = line.split() 14 if username == line[0] and password == line[1]: 15 #print("Welcon %s login shopping mall" % username) 16 loginSuccess = True 17 break 18 if loginSuccess is True: 19 return True 20 break 21 else: 22 continue 23 else: 24 print("多次输入错误,程序即将推出!")
第二个是主程序,购物商城,按照作业要求部分功能未实现,后续会修改:

1 #!/usr/bin/env python 2 # -.- coding: utf-8 -.- 3 # by sandler 4 5 import sys 6 import os 7 import datetime 8 import json 9 from login import login #从login.py导入login函数 10 11 12 username = input("username: ").strip() #.strip可以去除用户输入中的空格 13 password = input("password: ").strip() 14 15 welcome = ''' 16 ************************************** 17 ** 33[31mWelcome %s to NB shopping mall 33[0m ** 18 ************************************** 19 '''% username 20 21 item_dic = { 22 "手机":[ 23 ("Nokia",999), 24 ("Samsung",3999), 25 ("MOTO",2099), 26 ("HTC",1999) 27 ], 28 "汽车":[ 29 ("Jeep",20000), 30 ("Benz",40000), 31 ("BMW",30000), 32 ("Tesla",8000) 33 ] 34 } #商品列表 35 ''' 36 user_info = { 37 "jack":{ 38 "balance":"", 39 "buyname":"", 40 "buynum":"", 41 "total":"" 42 }, 43 "yuli":{ 44 "balance":"", 45 "buyname":"", 46 "buynum":"", 47 "total":"" 48 }, 49 "alice":{ 50 "balance":"", 51 "buyname":"", 52 "buynum":"", 53 "total":"" 54 } 55 } 56 ''' #用户信息存储示例 57 58 r_log = open('userlog.txt','r') #读取文件 59 user_log = json.load(r_log) #读取的信息序列化为字典 60 r_log.close() #关闭文件 61 Balance = user_log[username]["balance"] #用户余额 62 Buyname = user_log[username]["buyname"] #用户购买商品名称 63 Buynum = user_log[username]["buynum"] #用户购买商品数量 64 Total = user_log[username]["total"] #用户购买商品总价 65 66 check_car = ''' 67 用 户 名:[ 33[31m%s 33[0m] 68 余 额:[ 33[31m%s 33[0m] 69 购买商品:[ 33[31m%s 33[0m] 70 购买数量:[ 33[31m%s 33[0m] 71 购买总价:[ 33[31m%s 33[0m] 72 ''' % (username,Balance,Buyname,Buynum,Total) 73 74 if login(username,password): #用户登录检查 75 print(welcome) 76 else: 77 exit() #用户登录失败退出程序 78 flag = True #定义退出标签 79 while flag: 80 print("