python购物车优化
2018-07-23 05:41:39来源:博客园 阅读 ()
一.需求分析
- 拥有用户接口和商家接口
- 用户能够进行消费记录查询,充值,购物等功能,消费记录存储于数据库
- 商家可以进行商品的增删改等操作
二.程序流程图
程序大致流程图如下:
三.代码实现
本程序分成两部分,生成两个py函数,分别是DataAccess_txt.py和ShoopingCar.py,DataAccess_txt.py函数主要是用于编写一些数据库的操作接口,比如增删改操作,用户数据查询存储等操作。ShoopingCar.py用户主函数的编辑与处理,话不多说上代码:
DataAccess_txt.py程序代码如下:
import time#导入模块方法,用于系统时间获取 #查询数据库中的数据 def search_data_access(): goods=[] fp = open('goods_info.txt','r')#打开商品信息表 lines = fp.readlines() for line in lines: goods.append(line.rstrip('\n').split(' '))#清楚格式转换成列表 for i in range(len(goods)): print('%s 价格 :%s 库存 :%s'%(goods[i][0],goods[i][1],goods[i][2])) #删除商品操作 def delet_goods_opt(GoodName): goods=[] fp = open('goods_info.txt','r') lines = fp.readlines() for line in lines: goods.append(line.rstrip('\n').split(' '))#清楚格式转换成列表 # for i in range(len(goods)): # print('%s 价格 :%s 库存 :%s'%(goods[i][0],goods[i][1],goods[i][2])) for i in range(len(lines)): if GoodName == goods[i][0]: print("删除商品%s成功!"%goods[i][0]) goods.remove(goods[i]) fp.close() fp = open('goods_info.txt', 'w') for i in range(len(goods)): fp.write(' '.join(goods[i]) + '\n') fp.close() return print("没有此商品信息,删除失败!") #添加商品操作 #参数说明:goodname 商品名 prace 价格 Num 库存量 def add_goods_opt(GoodName,prace,Num): goods = [] fp = open('goods_info.txt', 'r') lines = fp.readlines() for line in lines: goods.append(line.rstrip('\n').split(' ')) # 清楚格式转换成列表 T = False for i in range(len(goods)): if goods[i][0] == GoodName: T = True print("商品已存在,添加失败!") return Info = GoodName+' '+str(prace)+' '+str(Num)+'\n' fp.close() fp = open('goods_info.txt', 'a') fp.write(Info) fp.close() print("添加商品%s成功!" %GoodName ) #修改商品参数 #参数说明:goodname 商品名 prace 价格 Num 库存量 def Change_goods_info(GoodName,prace,Num): goods = [] fp = open('goods_info.txt', 'r') lines = fp.readlines() for line in lines: goods.append(line.rstrip('\n').split(' ')) # 清楚格式转换成列表 for i in range(len(goods)): if goods[i][0] == GoodName: goods[i][1] = str(prace) goods[i][2] = str(Num) fp.close() fp = open('goods_info.txt', 'w') for i in range(len(goods)): fp.write(' '.join(goods[i]) + '\n') fp.close() print("商品%s参数修改成功!"%(GoodName)) return print("数据库中没有此商品,修改失败!") #查余额 def user_printAccountBalance(GoodName): user_info=[] fp = open('users_value.txt', 'r') lines = fp.readlines() for line in lines: user_info.append(line.rstrip('\n').split(' ')) # 清除格式转换成列表 for i in range(len(user_info)): if user_info[i][0] == GoodName: print("\033[32;1m%s\033[0m的账户余额 :\033[32;1m%s\033[0m"%(GoodName,user_info[i][1])) return #充值 # UserName :用户名,充值金额 :新老用户标识 新用户为True老用户为False def user_TopUp(UserName,Value): user_info = [] fp = open('users_value.txt', 'r') lines = fp.readlines() for line in lines: user_info.append(line.rstrip('\n').split(' ')) # 清除格式转换成列表 for i in range(len(user_info)): if user_info[i][0] == UserName: user_info[i][1]=str(int(user_info[i][1])+Value) fp.close() fp = open('users_value.txt', 'w') for temp in range(len(user_info)): fp.write(' '.join(user_info[temp]) + '\n') fp.close() print("充值成功\033[32;1m%s\033[0m当前的账户余额 :\033[32;1m%s\033[0m" % (UserName, user_info[i][1])) return user_info = UserName + ' ' + str(Value) + '\n' # +' '+ (str(time.ctime())).replace(' ','')+'\n' fp = open('users_value.txt', 'a') fp.write(user_info) fp.close() print("新用户充值成功\033[32;1m%s\033[0m当前的账户余额 :\033[32;1m%s\033[0m" % (UserName, Value)) #查询用户消费记录 def user_RecordsConsumption(GoodName): user_info = [] fp = open('users_info.txt', 'r') lines = fp.readlines() fp.close() for line in lines: user_info.append(line.rstrip('\n').split(' ')) # 清除格式转换成列表 T = False for i in range(len(user_info)): if GoodName == user_info[i][0]: T=True print('用户 :\033[32;1m%s\033[0m 购物清单 :%s 消费 :%s 日期 :%s'%(user_info[i][0],user_info[i][1],user_info[i][2],user_info[i][3])) if T==False: print("用户\033[32;1m%s\033[0m无消费记录!"%GoodName) #购物车 def user_ShoopCar(Username): goods_info = [] ShoopCar = [] # 创建购物车列表 expense=0 fp = open('goods_info.txt', 'r') f = open('users_value.txt','r') ValueAccess = f.readlines() lines = fp.readlines() f.close() fp.close() for line in ValueAccess: if line.split(' ')[0] == Username: Salary = int(line.split(' ')[1]) for line in lines: goods_info.append(line.rstrip('\n').split(' ')) # 清除格式转换成列表 while True: for i, index in enumerate(goods_info): print(i, index) getNum = input("请输入要购买的商品编号,结算输入q :") if getNum.isdigit(): getNum=int(getNum) if Salary >= int(goods_info[getNum][1]): ShoopCar.append(goods_info[getNum][0]) Salary = Salary - int(goods_info[getNum][1]) expense += int(goods_info[getNum][1]) if int(goods_info[getNum][2]) > 0: goods_info[getNum][2] = str(int(goods_info[getNum][2])-1) print("当前余额为 :\033[31;1m%s\033[0m"%Salary) else: print("余额不足!") elif getNum=='q': f = open('users_info.txt', 'a') f.write( Username + ' ' + ','.join(ShoopCar) +' '+ str(expense) +' '+(str(time.ctime())).replace(' ','')+'\n') f.close() f = open('goods_info.txt', 'w') for i in range(len(goods_info)): f.write(' '.join(goods_info[i]) + '\n') f.close() value_info=[] f = open('users_value.txt', 'r') lines = f.readlines() for line in lines: value_info.append(line.rstrip('\n').split(' ')) # 清除格式转换成列表 f.close() for i in range(len(value_info)): if value_info[i][0] == Username: value_info[i][1] = str(Salary) f = open('users_value.txt', 'w') for i in range(len(value_info)): f.write(' '.join(value_info[i]) + '\n') f.close() break else: pass
ShoopingCar.py程序代码如下:
import DataAccess_txt#要导入DataAccess_txt.py这个模块 while True: Num=input("1.用户界面,2.商家界面,输入q退出 :") if Num.isdigit(): Num = int(Num) if Num == 1: username = input("Please Input The Username :") DataAccess_txt.user_printAccountBalance(username) while True: UserChoose = input("1.查询购物记录,2.购物,3.充值,输入q返回上级目录 :") if UserChoose.isdigit(): UserChoose = int(UserChoose) if UserChoose == 1: DataAccess_txt.user_RecordsConsumption(username)#查询购物记录 elif UserChoose == 2: DataAccess_txt.user_ShoopCar(username)#购物车 elif UserChoose == 3: value = int(input("请输入充值金额 :")) DataAccess_txt.user_TopUp(username,value)#充值 elif UserChoose=='q': break else: pass elif Num == 2:#商家界面 DataAccess_txt.search_data_access()#打印商品信息和库存 while True: UserChoose = input("1.添加商品,2.修改商品信息,3.删除商品,输入q返回上级目录 :") if UserChoose.isdigit(): UserChoose = int(UserChoose) if UserChoose==1: goodsname=input("请输入商品名 :") goodsvalue=int(input("请输入商品价格 :")) goodnum = int(input("请输入商品数量 :")) DataAccess_txt.add_goods_opt(goodsname,goodsvalue,goodnum)#商品添加操作 elif UserChoose==2: goodsname = input("请输入要修改的商品名 :") goodsvalue = int(input("请输入商品价格 :")) goodnum = int(input("请输入商品数量 :")) DataAccess_txt.Change_goods_info(goodsname, goodsvalue,goodnum) elif UserChoose==3: goodsname = input("请输入要删除的商品名 :") DataAccess_txt.delet_goods_opt(goodsname) elif UserChoose=='q': break else: pass else: pass elif Num == 'q': break else: pass
要注意的是必须要记得导入模块,不然没有办法使用自己编写的数据操作接口,ShoopingCar.py的第一行代码就是模块的导入,调用DataAccess_txt.py的数据操作接口时,以delet_goods_opt()删除商品信息接口为例,调用方法是DataAccess_txt.delet_goods_opt()。
数据库文件截图如下:
users_vlaue.txt文件存储的第一个数据参数为用户名,第二个参数为用户余额,参数之间用空格隔开
users_info.txt文件存储的第一个数据参数为用户名,第二个参数为用户购物商品记录,第三个参数为消费总数,第四个参数为日期
goods_info.txt文件存储的第一个数据参数为商品名,第二个参数为商品价格,第三个参数为库存总数
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash