python實現(xiàn)超市商品銷售管理系統(tǒng)
本文實例為大家分享了python超市商品銷售管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
需求分析:超市銷售管理系統(tǒng)功能
1.歡迎用戶使用超市銷售管理系統(tǒng),提示用戶登錄,如果是用戶名為admin,密碼為123456,則管理員身份。 如果是其他用戶(可以自己設(shè)置也可隨意接收),則是顧客身份。
2.如果用戶是管理員身份,提示用戶輸入編號,選擇對應(yīng)功能
輸入編號"1":顯示商品的信息 (編號 商品名稱 價格)
輸入編號"2":添加商品信息 (輸入編號,商品名稱,價格)
輸入編號"3":刪除商品信息 (輸入編號,刪除對應(yīng)的名稱和價格)
輸入編號"4":退出系統(tǒng)功能
3.如果用戶是顧客身份,只有一個功能:購買商品,
展示所有商品信息,用戶循環(huán)輸入商品編號和購買數(shù)量,輸入n時,退出系統(tǒng),并提示用戶總價格。
涉及到的知識點
編程語言變量,語句,函數(shù)
面向?qū)ο笏枷虢Y(jié)合編程語言進行類的封裝與方法的調(diào)用
常見數(shù)據(jù)容器列表與字典的使用
程序中對于文件的操作
因為涉及對于文件的讀取和寫入,建議大家在程序開始前,先確定文件內(nèi)容的格式,有效合理的表達商品內(nèi)容,我采取以下格式,在項目工程目錄下創(chuàng)建shop.txt文件夾
邏輯分析:
增刪查買都是對于商品的操作,商品信息包括編號名稱和價格,可以將信息封裝到對象當中,可創(chuàng)建對象所屬的類Goods。然后對于增刪等操作應(yīng)該屬于管理系統(tǒng)的功能,所以將相關(guān)功能封裝到ShopManager類當中。在進入系統(tǒng)時,應(yīng)該首先查看之前是否有存儲信息,所以要讀取文件寫入到內(nèi)存中,增刪操作都是通過編號作為索引,所以可以選擇字典dict數(shù)據(jù)結(jié)構(gòu)作為內(nèi)存存儲容器,然后增刪都是對于字典的操作,當系統(tǒng)退出時,在將數(shù)據(jù)更新寫入到文件中,避免惡意修改文件,惡意提交。
功能實現(xiàn)代碼:
首先創(chuàng)建表達商品對象的Goods類
class Goods(object): def __init__(self,id,name,price): self.id = id self.name = name self.price = price def __str__(self): info = "編號:%s\t商品名稱:%s\t\t價格:%d"%(self.id,self.name,self.price) return info
將對于商品操作的函數(shù)放到ShopManager類當中,功能包括管理員以及普通用戶的,在登錄后進行分流選擇。
class ShopManager(object): def __init__(self,path): # path:表示讀取文件的路徑 shopdic:表示存放內(nèi)存的容器 self.path = path self.shopdic = self.readFileToDic() def readFileToDic(self): # 讀取文件,寫入到字典中 f = open(self.path, 'r', encoding='utf-8') clist = f.readlines() f.close() index = 0 shopdic = {} while index < len(clist): # 將每一行的字符串進行分割,存放到新的列表中 ctlist = clist[index].replace('\n', "").split("|") # 將每行的內(nèi)容存放到一個對象中 good = Goods(ctlist[0],ctlist[1],int(ctlist[2])) # 將對向存放到集合中 shopdic[good.id] = good index = index + 1 return shopdic def writeContentFile(self): # 將內(nèi)存當中的信息寫入到文件當中 str1 = '' for key in self.shopdic.keys(): good = self.shopdic[key] ele = good.id+"|"+good.name+"|"+str(good.price)+"\n" str1 = str1 + ele f = open(self.path, 'w', encoding='utf-8') f.write(str1) f.close() def addGoods(self): # 添加商品的方法 id = input("請輸入添加商品編號:>") if self.shopdic.get(id): print("商品編號已存在,請重新選擇!") return name = input("請輸入添加商品名稱:>") price = int(input("請輸入添加商品價格:>")) good = Goods(id,name,price) self.shopdic[id] = good print("添加成功!") def deleteGoods(self): # 刪除商品的方法 id = input("請輸入刪除商品編號:>") if self.shopdic.get(id): del self.shopdic[id] print("刪除成功!") else: print("商品編號不存在!") def showGoods(self): # 展示所有商品信息 print("="*40) for key in self.shopdic.keys(): good = self.shopdic[key] print(good) print("="*40) def adminWork(self): info = """ ==========歡迎進入好海哦購物商場========== 輸入功能編號,您可以選擇以下功能: 輸入“1”:顯示商品的信息 輸入“2”:添加商品的信息 輸入“3”:刪除商品的信息 輸入“4”:退出系統(tǒng)功能 ========================================== """ print(info) while True: code = input("請輸入功能編號:>") if code == "1": self.showGoods() elif code == "2": self.addGoods() elif code == "3": self.deleteGoods() elif code == "4": print("感謝您的使用,正在退出系統(tǒng)?。?) self.writeContentFile() break else: print("輸入編號有誤,請重新輸入!!") def userWork(self): print(" ==============歡迎進入好海哦購物商場==============") print("您可輸入編號和購買數(shù)量選購商品,輸入編號為n則結(jié)賬") self.showGoods() total = 0 while True: id = input("請輸入購買商品編號:>") if id == "n": print("本次購買商品共消費%d元,感謝您的光臨!"%(total)) break if self.shopdic.get(id): good = self.shopdic[id] num = int(input("請輸入購買數(shù)量:>")) total = total+good.price*num else: print("輸入商品編號有誤,請核對后重新輸入!") def login(self): # 登錄功能 print("==========歡迎登錄好海哦購物商場==========") uname = input("請輸入用戶名:>") password = input("請輸入密碼:>") if uname == "admin": if password == "123456": print("歡迎您,admin管理員") self.adminWork() else: print("管理員密碼錯誤,登錄失??!") else: print("歡迎你,%s用戶"%(uname)) #執(zhí)行用戶的購買功能 self.userWork()
最后我們可在main語句中,調(diào)用登錄方法,會自動選擇相關(guān)功能。
if __name__ == '__main__': shopManage = ShopManager("shop.txt") shopManage.login()
上述代碼運行后,會實現(xiàn)的效果為:
以上項目案例將學(xué)習(xí)內(nèi)容進行了統(tǒng)一整理和綜合,相信同學(xué)們順利理解和敲出這部分代碼。
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python圖片處理庫Pillow實現(xiàn)簡單PS功能
Python 屆處理圖片最強的庫是 PIL(Python Image Library),但由于該庫只支持 2.x 版本,在此基礎(chǔ)上做了擴展,出了一個兼容 3.x 的版本也就是 Pillow,因此,我們今天要用的庫就是Pillow2021-11-11解決Python保存文件名太長OSError: [Errno 36] File
這篇文章主要介紹了解決Python保存文件名太長OSError: [Errno 36] File name too lon問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05pandas中的.assign()方法的用法示例小結(jié)
pandas中的.assign()方法用于創(chuàng)建一個新的DataFrame,其中包含現(xiàn)有DataFrame的副本,并附加了指定的新列或更新了現(xiàn)有列,.assign()方法還可以鏈式使用,以添加多個新列或更新現(xiàn)有列,對pandas中的.assign()方法感興趣的朋友跟隨小編一起看看吧2023-10-10python list count統(tǒng)計個數(shù)的實現(xiàn)
這篇文章主要介紹了python list count統(tǒng)計個數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02