python實(shí)現(xiàn)庫存商品管理系統(tǒng)
本文實(shí)例為大家分享了python實(shí)現(xiàn)庫存商品管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
題目要求:
請(qǐng)?jiān)O(shè)計(jì)一個(gè)商品管理系統(tǒng),程序要求根據(jù)用戶輸入的選項(xiàng)進(jìn)入相應(yīng)的功能模塊,并顯示相應(yīng)的提示信息。若用戶輸入其他選項(xiàng)時(shí),提示“輸入有誤”。
程序的功能模塊有:
1、添加
程序讀取源文件路徑下的goodinformation.txt,若沒有就創(chuàng)建。當(dāng)添加的商品已存在時(shí),顯示“該商品已存在”
2、查詢
根據(jù)用戶輸入的商品名稱,查詢商品信息,并輸出。當(dāng)查詢的商品不存在時(shí),顯示“商品庫中無該商品”
3、統(tǒng)計(jì)
根據(jù)goodinformation.xt中的數(shù)據(jù),生成統(tǒng)計(jì)數(shù)據(jù),包括(商品種類,商品總數(shù),銷售總額,商品均價(jià)),并寫入到goodtotal.txt中去
4、退出
退出運(yùn)行。
提示:
字典、列表、函數(shù)、文件的打開和讀取等
要求如下:
1.如果具體功能代碼無法實(shí)現(xiàn),那么就把程序架構(gòu)完成,比如羅列需要的函數(shù),并且添加適當(dāng)?shù)淖⑨尅?br />2.添加測(cè)試用例,即根據(jù)題目功能,可以寫明如果輸入為XXX,輸出 應(yīng)該為YYY。
代碼入下,為了增強(qiáng)程序的健壯性,使用了re模塊防止輸入輸出出現(xiàn)逗號(hào)標(biāo)點(diǎn)符號(hào)不識(shí)別的情況。
# 假設(shè)文件中的數(shù)據(jù)按照這樣來寫:藍(lán)莓,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("請(qǐng)輸入商品信息(商品名稱,單價(jià),數(shù)量),直接輸入回車退出:"))) ? ? if goods_list[0] == "": ? ? ? ? return 0 ? ? elif len(goods_list) == 3: ? ? ? ? try: ? ? ? ? ? ? a = eval(goods_list[1]) + eval(goods_list[2]) ?# 防止輸入價(jià)格時(shí)輸入非數(shù)字符號(hào) ? ? ? ? except NameError: ? ? ? ? ? ? print("價(jià)格請(qǐng)輸入數(shù)字符號(hào)") ? ? ? ? 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("輸入錯(cuò)誤請(qǐng)重新輸入") ? ? ? ? add_goods(fdic, fn) def find_goods(fdic): ? ? while True: ? ? ? ? good_name = input("請(qǐng)輸入查詢商品名稱,直接輸入回車退出:") ? ? ? ? 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商品均價(jià): " + 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商品均價(jià): 0" ? ? ? ? ? ? f.write(text) ? ? return print("商品統(tǒng)計(jì)數(shù)據(jù)已寫入統(tǒng)計(jì)文件") 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)計(jì)商品\n4. 退出\n") ? ? while True: ? ? ? ? try: ? ? ? ? ? ? info = eval(input('請(qǐng)輸入您的選擇:')) ? ? ? ? ? ? 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("輸入錯(cuò)誤請(qǐng)重新輸入") ? ? ? ? except NameError: ? ? ? ? ? ? print("輸入錯(cuò)誤請(qǐng)重新輸入") ? ? return 0 main()
運(yùn)行結(jié)果:
生成兩個(gè)文件:
本要求截圖如下
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python中必會(huì)的四大高級(jí)數(shù)據(jù)類型(字符,元組,列表,字典)
這篇文章主要介紹了python中必會(huì)的四大高級(jí)數(shù)據(jù)類型(字符,元組,列表,字典),本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05對(duì)Python 文件夾遍歷和文件查找的實(shí)例講解
下面小編就為大家分享一篇對(duì)Python 文件夾遍歷和文件查找的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04pyecharts繪制時(shí)間輪播圖柱形圖+餅圖+玫瑰圖+折線圖
這篇文章主要介紹了pyecharts繪制時(shí)間輪播圖柱形圖+餅圖+玫瑰圖+折線圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06python圖形繪制奧運(yùn)五環(huán)實(shí)例講解
在本文里我們給大家整理了一篇關(guān)于python圖形繪制奧運(yùn)五環(huán)的實(shí)例內(nèi)容,大家可以跟著學(xué)習(xí)下。2019-09-09Python3.7基于hashlib和Crypto實(shí)現(xiàn)加簽驗(yàn)簽功能(實(shí)例代碼)
這篇文章主要介紹了Python3.7基于hashlib和Crypto實(shí)現(xiàn)加簽驗(yàn)簽功能,環(huán)境是基于python3.7,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12Python 2.7.x 和 3.x 版本的重要區(qū)別小結(jié)
這篇文章主要介紹了Python 2.7.x 和 3.x 版本的重要區(qū)別小結(jié),需要的朋友可以參考下2014-11-11教你用 Python 實(shí)現(xiàn)微信跳一跳(Mac+iOS版)
這幾天看網(wǎng)上好多微信跳一跳破解了,不過都是安卓的,無奈蘋果不是開源也沒辦法。本文給大家分享用 Python 來玩微信跳一跳(Mac+iOS版),具體實(shí)現(xiàn)代碼大家參考下本文2018-01-01