作业:购物商城

商品展示,价格

买,加入购物车

付款,钱不够

流程图如下:

代码共有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编写购物商城的更多相关文章

  1. day2编写购物商城(1)

    作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够     具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商 ...

  2. day2、购物商城

    作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够 代码如下: import codecs #登录接口,用户名密码都正确登录成功,否则失败 def login(your_name,your_ ...

  3. Day2作业:购物商城

    ReadMe: 注意事项: 1.本程序需要提前安装prettytable模块,在商品展示时使用了prettytable 2.数据库使用json模块,有中文数据,在mac系统上编写,运行没有出现问题,在 ...

  4. day2 购物商城

    购物商城 商品展示.价格 买,加入购物车 付款,钱不够.(减商品,充值)

  5. Python学习笔记-练习编写ATM+购物车(购物商城)

    作业需求: 模拟实现一个ATM + 购物商城程序: 1.额度 15000或自定义 2.实现购物商城,买东西加入 购物车,调用信用卡接口结账 3.可以提现,手续费5% 4.支持多账户登录 5.支持账户间 ...

  6. 微信小程序购物商城系统开发系列-目录结构

    上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的 ...

  7. python day19 : 购物商城作业,进程与多线程

    目录 python day 19 1. 购物商城作业要求 2. 多进程 2.1 简述多进程 2.2 multiprocessing模块,创建多进程程序 2.3 if name=='main'的说明 2 ...

  8. Python开发程序:ATM+购物商城

    一.程序要求 模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还 ...

  9. ThinkPHP 购物商城网站(数据库中增删改查的功能实现)——————重点——————

    控制器 ---------------------GoodsController.class.php------------------------------------------------- ...

随机推荐

  1. c# string 和 byte[]数组之间转换

    在文件流读取和存储过程当中,经常涉及到byte[]数组形式存储数据,再此过程中也涉及到String类型字符串和byte[]的类型转换,下面我们举例说明一下. 现在有一个字符串: string str ...

  2. 怎么在.net里面解析JSON文件?

    我在网上搜了好多的文章,讲了很多的方法.但是无一例外的都看不懂...可能是因为我在这方面是个白痴吧... 所幸的是,我搜到了一个博客,写的很是清晰,比我之前看的大片文章写的好多了,在这里:http:/ ...

  3. [应用篇]第三篇 JSP 标准标签库(JSTL)总结

    有一种友谊叫做: "陪我去小卖部." "不去," "我请你" "走." 你想起了谁:胖先生?还有人陪你吗? JSP 标准 ...

  4. linux下项目上线配置nginx+tomcat

    nginx.conf server { listen 80; server_name www.examples.com; client_max_body_size 300m; #charset koi ...

  5. python学习笔记3-函数的递归

    递归就是指自己函数的自我调用 #递归 #自己调用自己,函数的循环 def test1(): num = int(input('please enter a number:')) if num%2==0 ...

  6. 为FreeBSD安装adobe flash插件

    参考 FreeBSD官方手册浏览器一章. pkg install nspluginwrapper nspluginwrapper 是一个辅助安装配置 NetScape Plugin的工具. 可以为Ne ...

  7. Codeforces刷题计划

    Codeforces刷题计划 已完成:-- / -- [Codeforces370E]370E - Summer Reading:构造:(给定某些数,在空白处填数,要求不下降,并且相邻差值<=1 ...

  8. 【转】WireShark 过滤规则

    原链:[渗透神器系列]WireShark wireshark是一款网络流量抓取分析神器,也是安全工具使用排行中排名第一的工具.使用wireshark必须要牢记一些常用的数据包过滤规则,对于寻找一些特定 ...

  9. sqlmap tamper脚本

    本文来自:SQLmap tamper脚本注释, 更新了一些脚本,<<不断更新中>> 目前已经总共有50+的脚本,故对源文章进行更新... sqlmap-master ls -l ...

  10. 关于 jQuery 中的 $.data() 方法和 jQuery 对象上的data 方法

    参见文章:http://www.it165.net/pro/html/201404/11922.html