數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---航空訂票系統(tǒng)_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論