python制作购物网站_Python实现购物小程序

USER_FILE = 'users.txt'GOODS_FILE= 'goods.txt'

def rw_file(filename, content=0): #读和写文件

if content: #若content不为空,则判定为写文件

with open(filename,'w') as f:

f.write(str(content))else: #若content为空,则判定为读文件

with open(filename,'r') as f:

f=eval(f.read())returnfdefbuyer(username):

menu={'1': find,'2': buy,'3': get,'4': exit

}whileTrue:

choice= input("请输入你想执行的操作(输入【1】查看所有商品,输入【2】添加商品,输入【3】查询购物车和余额,输入【4】退出):")if choice not inmenu:print('输入错误,请重新输入')else:

menu[choice](username)defadmin():

menu={'1': addgoods,'2': recharge,'3': exit

}#role为1时,为管理员

whileTrue:

choice= input('请输入你想执行的操作(输入【1】添加商品,输入【2】充值,输入【3】退出):')if choice not inmenu:print('输入错误,请重新输入')else:

menu[choice]()def login(): #定义用户登录函数,根据用户角色提供指定操作

users =rw_file(USER_FILE)for i in range(3):

username= input("请输入账号:")

passwd= input("请输入密码:")if username in users and passwd == users[username]['passwd'] :if users[username]['role'] == '2': #如果role为2,则为普通用户

print('欢迎光临')

buyer(username)else:print('您已管理员身份登录')

admin( )else:print('账号或密码错误,还能尝试%d次'%(2-i))

i+= 1

def find(*args): #普通查看所有商品

with open('goods.txt') as f:print('所有商品和价格列表:', f.read())def buy(username): #普通用户添加商品到购物车

users =rw_file(USER_FILE)

goods_all=rw_file(GOODS_FILE)

goods= input('请输入你要添加的商品:')if goods ingoods_all:if goods not in users[username]['carts']:if users[username]['money'] >=goods_all[goods]:

users[username]['carts'].append(goods)

users[username]['money'] =float('%.2f'%(users[username]['money'] -goods_all[goods]))

with open('users.txt','w') as f2:

f2.write(str(users))print('商品已成功添加到购物车')else:print('您的余额不足,请充值')else:print('购物车中已添加该商品,无需重复添加')else:print('您输入的商品不存在')def get(username): #普通用户查询购物车中的商品和余额

users =rw_file(USER_FILE)if len(users[username]['carts']) >0:print('您的购物车中已有商品:{goods}'.format(goods = users[username]['carts']))else:print('您还未添加任何商品')print('您的余额:{money}'.format(money=users[username]['money']))def addgoods( ): #管理员添加商品

goods_all =rw_file(GOODS_FILE)

goods_name= input('请输入商品名称:')

goods_price= input('请输入商品价格:')if len(goods_name.strip()) !=0:if goods_name not ingoods_all:ifisprice(goods_price):

goods_all[goods_name]= float('%.2f'%float(goods_price))

rw_file(GOODS_FILE,goods_all)print('商品添加成功')else:print('商品价格必须是正数,请重新输入')else:print('该商品已存在,无需重复添加')else:print('商品名称不能为空,请重新输入')def recharge(): #管理员给指定账号充值

users =rw_file(USER_FILE)

username= input('请输入要充值的账号:')

money= input('请输入要添加的金额:')if username in users andisprice(money):

users[username]['money'] = float('%.2f'%(users[username]['money'] +float(money)))

rw_file(USER_FILE, users)print('操作成功')else:print('输入账号或金额有误,请重新输入')def isprice(price): #判断金额是否有效

if price.count('.') == 1 and price.split('.')[0].isdigit() and price.split('.')[1].isdigit():returnTrueelif price.count('.') == 0 andprice.isdigit():returnTrueelse:returnFalse

login()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值