python實現(xiàn)庫存商品管理系統(tǒng)
本文實例為大家分享了python實現(xiàn)庫存商品管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
題目要求:
請設(shè)計一個商品管理系統(tǒng),程序要求根據(jù)用戶輸入的選項進入相應(yīng)的功能模塊,并顯示相應(yīng)的提示信息。若用戶輸入其他選項時,提示“輸入有誤”。
程序的功能模塊有:
1、添加
程序讀取源文件路徑下的goodinformation.txt,若沒有就創(chuàng)建。當添加的商品已存在時,顯示“該商品已存在”
2、查詢
根據(jù)用戶輸入的商品名稱,查詢商品信息,并輸出。當查詢的商品不存在時,顯示“商品庫中無該商品”
3、統(tǒng)計
根據(jù)goodinformation.xt中的數(shù)據(jù),生成統(tǒng)計數(shù)據(jù),包括(商品種類,商品總數(shù),銷售總額,商品均價),并寫入到goodtotal.txt中去
4、退出
退出運行。
提示:
字典、列表、函數(shù)、文件的打開和讀取等
要求如下:
1.如果具體功能代碼無法實現(xiàn),那么就把程序架構(gòu)完成,比如羅列需要的函數(shù),并且添加適當?shù)淖⑨尅?br />2.添加測試用例,即根據(jù)題目功能,可以寫明如果輸入為XXX,輸出 應(yīng)該為YYY。
代碼入下,為了增強程序的健壯性,使用了re模塊防止輸入輸出出現(xiàn)逗號標點符號不識別的情況。
# 假設(shè)文件中的數(shù)據(jù)按照這樣來寫:藍莓,10,20(一行的數(shù)據(jù))
import re
def read_goods(fn):
? ? fdic = {}
? ? with open(fn, "r") as f:
? ? ? ? for i in f.readlines():
? ? ? ? ? ? goodl = list(re.split(r"[,,]", i))
? ? ? ? ? ? goodl = [x.strip() for x in goodl]
? ? ? ? ? ? fdic[goodl[0]] = goodl
? ? return fdic
def add_goods(fdic, fn):
? ? goods_list = list(re.split('[,,]', input("請輸入商品信息(商品名稱,單價,數(shù)量),直接輸入回車退出:")))
? ? if goods_list[0] == "":
? ? ? ? return 0
? ? elif len(goods_list) == 3:
? ? ? ? try:
? ? ? ? ? ? a = eval(goods_list[1]) + eval(goods_list[2]) ?# 防止輸入價格時輸入非數(shù)字符號
? ? ? ? except NameError:
? ? ? ? ? ? print("價格請輸入數(shù)字符號")
? ? ? ? else:
? ? ? ? ? ? if goods_list[0] in fdic.keys():
? ? ? ? ? ? ? ? print("該商品已存在")
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? fdic[goods_list[0]] = goods_list
? ? ? ? ? ? ? ? with open(fn, "a") as f:
? ? ? ? ? ? ? ? ? ? f.writelines(','.join(goods_list))
? ? ? ? ? ? ? ? ? ? f.write("\n")
? ? ? ? ? ? add_goods(fdic, fn)
? ? else:
? ? ? ? if goods_list[0] in fdic.keys():
? ? ? ? ? ? print("該商品已存在")
? ? ? ? else:
? ? ? ? ? ? print("輸入錯誤請重新輸入")
? ? ? ? add_goods(fdic, fn)
def find_goods(fdic):
? ? while True:
? ? ? ? good_name = input("請輸入查詢商品名稱,直接輸入回車退出:")
? ? ? ? if good_name == "":
? ? ? ? ? ? break
? ? ? ? else:
? ? ? ? ? ? for k in fdic.keys():
? ? ? ? ? ? ? ? if k == good_name:
? ? ? ? ? ? ? ? ? ? print("{},{:.2f}".format(k, eval(fdic[k][2])))
? ? ? ? ? ? ? ? ? ? find_goods(fdic)
? ? ? ? ? ? ? ? ? ? return 0
? ? ? ? ? ? print("商品庫中無該商品")
def count(fdic, fn):
? ? type_amount = len(fdic)
? ? good_amount, total_sales, sum_price, ave_price = 0, 0, 0, 0
? ? for v in fdic.values():
? ? ? ? good_amount += eval(v[2])
? ? ? ? total_sales += eval(v[2]) * eval(v[1])
? ? ? ? sum_price += eval(v[1])
? ? try:
? ? ? ? ave_price = sum_price / type_amount
? ? ? ? with open(fn, "w") as f:
? ? ? ? ? ? text = "商品種類: " + str(type_amount) + \
? ? ? ? ? ? ? ? ? ?"\n商品總數(shù): " + str(good_amount) + \
? ? ? ? ? ? ? ? ? ?"\n銷售總額: " + str(total_sales) + \
? ? ? ? ? ? ? ? ? ?"\n商品均價: " + str(ave_price)
? ? ? ? ? ? f.write(text)
? ? except ZeroDivisionError:
? ? ? ? with open(fn, "w+") as f:
? ? ? ? ? ? f.seek(0)
? ? ? ? ? ? text = "商品種類: 0\n商品總數(shù): 0 \n銷售總額: 0\n商品均價: 0"
? ? ? ? ? ? f.write(text)
? ? return print("商品統(tǒng)計數(shù)據(jù)已寫入統(tǒng)計文件")
def main():
? ? goodinfo = "C:\\Users\\13935\\Desktop\\goodinformation.txt" ?# 換成自己的路徑
? ? goodtotal = "C:\\Users\\13935\\Desktop\\goodtotle.txt" ?# 換成自己的路徑
? ? goods_dict = read_goods(goodinfo)
? ? print("1. 查詢商品\n2. 添加商品\n3. 統(tǒng)計商品\n4. 退出\n")
? ? while True:
? ? ? ? try:
? ? ? ? ? ? info = eval(input('請輸入您的選擇:'))
? ? ? ? ? ? if info == 1:
? ? ? ? ? ? ? ? find_goods(goods_dict)
? ? ? ? ? ? elif info == 2:
? ? ? ? ? ? ? ? add_goods(goods_dict, goodinfo)
? ? ? ? ? ? elif info == 3:
? ? ? ? ? ? ? ? count(goods_dict, goodtotal)
? ? ? ? ? ? elif info == 4:
? ? ? ? ? ? ? ? break
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? print("輸入錯誤請重新輸入")
? ? ? ? except NameError:
? ? ? ? ? ? print("輸入錯誤請重新輸入")
? ? return 0
main()運行結(jié)果:

生成兩個文件:

本要求截圖如下



以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python如何通過ARIMA模型進行時間序列分析預(yù)測
這篇文章主要介紹了Python如何通過ARIMA模型進行時間序列分析預(yù)測問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
在pycharm中調(diào)試fastapi應(yīng)用程序的流程步驟
? FastAPI 是一個現(xiàn)代、快速(高性能)的 Web 框架,用于構(gòu)建基于 Python 的 API,它具有簡單易用的特性,同時也提供了高度自動化的文檔生成功能,本文給大家介紹了在pycharm中調(diào)試fastapi應(yīng)用程序的流程步驟,需要的朋友可以參考下2024-12-12
全面了解Nginx, WSGI, Flask之間的關(guān)系
下面小編就為大家分享一篇全面了解Nginx, WSGI, Flask之間的關(guān)系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Python獲取系統(tǒng)所有進程PID及進程名稱的方法示例
這篇文章主要介紹了Python獲取系統(tǒng)所有進程PID及進程名稱的方法,涉及Python使用psutil對系統(tǒng)進程進行操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-05-05
Python實現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程
這篇文章主要介紹了Python實現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python實戰(zhàn)項目刮刮樂的實現(xiàn)詳解流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python實現(xiàn)一個刮刮樂的小項目,大家可以在過程中查缺補漏,提升水平2021-11-11

