2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  運動會分?jǐn)?shù)統(tǒng)計系統(tǒng)</b></p><p><b>  設(shè)計內(nèi)容</b></p><p><b>  任務(wù):</b></p><p>  參加運動會有n個學(xué)校,學(xué)校編號為1~n。比賽分成m個男子項目,和w個女子項目。項目編號為1~m,女子為m+1~w。不同的項目取前5名或

2、前3明積分;取前5名的積分為:7、5、3、2、1,前3名的積分分別為:5、3、2;哪些項目取前5名或前3名由學(xué)生自己決定。(m<=20,n<=20)。</p><p><b>  功能要求:</b></p><p>  可以輸入各個項目的前3名或前5名的成績;</p><p>  能統(tǒng)計各個學(xué)??偡?;</p><

3、p>  可以按學(xué)校編號、學(xué)校總分、男女團(tuán)體總分排序輸出;</p><p>  可以按學(xué)校編號查詢學(xué)校某個項目的情況;</p><p>  可以按項目編號查詢?nèi)〉们?或前5名的學(xué)校。</p><p><b>  設(shè)計思路</b></p><p><b>  系統(tǒng)結(jié)構(gòu)設(shè)計圖</b></p&g

4、t;<p><b>  思路分析</b></p><p>  從上面的結(jié)構(gòu)設(shè)計圖來看,隱含地給出了第一個約束條件:每個參賽學(xué)校均參加所有的比賽項目。然而這種設(shè)計思路并不符合實際情況,因為每個學(xué)校有權(quán)利選擇參加或不參加某個比賽項目。</p><p>  首先,在上述結(jié)構(gòu)圖中,比賽項目Event是最小的數(shù)據(jù)存儲基本單元。比賽項目集合SportEvents可以

5、理解為Event數(shù)組,包含了所有的比賽項目。根據(jù)約束,只要有學(xué)校University參加運動會,此學(xué)校就包含了一個SportEvents集合,即為每個學(xué)校分配自己的項目成績單。有n個學(xué)校報名參加了運動會SportsMeeting,大會的工作人員根據(jù)比賽項目結(jié)果統(tǒng)計各個學(xué)校的成績。因此,這種設(shè)計結(jié)構(gòu)有3層包含關(guān)系,但是每一部分相互獨立,耦合性弱。</p><p>  除了第1條所指出的設(shè)計缺陷,這種設(shè)計也面臨著另一

6、個問題。項目的成績?nèi)绾屋斎耄砍R?guī)思想是根據(jù)比賽結(jié)果,向系統(tǒng)輸入比賽項目的前3或5名的學(xué)校編號或名稱,系統(tǒng)后臺自動累加積分。但是,這里項目是最小的單元,學(xué)校又包含了項目,也就是說每個學(xué)校的項目成績單之間是封閉的,學(xué)校和學(xué)校之間是無法看到的,只有運動會的工作人員才有權(quán)限按照邏輯關(guān)系查詢某個學(xué)校的某項成績,所以顯然就不能按照常規(guī)思想進(jìn)行項目成績的輸入。那怎么辦呢?直接輸入分?jǐn)?shù)。我再給出第二個約束:對于一個項目來說,每個學(xué)校只派出一個代表參加。

7、通常對于一個比賽項目來說,學(xué)??梢耘沙霾恢挂粋€代表參加,就像奧運會的男子百米飛人大賽,牙買加出3名,美國出3名等。</p><p>  根據(jù)第二個約束條件,假設(shè)裁判給出比賽結(jié)果表1中的學(xué)校名次,工作人員根據(jù)名次,將表2的分?jǐn)?shù)輸入到系統(tǒng)即可。</p><p>  從另一個方面來看,如果大會的積分規(guī)則改變了。除非系統(tǒng)有對外修改積分規(guī)則的接口,否則工作人員就無能為力了。因此以表2的形式更加有靈活

8、性。</p><p>  客觀的說,此系統(tǒng)的設(shè)計上有很多缺陷,與實際的常規(guī)思想有所不同,所以才加入了兩個約束條件。</p><p><b>  功能設(shè)計</b></p><p><b>  功能模塊設(shè)計圖</b></p><p><b>  實現(xiàn)思路</b></p>

9、<p>  模塊設(shè)計圖中具體功能明了,這里就不再重復(fù)了。</p><p>  一般情況下,學(xué)校信息,比賽項目信息和項目成績都需要在cmd窗口中進(jìn)行輸入。這也帶來2個問題。一是如果學(xué)校有n個,項目有m個,取前5名,那么你就要輸入n*m*5個數(shù)據(jù),工作量大。二是一旦發(fā)現(xiàn)歷史輸入有誤,那么就要全部重新輸入數(shù)據(jù)。為解決這個問題,本系統(tǒng)以文件流的形式導(dǎo)入數(shù)據(jù),文件流最簡單的方式就是讀寫txt。我把每個項目的成

10、績放在對應(yīng)的txt文件中,如男子100米——M100.txt,具體對應(yīng)關(guān)系可以查看PointsRules.txt。文件里的內(nèi)容形式與表2相同,存放的是項目成績。在cmd窗口中,需要哪個項目的成績,就導(dǎo)入對應(yīng)的txt文件即可。此外,如果項目成績發(fā)生變化,只需修改txt文件,再重新導(dǎo)入即可。</p><p>  采用OOP編程,將每一部分封裝成一個類,每個類滿足了強內(nèi)聚、松耦合原則。具體的類的定義和聲明請查看代碼。&

11、lt;/p><p>  在結(jié)構(gòu)設(shè)計圖中,學(xué)校和項目的數(shù)量是可以任意的,雖然需求規(guī)定m<=20,n<=20。如果直接定義數(shù)組(對象數(shù)組或者結(jié)構(gòu)數(shù)組)大小為20,可能存在資源浪費的情況。為此,我采用了c++自帶的通用模板(也即泛型)vector<>結(jié)構(gòu)。對于SportEvents類來說,它包含了vector<Event>類型的數(shù)據(jù)成員;在SportsMeeting類中,包含了vecto

12、r<University>類型的數(shù)據(jù)成員。調(diào)用push_back() 函數(shù),就可以根據(jù)實際情況添加任意個學(xué)?;蛘唔椖俊?lt;/p><p>  此外,采用vector另一個好處,就在于排序,對應(yīng)功能要求的第5條。Vector背后運用的是迭代器,也就可以調(diào)用通用函數(shù)sort() 對vector進(jìn)行排序,只要設(shè)計相應(yīng)的排序規(guī)則即可,簡化了工作量。</p><p><b>  

13、程序?qū)崿F(xiàn)</b></p><p><b>  運行環(huán)境</b></p><p>  Win XP,VC++ 6.0。</p><p><b>  工程項目</b></p><p>  工程文件SportsMeeting,包括SportsMeeting.h,SportsMeeting.cp

14、p,Client.cpp。</p><p><b>  編譯原理圖</b></p><p><b>  類聲明</b></p><p>  對應(yīng)結(jié)構(gòu)設(shè)計圖中所設(shè)計的4個類,在SportsMeeting.h中聲明</p><p>  *************************** Event

15、類 ***************************</p><p>  class Event</p><p><b>  {</b></p><p><b>  public:</b></p><p><b>  Event();</b></p>&l

16、t;p>  void setEventInfo(const int & index, const string name); // 設(shè)置項目編號和名稱</p><p>  int getEventIndex() const; // 返回項目編號</p><p>  string getEventName() const; // 返回項目名稱</p><

17、;p>  int getEventScore() const; // 返回項目成績</p><p>  void setEventScore(const int & score); // 設(shè)置項目成績</p><p><b>  private:</b></p><p>  int eventIndex; // 項目編號&l

18、t;/p><p>  string eventName; // 項目名稱</p><p>  int eventScore; // 項目成績</p><p><b>  };</b></p><p>  *************************** SportEvents類 ***************

19、************</p><p>  class SportEvents</p><p><b>  {</b></p><p><b>  public:</b></p><p>  SportEvents();</p><p>  void setSportEve

20、ntsInfo(); // 設(shè)置運動會項目信息</p><p>  void displaySportEventsInfo() const; // 返回所有比賽項目信息和目前成績</p><p>  void initializeSportEvents(); // 初始化比賽信息</p><p>  vector<Event> & getMySp

21、ortEvents(); </p><p><b>  private:</b></p><p>  vector<Event> mySportEvents;</p><p><b>  };</b></p><p>  *************************** Univ

22、ersity類 ***************************</p><p>  class University</p><p><b>  {</b></p><p><b>  public:</b></p><p>  University();</p><p

23、>  void initializeUinversity(); // 初始化</p><p>  void setUniversityInfo(const int & index, const string name); // 設(shè)置學(xué)校信息</p><p>  void getUniversityInfo() const; // 返回學(xué)校信息</p><p

24、>  int getUniversityIndex() const; // 返回學(xué)校編號</p><p>  string getUniversityName() const; // 返回學(xué)校名稱</p><p>  void getUniversitySportsInfo() const; // 返回學(xué)校所有參賽項目信息</p><p>  int getT

25、otalScore(); // 返回學(xué)校總成績</p><p>  int getMTScore(); // 返回男團(tuán)總分</p><p>  int getWTScore(); // 返回女團(tuán)總分</p><p>  SportEvents & getUniSportEvents();</p><p><b>  priv

26、ate:</b></p><p>  int uIndex; // 學(xué)校編號</p><p>  string uName; // 學(xué)校名稱</p><p>  int totalScore; // 學(xué)校總成績</p><p>  int mTeamScore; // 男團(tuán)總分</p><p>  i

27、nt wTeamScore; // 女團(tuán)總分</p><p>  SportEvents uSportEvents; // Sports 對象</p><p><b>  };</b></p><p>  *************************** SportsMeeting類 *************************

28、**</p><p>  class SportsMeeting</p><p><b>  {</b></p><p><b>  public:</b></p><p>  SportsMeeting();</p><p>  void initializeSportsM

29、eeting(); // 初始化運動會</p><p>  void displayUniversity() const; // 顯示所有參賽學(xué)校信息</p><p>  void displaySportEvents() const; // 顯示所有比賽項目信息</p><p>  void displaySingleUniversity(); // 顯示指定學(xué)校

30、所有成績信息和總分</p><p>  void displayPointsRules() const; // 顯示積分排名規(guī)則</p><p>  void importEventScore(); // 導(dǎo)入某個項目的成績</p><p>  void countTotalScore(); // 統(tǒng)計各學(xué)??偡?lt;/p><p>  void

31、 sortByTotalScore(); // 按學(xué)??偡峙判?lt;/p><p>  void sortByMTScore(); // 按男團(tuán)總分排序</p><p>  void sortByWTScore(); // 按女團(tuán)總分排序</p><p>  void inquireByUIandEI(); // 按學(xué)校編號查詢某個項目成績</p><

32、;p>  void inquireByEIandTop(); // 按項目編號查詢Top(n)學(xué)校</p><p><b>  private:</b></p><p>  vector< University > myUniversity;</p><p>  bool flag; // 標(biāo)記是否導(dǎo)入過成績</p>

33、;<p><b>  };</b></p><p><b>  程序代碼</b></p><p><b>  請見附錄</b></p><p><b>  測試數(shù)據(jù):</b></p><p><b>  實驗結(jié)果</b>

34、</p><p><b>  程序界面</b></p><p>  展示參賽學(xué)校信息(selection=1)</p><p>  展示所有比賽項目信息(selection=2)</p><p>  展示排名積分規(guī)則(selection=3)</p><p>  調(diào)用系統(tǒng)API,打開一個txt文件

35、。</p><p>  輸入比賽項目成績(selection=4)</p><p>  首先給出項目編號,然后給出對應(yīng)的成績表,即txt文件,系統(tǒng)導(dǎo)入成績。</p><p>  輸入3組數(shù)據(jù):男子100(M100),女子100(W100),男子跳遠(yuǎn)(MLJ)。</p><p>  統(tǒng)計每個學(xué)校的總分(selection=5)</p>

36、;<p>  此功能也對應(yīng)按學(xué)校編號排序輸出</p><p>  查詢學(xué)校的項目成績單和總分(selection=6)</p><p>  如果想具體了解某個學(xué)校的所有比賽成績情況,可以選擇此功能。</p><p>  按照學(xué)??偡峙判蜉敵觯╯election=7)</p><p>  按照男子團(tuán)體總分排序(selection=

37、8)</p><p>  目前只輸入2個男子項目:男子100,男子跳遠(yuǎn)。</p><p>  按照女子團(tuán)體總分排序(selection=9)</p><p>  只輸入1個女子項目:女子100。</p><p>  查詢某個學(xué)校的某項成績(selection=10)</p><p>  查詢某個項目的前3或前5名成績(

38、selection=11)</p><p><b>  總結(jié)與展望</b></p><p>  隨著對OOP的深入理解,以及設(shè)計模式的學(xué)習(xí),希望盡快寫出Version2。</p><p><b>  附錄:程序代碼</b></p><p>  請前往 “新浪愛問·共享資料”網(wǎng)站</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

提交評論