




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上學號2016-2017學年 第2學期C語言物品管理課程設計報告題目:C語言物品管理專業:網絡工程班級:16級(3)班姓名:代應豪指導教師:代美麗成績: 計算機學院 2017 年 4月 27 日專心-專注-專業 目錄 1設計內容及要求 . 2 1.1概述. 2 1.2主要功能. 2 1.3設計目的及具體要求. 2 2 概要設計. 2 2.1系統的功能簡介. 2 2.2 總體程序框圖 .
2、60;3 2.3各個模塊之間的主要關系. 3 3設計過程及程序代碼 . 3 3.1定義結構體及宏定義. 4 3.2主函數 main().4 3.3輸入物品信息函數. .5 3.4輸出顯示物品函數. 5 3.5將物品寫入磁盤. 6 3.6插入物品記錄函數. 7 3.7 刪除一個物品記錄函數 . 7 3.8按照物品編號進行遞增排序函數. 8 3.9按照物品總價進
3、行遞增排序函數. 8 3.10對物品記錄進行排序函數. 9 3.11輸出頭部信息函數. 10 3.12輸出一條物品信息函數. .10 3.13判斷該編號物品是否存在函數. 10 3.14根據物品編號進行查找函數. 10 3.15根據物品名字進行查找函數. 10 3.16對物品記錄進行查找函數. 11 4設計結果與分析 . 12 4.1各個模塊的程序流程圖 . 12 1) 主函數
4、程序(N-S)流程圖及運行界面. 12 2) 輸入物品記錄信息的(N-S)流程圖及程序運行界面. .13 5設計心得 . 21 6參考文獻 .22 7源程序代碼(物品管理系統) . 231. 設計內容及要求1.1概述 物品管理系統主要根據課程設計要求進行設計,從對物品的簡單處理著手設計一份物品管理系統。1.2主要功能物品管理系統是一個針對物品管理的系統。該系統功能主要包括八大模塊: 1)插入物品記錄:輸入物品個數,根據物品個數依次輸入每個物品記錄的詳細信息。例如物品編號、名字、單價、數
5、量。 2)輸出物品記錄:對已經寫入磁盤的記錄信息的顯示。如無數據,則顯示無數據!3) 將物品記錄寫入文件。4) 插入一個物品記錄。5) 刪除一個物品記錄。6) 對物品記錄進行排序。7) 對物品記錄進行查找。8) 退出系統。1.3設計目的及具體要求主要利用C語言的文件操作能力設計開發一個小型的信息系統,至少具有如下功能:物品的讀和寫、物品信息的增刪改、物品信息的排序、查找。操作界面要符合用戶的一般習慣,圖形或文本界面都可以。要求:系統以菜單方式工作,根據菜單項序號提示進行工作。物品信息包括編號看、名稱、單價、數量、總價。系統以菜單方式工作,實現對物品信息的錄入、修改、統計、排序、查詢、輸出等功能
6、。2概要設計2.1系統的功能簡介該系統的主要功能是系統以菜單方式工作,實現對物品信息的錄入,修改,統計,排序,查詢,輸出等功能。2.2總體程序框圖物品管理系統操作主要流程如下,各個函數分別實現不一樣的功能。2.3各個模塊之間的主要關系該程序的功能主要是實現物品信息的錄入,并對物品的相應信息進行進本的增刪該的計算。各個模塊之間的關系是相互聯系的。首先,主函數包含了所有的子函數。主函數是整個程序的核心。子函數之間也是有聯系的,對物品讀取,插入刪除,檢索排序必須是在主函數的情況下進行的。因此在第一步選擇菜單項是非常重要的。第一步菜單項的選擇決定用戶所要實現的操作功能。3設計過程及程序代碼整個系統除了
7、主函數外,另外還有8個函數,實現7人功能:輸入功能、輸出功能、寫入磁盤功能、插入并顯示功能、分類查找并顯示功能、分類排序并顯示功能。各個函數的詳細設計說明分別如下:3.1定義結構體及宏定義#include "stdio.h"#include "string.h" #define NAME_MAX_LEN 20 #define Prod_MAX_NUM 50typedef struct int num; char nameNAME_MAX_LEN;double unitprice; int amount; double totalprice; prodNo
8、de; typedef struct sequenceprodNode dataProd_MAX_NUM; int len; seq; seq product;3.2主函數main()void main() int menuItemCode=1; product.len=0; while (menuItemCode!=0)printf("nn"); printf("*物品管理系統*n"); printf("* 1.輸入物品記錄 *n"); printf("* 2.輸出物品記錄 *n"); printf("
9、* 3.將物品記錄寫入文件 *n");printf("* 4.插入一個物品記錄 *n"); printf("* 5.刪除一個物品記錄 *n");printf("* 6.對物品記錄進行排序 *n"); printf("* 7.對物品記錄進行查找 *n"); printf("* 0.退出系統 *n"); printf("*n"); printf("請輸入所選項菜單項序號:"); scanf("%d",&menuItemCo
10、de); switch (menuItemCode)case 1:inputGoods(); break; case 2:outputGoods(); break; case 3:saveGoods(); break; case 4:insertOneGoods(); break;case 5:deleteOneGoods(); break; case 6:sortGoods(); break; case 7:searchGoods(); break; case 0:break; default:printf("輸入超出范圍!n"); break;3.3輸入物品信息函數vo
11、id inputGoods() int i,n; printf("請輸入物品個數:n"); scanf("%d",&n); if (n<0) return; for (i=0;i<n;i+)printf("輸入物品的編號:n"); scanf("%d",&product.datai.num); printf("輸入物品的名字:n"); scanf("%s",); printf("輸入物品的單價:n&qu
12、ot;); scanf("%lf",&product.datai.unitprice); printf("輸入物品的數量:n"); scanf("%d",&product.datai.amount); product.datai.totalprice=product.datai.unitprice*product.datai.amount;product.len=n;3.4輸出顯示物品函數void outputGoods() int i; if (product.len=0) printf("n無數據!n&q
13、uot;); return; printf("n物品的記錄為:n"); printf("編號t名字t單價 t數量t總價n");for (i=0;i<product.len;i+)printf("%dt%st%lft%dt%.2lf",product.datai.num,,product.datai.unitprice,product.datai.amount,product.datai.totalprice); printf("n"); 3.5將物品寫入磁盤void sav
14、eGoods() int i; FILE *fp; if (product.len=0) printf("n無數據!n");return;fp=fopen("D:goods.txt","w"); if (fp=NULL)printf("文件打開失敗!n"); return;fprintf(fp,"%st","編號"); fprintf(fp,"%st","名稱"); fprintf(fp,"%st ","單
15、價"); fprintf(fp,"%st","數量");fprintf(fp,"%s","總價"); for (i=0;i<product.len;i+) fprintf(fp,"n"); fprintf(fp,"%dt",product.datai.num); fprintf(fp,"%st",); fprintf(fp,"%lft",product.datai.unitprice)
16、; fprintf(fp,"%dt",product.datai.amount); fprintf(fp,"%.2lf",product.datai.totalprice); fclose(fp); printf("已成功存盤!n");3.6插入物品記錄函數void insertOneGoods() prodNode G; int i,pos; if(product.len=Prod_MAX_NUM) printf("表已滿!n"); return;printf("請輸入插入位置:"); sca
17、nf("%d",&pos); if (pos<0|pos>product.len) printf("插入位置出錯!n");return;printf("請輸入要插入的物品記錄:n"); printf("請輸入編號:"); do scanf("%d",&G.num); if (G.num<=0) printf("輸入的編號不合理,請重新輸入。n"); while (G.num<=0); printf("輸入物品的名字:n&quo
18、t;); scanf("%s",G.name);printf("輸入物品的單價:n"); scanf("%lf",&G.unitprice); printf("輸入物品的數量:n"); scanf("%d",&G.amount); G.totalprice=G.unitprice*G.amount; for (i=product.len-1;i>=pos;i-)product.datai+1=product.datai; product.datapos=G; product
19、.len=product.len+1; printf("插入成功!");3.7刪除一個物品記錄函數void deleteOneGoods() int i,pos; if (product.len=0)printf("表空!n"); return;printf("請輸入要刪除的物品記錄的位置:"); scanf("%d",&pos); if (pos<0|pos>product.len-1) printf("刪除的位置出錯!n"); return; for(i=pos+1;i&
20、lt;=product.len-1;i+) product.datai-1=product.datai;product.len=product.len-1; printf("刪除成功!n");3.8按照物品編號進行遞增排序函數void bubbleSortByNum() int i,j,n; prodNode temp; int tag; n=product.len; for(tag=1,i=0;i<n-1 && tag=1;i+)tag=0; for (j=n-1;j>i;j-) if (product.dataj.num<product
21、.dataj-1.num) temp=product.dataj; product.dataj=product.dataj-1; product.dataj-1=temp;tag=1; 3.9按照物品總價進行遞增排序函數void bubbleSortByTotal() int i,j,n; prodNode temp; int tag; n=product.len;for (tag=1,i=0;i<n-1 && tag=1;i+) tag=0; for (j=n-1;j>i;j-)if (product.dataj.totalprice<product.dat
22、aj-1.totalprice) temp=product.dataj; product.dataj=product.dataj-1; product.dataj-1=temp;tag=1;3.10對物品記錄進行排序函數void sortGoods() int subMenuItem=1; while (subMenuItem!=0)printf("nn"); printf("*排序子菜單*n"); printf("* 1.按照物品編號進行遞增排序 *n"); printf("* 2.按照物品總價進行遞增排序 *n"
23、;); printf("* 0.退出子菜單 *n"); printf("*n"); printf("請輸入所選子菜單項序號:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1:bubbleSortByNum(); printf("已按照物品的編號進行遞增排序。排序后的結果為:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的總價進
24、行遞增排序。排序后的結果為:n"); outputGoods(); break;case 0:break; default:printf("輸入超出范圍!n"); break;3.11輸出頭部信息函數void outputHead() printf("編號t名字t單價 t數量t總價n");3.12輸出一條物品信息函數void outputOneGoods(prodNode s) printf("%dt%st%lf t%dt%.2lf",s.num,,s.unitprice,s.amount,s.totalpric
25、e);printf("n"); 3.13判斷該編號物品是否存在函數int isNumberExist (int number) int n,i=0; n=product.len; while (i<n && product.datai.num!=number)i+; if (i<n) return i; else return -1;3.14根據物品編號進行查找函數void seqSearchByNumber (int number) int pos; pos=isNumberExist(number); if (pos !=-1) printf
26、("查找成功!查找結果如下:n"); outputHead(); outputOneGoods(product.datapos); elseprintf("查找失敗!編號為%d的物品不存在。n",number); 3.15根據物品名字進行查找函數void seqSearchByName(char name) int flag=0; int n,i; n=product.len; i=0; while (i<n)if (strcmp(,name)=0) if (flag=0) flag=1; printf(&quo
27、t;查找成功!查找結果如下:n"); outputHead(); outputOneGoods(product.datai);i+;if (flag=0) printf("查找失敗!名字為%s的物品不存在。n",name); 3.16對物品記錄進行查找函數void searchGoods() int number; char nameNAME_MAX_LEN; int subMenuItem=1;while (subMenuItem!=0)printf("nn"); printf("*查找子菜單*n"); printf(&q
28、uot;* 1.根據物品編號進行查找 *n"); printf("* 2.根據物品名字進行查找 *n"); printf("* 0.退出系統 *n"); printf("*n"); printf("請輸入所選子菜單項序號:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1: printf("請輸入要查找的物品編號:"); scanf("%d",&number); seq
29、SearchByNumber(number); break; case 2: printf("請輸入要查找的物品名字:"); scanf("%s",name); seqSearchByName(name); break; case 0:break; default:printf("輸入超出范圍!n"); break;4設計結果與分析4.1各個模塊的程序流程圖1)主函數程序(N-S)流程圖及運行界面主函數程序(N-S)流程圖簡單說明:該功能主要顯示給用戶一個進入界面,它主要的是顯示該程序主要能夠執行哪些功能。根據用戶輸入的不同的菜單項對
30、應不同的功能。 主菜單2)輸入物品記錄信息的(N-S)流程圖及程序運行界面物品記錄信息的(N-S)流程定義變量 int menuItemCode=1;product;len=0 While(menuItemCode); Scanf(“%d”,&menuItemCode); Switch(menuItemCode); Case 1:inputGods(); break; 請輸入物品信息 Case 2:outputGods(); break; 顯示物品信息 Case 3:saveGoods(); break; 將物品記錄存盤 Case 4:insertOneGoods(); break;
31、插入一個物品信息 Case 5 :deleteOneGoods(); break; 刪除一個物品記錄 Case 6:sortGoods(); break; 將物品記錄排序 Case 7:searchGoods(); break; 查找物品記錄 Case 0: 退出系統 break; 返回程序主界面該模塊主要是對物品信息進行錄入,錄入的主要有物品記錄的編號、名字、單價、數量等信息然后在存盤。 物品錄入信息 物品記錄信息存盤物品記錄存盤詳細信息 輸出物品記錄插入物品記錄 插入物品之顯示結果 刪除物品記錄 刪除物品記錄之顯示結果 對物品記錄按編號遞增排序 對物品記錄按總價遞增排序查找子菜單界面根據物
32、品編號查找根據物品名字查找退出系統源程序如下:#include "stdio.h"#include "string.h" #define NAME_MAX_LEN 20 #define Prod_MAX_NUM 50typedef struct int num; char nameNAME_MAX_LEN;double unitprice; int amount; double totalprice; prodNode; typedef struct sequenceprodNode dataProd_MAX_NUM; int len; seq; seq
33、 product;void inputGoods() int i,n; printf("請輸入物品個數:n"); scanf("%d",&n); if (n<0) return; for (i=0;i<n;i+)printf("輸入物品的編號:n"); scanf("%d",&product.datai.num); printf("輸入物品的名字:n"); scanf("%s",); printf("輸
34、入物品的單價:n"); scanf("%lf",&product.datai.unitprice); printf("輸入物品的數量:n"); scanf("%d",&product.datai.amount); product.datai.totalprice=product.datai.unitprice*product.datai.amount;product.len=n;void outputGoods() int i; if (product.len=0) printf("n無數據!n&q
35、uot;); return; printf("n物品的記錄為:n"); printf("編號t名字t單價 t數量t總價n");for (i=0;i<product.len;i+)printf("%dt%st%lft%dt%.2lf",product.datai.num,,product.datai.unitprice,product.datai.amount,product.datai.totalprice); printf("n"); void saveGoods() i
36、nt i; FILE *fp; if (product.len=0) printf("n無數據!n");return;fp=fopen("D:goods.txt","w"); if (fp=NULL)printf("文件打開失敗!n"); return;fprintf(fp,"%st","編號"); fprintf(fp,"%st","名稱"); fprintf(fp,"%st ","單價");
37、fprintf(fp,"%st","數量");fprintf(fp,"%s","總價"); for (i=0;i<product.len;i+) fprintf(fp,"n"); fprintf(fp,"%dt",product.datai.num); fprintf(fp,"%st",); fprintf(fp,"%lft",product.datai.unitprice); fprintf(
38、fp,"%dt",product.datai.amount); fprintf(fp,"%.2lf",product.datai.totalprice); fclose(fp); printf("已成功存盤!n");void insertOneGoods() prodNode G; int i,pos; if(product.len=Prod_MAX_NUM) printf("表已滿!n"); return;printf("請輸入插入位置:"); scanf("%d",&am
39、p;pos); if (pos<0|pos>product.len) printf("插入位置出錯!n");return;printf("請輸入要插入的物品記錄:n"); printf("請輸入編號:"); do scanf("%d",&G.num); if (G.num<=0) printf("輸入的編號不合理,請重新輸入。n"); while (G.num<=0); printf("輸入物品的名字:n"); scanf("%s&q
40、uot;,G.name);printf("輸入物品的單價:n"); scanf("%lf",&G.unitprice); printf("輸入物品的數量:n"); scanf("%d",&G.amount); G.totalprice=G.unitprice*G.amount; for (i=product.len-1;i>=pos;i-)product.datai+1=product.datai; product.datapos=G; product.len=product.len+1; p
41、rintf("插入成功!");void deleteOneGoods() int i,pos; if (product.len=0)printf("表空!n"); return;printf("請輸入要刪除的物品記錄的位置:"); scanf("%d",&pos); if (pos<0|pos>product.len-1) printf("刪除的位置出錯!n"); return; for(i=pos+1;i<=product.len-1;i+) product.data
42、i-1=product.datai;product.len=product.len-1; printf("刪除成功!n");void bubbleSortByNum() int i,j,n; prodNode temp; int tag; n=product.len; for(tag=1,i=0;i<n-1 && tag=1;i+)tag=0; for (j=n-1;j>i;j-) if (product.dataj.num<product.dataj-1.num) temp=product.dataj; product.dataj=pro
43、duct.dataj-1; product.dataj-1=temp;tag=1; void bubbleSortByTotal() int i,j,n; prodNode temp; int tag; n=product.len;for (tag=1,i=0;i<n-1 && tag=1;i+) tag=0; for (j=n-1;j>i;j-)if (product.dataj.totalprice<product.dataj-1.totalprice) temp=product.dataj; product.dataj=product.dataj-1;
44、product.dataj-1=temp;tag=1;void sortGoods() int subMenuItem=1; while (subMenuItem!=0)printf("nn"); printf("*排序子菜單*n"); printf("* 1.按照物品編號進行遞增排序 *n"); printf("* 2.按照物品總價進行遞增排序 *n"); printf("* 0.退出子菜單 *n"); printf("*n"); printf("請輸入所選子菜單
45、項序號:"); scanf("%d",&subMenuItem); switch (subMenuItem)case 1:bubbleSortByNum(); printf("已按照物品的編號進行遞增排序。排序后的結果為:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的總價進行遞增排序。排序后的結果為:n"); outputGoods(); break;case 0:break; default:printf("輸入超
46、出范圍!n"); break;void outputHead() printf("編號t名字t單價 t數量t總價n");void outputOneGoods(prodNode s) printf("%dt%st%lf t%dt%.2lf",s.num,,s.unitprice,s.amount,s.totalprice);printf("n"); int isNumberExist (int number) int n,i=0; n=product.len; while (i<n && p
47、roduct.datai.num!=number)i+; if (i<n) return i; else return -1;void seqSearchByNumber (int number) int pos; pos=isNumberExist(number); if (pos !=-1) printf("查找成功!查找結果如下:n"); outputHead(); outputOneGoods(product.datapos); elseprintf("查找失敗!編號為%d的物品不存在。n",number); void seqSearchByName(char name) int flag=0; int n,i; n=product.len; i=0; while (i<n)if (strcmp(,name)=0) if (flag=0) flag=1;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數字音樂市場行情監測及投資盈利預測報
- 2025-2030年中國救生器材市場需求形勢分析及投資戰略研究報告
- 初中語文單元閱讀教學設計分析
- 云南省大理新世紀中學2025屆高三下第一次測試英語試題含解析
- 車工高級工測試題(附參考答案)
- 母嬰試題庫(附答案)
- 湖南省常德市石門一中2025年高三3月份模擬考試英語試題含答案
- 2025屆山東名校高三下學期4月校際聯合檢測物理試題(原卷版+解析版)
- 新疆維吾爾自治區吐魯番市2024-2025學年七年級下學期期中語文試題(原卷版+解析版)
- 玻璃制造中的行業標準與規范考核試卷
- 工程部部門崗位職責
- 中國芳香植物資源
- (完整版)語文作文紙方格紙模版(兩種格式任選)
- 錄播教室裝修技術方案
- AB 753變頻器簡單操作培訓(參數拷貝)
- JGJ59-2011建筑施工安全檢查評分表-(完整版)
- 基于文化創意視角的媽祖文化旅游地產發展研究莆田媽祖文化旅游地產發展條件及思路研究
- 《分子生物學》復習考試題庫(帶答案)
- 起訴狀侵犯隱私權
- 阿育吠陀體質測試
- 輸液泵、微量泵的使用
評論
0/150
提交評論