博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之路—Day2作业
阅读量:4571 次
发布时间:2019-06-08

本文共 6467 字,大约阅读时间需要 21 分钟。

作业需求:

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 = False12             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 = True17                     break18             if loginSuccess is True:19                 return True20                 break21             else:22                 continue23     else:24         print("多次输入错误,程序即将推出!")
Login.py

第二个是主程序,购物商城,按照作业要求部分功能未实现,后续会修改:

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 ** \033[31mWelcome %s to NB shopping mall\033[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     用 户 名:[\033[31m%s\033[0m] 68     余    额:[\033[31m%s\033[0m] 69     购买商品:[\033[31m%s\033[0m] 70     购买数量:[\033[31m%s\033[0m] 71     购买总价:[\033[31m%s\033[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("\033[34m商品分类:\033[0m") 81     for index,val in item_dic.keys():   #循环商品分类 82         print(index,val) 83     user_choice = input('请选择您要购买的商品种类[q=Quit,c=Check]:') 84     if user_choice == "q":  #用户输入为“q”退出 85         flag = False 86         break 87     elif user_choice == 'c':    #用户输入为“c”打印用户信息 88         print(check_car) 89         print('-'*40) 90         continue 91     flag_t = True   #定义内循环标签 92     while flag_t: 93         if user_choice in item_dic.keys():  #判断用户输入商品分类 94             sp_item = item_dic[user_choice] 95             while flag: 96                 print("商品列表") 97                 for item in enumerate(sp_item): #循环打印商品明细 98                     index = item[0] 99                     p_name = item[1][0]100                     p_price = item[1][1]101                     print(index,'.',p_name,p_price)102                 sp_choice = input("请选择您要购买的商品[q=Quit,c=Check,b=Back]:") #用户输入需要购买的商品序号103                 if sp_choice == "q":104                     print(check_car)105                     print('-'*40)106                     print("[\033[31m程序即将推出,感谢使用,欢迎下次光临!\033[0m")107                     print('-'*40)108                     flag = False109                     break110                 elif sp_choice == 'c':111                     print(check_car)112                     print('-'*40)113                     continue114                 elif sp_choice == 'b':  #判断用户输入是否为“b”,是则返回商品分类选择115                     flag_t = False116                     break117                 sp_num = input("请输入需要购买的数量:")   #用户输入需要购买的数量118                 if sp_choice.isdigit() and sp_num.isdigit():#判断用户输入是否为数字119                     sp_choice = int(sp_choice)120                     sp_num = int(sp_num)121                     if sp_choice < len(sp_item) and sp_num != 0:122                         p_item = sp_item[sp_choice]123                         if p_item[1] <= Balance:124                             #shop_car.append(p_item[0]) #放入购物车125                             buy_money = p_item[1]*sp_num    #用户购买商品总价=数量乘以单价126                             Balance -= buy_money    #用户余额减去用户购买商品总价127                             print('购买[%s],数量[%s],总价[%s],您的余额为 [%s]' %(p_item[0],sp_num,buy_money,Balance))128                             user_log[username]["balance"] = Balance #用户购买商品后的余额写入预定字典129                             user_log[username]["buyname"] = p_item[0]   #用户购买商品名称写入预定字典130                             user_log[username]["buynum"] = sp_num   #用户购买商品数量写入预定字典131                             user_log[username]["total"] = buy_money ##用户购买商品总价写入预定字典132                             w_log = open('userlog.txt','w') #以写方式打开用户信息文件133                             json.dump(user_log,w_log)   #变更后的用户信息写入文件134                             w_log.close()   #关闭文件135                             #print(user_log)136                         else:137                             print('您的余额为 [%s],暂时不能购买,请充值! ' % Balance)
shopping.py

 

转载于:https://www.cnblogs.com/sandler613/p/5514450.html

你可能感兴趣的文章
【每日一读】Java编程中“为了性能”尽量要做到的一些地方
查看>>
什么是内网、什么是公网、什么是NAT
查看>>
【堆/排序】堆排序的两种建堆方法
查看>>
类的内置方法
查看>>
项目中使用的第三方开源库
查看>>
NOIP2009 潜伏者
查看>>
本地预览的vue项目,在githubpage静态展示
查看>>
SC命令---安装、开启、配置、关闭 cmd命令行和bat批处理操作windows服务
查看>>
Register Form Code
查看>>
iphone 如何清空UIWebView的缓存
查看>>
Java——变量
查看>>
定时关闭AWS上的EC2机器实例
查看>>
grep、awk、sed命令详解1
查看>>
Jenkins邮件配置
查看>>
MYSQL数据库的设计与调优
查看>>
在Apache下开启SSI配置
查看>>
多线程上下文切换
查看>>
基于django后端的html、js简单实现含中文csv文件下载
查看>>
MySQL的InnoDB的幻读问题
查看>>
【转】 HTML解析:基于XPath的C#类库HtmlAgiliytyPack
查看>>