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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  VC++課程設(shè)計(jì)報(bào)告</p><p><b>  目 錄</b></p><p>  1.1 程序功能簡(jiǎn)介</p><p>  一個(gè)簡(jiǎn)單的紙牌對(duì)抗游戲,根據(jù)隨機(jī)產(chǎn)生的數(shù)字決定雙方的輸贏。</p><p>  1.2 課程設(shè)計(jì)要求</p><p> ?。?)當(dāng)雙方進(jìn)行對(duì)抗時(shí),

2、游戲者可根據(jù)自身的牌點(diǎn)決定是否繼續(xù)下注,例如拿到A,把握增大,則在計(jì)算機(jī)的牌點(diǎn)出來(lái)之前加大賭注,但不超過(guò)5點(diǎn);</p><p> ?。?)將雙方牌點(diǎn)的比較擴(kuò)大為兩張牌點(diǎn)之和,若出現(xiàn)一組對(duì)子,則對(duì)子牌點(diǎn)大于任何單牌,若雙方均為對(duì)子,則比較牌點(diǎn)之和。</p><p>  2.1 程序具體實(shí)現(xiàn)原理</p><p><b>  總體方案</b><

3、/p><p>  增加變量plyrAddBet,compAddBet用來(lái)存儲(chǔ)玩家和計(jì)算機(jī)加注的值,值并判斷值的大小是否符合要求,若玩家不加注則plyrAddBet,compAddBet賦值為0,并對(duì)原成員函數(shù)Increase(),Decrease()做一定修改。分別定義變量plyr1,plyr2 ,comp1,comp2用來(lái)儲(chǔ)存玩家和計(jì)算機(jī)的兩張牌點(diǎn),而且定義成員函數(shù)Player1(),Player2(),Compu

4、ter1(),Computer2()用來(lái)返回玩家和計(jì)算機(jī)的牌點(diǎn),再定義成員函數(shù)Initialize1() ,Initialize2()隨機(jī)產(chǎn)生玩家牌點(diǎn)plyr1,plyr2 和計(jì)算機(jī)的牌點(diǎn)comp1,comp2,再對(duì)主函數(shù)中的比較語(yǔ)句做出修改。</p><p><b>  基本原理</b></p><p>  主函數(shù)中首先定義了War類的對(duì)象Play,然后分別調(diào)用In

5、itialize1() ,Initialize2()隨機(jī)產(chǎn)生玩家牌點(diǎn)plyr1,plyr2 和計(jì)算機(jī)的牌點(diǎn)comp1,comp2,調(diào)用函數(shù)Loops()計(jì)算出牌的次數(shù),依次輸出玩家的兩張牌plyr1,plyr2,詢問(wèn)玩家是否繼續(xù)加注,若繼續(xù)加注就將值賦給plyrAddBett,若不繼續(xù)加注則plyrAddBet賦值為0,然后再依次輸出計(jì)算機(jī)的牌點(diǎn)comp1,comp2,由計(jì)算機(jī)自動(dòng)判斷是否加注,若加注則compAddBet賦值為3,若不

6、加注則compAddBet賦值為0。再根據(jù)要求比較玩家和計(jì)算機(jī)的牌點(diǎn)大小,調(diào)用Increase()或Decrease(),再調(diào)用CheckScore()返回玩家的分?jǐn)?shù),最后用if語(yǔ)句判斷游戲是否繼續(xù)進(jìn)行。</p><p>  程序各個(gè)功能說(shuō)明以及課程設(shè)計(jì)要求的實(shí)現(xiàn)</p><p><b>  程序結(jié)構(gòu)</b></p><p>  #includ

7、e <iostream.h></p><p>  #include <stdlib.h></p><p>  #include <time.h></p><p>  #define MAX 13//牌的最大點(diǎn)為13</p><p><b>  class War</b></p&

8、gt;<p><b>  {</b></p><p>  int plyr1,plyr2 ,comp1,comp2;//plyr玩者的牌點(diǎn), comp計(jì)算機(jī)的牌點(diǎn)</p><p>  static int Score;//玩者的分?jǐn)?shù),當(dāng)分?jǐn)?shù)為0或50時(shí)游戲結(jié)束</p><p>  static int Loop;//出牌次數(shù),游戲

9、結(jié)束時(shí)給出總的出牌次數(shù)</p><p><b>  public:</b></p><p>  static int plyrAddBet,compAddBet;//plyrAddBet,compAddBet分別為玩家和計(jì)算機(jī)的加大賭注</p><p>  int Player1(),Player2();//返回玩者的牌點(diǎn)</p>

10、<p>  int Computer1(), Computer2();//返回計(jì)算機(jī)的牌點(diǎn)</p><p>  void Initialize1(),Initialize2();//給出玩者和計(jì)算機(jī)的牌點(diǎn)</p><p>  int CheckScore();//返回玩者分?jǐn)?shù)</p><p>  void GameOver();</p>&

11、lt;p>  War();//缺省構(gòu)造函數(shù),初始化對(duì)象</p><p>  static int Increase();//分?jǐn)?shù)增加</p><p>  static int Decrease();//分?jǐn)?shù)減少</p><p>  static int Loops();//出牌次數(shù)增加</p><p><b>  };<

12、/b></p><p>  int War::Score = 26; //初始分?jǐn)?shù)</p><p>  int War::Loop = 0;//比賽輪數(shù)</p><p>  int War::Increase()//增分,每輪贏一分加大的賭注</p><p><b>  {</b></p><p

13、>  Score=++Score+plyrAddBet+compAddBet;</p><p>  return Score;</p><p><b>  }</b></p><p>  int War::Decrease()//減分,每輪輸一分加大的賭注</p><p><b>  {</b>

14、;</p><p>  Score=--Score-plyrAddBet+compAddBet;</p><p>  return Score;</p><p><b>  }</b></p><p>  int War::Loops()//雙方出牌一次,為一輪</p><p><b>

15、  {</b></p><p><b>  Loop++;</b></p><p>  return Loop;</p><p><b>  }</b></p><p>  War::War()//構(gòu)造函數(shù),初始雙方牌點(diǎn)為0</p><p><b>  

16、{</b></p><p>  plyr1,plyr2, comp1,comp2 = 0;</p><p><b>  }</b></p><p>  int War::Player1()//返回玩者牌點(diǎn)</p><p><b>  {</b></p><p>

17、  return plyr1;</p><p><b>  }</b></p><p>  int War::Player2()//返回玩者牌點(diǎn)</p><p><b>  {</b></p><p>  return plyr2;</p><p><b>  }&

18、lt;/b></p><p>  int War::Computer1()//返回計(jì)算機(jī)的牌點(diǎn)</p><p><b>  {</b></p><p>  return comp1;</p><p><b>  }</b></p><p>  int War::Comp

19、uter2()//返回計(jì)算機(jī)的牌點(diǎn)</p><p><b>  {</b></p><p>  return comp2;</p><p><b>  }</b></p><p>  void War::Initialize1()//隨機(jī)產(chǎn)生玩家牌點(diǎn)</p><p><

20、b>  {</b></p><p>  //srand ( time (NULL) );</p><p>  plyr1 = rand()%MAX+2;//牌點(diǎn)為2-14,14點(diǎn)為A</p><p>  plyr2 = rand()%MAX+2;//牌點(diǎn)為2-14,14點(diǎn)為A</p><p><b>  }<

21、/b></p><p>  void War::Initialize2()//隨機(jī)產(chǎn)生計(jì)算機(jī)牌點(diǎn)</p><p>  { //srand ( time (NULL) );</p><p>  comp1 = rand()%MAX+2;</p><p>  comp2 = rand()%MAX+2;</p><p&

22、gt;<b>  }</b></p><p>  int War::CheckScore()//返回玩者分?jǐn)?shù)</p><p><b>  {</b></p><p>  return Score;</p><p><b>  }</b></p><p>

23、  void War::GameOver()//游戲結(jié)束時(shí)的相關(guān)信息</p><p><b>  {</b></p><p>  cout << endl << "游戲結(jié)束! 謝謝參與." << endl;</p><p>  cout << "你用了 "

24、<< War::Loops() << " 輪." << endl;</p><p><b>  }</b></p><p>  int War::plyrAddBet;</p><p>  int War::compAddBet;</p><p>  void ma

25、in()</p><p><b>  {</b></p><p><b>  War Play;</b></p><p><b>  int x;</b></p><p>  cout << endl << "準(zhǔn)備開(kāi)始!" <&

26、lt; endl << endl;</p><p>  Play.Initialize1();//隨機(jī)產(chǎn)生玩家牌點(diǎn)</p><p>  Play.Initialize2();</p><p>  Play.Loops();//輪次增加</p><p>  cout << "你的牌是一張";</

27、p><p>  if(Play.Player1() == 11)</p><p>  cout << "J" << endl;</p><p>  else if(Play.Player1() == 12)</p><p>  cout << "Q" << e

28、ndl;</p><p>  else if (Play.Player1() == 13)</p><p>  cout << "K" << endl;</p><p>  else if (Play.Player1() == 14)</p><p>  cout << "A&

29、quot; << endl;</p><p><b>  else</b></p><p>  cout << Play.Player1() << endl;</p><p>  cout << "和一張";</p><p>  if(Play.Play

30、er2() == 11)</p><p>  cout << "J" << endl;</p><p>  else if(Play.Player2() == 12)</p><p>  cout << "Q" << endl;</p><p>  els

31、e if (Play.Player2() == 13)</p><p>  cout << "K" << endl;</p><p>  else if (Play.Player2() == 14)</p><p>  cout << "A" << endl;</p>

32、<p><b>  else</b></p><p>  cout << Play.Player2() << endl;</p><p>  cout<<"是否繼續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0"<<endl;</p><p>  cin>>

33、Play.plyrAddBet;</p><p>  if(Play.plyrAddBet>5||Play.plyrAddBet<0){</p><p>  cout<<"加注錯(cuò)誤,重新加注"<<endl;</p><p>  cout<<"是否繼續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0

34、"<<endl;</p><p>  cin>>Play.plyrAddBet;</p><p><b>  }</b></p><p>  cout << "計(jì)算機(jī)有一張";</p><p>  if(Play.Computer1() == 11)<

35、;/p><p>  cout << "J" << endl;</p><p>  else if(Play.Computer1() == 12)</p><p>  cout << "Q" << endl; </p><p>  else if (Play.

36、Computer1() == 13)</p><p>  cout << "K" << endl;</p><p>  else if (Play.Computer1() == 14)</p><p>  cout << "A" << endl;</p><p

37、><b>  else</b></p><p>  cout << Play.Computer1() << endl;</p><p>  cout<<"和一張";</p><p>  if(Play.Computer2() == 11)</p><p>  

38、cout << "J" << endl;</p><p>  else if(Play.Computer2() == 12)</p><p>  cout << "Q" << endl; </p><p>  else if (Play.Computer2() == 13)&l

39、t;/p><p>  cout << "K" << endl;</p><p>  else if (Play.Computer2() == 14)</p><p>  cout << "A" << endl;</p><p><b>  else&

40、lt;/b></p><p>  cout << Play.Computer2() << endl;</p><p>  if (Play.Player1()==Play.Player2()&&Play.Computer1()!=Play.Computer2()) //比較玩家與計(jì)算機(jī)的輸贏</p><p>  cout

41、<<"你贏了";</p><p>  Play.Increase();</p><p>  if (Play.Player1()==Play.Player2()&&Play.Computer1()==Play.Computer2())</p><p>  {if (Play.Player1()>Play.Com

42、puter1())</p><p>  cout<<"你贏了";</p><p>  Play.Increase();</p><p>  if( Play.Player1()<Play.Computer1())</p><p>  cout<<"你輸了";</p&g

43、t;<p>  Play.Decrease(); </p><p>  cout << "勢(shì)均力敵!" << endl;</p><p><b>  }</b></p><p>  if (Play.Player1()!=Play.Player2()&&Play.Comp

44、uter1()!=Play.Computer2())</p><p>  {if (Play.Player1()+Play.Player2()>Play.Computer1()+Play.Computer2() )</p><p>  cout<<"你贏了";</p><p>  Play.Increase();</p&g

45、t;<p>  if (Play.Player1()+Play.Player2()<Play.Computer1()+Play.Computer2() )</p><p>  cout<<"你輸了";</p><p>  Play.Decrease(); </p><p>  cout << "

46、;勢(shì)均力敵!" << endl;</p><p><b>  }</b></p><p>  Play.CheckScore();//返回分?jǐn)?shù)</p><p>  cout << endl << "你的分?jǐn)?shù)是: " << Play.CheckScore() <&

47、lt; endl;</p><p>  if(Play.CheckScore()<=0||Play.CheckScore()>=52)Play.GameOver(); </p><p>  else {cout << endl <<"繼續(xù) 1 [退出 0]" << endl;//選擇游戲是否繼續(xù)進(jìn)行</p>

48、<p><b>  cin >> x;</b></p><p>  if (x == 1)main();} //若是遞歸調(diào)用主函數(shù)</p><p><b>  }</b></p><p>  實(shí)現(xiàn)一:當(dāng)雙方進(jìn)行對(duì)抗時(shí),游戲者可根據(jù)自身的牌點(diǎn)決定是否繼續(xù)下注,例如拿到A,把握增大,則在計(jì)算機(jī)的牌點(diǎn)出來(lái)

49、之前加大賭注,但不超過(guò)5點(diǎn)。</p><p>  在類War中定義了一個(gè)變量AddBet,用來(lái)表示玩家加大的賭注。在成員函數(shù)Increase()和Decrease()中分別做出修改。具體如下:</p><p>  int War::Increase()//增分,每輪贏一分及加大的賭注</p><p><b>  {</b></p>

50、<p>  Score=++Score+AddBet+compAddBet;</p><p>  return Score;</p><p><b>  }</b></p><p>  int War::Decrease()//減分,每輪輸一分加大的賭注</p><p><b>  {</b&

51、gt;</p><p>  Score=--Score-AddBet-compAddBet;</p><p>  return Score;</p><p><b>  }</b></p><p>  在主函數(shù)中也加入了一段輸入語(yǔ)句:</p><p>  cout<<"是否繼

52、續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0"<<endl;</p><p>  cin>>Play. plyrAddBet;</p><p>  if(Play. plyrAddBet>5||Play. plyrAddBet<0){</p><p>  cout<<"加注錯(cuò)誤,重新加注"&

53、lt;<endl;</p><p>  cout<<"是否繼續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0"<<endl;</p><p>  cin>>Play. plyrAddBet;</p><p><b>  }</b></p><p>  實(shí)現(xiàn)二:將雙方

54、牌點(diǎn)的比較擴(kuò)大為兩張牌點(diǎn)之和,若出現(xiàn)一組對(duì)子,則對(duì)子牌點(diǎn)大于任何單牌,若雙方均為對(duì)子,則比較牌點(diǎn)之和。</p><p>  在類War中分別定義了函數(shù)Player1(),Player2()用來(lái)返回玩者的牌點(diǎn),Computer1(), Computer2()用來(lái)返回計(jì)算機(jī)的牌點(diǎn),Initialize1(),Initialize2()用來(lái)隨機(jī)產(chǎn)生玩者和計(jì)算機(jī)的牌點(diǎn)。在主函數(shù)中分別調(diào)用這些函數(shù),具體修改如下:<

55、/p><p>  Play.Initialize1();//隨機(jī)產(chǎn)生玩家牌點(diǎn)</p><p>  Play.Initialize2();</p><p>  Play.Loops();//輪次增加</p><p>  cout << "你的牌是一張";</p><p>  if(Play.P

56、layer1() == 11)</p><p>  cout << "J" << endl;</p><p>  else if(Play.Player1() == 12)</p><p>  cout << "Q" << endl;</p><p>  

57、else if (Play.Player1() == 13)</p><p>  cout << "K" << endl;</p><p>  else if (Play.Player1() == 14)</p><p>  cout << "A" << endl;</p&

58、gt;<p><b>  else</b></p><p>  cout << Play.Player1() << endl;</p><p>  cout << "和一張";</p><p>  if(Play.Player2() == 11)</p><

59、;p>  cout << "J" << endl;</p><p>  else if(Play.Player2() == 12)</p><p>  cout << "Q" << endl;</p><p>  else if (Play.Player2() == 13)

60、</p><p>  cout << "K" << endl;</p><p>  else if (Play.Player2() == 14)</p><p>  cout << "A" << endl;</p><p><b>  else&

61、lt;/b></p><p>  cout << Play.Player2() << endl;</p><p>  cout<<"是否繼續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0"<<endl;</p><p>  cin>>Play.plyrAddBet;</p>

62、<p>  if(Play.plyrAddBet>5||Play.plyrAddBet<0){</p><p>  cout<<"加注錯(cuò)誤,重新加注"<<endl;</p><p>  cout<<"是否繼續(xù)加注?加注請(qǐng)輸入1到5,如不加注請(qǐng)輸入0"<<endl;</p&g

63、t;<p>  cin>>Play.plyrAddBet;</p><p><b>  }</b></p><p>  cout << "計(jì)算機(jī)有一張";</p><p>  if(Play.Computer1() == 11)</p><p>  cout &l

64、t;< "J" << endl;</p><p>  else if(Play.Computer1() == 12)</p><p>  cout << "Q" << endl; </p><p>  else if (Play.Computer1() == 13)</p>

65、;<p>  cout << "K" << endl;</p><p>  else if (Play.Computer1() == 14)</p><p>  cout << "A" << endl;</p><p><b>  else</b&g

66、t;</p><p>  cout << Play.Computer1() << endl;</p><p>  cout<<"和一張";</p><p>  if(Play.Computer2() == 11)</p><p>  cout << "J"

67、 << endl;</p><p>  else if(Play.Computer2() == 12)</p><p>  cout << "Q" << endl; </p><p>  else if (Play.Computer2() == 13)</p><p>  cout &

68、lt;< "K" << endl;</p><p>  else if (Play.Computer2() == 14)</p><p>  cout << "A" << endl;</p><p><b>  else</b></p><p&

69、gt;  cout << Play.Computer2() << endl;</p><p>  if (Play.Player1()==Play.Player2()&&Play.Computer1()!=Play.Computer2()) //比較玩家與計(jì)算機(jī)的輸贏</p><p>  cout<<"你贏了";<

70、;/p><p>  Play.Increase();</p><p>  if (Play.Player1()==Play.Player2()&&Play.Computer1()==Play.Computer2())</p><p>  {if (Play.Player1()>Play.Computer1())</p><p&

71、gt;  cout<<"你贏了";</p><p>  Play.Increase();</p><p>  if( Play.Player1()<Play.Computer1())</p><p>  cout<<"你輸了";</p><p>  Play.Decreas

72、e(); </p><p>  cout << "勢(shì)均力敵!" << endl;</p><p><b>  }</b></p><p>  if (Play.Player1()!=Play.Player2()&&Play.Computer1()!=Play.Computer2())&

73、lt;/p><p>  {if (Play.Player1()+Play.Player2()>Play.Computer1()+Play.Computer2() )</p><p>  cout<<"你贏了";</p><p>  Play.Increase();</p><p>  if (Play.Pla

74、yer1()+Play.Player2()<Play.Computer1()+Play.Computer2() )</p><p>  cout<<"你輸了";</p><p>  Play.Decrease(); </p><p>  cout << "勢(shì)均力敵!" << endl;

75、</p><p><b>  3 調(diào)試報(bào)告</b></p><p><b>  4 總體小結(jié)</b></p><p>  將所學(xué)的c++知識(shí)第一次進(jìn)行系統(tǒng)大量的運(yùn)用,對(duì)于c++知識(shí)有了進(jìn)一步的掌握和理解。而在實(shí)驗(yàn)過(guò)程中,不斷遇到問(wèn)題,但又解決問(wèn)題,一次次的不斷嘗試,不斷調(diào)節(jié),使解決問(wèn)題的能力有了提高。并對(duì)程序的編寫(xiě)有了一定

76、的了解,對(duì)將來(lái)的學(xué)習(xí)方向有了進(jìn)一步的認(rèn)識(shí)。</p><p><b>  2:工資管理</b></p><p><b>  1.1程序功能簡(jiǎn)介</b></p><p>  這是一個(gè)員工工資管理程序。工資管理的數(shù)據(jù)文件中儲(chǔ)存有員工姓名和工資,該程序可以錄入,顯示,修改,刪除,查找員工姓名和工資。</p><

77、p><b>  課程設(shè)計(jì)要求</b></p><p>  用類的形式改寫(xiě)程序,將程序中工資數(shù)據(jù)用鏈表的形式存放,定義一個(gè)鏈表類,封裝主要的操作函數(shù)。</p><p>  顯示,修改,刪除數(shù)據(jù)項(xiàng)時(shí)大小寫(xiě)通用。</p><p>  工資數(shù)據(jù)按工資值的大小進(jìn)行排序存放。</p><p>  修改,刪除數(shù)據(jù)前增加提示信息,

78、用戶確認(rèn)后才能進(jìn)一步操作,否則操作被取消。</p><p>  增加程序的文件輸入輸出功能,在執(zhí)行程序中首先將工資數(shù)據(jù)從文件中。</p><p>  2.1程序具體實(shí)現(xiàn)原理</p><p><b>  總體方案</b></p><p><b>  1、數(shù)簡(jiǎn)易流程圖:</b></p>&

79、lt;p>  1、調(diào)用函數(shù)AddRecord()</p><p>  2、調(diào)用函數(shù)ShowRecord()</p><p>  3、調(diào)用函數(shù)LookUpRecord()</p><p>  開(kāi)始 輸入選擇項(xiàng) 判斷 4、調(diào)用函數(shù)DeleteRecord()</p><p>  5、調(diào)用函數(shù)EditRecord()<

80、;/p><p>  6、調(diào)用函數(shù)SaveToFile()</p><p><b>  7、退出程序</b></p><p>  2、義多個(gè)類使程序看起來(lái)更有理,更容易明白。</p><p>  一個(gè)數(shù)據(jù)類,把程序基本用得上的數(shù)據(jù)全在在各類中定義。</p><p>  一個(gè)結(jié)點(diǎn)類,定義結(jié)點(diǎn)指針函數(shù)。&l

81、t;/p><p>  一個(gè)鏈表類,定義所有鏈表指針函數(shù)和相關(guān)操作函數(shù)。</p><p>  一個(gè)自定義類,封裝主函數(shù)主要操作函數(shù)。</p><p>  3、使用文件輸入輸出流來(lái)實(shí)現(xiàn)最終的程序的文件輸入輸出功能。</p><p>  2.2 程序各個(gè)功能說(shuō)明以及課程設(shè)計(jì)要求的實(shí)現(xiàn)</p><p><b>  程序結(jié)

82、構(gòu)</b></p><p><b>  數(shù)據(jù)類:</b></p><p>  class CSalary//數(shù)據(jù)類</p><p><b>  {</b></p><p><b>  private:</b></p><p>  char

83、szName[20];//姓名</p><p>  double dlSalary;//工資</p><p><b>  public:</b></p><p>  CSalary() {strcpy(szName,"\0");dlSalary=0.0;}//構(gòu)造函數(shù),初始化數(shù)據(jù)</p><p>  

84、CSalary(char *name,double salary) {strcpy(szName,name);dlSalary=salary;}//重載構(gòu)造函數(shù)</p><p>  void SetSalary(char *,double);//置姓名與工資</p><p>  char* GetName() {return szName;}//返回姓名</p><

85、p>  double GetSal() {return dlSalary;}//返回工資</p><p>  int Compare(CSalary &);//比較姓名,供查找用,比較結(jié)果為1,0</p><p>  void Show();//打印</p><p>  void EditData();//編輯數(shù)據(jù)</p><p&

86、gt;<b>  }</b></p><p><b>  結(jié)點(diǎn)類:</b></p><p>  class CNode//結(jié)點(diǎn)類的定義</p><p><b>  {</b></p><p><b>  private:</b></p>&

87、lt;p>  CSalary *pData;//指向數(shù)據(jù)的指針</p><p>  CNode *pNext;//指向下一個(gè)結(jié)點(diǎn)的指針</p><p><b>  public:</b></p><p>  CNode() {pData=0;pNext=0;}//構(gòu)造函數(shù)</p><p>  CNode(CNo

88、de &node);//重載構(gòu)造函數(shù)</p><p>  void InputData(CSalary *pSal);//輸入數(shù)據(jù)</p><p>  void ShowNode() {pData->Show();}//數(shù)據(jù)的輸出</p><p>  CSalary *GetData() {return pData;}//數(shù)據(jù)的得到</p&g

89、t;<p>  friend class CList;//把鏈表類設(shè)為友元類</p><p><b>  };</b></p><p>  CNode::CNode(CNode &node)//重載構(gòu)造函數(shù)</p><p><b>  {</b></p><p>  pData

90、=node.pData;</p><p>  pNext=node.pNext;</p><p><b>  }</b></p><p>  void CNode::InputData(CSalary *pSal)//輸入數(shù)據(jù)</p><p><b>  {</b></p><p

91、>  pData=pSal;</p><p><b>  pNext=0;</b></p><p><b>  }</b></p><p><b>  鏈表類:</b></p><p>  class CList//鏈表類</p><p><

92、b>  {</b></p><p>  protected:</p><p>  CNode *pHead;//鏈表頭指針</p><p><b>  public:</b></p><p>  CList() {pHead=0;}//構(gòu)造函數(shù)</p><p>  ~CList

93、() {DeleteList();}//析構(gòu)函數(shù)</p><p>  void AddNode(CNode *pnode);//在首部添加結(jié)點(diǎn)</p><p>  void DeleteNode(CNode *);//刪除一個(gè)指定的結(jié)點(diǎn),返回該節(jié)點(diǎn)的指針</p><p>  CNode *LookUp(CSalary&);//查找姓名</p>

94、<p>  void ShowList();//打印整個(gè)鏈表</p><p>  void DeleteList();//刪除整個(gè)鏈表</p><p>  CNode *GetpHead();///返回鏈表頭指針</p><p>  CNode *GetNextNode(CNode *);//返回鏈表指定結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),</p><

95、p>  void Insert(CNode *);//按工資順序插入一個(gè)節(jié)點(diǎn)</p><p>  CNode *GetLastNode();//返回鏈表尾節(jié)點(diǎn)</p><p><b>  };</b></p><p><b>  封裝類:</b></p><p>  class CRecord

96、//定義一個(gè)類,此類封裝所有在主函數(shù)內(nèi)調(diào)用的函數(shù)</p><p><b>  {</b></p><p>  CList list;</p><p><b>  public:</b></p><p>  void ReadFromFile();//讀取文件</p><p>

97、  void SaveToFile();//保存記錄到文件里</p><p>  void AddRecord();//添加記錄</p><p>  void ShowRecord();//顯示記錄</p><p>  void LookUpRecord();//根據(jù)姓名查詢</p><p>  void EditRecord();//根據(jù)姓

98、名編輯</p><p>  void DeleteRecord();//根據(jù)姓名刪除</p><p>  void change(char*);//大小寫(xiě)轉(zhuǎn)換</p><p><b>  };</b></p><p><b>  主函數(shù):</b></p><p>  void

99、 main()</p><p><b>  {</b></p><p>  CRecord Record;</p><p>  Record.ReadFromFile();</p><p>  cout<<"* * * * * * * * * * 工資管理系統(tǒng) * * * * * * * * * *

100、\n";</p><p>  cout<<"主菜單:"<<endl;</p><p>  cout<<"1.添加工資記錄"<<endl;</p><p>  cout<<"2.顯示工資記錄"<<endl;</p>

101、<p>  cout<<"3.根據(jù)姓名查詢工資數(shù)據(jù)"<<endl;</p><p>  cout<<"4.根據(jù)姓名刪除工資數(shù)據(jù)"<<endl;</p><p>  cout<<"5.根據(jù)姓名修改工資數(shù)據(jù)"<<endl;</p><

102、;p>  cout<<"6.存儲(chǔ)文件"<<endl;</p><p>  cout<<"0.退出系統(tǒng)"<<endl;</p><p>  cout<<"* * * * * * * * * * * * * * * * * * * * * * *\n";</p&g

103、t;<p><b>  while(1)</b></p><p><b>  {</b></p><p>  cout<<"請(qǐng)選擇要進(jìn)行操作的代號(hào):"<<endl;</p><p><b>  char num;</b></p>

104、<p><b>  cin>>num;</b></p><p>  switch(num)</p><p><b>  {</b></p><p>  case '1':Record.AddRecord();break;//添加工資記錄</p><p>  ca

105、se '2':Record.ShowRecord();break;//顯示工資記錄</p><p>  case '3':Record.LookUpRecord();break;//根據(jù)姓名查詢工資數(shù)據(jù)</p><p>  case '4':Record.DeleteRecord();break;//根據(jù)姓名刪除工資數(shù)據(jù)</p>

106、<p>  case '5':Record.EditRecord();break;//根據(jù)姓名修改工資數(shù)據(jù)</p><p>  case '6':Record.SaveToFile();break;//存儲(chǔ)文件</p><p>  case '0':exit(-1);break;//退出系統(tǒng)</p><p&g

107、t;  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  實(shí)現(xiàn)</b></p><p>  改進(jìn)一:進(jìn)行了類的封裝,將主要的操作函數(shù)都封裝在了類中</p><p> 

108、 程序中,定義了三個(gè)類,數(shù)據(jù)類,結(jié)點(diǎn)類,鏈表類。還定義一個(gè)類,把主要操作函數(shù)包含其中。</p><p><b>  具體實(shí)現(xiàn):</b></p><p>  class CRecord//定義一個(gè)類,此類封裝所有在主函數(shù)內(nèi)調(diào)用的函數(shù)</p><p><b>  {</b></p><p>  CLis

109、t list;</p><p><b>  public:</b></p><p>  void ReadFromFile();//讀取文件</p><p>  void SaveToFile();//保存記錄到文件里</p><p>  void AddRecord();//添加記錄</p><p&

110、gt;  void ShowRecord();//顯示記錄</p><p>  void LookUpRecord();//根據(jù)姓名查詢</p><p>  void EditRecord();//根據(jù)姓名編輯</p><p>  void DeleteRecord();//根據(jù)姓名刪除</p><p>  void change(char*

111、);//大小寫(xiě)轉(zhuǎn)換</p><p><b>  };</b></p><p>  改進(jìn)二:要求顯示、修改、刪除數(shù)據(jù)時(shí)大小寫(xiě)通用</p><p>  只要修改大寫(xiě)字母就行,把大寫(xiě)轉(zhuǎn)化成小寫(xiě)字母程序就能實(shí)現(xiàn)大小寫(xiě)通用了。</p><p><b>  具體實(shí)現(xiàn)</b></p><p&g

112、t;  void CRecord::change(char* name)//大小寫(xiě)轉(zhuǎn)換</p><p><b>  {</b></p><p><b>  int v=0;</b></p><p>  while(name[v]!='\0')</p><p><b>  {

113、</b></p><p>  if (name[v]>='A' && name[v]<='Z') name[v]+=32;</p><p><b>  v++;</b></p><p><b>  }</b></p><p>&

114、lt;b>  }</b></p><p>  改進(jìn)三:由于要求工資數(shù)據(jù)按工資值的大小進(jìn)行排序存放</p><p>  只要在將數(shù)據(jù)添加到文件中時(shí)保證是按工資的順序添加進(jìn)去的就行了。</p><p><b>  具體實(shí)現(xiàn):</b></p><p>  void CList::Insert(CNode *

115、pnode)//按照工資順序插入一個(gè)節(jié)點(diǎn)</p><p><b>  {</b></p><p>  CNode *p,*q;</p><p>  if(pHead==0)</p><p><b>  {</b></p><p>  pHead=pnode;</p>

116、;<p>  pHead->pNext=0;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(pHead->pData->GetSal()>pnode->pData->GetSal())</p>

117、;<p><b>  {</b></p><p>  pnode->pNext=pHead;</p><p>  pHead=pnode;</p><p><b>  return;</b></p><p><b>  }</b></p>&l

118、t;p><b>  p=pHead;</b></p><p>  while(p&&p->pData->GetSal()<pnode->pData->GetSal())</p><p><b>  {</b></p><p><b>  q=p;</b&g

119、t;</p><p>  p=p->pNext;</p><p><b>  }</b></p><p>  q->pNext=pnode;</p><p>  pnode->pNext=p;</p><p><b>  }</b></p>&

120、lt;p>  改進(jìn)四:修改、刪除數(shù)據(jù)前增加提示信息,用戶確認(rèn)后才能進(jìn)一步操作,否則操作取消。</p><p>  要實(shí)現(xiàn)確認(rèn)操作,真正刪除或者刪除前增加一個(gè)輸出輸入再一個(gè)判斷語(yǔ)句而已。</p><p><b>  具體實(shí)現(xiàn):</b></p><p><b>  do</b></p><p>&

121、lt;b>  {</b></p><p>  p->ShowNode();</p><p>  cout<<"修改?(Y/N)";//修改需要再次確認(rèn)</p><p>  cin>>edit;</p><p>  if(edit=='N'||edit==

122、9;n')break;</p><p><b>  else</b></p><p><b>  {</b></p><p>  p->GetData()->EditData();</p><p><b>  break;</b></p>&l

123、t;p><b>  }</b></p><p>  }while(edit!='Y'&&edit!='y'&&edit!='N'&&edit!='n');</p><p><b>  }</b></p><p&

124、gt;  改進(jìn)五:增加程序的文件輸入輸出功能,在執(zhí)行程序中首先將工資數(shù)據(jù)從文件中讀出再進(jìn)行管理,在程序結(jié)束時(shí)能將工資數(shù)據(jù)保存在原文件中。</p><p><b>  具體實(shí)現(xiàn):</b></p><p>  void CRecord::ReadFromFile()//讀取文件</p><p><b>  {</b></

125、p><p>  ifstream infile("data.txt");</p><p>  if(!infile)</p><p><b>  {</b></p><p>  cout<<"文件讀取失敗!"<<endl;</p><p>

126、;<b>  exit(1);</b></p><p><b>  }</b></p><p>  char name[20];</p><p>  double salary;</p><p>  while(infile>>name>>salary)//文件數(shù)據(jù)的讀取&l

127、t;/p><p><b>  {</b></p><p>  CSalary *psalary=new CSalary;//</p><p>  psalary->SetSalary(name,salary);//置姓名與工資</p><p>  CNode *pnode=new CNode;//</p>

128、<p>  pnode->InputData(psalary);//輸入數(shù)據(jù)</p><p>  list.AddNode(pnode);//把數(shù)據(jù)轉(zhuǎn)移到鏈表上</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CReco

129、rd::SaveToFile()//保存記錄到文件</p><p><b>  {</b></p><p>  ofstream outfile("data.txt");</p><p>  if(!outfile)</p><p><b>  {</b></p>

130、<p>  cout<<"文件寫(xiě)入失敗!"<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  char name[20];</p><p>  double salar

131、y;</p><p>  CNode *p=list.GetpHead();</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  strcpy(name,p->GetData()->GetName());</p>

132、<p>  salary=p->GetData()->GetSal();</p><p>  outfile<<name<<" "<<salary<<endl;//文件數(shù)據(jù)的輸入</p><p>  p=list.GetNextNode(p);//循環(huán)往復(fù),直到錄入所有的數(shù)據(jù)</p>

133、<p><b>  }</b></p><p><b>  }</b></p><p><b>  3調(diào)試報(bào)告</b></p><p>  以下面的表格形式記錄程序調(diào)試和測(cè)試過(guò)程。</p><p><b>  4.總體小結(jié)</b></p&g

134、t;<p>  沒(méi)編程序時(shí)感覺(jué)難度很大,無(wú)從下手。當(dāng)耐下心來(lái)從頭至尾將源代碼看了兩遍才對(duì)程序有個(gè)模糊的認(rèn)識(shí)。在修改程序時(shí),發(fā)現(xiàn)有許多不懂和淡忘的地方,回過(guò)頭來(lái)查找相關(guān)資料,把問(wèn)題一個(gè)個(gè)擊破。并且有些較難理解的語(yǔ)句在不斷修改的過(guò)程中可以逐漸清晰。課程設(shè)計(jì)可以充分發(fā)揮我的編程綜合能力,將自己的編程知識(shí)串聯(lián)起來(lái),綜合利用,自己的編程能力。很高興有這個(gè)機(jī)會(huì)促使我編程??傊谶@個(gè)程序設(shè)計(jì)中的收獲還是非常多的。</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論