版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目 商店存儲(chǔ)管理系統(tǒng) 學(xué)生姓名 徐 玲 指導(dǎo)教師 秦 飛 學(xué) 院 管理科學(xué)與工程學(xué)院 專業(yè)班級(jí) 息 082 完成時(shí)間 2010.06.10 目 錄第一章 課程設(shè)計(jì)目的2第二章 課程設(shè)計(jì)內(nèi)容和要求2第三章 課程設(shè)計(jì)分析3第四章 算法描述4第五章 源代碼8第六章 運(yùn)行結(jié)果分析13第七章 結(jié)束語(yǔ)15第八章 參考文獻(xiàn)15第一章 課程設(shè)計(jì)目的通過(guò)實(shí)習(xí),了解并初步掌握設(shè)計(jì)、實(shí)現(xiàn)較大系統(tǒng)的完整過(guò)程,包括系統(tǒng)分析、編碼設(shè)計(jì)、系統(tǒng)集成、以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計(jì)、實(shí)現(xiàn)以及操作方法,為進(jìn)一步的應(yīng)用開發(fā)打好基礎(chǔ)。通過(guò)實(shí)習(xí)鞏固并提高實(shí)習(xí)者的C語(yǔ)言知識(shí),并初步了解Visual C+的
2、知識(shí),提高其編程能力與專業(yè)水平。第二章 課程設(shè)計(jì)內(nèi)容和要求2.1課程設(shè)計(jì)內(nèi)容建立一商店存貨管理系統(tǒng),要求每次出貨時(shí)取進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物。分步實(shí)施:1.初步完成總體設(shè)計(jì),搭好框架,確定人機(jī)對(duì)話的界面,確定函數(shù)個(gè)數(shù);2.完成最低要求:建立一個(gè)文件,包括5個(gè)種類的貨物情況,能對(duì)商品信息進(jìn)行擴(kuò)充(追加),修改和刪除以及簡(jiǎn)單的排序;3.進(jìn)一步要求:擴(kuò)充商品數(shù)量,以及完成系統(tǒng)查詢功能。有興趣的同學(xué)可以自己擴(kuò)充系統(tǒng)功能。2.2要求:1.界面友好,函數(shù)功能要?jiǎng)澐趾?.總體設(shè)計(jì)應(yīng)畫一流程圖3.程序要加必要的注釋4.要提供程序測(cè)試方案5.程序一定要經(jīng)得起測(cè)試,寧可功能少一些,也要能運(yùn)行起來(lái),
3、不能運(yùn)行的程序是沒有價(jià)值的。2.3 運(yùn)行環(huán)境該程序的運(yùn)行環(huán)境為Windows xp系統(tǒng),Microsoft Visual C+6.0版本。第三章 課程設(shè)計(jì)分析3.1需要定義一個(gè)結(jié)構(gòu)體數(shù)組,其中name表示商品的名稱,time表示商品的進(jìn)貨時(shí)間,year表示商品的生產(chǎn)日期,no表示商品的保質(zhì)期。3.2利用冒泡法,對(duì)商品進(jìn)行排序。3.3選擇需要的功能,其中功能包括商品的最原始添加,商品的插入,刪除,查找,將數(shù)據(jù)寫入文件中,從文件中讀出數(shù)據(jù)等操作。3.4選擇輸入09,10個(gè)數(shù)的其中一個(gè)數(shù),進(jìn)行相應(yīng)的操作。3.5進(jìn)行完所的操作之后,選擇保存功能,將數(shù)據(jù)保存到文件中。3.6退出程序。第四章 算法(數(shù)據(jù)結(jié)
4、構(gòu))描述4.1先定義一個(gè)商品的結(jié)構(gòu)體數(shù)組:typedef struct /*定義結(jié)構(gòu)體數(shù)組*/ char name20;/*商品名稱*/ int time;/*進(jìn)貨時(shí)間*/ int year;/*生產(chǎn)日期*/ int no;/*保質(zhì)期*/goods;4.2建立一個(gè)菜單函數(shù),顯示10個(gè)功能,供用戶選擇,進(jìn)行人機(jī)對(duì)話。4.3設(shè)置一個(gè)排序的函數(shù),void Sort_by_time(goods gs,int n)。利用冒泡法先對(duì)商品按進(jìn)貨的時(shí)間排序,對(duì)進(jìn)貨時(shí)間一樣的貨物,再按離保質(zhì)期最近排序。 4.4設(shè)置一個(gè)輸入的函數(shù),int Input(goods gs,int n)。這個(gè)函數(shù)是最初商品輸入函數(shù),當(dāng)
5、選擇了這個(gè)功能后,如果是第一次運(yùn)行這個(gè)程序,保存輸入,那將在D盤產(chǎn)生一個(gè)名為“商品.doc”的文件,如果已經(jīng)運(yùn)行過(guò)了,并保存輸入,那輸入的商品信息將代替原有的信息,數(shù)據(jù)輸入使用交互輸入,進(jìn)行人機(jī)對(duì)話,確定是否進(jìn)行下一個(gè)數(shù)據(jù)的添加。并且調(diào)用了上面的排序函數(shù),對(duì)輸入的數(shù)據(jù)進(jìn)行排序。4.5設(shè)置一個(gè)顯示的函數(shù),void Display(goods gs,int n)。顯示上面輸入的所有數(shù)據(jù),或者是從文件中讀取的數(shù)據(jù)。4.6設(shè)置一個(gè)插入的函數(shù),int Insert_a_record(goods gs,int n)。每次插入一組數(shù)據(jù),如果要再插入,則再選擇這個(gè)功能進(jìn)行操作。并且在插入的同時(shí),已經(jīng)排好序,把
6、數(shù)據(jù)插入適合的位置。4.7設(shè)置一個(gè)查找刪除的函數(shù),int Delete_a_record(goods gs,int n)。輸入要查找的商品名稱,如果不存在,則輸出失敗信息,如果存在,則用下一個(gè)信息代替原有信息的位置。4.8設(shè)置一個(gè)查找顯示的函數(shù),void Query_a_record(goods gs,int n)。輸入要查找的商品名稱,如果不存在,則輸出失敗信息,如果存在,則顯示信息。4.9設(shè)置一個(gè)寫入文件的函數(shù),void WritetoText(goods gs,int n)。設(shè)置文件指針,先判斷文件是否能打開并且能進(jìn)行寫操作,不能則輸出失敗信息,能則循環(huán)寫入數(shù)據(jù),寫完關(guān)閉文件。4.10設(shè)
7、置一個(gè)讀文件的函數(shù),int AddfromText(goods gs,int n)。設(shè)置文件指針,判斷文件是否能打開而且能進(jìn)行讀操作,能則先讀出總的數(shù)據(jù)量,接著循環(huán)讀出數(shù)據(jù),最后關(guān)閉文件。4.11進(jìn)入最后一步,main函數(shù)。判斷選擇的操作,根據(jù)用戶選擇的操作,利用switch語(yǔ)句進(jìn)行相應(yīng)的函數(shù)調(diào)用。4.12選擇保存功能,對(duì)數(shù)據(jù)進(jìn)行保存,然后選擇結(jié)束程序退出功能,退出程序。Sort_by_time(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在操作結(jié)果:數(shù)據(jù)進(jìn)行排序Input(gs, n)初始條件:沒有任何數(shù)據(jù)存在,或者要替換原文件中的所有數(shù)據(jù) 操作結(jié)果:數(shù)據(jù)進(jìn)行輸入Display(gs,n)初始條件:數(shù)據(jù)已
8、經(jīng)存在 操作結(jié)果:數(shù)據(jù)顯示Insert_a_record(gs,n) 初始條件:數(shù)據(jù)已經(jīng)存在操作結(jié)果:數(shù)據(jù)插入Delete_a_record(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在 操作結(jié)果:數(shù)據(jù)刪除Query_a_record(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在 操作結(jié)果:數(shù)據(jù)統(tǒng)計(jì)WritetoText(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在 操作結(jié)果:寫入文件中AddfromText(gs,n)初始條件:文件已經(jīng)存在 操作結(jié)果:從文件中讀出4.13流程圖:退出程序?qū)懭胛募判驍?shù)據(jù)統(tǒng)計(jì)數(shù)據(jù)添加數(shù)據(jù)查找數(shù)據(jù)刪除數(shù)據(jù)顯示數(shù)據(jù)新數(shù)據(jù)重新選擇功能讀文件Main函數(shù)功能8功能1功能2功能3功能4功能5功能6功能9功
9、能7 功能0第五章 源代碼#include<stdio.h> /*引用庫(kù)函數(shù)*/ #include<stdlib.h> #include<ctype.h> #include<string.h> typedef struct /*定義結(jié)構(gòu)體數(shù)組*/ char name20;/*商品名稱*/ int time;/*進(jìn)貨時(shí)間*/ int year;/*生產(chǎn)日期*/ int no;/*保質(zhì)期*/goods;goods gs80; /*結(jié)構(gòu)體數(shù)組變量*/ int menu_select() /*菜單函數(shù)*/ char c; do system("
10、cls"); /*運(yùn)行前清屏*/ printf("tt* 商品系統(tǒng)*n"); /*菜單選擇*/ printf("tt | 1. 輸入數(shù)據(jù) |n"); printf("tt | 2. 顯示數(shù)據(jù) |n"); printf("tt | 3. 插入數(shù)據(jù) |n"); printf("tt | 4. 刪除數(shù)據(jù) |n"); printf("tt | 5. 查找數(shù)據(jù) |n"); printf("tt | 6. 統(tǒng)計(jì)并顯示進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物 |n&qu
11、ot;); printf("tt | 7. 寫入文件 |n"); printf("tt | 8. 讀文件 |n"); printf("tt | 9. 對(duì)讀入的文件進(jìn)行排序 |n"); printf("tt | 0. 退出 |n"); printf("tt*n"); printf("ttt請(qǐng)選擇(0-9):"); c=getchar(); /*讀入選擇*/ while(c<'0'|c>'9'); return(c-'0'
12、;); /*返回選擇*/ void Sort_by_time(goods gs,int n) /*按進(jìn)貨時(shí)間排序*/ int i,j,*a,*b,c,*p,*q,s,*m,*k,d,e,f; char t10; for(i=0;i<n-1;i+) /*冒泡法排序*/ for(j=0;j<n-1-i;j+) if(gsj.time>gsj+1.time) a=&gsj+1.time; b=&gsj.time; c=*a; *a=*b; *b=c; strcpy(t,gsj+1.name); strcpy(gsj+1.name,); strcpy(
13、,t); p=&gsj+1.year; q=&gsj.year; s=*p; *p=*q; *q=s; m=&gsj+1.no; k=&gsj.no; d=*m; *m=*k; *k=d; else if(gsj.time=gsj+1.time) p=&gsj.year; a=&gsj+1.year; b=&gsj.no; q=&gsj+1.no; e=(*p)+(*b)*10000; f=(*a)+(*q)*10000; if(e>f) a=&gsj+1.time; b=&gsj.time;
14、 c=*a; *a=*b; *b=c; strcpy(t,gsj+1.name); strcpy(gsj+1.name,); strcpy(,t); p=&gsj+1.year; q=&gsj.year; s=*p; *p=*q; *q=s; m=&gsj+1.no; k=&gsj.no; d=*m; *m=*k; *k=d; int Input(goods gs,int n) /*輸入若干條記錄*/ int i=0; char sign,x10; while(sign!='n'&&sign!=
15、39;N') /*判斷*/ printf("ttt商品名稱:"); /*交互輸入*/ scanf("ttt%s",gsn+); printf("ttt進(jìn)貨時(shí)間(例20070201):"); scanf("ttt%d",&gsn+i.time); printf("ttt生產(chǎn)日期(例20070201):"); scanf("ttt%d",&gsn+i.year); printf("ttt保質(zhì)期(年):"); scanf(&q
16、uot;ttt%d",&gsn+i.no); gets(x); /*清除多余的輸入*/ printf("ttt繼續(xù)輸入?(Y/N)"); scanf("ttt%c",&sign); /*輸入判斷*/ i+; Sort_by_time(gs,n+i); /*調(diào)用排序函數(shù)*/ return(n+i); void Display(goods gs,int n) /*顯示所有記錄*/ int i; printf("tt-n"); /*格式頭*/ printf("tt商品名稱 進(jìn)貨時(shí)間 生產(chǎn)日期 保質(zhì)期(年)
17、n"); printf("tt-n"); for(i=1;i<n+1;i+) /*循環(huán)輸入*/ printf("tt%-5s %d %d %dn",,gsi-1.time,gsi-1.year,gsi-1.no); if(i>1&&i%10=0) /*每十個(gè)暫停*/ printf("ttt-n"); /*格式*/ printf("ttt"); system("pause"); printf("ttt-n"); prin
18、tf("ttt"); system("pause"); /*按任何鍵繼續(xù)*/ int Insert_a_record(goods gs,int n) /*插入一條記錄*/ char x10; /*清除多余輸入所用*/ printf("ttt商品名稱:"); /*交互輸入*/ scanf("ttt%s",); printf("ttt進(jìn)貨時(shí)間:"); scanf("ttt%d",&gsn.time); printf("ttt生產(chǎn)日期:"
19、); scanf("ttt%d",&gsn.year); printf("ttt保質(zhì)期:"); scanf("ttt%d",&gsn.no); gets(x); n+; Sort_by_time(gs,n); /*調(diào)用排序函數(shù)*/ printf("ttt插入成功!n"); /*返回成功信息*/ return(n); int Delete_a_record(goods gs,int n) /*按商品名字查找,刪除一條記錄*/ char s20; int i=0,j; printf("ttt商
20、品名稱:"); scanf("%s",s); while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/ if(i=n) printf("ttt沒找到!n"); /*返回失敗信息*/ return(n); for(j=i;j<n-1;j+) /*刪除操作*/ strcpy(,gsj+1.name); gsj.time=gsj+1.time; gsj.year=gsj+1.year; gsj.no=gsj+1.no; printf("ttt刪除成功!n&quo
21、t;); /*返回成功信息*/ return(n-1); void Query_a_record(goods gs,int n) /*查找并顯示一個(gè)記錄*/ char s20; int i=0; printf("ttt輸入要查找的商品名稱:"); scanf("ttt%s",s); while(strcmp(,s)!=0&&i<n) i+; /*查找判斷*/ if(i=n) printf("ttt沒找到!n"); /*輸入失敗信息*/ return; printf("ttt進(jìn)貸時(shí)間:%d
22、n",gsi.time); /*輸出該商品信息*/ printf("ttt生產(chǎn)日期:%dn",gsi.year); printf("ttt保質(zhì)期:%dn",gsi.no); void WritetoText(goods gs,int n) /*將所有記錄寫入文件*/ int i=0; FILE *fp; /*定義文件指針*/ if(fp=fopen("d:商品.doc","wb")=NULL) /*打開文件*/ printf("tttcann't open the filen"
23、); system("pause"); return; fprintf(fp,"%dn",n); /*循環(huán)寫入數(shù)據(jù)*/ while(i<n) fprintf(fp,"%-5s%d %d %dn",,gsi.time,gsi.year,gsi.no); i+; fclose(fp); /*關(guān)閉文件*/ printf("tttSuccessed!n"); /*返回成功信息*/ int AddfromText(goods gs,int n) /*從文件中讀入數(shù)據(jù)*/ int i=0,num; FIL
24、E *fp; /*定義文件指針*/ if(fp=fopen("d:商品.doc","rb")=NULL) /*打開文件*/ printf("tttcann't open the filen"); /*打開失敗信息*/ printf("ttt"); system("pause"); return(n); fscanf(fp,"%d",&num); /*讀入總記錄量*/ while(i<num) /*循環(huán)讀入數(shù)據(jù)*/ fscanf(fp,"%s%d
25、%d%d",gsn+,&gsn+i.time,&gsn+i.year,&gsn+i.no); i+; n+=num; fclose(fp); /*關(guān)閉文件*/ printf("tttSuccessed!n"); printf("ttt"); system("pause"); return(n); void main() /*主函數(shù)*/ int n=0; for(;) switch(menu_select() /*選擇判斷*/ case 1: printf("ttt輸入最初商品n&
26、quot;); /*輸入若干條記錄*/ n=Input(gs,n); break; case 2: printf("ttt顯示所有商品n"); /*顯示所有記錄*/ Display(gs,n); break; case 3: printf("ttt插入n"); n=Insert_a_record(gs,n); /*插入*/ printf("ttt"); system("pause"); break; case 4: printf("ttt刪除n"); n=Delete_a_record(gs,n
27、); /*按商品名稱查找,刪除*/ printf("ttt"); system("pause"); break; case 5: printf("ttt查找并顯示n"); Query_a_record(gs,n); /*查找并顯示*/ printf("ttt"); system("pause"); break; case 6: printf("ttt統(tǒng)計(jì)并顯示進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物n"); printf("ttt共有 %d 件商品.n",
28、n); /*總共記錄數(shù)*/ printf("ttt進(jìn)貨時(shí)間最早且最接近保質(zhì)期中止時(shí)間的貨物:n"); printf("ttt商品名稱r:%sn",); printf("ttt進(jìn)貨時(shí)間:%dn",gs0.time); printf("ttt生產(chǎn)日期:%dn",gs0.year); printf("ttt保質(zhì)期:%dnn",gs0.no); printf("ttt"); system("pause"); break; case 7: print
29、f("ttt寫到文件中n"); WritetoText(gs,n); /*循環(huán)寫入數(shù)據(jù)*/ printf("ttt"); system("pause"); break; case 8: printf("ttt文件中讀數(shù)據(jù)n"); n=AddfromText(gs,n); printf("ttt");/*文件中讀數(shù)據(jù)*/ break; case 9: printf("tttn"); Sort_by_time(gs,n); printf("ttt");/*對(duì)讀入的文件進(jìn)行排序*/ break; case 0: printf("tt
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人股權(quán)委托管理轉(zhuǎn)讓合同范本3篇
- 2025年度個(gè)人合伙退伙合同范本精要3篇
- 現(xiàn)代社會(huì)生活中的常見隱患及其家庭預(yù)防策略研究報(bào)告
- 智慧醫(yī)療與健康科技的發(fā)展
- 二零二五年度車間承包與安全生產(chǎn)責(zé)任合同4篇
- 游戲化學(xué)習(xí)小學(xué)生注意力培養(yǎng)的新模式
- 網(wǎng)絡(luò)安全技術(shù)與隱私保護(hù)措施研究
- 2025年度虛擬現(xiàn)實(shí)體驗(yàn)店租賃合同
- 網(wǎng)絡(luò)環(huán)境下家庭信息的安全存儲(chǔ)與分享策略
- 玉林2025年廣西玉林市第一人民醫(yī)院招聘24人筆試歷年參考題庫(kù)附帶答案詳解
- 基于視覺的工業(yè)缺陷檢測(cè)技術(shù)
- 案例分析:美國(guó)紐約高樓防火設(shè)計(jì)課件
- 老客戶維護(hù)方案
- 高處作業(yè)安全教育培訓(xùn)講義課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)一 用戶定位與選題
- 萬(wàn)科物業(yè)管理公司全套制度(2016版)
- 2021年高考化學(xué)真題和模擬題分類匯編專題20工業(yè)流程題含解析
- 工作證明模板下載免費(fèi)
- (完整word)長(zhǎng)沙胡博士工作室公益發(fā)布新加坡SM2考試物理全真模擬試卷(附答案解析)
- 機(jī)械點(diǎn)檢員職業(yè)技能知識(shí)考試題庫(kù)與答案(900題)
- 成熙高級(jí)英語(yǔ)聽力腳本
評(píng)論
0/150
提交評(píng)論