要求:
1.个人账户(存在文件里面)。里面有用户名 密码 重复登录次数(3次登录失败锁定) 余额。
2.显示商品列表,让用户根据序号选择商品,加入购物车
3.商品列表也是个文件,商品如果特别多要进行分页。
4.购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
5.查看个人购物记录。
6.个人购物记录支持模糊匹配
7.具有充值功能
文件:
shopping
mk|显示器|电脑
ii|桌子
goods (存放商品)
电脑|1999
鼠标|10
游艇|20
美女|998
手机|5000
mac|6000
钱包|300
书|60
杯子|50
被子|100
显示器|600
桌子|300
db (存放用户名,密码,余额,登陆次数)
mk|1|49999933|0
1|1|0|0
kk|1|0|0
ii|1|4660|0
#!/usr/bin/python
# -*- coding:utf-8 -*-
######打开文件######
f1 = open('db', 'r')
f2 = f1.read()
f1.close()
g1 = open('goods', 'r', encoding='utf-8')
s1 = open('shopping','r',encoding='utf-8')
g2 = g1.read()
s2 = s1.read()
g1.close()
s1.close()
user_goods = []
user_dict = {}
gwc = []
u_list = []
shopping = {}
user = input("请输入用户名:")
######将打开的文件转换为list,dict等格式######
for i in f2.split("\n"):
b = i.split("|")
#print(b)
v = {
# 'name':b[0],
'passwd':b[1],
'ye': b[2],
'times': b[3]
}
# print(v)
user_dict[b[0]] = v
#print('user_dict',user_dict)
for ii in g2.split("\n"):
bb = ii.split("|")
# print(b)
vv = {
'name':bb[0],
'price': bb[1],
}
# print(vv)
user_goods.append(vv)
#print(user_goods)
for ii in s2.split("\n"):
cc = ii.split("|")
ac = []
for j in range(1,len(cc)):
vvv = [
cc[j],
]
ac.append(vvv)
cf = []
for i in range(len(ac)):
b = "".join(str(ac[i][0]))
cf.append(b)
#print('cf',cf)
shopping[cc[0]] = cf
#print('sp',shopping)
if user in shopping:
pass
else:
shopping[user] = []
#print(shopping)
################定义相关函数####################
#定义输出商品序号和商品名的函数
def Choose():
if choose == 'x':
pages = len(user_goods) // 10 + 1
n = input("商品共有%s页,请输入选择的页码:" % pages)
start = (int(n) - 1) * 10
end = int(n) * 10
for i, j in enumerate(user_goods[start:end], start+1):
print(i, j["name"], j["price"])
#添加购物车
def sp():
Choose()
while True:
n = input("请选择你的物品或输入q返回:")
if 'q' == n:
gw()
else:
# print(user_goods)
gwc.append(user_goods[int(n)-1]["name"])
print('%s您好!%s已加入购物车!' % (user,gwc))
#定义删除商品后输出购物车列表的函数
def rm_i():
for i, j in enumerate(gwc,1):
print(i, j)
#定义删除商品的函数
def rm():
rm_i()
while True:
r = input("请输入您要删除商品的编号或输入q返回:")
if r == 'q':
gw()
else:
del gwc[int(r)-1]
rm_i()
continue
#查看余额或充值
def top():
top_up = input("您的余额为:%s,输入yes充值,输入任意键返回:" % user_dict[user]["ye"])
if top_up == 'yes':
money = input("请输入充值的金额:")
user_dict[user]["ye"] = int(user_dict[user]["ye"]) + int(money)
yuan = int(user_dict[user]["ye"]) - int(money)
print('您原余额为%s,充值成功后余额为%s元!' % (yuan,user_dict[user]["ye"]))
gw()
else:
gw()
#########结算############
def js():
print('您的购物车>>>%s' % gwc)
jg = []
for i in gwc:
for ii, j in enumerate(user_goods):
if i == j["name"]:
jg.append(j["price"])
num = 0
for i in jg:
num = num + int(i)
# print(num)
user_dict[user]["ye"] = int(user_dict[user]["ye"]) - int(num)
if user_dict[user]["ye"] >= 0:
print('您的余额为%s' % user_dict[user]["ye"])
# print('ppp',shopping)
for uu in gwc:
shopping[user].append(uu)
xr()
shw()
exit()
else:
print('您的余额不足!!!余额为%s' % user_dict[user]["ye"])
gw()
#定义写入文件db和shopping的函数
def xr():
for i, j in user_dict.items():
b_xr = '|'.join(map(str, [i, j["passwd"], j["ye"], j["times"]]))
u_list.append(b_xr)
cxr = "\n".join(u_list)
gg1 = open("db",'w',encoding='utf-8')
gg2 = gg1.write(cxr)
gg1.close()
def shw():
lol=[]
for i,j in shopping.items():
a = i + "|" + '|'.join(shopping[i])
lol.append(a)
gg = '\n'.join(map(str,lol))
#print(gg)
ss = open('shopping','w',encoding='utf-8')
ss2 = ss.write(gg)
ss.close()
############查看个人购物纪录###########
def shop():
print('%s您好!!!\n您之前的购物纪录为:%s \n当前的购物车为:%s' % (user,shopping[user],gwc))
spg = int(input('继续购物:1,结算:2,通过关键词查询纪录:3:'))
if spg == 1:
gw()
elif spg ==2:
js()
elif spg == 3:
y = input('输入您要查询的关键词:')
for i in shopping[user]:
pass
if y in i:
print(i)
print('%s您购买过%s,%s次' % (user,i,shopping[user].count(i)))
print(b)
shop()
####################购物######################
def gw():
global choose
choose = input('''
添加购物车:x
删除购物成商品:r
查看余额或充值:c
结账并退出:j
查看购物纪录:p
直接退出:q
请输入:''')
if choose == 'x':
sp()
elif choose =='r':
rm()
elif choose == 'c':
top()
elif choose == 'q':
exit()
elif choose == 'p':
shop()
elif choose == 'j':
js()
#################用户登陆,新用户注册#################
if user in user_dict.keys():
if user_dict[user]["times"] == '3':
print('您的用户已被锁定,请联系管理员:')
else:
i = 0
while i < 3:
passwd = input("输入您的密码:")
if user_dict[user]["passwd"] == passwd:
print('登陆成功')
gw()
i = i + 1
else:
user_dict[user]["times"] = 3
print("您的密码被锁")
else:
print('没有注册')
user = input("请输入注册姓名")
passwd = input("请输入密码")
password = input("再次输入密码")
if passwd == password:
print("注册成功")
price = input("您是新用户,余额为0,充值输入yes,否为no:")
if price == 'yes':
jine = input("请输入充值金额:")
u_x ={
"passwd":password,
"ye":jine,
"times":0
}
user_dict[user]=u_x
# print(user_dict)
else:
u_x = {
"passwd": password,
"ye":0,
"times": 0
}
user_dict[user] = u_x
gw()
else:
print("您输入的密码与上次不一致")
#print(user_dict)




