




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上學(xué)號2016-2017學(xué)年 第2學(xué)期C語言物品管理課程設(shè)計報告題目:C語言物品管理專業(yè):網(wǎng)絡(luò)工程班級:16級(3)班姓名:代應(yīng)豪指導(dǎo)教師:代美麗成績: 計算機學(xué)院 2017 年 4月 27 日專心-專注-專業(yè) 目錄 1設(shè)計內(nèi)容及要求 . 2 1.1概述. 2 1.2主要功能. 2 1.3設(shè)計目的及具體要求. 2 2 概要設(shè)計. 2 2.1系統(tǒng)的功能簡介. 2 2.2 總體程序框圖 .
2、60;3 2.3各個模塊之間的主要關(guān)系. 3 3設(shè)計過程及程序代碼 . 3 3.1定義結(jié)構(gòu)體及宏定義. 4 3.2主函數(shù) main().4 3.3輸入物品信息函數(shù). .5 3.4輸出顯示物品函數(shù). 5 3.5將物品寫入磁盤. 6 3.6插入物品記錄函數(shù). 7 3.7 刪除一個物品記錄函數(shù) . 7 3.8按照物品編號進行遞增排序函數(shù). 8 3.9按照物品總價進
3、行遞增排序函數(shù). 8 3.10對物品記錄進行排序函數(shù). 9 3.11輸出頭部信息函數(shù). 10 3.12輸出一條物品信息函數(shù). .10 3.13判斷該編號物品是否存在函數(shù). 10 3.14根據(jù)物品編號進行查找函數(shù). 10 3.15根據(jù)物品名字進行查找函數(shù). 10 3.16對物品記錄進行查找函數(shù). 11 4設(shè)計結(jié)果與分析 . 12 4.1各個模塊的程序流程圖 . 12 1) 主函數(shù)
4、程序(N-S)流程圖及運行界面. 12 2) 輸入物品記錄信息的(N-S)流程圖及程序運行界面. .13 5設(shè)計心得 . 21 6參考文獻 .22 7源程序代碼(物品管理系統(tǒng)) . 231. 設(shè)計內(nèi)容及要求1.1概述 物品管理系統(tǒng)主要根據(jù)課程設(shè)計要求進行設(shè)計,從對物品的簡單處理著手設(shè)計一份物品管理系統(tǒng)。1.2主要功能物品管理系統(tǒng)是一個針對物品管理的系統(tǒng)。該系統(tǒng)功能主要包括八大模塊: 1)插入物品記錄:輸入物品個數(shù),根據(jù)物品個數(shù)依次輸入每個物品記錄的詳細信息。例如物品編號、名字、單價、數(shù)
5、量。 2)輸出物品記錄:對已經(jīng)寫入磁盤的記錄信息的顯示。如無數(shù)據(jù),則顯示無數(shù)據(jù)!3) 將物品記錄寫入文件。4) 插入一個物品記錄。5) 刪除一個物品記錄。6) 對物品記錄進行排序。7) 對物品記錄進行查找。8) 退出系統(tǒng)。1.3設(shè)計目的及具體要求主要利用C語言的文件操作能力設(shè)計開發(fā)一個小型的信息系統(tǒng),至少具有如下功能:物品的讀和寫、物品信息的增刪改、物品信息的排序、查找。操作界面要符合用戶的一般習(xí)慣,圖形或文本界面都可以。要求:系統(tǒng)以菜單方式工作,根據(jù)菜單項序號提示進行工作。物品信息包括編號看、名稱、單價、數(shù)量、總價。系統(tǒng)以菜單方式工作,實現(xiàn)對物品信息的錄入、修改、統(tǒng)計、排序、查詢、輸出等功能
6、。2概要設(shè)計2.1系統(tǒng)的功能簡介該系統(tǒng)的主要功能是系統(tǒng)以菜單方式工作,實現(xiàn)對物品信息的錄入,修改,統(tǒng)計,排序,查詢,輸出等功能。2.2總體程序框圖物品管理系統(tǒng)操作主要流程如下,各個函數(shù)分別實現(xiàn)不一樣的功能。2.3各個模塊之間的主要關(guān)系該程序的功能主要是實現(xiàn)物品信息的錄入,并對物品的相應(yīng)信息進行進本的增刪該的計算。各個模塊之間的關(guān)系是相互聯(lián)系的。首先,主函數(shù)包含了所有的子函數(shù)。主函數(shù)是整個程序的核心。子函數(shù)之間也是有聯(lián)系的,對物品讀取,插入刪除,檢索排序必須是在主函數(shù)的情況下進行的。因此在第一步選擇菜單項是非常重要的。第一步菜單項的選擇決定用戶所要實現(xiàn)的操作功能。3設(shè)計過程及程序代碼整個系統(tǒng)除了
7、主函數(shù)外,另外還有8個函數(shù),實現(xiàn)7人功能:輸入功能、輸出功能、寫入磁盤功能、插入并顯示功能、分類查找并顯示功能、分類排序并顯示功能。各個函數(shù)的詳細設(shè)計說明分別如下:3.1定義結(jié)構(gòu)體及宏定義#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主函數(shù)main()void main() int menuItemCode=1; product.len=0; while (menuItemCode!=0)printf("nn"); printf("*物品管理系統(tǒng)*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.退出系統(tǒng) *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輸入物品信息函數(shù)vo
11、id inputGoods() int i,n; printf("請輸入物品個數(shù):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("輸入物品的數(shù)量:n"); scanf("%d",&product.datai.amount); product.datai.totalprice=product.datai.unitprice*product.datai.amount;product.len=n;3.4輸出顯示物品函數(shù)void outputGoods() int i; if (product.len=0) printf("n無數(shù)據(jù)!n&q
13、uot;); return; printf("n物品的記錄為:n"); printf("編號t名字t單價 t數(shù)量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無數(shù)據(jù)!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","數(shù)量");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插入物品記錄函數(shù)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("輸入物品的數(shù)量: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刪除一個物品記錄函數(shù)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按照物品編號進行遞增排序函數(shù)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按照物品總價進行遞增排序函數(shù)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對物品記錄進行排序函數(shù)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("已按照物品的編號進行遞增排序。排序后的結(jié)果為:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的總價進
24、行遞增排序。排序后的結(jié)果為:n"); outputGoods(); break;case 0:break; default:printf("輸入超出范圍!n"); break;3.11輸出頭部信息函數(shù)void outputHead() printf("編號t名字t單價 t數(shù)量t總價n");3.12輸出一條物品信息函數(shù)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判斷該編號物品是否存在函數(shù)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根據(jù)物品編號進行查找函數(shù)void seqSearchByNumber (int number) int pos; pos=isNumberExist(number); if (pos !=-1) printf
26、("查找成功!查找結(jié)果如下:n"); outputHead(); outputOneGoods(product.datapos); elseprintf("查找失??!編號為%d的物品不存在。n",number); 3.15根據(jù)物品名字進行查找函數(shù)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;查找成功!查找結(jié)果如下:n"); outputHead(); outputOneGoods(product.datai);i+;if (flag=0) printf("查找失?。∶譃?s的物品不存在。n",name); 3.16對物品記錄進行查找函數(shù)void searchGoods() int number; char nameNAME_MAX_LEN; int subMenuItem=1;while (subMenuItem!=0)printf("nn"); printf("*查找子菜單*n"); printf(&q
28、uot;* 1.根據(jù)物品編號進行查找 *n"); printf("* 2.根據(jù)物品名字進行查找 *n"); printf("* 0.退出系統(tǒng) *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設(shè)計結(jié)果與分析4.1各個模塊的程序流程圖1)主函數(shù)程序(N-S)流程圖及運行界面主函數(shù)程序(N-S)流程圖簡單說明:該功能主要顯示給用戶一個進入界面,它主要的是顯示該程序主要能夠執(zhí)行哪些功能。根據(jù)用戶輸入的不同的菜單項對
30、應(yīng)不同的功能。 主菜單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: 退出系統(tǒng) break; 返回程序主界面該模塊主要是對物品信息進行錄入,錄入的主要有物品記錄的編號、名字、單價、數(shù)量等信息然后在存盤。 物品錄入信息 物品記錄信息存盤物品記錄存盤詳細信息 輸出物品記錄插入物品記錄 插入物品之顯示結(jié)果 刪除物品記錄 刪除物品記錄之顯示結(jié)果 對物品記錄按編號遞增排序 對物品記錄按總價遞增排序查找子菜單界面根據(jù)物
32、品編號查找根據(jù)物品名字查找退出系統(tǒng)源程序如下:#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("請輸入物品個數(shù):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("輸入物品的數(shù)量: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無數(shù)據(jù)!n&q
35、uot;); return; printf("n物品的記錄為:n"); printf("編號t名字t單價 t數(shù)量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無數(shù)據(jù)!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","數(shù)量");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("輸入物品的數(shù)量: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("已按照物品的編號進行遞增排序。排序后的結(jié)果為:n"); outputGoods(); break;case 2: bubbleSortByTotal(); printf("已按照物品的總價進行遞增排序。排序后的結(jié)果為:n"); outputGoods(); break;case 0:break; default:printf("輸入超
46、出范圍!n"); break;void outputHead() printf("編號t名字t單價 t數(shù)量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("查找成功!查找結(jié)果如下: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年記憶綿床墊項目提案報告模范
- 2025年分子診斷試劑項目立項申請報告
- 2025年電動滑板車項目提案報告模板
- 2025年涂裝除塵設(shè)備項目提案報告
- 2025年液態(tài)食品無菌罐裝設(shè)備項目提案報告模板
- 西北工業(yè)大學(xué)醫(yī)院招聘考試真題2024
- 房屋設(shè)施檢修協(xié)議
- 衣物二手交易協(xié)議
- 物品修理協(xié)議
- 水肥耦合對設(shè)施黃瓜產(chǎn)量和品質(zhì)的影響
- stype kit操作手冊第一步調(diào)整水平平衡儀
- 眼球的結(jié)構(gòu)與功能
- YS/T 22-2010銻酸鈉
- 三乙胺安全標(biāo)簽
- GB/T 4490-2021織物芯輸送帶寬度和長度
- GB/T 3299-2011日用陶瓷器吸水率測定方法
- GB/T 18867-2014電子工業(yè)用氣體六氟化硫
- FZ/T 51011-2014纖維級聚己二酰己二胺切片
- ICU常見檢查項目及課件
- 《月光下的中國》朗誦稿
- 土地荒漠化的防治(公開課)課件
評論
0/150
提交評論