C語言倉庫管理系統(tǒng)設(shè)計報告_第1頁
C語言倉庫管理系統(tǒng)設(shè)計報告_第2頁
C語言倉庫管理系統(tǒng)設(shè)計報告_第3頁
C語言倉庫管理系統(tǒng)設(shè)計報告_第4頁
C語言倉庫管理系統(tǒng)設(shè)計報告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE 第 PAGE 34 頁設(shè)計題目:倉庫物資管理系統(tǒng)班 級:網(wǎng)絡(luò)0901班姓 名:水土第一學 號:20091221*完成日期:2010-9-9注意事項:免積分下載,還請親們給個好評。思密達目 錄 TOC o 1-3 h z u HYPERLINK l _Toc271807875 1課程設(shè)計目的和要求 PAGEREF _Toc271807875 h 2 HYPERLINK l _Toc271807876 1.1課程設(shè)計的目的: PAGEREF _Toc271807876 h 2 HYPERLINK l _Toc271807877 1.2課程設(shè)計的要求: PAGEREF _Toc271807

2、877 h 2 HYPERLINK l _Toc271807878 2課程設(shè)計任務(wù)內(nèi)容: PAGEREF _Toc271807878 h 2 HYPERLINK l _Toc271807879 3詳細設(shè)計說明 PAGEREF _Toc271807879 h 3 HYPERLINK l _Toc271807880 3.1功能模塊圖: PAGEREF _Toc271807880 h 3 HYPERLINK l _Toc271807881 3.2數(shù)據(jù)結(jié)構(gòu)設(shè)計: PAGEREF _Toc271807881 h 4 HYPERLINK l _Toc271807882 3.3功能模塊設(shè)計: PAGEREF

3、 _Toc271807882 h 5 HYPERLINK l _Toc271807883 4軟件使用說明: PAGEREF _Toc271807883 h 6 HYPERLINK l _Toc271807884 5課程設(shè)計心得與體會: PAGEREF _Toc271807884 h 6 HYPERLINK l _Toc271807885 6參考文獻: PAGEREF _Toc271807885 h 7 HYPERLINK l _Toc271807886 7附錄:部分程序清單: PAGEREF _Toc271807886 h 7課程設(shè)計目的和要求 課程設(shè)計的目的:通過一個學年的學習,對c程序設(shè)計

4、這門課程之中所講的知識有了一定的了解。但是作為一名合格的大學生,不僅要認真閱讀課本知識,還要通過上機實踐來增強和鞏固自己的知識。特別是作為工科類學生,更要注重實踐這一環(huán)節(jié)。因為只有這樣我們才能成為合格的計算機人材。課程設(shè)計的要求:在實踐過程之中,重要的是獨立思考,這樣,不僅有利于提高自己對知識的理解,還更有助于提高自己的實踐動手能力。與此同時,還應(yīng)該注意主動與別人交流,這樣便有利于就業(yè)之后與團隊進行合作。課程設(shè)計任務(wù)內(nèi)容:倉庫管理系統(tǒng)是各個大型商店進行管理的重要組成部分,其內(nèi)容較多,為了滿足工作需求,要求設(shè)計的管理系統(tǒng)能夠完成以下五種功能:1.創(chuàng)建庫存記錄文件。根據(jù)提示輸入若干電器的“電器名稱

5、、品牌名稱(或生產(chǎn)廠家)、型號、庫存數(shù)量、價值”等信息,并將信息保存至一個文件中。2.物資入庫管理,創(chuàng)建一個入庫記錄文件,每次有物資入庫,則按入庫記錄要求輸入“電器名稱、品牌名稱、型號、入庫數(shù)量、單價、入庫時間(年.月.日)、送貨人姓名”等信息,并將該次的入庫信息添加到文件中,同時修改相應(yīng)的庫存記錄文件。3.物資出庫管理,創(chuàng)建一個出庫記錄文件,每次有物資出庫,則按出庫記錄要求輸入各項信息,并將該次的出庫信息添加到文件中,同時修改相應(yīng)的庫存記錄文件。在此過程之中,檢查出庫數(shù)量的合法性(即出庫數(shù)量必須小于庫存數(shù)量)。4. 按不同條件進行查詢操作,輸出滿足條件的物資信息。(1) 輸入電器名稱,在庫存

6、記錄文件中查找相應(yīng)的物資信息并輸出。(2) 輸入品牌名稱,在庫存記錄文件中查找該品牌的所有電器信息并輸出。(3) 輸入一個日期(年.月.日),輸出該天的入庫記錄和出庫記錄。(4) 輸入電器名稱和型號,輸出該電器的所有入庫記錄和出庫記錄。5. 按不同條件對物資信息進行統(tǒng)計工作。(1) 輸入電器名稱,在庫存記錄文件中統(tǒng)計該電器的現(xiàn)有庫存總量。(2) 輸入電器名稱,在入庫記錄文件中統(tǒng)計該電器的入庫次數(shù)。(3) 輸入一個日期(年.月),在出庫記錄文件中統(tǒng)計該月的出庫記錄次數(shù)。(4) 設(shè)置一個庫存數(shù)量警戒值,輸出庫存數(shù)量小于該警戒值的所有庫存電器的信息。詳細設(shè)計說明功能模塊圖: 系統(tǒng)功能模塊圖數(shù)據(jù)結(jié)構(gòu)設(shè)

7、計:系統(tǒng)共定義了四個結(jié)構(gòu)體類型,包括日期類型、庫存類型、入庫類型和出庫類型,其中在入庫類型和出庫類型中要使用日期類型,定義如下:struct goodschar name10; /電器名稱char brand10; /電器品牌char style10; /電器型號int num; /庫存數(shù)量float money; /價值stu_1SIZE; /庫存結(jié)構(gòu)struct date int year; /年份int month; /月份int day; /日期; /日期結(jié)構(gòu)struct entrancechar name10; /電器名稱char brand10; /電器品牌char style10

8、; /電器型號int num; /入庫數(shù)量float money; /單價struct date time; /入庫日期char stuf10; /送貨人姓名stu_2SIZE; /入庫結(jié)構(gòu)struct exitchar name10; /電器名稱char brand10; /電器品牌char style10; /電器型號int num; /出庫數(shù)量struct date time; /出庫日期char stuf10; /提貨人姓名stu_3SIZE; /出庫結(jié)構(gòu)系統(tǒng)定義了宏變量,存放電器種類,具體定義如下:#define SIZE 10功能模塊設(shè)計:main函數(shù)的設(shè)計:由于第一次使用,在庫存

9、文件,入庫文件和出庫文件之中,沒有任何信息,所以,要求我們先輸入應(yīng)有的信息,才能進行查詢和統(tǒng)計。用If語句和for循環(huán)結(jié)構(gòu)進行提示輸入相應(yīng)的數(shù)字,然后利用switch語句選擇定義的各種函數(shù)應(yīng)該進行的操作,為用戶提供服務(wù)。建立庫存記錄文件模塊包括scan_1()與save_1()兩個函數(shù)組成,該模塊有main函數(shù)調(diào)用。Scan_1()函數(shù)用于輸入各個庫存信息,save_1()函數(shù)將庫存信息保存成文件。建立入庫記錄文件模塊包括scan_2(),save_2()與change_1(),save_1()四個函數(shù)組成,該模塊有main函數(shù)調(diào)用。scan_2()函數(shù)用于輸入入庫信息,save_2()函數(shù)用

10、于保存入庫信息,change_1()用于更改庫存信息,save_1()函數(shù)將更改之后的庫存信息保存成文件。建立出庫記錄文件模塊包括scan_3(),save_3()與change_2(),save_1()四個函數(shù)組成,該模塊有main函數(shù)調(diào)用。scan_3()函數(shù)用于輸入出庫信息,save_3()用于保存出庫信息,change_2()函數(shù)用于更改庫存信息,save_1()函數(shù)用于將更改之后的庫存信息保存成文件。查詢功能模塊包find_1()函數(shù),find_2(),函數(shù)find_3()與函數(shù)find_4()函數(shù)四個函數(shù),該模塊有main函數(shù)調(diào)用。其中find_1()函數(shù)包括open_1()函數(shù),

11、它將庫存記錄打開,然后,然后讀出數(shù)據(jù),經(jīng)過判斷輸出信息,完成4.1。find_2()函數(shù)包括open_1()函數(shù),它將庫存記錄打開,然后,然后讀出數(shù)據(jù),經(jīng)過判斷輸出信息,完成4.2。find_3()函數(shù)包括open_2(),open_3()函數(shù),它們分別將入庫記錄和出庫記錄打開,然后,然后讀出數(shù)據(jù),使數(shù)據(jù)和輸入的年月日比較,然后輸出所要查詢的信息,完成4.3。find_4()函數(shù)包括open_2(),open_3()函數(shù),它們分別將入庫記錄和出庫記錄打開,然后,然后讀出數(shù)據(jù),使數(shù)據(jù)和輸入的名稱和型號比較,然后輸出所要查詢的信息,完成4.4統(tǒng)計功能模塊包find_5()函數(shù),find_6(),函

12、數(shù)find_7()與函數(shù)find_8()函數(shù)四個函數(shù),該模塊有main函數(shù)調(diào)用。其中find_5()函數(shù)包括open_1()函數(shù),將庫存記錄打開,使數(shù)據(jù)與輸入的名稱比較,然后選擇性相加,輸出所統(tǒng)計的對象。find_6()函數(shù)包括open_2()函數(shù),將入庫記錄打開,讀出數(shù)據(jù),與新輸入的數(shù)據(jù)比較,然后進行選擇性相加,輸出數(shù)據(jù)。函數(shù)find_7()包括open_3()函數(shù),打開出庫記錄,讀出數(shù)據(jù),查找在一定年月的出庫記錄,并將出庫次數(shù)相加。find_8()函數(shù)包括open_1()函數(shù),將庫存記錄打開,讀出數(shù)據(jù),使一定數(shù)據(jù)與設(shè)定的數(shù)量警戒值比較,將小于警戒值的電器的信息輸出。軟件使用說明:在軟件使用

13、之前,一定先輸入庫存記錄(對應(yīng)數(shù)字“1”),入庫記錄(對應(yīng)數(shù)字“2”)和出庫記錄(對應(yīng)數(shù)字“3”),因為只有經(jīng)過這三個步驟,才能進行查詢和統(tǒng)計工作。以下為數(shù)字相對應(yīng)的操作:根據(jù)要求建立庫存文件根據(jù)要求建立入庫文件根據(jù)要求建立出庫文件輸入電器名稱,在庫存記錄文件中查找相應(yīng)的物資信息并輸出。輸入品牌名稱,在庫存記錄文件中查找該品牌的所有電器信息并輸出。輸入一個日期(年.月.日),輸出該天的入庫記錄和出庫記錄。輸入電器名稱和型號,輸出該電器的所有入庫記錄和出庫記錄。輸入電器名稱,在庫存記錄文件中統(tǒng)計該電器的現(xiàn)有庫存總量。輸入電器名稱,在入庫記錄文件中統(tǒng)計該電器的入庫次數(shù)。輸入一個日期(年.月),在出

14、庫記錄文件中統(tǒng)計該月的出庫記錄次數(shù)。設(shè)置一個庫存數(shù)量警戒值,輸出庫存數(shù)量小于該警戒值的所有庫存電器的信息。課程設(shè)計心得與體會:經(jīng)過一個星期的上機實踐學習,使我對c語言有了更進一步的認識和了解,要想學好它要重在實踐,要通過不斷的上機操作才能更好地學習它,通過實踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學習也有所改進;再有對c語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對c語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐,使我在這幾個方面的認識有所提高。通過實踐的學習,我認到學好計算機要重視實踐操作,不僅僅是學習c語言,還是其它的語言,以及其它的計算機

15、方面的知識都要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。參考文獻:C程序設(shè)計附錄:部分程序清單:#includestdafx.h#includestdio.h#includestring.h#define SIZE 2/SIZE為倉庫電器種類struct goods/庫存結(jié)構(gòu)char name10;/電器名稱char brand10;/電器品牌char style10;/電器型號int num; /庫存數(shù)量float money; /價值stu_1SIZE;struct date/日期結(jié)構(gòu) int year;/年份int month;/月份int day;/日

16、期;struct entrance /入庫結(jié)構(gòu)char name10; /電器名稱char brand10; /電器品牌char style10; /電器型號int num; /入庫數(shù)量float money; /單價struct date time; /入庫日期char stuf10; /送貨人姓名stu_2SIZE; struct exit /出庫結(jié)構(gòu)char name10; /電器名稱char brand10; /電器品牌char style10; /電器型號int num; /出庫數(shù)量struct date time; /出庫日期char stuf10; /提貨人姓名stu_3SIZE

17、; void save_1();/將庫存信息保存成文件void save_2();/將入庫信息保存成文件void save_3();/將出庫信息保存成文件void change_1();/入庫時電器數(shù)量增加,并將信息加入庫存文件void change_2();/出庫時電器數(shù)量減少,并將信息加入庫存文件void scan_1();/輸入庫存信息void scan_2();/輸入入庫信息void scan_3();/輸入出庫信息,判斷電器出庫數(shù)量與現(xiàn)有庫存的大小關(guān)系FILE* open_1();/打開庫存文件FILE* open_2();/打開入庫文件FILE* open_3();/打開出庫文件v

18、oid find_1();/4.1void find_2();/4.2void find_3();/4.3void find_4();/4.4void find_5();/5.1void find_6();/5.2void find_7();/5.3void find_8();/5.4void load_1();/讀stu_list_1中的數(shù)據(jù)void main()int i,j;printf(what do you want to do?nplease input the number according to the explaination.n);for(i=1;i12;i+)print

19、f(if you input %d;then it will work out the %d.n,i,i);printf(If you are first use it,please input 1,2 or 3.nNow please input the number:n);scanf(%d,&j);switch(j)case 1:scan_1();save_1();break; /1case 2:scan_2();save_2();change_1();break; /2case 3:scan_3();save_3();change_2();break; /3case 4:find_1()

20、;break;/4.1case 5:find_2();break;/4.2case 6:find_3();break;/4.3case 7:find_4();break;/4.4case 8:find_5();break;/5.1case 9:find_6();break;/5.2case 10:find_7();break;/5.3case 11:find_8();break;/5.4default:printf(errorn);void scan_1()/輸入庫存int i;printf(please input the information:n);for(i=0;iSIZE;i+)sc

21、anf(%s%s%s%d%f,stu_1,stu_1i.brand,stu_1i.style,&stu_1i.num,&stu_1i.money); void scan_2()/輸入入庫信息int i;printf(請輸入物資入庫信息:n);for(i=0;iSIZE;i+)scanf(%s%s%s%d%f%d%d%d%s,stu_2,stu_2i.brand,stu_2i.style,&stu_2i.num,&stu_2i.money,&stu_2i.time.year,&stu_2i.time.month,&stu_2i.time.day,stu_2i.stuf);

22、void scan_3()/輸入出庫信息int i;printf(請輸入出庫信息:n);for(i=0;iSIZE;i+)scanf(%s%s%s%d%d%d%d%s,stu_3,stu_3i.brand,stu_3i.style,&stu_3i.num,&stu_3i.time.year,&stu_3i.time.month,&stu_3i.time.day,stu_3i.stuf);for(i=0;istu_1i.num)printf(the error number.please input againn);scanf(%s%s%s%d%d%d%d%s,stu_3

23、,stu_3i.brand,stu_3i.style,&stu_3i.num,&stu_3i.time.year,&stu_3i.time.month,&stu_3i.time.day,stu_3i.stuf);void save_1()/將庫存信息保存成文件FILE *fp;int i;if(fp=fopen(stu_list_1.txt,wb)=NULL)printf(connot open the filen);return;for(i=0;iSIZE;i+)if(fwrite(&stu_1i,sizeof(struct goods),1,fp)!=1)printf(file write

24、 errorn);fclose(fp);void save_2()/將入庫信息保存成文件FILE *fp;int i;if(fp=fopen(stu_list_2.txt,wb)=NULL)printf(connot open the filen);return;for(i=0;iSIZE;i+)if(fwrite(&stu_2i,sizeof(struct entrance),1,fp)!=1)printf(file write errorn);fclose(fp);void change_1()/入庫時電器數(shù)量增加,并將信息加入庫存文件int i;load_1();for(i=0;iSIZ

25、E;i+)if(strcmp(stu_1,stu_2)=0&strcmp(stu_1i.brand,stu_2i.brand)=0&strcmp(stu_1i.style,stu_2i.style)=0)stu_1i.num=stu_1i.num+stu_2i.num;save_1();void save_3()/將出庫信息保存成文件FILE *fp;int i;if(fp=fopen(stu_list_3.txt,wb)=NULL)printf(connot open the filen);return;for(i=0;iSIZE;i+)if(fwrite(&stu_

26、3i,sizeof(struct exit),1,fp)!=1)printf(file write errorn);fclose(fp);void change_2()/出庫時電器數(shù)量減少,并將信息加入庫存文件int i;load_1();for(i=0;iSIZE;i+)if(strcmp(stu_1,stu_3)=0&strcmp(stu_1i.brand,stu_3i.brand)=0&strcmp(stu_1i.style,stu_3i.style)=0)stu_1i.num=stu_1i.num-stu_3i.num;save_1();FILE* open_1

27、()/打開庫存記錄FILE *fp;if(fp=fopen(stu_list_1.txt,rb)=NULL) printf(connot open the file!n);return NULL;return fp;FILE* open_2()/打開入庫記錄FILE *fp;if(fp=fopen(stu_list_2.txt,rb)=NULL) printf(connot open the file!n);return NULL;return fp;FILE* open_3()/打開出庫記錄FILE *fp;if(fp=fopen(stu_list_3.txt,rb)=NULL) print

28、f(connot open the file!n);return NULL;return fp;void find_1()/完成4.1FILE *fp=NULL;int i;char name10;fp=open_1();printf(please input the name:n);/4.1 scanf(%s,name);printf(the information of the good:n);for(i=0;iSIZE;i+)if(fread(&stu_1i,sizeof(struct goods),1,fp)=1)/4.1 在庫存記錄之中查找if(strcmp(name,stu_1i.

29、name)=0)printf(%s %s %s %d %.2fn,stu_1,stu_1i.brand,stu_1i.style,stu_1i.num,stu_1i.money);fclose(fp);void find_5()/完成5.1FILE *fp=NULL;int i;int sum=0;char name10;fp=open_1();printf(please input the name:n);/5.1scanf(%s,name);printf(the information of the good:n);for(i=0;iSIZE;i+)if(fread(&stu_

30、1i,sizeof(struct goods),1,fp)=1)/5.1 在庫存記錄之中查找if(strcmp(name,stu_1)=0)sum=sum+stu_1i.num;printf(the number of this %s is %d.n,name10,sum);fclose(fp);void find_2()/完成4.2FILE *fp=NULL;int i;char brand10;printf(please input the brand:n);/4.2scanf(%s,brand);fp=open_1();for(i=0;iSIZE;i+) if(fread(&

31、stu_1i,sizeof(struct goods),1,fp)=1) /4.2if(strcmp(brand,stu_1i.brand)=0)printf(the information of the good:n);printf(%s %s %s %d %.2fn,stu_1,stu_1i.brand,stu_1i.style,stu_1i.num,stu_1i.money);fclose(fp);void find_3()/完成4.3int i;FILE *fp2=NULL, *fp3=NULL;int year,month,day;printf(please input

32、year,month,day,then find the exit and entrance:n);/4.3scanf(%d%d%d,&year,&month,&day);fp2=open_2();fp3=open_3();printf(the information of entrance is:n);for(i=0;iSIZE;i+)if(fread(&stu_2i,sizeof(struct entrance),1,fp2)=1)/讀出入庫信息if(stu_2i.time.year=year)&(stu_2i.time.month=month)&(stu_2i.time.day=day)

33、/入庫信息4.3printf(%s %s %s %d %.2f %d %d %d %sn,stu_2,stu_2i.brand,stu_2i.style,stu_2i.num,stu_2i.money,stu_2i.time.year,stu_2i.time.month,stu_2i.time.day,stu_2i.stuf);printf(the information of exit is:n);for(i=0;iSIZE;i+)if(fread(&stu_3i,sizeof(struct exit),1,fp3)=1)/讀出出庫信息if(stu_3i.time.year=ye

34、ar)&(stu_3i.time.month=month)&(stu_3i.time.day=day)/出庫信息4.3printf(%s %s %s %d %d %d %d %sn,stu_3,stu_3i.brand,stu_3i.style,stu_3i.num,stu_3i.time.year,stu_3i.time.month,stu_3i.time.day,stu_3i.stuf);fclose(fp2);fclose(fp3);void find_4()/完成4.4int i;FILE *fp2=NULL,*fp3=NULL;char name10,style10;pr

35、intf(please input the name and style of the goods,then find the entrance and exit:n);/4.3scanf(%s%s,name,style);fp2=open_2();fp3=open_3();printf(the entrance information of the good is:n);for(i=0;iSIZE;i+)/4.4if(fread(&stu_2i,sizeof(struct entrance),1,fp2)=1)/讀出入庫信息if(strcmp(stu_2,name)=0&(str

36、cmp(stu_2i.style,style)=0)/入庫信息4.4printf(%s %s %s %d %f %d %d %d %sn,stu_2,stu_2i.brand,stu_2i.style,stu_2i.num,stu_2i.money,stu_2i.time.year,stu_2i.time.month,stu_2i.time.day,stu_2i.stuf);printf(the exit information of the good is:n);for(i=0;iSIZE;i+)/4.4if(fread(&stu_3i,sizeof(struct exit),1

37、,fp3)=1)/讀出出庫信息if(strcmp(stu_3,name)=0&(strcmp(stu_3i.style,style)=0)/出庫信息4.4printf(%s %s %s %d %d %d %d %sn,stu_3,stu_3i.brand,stu_3i.style,stu_3i.num,stu_3i.time.year,stu_3i.time.month,stu_3i.time.day,stu_3i.stuf);fclose(fp2);fclose(fp3);void find_6()/完成5.2int i;int sum=0;FILE *fp=NULL

38、;char name10;printf(please input the name of the good,then output the number of its entrance:n);/5.2scanf(%s,name);fp=open_2();for(i=0;iSIZE;i+)if(fread(&stu_2i,sizeof(struct entrance),1,fp)=1)/讀出入庫信息if(strcmp(stu_2,name)=0)/入庫信息4.4sum=sum+stu_2i.num;printf(the number of the goods entrance is

39、%d.n,sum);fclose(fp);void find_7()/完成5.3int i;int sum=0;int year,month;FILE *fp=NULL;printf(please input year and month,then output the number of exit in this month:n);/5.3scanf(%d%d,&year,&month);fp=open_3();printf(the number of exit good in this month is:);for(i=0;iSIZE;i+)/5.3在出庫記錄文件中統(tǒng)計該月的出庫記錄次數(shù)。

40、if(fread(&stu_3i,sizeof(struct exit),1,fp)=1)if(stu_3i.time.year=year&stu_3i.time.month=month)sum=sum+1;printf(%dn,sum);fclose(fp);void find_8()/完成5.4int i,j;FILE *fp=NULL;printf(please input the red number,then output all the informations of the goods:n);getchar();scanf(%d,&j);fp=open_1();for(i=0;i

41、SIZE;i+)/5.4輸出庫存數(shù)量小于該警戒值的所有庫存電器的信息if(fread(&stu_1i,sizeof(struct goods),1,fp)=1)if(stu_1i.numj)printf(the information of the good are:n);printf(%s %s %s %d %.2fn,stu_1,stu_1i.brand,stu_1i.style,stu_1i.num,stu_1i.money);fclose(fp);void load_1()/讀stu_list_1中的數(shù)據(jù)FILE *fp=NULL;fp = open_1();fread(s

42、tu_1, sizeof(struct goods), SIZE, fp);fclose(fp);附錄資料:不需要的可以自行刪除Abstract: Based on the comprehensive analysis on the plastic parts structure service requirement, mounding quality and mould menu factoring cost. A corresponding injection mould of internal side core pulling was designed. By adopting th

43、e multi-direction and multi-combination core-pulling. A corresponding injection mould of internal side core pulling was designed, the working process of the mould was introducedC語言詳解 - 枚舉類型注:以下全部代碼的執(zhí)行環(huán)境為VC+ 6.0在程序中,可能需要為某些整數(shù)定義一個別名,我們可以利用預(yù)處理指令#define來完成這項工作,您的代碼可能是:#define MON 1#define TUE 2#define W

44、ED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我們定義一種新的數(shù)據(jù)類型,希望它能完成同樣的工作。這種新的數(shù)據(jù)類型叫枚舉型。1. 定義一種新的數(shù)據(jù)類型 - 枚舉型 以下代碼定義了這種新的數(shù)據(jù)類型 - 枚舉型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;(1) 枚舉型是一個集合,集合中的元素(枚舉成員)是一些命名的整型常量,元素之間用逗號,隔開。(2) DAY是一個標識符,可以看成這個集合的名字,是一個可選項,即是可有可無的項。(3) 第一個枚舉成員的默認值為整型的0,后續(xù)枚舉成員的

45、值在前一個成員上加1。(4) 可以人為設(shè)定枚舉成員的值,從而自定義某個范圍內(nèi)的整數(shù)。(5) 枚舉型是預(yù)處理指令#define的替代。(6) 類型定義以分號;結(jié)束。2. 使用枚舉類型對變量進行聲明新的數(shù)據(jù)類型定義完成后,它就可以使用了。我們已經(jīng)見過最基本的數(shù)據(jù)類型,如:整型int, 單精度浮點型float, 雙精度浮點型double, 字符型char, 短整型short等等。用這些基本數(shù)據(jù)類型聲明變量通常是這樣:char a; /變量a的類型均為字符型charchar letter;int x, y, z; /變量x,y和z的類型均為整型intint number;double m, n;dou

46、ble result; /變量result的類型為雙精度浮點型double既然枚舉也是一種數(shù)據(jù)類型,那么它和基本數(shù)據(jù)類型一樣也可以對變量進行聲明。方法一:枚舉類型的定義和變量的聲明分開enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;enum DAY yesterday;enum DAY today;enum DAY tomorrow; /變量tomorrow的類型為枚舉型enum DAYenum DAY good_day, bad_day; /變量good_day和bad_day的類型均為枚舉型enum DAY方法二:類型定義與變量聲明同時進行:enu

47、m /跟第一個定義不同的是,此處的標號DAY省略,這是允許的。 saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /變量workday的類型為枚舉型enum DAYenum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /變量days的類型為枚舉型enum weekenum BOOLEAN false, true end_flag, match_flag; /定義枚舉類型并聲明了兩個枚舉型變量方法三:用typedef關(guān)鍵字將枚舉類型定義成別名,并利

48、用該別名進行變量聲明:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workdayenum workday中的workday可以省略:typedef enum saturday, sunday = 0, monday, tuesday, wednesday, th

49、ursday, friday workday; /此處的workday為枚舉型enum workday的別名workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workday也可以用這種方式:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday;workday today, tomorrow; /變量today和tomorrow的類型為枚舉型workday,也即enum workday注意:同一個程

50、序中不能定義同名的枚舉類型,不同的枚舉類型中也不能存在同名的命名常量。錯誤示例如下所示:錯誤聲明一:存在同名的枚舉類型typedef enum wednesday, thursday, friday workday;typedef enum WEEK saturday, sunday = 0, monday, workday; 錯誤聲明二:存在同名的枚舉成員typedef enum wednesday, thursday, friday workday_1;typedef enum WEEK wednesday, sunday = 0, monday, workday_2;3. 使用枚舉類型的

51、變量3.1 對枚舉型的變量賦值。實例將枚舉類型的賦值與基本數(shù)據(jù)類型的賦值進行了對比:方法一:先聲明變量,再對變量賦值#include/* 定義枚舉類型 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量,然后對變量賦值 */ int x, y, z; x = 10; y = 20; z = 30; /* 使用枚舉類型聲明變量,再對枚舉型變量賦值 */ enum DAY yesterday, today, tomorrow; yesterday = MON; today = TUE; tomorr

52、ow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法二:聲明變量的同時賦初值#include /* 定義枚舉類型 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本數(shù)據(jù)類型聲明變量同時對變量賦初值 */ int x=10, y=20, z=30; /* 使用枚舉類型聲明變量同時對枚舉型變量賦初值 */ enum DAY yesterday = MON, today = TUE, tomorrow = WED; printf(%d %d %d n,

53、 yesterday, today, tomorrow);方法三:定義類型的同時聲明變量,然后對變量賦值。#include /* 定義枚舉類型,同時聲明該類型的三個變量,它們都為全局變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;/* 定義三個具有基本數(shù)據(jù)類型的變量,它們都為全局變量 */int x, y, z;void main() /* 對基本數(shù)據(jù)類型的變量賦值 */ x = 10; y = 20; z = 30; /* 對枚舉型的變量賦值 */ yesterday = MON; to

54、day = TUE; tomorrow = WED; printf(%d %d %d n, x, y, z); /輸出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:1 2 3方法四:類型定義,變量聲明,賦初值同時進行。#include /* 定義枚舉類型,同時聲明該類型的三個變量,并賦初值。它們都為全局變量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday = MON, today = TUE, tomorrow = WED;/* 定義三個具有基本數(shù)據(jù)類

55、型的變量,并賦初值。它們都為全局變量 */int x = 10, y = 20, z = 30;void main() printf(%d %d %d n, x, y, z); /輸出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:1 2 33.2 對枚舉型的變量賦整數(shù)值時,需要進行類型轉(zhuǎn)換。#include enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() enum DAY yesterday, today, tomorrow; yesterday = TUE; today = (enum DAY) (yesterday + 1); /類型轉(zhuǎn)換 tomorrow = (enum DAY) 30; /類型轉(zhuǎn)換 /tomorrow = 3; /錯誤 printf(%d %d %d n, yesterday, today, tomorrow); /輸出:2 3 303.3 使用枚舉型變量#includeenum BELL = a, BACKSPACE = b, HTAB = t, RETURN = r, NEWLINE = n, VTAB = v, SP

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論