作业:购物商城

商品展示,价格

买,加入购物车

付款,钱不够

流程图如下:

代码共有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. 科学计算三维可视化---TVTK管线与数据加载(用IVTK根据观察管线)

    一:用IVTK根据观察管线 (一)引入该工具 from tvtk.tools import ivtk 可能需要安装pygments pip3 install pygments (二)使用ivtk显示立 ...

  2. bzoj千题计划156:bzoj1571: [Usaco2009 Open]滑雪课Ski

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 DP不一定全部全状态转移 贪心的舍去一些不合法的反而更容易转移 在一定能力范围内,肯定滑雪所需 ...

  3. Linux命令练习.ziw

    2017年1月10日, 星期二 Linux命令练习 1.统计/usr/bin/目录下的文件个数: # ls /usr/bin | wc -l 判断 /home/goldin目录是否有文件 2.取出当前 ...

  4. 使用abcpdf将html转换成pdf文件

    ABCpdf.NET使用介绍 最新做一个项目需要生成pdf文档以供打印,研究决定使用abcpdf这款组件,先针对其使用方法做一个简单的总结介绍以给有需要的朋友做参考. 一. ABCpdf.NET简单介 ...

  5. plsql developer导入数据库

    需要指向导入命令

  6. 10 款非常棒的CSS代码格式化工具推荐

    如果你刚开始学习CSS,这意味着你的很多代码或结构可能需要优化,比如你可能过多使用了类.添加了多余的间隔或空行等等,这将导致代码臃肿.混乱,可读性和执行效率将大大降低. 本文为你整理了几款CSS工具, ...

  7. [OI]省选前模板整理

    省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...

  8. #error#优化#Model#理解下面这句话错误所导致的错误:"传入一个对象,那么你就拥有了对象的属性"2

    CHENYILONG Blog #error#优化#Model#理解下面这句话错误所导致的错误:"传入一个对象,那么你就拥有了对象的属性"2 © chenyilong. Power ...

  9. spring断言使用

    断言就是断定某一个实际的值为自己预期想得到的,如果不一样就抛出异常. Assert经常用于: 1.判断method的参数是否属于正常值.2.juit中使用. import org.springfram ...

  10. Django rest framwork-CMDB API实战

    一.序列化 serializers.py from rest_framework import serializers from web_manage import models class Asse ...