版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p><b> 航空訂票系統(tǒng)</b></p><p><b> 一、設(shè)計(jì)目的:</b></p><p> 編寫一個(gè)航空訂票系統(tǒng),可以在系統(tǒng)中錄入并修改各個(gè)航班的具體情況,幫助乘客準(zhǔn)確的查詢個(gè)航班的最新信息(包括航班號、航班的起始時(shí)
2、間和地點(diǎn)。票價(jià))和各個(gè)項(xiàng)目業(yè)務(wù)的及時(shí)辦理(包括訂票、退票等)。</p><p><b> 二、任務(wù):</b></p><p> 航空客運(yùn)定票的業(yè)務(wù)活動(dòng)包括:查詢航線、客票預(yù)定和辦理退票等。試設(shè)計(jì)一個(gè)航空客運(yùn)定票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來完成。</p><p><b> 三、功能要求:</b></p>
3、;<p> 1) 錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具</p><p> 體數(shù)據(jù)自定)2) 查詢:可以查詢某個(gè)航線的情況(如,輸入航班號,查詢起降時(shí)間,起飛抵</p><p> 達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,</p><p><b> 查詢飛機(jī)航班情況;</
4、b></p><p> 3) 訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果</p><p> 該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;</p><p> 4) 退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;</p><p> 5) 客戶資料:有姓名,證件號,訂票數(shù)量及航班情況,訂單要有編號;</p>
5、<p> 6) 修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。</p><p><b> 四、設(shè)計(jì)程序:</b></p><p> #include<stdio.h></p><p> #include<string.h></p><p> #include<st
6、dlib.h></p><p> #define N 100//最大容量</p><p> typedef struct Flight//航班信息</p><p><b> {</b></p><p> char FlightNumber[6];//航班號</p><p> cha
7、r SPlace[10];//起始地</p><p> char DPlace[10];//目的地</p><p> char Stime[5];//起飛時(shí)間</p><p> char Etime[5];//降落時(shí)間</p><p> int price;//票價(jià)</p><p> int RemnantS
8、eat;//剩余座位數(shù)</p><p><b> }Flight;</b></p><p> typedef struct Order//訂單信息</p><p><b> {</b></p><p> int OrderNumber;//訂單編號</p><p>
9、 char PName[10];//乘客姓名</p><p> char ID[20];//身份證號</p><p> char FlightNumber[6];//航班號</p><p> int num;//訂票數(shù)量</p><p><b> }Order;</b></p><p>
10、 Flight fl[N];</p><p> Order od[N];</p><p> int i,j;//兩個(gè)常用角標(biāo)變量 </p><p> int lenf=0;//航班數(shù) </p><p> int leno=0;//訂單數(shù) </p><p> char ch;//獲取用戶選擇的變量</p
11、><p> char filenamef[]="flight.txt";//航班文件名</p><p> char filenameo[]="order.txt";//訂單文件名</p><p> void save()//保存信息</p><p><b> {</b><
12、;/p><p><b> FILE *fp;</b></p><p> if((fp=fopen(filenamef,"w"))!=NULL)//打開文件 保存航班信息</p><p><b> {</b></p><p> for(i=0;i<lenf;i++)//
13、寫入文件</p><p><b> { </b></p><p> fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].Remna
14、ntSeat);</p><p><b> }</b></p><p> fclose(fp);//關(guān)閉文件</p><p><b> } </b></p><p> if((fp=fopen(filenameo,"w"))!=NULL)//打開文件 保存訂單信息&l
15、t;/p><p><b> {</b></p><p> for(i=0;i<leno;i++)//寫入文件</p><p><b> { </b></p><p> fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumb
16、er,od[i].PName,od[i].ID,od[i].FlightNumber,od[i].num);</p><p><b> }</b></p><p> fclose(fp);//關(guān)閉文件</p><p><b> } </b></p><p><b> }</
17、b></p><p> void load()//讀取信息</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> if((fp=fopen(filenamef,"r"))!=NULL)//打開文件 讀取航班信
18、息</p><p><b> { </b></p><p><b> i=0;</b></p><p> while(!feof(fp))//讀取文件</p><p> { </p><p> fscanf(fp,"%s%s%s%s%s
19、%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i].DPlace,&fl[i].Stime,&fl[i].Etime,&fl[i].price,&fl[i].RemnantSeat);</p><p> if(!feof(fp))</p><p><b> i++;&l
20、t;/b></p><p><b> }</b></p><p> lenf=i;//航班數(shù)量 </p><p> fclose(fp);//關(guān)閉文件</p><p><b> } </b></p><p> if((fp=fopen(filenameo,&q
21、uot;r"))!=NULL)//打開文件 讀訂單信息</p><p><b> { </b></p><p><b> i=0;</b></p><p> while(!feof(fp))//讀取文件</p><p> { </p><
22、;p> fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od[i].FlightNumber,&od[i].num);</p><p> if(!feof(fp))</p><p><b> i++;</b><
23、;/p><p><b> }</b></p><p> leno=i;//訂單數(shù)量 </p><p> fclose(fp);//關(guān)閉文件</p><p><b> } </b></p><p><b> }</b></p><
24、p> int check(char s[])//檢查是否重復(fù)</p><p><b> {</b></p><p><b> int g=0;</b></p><p> for(;g<lenf;g++)</p><p> if(strcmp(fl[g].FlightNumber
25、,s)==0 && g!=i)//對比是否相同 相同就說明重復(fù)了</p><p> return g;//表示重復(fù)了</p><p> return -1;//遍歷了整個(gè)數(shù)組都沒發(fā)現(xiàn)重復(fù)的 表示沒有重復(fù)</p><p><b> }</b></p><p> void input()//錄入信
26、息</p><p><b> { </b></p><p> system("cls");//清屏</p><p> for(i=lenf;i<N;i++)</p><p><b> {</b></p><p> printf("
27、請輸入航班號:");</p><p> gets(fl[i].FlightNumber);</p><p> while(check(fl[i].FlightNumber)!=-1)//檢查是否重復(fù) </p><p><b> {</b></p><p> printf("航班號重復(fù),請重新
28、輸入:"); </p><p> gets(fl[i].FlightNumber);</p><p><b> }</b></p><p> printf("請輸入下列信息:\n");</p><p> printf("出發(fā)地:");</p><
29、;p> gets(fl[i].SPlace);</p><p> printf("目的地:");</p><p> gets(fl[i].DPlace);</p><p> printf("起飛時(shí)間:");</p><p> gets(fl[i].Stime);</p>&
30、lt;p> printf("降落時(shí)間:");</p><p> gets(fl[i].Etime);</p><p> printf("票價(jià):");</p><p> scanf("%d",&fl[i].price); </p><p> printf(
31、"剩余座位數(shù):");</p><p> scanf("%d",&fl[i].RemnantSeat); </p><p> getchar();//消除回車</p><p> lenf++;//航班數(shù)加1</p><p> printf("航班信息錄入完成! 是否繼續(xù)錄入下一列
32、航班信息?(y/n):");</p><p><b> while(1)</b></p><p><b> {</b></p><p> ch=getchar();</p><p> getchar();//消除上一步產(chǎn)生的回車符</p><p> if(
33、ch=='y' || ch=='Y' || ch=='n' || ch=='N')</p><p><b> break;</b></p><p><b> else</b></p><p> printf("請重新輸入:");
34、</p><p><b> }</b></p><p> if(ch=='n' || ch=='N')</p><p><b> break; </b></p><p><b> }</b></p><p>
35、save();//保存 </p><p><b> }</b></p><p> void modify()//修改信息</p><p><b> {</b></p><p> char s[20];</p><p> system("cls")
36、;//清屏</p><p> printf("請輸入要修改的航班號:");</p><p><b> gets(s);</b></p><p> for(i=0;i<lenf;i++)//查詢是否存在輸入的信息</p><p> if(strcmp(fl[i].FlightNumber,
37、s)==0)</p><p> break;//存在 結(jié)束循環(huán)</p><p> if(i==lenf)</p><p><b> {</b></p><p> printf("沒有您輸入航班信息,請按回車返回");</p><p> getchar();</p
38、><p><b> return;</b></p><p><b> }</b></p><p> printf("請輸入新的航班號:");</p><p> gets(fl[i].FlightNumber);</p><p> while(chec
39、k(fl[i].FlightNumber)==1)//檢查是否重復(fù)</p><p><b> {</b></p><p> printf("航班號重復(fù),請重新輸入:"); </p><p> gets(fl[i].FlightNumber);</p><p><b> }</b
40、></p><p> printf("請更新下列信息:\n");</p><p> printf("出發(fā)地:");</p><p> gets(fl[i].SPlace);</p><p> printf("目的地:");</p><p> g
41、ets(fl[i].DPlace);</p><p> printf("起飛時(shí)間:");</p><p> gets(fl[i].Stime);</p><p> printf("降落時(shí)間:");</p><p> gets(fl[i].Etime); </p><p>
42、 printf("票價(jià):");</p><p> scanf("%d",&fl[i].price); </p><p> printf("剩余座位數(shù):");</p><p> scanf("%d",&fl[i].RemnantSeat); </p>
43、;<p> getchar();//消除回車 </p><p> save();//保存 </p><p> printf("修改成功!\n");</p><p> system("pause");//任意鍵繼續(xù) </p><p><b> }</b>
44、;</p><p> void book() // 訂票 </p><p><b> { </b></p><p> system("cls");//清屏</p><p><b> i=leno;</b></p><p> printf
45、("請輸入您的姓名:");</p><p> gets(od[i].PName);</p><p> printf("請輸入您的身份證號:");</p><p> gets(od[i].ID); </p><p> printf("請輸入訂票的航班號:");</p&g
46、t;<p> gets(od[i].FlightNumber);</p><p> for(j=0;j<lenf;j++)</p><p> if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//對比是否相同 </p><p><b> break; </b>
47、</p><p> if(j==lenf)// 表示航班不存在</p><p><b> {</b></p><p> printf("航班號不存在!請按回車返回");</p><p> getchar();</p><p><b> return;<
48、/b></p><p><b> } </b></p><p> printf("請輸入訂票數(shù)量:");</p><p> scanf("%d",&od[i].num);</p><p> fl[j].RemnantSeat-=od[i].num;//新的剩余
49、票數(shù)</p><p> printf("請輸入訂單編號:");</p><p> scanf("%d",&od[i].OrderNumber);</p><p> getchar();//消除回車 </p><p> leno++;//訂單數(shù)加1</p><p>
50、 save();//保存到文件</p><p> printf("定票成功。\n");</p><p> system("pause");//任意鍵繼續(xù)</p><p><b> }</b></p><p> void back() // 退票 </p>
51、<p><b> {</b></p><p><b> int num;</b></p><p> system("cls");//清屏</p><p> printf("請輸入要退票的訂單編號:");</p><p> scanf(&
52、quot;%d",&num);</p><p> getchar();//消除回車 </p><p> for(i=0;i<leno;i++)</p><p> if(od[i].OrderNumber==num)//檢查是否存在訂單編號</p><p><b> break;</b>&l
53、t;/p><p> if(i==leno)</p><p><b> {</b></p><p> printf("航班號不存在!請按回車返回");</p><p> getchar();</p><p><b> return;</b></p
54、><p><b> }</b></p><p> j=check(od[i].FlightNumber);//獲取航班的下標(biāo)</p><p> fl[j].RemnantSeat+=od[i].num;//新的剩余票數(shù) </p><p> od[i]=od[leno-1];//最后一條訂單覆蓋退票的訂單</p&
55、gt;<p> leno--;//訂單數(shù)減1</p><p> save();//保存</p><p> printf("退票成功。\n");</p><p> system("pause");//任意鍵繼續(xù)</p><p><b> }</b></p
56、><p> void search_num() //航班信息查詢(按航班號) </p><p><b> { </b></p><p> char s[20];</p><p> system("cls");//清屏</p><p> printf("請
57、輸入要查詢的航班號:");</p><p><b> gets(s); </b></p><p> for(i=0;i<lenf;i++)//查詢是否存在輸入的信息</p><p> if(strcmp(fl[i].FlightNumber,s)==0)</p><p> break;//存在 結(jié)
58、束循環(huán)</p><p> if(i==lenf)</p><p><b> {</b></p><p> printf("航班號不存在!請按回車返回");</p><p> getchar();</p><p> return; </p>&l
59、t;p><b> } </b></p><p> printf(" 查詢成功!\n");</p><p> printf("***************************************************************************
60、***\n");</p><p> printf("航班號 起始地 目的地 起飛時(shí)間 降落時(shí)間 票價(jià) 剩余座位數(shù)\n\n");</p><p> printf("%-8s%-10s%-10s %-10s%-10s %-6d%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPl
61、ace,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].RemnantSeat);</p><p> printf("******************************************************************************\n");</p><p> system("p
62、ause");//任意鍵繼續(xù)</p><p><b> }</b></p><p> void search_line() //航班信息查詢(按路線) </p><p><b> { </b></p><p> char s[20],e[20];</p>&l
63、t;p> int flag=0;</p><p> system("cls");//清屏</p><p> printf("請輸入要查詢的路線的起點(diǎn):");</p><p><b> gets(s);</b></p><p> printf("請輸入要查詢
64、的路線的終點(diǎn):");</p><p><b> gets(e);</b></p><p> printf(" 查詢成功!\n");</p><p> printf("******************************************
65、************************************\n");</p><p> printf("航班號 起始地 目的地 起飛時(shí)間 降落時(shí)間 票價(jià) 剩余座位數(shù)\n\n");</p><p> for(i=0;i<lenf;i++) //查找信息</p><p> if(strcmp(f
66、l[i].SPlace,s)==0 && strcmp(fl[i].DPlace,e)==0)</p><p><b> {</b></p><p> printf("%-8s%-10s%-10s%-10s% -10s%-6d%d\n",fl[i].FlightNumber,fl[i].SPlace,fl[i].DPlace
67、,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].RemnantSeat);</p><p> flag=1;//標(biāo)記找到了信息</p><p><b> } </b></p><p> if(flag==0)</p><p><b> {</b><
68、/p><p> printf("航班信息不存在!\n"); </p><p><b> }</b></p><p> printf("******************************************************************************\n");&
69、lt;/p><p> system("pause");//任意鍵繼續(xù) </p><p><b> }</b></p><p> char menu()//菜單</p><p><b> {</b></p><p><b> char c;
70、</b></p><p> system("cls");//清屏 </p><p> printf("**************************主菜單****************************\n");</p><p> printf("*****
71、1、 航班數(shù)據(jù)錄入 *****\n"); </p><p> printf("***** 2、 航班信息查看(按航班號) *****\n");</p><p> printf("***** 3、 航班信息查詢(按路線) ***
72、**\n");</p><p> printf("***** 4、 航班預(yù)訂 *****\n"); </p><p> printf("***** 5、 退票 *****\n"); &l
73、t;/p><p> printf("***** 6、 航班信息修改 *****\n"); </p><p> printf("***** 7、 退出系統(tǒng) *****\n"); </p><p>
74、; printf("************************************************************\n");</p><p> printf("請選擇功能:"); </p><p> c=getchar();</p><p> getchar();//消除緩存中的換行符
75、</p><p><b> return c;</b></p><p><b> }</b></p><p> void main()</p><p><b> { </b></p><p> load();//讀取文件信息</p>
76、<p><b> while(1)</b></p><p><b> {</b></p><p> ch=menu();//獲取選擇</p><p> switch(ch)</p><p><b> {</b></p><p>
77、 case '1': input(); break;//航班信息錄入 </p><p> case '2': search_num(); break;//航班信息查詢(按航班號) </p><p> case '3': search_line(); break;//航班信息查詢(按路線) &
78、lt;/p><p> case '4': book(); break;// 訂票 </p><p> case '5': back(); break;// 退票 </p><p> case '6': modify(); break;//航班信息修改</p><p> c
79、ase '7': exit(0);//退出</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 運(yùn)行結(jié)果:</b></p><
80、;p><b> 運(yùn)動(dòng)會分?jǐn)?shù)統(tǒng)計(jì)</b></p><p><b> 設(shè)計(jì)題目:</b></p><p><b> 運(yùn)動(dòng)會分?jǐn)?shù)統(tǒng)計(jì)</b></p><p><b> 二、運(yùn)行環(huán)境</b></p><p> 硬件:32位機(jī) 軟件:Windows
81、 XP Microsoft visual studio 6.0</p><p><b> 三、算法設(shè)計(jì)思想</b></p><p> 由于學(xué)校個(gè)數(shù)、項(xiàng)目個(gè)數(shù)是確定的,并不會隨時(shí)需要增加或減少,所以采用順序存儲結(jié)構(gòu)較好,并且能隨機(jī)存取,又不用做插入刪除操作,故采用數(shù)組作為存儲結(jié)構(gòu)。利用結(jié)構(gòu)體創(chuàng)建好數(shù)組后,定義input函數(shù)向兩數(shù)組逐條輸入數(shù)據(jù),其中主要用到whil
82、e和for循環(huán)語句的嵌套以及if語句。利用while(1) { scanf("%d",&n); if(n>=1&&n<=20)y=1; if(y)break; else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); } 這樣的循環(huán)體現(xiàn)了很好的容錯(cuò)性,輸入數(shù)據(jù)不合理會返回讓用戶重新輸入的提示,更友好。本程序中我設(shè)計(jì)讓男子項(xiàng)目去前五名,女子項(xiàng)目取前三名。因此對應(yīng)
83、的名次可以分別積分7、5、3、2、1和5、3、2。然后定義了print函數(shù),可以按不同要求輸出成績和編號等信息。而后定義bianhao( )、zongfen( )、malezf( )、femalezf( )可以分別按學(xué)校編號、學(xué)??偡?、男子總分和女子總分輸出結(jié)果。然后定義了菜單函數(shù)solve( )來調(diào)用不同的排序函數(shù)。最后定義了cxsch( )和cxxm( )兩函數(shù)以實(shí)現(xiàn)按學(xué)校和項(xiàng)目查詢成績。</p><p>
84、 該題我規(guī)定了男子項(xiàng)目取前五名,女子項(xiàng)目取前三名。</p><p> 函數(shù)調(diào)用關(guān)系如下圖:</p><p><b> main( )</b></p><p> Input( ) solve( ) </p><p> bianhao( )
85、zongfen( ) malezf( ) femalezf( ) cxsch( ) cxxm( ) </p><p><b> print( )</b></p><p><b> 算法流程圖</b></p><p><b> 五、算法設(shè)計(jì)分析</b></p><p&
86、gt; 功能要求有:可以輸入各個(gè)項(xiàng)目的前三名或前五名的成績;能統(tǒng)計(jì)各學(xué)??偡?;可以按學(xué)校編號、學(xué)??偡?、男女團(tuán)體總分排序輸出;可以按學(xué)校編號查詢學(xué)校某個(gè)項(xiàng)目的情況。所以利用結(jié)構(gòu)體創(chuàng)建兩個(gè)數(shù)組,數(shù)組sch[ ]包含學(xué)校名稱、編號、總分、男子總分、女子總分等內(nèi)容;數(shù)組pro[ ]包含項(xiàng)目名稱、項(xiàng)目編號以及該項(xiàng)目前三名或前五名的學(xué)校編號。</p><p> 需要注意的是,預(yù)處理命令中使用了iostream、ioma
87、nip、fstream等頭文件,因此可以更方便的使用一些C++中的輸入輸出語句。</p><p><b> 六、源代碼</b></p><p> #include<iostream> </p><p> #include<string> </p><p> #include<ioma
88、nip> </p><p> #include<fstream></p><p> using namespace std; </p><p> int n; //n個(gè)學(xué)校 </p><p> int m; //m個(gè)男子項(xiàng)目 </p><p> int w;
89、//w個(gè)女子項(xiàng)目 </p><p> struct pro //表示項(xiàng)目的結(jié)構(gòu)體 </p><p><b> { </b></p><p> string name; //項(xiàng)目名稱 </p><p> int snum[6]; //前3或5名學(xué)校的編號 </p><p>&
90、lt;b> }p[21]; </b></p><p> struct school //表示學(xué)校的結(jié)構(gòu)體 </p><p><b> { </b></p><p><b> int num; </b></p><p> string name; //學(xué)校名稱 &
91、lt;/p><p> int score; //學(xué)??偡?</p><p> int male; //男子總分 </p><p> int female; //女子總分 </p><p> }sch[21]; </p><p> int qianwu[5]={7,5,3,2,1}; //前五名得
92、分 </p><p> int qiansan[3]={5,3,2}; //前三名得分</p><p> void input() //輸入前三或前五成績</p><p><b> { </b></p><p> int i,j,y,x; </p><p> printf
93、("輸入學(xué)校數(shù)目:"); </p><p><b> y=0; </b></p><p><b> while(1) </b></p><p><b> { </b></p><p> scanf("%d",&n); &l
94、t;/p><p> if(n>=1&&n<=20)y=1; </p><p> if(y)break; </p><p> else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p><p>
95、for(i=1;i<=n;i++) </p><p><b> { </b></p><p> printf("輸入第%d個(gè)學(xué)校的名稱:",i); </p><p> cin>>sch[i].name; </p><p> sch[i].score=0; </p>
96、<p> sch[i].female=0; </p><p> sch[i].male=0; </p><p> sch[i].num=i; </p><p><b> } </b></p><p> printf("輸入男子項(xiàng)目數(shù)和女子項(xiàng)目數(shù):"); </p>
97、<p><b> y=0; </b></p><p><b> while(1) </b></p><p><b> { </b></p><p> scanf("%d,%d",&m,&w); </p><p> if(m
98、<=20&&m>=1&&w<=20&&w>=1)y=1; </p><p> if(y)break; </p><p> else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p>&
99、lt;p> for(i=1;i<=m;i++) </p><p><b> { </b></p><p> printf("輸入第%d個(gè)項(xiàng)目的名稱:\n",i); </p><p> cin>>p[i].name; </p><p> printf("輸入第
100、%d個(gè)項(xiàng)目(男子)的前5名的學(xué)校編號:\n",i); </p><p> for(j=1;j<=5;j++) </p><p><b> { </b></p><p><b> y=0; </b></p><p><b> while(1) </b>&l
101、t;/p><p><b> { </b></p><p> scanf("%d",&x); </p><p> if(x>=1&&x<=20)y=1; </p><p> if(y)break; </p><p> else print
102、f("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p><p> p[i].snum[j]=x; </p><p> sch[x].score+=qianwu[j-1]; </p><p> sch[x].male+=qianwu[j-1]; </p&g
103、t;<p><b> } </b></p><p><b> }</b></p><p> for(i=m+1;i<=m+w;i++)</p><p><b> { </b></p><p> printf("輸入第%d個(gè)項(xiàng)目(女子)的編
104、號:\n",i); </p><p> cin>>p[i].name;</p><p> printf("輸入第%d個(gè)項(xiàng)目的前3名的學(xué)校編號:\n",i); </p><p> for(j=1;j<=3;j++) </p><p><b> { </b></p
105、><p><b> y=0; </b></p><p><b> while(1) </b></p><p><b> { </b></p><p> scanf("%d",&x); </p><p> if(x>
106、=1&&x<=20)y=1; </p><p> if(y)break; </p><p> else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p><p> p[i].snum[j]=x; </p>&
107、lt;p> sch[x].score+=qiansan[j-1]; </p><p> sch[x].female+=qiansan[j-1]; </p><p><b> } </b></p><p><b> }</b></p><p><b> } </b>
108、;</p><p> void print(int i) </p><p><b> { </b></p><p> cout<<sch[i].num<<setw(10)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) <
109、;/p><p> <<sch[i].male<<setw(10)<<sch[i].female<<endl; </p><p><b> } </b></p><p> void bianhao() //按編號排序 </p><p><b> { <
110、/b></p><p><b> int i,j; </b></p><p> school t; </p><p> for(i=1;i<n;i++) </p><p><b> { </b></p><p> for(j=i;j<=n;j++)
111、 </p><p> if(sch[i].num>sch[j].num) </p><p> {t=sch[i];sch[i]=sch[j];sch[j]=t;} </p><p><b> } </b></p><p> printf("\n按編號排列:\n"); </p>
112、<p> printf("編號 學(xué)校名稱 總分 男子總分 女子總分\n"); </p><p> for(i=1;i<=n;i++) </p><p> print(i); </p><p><b> } </b></p><p> void zongfen() //按學(xué)
113、??偡峙判?</p><p><b> { </b></p><p><b> int i,j; </b></p><p> school t; </p><p> for(i=1;i<n;i++) </p><p><b> { </b>
114、;</p><p> for(j=i;j<=n;j++) </p><p> if(sch[i].score<sch[j].score) </p><p> {t=sch[i];sch[i]=sch[j];sch[j]=t;} </p><p> } </p><p> pr
115、intf("\n按學(xué)??偡峙帕?\n"); </p><p> printf("編號 學(xué)校名稱 總分 男子總分 女子總分\n"); </p><p> for(i=1;i<=n;i++) </p><p> print(i); </p><p> ofstream fout;</p&
116、gt;<p> fout.open("運(yùn)動(dòng)會分?jǐn)?shù)統(tǒng)計(jì).txt"); </p><p> fout<<"編號 學(xué)校名稱 總分 男子總分 女子總分"<<endl;</p><p> for(i=1;i<=n;i++) </p><p> {fout<<sch[i].n
117、um<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) </p><p> <<sch[i].male<<setw(10)<<sch[i].female<<endl; }</p><p> fout.close();&l
118、t;/p><p><b> } </b></p><p> void malezf() //按學(xué)校男總分排序 </p><p><b> { </b></p><p><b> int i,j; </b></p><p> school t; &l
119、t;/p><p> for(i=1;i<n;i++) </p><p><b> { </b></p><p> for(j=i;j<=n;j++) </p><p> if(sch[i].male<sch[j].male) </p><p> {t=sch[i];sch[
120、i]=sch[j];sch[j]=t;} </p><p><b> } </b></p><p> printf("\n按學(xué)校男子總分排列:\n"); </p><p> printf("編號 學(xué)校名稱 總分 男子總分 女子總分\n"); </p><p> for(i=
121、1;i<=n;i++) </p><p> print(i); </p><p><b> } </b></p><p> void femalezf() //按學(xué)校女總分排序 </p><p><b> { </b></p><p><b> in
122、t i,j; </b></p><p> school t; </p><p> for(i=1;i<n;i++) </p><p><b> { </b></p><p> for(j=i;j<=n;j++) </p><p> if(sch[i].female
123、<sch[j].female) </p><p> {t=sch[i];sch[i]=sch[j];sch[j]=t;} </p><p><b> } </b></p><p> printf("\n按學(xué)校女子總分排列:\n"); </p><p> printf("編號 學(xué)
124、校名稱 總分 男子總分 女子總分\n"); </p><p> for(i=1;i<=n;i++) </p><p> print(i); </p><p> cout<<endl; </p><p><b> } </b></p><p> void cxs
125、ch() //查詢學(xué)校信息 </p><p><b> { </b></p><p> int i,y,s; </p><p> printf("輸入需要查詢的學(xué)校編號:"); </p><p><b> y=0; </b></p><p><
126、;b> while(1) </b></p><p><b> { </b></p><p> scanf("%d",&s); </p><p> if(s>=1&&s<=n)y=1; </p><p> if(y)break; </
127、p><p> else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p><p> printf("該學(xué)校相關(guān)信息:\n"); </p><p> printf("編號 學(xué)校名稱 總分 男子總分 女子總分\n"
128、;); </p><p> for(i=1;i<=n;i++) </p><p><b> { </b></p><p> if(sch[i].num==s) </p><p><b> { </b></p><p> print(i); </p>
129、<p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p> cout<<endl; </p><p><b> } </b></p&g
130、t;<p> void cxxm() //查詢項(xiàng)目信息 </p><p><b> { </b></p><p> int i,y,s; </p><p> printf("輸入需要查詢的項(xiàng)目編號:"); </p><p><b> y=0; </b>&l
131、t;/p><p><b> while(1) </b></p><p><b> { </b></p><p> scanf("%d",&s); </p><p> if(s>=1&&s<=n)y=1; </p><p&
132、gt; if(y)break; </p><p> else printf("輸入數(shù)據(jù)有誤,請重新輸入:"); </p><p><b> } </b></p><p> cout<<p[s].name<<"前5名學(xué)校編號及名稱為:"<<endl; </p
133、><p> printf("名次 編號 學(xué)校名稱\n"); </p><p> for(i=1;i<=5;i++) </p><p> cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch
134、[ p[s].snum[i] ].name<<endl; </p><p> cout<<endl; </p><p><b> } </b></p><p> void solve() //菜單函數(shù)</p><p><b> { </b></p>&l
135、t;p><b> int z; </b></p><p><b> while(1) </b></p><p><b> { </b></p><p> printf("\n選擇您需要的操作(選擇序號):\n"); </p><p> pri
136、ntf("1.按學(xué)校編號排序輸出\n"); </p><p> printf("2.按學(xué)??偡峙判蜉敵鯸n"); </p><p> printf("3.按學(xué)校男總分排序輸出\n"); </p><p> printf("4.按學(xué)校女總分排序輸出\n"); </p>
137、<p> printf("5.查詢某個(gè)學(xué)校成績\n"); </p><p> printf("6.查詢某個(gè)項(xiàng)目成績\n"); </p><p> printf("7.結(jié)束\n\n"); </p><p> scanf("%d",&z); </p>
138、<p> if(z==1)bianhao(); </p><p> if(z==2)zongfen(); </p><p> if(z==3)malezf(); </p><p> if(z==4)femalezf(); </p><p> if(z==5)cxsch(); </p><p> i
139、f(z==6)cxxm(); </p><p> if(z==7)break; </p><p><b> } </b></p><p><b> } </b></p><p> int main() //主函數(shù)</p><p><b> { <
140、/b></p><p><b> input(); </b></p><p><b> solve(); </b></p><p> return 0; </p><p><b> }</b></p><p><b> 運(yùn)行結(jié)果
141、分析</b></p><p> 1 2</p><p><b> 3</b></p><p><b> 4</b></p><p><b> 收獲及體會</b></p>&l
142、t;p> 從這個(gè)程序的實(shí)習(xí)過程我認(rèn)識到了“封裝”的重要性,而函數(shù)體現(xiàn)了封裝性,該程序的主函數(shù)很簡單,只調(diào)用了input()和solve(),而不同的情況可以通過solve()來調(diào)用不同的輸出函數(shù)來輸出結(jié)果,而不同的輸出函數(shù)能都調(diào)用print()輸出所要求的結(jié)果。</p><p> 利用while(1) { scanf("%d",&n); if(n>=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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---航空訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---航空訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-航空訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---航空訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)航空訂票系統(tǒng)課程設(shè)計(jì)報(bào)告
- 航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)(數(shù)據(jù)結(jié)構(gòu))
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--航空客運(yùn)訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---航空客運(yùn)訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)航空航班課程設(shè)計(jì)--航空客運(yùn)訂票系統(tǒng)
- 航空客運(yùn)訂票系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)源代碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---飛機(jī)訂票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 航空訂票系統(tǒng)數(shù)據(jù)庫課程設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)-- 航空訂票管理系統(tǒng)
- 航空訂票管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)報(bào)告-航空訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)c語言版飛機(jī) 訂票 系統(tǒng)資料
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 課程設(shè)計(jì)---航空客運(yùn)訂票系統(tǒng)
- 航空客運(yùn)訂票系統(tǒng)課程設(shè)計(jì)
- java課程設(shè)計(jì)-航空訂票管理系統(tǒng)設(shè)計(jì)
評論
0/150
提交評論