一、購物車需求說明:
本文檔只適用於快速使用本程序,你可以獲得更多的細節,在作者的博客網站。
項目名稱: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
------------------------------------