Python之路—Day2作业
2016-05-21 12:30
519 查看
作业需求:
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,用户登录验证程序:
shopping.py
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,用户登录验证程序:
#!/usr/bin/env python # -.- coding: utf-8 -.- # by sandler import sys import os import datetime import json from login import login #从login.py导入login函数 username = input("username: ").strip() #.strip可以去除用户输入中的空格 password = input("password: ").strip() welcome = ''' ************************************** ** \033[31mWelcome %s to NB shopping mall\033[0m ** ************************************** '''% username item_dic = { "手机":[ ("Nokia",999), ("Samsung",3999), ("MOTO",2099), ("HTC",1999) ], "汽车":[ ("Jeep",20000), ("Benz",40000), ("BMW",30000), ("Tesla",8000) ] } #商品列表 ''' user_info = { "jack":{ "balance":"", "buyname":"", "buynum":"", "total":"" }, "yuli":{ "balance":"", "buyname":"", "buynum":"", "total":"" }, "alice":{ "balance":"", "buyname":"", "buynum":"", "total":"" } } ''' #用户信息存储示例 r_log = open('userlog.txt','r') #读取文件 user_log = json.load(r_log) #读取的信息序列化为字典 r_log.close() #关闭文件 Balance = user_log[username]["balance"] #用户余额 Buyname = user_log[username]["buyname"] #用户购买商品名称 Buynum = user_log[username]["buynum"] #用户购买商品数量 Total = user_log[username]["total"] #用户购买商品总价 check_car = ''' 用 户 名:[\033[31m%s\033[0m] 余 额:[\033[31m%s\033[0m] 购买商品:[\033[31m%s\033[0m] 购买数量:[\033[31m%s\033[0m] 购买总价:[\033[31m%s\033[0m] ''' % (username,Balance,Buyname,Buynum,Total) if login(username,password): #用户登录检查 print(welcome) else: exit() #用户登录失败退出程序 flag = True #定义退出标签 while flag: print("\033[34m商品分类:\033[0m") for index,val in item_dic.keys(): #循环商品分类 print(index,val) user_choice = input('请选择您要购买的商品种类[q=Quit,c=Check]:') if user_choice == "q": #用户输入为“q”退出 flag = False break elif user_choice == 'c': #用户输入为“c”打印用户信息 print(check_car) print('-'*40) continue flag_t = True #定义内循环标签 while flag_t: if user_choice in item_dic.keys(): #判断用户输入商品分类 sp_item = item_dic[user_choice] while flag: print("商品列表") for item in enumerate(sp_item): #循环打印商品明细 index = item[0] p_name = item[1][0] p_price = item[1][1] print(index,'.',p_name,p_price) sp_choice = input("请选择您要购买的商品[q=Quit,c=Check,b=Back]:") #用户输入需要购买的商品序号 if sp_choice == "q": print(check_car) print('-'*40) print("[\033[31m程序即将推出,感谢使用,欢迎下次光临!\033[0m") print('-'*40) flag = False break elif sp_choice == 'c': print(check_car) print('-'*40) continue elif sp_choice == 'b': #判断用户输入是否为“b”,是则返回商品分类选择 flag_t = False break sp_num = input("请输入需要购买的数量:") #用户输入需要购买的数量 if sp_choice.isdigit() and sp_num.isdigit():#判断用户输入是否为数字 sp_choice = int(sp_choice) sp_num = int(sp_num) if sp_choice < len(sp_item) and sp_num != 0: p_item = sp_item[sp_choice] if p_item[1] <= Balance: #shop_car.append(p_item[0]) #放入购物车 buy_money = p_item[1]*sp_num #用户购买商品总价=数量乘以单价 Balance -= buy_money #用户余额减去用户购买商品总价 print('购买[%s],数量[%s],总价[%s],您的余额为 [%s]' %(p_item[0],sp_num,buy_money,Balance)) user_log[username]["balance"] = Balance #用户购买商品后的余额写入预定字典 user_log[username]["buyname"] = p_item[0] #用户购买商品名称写入预定字典 user_log[username]["buynum"] = sp_num #用户购买商品数量写入预定字典 user_log[username]["total"] = buy_money ##用户购买商品总价写入预定字典 w_log = open('userlog.txt','w') #以写方式打开用户信息文件 json.dump(user_log,w_log) #变更后的用户信息写入文件 w_log.close() #关闭文件 #print(user_log) else: print('您的余额为 [%s],暂时不能购买,请充值! ' % Balance)
shopping.py
相关文章推荐
- 练习014-015
- 用Python玩转数据》 南京大学 张莉 讲的不错,因为会讲知识背后的原理和思维方式
- python 识别验证码
- python 2.5源代码编绎
- Python装饰器模式学习总结
- Python装饰器模式学习总结
- windows10下sublime_python配置
- Python学习之NumPy篇
- python结构
- 用python播放音乐--pygame package
- python多线程备份MYSQL数据库并删除旧的备份。
- Python: Convert rst to html
- python scrapy cannot import name xmlrpc_client的解决方案,解决办法
- Oslo命令行解析
- Python中敏感信息(用户名、密码等)处理方法――添加到环境变量
- python 如何输出百分数(如23%)
- python第二天
- Meet Python: little notes
- python基础
- PYTHON 基础