1. 程式人生 > 程式設計 >python實現超市商品銷售管理系統

python實現超市商品銷售管理系統

需求分析:超市銷售管理系統功能

1.歡迎使用者使用超市銷售管理系統,提示使用者登入,如果是使用者名稱為admin,密碼為123456,則管理員身份。 如果是其他使用者(可以自己設定也可隨意接收),則是顧客身份。

2.如果使用者是管理員身份,提示使用者輸入編號,選擇對應功能

輸入編號"1":顯示商品的資訊 (編號 商品名稱 價格)
輸入編號"2":新增商品資訊 (輸入編號,商品名稱,價格)
輸入編號"3":刪除商品資訊 (輸入編號,刪除對應的名稱和價格)
輸入編號"4":退出系統功能

3.如果使用者是顧客身份,只有一個功能:購買商品,

展示所有商品資訊,使用者迴圈輸入商品編號和購買數量,輸入n時,退出系統,並提示使用者總價格。

涉及到的知識點

程式語言變數,語句,函式
面向物件思想結合程式語言進行類的封裝與方法的呼叫
常見資料容器列表與字典的使用
程式中對於檔案的操作
因為涉及對於檔案的讀取和寫入,建議大家在程式開始前,先確定檔案內容的格式,有效合理的表達商品內容,我採取以下格式,在專案工程目錄下建立shop.txt資料夾

邏輯分析:

增刪查買都是對於商品的操作,商品資訊包括編號名稱和價格,可以將資訊封裝到物件當中,可建立物件所屬的類Goods。然後對於增刪等操作應該屬於管理系統的功能,所以將相關功能封裝到ShopManager類當中。在進入系統時,應該首先檢視之前是否有儲存資訊,所以要讀取檔案寫入到記憶體中,增刪操作都是通過編號作為索引,所以可以選擇字典dict資料結構作為記憶體儲存容器,然後增刪都是對於字典的操作,當系統退出時,在將資料更新寫入到檔案中,避免惡意修改檔案,惡意提交。

功能實現程式碼:

首先建立表達商品物件的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

將對於商品操作的函式放到ShopManager類當中,功能包括管理員以及普通使用者的,在登入後進行分流選擇。

class ShopManager(object):


def __init__(self,path):
  # path:表示讀取檔案的路徑  shopdic:表示存放記憶體的容器
  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("|")
    # 將每行的內容存放到一個物件中
    good = Goods(ctlist[0],ctlist[1],int(ctlist[2]))
    # 將對向存放到集合中
    shopdic[good.id] = good
    index = index + 1
  return shopdic

def writeContentFile(self):
  # 將記憶體當中的資訊寫入到檔案當中
  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,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”:退出系統功能
  ==========================================
  """
  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("感謝您的使用,正在退出系統!!")
      self.writeContentFile()
      break
    else:
      print("輸入編號有誤,請重新輸入!!")

def userWork(self):
  print(" ==============歡迎進入好海哦購物商場==============")
  print("您可輸入編號和購買數量選購商品,輸入編號為n則結賬")
  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("請輸入購買數量:>"))
      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))
    #執行使用者的購買功能
    self.userWork()

最後我們可在main語句中,呼叫登入方法,會自動選擇相關功能。

if __name__ == '__main__':
  shopManage = ShopManager("shop.txt")
  shopManage.login()  

上述程式碼執行後,會實現的效果為:


以上專案案例將學習內容進行了統一整理和綜合,相信同學們順利理解和敲出這部分程式碼。

更多學習資料請關注專題《管理系統開發》。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。