c++課程設(shè)計(jì)--對參賽結(jié)果分?jǐn)?shù)進(jìn)行處理_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報告</b></p><p>  課程設(shè)計(jì)題目:對參賽結(jié)果分?jǐn)?shù)進(jìn)行處理</p><p><b>  目錄</b></p><p>  一 目的 ************************* 2</p><p>  二 基本要求

2、 ************************* 2</p><p>  三 創(chuàng)新要求 ************************* 2</p><p>  三 創(chuàng)新要求 ************************* 2 </p><p>  四 寫出設(shè)計(jì)說明書 *****************

3、******** 2</p><p>  五 實(shí)驗(yàn)題目 ************************* 2 </p><p>  六 實(shí)現(xiàn)流程分析 ************************* 3</p><p>  七 程序源代碼 ************************* 5</p&

4、gt;<p>  八 運(yùn)行結(jié)果 ************************* 13</p><p>  九 問題分析************************* 15</p><p>  十 結(jié)構(gòu)分析 ************************* 15</p><p>  十一 個性功能

5、介紹 *********************** 15 </p><p>  十二 課程設(shè)計(jì)的目的與要求******************** 15</p><p>  十三 課程設(shè)計(jì)小結(jié) ************************ 16</p><p><b>  C++課程設(shè)計(jì)</b></p>

6、;<p><b>  一 目的:</b></p><p> ?。?)要求學(xué)生達(dá)到熟練掌握C++語言的基本知識和技能; </p><p> ?。?)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; </p><p> ?。?)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題。 </p><p><

7、b>  二 基本要求:</b></p><p>  (1)要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的系統(tǒng)結(jié)構(gòu); </p><p>  (2)要求在設(shè)計(jì)的過程中,建立清晰的類關(guān)系圖,描述出類族之間的關(guān)系; </p><p>  (3)在系統(tǒng)中定義的每個類中要有各自的屬性和方法; </p><p> ?。?)在系統(tǒng)的

8、設(shè)計(jì)中,要用到面向?qū)ο蟮姆庋b、繼承和派生、多態(tài)的屬性。 </p><p><b>  三 創(chuàng)新要求: </b></p><p>  在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能及設(shè)計(jì)出比較友好的界面等。 </p><p>  四 寫出設(shè)計(jì)說明書 程序源代碼大致有三部分,計(jì)算除掉一個最高分和一個最低分之后的平均分,計(jì)算除掉一個

9、最高分和一個最低分之后的總分,最后是排序,程序主要是實(shí)現(xiàn)了這幾個功能,說起來很容易的過程,但寫起來一點(diǎn)都不容易。</p><p>  五 實(shí)驗(yàn)題目:對參賽結(jié)果分?jǐn)?shù)進(jìn)行處理</p><p>  參賽選手n人(n>1),評委m人(m>2),評委給每一選手打一個分?jǐn)?shù)score(分?jǐn)?shù)score為小于等于10的一個正實(shí)數(shù))。選手的最后得分lastScore計(jì)算方法為</p>

10、<p> ?。?)m<9時,去掉一個最高分和一個最低分后另m-2個得分的平均值。</p><p> ?。?)m≥9時,去掉兩個最高分和兩個最低分后另m-4個得分的平均值。</p><p>  假設(shè)事先已經(jīng)建立了text型的數(shù)據(jù)文件f1.txt,其中依次記錄著n個選手的編號(一個正整數(shù))、姓名(一個字符串)以及m個評委給出的得分。</p><p> 

11、 請編制程序,依次從數(shù)據(jù)文件f1.txt中讀入n個選手的有關(guān)信息,而后按上述規(guī)定方法計(jì)算出每一個選手的最后得分,而且往屏幕上以及另一個text型文件f2.txt中同時輸出如下形式的結(jié)果信息。</p><p>  假設(shè)參賽選手人數(shù)n=5,評委人數(shù)m=7,磁盤文件f1.txt中的初始數(shù)據(jù)為:</p><p>  1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2<

12、;/p><p>  2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3</p><p>  3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6</p><p>  4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3</p><p>  5 liuyifan 9.5 9.1 9.8

13、 9.2 9.0 9.5 8.9那么,程序執(zhí)行后,屏幕顯示結(jié)果以及磁盤文件f2.txt中的結(jié)果均應(yīng)該為:---------------------------------------------------------- 參賽號    姓 名     最高分    最低分   累積分 

14、0;  最后得分----------------------------------------------------------     1  zhangjin       9.7       7.9    &#

15、160; 44.9        8.98     2    lintao       9.3       8.2      4

16、3.9        8.78     3   guojian       8.9       8.4      42.9 &#

17、160;      8.58     4    maling       8.9       7.9      42.2  &#

18、160;     8.44     5  liuyifan       9.8   </p><p>  思考:可進(jìn)一步考慮找出比賽的第1至第k名,也在屏幕以及f2.txt中同時輸出相關(guān)的結(jié)果信息(k小于等于n,并規(guī)定若多個選手最后得

19、分相同時,則有效分(即已刪除原來的最高分后)中最高分高者名次優(yōu)先)。</p><p><b>  六  流程圖</b></p><p><b>  七 程序源代碼</b></p><p>  #include<iostream></p><p>  #include<iomanip

20、></p><p>  #include<string></p><p>  #include<fstream></p><p>  using namespace std;</p><p>  const int N = 20;</p><p>  class competitor<

21、;/p><p><b>  {</b></p><p><b>  private:</b></p><p>  int NO;//選手號碼</p><p>  int judge_amount;//裁判人數(shù)</p><p>  string name;//選手姓名&

22、lt;/p><p>  double score[N];//選手得分</p><p><b>  public:</b></p><p>  competitor(string na,int no,int ju,double s[N]);//構(gòu)造函數(shù)</p><p>  int get_no();</p>

23、<p>  string get_name();</p><p>  int get_judge_amount();</p><p>  double *get_score();</p><p>  void sort();//將選手得分從大到小排序</p><p>  double max();//選手得分最大值<

24、/p><p>  double min();//選手得分最小值</p><p>  double last_score();//除去最大最小分?jǐn)?shù)后的平均分?jǐn)?shù)</p><p>  double total_score();//除去最大最小分?jǐn)?shù)后的累計(jì)得分</p><p>  void show_date();//顯示選手信息</p

25、><p><b>  };</b></p><p>  competitor::competitor(string na,int no,int ju,double s[N])//構(gòu)造函數(shù)</p><p><b>  {</b></p><p>  name = na;</p><p&

26、gt;<b>  NO = no;</b></p><p>  judge_amount = ju;</p><p>  for(int i = 0;i<judge_amount;i++)</p><p>  score[i] = s[i];</p><p>  for(int j = judge_amount;j

27、<N;j++)</p><p>  score[judge_amount] = s[judge_amount];</p><p><b>  }</b></p><p>  int competitor::get_no()</p><p>  {return NO;}</p><p>  

28、string competitor::get_name()</p><p>  {return name;}</p><p>  int competitor::get_judge_amount()</p><p>  {return judge_amount;}</p><p>  double *competitor::get_sco

29、re()</p><p>  {return score;}</p><p>  void competitor::sort()//將選手得分從大到小排序</p><p><b>  {</b></p><p>  int i,j,k,temp;</p><p>  for(i = 0;i<

30、;judge_amount-1;i++)</p><p><b>  {</b></p><p><b>  k = i;</b></p><p>  for(j = i;j<judge_amount;j++)</p><p><b>  {</b></p>

31、;<p>  if(score[k] < score[j])</p><p><b>  k = j;</b></p><p><b>  }</b></p><p>  if(k != i)</p><p><b>  {</b></p>&

32、lt;p>  temp = score[i];</p><p>  score[i] = score[k];</p><p>  score[k] = temp; </p><p><b>  }</b></p><p><b>  }</b></p><p>&l

33、t;b>  }</b></p><p>  double competitor::last_score()//除去最大最小分?jǐn)?shù)后的平均分?jǐn)?shù)</p><p><b>  {</b></p><p>  double sum = 0;</p><p>  if(judge_amount < 9)<

34、;/p><p><b>  {</b></p><p>  for(int i=1;i < judge_amount-1;i++)</p><p>  sum+=score[i];</p><p>  return sum/(judge_amount-2) ;</p><p><b>

35、  }</b></p><p>  if(judge_amount>=9)</p><p><b>  {</b></p><p>  for(int i=2;i < judge_amount-2;i++)</p><p>  sum = sum+score[i];</p><

36、p>  return sum/(judge_amount-4);</p><p><b>  }</b></p><p><b>  }</b></p><p>  double competitor::total_score()//除去最大最小分?jǐn)?shù)后的累計(jì)得分</p><p><b&g

37、t;  {</b></p><p>  double sum = 0;</p><p>  if(judge_amount < 9)</p><p><b>  {</b></p><p>  for(int i=1;i < judge_amount-1;i++)</p><p

38、>  sum+=score[i];</p><p>  return sum;</p><p><b>  }</b></p><p>  if(judge_amount>=9)</p><p><b>  {</b></p><p>  for(int i=2;

39、i < judge_amount-2;i++)</p><p>  sum+=score[i];</p><p>  return sum;</p><p><b>  }</b></p><p><b>  }</b></p><p>  double competi

40、tor::max()//選手得分最大值</p><p><b>  {</b></p><p>  return score[0];</p><p><b>  }</b></p><p>  double competitor::min()//選手得分最小值</p><p>

41、;<b>  {</b></p><p>  return score[judge_amount-1];</p><p><b>  }</b></p><p>  void competitor::show_date()//顯示參賽選手信息子程序</p><p><b>  {</

42、b></p><p><b>  cout<<NO;</b></p><p>  cout<<setw(10)<<name;</p><p>  for(int i = 0;i<judge_amount;i++)</p><p>  cout<<setw(5)&

43、lt;<setprecision(2)<<score[i]<<" ";</p><p>  cout<<endl;</p><p><b>  }</b></p><p>  void show_rerult(competitor &player)//計(jì)算并顯示參賽選手比賽

44、結(jié)果子程序</p><p><b>  {</b></p><p>  player.sort();</p><p>  cout<<player.get_no();</p><p>  cout<<setw(12)<<player.get_name();</p><

45、;p>  cout<<setw(12)<<setprecision(2)<<player.max();</p><p>  cout<<setw(12)<<setprecision(2)<<player.min();</p><p>  cout<<setw(14)<<setprecisi

46、on(2)<<player.total_score();</p><p>  cout<<setw(13)<<setprecision(2)<<player.last_score()<<endl;</p><p><b>  }</b></p><p>  ofstream &

47、 operator<<(ofstream & base,competitor & a)//運(yùn)算符重載,向指定文件輸入選手的資料 </p><p><b>  { </b></p><p>  base<<a.get_no()<<" "<<a.get_name()<<&q

48、uot; "; </p><p>  for(int i=0;i<a.get_judge_amount();i++) </p><p>  base<<" "<<a.get_score()[i]; </p><p>  base<<endl; </p><p> 

49、 return base; </p><p><b>  }</b></p><p>  void out_to_file(competitor a)//將比賽結(jié)果保存到文件d:\\competitor result.txt中</p><p><b>  {</b></p><p>  ofstre

50、am outfile1;</p><p>  outfile1.open("d:\\competitor result.txt",ios::app);</p><p>  outfile1<<" "<<a.get_no()<<" "<<setw(-5)<<

51、a.get_name()<<" "<<a.max()<<" "<<a.min(); </p><p>  outfile1<<" "<<a.total_score()<<" "<<

52、;a.last_score()<<endl; </p><p>  outfile1.close();//關(guān)閉文件 </p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p>  do

53、uble t1[20]={8.8,9.3,7.9,8.7,8.9,9.7,9.2};//選手1得分 </p><p>  double t2[20]={8.9,8.2,8.6,8.8,8.5,9.1,9.3};//選手2得分 </p><p>  double t3[20]={8.9,8.4,8.7,8.6,8.6,8.4,8.6};//選手3得分 </p><p>

54、;  double t4[20]={7.9,8.3,8.5,8.6,8.5,8.9,8.3};//選手4得分 </p><p>  double t5[20]={9.5,9.1,9.8,9.2,9.0,9.5,8.9};//選手5得分 </p><p>  competitor player1("zhangjin",1,7,t1);//調(diào)用player1構(gòu)造函數(shù) <

55、;/p><p>  competitor player2("lintao",2,7,t2);//調(diào)用player2構(gòu)造函數(shù) </p><p>  competitor player3("guojian",3,7,t3);//調(diào)用player3構(gòu)造函數(shù) </p><p>  competitor player4("mali

56、ng",4,7,t4);//調(diào)用player4構(gòu)造函數(shù) </p><p>  competitor player5("liuyifan",5,7,t5);//調(diào)用player5構(gòu)造函數(shù) </p><p>  player1.show_date();//顯示選手1比賽信息</p><p>  player2.show_date();//顯

57、示選手2比賽信息</p><p>  player3.show_date();//顯示選手3比賽信息</p><p>  player4.show_date();//顯示選手4比賽信息</p><p>  player5.show_date();//顯示選手5比賽信息</p><p>  cout<<"NO"&

58、lt;<setw(10)<<"Name"<<setw(16)<<"Max score"<<setw(13)<<"Min score";//向顯示屏輸出</p><p>  cout<<setw(15)<<"Total score"<<

59、setw(12)<<"Last score"<<endl;</p><p>  show_rerult(player1);//顯示選手1比賽結(jié)果</p><p>  show_rerult(player2);//顯示選手2比賽結(jié)果</p><p>  show_rerult(player3);//顯示選手3比賽結(jié)果<

60、/p><p>  show_rerult(player5);//顯示選手5比賽結(jié)果</p><p>  show_rerult(player4);//顯示選手4比賽結(jié)果</p><p>  ofstream outfile1("d:\\competitor data.txt");//保存到D盤competitor data.txt</p>

61、<p>  outfile1<<player1<<player2<<player3<<player4<<player5;//將選手player1到player5的數(shù)據(jù)保存到文件competitor data.txt中</p><p>  outfile1.close();//關(guān)閉文件 </p><p>  ofstr

62、eam outfile2;</p><p>  outfile2.open("d:\\competitor result.txt",ios::app);</p><p>  outfile2<<" "<<"NO"<<setw(10)<<"Name"<&l

63、t;setw(15)<<"Max score"<<setw(12)<<"Min score";//向顯示屏輸出</p><p>  outfile2<<setw(14)<<"Total score"<<setw(13)<<"Last score"<

64、;<endl;</p><p>  out_to_file(player1);//將player1比賽結(jié)果保存到文件d:\\competitor result.txt</p><p>  out_to_file(player2);//將player2比賽結(jié)果保存到文件d:\\competitor result.txt</p><p>  out_to_file

65、(player3);//將player3比賽結(jié)果保存到文件d:\\competitor result.txt</p><p>  out_to_file(player4);//將player4比賽結(jié)果保存到文件d:\\competitor result.txt</p><p>  out_to_file(player5);//將player5比賽結(jié)果保存到文件d:\\competitor

66、result.txt</p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  八 運(yùn)行結(jié)果</b></p><p>  程序所創(chuàng)建的兩個文件competitor data.txt和competitor resu

67、lt.txt:</p><p>  文件competitor data.txt內(nèi)容</p><p>  文件competitor result.txt內(nèi)容</p><p><b>  九 問題分析</b></p><p><b>  1.課題內(nèi)容 </b></p><p> 

68、 本課題對參賽選手分?jǐn)?shù)進(jìn)行處理,就像我們平時比賽中評分一樣,去掉最高分和最低分,剩下的分?jǐn)?shù)的和的平均分就是最后的分。</p><p>  在程序設(shè)計(jì)過程中比較繁雜,有很多變量和函數(shù),很容易出錯。所以在寫的過程中要特別細(xì)心。</p><p><b>  2.功能結(jié)構(gòu)</b></p><p>  有對數(shù)據(jù)的輸入,輸入之后要進(jìn)行計(jì)算,計(jì)算過程中涉及很

69、多的方法和函數(shù),例如重載,析構(gòu)函數(shù),構(gòu)造函數(shù)等等。</p><p><b>  十 結(jié)構(gòu)分析 </b></p><p>  程序源代碼大致有三部分,計(jì)算除掉一個最高分和一個最低分之后的平均分,計(jì)算除掉一個最高分和一個最低分之后的總分,最后是排序,程序主要是實(shí)現(xiàn)了這幾個功能,說起來很容易的過程,但寫起來一點(diǎn)都不容易。</p><p><b&

70、gt;  十一 個性功能介紹</b></p><p>  1.本程序?qū)崿F(xiàn)了題目的要求:對選手是比賽分?jǐn)?shù)進(jìn)行了,求最大值,最小值,累計(jì)得分,最后得分,選手名次排序。</p><p>  2.在本程序中運(yùn)行后,用戶可以手動根據(jù)提示輸入,參賽選手的信息和評委的給分,系統(tǒng)會自動處理信息,并把處理結(jié)果保存到文件和向屏幕輸出。</p><p>  十二 課程設(shè)計(jì)的目

71、的與要求</p><p><b>  1教學(xué)目的</b></p><p>  在《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程教學(xué)的基礎(chǔ)上,根據(jù)軟件工程的方法與流程,在相對集中的實(shí)訓(xùn)教學(xué)時間內(nèi),通過一個功能較完整的小型應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā),深入復(fù)習(xí)并進(jìn)一步掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)思想與方法。同時,作為整個實(shí)踐教學(xué)體系一部分,系統(tǒng)培養(yǎng)學(xué)生采用面向?qū)ο蟮姆椒ǚ治鰡栴}與解決問題的能力及團(tuán)體組織與協(xié)

72、作能。</p><p><b>  2教學(xué)要求</b></p><p>  從課程設(shè)計(jì)的目的出發(fā),通過設(shè)計(jì)工作的各個環(huán)節(jié),達(dá)到以下教學(xué)要求:</p><p>  1)根據(jù)實(shí)現(xiàn)的功能,劃分出合理的對象類,明確對象類間的關(guān)系。</p><p>  2) 為每個對象類設(shè)計(jì)正確的域和方法,為每個方法設(shè)計(jì)合理的方法體。同時,為對象

73、類及內(nèi)部的域和方法運(yùn)用正確的修飾符,如訪問控制符等。</p><p>  3)編程簡練,程序功能齊全,能正確運(yùn)行。</p><p>  4)說明書、流程圖要清楚,規(guī)范</p><p>  5)課題完成后必須按要求提交課程設(shè)計(jì)報告,格式規(guī)范,內(nèi)容詳實(shí)。</p><p><b>  十三 課程設(shè)計(jì)小結(jié)</b></p&g

74、t;<p>  1.在課程設(shè)計(jì)過程中,問題百出,這主要是自己對這門課程的掌握的不夠熟練,C++中新增了很多新詞和語法,由于理解不夠,所以在做的過程中常常會遇到很多問題,并且不能及時得到解答,在寫代碼中我才意識到自己對這門課程的掌握有多少,例如,剛開始,缺省我基本都不會用,還有析構(gòu)函數(shù)、構(gòu)造函數(shù)拷貝構(gòu)造函數(shù)都搞不清楚,這是我在課程設(shè)計(jì)中遇到的問題,所以我覺得如果要想學(xué)好這門課,還需要繼續(xù)努力。</p><

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論