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

下載本文檔

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

文檔簡介

1、<p><b>  C++課程設(shè)計報告</b></p><p>  設(shè)計題目: 參會人員信息管理程序 </p><p>  學(xué) 院: 資源與安全工程學(xué)院 </p><p><b>  專業(yè)班級: </b></p><p><b>  二零一一年六月<

2、;/b></p><p><b>  目 錄</b></p><p><b>  第1章 緒論</b></p><p>  第2章 設(shè)計目的和主要功能</p><p>  概要設(shè)計 </p><p><b>  3.

3、1 概要設(shè)計</b></p><p><b>  3.2 設(shè)計環(huán)境</b></p><p><b>  3.3 數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  3.4 模塊設(shè)計</b></p><p><b>  第4章 詳細設(shè)計</b>

4、;</p><p>  4.1主函數(shù)設(shè)計及問題</p><p>  4.2人員登錄設(shè)計及問題</p><p>  4.3信息修改和刪除設(shè)計及問題</p><p>  4.4統(tǒng)計同部門信息設(shè)計及問題</p><p><b>  第五章 運行程序</b></p><p&g

5、t;<b>  5.1完整源程序</b></p><p><b>  5.2調(diào)試截圖</b></p><p>  5.3不足和體會 </p><p>  參考文獻

6、 </p><p><b>  第1章 緒 論</b></p><p><b>  一、課程設(shè)計的背景</b></p><p>  目前,隨著計算機技術(shù)的飛速發(fā)展,為了適應(yīng)現(xiàn)

7、代化的環(huán)境,許多管理事務(wù)都由電腦來管理,從而提高了管理的速率,效率。查閱有關(guān)資料,進一步理解程序設(shè)計模塊化的思想,并利用此思想編 寫一個簡單的管理系統(tǒng)。通過課程設(shè)計,使學(xué)生進一步掌握C++語言基本知識和基本程序設(shè)計技巧,提高學(xué)生綜合編程能力與程序調(diào)試能力,以及運用計算機解決實際問題的能力。</p><p>  二、課程設(shè)計主要內(nèi)容及要求</p><p>  (1)登錄參會人員的下列信息:&

8、lt;/p><p>  ·姓名(name);</p><p><b>  ·性別(sex);</b></p><p><b>  ·年齡(age);</b></p><p>  ·單位(department)</p><p>  ·

9、;房間號(room-num)(設(shè)每個房間只住一人,房間號為101?!?20#,…..,501#—520#)。</p><p>  (2)主菜單應(yīng)至少包括以下幾個菜單項:</p><p>  人員登錄、顯示報到人員信息、查詢、統(tǒng)計、修改、刪除</p><p> ?。?)程序應(yīng)分別用幾個個函數(shù)實現(xiàn)以上功能:</p><p>  ·隨時對

10、報到人員進行登錄(login),來客登記的房間是根據(jù)客人要求分配的;如果客人申請的房間已有人登記了,可以讓客人重新申請;如果所有的房間都已經(jīng)住滿,則拒絕再進行人員登錄;</p><p>  ·隨時按所住房間號(由小到大)輸出(print)已報到人員信息;</p><p>  ·能夠根據(jù)姓名實現(xiàn)對人員信息的查詢;</p><p>  ·能

11、夠根據(jù)單位對與會人員進行分類統(tǒng)計,并輸出統(tǒng)計結(jié)果;</p><p>  ·能夠修改與會人員的信息;</p><p>  ·能夠刪除某個參會人員,并清空其所住房間;</p><p>  ·程序中的變量要使用題中給定的英文名詞。</p><p><b>  三.任務(wù)分工</b></p>

12、;<p>  本小組由李姣陽和蔡鑫兩位同學(xué)組成,由于本組成員每個人學(xué)習(xí)知識的側(cè)重點不盡相同,每人解決問題的思路也不一樣,我組成員經(jīng)過查閱大量相關(guān)資料和書籍,并吸取大量前人的經(jīng)驗,再經(jīng)過熱烈得討論,經(jīng)全組成員一致同意,分工明細如下:</p><p><b>  小組分工見表1.1</b></p><p><b>  表1.1</b>&

13、lt;/p><p>  第 2章 設(shè)計目的和主要功能 </p><p>  為了適應(yīng)現(xiàn)代化的環(huán)境,許多工科課程的研究和施工規(guī)劃都需要編出合適的程序去處理數(shù)據(jù)和優(yōu)化方案,因此學(xué)好一門計算機語言也就顯得尤為重要。C++是一種比較流行的編程語言,學(xué)好c++也就顯得很有必要了。通過課程設(shè)計,進一步理解程序設(shè)計模塊化的思想,并利用此思想編寫一個簡單的參會人員信息管理系統(tǒng)。這是一個為了解決相關(guān)統(tǒng)計人員

14、工作量的統(tǒng)計的問題而編寫的系統(tǒng),是專門用來解決生產(chǎn)工程中工作量和工作質(zhì)量的系統(tǒng),實用于管理者對會議過程的精確地統(tǒng)計管理。通過本設(shè)計可以加深理解利用程序設(shè)計思想開發(fā)一個系統(tǒng)的整個流程,提高分析問題、解決問題和實際動手的能力。</p><p>  參會人員信息管理系統(tǒng)的功能:</p><p>  錄入登錄信息:輸入?yún)藛T的基本信息,通過一個基本連接點,能夠記錄并保存參會人員的基本信息.<

15、;/p><p>  顯示功能:通過操作界面,可以輕松實現(xiàn)將保存的參會人員信息顯示出來。便于整體把握參會人員的信息。.能夠根據(jù)單位對與會人員進行分類統(tǒng)計,并輸出統(tǒng)計結(jié)果</p><p>  排序功能:通過一組相同的信息(房號),能夠通過該唯一信息為參會人員進行簡單的排序,使使用者能夠快速的查閱信息。也便于了解房間占用信息。</p><p>  查詢功能:登錄人員都需要錄入

16、相關(guān)方面的信息(如姓名)??梢暂斎胍樵兊娜说男彰缓缶涂梢院芸飓@取要查詢的人的相關(guān)信息。方便使用者對個人信息的搜尋。</p><p>  統(tǒng)計同部門人員信息:通過搜索篩選,可以將不同部門的人員信息按不同部門分類顯示出來。同時又可以通過輸入某個部門實現(xiàn)對單個部門信息的抽調(diào)。便于工作的開展和任務(wù)分工,提高時間效率。</p><p>  修改功能:通過該功能,對一些過時的參會人員信息進行修改

17、,是使用者能夠及時的了解參會人員的最新信息.</p><p>  刪除功能:隨時對一些未到會的參會人員信息,通過該功能進行刪除,并清空其所住房間。實現(xiàn)資源的高效利用。</p><p>  退出程序:當(dāng)用戶使用完以后,通過簡單的操作(輸入0),能夠快速的推出該系統(tǒng)。</p><p>  菜單功能:操作功能設(shè)計成分類的項目界面,該操作界面設(shè)置有包括人員登錄,顯示信息,按

18、房號排序,按姓名查詢,統(tǒng)計同部門人員信息,登錄信息修改,登錄信息刪除和退出。只要在提示的區(qū)域內(nèi)輸入相應(yīng)的操作的序號,就可以實現(xiàn)各個功能的錄入。操作簡潔方便。</p><p><b>  第三章 概要設(shè)計</b></p><p><b>  3.1 概要設(shè)計</b></p><p>  該系統(tǒng)可以根據(jù)不同的功能進行函數(shù)劃分,

19、劃分的函數(shù)模塊如圖3-1所示.</p><p><b>  3-1 </b></p><p><b>  3.2 設(shè)計環(huán)境</b></p><p>  本程序的函數(shù)編譯是在Visual C++6.0的編輯軟件下進行變異的.</p><p><b>  3.3 數(shù)據(jù)結(jié)構(gòu)</b>&

20、lt;/p><p>  本系統(tǒng)是對參會人員信息進行管理,由于對鏈表連接的只是薄弱,姑而采用結(jié)構(gòu)體數(shù)組儲存方式。定義如下:</p><p>  struct STAFF /*參會人員的數(shù)據(jù)結(jié)構(gòu)*/</p><p><b>  {</b></p><p>  char name[20]; /*姓名*/</p>

21、;<p>  char sex[7]; /*性別*/</p><p>  int age; /*年齡*/</p><p>  char department[30];/*單位*/</p><p>  char room_num[10]; /*房間號*/</p><p><b>  }

22、</b></p><p><b>  3.4 模塊設(shè)計</b></p><p>  根據(jù)不同的功能操作,設(shè)計了幾個模塊,如圖</p><p><b>  表3-1功能模塊表</b></p><p><b>  第四章 詳細設(shè)計</b></p><

23、p>  本次課設(shè)中,作為小組組長,在設(shè)計過程中我負責(zé)的是主函數(shù)、人員登錄、登錄信息修改和刪除、統(tǒng)計同部門人員信息。</p><p>  4.1主函數(shù)設(shè)計及問題</p><p><b>  /*主函數(shù)*/</b></p><p>  int main()</p><p><b>  {</b>&

24、lt;/p><p>  system("color 1c"); //背景和字體顏色設(shè)計</p><p>  int length=0;/*記錄登陸的人數(shù)*/</p><p>  STAFF staff[MAX]; /*定義結(jié)構(gòu)體數(shù)組*/</p><p><b>  int i=0;</b></p

25、><p>  ifstream infile("logInfo.txt",ios::in);</p><p>  if (!infile)</p><p><b>  {</b></p><p>  cerr<<"還沒錄入文件!!!!"<<endl;</p

26、><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  while (infile>>staff[i].name>>staff[i].sex>>staff[i].age>>staff[i].department >>

27、staff[i].room_num )//將文件信息逐一錄入內(nèi)存</p><p><b>  {</b></p><p><b>  i++;</b></p><p><b>  length++;</b></p><p><b>  }</b></

28、p><p>  infile.close();//關(guān)閉文件流</p><p>  int choice=-1;</p><p>  menu();//執(zhí)行菜單函數(shù)</p><p>  loop:cout<<"輸入你的選擇(0-7):";</p><p>  cin>>choic

29、e; /*由用戶選擇操作*/</p><p>  while(choice>=0&&choice<=7)</p><p><b>  {</b></p><p>  switch(choice)</p><p><b>  {</b></p><p&

30、gt;  case 1:length=login(staff,length);break;</p><p>  case 2:show_all(staff,length);break;</p><p>  case 3:sort(staff,length);break;</p><p>  case 4:searchByName(staff,length);brea

31、k;</p><p>  case 5:statistics(staff,length);break;</p><p>  case 6:edit(staff,length);break;</p><p>  case 7:length=Delete(staff,length);break;</p><p>  case 0:cout<

32、<"退出成功?。。。?quot;;</p><p>  exit(-1); /*退出*/</p><p><b>  }</b></p><p><b>  menu();</b></p><p>  cout<<"輸入你的選擇(0-7):";cin&

33、gt;>choice;</p><p><b>  }</b></p><p>  cout<<"不好意思,暫沒有此功能選擇?。。?!"<<endl;</p><p>  goto loop;//跳到前面loop繼續(xù)循環(huán)</p><p><b>  return

34、0;</b></p><p><b>  }</b></p><p><b>  4.1流程圖 </b></p><p><b>  、</b></p><p><b>  是</b></p><p>  主函數(shù)設(shè)計中遇

35、到的問題及解決方案:</p><p>  為了使程序具有保存功能,就必須設(shè)計文件流的操作。因為每個模塊都有文件的讀入,所以我便設(shè)想在主函數(shù)中先調(diào)入原來文件中的信息,這樣在以后的每個模塊中就不用每次都讀入信息了。在設(shè)置讀入文件流ifstream infile("logInfo.txt",ios::in);時,我遇到了問題。剛開始根本沒建立文件loginfo.txt。最后經(jīng)過反復(fù)看書以及和搭檔交流

36、發(fā)現(xiàn)文件默認路徑錯誤,所以根本無法建立文件。經(jīng)過路徑修改解決了這個問題。然后便是文件接收。開始我用字符串變量record去記錄發(fā)現(xiàn)下面函數(shù)無法和著聯(lián)系起來。經(jīng)過小組討論和翻看書最后嘗試用結(jié)構(gòu)體詞組staff[i]通過循環(huán)接收,經(jīng)過調(diào)試發(fā)現(xiàn)成功了。</p><p>  在優(yōu)化main函數(shù)是我添加了goto語句來增加程序的連貫性。</p><p>  4.2人員登錄設(shè)計及問題</p>

37、;<p>  /*登錄信息記錄保存函數(shù)*/</p><p>  int login(STAFF staff[],int length)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  if(length==50) /*房間已

38、滿,拒絕登陸*/</p><p><b>  {</b></p><p>  cout<<"沒有房間了,請自行聯(lián)系管理人員!";</p><p>  exit(-1); </p><p>  } /*end if*/</p><p><b>  else

39、</b></p><p><b>  {</b></p><p>  char room_num[10];</p><p>  cout<<"請輸入房間號(101~120、、、501~520):";</p><p>  cin>>room_num;</p>

40、;<p>  for(i=0;i<length;i++)</p><p><b>  { </b></p><p>  if(strcmp(room_num,staff[i].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b>  { </b></p><

41、;p>  cout<<"這個房間已經(jīng)有人了,請選擇其他房間!?。。。。?!"<<endl;</p><p>  cout<<"請輸入選擇的其他房間號:";/*讓參會人選擇別的空房間*/</p><p>  cin>>room_num;</p><p>  i=0;

42、/*為檢查新的房間作準備*/</p><p><b>  }</b></p><p>  } /*end for*/</p><p>  /* 錄入登陸信息*/ </p><p>  strcpy(staff[length].room_num,room_num);</p><p>  cout&

43、lt;<"輸入你的姓名:";</p><p>  cin>>staff[length].name;</p><p>  cout<<"你的性別(男士m,女士f):";</p><p>  cin>>staff[length].sex;</p><p>  cou

44、t<<"你的年齡:";</p><p>  cin>>staff[length].age;</p><p>  cout<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p>  cin>>staff[length].department;</p>

45、<p>  length++; /*參會人數(shù)加一*/</p><p>  /*保存信息到文件logInfo.txt中*/</p><p>  ofstream outfile("logInfo.txt",ios::app);</p><p>  if (!outfile)</p><p><b> 

46、 {</b></p><p>  cerr<<"open error1"<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  outfile<<setios

47、flags(ios::left)</p><p>  <<setw(17)</p><p>  <<staff[length-1].name //因為前面有l(wèi)ength++,所以這里要用length-1</p><p>  <<setw(17)</p><p>  <<staff[length-

48、1].sex</p><p>  <<setw(17)</p><p>  <<staff[length-1].age</p><p>  <<setw(17)</p><p>  <<staff[length-1].department</p><p>  <&l

49、t;setw(17)</p><p>  <<staff[length-1].room_num</p><p><b>  <<endl;</b></p><p>  outfile.close();</p><p>  } /*end else*/</p><p>  r

50、eturn length;</p><p>  }/*end login()*/</p><p>  人員登錄部分遇到的問題和解決方案:</p><p>  人員登錄是通過一個登錄及記錄函數(shù)實現(xiàn)的。當(dāng)然錄入每個參會人員信息這個比較簡單基本沒遇到大的問題。但當(dāng)做到保存錄入信息時,文件操作再次遇到問題。開始的問題是我錄入信息后再用顯示信息函數(shù)顯示信息時發(fā)現(xiàn)屏幕顯示的信息

51、是內(nèi)存中的隨機漢字“燙”。這樣程序進入一個死循環(huán),只能強制關(guān)掉。這個問題我們一直分析問什么,也不知一遍的翻看文件操作那部分的書籍內(nèi)容。最后在同學(xué)幫助以及自己分析下發(fā)現(xiàn)了問題。原來在信息錄入時記錄數(shù)length最后進行了length++。結(jié)果信息在staff[length]中而保存信息時錄入的是staff[length+1]中隨機信息。所以才產(chǎn)生了上述問題。最后把錄入位置改為staff[length-1]結(jié)果就可以顯示信息了。</p

52、><p>  4.3信息修改和刪除設(shè)計及問題</p><p>  /*編輯修改函數(shù)*/</p><p>  void edit(STAFF staff[],int length)</p><p><b>  {</b></p><p>  char room_num[10];</p>&

53、lt;p><b>  int i,k;</b></p><p>  string str;</p><p>  ofstream outfile("logInfo.txt",ios::out);//用一個空字符變量去清空原來文件里的數(shù)據(jù)</p><p>  if (!outfile)</p><p&

54、gt;<b>  {</b></p><p>  cerr<<"open error1"<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  outfile&

55、lt;<str;</p><p>  outfile.close();</p><p>  if(length!=0)</p><p><b>  {</b></p><p>  cout<<"輸入要修改員工的房間號:";</p><p>  cin>&

56、gt;room_num;</p><p>  for(i=0;i<length;i++)</p><p><b>  {</b></p><p>  if(strcmp(staff[i].room_num,room_num)==0)</p><p><b>  {</b></p>

57、<p>  cout<<"請選擇你要更換的房間號:";</p><p>  cin>>room_num;</p><p>  for(k=0;k<length;k++)</p><p><b>  { </b></p><p>  if(k==i) con

58、tinue; /*可以選擇原來的房間*/</p><p>  if(strcmp(room_num,staff[k].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b>  { </b></p><p>  cout<<"你選擇的房間已有人,請選擇其他房間"<<endl;

59、</p><p>  cout<<"請重新選擇你的房間號:";</p><p>  cin>>room_num;</p><p>  k=0; /*為檢驗新的房間是否為空作準備*/</p><p><b>  }</b></p><p><b>

60、;  } </b></p><p>  /*修改人員信息*/</p><p>  strcpy(staff[i].room_num,room_num);</p><p>  cout<<"你的姓名:";</p><p>  cin>>staff[i].name;</p>&

61、lt;p>  cout<<"你的性別(男士m,女士f):";</p><p>  cin>>staff[i].sex;</p><p>  cout<<"你的年齡:";</p><p>  cin>>staff[i].age;</p><p>  c

62、out<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p>  cin>>staff[i].department;</p><p>  cout<<"修改成功"<<endl;</p><p><b>  }</b></p>

63、<p><b>  }</b></p><p>  ofstream outfile("logInfo.txt",ios::app);//保存內(nèi)存信息到已清空文件logInfo.txt中</p><p>  if (!outfile)</p><p><b>  {</b></p>

64、;<p>  cerr<<"open error1"<<endl;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p>  for (i=0;i<length;i++)</p><p

65、>  outfile<<setiosflags(ios::left)</p><p>  <<setw(17)</p><p>  <<staff[i].name</p><p>  <<setw(17)</p><p>  <<staff[i].sex</p>

66、<p>  <<setw(17)</p><p>  <<staff[i].age</p><p>  <<setw(17)</p><p>  <<staff[i].department</p><p>  <<setw(17)</p><p> 

67、 <<staff[i].room_num</p><p><b>  <<endl;</b></p><p>  outfile.close();</p><p><b>  }</b></p><p><b>  else</b></p>

68、<p>  cout<<"還沒人登錄呢!@_@ ..."<<endl;</p><p>  } /*end edit*/</p><p>  /*信息刪除函數(shù)*/</p><p>  int Delete(STAFF staff[],int length)</p><p><b&g

69、t;  {</b></p><p><b>  int i,k;</b></p><p>  int counter=length;</p><p>  char room_num[10];</p><p>  string str;</p><p>  ofstream outfil

70、e("logInfo.txt",ios::out);//文件清空</p><p>  if (!outfile)</p><p><b>  {</b></p><p>  cerr<<"open error1"<<endl;</p><p><b&g

71、t;  exit(1);</b></p><p><b>  }</b></p><p>  outfile<<str;</p><p>  outfile.close();</p><p>  if(length!=0)</p><p><b>  {</

72、b></p><p>  cout<<"請選擇要刪除員工房間的號碼:";</p><p>  cin>>room_num;</p><p>  for(i=0;i<length;i++)</p><p><b>  {</b></p><p>

73、;  if(strcmp(staff[i].room_num,room_num)==0)</p><p>  { /*刪除人員*/</p><p>  for(k=i;k<length-1;k++)</p><p>  staff[k]=staff[k+1];/*從被刪人位置往后后一人員的信息覆蓋前一人員信息*/</p><p>

74、  cout<<"刪除成功?。?!";</p><p>  length--; /*參會人數(shù)減一*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  ofstream outfile("logInfo.txt

75、",ios::app);//保存刪除后剩余信息到已清空文件logInfo.txt中</p><p>  if (!outfile)</p><p><b>  {</b></p><p>  cerr<<"open error1"<<endl;</p><p><

76、;b>  exit(1);</b></p><p><b>  }</b></p><p>  for (i=0;i<length;i++)</p><p><b>  {</b></p><p>  outfile<<setiosflags(ios::left)

77、</p><p>  <<setw(17)</p><p>  <<staff[i].name</p><p>  <<setw(17)</p><p>  <<staff[i].sex</p><p>  <<setw(17)</p><

78、p>  <<staff[i].age</p><p>  <<setw(17)</p><p>  <<staff[i].department</p><p>  <<setw(17)</p><p>  <<staff[i].room_num</p><p

79、><b>  <<endl;</b></p><p><b>  }</b></p><p>  outfile.close();</p><p>  if(counter==length) /*未進行信息覆蓋,要刪除的人員還沒登陸*/</p><p>  cout<<

80、"輸入的房間沒人喲!?。?!"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p>  cout<<"沒有員工登陸哦!?。。?!"<<endl;</p><p> 

81、 return length;</p><p>  } /*end Delete()*/</p><p>  修改和刪除部分遇到的問題:</p><p>  因為文件錄入是主函數(shù)已經(jīng)完成,所以這兩部分的兩個函數(shù)的關(guān)鍵是在進行完修改和刪除以后如何把原來文件里的信息修改和刪除后的保存。開始時我沒在這兩部分做保存。所以開始時顯示后,再輸入數(shù)據(jù),修改和刪除只在此次操作中起作

82、用一旦關(guān)閉后再打開修改和刪除根本就沒改變。分析原因發(fā)現(xiàn),修改和刪除只在內(nèi)存中進行,而關(guān)閉后便消失,所以文件里的東西還是錄入后的信息,并沒有保存修改和刪除。然后我便在這兩部分函數(shù)后加上了文件寫入流ofstream outfile("logInfo.txt",ios::app);調(diào)試后發(fā)現(xiàn)可以保存修改和刪除內(nèi)容了,但以前的內(nèi)容還是沒變,只不過是在后面加上了修改刪除后剩余內(nèi)容。經(jīng)過一天的看書討論和搭檔的交流。在書上看到ap

83、p是將信息添加在原文件末尾,并沒刪除原文件以前的東西。然后我又吧app改為out目的是錄入的同時便刪除原文件內(nèi)容。但很快發(fā)現(xiàn)向文件寫內(nèi)容的流要一組一組輸出,這樣可以剛好用結(jié)構(gòu)體數(shù)組用循環(huán)將內(nèi)存信息一組一組的輸入文件。因此這樣的話最后就只能保存最后一組信息。經(jīng)過認真思考,最后我嘗試先用一個空的字符串變量str通過out方式寫入文件。等于先將文件清空,然后再用app方式一</p><p>  4.4統(tǒng)計同部門信息設(shè)計

84、及問題</p><p>  /*統(tǒng)計各部門人員函數(shù)*/</p><p>  void statistics (STAFF staff[],int length)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  ch

85、ar partname[10];</p><p>  int coutner=0,flag=0;</p><p>  if (length!=0)</p><p>  { /*調(diào)用同部門信息顯示函數(shù)*/</p><p>  display_part (staff,"市場部",length);</p>&

86、lt;p>  display_part (staff,"財務(wù)部",length);</p><p>  display_part (staff,"技術(shù)部",length);</p><p>  display_part (staff,"宣傳部",length);</p><p>  cout<&

87、lt;"請輸入部門名(市場部,財務(wù)部,技術(shù)部,宣傳部):";//下面是調(diào)出某一部門的人員信息</p><p>  cin>>partname;</p><p>  cout<<partname<<endl;</p><p>  cout<<'\t'<<"姓名

88、 性別 年齡 房間號"<<endl;</p><p>  for (i=0;i<length;i++)</p><p>  if (strcmp(staff[i].department,partname)==0)</p><p><b>  {</b></p>&l

89、t;p>  cout<<setiosflags(ios::left)<<setw(11)<<staff[i].name<<setw(12)<<staff[i].sex<<setw(12)<<staff[i].age<<setw(13)<<staff[i].room_num<<endl;</p>&l

90、t;p>  coutner++;</p><p><b>  }</b></p><p>  if (coutner==0)</p><p>  cout<<"這個部門沒人登錄呀!!!!"<<endl;</p><p>  else cout<<"總

91、計:"<<coutner<<endl; </p><p><b>  }</b></p><p>  else cout<<"還沒人登錄呢!!!"<<endl;</p><p><b>  }</b></p><p&

92、gt;  /*同一部門信息顯示函數(shù)*/</p><p>  void display_part (STAFF staff[],char ch[10],int length)</p><p><b>  {</b></p><p>  int i,flag=0;</p><p>  cout<<"

93、 "<<ch<<" "<<endl<<endl;</p><p>  cout<<'\t'<<"姓名 性別 年齡 房間號"<<endl;<

94、/p><p>  for (i=0;i<length;i++)</p><p>  if (strcmp(staff[i].department,ch)==0)</p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(11

95、)<<staff[i].name<<setw(12)<<staff[i].sex<<setw(12)<<staff[i].age<<setw(13)<<staff[i].room_num<<endl;</p><p><b>  flag++;</b></p><p>&l

96、t;b>  }</b></p><p>  if (flag==0)</p><p>  cout<<ch<<"還沒人員登錄"<<endl;</p><p>  else cout<<ch<<"登錄人數(shù):"<<flag<<en

97、dl;</p><p><b>  } </b></p><p>  統(tǒng)計部分遇到的問題和解決方案:</p><p>  這部分我是用一個同部門顯示函數(shù)來實現(xiàn)分類將各部門信息全部顯示出來。然后我又通過編寫程序?qū)崿F(xiàn)了輸入某個部門然后顯示出來的這個部門信息。這一部分沒有文件的處理和保存,所以相對簡單。但其中卻要用的函數(shù)中調(diào)用函數(shù),所以開

98、始構(gòu)建void display_part (STAFF staff[],char ch[10],int length)這個函數(shù)時,關(guān)于函數(shù)參數(shù)的選擇遇到了難題。我不清楚是用int類型還是void類型。經(jīng)過反復(fù)看書和比較,最終確定這個函數(shù)用一個三參數(shù)實現(xiàn),在void statistics (STAFF staff[],int length)這個函數(shù)中整體顯示是調(diào)用四次。經(jīng)過調(diào)試運行,最后取得了成功。</p><p>

99、;  第五章 程序的調(diào)試和運行</p><p>  根據(jù)上述的思路與設(shè)計,對整個程序進行完整的編譯,并運行檢驗程序.</p><p><b>  5.1 源程序代碼</b></p><p>  構(gòu)建完整的程序函數(shù),試運行檢驗程序的正確性,是否符合自己的思路.</p><p>  #include <iostrea

100、m></p><p>  #include<string></p><p>  #include <iomanip></p><p>  #include<fstream></p><p>  int const MAX = 50 ; /*定義最大參會人數(shù)*/</p><p>

101、;  using namespace std;</p><p>  struct STAFF /*參會人員的數(shù)據(jù)結(jié)構(gòu)*/</p><p><b>  {</b></p><p>  char name[20]; /*姓名*/</p><p>  char sex[7]; /*性別*/</p&g

102、t;<p>  int age; /*年齡*/</p><p>  char department[30];/*單位*/</p><p>  char room_num[10]; /*房間號*/</p><p><b>  }staff;</b></p><p>  void men

103、u()</p><p><b>  {</b></p><p>  cout<<"\n";</p><p>  cout<<"|--------------------參會人員信息管理系統(tǒng) -----------------|"<<endl;</p>&l

104、t;p>  cout<<"| 1.人員登陸 |"<<endl; </p><p>  cout<<"| 2.顯示信息 |"<<endl;&

105、lt;/p><p>  cout<<"歡 3.按房號排序 樂"<<endl;</p><p>  cout<<"迎 4.按姓名查詢 意"<<

106、endl;</p><p>  cout<<"使 5.統(tǒng)計同部門人員 指"<<endl;</p><p>  cout<<"用 6.登錄信息修改 正"<&

107、lt;endl;</p><p>  cout<<"| 7.登錄信息刪除 |"<<endl;</p><p>  cout<<"| 0.退出

108、|"<<endl;</p><p>  cout<<"|----------------★★--wel-\(˙<>˙)/-come--★★------------|"<<endl;</p><p><b>  }</b></p><p><b>  /*函數(shù)

109、原型*/</b></p><p>  int login(STAFF staff[],int length);</p><p>  void show_all(STAFF staff[],int length);</p><p>  void sort(STAFF staff[],int length);</p><p>  vo

110、id searchByName(STAFF staff[],int length);</p><p>  void statistics(STAFF staff[],int length);</p><p>  void edit(STAFF staff[],int length);</p><p>  int Delete(STAFF staff[],int le

111、ngth);</p><p>  void display_part (STAFF staff[],char ch[10],int length);</p><p>  /*函數(shù)的定義*/ </p><p>  /*登錄信息記錄保存函數(shù)*/</p><p>  int login(STAFF staff[],int length)</p

112、><p><b>  {</b></p><p><b>  int i;</b></p><p>  if(length==50) /*房間已滿,拒絕登陸*/</p><p><b>  {</b></p><p>  cout<<"

113、沒有房間了,請自行聯(lián)系管理人員!";</p><p>  exit(-1); </p><p>  } /*end if*/</p><p><b>  else</b></p><p><b>  {</b></p><p>  char room_num[10

114、];</p><p>  cout<<"請輸入房間號(101~120、、、501~520):";</p><p>  cin>>room_num;</p><p>  for(i=0;i<length;i++)</p><p><b>  { </b></p>

115、<p>  if(strcmp(room_num,staff[i].room_num)==0) /*申請的房間已經(jīng)有人*/</p><p><b>  { </b></p><p>  cout<<"這個房間已經(jīng)有人了,請選擇其他房間?。。。。。?!"<<endl;</p><p>  

116、cout<<"請輸入選擇的其他房間號:";/*讓參會人選擇別的空房間*/</p><p>  cin>>room_num;</p><p>  i=0; /*為檢查新的房間作準備*/</p><p><b>  }</b></p><p>  } /*end for

117、*/</p><p>  /* 錄入登陸信息*/ </p><p>  strcpy(staff[length].room_num,room_num);</p><p>  cout<<"輸入你的姓名:";</p><p>  cin>>staff[length].name;</p>

118、<p>  cout<<"你的性別(男士m,女士f):";</p><p>  cin>>staff[length].sex;</p><p>  cout<<"你的年齡:";</p><p>  cin>>staff[length].age;</p>&

119、lt;p>  cout<<"你的工作部門(市場部,財務(wù)部,技術(shù)部,宣傳部):";</p><p>  cin>>staff[length].department;</p><p>  length++; /*參會人數(shù)加一*/</p><p>  /*保存信息到文件logInfo.txt中*/</p>&

120、lt;p>  ofstream outfile("logInfo.txt",ios::app);</p><p>  if (!outfile)</p><p><b>  {</b></p><p>  cerr<<"open error1"<<endl;</p>

121、;<p><b>  exit(1);</b></p><p><b>  }</b></p><p>  outfile<<setiosflags(ios::left)</p><p>  <<setw(17)</p><p>  <<staff[

122、length-1].name //因為前面有l(wèi)ength++,所以這里要用length-1</p><p>  <<setw(17)</p><p>  <<staff[length-1].sex</p><p>  <<setw(17)</p><p>  <<staff[length-1].

123、age</p><p>  <<setw(17)</p><p>  <<staff[length-1].department</p><p>  <<setw(17)</p><p>  <<staff[length-1].room_num</p><p><b&

124、gt;  <<endl;</b></p><p>  outfile.close();</p><p>  } /*end else*/</p><p>  return length;</p><p>  }/*end login()*/</p><p><b>  /*顯示函數(shù)*/

125、</b></p><p>  void show_all(STAFF staff[],int length)</p><p>  { int i;</p><p>  if (length!=0)//判斷是否有記錄</p><p><b>  {</b></p><p>  cou

126、t<<"********************員工注冊信息********************"<<endl;</p><p>  cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p>  for(i=

127、0;i<length;i++) /*輸出報到人員的信息*/</p><p><b>  { </b></p><p>  cout<<'\t'<<staff[i].name;</p><p>  cout<<'\t'<<staff[i].sex;</

128、p><p>  cout<<'\t'<<staff[i].age;</p><p>  cout<<'\t'<<staff[i].department;</p><p>  cout<<setiosflags(ios::right)<<setw(9)<<s

129、taff[i].room_num;</p><p>  cout<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else </b></p><p>  cout<

130、;<"還沒有人登陸?。。。。。。。。?!"<<endl;</p><p><b>  }</b></p><p><b>  /*排序函數(shù)*/</b></p><p>  void sort(STAFF staff[],int length)</p><p>&l

131、t;b>  {</b></p><p>  STAFF temp;</p><p><b>  int i,j;</b></p><p>  if(length!=0)</p><p><b>  {</b></p><p>  for(i=0;i<l

132、ength;i++) /*冒泡排序*/</p><p>  for(j=0;j<length-i-1;j++)</p><p>  if(strcmp(staff[j].room_num,staff[j+1].room_num)>0)</p><p><b>  { </b></p><p>  temp

133、=staff[j]; </p><p>  staff[j]=staff[j+1];</p><p>  staff[j+1]=temp;</p><p><b>  }</b></p><p>  cout<<"********************員工注冊信息****************

134、****"<<endl;</p><p>  cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p>  for(i=0;i<length;i++)</p><p>  { /*輸出報到人員的信息*

135、/</p><p>  cout<<'\t'<<staff[i].name;</p><p>  cout<<'\t'<<staff[i].sex;</p><p>  cout<<'\t'<<staff[i].age;</p>&l

136、t;p>  cout<<'\t'<<staff[i].department;</p><p>  cout<<setw(9)<<staff[i].room_num;</p><p>  cout<<endl;</p><p><b>  }</b></p&g

137、t;<p><b>  }</b></p><p><b>  else</b></p><p>  cout<<"還沒有人登陸!?。。。。。。。?!"<<endl;</p><p>  } /*end print()*/</p><p>  

138、/*按姓名查找函數(shù)*/</p><p>  void searchByName(STAFF staff[],int length)</p><p><b>  {</b></p><p>  char name[20];</p><p><b>  int i;</b></p><

139、;p>  int counter=0;</p><p>  if(length!=0)</p><p><b>  {</b></p><p>  cout<<"請輸入要查找的人的姓名:";</p><p>  cin>>name;</p><p>

140、;  cout<<'\t'<<"姓名 性別 年齡 工作部門 房間號 "<<endl;</p><p>  for(i=0;i<length;i++)</p><p><b>  {</b></p><p>  if(strcmp(staf

141、f[i].name,name)==0)</p><p><b>  { </b></p><p>  /*判斷名字是否相同,相同則輸出人員信息*/</p><p>  cout<<'\t'<<staff[i].name;</p><p>  cout<<'\

142、t'<<staff[i].sex;</p><p>  cout<<'\t'<<staff[i].age;</p><p>  cout<<'\t'<<staff[i].department;</p><p>  cout<<setw(13)<<

143、;staff[i].room_num;</p><p>  cout<<endl;</p><p>  counter++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(counter==0) /*co

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論