




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 . . 39/40HUNAN UNIVERSITY程序設(shè)計訓(xùn)練報 告學(xué)生xxxx xxxxx學(xué)生學(xué)號 xx2 xxx 專業(yè)班級 xxxx班指導(dǎo)老師 xxxx院長 xxx2012 年6月 12 日目錄TOC o 1-3 h z uHYPERLINK l _Toc2126964641軟件開發(fā)平臺 PAGEREF _Toc212696464 h 2HYPERLINK l _Toc2126964652軟件功能說明 PAGEREF _Toc212696465 h 2HYPERLINK l _Toc2126964662.1功能分析說明圖3HYPERLINK l _Toc2126964672.2各項功能說
2、明3HYPERLINK l _Toc2126964683軟件設(shè)計詳細容5HYPERLINK l _Toc2126964693.1采用的主要數(shù)據(jù)結(jié)構(gòu)類型5HYPERLINK l _Toc2126964703.2流程圖6HYPERLINK l _Toc2126964714軟件測試11HYPERLINK l _Toc2126964724.1軟件測試用例11HYPERLINK l _Toc2126964734.2軟件測試報告25HYPERLINK l _Toc2126964755附錄26HYPERLINK l _Toc2126964765.1軟件使用說明26HYPERLINK l _Toc212696
3、4775.2源碼26HYPERLINK l _Toc2126964785.3參考文獻376 心得38軟件開發(fā)平臺配置環(huán)境 Windows 7(32位) 系統(tǒng) 運行環(huán)境 Windows 7(32位) 系統(tǒng)開發(fā)工具 Dev C+ 程序語言 C 語言軟件功能說明倉庫產(chǎn)品管理系統(tǒng)要求記錄產(chǎn)品的名稱、制造商、產(chǎn)地、原有產(chǎn)量、現(xiàn)有量、編號、產(chǎn)品位置。亓學(xué)忠: 1、創(chuàng)建產(chǎn)品信息2、輸出產(chǎn)品信息3、修改產(chǎn)品信息4、插入產(chǎn)品信息5、刪除產(chǎn)品信息6、查詢某產(chǎn)品信息7、按產(chǎn)品名稱排序8、按產(chǎn)品編號排序9、保存產(chǎn)品信息到文件10、從文件文件中讀取產(chǎn)品信息朱宏偉: 1、目錄 2、主函數(shù)倉庫產(chǎn)品管理系統(tǒng)輸入產(chǎn)品信息輸出產(chǎn)
4、品信息修改產(chǎn)品信息產(chǎn)品信息排序插入產(chǎn)品信息刪除產(chǎn)品信息查詢產(chǎn)品信息退出系統(tǒng)按產(chǎn)品名稱排序按產(chǎn)品編號排序2.1功能分析說明圖2.2各項功能說明要求對分別上面的每個功能模塊進行詳細的文字說明輸入模塊 createList()在主函數(shù)里面選擇1 進入輸入模塊, 首先建立一個名為product 的文本文檔,用scanf函數(shù)依次從鍵盤輸入產(chǎn)品名稱 制造商 產(chǎn)地 原產(chǎn)量 現(xiàn)有量 編號 存放位置。 然后再把這些信息用printf函數(shù)寫入文本文檔,如果輸入錯誤要重新輸入。最后關(guān)閉文件。 打印模塊 printList() 在主函數(shù)里面選擇2 進入打印模塊, 打開名為product的文本文檔,然后依次把文本里的產(chǎn)
5、品名稱 制造商 產(chǎn)地 原有量 現(xiàn)有量 編號 存放位置,用printf函數(shù)文本讀出來,用printf 函數(shù)顯示出來,再關(guān)閉文件。查找模塊 find()在主函數(shù)里面選擇8 進入查找模塊,再打開名為product的文本文檔,然后輸入要查找的產(chǎn)品的名稱,通過strcmp函數(shù)找到該產(chǎn)品的位置,再通過printf函數(shù)輸出該產(chǎn)品息。如果庫中沒有此種產(chǎn)品,會提示輸入錯誤,重新輸入產(chǎn)品名稱。然后關(guān)閉文件退出查找模塊。修改模塊 changeproduct()在主函數(shù)里面選擇7進入輸入模塊,然后打開名為protect的文本文檔,輸入要修改的產(chǎn)品的名稱,通過strcmp函數(shù)找到該產(chǎn)品的位置,找到后直接輸入新的信息,如
6、果產(chǎn)品庫中沒有此種產(chǎn)品的名稱,會提示重新輸入產(chǎn)品名稱。然后關(guān)閉文件。刪除模塊 delproduct()在主函數(shù)里面選擇5 進入刪除模塊,然后打開名為product的文本文檔,然后要刪除的產(chǎn)品的名稱,通過strcmp函數(shù)找到該產(chǎn)品位置,找到后又分三種情況: 1、如果該產(chǎn)品在鏈首,那么直接把鏈首位置后移到下一鏈節(jié),然后清除此鏈節(jié)所占存; 2、如果產(chǎn)品信息在鏈尾,那么直接上一鏈節(jié)指向NULL,然后清除此鏈節(jié)所占空間; 3、如果產(chǎn)品信息在鏈中,那么直接把上一鏈節(jié)的指針跳過此鏈節(jié)指向下一連接,然后清除此鏈節(jié)所占空間。 如果找不到此種產(chǎn)品,會提示重新輸入產(chǎn)品名稱,正確輸入后按上面的三種情況運行此模塊。 刪
7、除后退出刪除模塊。插入模塊 insertproduct() 在主函數(shù)里選擇6進入到插入模塊,打開名為product的文本文檔,然后直接輸要插入的產(chǎn)品的名稱 制造商 產(chǎn)地 原產(chǎn)量 現(xiàn)有量 編號 存放位置,然后此模塊會直接把該信息插入到信息首位,插入后退出此模塊。排序模塊 namesortList()或者numberssortList()在主函數(shù)里選擇3進入按產(chǎn)品名稱排序模塊,選擇4進入按產(chǎn)品編號排序模塊,打開名為product的文本文檔,然后模塊會通過鏈節(jié)一個一個對比彼此的名稱大?。ㄓ胹trcmp函數(shù))或者編號大小,然后小者在前,大者在后重新排序,排序后退出此模塊。退出系統(tǒng)模塊通過輸入0選擇直接
8、退出系統(tǒng)3軟件設(shè)計詳細容3.1 采用的主要數(shù)據(jù)結(jié)構(gòu)類型倉庫管理系統(tǒng):#include #include #include 鏈表3.2 流程圖1、main()函數(shù)流程圖:namesortList(h)numberssortList(h)breakbreakinput select select=0? select=1? Select=2?createList()breakbreakbreakbreakreturnmain()YNNYY Select=3?NN Select=4?N Select=5?YYprintList(h)Ndelproduct(h)NNN Select=7? Select=
9、6?YYYinsertproduct(h) Select=10?N Select=9? Select=8?breakbreakYYchangeproduct(h) find(h) load(h)breakbreakY save(h)2、createList()函數(shù)流程圖:printf(); input ni=1?i=3?i=2?printf();printf();i=n?NYNYYNY printf();return h3、printList()函數(shù)流程圖: returnnewNode-next!=NULL?N printf();Y newNode=newNode-nextinput name
10、Ycur=NULL?printf();YNstrcmp(cur-name,name.)?curpre=curcur=cur-next4、find()函數(shù)流程圖:N5、changeproduct()函數(shù)流程圖:input nameYcur=NULL?printf();YNstrcmp(cur-name,name.)?curpre=curcur=cur-nextNinput nameNNstrcmp(cur- name,name)?curpre=curcur=cur-nextNNcur!=NULL?cur=h?h=h-nextfree(cur)cur-next=NULL?curpre-next=N
11、ULLfree(cur)curpre-next=cur-nextfree(cur)6、delproduct()函數(shù)流程圖:YreturnYYY軟件測試4.1軟件測試用例創(chuàng)建產(chǎn)品信息輸出數(shù)據(jù)按名稱排序按產(chǎn)品編號排序刪除產(chǎn)品信息插入產(chǎn)品信息7、修改產(chǎn)品信息查詢產(chǎn)品信息保存打開文件退出軟件4.2軟件測試報告將4.1 測試過程中能完成的功能和不能完成的功能以與不能完全完成的功能進行列表分析,指出測試結(jié)果和出錯原因,例如:標號項目預(yù)期結(jié)果實際結(jié)果出錯原因出錯次數(shù)01主函數(shù)菜單美觀的菜單得到美觀的菜單無無02輸入產(chǎn)品信息正確輸入數(shù)據(jù)完成無無03輸出產(chǎn)品信息正確輸出數(shù)據(jù)完成無無04按名稱排序正確排序完成無無
12、05按產(chǎn)品編號排序正確排序完成無無06刪除產(chǎn)品信息正確刪除數(shù)據(jù)完成無無07修改產(chǎn)品信息正確修改完成無無08查詢產(chǎn)品信息正確查詢到信息完成無無09退出系統(tǒng)正確退出系統(tǒng)完成無無5.附錄5.1軟件使用說明運行條件:本軟件可以在Dev C+ 和 Visual C+ 里運行,在Turbo C 下不能運行,其他編程軟件沒有測試。進入菜單, 選擇你要執(zhí)行模塊,在初次使用時,應(yīng)收先選擇數(shù)字1 輸入航班信息后才能使用其他模塊,5.2源碼/*倉庫產(chǎn)品管理系統(tǒng)亓學(xué)忠*/#include /*包含常用庫函數(shù)*/#include /*包含strcmp、strcpy字符串比較拷貝函數(shù)*/#include /*包含exit
13、強制結(jié)束函數(shù)*/#includestruct product /*定義相關(guān)鏈表*/char name12; /*產(chǎn)品名稱*/char manufacturer30; /*制造商*/char origin30; /*產(chǎn)地*/int originqun; /*產(chǎn)品原有數(shù)量*/int nowqun; /*現(xiàn)有產(chǎn)品數(shù)量*/int numbers; /*產(chǎn)品編號*/char location30; /*存放位置*/struct product *next; /*指向下一個同類型結(jié)構(gòu)*/;void W()printf(nnn);printf(tn);printf(tn);printf(tn);printf
14、(tn);printf(tn);printf(tn);printf(t 歡迎使用產(chǎn)品庫存管理系統(tǒng) n);printf(tn);printf(t 按任意鍵繼續(xù) n);printf(tn);printf(tn);printf(tn);printf(tn);printf(tn);printf(tn);getch();struct product *createList() /*定義新建產(chǎn)品信息函數(shù)*/struct product *head=NULL,*cur=NULL,*curnext=NULL; /*定義頭節(jié)點、當(dāng)前節(jié)點、下一個節(jié)點*/int n,i; /*定義節(jié)點數(shù)、循環(huán)變量*/printf(
15、t請輸入要創(chuàng)建的節(jié)點數(shù):); scanf(%d,&n);for(i=0;iname,curnext-manufacturer,curnext-origin,&(curnext-originqun),&(curnext-nowqun),&(curnext-numbers),curnext-location);if(curnext-originqunnowqunoriginqunnowqun) /*判斷輸入數(shù)據(jù)是否正確*/ printf(nt輸入數(shù)據(jù)錯誤,請重新輸入!nn);goto A;curnext-next=NULL;head=curnext; /*將cuenext賦給頭節(jié)點*/cur=cu
16、rnext; /*將cuenext賦給當(dāng)前節(jié)點cur*/elsecurnext=(struct product*)malloc(sizeof(struct product); /*開辟下一個節(jié)點需要的空間*/B: printf(t請輸入第%d種產(chǎn)品的:名稱 制造商 產(chǎn)地 原產(chǎn)量 現(xiàn)有量 編號 存放位置n,i+1);printf(t);scanf(%s%s%s%d%d%d%s,curnext-name,curnext-manufacturer,curnext-origin,&(curnext-originqun),&(curnext-nowqun),&(curnext-numbers),curn
17、ext-location);if(curnext-originqunnowqunoriginqunnowqun) /*判斷輸入數(shù)據(jù)是否正確*/ printf(nt輸入數(shù)據(jù)錯誤,請重新輸入!nn);goto B;curnext-next=NULL;cur-next=curnext; /*將當(dāng)前節(jié)點與下個節(jié)點連接起來*/cur=curnext; /*當(dāng)前節(jié)點后移*/system(cls); /*DOS清屏*/printf(nt恭喜你輸入已完成。nn);return head; /*結(jié)束輸入信息并返回主菜單*/;void printList(struct product *h) /*定義輸出產(chǎn)品信息
18、函數(shù)*/struct product *newNode; newNode=h; /*獲取鏈表頭指針*/ system(cls);printf(nt名稱t制造商t產(chǎn)地t原產(chǎn)量t現(xiàn)有量t編號t存放位置);while(newNode-next!=NULL)printf(nt%st%st%st%dt%dt%dt%s,newNode-name,newNode-manufacturer,newNode-origin,newNode-originqun,newNode-nowqun,newNode-numbers,newNode-location);newNode=newNode-next;printf(n
19、t%st%st%st%dt%dt%dt%sn,newNode-name,newNode-manufacturer,newNode-origin,newNode-originqun,newNode-nowqun,newNode-numbers,newNode-location);printf(n);struct product *delproduct(struct product *h) /*定義刪除某位產(chǎn)品的信息函數(shù),名稱由用戶輸入*/struct product *cur=NULL,*curpre=NULL;char name12;G:printf(t請輸入要刪除的產(chǎn)品名稱:);scanf(
20、%s,name);cur=h;while(cur!=NULL&strcmp(cur-name,name) /*查找產(chǎn)品位置*/curpre=cur; /*如果不是所需節(jié)點,curpre指向后移*/cur=cur-next; /*cur也后移*/if(cur=NULL) /*如果沒有找到*/printf(nt沒有找到該產(chǎn)品,請重新輸入!nn); goto G;if(!strcmp(cur-name,name) /*如果找到該產(chǎn)品*/if(cur=h) /*如果該節(jié)點在鏈首*/h=h-next; /*當(dāng)前鏈首后移*/free(cur); /*釋放鏈首所占存*/ elseif(cur-next=NU
21、LL) /*如果該節(jié)點在鏈尾*/curpre-next=NULL; /*前一個鏈節(jié)指向空*/free(cur); /*釋放鏈尾所占存*/else /*如果該節(jié)點在鏈中*/curpre-next=cur-next; /*該節(jié)點的前一位鏈節(jié)指向該鏈節(jié)后的下一位節(jié)點*/ free(cur); /*釋放該節(jié)點所占存*/system(cls);printf(nt已成功刪除該產(chǎn)品信息!nn);return h; /*結(jié)束該函數(shù)且返回新鏈表后返回主菜單*/struct product *changeproduct(struct product *h) /*定義修改產(chǎn)品信息函數(shù)*/struct product
22、 *cur=NULL,*curpre=NULL;char name12;D:printf(t請輸入要修改產(chǎn)品名稱:);scanf(%s,name);cur=h;while(cur!=NULL&strcmp(cur-name,name) /*查找產(chǎn)品位置*/curpre=cur;cur=cur-next;if(cur=NULL) /*如果沒有找到*/printf(nt沒有找到該產(chǎn)品,請重新輸入!nn);goto D; if(!strcmp(cur-name,name) /*如果找到該產(chǎn)品*/E: printf(nt名稱 制造商 產(chǎn)地 原產(chǎn)量 現(xiàn)有量 編號 存放位置n); /*輸入該產(chǎn)品的新信息*
23、/printf(t);scanf(%s%s%s%d%d%d%s,cur-name,cur-manufacturer,cur-origin,&(cur-originqun),&(cur-nowqun),&(cur-numbers),cur-location);if(cur-originqunnowqunoriginqunnowqun) /*判斷輸入數(shù)據(jù)是否正確*/ printf(nt輸入數(shù)據(jù)錯誤,請重新輸入!nn);goto E; system(cls);printf(nnt已成功修改信息!nn);return h;struct product *insertproduct(struct pro
24、duct *h) /*插入新產(chǎn)品信息到鏈首*/struct product *newproduct=NULL;newproduct=(struct product*)malloc(sizeof(struct product);C:printf(t請輸入新產(chǎn)品的信息:名稱 制造商 產(chǎn)地 原有量 現(xiàn)有量 編號 存放位置n );printf(t);scanf(%s %s %s %d %d %d %s,newproduct-name,newproduct-manufacturer,newproduct-origin,&(newproduct-originqun),&(newproduct-nowqun
25、),&(newproduct-numbers),newproduct-location);if(newproduct-originqunnowqunoriginqunnowqun) /*判斷輸入數(shù)據(jù)是否正確*/printf(nt輸入數(shù)據(jù)錯誤,請重新輸入!nn);goto C;newproduct-next=h;h=newproduct;system(cls); /*DOS清屏*/printf(nnt已成功插入新產(chǎn)品信息!nn);return h;struct product *namesortList(struct product *h) /*按名稱對產(chǎn)品進行排序*/struct produc
26、t *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre;if(h=NULL) /*空鏈*/return h;while(h!=NULL)minPre=curPre=min=cur=h;while(cur!=NULL) /*檢索名稱最小的點*/if(strcmp(cur-name,min-name)next;if(newH=NULL) /*新鏈為空*/newH=min;newT=min;elsenewT-next=min; /*附到新鏈尾*/newT=newT-next; /*將最小節(jié)點和原鏈分離*/if(min=h) /*min在鏈首*/h=h-ne
27、xt;elseif(min-next=NULL)minPre-next=NULL;elseminPre-next=min-next;min-next=NULL;system(cls);printf(nnt已成功按名稱排名!nn);return newH; struct product *numberssortList(struct product *h) /*按產(chǎn)品編號排序*/struct product *newH=NULL,*newT=NULL,*cur,*curPre,*min,*minPre;if(h=NULL)return h;while(h!=NULL)minPre=curPre=
28、min=cur=h;while(cur!=NULL)if(cur-numbersnumbers)min=cur;minPre=curPre;curPre=cur;cur=cur-next;if(newH=NULL)newH=min;newT=min;elsenewT-next=min;newT=newT-next;if(min=h)h=h-next;elseif(min-next=NULL)minPre-next=NULL;elseminPre-next=min-next;min-next=NULL;system(cls);printf(nnt已成功按編號排名!nn);return newH;
29、void find(struct product *h) /*按產(chǎn)品名查詢某產(chǎn)品信息*/struct product *cur=NULL,*curpre=NULL;char name12;F:printf(t請輸入要查詢的產(chǎn)品名稱:); /*要查詢的對象名*/scanf(%s,name);cur=h;while(cur!=NULL&strcmp(cur-name,name) /*查找產(chǎn)品位置*/curpre=cur;cur=cur-next;if(cur=NULL) /*如果沒有找到*/printf(nt沒有找到該產(chǎn)品,請重新輸入!nn); goto F;if(!strcmp(cur-name
30、,name) /*找到該產(chǎn)品*/system(cls); /*DOS清屏*/printf(nnt該產(chǎn)品信息:nn);printf(t名稱t制造商t產(chǎn)地t原產(chǎn)量t現(xiàn)有量t編號t存放位置n); printf(t%st%st%st%dt%dt%dt%snn,cur-name,cur-manufacturer,cur-origin,cur-originqun,cur-nowqun,cur-numbers,cur-location);void save(struct product *h) /*保存*/FILE *fp;struct product *cur;fp=fopen(product.txt,w
31、b); /*打開文件進行操作*/if(fp=NULL) /*若打開失敗*/printf(t文件打開失敗n);return;cur=h;while(cur!=NULL) /*若正確打開*/fwrite(cur,sizeof(struct product),1,fp); /*保存操作*/ cur=cur-next ;fclose(fp); /*操作完關(guān)閉文件*/fflush(stdin);/*清除緩存*/system(cls);printf(nt恭喜你已成功保存數(shù)據(jù)!nn);struct product *load(struct product *h) /*打開文件*/struct product
32、 *cur,*temp,*newproduct,product;FILE *fp;fp=fopen(product.txt,rb); /*打開文件進行操作*/if(fp=NULL) /*打開失敗*/printf(t打開失敗!n);return h;if(h!=NULL) /*成功打開*/cur=h;while(cur!=NULL)temp=cur;cur=cur-next;free(temp);while(fread(&product,sizeof(struct product),1,fp)!=0)newproduct=(struct product*)malloc(sizeof(struct product);*newproduct=product;newproduct-next=NULL;if(h=NULL)temp=h=newproduct;elsetemp-next=newproduct;temp=newproduct;system(cls);printf(nt已成功打開文件!nn);fclose(fp);return h;void menu() /*目錄*/printf(t目錄n);printf(tn);printf(t 1 創(chuàng)建產(chǎn)品信息 n);printf(t 2 輸出產(chǎn)品信息 n);printf(t 3 按名稱排序 n);printf(t
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【濟南】山東濟南市歷下區(qū)衛(wèi)健系統(tǒng)招聘實行人員控制總量備案管理人員110人筆試歷年典型考題及考點剖析附帶答案詳解
- 【百色】2025年廣西百色市平果生態(tài)環(huán)境局招聘1人筆試歷年典型考題及考點剖析附帶答案詳解
- 【廣州】2025年廣東廣州市人力資源和社會保障局系統(tǒng)事業(yè)單位招聘103人筆試歷年典型考題及考點剖析附帶答案詳解
- bbc音標教學(xué)課件
- 教學(xué)課件五年級上冊語文
- 整頓學(xué)風(fēng)主題班會課件
- 整體護理教學(xué)課件
- 資訊科技在日常生活之應(yīng)用
- 幻影獵手教學(xué)課件
- 旱天雷教學(xué)課件
- 文學(xué)作品評分表
- 調(diào)解方法與技巧
- 國際咨詢工程師聯(lián)合會fidic合同中英文對照版
- 天然氣開采業(yè)的技術(shù)裝備與設(shè)施建設(shè)
- 高素質(zhì)農(nóng)民培育培訓(xùn)
- 《厭氧菌感染的治療》課件
- 葫蘆灸培訓(xùn)課件
- 社區(qū)中醫(yī)健康知識講座總結(jié)
- 耵耳護理查房
- 貴州省黔東南州2024屆化學(xué)高一第二學(xué)期期末統(tǒng)考試題含解析
- 避孕套市場需求分析報告
評論
0/150
提交評論