商店存貨管理系統(tǒng)_第1頁
商店存貨管理系統(tǒng)_第2頁
商店存貨管理系統(tǒng)_第3頁
商店存貨管理系統(tǒng)_第4頁
商店存貨管理系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題 目 商店存儲管理系統(tǒng) 學生姓名 徐 玲 指導教師 秦 飛 學 院 管理科學與工程學院 專業(yè)班級 息 082 完成時間 2010.06.10 目 錄第一章 課程設(shè)計目的2第二章 課程設(shè)計內(nèi)容和要求2第三章 課程設(shè)計分析3第四章 算法描述4第五章 源代碼8第六章 運行結(jié)果分析13第七章 結(jié)束語15第八章 參考文獻15第一章 課程設(shè)計目的通過實習,了解并初步掌握設(shè)計、實現(xiàn)較大系統(tǒng)的完整過程,包括系統(tǒng)分析、編碼設(shè)計、系統(tǒng)集成、以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計、實現(xiàn)以及操作方法,為進一步的應(yīng)用開發(fā)打好基礎(chǔ)。通過實習鞏固并提高實習者的C語言知識,并初步了解Visual C+的

2、知識,提高其編程能力與專業(yè)水平。第二章 課程設(shè)計內(nèi)容和要求2.1課程設(shè)計內(nèi)容建立一商店存貨管理系統(tǒng),要求每次出貨時取進貨時間最早且最接近保質(zhì)期中止時間的貨物。分步實施:1.初步完成總體設(shè)計,搭好框架,確定人機對話的界面,確定函數(shù)個數(shù);2.完成最低要求:建立一個文件,包括5個種類的貨物情況,能對商品信息進行擴充(追加),修改和刪除以及簡單的排序;3.進一步要求:擴充商品數(shù)量,以及完成系統(tǒng)查詢功能。有興趣的同學可以自己擴充系統(tǒng)功能。2.2要求:1.界面友好,函數(shù)功能要劃分好2.總體設(shè)計應(yīng)畫一流程圖3.程序要加必要的注釋4.要提供程序測試方案5.程序一定要經(jīng)得起測試,寧可功能少一些,也要能運行起來,

3、不能運行的程序是沒有價值的。2.3 運行環(huán)境該程序的運行環(huán)境為Windows xp系統(tǒng),Microsoft Visual C+6.0版本。第三章 課程設(shè)計分析3.1需要定義一個結(jié)構(gòu)體數(shù)組,其中name表示商品的名稱,time表示商品的進貨時間,year表示商品的生產(chǎn)日期,no表示商品的保質(zhì)期。3.2利用冒泡法,對商品進行排序。3.3選擇需要的功能,其中功能包括商品的最原始添加,商品的插入,刪除,查找,將數(shù)據(jù)寫入文件中,從文件中讀出數(shù)據(jù)等操作。3.4選擇輸入09,10個數(shù)的其中一個數(shù),進行相應(yīng)的操作。3.5進行完所的操作之后,選擇保存功能,將數(shù)據(jù)保存到文件中。3.6退出程序。第四章 算法(數(shù)據(jù)結(jié)

4、構(gòu))描述4.1先定義一個商品的結(jié)構(gòu)體數(shù)組:typedef struct /*定義結(jié)構(gòu)體數(shù)組*/ char name20;/*商品名稱*/ int time;/*進貨時間*/ int year;/*生產(chǎn)日期*/ int no;/*保質(zhì)期*/goods;4.2建立一個菜單函數(shù),顯示10個功能,供用戶選擇,進行人機對話。4.3設(shè)置一個排序的函數(shù),void Sort_by_time(goods gs,int n)。利用冒泡法先對商品按進貨的時間排序,對進貨時間一樣的貨物,再按離保質(zhì)期最近排序。 4.4設(shè)置一個輸入的函數(shù),int Input(goods gs,int n)。這個函數(shù)是最初商品輸入函數(shù),當

5、選擇了這個功能后,如果是第一次運行這個程序,保存輸入,那將在D盤產(chǎn)生一個名為“商品.doc”的文件,如果已經(jīng)運行過了,并保存輸入,那輸入的商品信息將代替原有的信息,數(shù)據(jù)輸入使用交互輸入,進行人機對話,確定是否進行下一個數(shù)據(jù)的添加。并且調(diào)用了上面的排序函數(shù),對輸入的數(shù)據(jù)進行排序。4.5設(shè)置一個顯示的函數(shù),void Display(goods gs,int n)。顯示上面輸入的所有數(shù)據(jù),或者是從文件中讀取的數(shù)據(jù)。4.6設(shè)置一個插入的函數(shù),int Insert_a_record(goods gs,int n)。每次插入一組數(shù)據(jù),如果要再插入,則再選擇這個功能進行操作。并且在插入的同時,已經(jīng)排好序,把

6、數(shù)據(jù)插入適合的位置。4.7設(shè)置一個查找刪除的函數(shù),int Delete_a_record(goods gs,int n)。輸入要查找的商品名稱,如果不存在,則輸出失敗信息,如果存在,則用下一個信息代替原有信息的位置。4.8設(shè)置一個查找顯示的函數(shù),void Query_a_record(goods gs,int n)。輸入要查找的商品名稱,如果不存在,則輸出失敗信息,如果存在,則顯示信息。4.9設(shè)置一個寫入文件的函數(shù),void WritetoText(goods gs,int n)。設(shè)置文件指針,先判斷文件是否能打開并且能進行寫操作,不能則輸出失敗信息,能則循環(huán)寫入數(shù)據(jù),寫完關(guān)閉文件。4.10設(shè)

7、置一個讀文件的函數(shù),int AddfromText(goods gs,int n)。設(shè)置文件指針,判斷文件是否能打開而且能進行讀操作,能則先讀出總的數(shù)據(jù)量,接著循環(huán)讀出數(shù)據(jù),最后關(guān)閉文件。4.11進入最后一步,main函數(shù)。判斷選擇的操作,根據(jù)用戶選擇的操作,利用switch語句進行相應(yīng)的函數(shù)調(diào)用。4.12選擇保存功能,對數(shù)據(jù)進行保存,然后選擇結(jié)束程序退出功能,退出程序。Sort_by_time(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在操作結(jié)果:數(shù)據(jù)進行排序Input(gs, n)初始條件:沒有任何數(shù)據(jù)存在,或者要替換原文件中的所有數(shù)據(jù) 操作結(jié)果:數(shù)據(jù)進行輸入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)計WritetoText(gs,n)初始條件:數(shù)據(jù)已經(jīng)存在 操作結(jié)果:寫入文件中AddfromText(gs,n)初始條件:文件已經(jīng)存在 操作結(jié)果:從文件中讀出4.13流程圖:退出程序?qū)懭胛募判驍?shù)據(jù)統(tǒng)計數(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> /*引用庫函數(shù)*/ #include<stdlib.h> #include<ctype.h> #include<string.h> typedef struct /*定義結(jié)構(gòu)體數(shù)組*/ char name20;/*商品名稱*/ int time;/*進貨時間*/ int year;/*生產(chǎn)日期*/ int no;/*保質(zhì)期*/goods;goods gs80; /*結(jié)構(gòu)體數(shù)組變量*/ int menu_select() /*菜單函數(shù)*/ char c; do system("

10、cls"); /*運行前清屏*/ 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)計并顯示進貨時間最早且最接近保質(zhì)期中止時間的貨物 |n&qu

11、ot;); printf("tt | 7. 寫入文件 |n"); printf("tt | 8. 讀文件 |n"); printf("tt | 9. 對讀入的文件進行排序 |n"); printf("tt | 0. 退出 |n"); printf("tt*n"); printf("ttt請選擇(0-9):"); c=getchar(); /*讀入選擇*/ while(c<'0'|c>'9'); return(c-'0'

12、;); /*返回選擇*/ void Sort_by_time(goods gs,int n) /*按進貨時間排序*/ 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進貨時間(例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商品名稱 進貨時間 生產(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) /*每十個暫停*/ 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進貨時間:"); 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) /*查找并顯示一個記錄*/ 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進貸時間:%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)計并顯示進貨時間最早且最接近保質(zhì)期中止時間的貨物n"); printf("ttt共有 %d 件商品.n",

28、n); /*總共記錄數(shù)*/ printf("ttt進貨時間最早且最接近保質(zhì)期中止時間的貨物:n"); printf("ttt商品名稱r:%sn",); printf("ttt進貨時間:%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");/*對讀入的文件進行排序*/ break; case 0: printf("tt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論