購物系統程式練習_PYTHON版
阿新 • • 發佈:2019-02-17
單機版購物程式(python版)
#程式名稱:單機版購物系統Python版(本程式的C語言版參見本空間2013年12月17日日誌《本週成果物》)
#程式描述:實現單機版購物系統的登入,註冊,新增商品,新增訂單,頁面跳轉等功能。
#編寫日期:2014.3.22-2014.4.2,2014.7.8-2014.7.9
#編寫人:劉琳澤
#編寫解釋環境:Windows 7 家庭高階版 Python3.3.5rc1 IDLE
#因在python中,不存在函式宣告,故函式呼叫時被調函式必須在主調函式前,故本程式看似倒序,最外層的歡迎語句在最下方
#宣告引用檔案
import time
import sys
import os
#import users
#會員資訊儲存模組
database=[ #用列表儲存會員資訊,因為是單機版系統,會員資訊僅在當前開啟的程式中有效
['admin','admin'], #系統管理員賬號密碼
['luke','123'] #提供測試用普通使用者賬號
]
#商品資訊儲存模組
goodlist=[ #實現方法、功用、效果等同上
['ID','name','quantity','price','state','discount'],
['001','蘋果','1000','3.5','0','10'],
['002','香蕉','200','5','1','9']
]
#訂單資訊儲存模組
orderlist=['ID','username','name','quantity'] #實現方法、功用、效果等同上
#對比類模組,可進行註冊和登入的使用者名稱、密碼校驗和商品是否存在的校驗
class cpr():
def regcpr(self,username,password): #對比方法,用於註冊時校驗使用者名稱和密碼是否存在的對比
if [username,password] in database:
return 0 #存在返回0
else:
return 1 #不存在返回1
def logincpr(self,username,password): #對比方法,用於登入時校驗使用者名稱和密碼是否存在且是否配套
if [username,password] in database: #存在性校驗
if [username,password]==['admin','admin']: #校驗要登入的使用者名稱是否是管理員賬號admin且密碼是否為admin
return 0 #是admin且密碼與之配套返回0
else:
return 1 #不是admin或者密碼與之不配套返回1
else:
return 2 #使用者名稱不存在返回2
def goodscpr1(self,ID): #對比方法,用於新增商品時校驗商品ID是否已存在和在新增訂單時校驗ID
print(ID)
for x in range(0,1001):
if ID==goodlist[x][0]:
return 0 #存在則返回0
else:
return 1 #不存在則返回1
def goodscpr2(self,name): #對比方法,用於新增商品時校驗商品名稱是否已存在
print(name)
for x in range(0,1001):
if name==goodlist[x][1]:
return 0
else:
return 1
#新增訂單模組
def order(username):
cls=os.system('cls') #系統清屏命令
print(username,",歡迎您新增訂單!")
ID=input("請輸入您要訂購的商品ID編號:") #要求輸入訂購的商品ID編號
goodIDcpr2=cpr()
cprresult3=goodIDcpr2.goodscpr1(ID) #呼叫對比類中的方法
if cprresult3==1:
quantity2=input("請輸入您想要的數量:")
for x in range(len(goodlist)): #以goodlist的索引位置的序號為範圍進行迴圈查詢要訂購的商品ID所代表的商品的價格
if goodlist[x][0]!='ID':
key3=goodlist[x]
if key3[0]==ID:
key4=goodlist.index(key3)
price=float(quantity2)*float(goodlist[key4][3])*float(goodlist[key4][5])*0.1 #計算訂單價格
name=goodlist[key4][1]
print("您的訂單資訊如下:")
print(username,ID,name,price) #輸出訂單資訊
y=0
key='y'
while(key=='Y' or key=='y'):
y=y+1
key=input("確認訂單請輸入y後按回車:") #確認訂單
if key=='Y' or key=='y':
print("您的訂單已生成!系統將返回使用者介面。")
orderlist.insert(0,[[ID,username,name,price]]) #將訂單插入訂單列表
time.sleep(3)
puserGUI(username)
else:
print("您輸入的字母有誤!")
key2=input("是想取消訂單嗎?是選擇1,系統將返回使用者介面,否選擇2重新輸入:") #不確認將詢問使用者意圖
if key2==1:
puserGUI(username)
if key2==2:
key='y'
else:
print("您輸入的商品不存在,系統將返回使用者介面。") #輸入ID號有誤時顯示的提示資訊
time.sleep(3)
puserGUI()
#新增商品模組
def goodin():
cls=os.system('cls')
print("管理員,歡迎您新增商品!請按照提示進行操作!") #管理員新增商品
key='y'
x=0
while(key=='y' or key=='Y'):
x=x+1
ID=input("請輸入商品ID號碼:") #索要新的ID號
goodIDcpr=cpr()
cprresult1=goodIDcpr.goodscpr1(ID) #校驗ID是否存在
if cprresult1==1:
name=input("請輸入商品名稱:") #索要商品名稱
goodnamecpr=cpr()
cprresult2=goodnamecpr.goodscpr2(name) #校驗商品名稱是否存在
if cprresult2==1:
quantity=input("請輸入商品數量:")
price=input("請輸入商品價格:")
state=input("請輸入商品的折扣狀態(0代表不打折,1代表打折中):")
discount=input("請輸入商品的折扣額度(1-10代表折扣的額度,10代表不打折):")
goodlist.insert(0,[ID,name,quantity,price,state,discount])
if x==5:
print("您最多一次新增5種商品,系統將回到管理首頁") #最多允許一次新增5中商品
time.sleep(3)
auserGUI()
else:
key=input("商品新增成功!還要繼續新增嗎?需要請輸入y後按回車:")
if key!='y':
print("您輸入的字母有誤!系統將返回管理首頁。")
auserGUI()
else:
print("您輸入的商品名稱已存在,請重新輸入:")
key='y'
else:
print("您輸入的ID號碼已存在,請重新輸入:")
key='y'
#註冊模組
def regGUI():
cls=os.system('cls')
print("歡迎註冊本購物系統!")
key1=input("開始註冊嗎?開始請輸入y後按回車,否則按任意鍵返回主頁面。\n") #為避免使用者誤操作點入註冊介面
if key1=='y' or key1=='Y':
key2='y'
while(key2=='y' or key2=='Y'):
username=input("請輸入您要註冊的使用者名稱:")
password=input("請輸入您的密碼")
cpr1=cpr()
result=cpr1.regcpr(username,password) #呼叫對比類方法校驗使用者名稱和密碼是否已存在
if result==0:
print("您要註冊的使用者名稱已存在!請重新註冊其他使用者名稱!重新註冊輸入y後按回車,否則輸入任意鍵退出註冊:")
key5=input()
key2=key5
elif result==1:
x=1
while(x<6): #防止非人為原因引起的註冊失敗,系統自動重複5次
database.insert(0,[username,password])
key4=1
while(key4==1):
result2=cpr1.regcpr(username,password)
if result2==0:
print("您註冊的使用者已成功!系統將進入登入介面。")
time.sleep(3)
loginGUI()
else:
key4=key4+1
if key4==6:
print("註冊失敗,系統將返回主頁面,請重新嘗試註冊")
time.sleep(3)
mainGUI()
else:
print("註冊未成功,系統正在重試")
time.sleep(3)
x=x+1
else:
mainGUI()
#普通使用者介面
def puserGUI(username):
cls=os.system('cls')
print(username,",歡迎您進入本購物系統!") #普通使用者操作介面的歡迎語句
key3='y'
while(key3=='y' or key3=='Y'):
print("1.檢視商品列表")
print("2.購買商品")
print("3.退出系統")
key=input("請選擇您要進行的操作的序號後點擊回車鍵:") #選擇相應功能
if key=='1':
cls=os.system('cls')
for x in range(len(goodlist)):
print(goodlist[x])
print("1.購買商品")
print("2.退出系統")
key2=input("請選擇您要進行的操作的序號後點擊回車鍵:")
x=1
while(x==1):
if key2=='1':
order(username)
elif key2=='2':
mainGUI()
else:
print("您輸入的序號有誤,請重新輸入。")
x='1'
elif key=='2':
order(username)
elif key=='3':
mainGUI()
else:
print("您輸入的序號有誤,請重新輸入:")
key3='y'
#管理使用者介面
def auserGUI():
cls=os.system('cls')
print("管理員,歡迎您!")
print("1.檢視商品列表")
print("2.新增商品")
print("3.退出管理系統")
key=input("請選擇您要進行的操作的序號後點擊回車鍵:")
if key=='1':
cls=os.system('cls')
for x in range(len(goodlist)):
print(goodlist[x])
print("1.新增商品")
print("2.退出管理系統")
key2=input("請選擇您要進行的操作的序號後點擊回車鍵:")
x=1
while(x==1):
if key2=='1':
goodin()
elif key2=='2':
mainGUI()
else:
print("您輸入的序號有誤,請重新輸入。")
time.sleep(2)
elif key=='2':
goodin()
elif key=='3':
mainGUI()
#登入模組
def loginGUI():
cls=os.system('cls')
print("1.登入系統")
print("2.返回主頁面")
print("3.退出本程式")
key=input("請輸入序號確認您的操作:")
if key=='1':
print("歡迎登入本系統!")
key2='y'
while(key2=='y' or key2=='Y'):
username=input("請輸入您的使用者名稱:")
password=input("請輸入您的密碼:")
cpr2=cpr()
result=cpr2.logincpr(username,password) #校驗登入名和密碼是否存在和配套
if result==0:
auserGUI()
elif result==1:
puserGUI(username)
elif result==2:
print("您輸入的使用者名稱未註冊或輸入的使用者名稱密碼不匹配,系統將返回主頁面,請先註冊後再登入。")
time.sleep(3)
mainGUI()
if key=='2':
mainGUI()
if key=='3':
print("系統將退出!")
time.sleep(3)
sys.exit()
#主介面模組
def mainGUI():
cls=os.system('cls')
key='y'
while key=='y' or key=='Y':
print('1.註冊賬戶')
print('2.登入系統')
print('3.退出程式')
ordnum=input("請選擇您想要進行的操作序號:\n")
if ordnum=='1':
regGUI()
elif ordnum=='2':
loginGUI()
elif ordnum=='3':
sys.exit()
else:
key=input("您輸入的序號有誤,是否重新選擇?重新選擇請輸入y,否則輸入任意值。")
#歡迎介面
print("歡迎使用本購物系統!") #歡迎語句
time.sleep(2) #系統在當前頁面靜止2秒
mainGUI() #跳轉主介面