日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

商品库存管理系统(c语言)

發布時間:2023/12/31 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 商品库存管理系统(c语言) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c語言商品庫存管理系統

    • 一、項目背景
    • 二、設計目的
    • 三、項目功能需求
      • 1、商品入庫
      • 2、商品出庫
      • 3、刪除商品信息
      • 4、修改商品信息
      • 5、查詢商品信息
    • 四、系統的功能結構圖
    • 五、功能模塊介紹
      • 1、商品入庫模塊
      • 2、商品出庫模塊
      • 3、刪除商品模塊
      • 4、修改商品模塊
      • 5、查詢商品模塊
      • 6、顯示商品模塊
    • 六、詳細設計
      • 1、主函數
      • 2、商品入庫模塊
      • 3、商品出庫模塊
      • 4、刪除商品模塊
      • 5、修改商品模塊
      • 6、查詢商品模塊
      • 7、顯示商品模塊
    • 七、代碼

一、項目背景

? 為了解決商品庫存信息在日常生活中易于丟失、遺忘,不易保存和管理的問題,我們設計商品庫存管理系統,來幫助商家方便地對商品信息進行增加、刪除、修改等日常維護,并且能進行商品信息的查詢,從而能更全面直觀地了解到商品庫存信息。

二、設計目的

  • 如何實現菜單的顯示、選擇和響應等功能
  • 如何將信息保存到指定的磁盤文件中,并通過操作文件指針和調用文件相關函數來實現對文件的讀寫操作
  • 如何使用結構體封裝商品屬性信息
  • 如何利用結構體數組記錄多個商品信息
  • 如何通過C語言實現基本的增、刪、改、查等信息管理功能
  • 三、項目功能需求

    1、商品入庫

    能夠錄入商品編號、名稱、數量、價格、生產日期、供貨商等信息,并支持連續輸入多個商品信息

    2、商品出庫

    根據用戶輸入要進行出庫操作的商品編號,如果存在該商品,則可以輸入要出庫的商品數量,實現出庫操作

    3、刪除商品信息

    根據用戶輸入要進行刪除的商品編號,如果找到該商品,則將該編號所對應的商品名稱等各項信息均刪除

    4、修改商品信息

    根據用戶輸入的商品編號找到該商品,若該商品存在,則可以修改商品的各項信息

    5、查詢商品信息

    可以顯示所有商品的信息,也可以輸入商品編號,查詢某一個商品的信息

    四、系統的功能結構圖

    五、功能模塊介紹

    1、商品入庫模塊

    • 自動顯示系統中已有的商品信息,如果還沒有商品,顯示沒有記錄。提示用戶是否需要入庫
    • 用戶輸入需要入庫的商品編號,系統自動判斷該商品是否已經存在,若存在則無法入庫;若不存在,則提示用戶輸入商品的相關信息
    • 一條商品的所有信息均輸入完成之后,系統還會詢問是否繼續進行其他商品的入庫操作

    2、商品出庫模塊

    • 自動顯示系統中已有的商品信息,并提示用戶輸入需要出庫的商品編號
    • 系統自動判斷該商品是否已經存在,若存在則提示用戶輸入出庫的數量;若不存在,則提示用戶找不到該商品,無法進行出庫操作

    3、刪除商品模塊

    • 自動顯示系統中已有的商品信息,并提示用戶輸入需要刪除的商品編號
    • 系統自動判斷該商品是否已經存在,若存在則提示用戶是否刪除該商品;若不存在則提示無法找到該商品

    4、修改商品模塊

    • 自動顯示系統中已有的商品信息,并提示用戶輸入需要修改的商品編號
    • 系統自動判斷該商品是否已經存在,若存在則提示用戶輸入新的商品信息;若不存在則提示無法找到該商品

    5、查詢商品模塊

    • 通過用戶輸入的商品編號來查找商品,若存在則提示用戶是否顯示商品所有信息,若不存在則提示無法找到該商品

    6、顯示商品模塊

    • 負責將所有商品的信息列表顯示出來

    六、詳細設計

    1、主函數

    主函數運行后,首先調用菜單響應函數ShowMenu實現菜單的顯示。

    程序流程圖如下所示。

    2、商品入庫模塊

    函數功能設計

    • 在主菜單的界面中輸入“1”,即可進入商品入庫模塊。
    • 首先展示系統中的商品信息,并提示用戶是否錄入,用戶輸入字符y或者字符Y,則可以進行數據錄入。
    • 首先錄入商品編號,如果輸入的商品編號已經存在,系統會提示用戶該商品已經存在;若商品是第一次入庫,用戶則需陸續輸入商品的名稱、生產商、生產日期、價格和數量信息。

    3、商品出庫模塊

    函數功能設計

    • 在主菜單的界面中輸入“2”,即可進入商品出庫模塊。
    • 首先也展示系統中所有商品信息,并提示用戶輸入要出庫的商品編號。
    • 一旦商品編號確實是系統中已有的商品編號,則可以對該商品的數量進行修改。
    • 用戶可以輸入要出庫的商品數量,如果用戶輸入的數量比商品的實際庫存還要大,則自動將商品庫存變成0。
    • 最后顯示出庫操作后所有商品的信息列表。

    4、刪除商品模塊

    函數功能設計

    • 在主菜單的界面中輸入“3”,即可進入刪除商品模塊。
    • 同樣先顯示所有商品信息,若文件不存在或者沒有記錄,則不能進行刪除操作。
    • 程序提示用戶輸入要刪除的商品編號,系統會自動將該編號對應的商品條目徹底從文件中刪除,最后會顯示刪除后的商品信息列表。

    5、修改商品模塊

    函數功能設計

    • 在主菜單的界面中輸入“4”,即可進入修改商品模塊。
    • 和商品出庫模塊的不同之處在于,商品出庫僅修改商品庫存量,而修改商品模塊可以修改商品信息的各個字段的數據。
    • 程序提示用戶輸入要修改的商品編號,如果此編號的商品存在,系統會自動提示用戶輸入要修改的各項商品信息。
    • 最后顯示修改后的所有商品信息。

    6、查詢商品模塊

    函數功能設計

    • 在主菜單的界面中輸入“5”,即可進入查詢商品模塊。
    • 查詢時根據用戶輸入的商品編號進行查詢,若查詢的商品存在,則會提示用戶找到該商品,是否查看詳細信息顯示。
    • 用戶選擇是,則顯示商品的各種信息。如果查不到該商品,則提示用戶找不到商品信息。

    7、顯示商品模塊

    函數功能設計

    • 在主菜單的界面中輸入“6”,即可顯示所有商品信息。
    • 通過列表的方式,顯示商品的各個屬性,以及每一條商品記錄。

    七、代碼

    /*商品庫存管理系統*/ #include<stdio.h> #include<conio.h> /*getch()函數用到的頭文件*/ #include<stdlib.h> /*system(cls)函數用到的頭文件*/#define PRODUCT_LEN sizeof(struct Product) #define FORMAT "%-8d%-15s%-15s%-15s%-12.1lf%-8d\n" #define DATA astPro[i].iId,astPro[i].acName,astPro[i].acProducer,astPro[i].acDate,astPro[i].dPrice,astPro[i].iAmount struct Product /*定義商品結構體*/ {int iId; /*商品代碼*/char acName[15]; /*商品名稱*/char acProducer[15]; /*商品生產商*/char acDate[15]; /*商品生產日期*/double dPrice; /*商品價格*/int iAmount; /*商品數量*/ }; struct Product astPro[100]; /*定義結構體數組*/ /*******************************************************************************/ void ShowMenu(); /*顯示主菜單*/ void InputProduct(); /*商品入庫*/ void OutputProduct(); /*商品出庫*/ void DeleteProduct(); /*刪除商品*/ void ModifyProduct(); /*修改商品*/ void SearchProduct(); /*商品查詢*/ int ShowProduct(); /*顯示商品*//*******************************************************************************/void main() /*主函數*/ {int iItem;ShowMenu();scanf("%d", &iItem); /*輸入菜單項*/while (iItem){switch (iItem){case 1:InputProduct(); break; /*商品入庫*/case 2:OutputProduct(); break; /*商品出庫*/case 3:DeleteProduct(); break; /*刪除商品*/case 4:ModifyProduct(); break; /*修改商品*/case 5:SearchProduct(); break; /*搜索商品*/case 6:ShowProduct(); break; /*顯示商品*/default:printf("input wrong number"); /*錯誤輸入*/}getch(); /*讀取鍵盤輸入的任意字符*/ShowMenu(); /*執行完功能再次顯示菜單功能*/scanf("%d", &iItem); /*輸入菜單項*/} } /*******************************************************************************/ void ShowMenu() /*自定義函數實現菜單功能*/ {system("cls");printf("\n\n\n\n\n");printf("\t\t|---------------------PRODUCT-------------------|\n");printf("\t\t|\t 1. input record |\n");printf("\t\t|\t 2. output record |\n");printf("\t\t|\t 3. delete record |\n");printf("\t\t|\t 4. modify record |\n");printf("\t\t|\t 5. search record |\n");printf("\t\t|\t 6. show record |\n");printf("\t\t|\t 0. exit |\n");printf("\t\t|-----------------------------------------------|\n\n");printf("\t\t\tchoose(0-6):"); } /*******************************************************************************/void InputProduct() /*商品入庫函數*/ {int i, iMax = 0; /*iMax記錄文件中的商品記錄條數*/char cDecide; /*存儲用戶輸入的是否入庫的判斷字符*/FILE *fp; /*定義文件指針*/iMax = ShowProduct();if ((fp = fopen("product.txt", "ab")) == NULL) /*追加方式打開一個二進制文件*/{printf("can not open file\n"); /*提示無法打開文件*/return;}printf("press y/Y to input:");getchar(); /*把選擇1之后輸入的回車符取走*/cDecide = getchar(); /*讀一個字符*/while (cDecide == 'y' || cDecide == 'Y') /*判斷是否要錄入新信息*/{printf("Id:"); /*輸入商品編號*/scanf("%d", &astPro[iMax].iId);for (i = 0; i<iMax; i++)if (astPro[i].iId == astPro[iMax].iId) /*若該商品已存在*/{printf("the id is existing,press any key to continue!");getch();fclose(fp); /*關閉文件,結束input操作*/return;}printf("Name:"); /*輸入商品名稱*/scanf("%s", &astPro[iMax].acName);printf("Producer:"); /*輸入商品生產商*/scanf("%s", &astPro[iMax].acProducer);printf("Date(Example 15-5-1):"); /*輸入商品生產日期*/scanf("%s", &astPro[iMax].acDate);printf("Price:"); /*輸入商品價格*/scanf("%lf", &astPro[iMax].dPrice);printf("Amount:"); /*輸入商品數量*/scanf("%d", &astPro[iMax].iAmount);if (fwrite(&astPro[iMax], PRODUCT_LEN, 1, fp) != 1) /*在文件末尾添加該商品記錄*/{printf("can not save!\n");getch(); /*等待敲鍵盤,為了顯示上一句話*/}else{printf("product Id %d is saved!\n", astPro[iMax].iId);/*成功入庫提示*/iMax++;}printf("press y/Y to continue input:"); /*詢問是否繼續*/getchar(); /*把輸入商品數量之后的回車符取走*/cDecide = getchar(); /*判斷是否為y/Y,繼續循環*/}fclose(fp); /*不再繼續錄入,關閉文件*/printf("Input is over!\n"); }void OutputProduct() /*商品出庫函數*/ {FILE *fp;int iId, i, iMax = 0, iOut = 0; /*iId表示商品編號,iOut表示要出庫的商品數量*/char cDecide; /*存儲用戶輸入的是否出庫的判斷字符*/iMax = ShowProduct();if (iMax <= -1) /*若文件不存在,或者沒有記錄,不能進行出庫操作*/{printf("please input first!");return;}printf("please input the id:");scanf("%d", &iId); /*輸入要出庫的商品編號*/for (i = 0; i < iMax; i++){if (iId == astPro[i].iId) /*如果找到該商品*/{printf("find the product,press y/Y to output:");getchar();cDecide = getchar();if (cDecide == 'y' || cDecide == 'Y') /*判斷是否要進行出庫*/{printf("input the amount to output:");scanf("%d", &iOut);astPro[i].iAmount = astPro[i].iAmount - iOut;if (astPro[i].iAmount < 0) /*要出庫的數量比實際庫存量還小*/{printf("the amount is less than your input and the amount is 0 now!\n");astPro[i].iAmount = 0; /*出庫后的庫存量置為0*/}if ((fp = fopen("product.txt", "rb+")) == NULL) /*讀寫方式打開一個二進制文件,文件必須存在*/{printf("can not open file\n"); /*提示無法打開文件*/return;}fseek(fp, i*PRODUCT_LEN, 0); /*文件指針移動到要出庫的商品記錄位置*/if (fwrite(&astPro[i], PRODUCT_LEN, 1, fp) != 1) /*寫入該商品出庫后的信息*/{printf("can not save file!\n");getch();}fclose(fp);printf("output successfully!\n");ShowProduct(); /*顯示出庫后的所有商品信息*/}return;}}printf("can not find the product!\n"); /*如果沒有找到該商品,提示用戶*/ }void DeleteProduct() /*刪除商品函數*/ {FILE *fp;int i, j, iMax = 0, iId;iMax = ShowProduct();if (iMax <= -1) /*若文件不存在,或者沒有記錄,不能進行出庫操作*/{printf("please input first!");return;}printf("please input the id to delete:");scanf("%d", &iId);for (i = 0; i<iMax; i++){if (iId == astPro[i].iId) /*檢索是否存在要刪除的商品*/{for (j = i; j < iMax; j++)astPro[j] = astPro[j + 1];iMax--;if ((fp = fopen("product.txt", "wb")) == NULL) /*只寫方式打開文件,文件存在則先刪除并創建一個新文件*/{printf("can not open file\n");return;}for (j = 0; j<iMax; j++) /*將新修改的信息寫入指定的磁盤文件中*/if (fwrite(&astPro[j], PRODUCT_LEN, 1, fp) != 1){printf("can not save!");getch();}fclose(fp);printf("delete successfully!\n");ShowProduct(); /*顯示刪除后的所有商品信息*/return;}}printf("can not find the product!\n"); }void ModifyProduct() /*修改商品函數*/ {FILE *fp;int i, iMax = 0, iId;iMax = ShowProduct();if (iMax <= -1) /*若文件不存在,或者沒有記錄,不能進行出庫操作*/{printf("please input first!");return;}printf("please input the id to modify:");scanf("%d", &iId);for (i = 0; i<iMax; i++){if (iId == astPro[i].iId) /*檢索記錄中是否有要修改的商品*/{printf("find the product, you can modify!\n");printf("id:");scanf("%d", &astPro[i].iId);printf("Name:");scanf("%s", &astPro[i].acName);printf("Producer:");scanf("%s", &astPro[i].acProducer);printf("Date:");scanf("%s", &astPro[i].acDate);printf("Price:");scanf("%lf", &astPro[i].dPrice);printf("Amount:");scanf("%d", &astPro[i].iAmount);if ((fp = fopen("product.txt", "rb+")) == NULL){printf("can not open\n");return;}fseek(fp, i*PRODUCT_LEN, 0); /*將新修改的信息寫入指定的磁盤文件中*/if (fwrite(&astPro[i], PRODUCT_LEN, 1, fp) != 1){printf("can not save!");getch();}fclose(fp);printf("modify successful!\n");ShowProduct(); /*顯示修改后的所有商品信息*/return;}}printf("can not find information!\n"); }void SearchProduct() /*查找商品函數*/ {//FILE *fp;int iId, i, iMax = 0;char cDecide;iMax = ShowProduct();if (iMax <= -1) /*若文件不存在,或者沒有記錄,不能進行出庫操作*/{printf("please input first!");return;}printf("please input the id:");scanf("%d", &iId);for (i = 0; i<iMax; i++)if (iId == astPro[i].iId) /*查找輸入的編號是否在記錄中*/{printf("find the product,press y/Y to show:");getchar();cDecide = getchar();if (cDecide == 'y' || cDecide == 'Y'){printf("id name producer date price amount\n");printf(FORMAT, DATA); /*將查找出的結果按指定格式輸出*/return;}}printf("can not find the product"); /*未找到要查找的信息*/ }int ShowProduct() /*顯示所有商品信息*/ {int i, iMax = 0;FILE *fp;if ((fp = fopen("product.txt", "rb")) == NULL) /*只讀方式打開一個二進制文件*/{printf("can not open file\n"); /*提示無法打開文件*/return -1;}while (!feof(fp)) /*判斷文件是否結束*/if (fread(&astPro[iMax], PRODUCT_LEN, 1, fp) == 1)iMax++; /*統計文件中記錄條數*/fclose(fp); /*讀完后及時關閉文件*/if (iMax == 0) /*文件中沒有記錄時提示用戶*/printf("No record in file!\n");else /*文件中有記錄時顯示所有商品信息*/{printf("id name producer date price amount\n");for (i = 0; i < iMax; i++){printf(FORMAT, DATA); /*將信息按指定格式打印*/}}return iMax;fclose(fp); /*讀完后及時關閉文件*/if (iMax == 0) /*文件中沒有記錄時提示用戶*/printf("No record in file!\n");else /*文件中有記錄時顯示所有商品信息*/{printf("id name producer date price amount\n");for (i = 0; i < iMax; i++){printf(FORMAT, DATA); /*將信息按指定格式打印*/}}return iMax; }

    總結

    以上是生活随笔為你收集整理的商品库存管理系统(c语言)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩伦理视频 | 国产麻豆自拍 | 亚洲精品国产福利 | 黄色永久视频 | 欧美少妇诱惑 | 一区二区国产电影 | 亚洲欧洲日本精品 | 人体av| 国产美女精品在线 | 成人做爰69片免费观看 | 久久久久久蜜桃 | 狠狠干成人| 手机亚洲第一页 | 99久久精品无免国产免费 | 欧美操大逼 | 老妇荒淫牲艳史 | 91最新在线 | 亚洲视频在线观看网址 | 免费黄色视屏 | 国产自产21区 | www.xxxxx日本| 欧美在线视频免费观看 | 久久中文字幕一区 | 懂色av色吟av夜夜嗨 | 337p粉嫩日本欧洲亚洲大胆 | 亚洲激情电影在线 | 最新av免费观看 | 性色av一区二区三区红粉影视 | 五月激情天 | 久久精品2019中文字幕 | 色av免费| 成人精品国产免费网站 | 亚洲欧洲综合网 | 美女露出让男生揉的视频 | 日本高清黄色电影 | 欧美爽爽爽 | 91蜜桃在线 | 欧美vieox另类极品 | 老牛影视av牛牛影视av | 永久免费未满视频 | 黄网免费观看 | 美国av一区二区 | 男人用嘴添女人下身免费视频 | 成人在线免费视频播放 | 免费成人在线电影 | 国产麻豆一精品一av一免费 | 国产精品日日做人人爱 | 图片区亚洲色图 | 亚洲午夜精品一区二区三区他趣 | 久久99国产精品视频 | 狠狠干夜夜草 | 久久艹在线视频 | 日本wwwwww | 亚洲最色网站 | 狠狠干狠狠艹 | 91美女在线观看 | 免费看黄色三级三级 | 亚洲最大福利网站 | 国内精品一区二区 | 国产传媒在线观看 | 青娱乐av在线 | 巨乳xxx| 高清不卡一区二区三区 | jzzjzz日本丰满成熟少妇 | 大尺度av| 日本美女a级片 | 女同久久另类69精品国产 | 最近中文字幕在线 | 日本色视频 | 亚洲精品9999 | 欧美成人精品欧美一级私黄 | 欧美精品日韩在线观看 | www污网站 | 亚洲欧美伊人 | 污网站免费在线观看 | 精品国产第一页 | 亚洲理论视频 | 亚洲毛片av | 亚洲激情中文字幕 | 91久久国语露脸精品国产高跟 | 四虎影库在线播放 | 亚洲图片自拍偷拍区 | 寡妇激情做爰呻吟 | 蜜臀视频在线播放 | 欧美日韩国产精品成人 | 狠狠操免费视频 | 强制憋尿play黄文尿奴 | 欧美成人二区 | 中文字幕第一区综合 | 亚洲国产av一区二区三区 | 一级久久 | 久久性视频 | 好吊妞视频一区二区三区 | 国产伦精品一区二区. | www免费视频| 88av在线播放 | 福利在线电影 | 亚洲av无一区二区三区怡春院 | 日韩一区不卡视频 |