一、购物车需求说明:
本文档只适用于快速使用本程序,你可以获得更多的细节,在作者的博客网站。
项目名称:Python购物车程序
作者:Jeb/李家宝
时间:2016/10/21
功能说明:
1.购物车系统登录时验证用户名及密码(jeb/jeb.li);
2.用户联系管理员进行充值功能;
3.用户购物并打印详细购物列表;
4.用户账户及余额持久化到文件。
使用方法:
python 购物车程序V0.2.py
适用于Windows、Linux等32位或64位操作系统,Python运行环境为python 3.5.1
备注:数据持久化均基于列表,更高效的方式可以采用Json或字典方式进行持久化,使用者可自行优化设计。
模块代码说明:
1.account_auth():用户认证信息读取函数
本函数为逐行读取本地account_info.ini文件中用户信息,并格式化输出后返回account信息;
account_info.ini文本中的信息为:
jeb
jeb.li
格式化输出后的列表信息如下:
['jeb', 'jeb.li']
2.auth_login():用户登录认证函数
本函数为循环登录验证函数,接收account_auth()传递的account信息,并进行验证;
验证通过进入购物车操作,验证失败重新进行用户名及密码输入。
欢迎您购物车系统V0.2
请输入用户名:jeb
请输入密码:jeb.li
3.account_balance_read():从account_balance.ini文件中读取用户的余额信息并返回
欢迎您[jeb]光临!
您的账户余额为:[7095]
4.account_recharge(user,cash):通过管理员账户登录购物车,给在用户充值指定的金额并持续化到本地;
-------------操作列表-------------
购物操作编号:1
充值操作编号:2
退出操作请输入:quit
请输入操作编号【quit】>>:2
-----------管理员登录界面------------
请输入管理员账户名:admin
请输入管理员密码:admin
欢迎管理员登录购物车系统!
请输入您需要为[jeb]账户充值的金额:2000
充值成功![jeb]账户现在的余额为:[9095]
5.account_save(account):用户购物完毕后,更新用户的余额信息到本地文件account_balance.ini,采用'W+'的方式进行覆盖写更新用户及余额信息
------------您的购物清单------------
名称 价格 数量
Iphone 5800 1
Coffee 30 2
您消费的总金额:[5860]
您所剩的余额为:[1235]
购物时间:2016-10-22 00:32:30
------------------------------------
6.shop():购物车主逻辑函数,包括判断用户及管理员密码是否正确,余额是否足以购买商品,余额不足打印友好提示,并打印购物清单记录,退出系统等。
Enjoy!
二、程序代码段:
#!/usr/bin/env python
#_*_coding:utf-8 _*_
#__author__ = 'Jeb.li/李家宝'
#__Date__ = 2016/10/19
import datetime
import os
#购物车商品清单列表
shoplist =[
['Iphone',5800],
['Macbook',12800],
['Coffee','30'],
['Bike','2000'],
]
client_list = []#客户购物清单商品名称--价格列表
client_lists = []#客户购物清单商品名称--数量列表
client_lists2 = []#客户购物清单商品名称--价格--数量列表
client_lists3 = []#客户购物清单商品名称--价格--数量列表set集,去除重复项
#------------------------------------------------------
#购物车登录模块
#失败次数计数器
count = 0
#账户认证列表,初始化用户名jeb,密码为jeb.li
account_info =[]
#账户余额信息列表
account_balance =[]
#客户账户信息格式化读取模块
def account_auth():
Account =[]
file_object = open('account_info.ini', 'r')
try:
for line in file_object.readlines():
line_temp = line.replace('\n','')
Account.append(line_temp)
finally:
file_object.close()
return Account
#管理员账户认证函数,初始化管理员账户为admin,密码为admin
def account_admin_auth():
Account_admin =[]
file_object = open('admin_info.ini', 'r')
try:
for line in file_object.readlines():
line_temp = line.replace('\n','')
Account_admin.append(line_temp)
finally:
file_object.close()
return Account_admin
#账户余额信息格式化读取模块
def account_balance_read():
balance =[]
file_object = open('account_balance.ini', 'r')
try:
for line in file_object.readlines():
line_temp = line.replace('\n','')
balance.append(line_temp)
finally:
file_object.close()
return balance
#账户及余额信息持久化到本地account.ini
def account_save(account):
#以消除文件内容,然后以读写方式打开文件。
SaveFile = open('account_balance.ini','w+')
SaveFile.write(account[0])
SaveFile.write('\n')
SaveFile.write(str(account[1]))
SaveFile.close()
#账户充值函数
def account_recharge(user,cash):
#以消除文件内容,然后以读写方式打开文件。
SaveFile = open('account_balance.ini','w+')
SaveFile.write(user)
SaveFile.write('\n')
SaveFile.write(str(cash))
SaveFile.close()
#登录循环验证主模块
def auth_login():
while True:
print("欢迎您购物车系统V0.2")
name = input('请输入用户名:')
pwd = input('请输入密码:')
account = account_auth()
if name == account[0] and pwd == account[1]:
return name
else:
print("用户名或密码错误,请重新输入!")
#-----------------------------------------------
#购物单日期函数
def shoptime():
now = datetime.datetime.now()#时间数组
styleTime = now.strftime("%Y-%m-%d %H:%M:%S")
return styleTime
#-------------------------------------------------
#购物车数据结构
#-------------------------------------------------
def shop():
#客户认证登录函数
user = auth_login()
#账户信息-余额列表
account_balance2 = [user]
#账户余额从本地account_balance.ini读取,并赋予变量account_balance
account_balance = account_balance_read()
#初始化salary值
salary = int(account_balance[1])
#保存salary值
salary_init = salary
#打印账户信息及余额
print("欢迎您\033[32;1m[%s]\033[0m光临!" %user)
print("您的账户余额为:\033[31;1m[%s]\033[0m" %salary)
while True:
# 打印操作界
print("操作列表".center(30, "-"))
print("购物操作编号:1")
print("充值操作编号:2")
print("退出操作请输入:quit")
operations = input("请输入操作编号【quit】>>:")
if operations.isdigit():
operations = int(operations)
if operations == 1:
break
elif operations == 2:
count =0
while True:
print("管理员登录界面".center(30,"-"))
name = input('请输入管理员账户名:')
pwd = input('请输入管理员密码:')
admin = account_admin_auth()
if name == admin[0] and pwd == admin[1]:
print("欢迎管理员登录购物车系统!")
break
else:
print("用户名或密码错误,请重新输入!")
count = count +1
if count >= 3:
print("\033[31;1m管理员账户错误输入超过三次,账户将自动退出系统!\033[0m")
exit()
money = int(input("请输入您需要为\033[31;1m[%s]\033[0m账户充值的金额:" % user))+salary
account_recharge(user, money)
money2 =int(account_balance_read()[1])
print("充值成功!\033[31;1m[%s]\033[0m账户现在的余额为:\033[31;1m[%s]\033[0m" %(user,money2))
else:
print("请输入正确的操作项数字!".center(30,"-"))
elif operations == "quit":
print("欢迎下次再来!".center(30,"-"))
exit()
#打印商品列表
print("商品列表".center(30,"-"))
for i,elem in enumerate(shoplist):
print(i,elem[0],elem[1])
print("".center(34,"-"))
#购物车购物程序
while True:
choice = input("请输入产品编号【quit】>>:")
if choice.isdigit():
choice = int(choice)
if choice >=0 and choice < len(shoplist):
#判断钱够不够
p = shoplist[choice]
if salary > int(p[1]):#买的起
salary -= int(p[1])#执行扣款
client_list.append(p)
#\033[32;1m[%s]\033[0m 32--绿色 31--红色
print("已加入\033[32;1m[%s]\033[0m进入您的购物车,您当前的余额为:\033[31;1m[%s]\033[0m" %(p[0],salary))
else:
print("余额不足,您的余额为:\033[32;1m[%s]\033[0m" % salary)
continue
else:
print("没有此商品,请输入正确的商品编号!")
elif choice == "quit":
#购物清单商品名称--数量列表
for j, elem2 in enumerate(client_list):
client_lists.append(elem2[0])
# 购物清单商品名称--价格--数量列表
for k, elem3 in enumerate(client_list):
client_lists2.append([elem3[0], elem3[1],client_lists.count(elem3[0])])
# 购物清单商品名称--价格--数量列表set集
for m in client_lists2:
if not m in client_lists3:
client_lists3.append(m)
#client_lists3 = set(client_lists2)
print("您的购物清单".center(30,"-"))
print("名称 价格 数量")
for L,elem4 in enumerate(client_lists3):
print(elem4[0],elem4[1],elem4[2])
#print("您消费账户为:")
print("您消费的总金额:\033[32;1m[%s]\033[0m"%(salary_init -salary))
print("您所剩的余额为:\033[31;1m[%s]\033[0m" %salary)
print("购物时间:%s" %shoptime())
print("".center(36, "-"))
account_balance2.append(salary)
account_save(account_balance2)
exit()
if __name__ == '__main__':
shop()
三、程序流程图:
四、程序执行效果:
欢迎您购物车系统V0.2
请输入用户名:jeb
请输入密码:jeb.li
欢迎您[jeb]光临!
您的账户余额为:[11175]
-------------操作列表-------------
购物操作编号:1
充值操作编号:2
退出操作请输入:quit
请输入操作编号【quit】>>:2
-----------管理员登录界面------------
请输入管理员账户名:admin
请输入管理员密码:admin
欢迎管理员登录购物车系统!
请输入您需要为[jeb]账户充值的金额:2000
充值成功![jeb]账户现在的余额为:[13175]
-------------操作列表-------------
购物操作编号:1
充值操作编号:2
退出操作请输入:quit
请输入操作编号【quit】>>:1
-------------商品列表-------------
0 Iphone 5800
1 Macbook 12800
2 Coffee 30
3 Bike 2000
----------------------------------
请输入产品编号【quit】>>:2
已加入[Coffee]进入您的购物车,您当前的余额为:[11145]
请输入产品编号【quit】>>:2
已加入[Coffee]进入您的购物车,您当前的余额为:[11115]
请输入产品编号【quit】>>:3
已加入[Bike]进入您的购物车,您当前的余额为:[9115]
请输入产品编号【quit】>>:3
已加入[Bike]进入您的购物车,您当前的余额为:[7115]
请输入产品编号【quit】>>:quit
------------您的购物清单------------
名称 价格 数量
Coffee 30 2
Bike 2000 2
您消费的总金额:[4060]
您所剩的余额为:[7115]
购物时间:2016-10-22 12:09:43
------------------------------------