day2编写购物商城
作业:购物商城
商品展示,价格
买,加入购物车
付款,钱不够
流程图如下:

代码共有4个文件,如下:
用户文件:
alex
geng
zhang
lou
zeng
商品文件:
小米3
比亚迪宋
格力变频空调
TCL电视
联想001
跑步鸡
大众
马自达
购物车文件:
比亚迪宋 geng
跑步鸡 geng
马自达 geng
格力变频空调 geng
钱包文件:
geng
zeng
代码如下:
import sys def show():
'''商品展示模块'''
shop_lists = []
shoppings = []
print("商品编号: 商品名称: 商品价格: 商品库存:", end='')
print("\n*************************************************************************************")
with open("shoppings","r") as f:
for line in f:
(shopping_num,shopping_name,shopping_price,shopping_stock) = line.strip().split()
shop_lists.append(shopping_num)
shoppings.append([shopping_num,shopping_name,shopping_price,shopping_stock])
print(shopping_num +" \t",shopping_name+" \t",shopping_price+" \t",shopping_stock+" \t")
return (shop_lists,shoppings) def login(user):
'''登录模块,用户验证用户登录状态'''
users = {}
with open("users_file","r") as user_f:
for user_line in user_f:
username,password = user_line.strip().split()
users[username] = password
if user in users.keys():
while True:
pwd = input("请输入你的密码:")
if pwd == users[user]:
print("您好,欢迎%s,购物愉快!" %user)
active = False
return active
else:
print("对不起,您输入的密码不对,请重新输入!")
else:
print("对不起,您输入的账户不对,请核对后重新输入!")
return True def shopping_cart(stock,user,stock_list,shoppings):
'''购物车模块,向购物车中添加商品'''
shop_lists = []
if stock in stock_list:
while True:
num = input("请输入你要购买商品的数量:")
if int(num) <= int(shoppings[stock_list.index(stock)][]):
shop_lists.append([stock,shoppings[stock_list.index(stock)][],shoppings[stock_list.index(stock)][],num,user])
shoppings[stock_list.index(stock)][] = str(int(shoppings[stock_list.index(stock)][]) - int(num))
break
elif int(num) > int(shoppings[stock_list.index(stock)][]):
print("对不起,您输入的数量超过库存,请重新输入!")
else:
print("对不起,您输入的商品编号不存在,请核对后输入!")
with open("cart_file","a+") as append_f:
for shop_list in shop_lists:
user_line = " ".join(shop_list)
append_f.write(user_line + "\n")
return shoppings def balance(user):
#计算此次购物消费
costs = []
with open("cart_file","r") as balance_f:
for line in balance_f:
num,name,price,stock,username = line.strip().split()
if username == user:
costs.append(int(price)*int(stock))
price =
for cost in costs:
price += cost
return price def recharge(user):
'''充值模块'''
money = input("请输入你要充值的金额:")
user_wallets = []
with open("wallet_file","r") as charge_f:
for line in charge_f:
username,bal = line.strip().split()
if username == user:
bal = str(int(bal) + int(money))
user_wallets.append([username,bal])
else:
user_wallets.append([username,bal])
with open("wallet_file","w") as recharge_f:
for user_wallet in user_wallets:
recharge_f.write(" ".join(user_wallet) + "\n") def account(user,price):
#这里使用递归的方法来进行结算
user = user
price = price
wallets = []
with open("wallet_file","r") as obj_f:
for line in obj_f:
username,purse = line.strip().split()
if username == user:
if int(purse) >= int(price):
purse = str(int(purse) - int(price))
print("支付成功!")
wallets.append([username,str(purse)])
else:
print("对不起,你的余额不足,请充值")
recharge(user)
account(username,purse) #递归执行函数,知道金额大于为止
else:
wallets.append([username,str(purse)])
return wallets if __name__ == "__main__":
active = True
message = '''
******************************************************************************************* \[;1m欢迎来到小猪猪购物网站,祝你购物愉快!\[0m *******************************************************************************************
'''
print(message)
lists = show()
while active:
user = input("请输入你的用户名:")
active = login(user)
global ShoppingStock
global ShoppingLists
ShoppingStock = lists[] #定义全局变量,得到商品的编号,存在一个列表中,目的是获取商品的索引号
ShoppingLists = lists[] #定义全局变量,存放遍历商品的信息,目的是方便之后写会文件
#购物车添加商品了
while True:
shopping_index = input("请输入你要购买商品的编号(输入quit退出购物):")
if shopping_index == "quit": #当用户输入quit时候,退出选购
break
else:
ShoppingLists = shopping_cart(shopping_index,user,ShoppingStock,ShoppingLists)
with open("shoppings","w") as modify_f:
for shopping_list in ShoppingLists:
shopping_line = " ".join(shopping_list) + "\n"
modify_f.write(shopping_line)
price = balance(user)
wallets = account(user,price)
with open("wallet_file","w") as wallet_f:
for user_line in wallets:
wallet_f.write(" ".join(user_line) + "\n")
运行结果如下: ******************************************************************************************* 欢迎来到小猪猪购物网站,祝你购物愉快! *******************************************************************************************
商品编号: 商品名称: 商品价格: 商品库存:
*************************************************************************************
10001 小米3 2699 50
10002 比亚迪宋 100001 92
10003 格力变频空调 20000 5
10004 TCL电视 6000 98
10005 联想001 5600 992
10006 跑步鸡 250 664
10007 大众 58000 97
10008 马自达 68000 44
请输入你的用户名:geng
请输入你的密码:888
您好,欢迎geng,购物愉快!
请输入你要购买商品的编号(输入quit退出购物):10002
请输入你要购买商品的数量:1
请输入你要购买商品的编号(输入quit退出购物):10006
请输入你要购买商品的数量:1
请输入你要购买商品的编号(输入quit退出购物):10008
请输入你要购买商品的数量:1
请输入你要购买商品的编号(输入quit退出购物):10003
请输入你要购买商品的数量:1
请输入你要购买商品的编号(输入quit退出购物):quit
对不起,你的余额不足,请充值
请输入你要充值的金额:100000
支付成功!
上述代码运行流程如下:
(1)展示商品信息;
(2)用户登录验证;
(3)用户输入想购买产品及数量,输入quit退出购物;
(4)添加到购物车文件;
(5)结算,去购物车计算购物花费;
(6)调用用户钱包文件,看余额是否够支付;
(7)余额大于等于等次购物,支付成功;余额不够,用户充值;
(8)调用充值模块,进行充值;
(9)递归,判断知道用户充值后的余额大于等于本次购物花费,支付成功;
(10)结束程序。
掌握知识:
(1)列表遍历的方法,列表修改是要先读取到一个列表中,然后根据用户输入的信息来进行修改;
(2)文件的来回打开与关闭;
(3)应用到了递归,就是当用户的余额一直较少的时候,就递归,直到用户的余额大于购物的花费为止;
(4)循环的开始与终止(break),程序的开始与终止(sys.exit),函数的开始与终止(return);
(5)列表的关联与索引情况,读取文件的顺序的解决问题。
day2编写购物商城的更多相关文章
- day2编写购物商城(1)
作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够 具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商 ...
- day2、购物商城
作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够 代码如下: import codecs #登录接口,用户名密码都正确登录成功,否则失败 def login(your_name,your_ ...
- Day2作业:购物商城
ReadMe: 注意事项: 1.本程序需要提前安装prettytable模块,在商品展示时使用了prettytable 2.数据库使用json模块,有中文数据,在mac系统上编写,运行没有出现问题,在 ...
- day2 购物商城
购物商城 商品展示.价格 买,加入购物车 付款,钱不够.(减商品,充值)
- Python学习笔记-练习编写ATM+购物车(购物商城)
作业需求: 模拟实现一个ATM + 购物商城程序: 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.支持多账户登录 5.支持账户间 ...
- 微信小程序购物商城系统开发系列-目录结构
上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...
- python day19 : 购物商城作业,进程与多线程
目录 python day 19 1. 购物商城作业要求 2. 多进程 2.1 简述多进程 2.2 multiprocessing模块,创建多进程程序 2.3 if name=='main'的说明 2 ...
- Python开发程序:ATM+购物商城
一.程序要求 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还 ...
- ThinkPHP 购物商城网站(数据库中增删改查的功能实现)——————重点——————
控制器 ---------------------GoodsController.class.php------------------------------------------------- ...
随机推荐
- c# string 和 byte[]数组之间转换
在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...
- 怎么在.net里面解析JSON文件?
我在网上搜了好多的文章,讲了很多的方法.但是无一例外的都看不懂...可能是因为我在这方面是个白痴吧... 所幸的是,我搜到了一个博客,写的很是清晰,比我之前看的大片文章写的好多了,在这里:http:/ ...
- [应用篇]第三篇 JSP 标准标签库(JSTL)总结
有一种友谊叫做: "陪我去小卖部." "不去," "我请你" "走." 你想起了谁:胖先生?还有人陪你吗? JSP 标准 ...
- linux下项目上线配置nginx+tomcat
nginx.conf server { listen 80; server_name www.examples.com; client_max_body_size 300m; #charset koi ...
- python学习笔记3-函数的递归
递归就是指自己函数的自我调用 #递归 #自己调用自己,函数的循环 def test1(): num = int(input('please enter a number:')) if num%2==0 ...
- 为FreeBSD安装adobe flash插件
参考 FreeBSD官方手册浏览器一章. pkg install nspluginwrapper nspluginwrapper 是一个辅助安装配置 NetScape Plugin的工具. 可以为Ne ...
- Codeforces刷题计划
Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...
- 【转】WireShark 过滤规则
原链:[渗透神器系列]WireShark wireshark是一款网络流量抓取分析神器,也是安全工具使用排行中排名第一的工具.使用wireshark必须要牢记一些常用的数据包过滤规则,对于寻找一些特定 ...
- sqlmap tamper脚本
本文来自:SQLmap tamper脚本注释, 更新了一些脚本,<<不断更新中>> 目前已经总共有50+的脚本,故对源文章进行更新... sqlmap-master ls -l ...
- 关于 jQuery 中的 $.data() 方法和 jQuery 对象上的data 方法
参见文章:http://www.it165.net/pro/html/201404/11922.html