作业:购物商城

商品展示,价格

买,加入购物车

付款,钱不够

流程图如下:

代码共有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. 区间DP的思路(摘自NewErA)及自己的心得

    以下为摘要 区间dp能解决的问题就是通过小区间更新大区间,最后得出指定区间的最优解 个人认为,想要用区间dp解决问题,首先要确定一个大问题能够剖分成几个相同较小问题,且小问题很容易组合成大问题,从而从 ...

  2. SQL2005函数大全

    表达式:是常量.变量.列或函数等与运算符的任意组合.以下参数中表达式类型是指表达式经运算后返回的值的类型 字符串函数 函数名称 参数 示例 说明 ascii (字符串表达式) select ascii ...

  3. python3使用stmplib发送邮件

    代码如下: import smtplib from email.mime.text import MIMEText from email.header import Header from email ...

  4. 《java语言程序设计》初步学习——各种小Demo

    发现现在的天下几乎都是java的天下啊,虽然我个人对java没什么好感,但是迫于生活压力,还是学一下吧,我关注的应该主要还是web方面,所以应该学的是 java server page(JSP),所以 ...

  5. js 替换部分内容为星号

    function formatPhone(phone) { return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2"); } 姓 ...

  6. Redis(Remote Dictionary Server)入门

    说说特性 存储结构:键值对支持多种数据类型,包括字符串类型,散列类型,列表类型,集合类型,有序集合类型. 内存存储与持久化:支持将内存中的数据异步写入磁盘中. 丰富的功能:支持为每个键值对设置生存时间 ...

  7. Caffe的loss layer(转)

    英文可查:地址 1.SoftmaxWithLoss 对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布.该层可以分解为SoftmaxLayer+Multino ...

  8. NameValuePair方式传参数

    今天工作中联调外部的一个接口用post方式传输,我按照文档封装参数成Jason字符串传入,但是对方一直接受参数为空,折腾了半天也没找到问题.很苦恼,检查代码都没有错误,可是为什么对方接受参数为空呢?然 ...

  9. vuex的安装

    可以启动vue ui 手动添加vuex. 或使用 cnpm install vuex 2.使用,import vuex from “vuex” vue.use(vuex) 3.安装插件, 首先键入谷歌 ...

  10. linux源码安装nginx

    任务目标:源码安装nginx,作为web服务修改配置文件,让配置生效,验证配置 首先要去官网nginx.org下载一个tar包: tar xvf 解包 进入到解包出来的目录,对configure进行配 ...