c++課程設(shè)計(jì)報(bào)告--人事管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(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><b>  課 程 設(shè) 計(jì)</b></p><p><b>  目 錄</b></p><p><b>  一 概述2</b></p><p>  二 總體方案設(shè)計(jì)3</p><p><b>  三 詳細(xì)設(shè)計(jì)3</b></p

2、><p><b>  程序流程圖7</b></p><p>  四 程序的調(diào)試與運(yùn)行結(jié)果說(shuō)明8</p><p><b>  4.1調(diào)試方法8</b></p><p>  4.2運(yùn)行的主要功能界面及分析9</p><p>  4.3測(cè)試中的問(wèn)題12</p>

3、<p>  五 課程設(shè)計(jì)總結(jié)13</p><p>  5.1程序的效果描述13</p><p>  5.2優(yōu)點(diǎn)與不足13</p><p>  5.3個(gè)人體會(huì)13</p><p><b>  參考文獻(xiàn)14</b></p><p><b>  附錄:14</b&g

4、t;</p><p><b>  一 概述</b></p><p><b>  課程設(shè)計(jì)的目的</b></p><p>  1.理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)思想和方法。</p><p>  2.培養(yǎng)綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。</p><p>  3.培

5、養(yǎng)勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有錯(cuò)必改,用實(shí)踐來(lái)檢驗(yàn)理論,全方位考慮問(wèn)題等科學(xué)技術(shù)人員應(yīng)具有的素質(zhì)。</p><p>  4.掌握從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問(wèn)題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。</p><p><b>  課程設(shè)計(jì)的要求</b></p><p><b>  1.需求

6、分析:</b></p><p>  ①能夠輸入職工的綜合情況的輸入、修改以及刪除;</p><p> ?、谀軌?qū)崿F(xiàn)對(duì)職工信息的瀏覽;</p><p> ?、勰軌?qū)崿F(xiàn)對(duì)職工進(jìn)行查詢;</p><p>  ④設(shè)計(jì)系統(tǒng)封面并由計(jì)時(shí)器控制;</p><p><b>  系統(tǒng)性能要求:</b>&

7、lt;/p><p><b> ?、傧到y(tǒng)安全、可靠;</b></p><p><b>  ②功能齊全;</b></p><p>  ③操作方便、界面友好;</p><p><b> ?、芤子诰S護(hù)和擴(kuò)充。</b></p><p>  系統(tǒng)的功能分析: 資料維護(hù):

8、系統(tǒng)維護(hù)包括對(duì)各種表記錄的修改、刪除、添加等操作。</p><p>  資料維護(hù):對(duì)數(shù)據(jù)表中的信息進(jìn)行瀏覽。</p><p>  系統(tǒng)查詢:可以按職工編號(hào)、姓名等相關(guān)信息進(jìn)行詳細(xì)或模糊查詢。</p><p>  報(bào)表統(tǒng)計(jì):包括統(tǒng)計(jì)職工編號(hào)、職工姓名、職工性別、所在部門、職工年齡、工作日期、基本工資、職稱、職務(wù)和簡(jiǎn)歷等字段。</p><p> 

9、 其它操作:系統(tǒng)封面、計(jì)時(shí)器控制與人性化提示信息。</p><p><b>  系統(tǒng)功能模塊</b></p><p>  人事管理系統(tǒng)有:數(shù)據(jù)查找與瀏覽、數(shù)據(jù)修改、報(bào)表顯示和系統(tǒng)封面構(gòu)成。</p><p><b>  5.功能的實(shí)現(xiàn):</b></p><p>  1“數(shù)據(jù)查找與瀏覽”模塊:</

10、p><p><b>  (1)數(shù)據(jù)查找:</b></p><p>  對(duì)職工的編號(hào)、職工姓名、職工性別、所在部門、職工年齡、工作日期、</p><p>  基本工資、職稱、職務(wù)和簡(jiǎn)歷等字段進(jìn)行精確或模糊查找。</p><p>  (2)數(shù)據(jù)瀏覽:可以對(duì)數(shù)據(jù)表中的數(shù)據(jù)實(shí)現(xiàn),上一項(xiàng)、下一項(xiàng)、首相、尾項(xiàng)等操作。</p>

11、<p> ?。?)其他信息:設(shè)置字體、顏色屬性和一些提示信息。</p><p>  2“數(shù)據(jù)修改”模塊:</p><p> ?。?)添加數(shù)據(jù):增加一個(gè)新的記錄</p><p>  (2)修改數(shù)據(jù):修改原有記錄。</p><p><b>  二 總體方案設(shè)計(jì)</b></p><p> 

12、 整體設(shè)計(jì)為數(shù)據(jù)輸入模塊、數(shù)據(jù)添加模塊、數(shù)據(jù)刪除模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)修改模塊、數(shù)據(jù)統(tǒng)計(jì)模塊、數(shù)據(jù)排序模塊。</p><p>  數(shù)據(jù)輸入模塊把員工信息逐一寫入人事檔案文件。數(shù)據(jù)添加模塊用追加的方式把新增員工信息寫入人事檔案文件。數(shù)據(jù)刪除模塊根據(jù)人員編號(hào)查找要?jiǎng)h除的人員,從文件中讀一條記錄,查看編號(hào)是否要?jiǎng)h除,如果是,則舍棄。數(shù)據(jù)查詢模塊把編號(hào)和姓名作為查詢字段,用基本查找算法查找人事檔案文件,把符合查找要求的

13、記錄輸出。數(shù)據(jù)輸出模塊通過(guò)菜單選擇年齡或者來(lái)時(shí)時(shí)間,把數(shù)據(jù)從文件中讀出來(lái),任意選擇一種排序算法對(duì)記錄進(jìn)行排序,輸出排序結(jié)果。這些模塊中我負(fù)責(zé)數(shù)據(jù)查詢和刪除兩個(gè)部分。</p><p><b>  三 詳細(xì)設(shè)計(jì)</b></p><p>  數(shù)據(jù)結(jié)構(gòu)采用成員類:</p><p>  class person //定義通訊成員類</p

14、><p><b>  {</b></p><p><b>  public:</b></p><p>  char num[20];//編號(hào)</p><p>  char name[30];//姓名</p><p>  char sex[20];//性別</p>&

15、lt;p>  char age[20];//年齡</p><p>  char position[20];//職位</p><p>  char address[500];//地址</p><p>  char tel[100];//手機(jī)號(hào)</p><p>  char nation[30];//民族</p><p&

16、gt;  char political_status[20];//政治面貌</p><p>  char marital_status[20];//婚姻狀況</p><p>  char school[200];//畢業(yè)院校</p><p>  char identity[500];//身份證號(hào)</p><p>  char email[20

17、];//郵箱</p><p>  P ublic: //對(duì)其成員函數(shù)的聲明</p><p>  void add_person(int&); //新增通訊成員</p><p>  bool searchnum(); //按編號(hào)查找</p><p>  bool searchname(); //

18、按姓名查找</p><p>  void delnum(int&); //按編號(hào)刪除</p><p>  void delname(int&); //按姓名刪除</p><p>  void showall(); //統(tǒng)計(jì)職員數(shù)</p><p>  void get_i(); //讀取數(shù)據(jù)文件職員數(shù)<

19、;/p><p>  friend ostream &operator<<(ostream& out,person& pe);//重載運(yùn)算符"<<"</p><p><b>  };</b></p><p><b>  數(shù)據(jù)輸入模塊</b></p>

20、<p>  把員工信息逐一寫入人事檔案文件。</p><p><b>  數(shù)據(jù)添加模塊</b></p><p>  用追加的方式把新增員工信息寫入人事檔案文件。</p><p>  cout<<"請(qǐng)輸入職員的的編號(hào):(1000-9999)"<<endl;</p><p&

21、gt;<b>  cin>>num;</b></p><p>  cout<<"請(qǐng)輸入職員姓名:"<<endl;</p><p>  cin>>name;</p><p>  cout<<"請(qǐng)輸入性別:"<<endl;</p&g

22、t;<p><b>  cin>>sex;</b></p><p>  while((string)sex!="男"&&(string)sex!="女")</p><p><b>  {</b></p><p>  cout<<&

23、quot;您輸入的性別有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p><b>  cin>>sex;</b></p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入年齡:"<<endl;</p>&

24、lt;p><b>  cin>>age;</b></p><p>  cout<<"請(qǐng)輸入該職員的職位:(經(jīng)理,管理員,員工)"<<endl;</p><p>  cin>>position;</p><p>  while((string)position!="

25、;經(jīng)理"&&(string)position!="管理員"&&(string)position!="員工")</p><p><b>  {</b></p><p>  cout<<"您輸入的職工職位有誤,請(qǐng)核對(duì)后再輸入:"<<endl;<

26、;/p><p>  cin>>position;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入該職員的家庭地址:"<<endl;</p><p>  cin>>address;</p><p>  

27、cout<<"請(qǐng)輸入該職員的民族:"<<endl;</p><p>  cin>>nation;</p><p>  cout<<"請(qǐng)輸入職員的政治面貌:(群眾,團(tuán)員,黨員)"<<endl;</p><p>  cin>>political_status;

28、</p><p>  while((string)political_status!="群眾"&&(string)political_status!="團(tuán)員"&&(string)political_status!="黨員")</p><p><b>  {</b></p&

29、gt;<p>  cout<<"您輸入的職工政治面貌有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p>  cin>>political_status;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入職員的婚姻狀況(

30、未婚,已婚)"<<endl;</p><p>  cin>>marital_status;</p><p>  while((string)marital_status!="未婚"&&(string)marital_status!="已婚")</p><p><b>

31、  {</b></p><p>  cout<<"您輸入的職工的婚姻狀況有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p>  cin>>marital_status;</p><p><b>  }</b></p><p>  cout<&l

32、t;"請(qǐng)輸入職員的畢業(yè)學(xué)校:"<<endl;</p><p>  cin>>school;</p><p>  cout<<"請(qǐng)輸入職員的身份證號(hào):"<<endl;</p><p>  cin>>identity;</p><p>  cout

33、<<"請(qǐng)輸入職員的手機(jī)號(hào):"<<endl;</p><p><b>  cin>>tel;</b></p><p>  cout<<"請(qǐng)輸入職員的郵箱:"<<endl;</p><p>  cin>>email;</p>

34、<p>  cout<<"請(qǐng)輸入職員的聘用時(shí)間:"<<endl;</p><p>  cin>>engage_time;</p><p>  cout<<"請(qǐng)輸入此次記錄的添加時(shí)間:"<<endl;</p><p>  cin>>add_tim

35、e;</p><p>  cout<<endl;</p><p>  ofstream outfile("test.dat",ios::app|ios::binary);//打開(kāi)"test.dat"文件,并將指針指向文件尾</p><p><b>  (3)數(shù)據(jù)刪除模塊</b></p&g

36、t;<p>  根據(jù)人員編號(hào)查找要?jiǎng)h除的人員,從文件中讀一條記錄,查看編號(hào)是否要?jiǎng)h除,如果是,則舍棄</p><p>  如:"test.dat"</p><p><b>  {</b></p><p>  ofstream outfile("test.dat",ios::binary);/

37、/打開(kāi)用于寫的二進(jìn)制文件"test.dat"</p><p>  ifstream infile("tmp.dat",ios::binary);//打開(kāi)用于讀的二進(jìn)制文件"tmp.dat"</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中&

38、lt;/p><p>  while(!infile.eof())</p><p><b>  {</b></p><p>  outfile.write((char*)(this),sizeof(*this));//將從"tmp.dat"中讀取的數(shù)據(jù)寫入" test.dat"中</p><

39、p>  infile.read((char*)(this),sizeof(*this));//再?gòu)?quot;tmp.dat"中讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p><b>  }</b></p><p>  不再寫入文件;否則重新寫入文件。</p><p><b> ?。?)數(shù)據(jù)查詢模塊</b&g

40、t;</p><p>  把編號(hào)和姓名作為查詢字段,用基本查找算法查找人事檔案文件,把符合查找要求的記錄輸出。</p><p><b>  (5)數(shù)據(jù)修改模塊</b></p><p>  查找要修改的記錄,修改之。先讀記錄,若是要修改的記錄,則修改信息,把修改后的信息寫入文件;否則直接寫入文件。例如按姓名修改:if(delmark==1)//若

41、找到了刪除對(duì)象,就用"tmp.dta"文件內(nèi)容去充當(dāng)</p><p><b>  (6)數(shù)據(jù)輸出模塊</b></p><p>  通過(guò)菜單選擇年齡或者來(lái)時(shí)時(shí)間,把數(shù)據(jù)從文件中讀出來(lái),任意選擇一種排序算法對(duì)記錄進(jìn)行排序,輸出排序結(jié)果。</p><p>  if(i==0)//人事管理系統(tǒng)中無(wú)此職員,請(qǐng)先增加職員信息信息<

42、/p><p>  cout<<"人事管理系統(tǒng)數(shù)據(jù)為空,請(qǐng)先增加職員信息!"<<endl;</p><p><b>  else</b></p><p><b>  {</b></p><p>  ifstream infile("test.dat&q

43、uot;,ios::binary);//打開(kāi)用于讀的binary文件</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  cout<<"所有職員的信息如下:"<<endl;</p><p>  while(!inf

44、ile.eof())//沿未到達(dá)文件尾,繼續(xù)處理</p><p><b>  {</b></p><p>  cout<<(*this);//輸出當(dāng)前對(duì)象的各數(shù)據(jù)成員</p><p><b>  程序流程圖</b></p><p><b>  4.1具體函數(shù)</b>

45、</p><p>  per.get_i();</p><p><b>  menu();</b></p><p>  password();</p><p>  per.add_person();//調(diào)用增加人事檔案中職員信息函數(shù)</p><p>  per.searchname();//調(diào)用按

46、姓名查找職工信息函數(shù)</p><p>  per.searchnum();//調(diào)用按編號(hào)查找職工信息函數(shù)</p><p>  per.delname();//調(diào)用按姓名刪除職工信息函數(shù)</p><p>  per.delnum();//調(diào)用按編號(hào)刪除職工信息函數(shù)</p><p>  per.showall();//調(diào)用顯示人事檔案管理系統(tǒng)中所

47、有職員信息的函數(shù)</p><p>  delall();//調(diào)用清空人事檔案管理系統(tǒng)中所有數(shù)據(jù)的函數(shù)</p><p>  total();//調(diào)用輸出人事檔案管理系統(tǒng)中職員數(shù)的函數(shù)</p><p>  四 程序的調(diào)試與運(yùn)行結(jié)果說(shuō)明</p><p><b>  4.1調(diào)試方法</b></p><p>

48、;  將已經(jīng)編好的程序放在VC++6.0的環(huán)境中進(jìn)行調(diào)試與測(cè)試,發(fā)現(xiàn)程序中的錯(cuò)誤,在提示的情況下進(jìn)行改正。</p><p>  4.2運(yùn)行的主要功能界面及分析</p><p><b>  (1)、菜單界面</b></p><p><b>  圖2-1菜單</b></p><p>  (2)、輸入信息

49、界面</p><p><b>  圖2-2 信息輸入</b></p><p>  、按姓名查找信息界面</p><p><b>  圖2-3 姓名查找</b></p><p> ?。?)、編號(hào)查找信息界面</p><p>  圖2-4 編號(hào)查找信息</p>&

50、lt;p> ?。?)、按姓名刪除信息界面</p><p>  2-5 按姓名刪除信息</p><p> ?。?)、按編號(hào)刪除信息界面</p><p>  2-6按編號(hào)刪除信息</p><p> ?。?)、顯示人事檔案管理系統(tǒng)中所有職員信息界面</p><p>  圖2-7(由于前面兩步將系統(tǒng)中唯有的2租數(shù)據(jù)刪除了

51、 需哦億顯示員工信息需重新添加新的員工信息</p><p>  (8)統(tǒng)計(jì)人事管理系統(tǒng)中職員人數(shù)</p><p><b>  圖2-8 </b></p><p> ?。?)、清空人事管理系統(tǒng)中的數(shù)據(jù)</p><p><b>  圖2-9 </b></p><p><b

52、>  (10)、退出界面</b></p><p>  圖2-10 退出程序</p><p>  (11)、程序運(yùn)行分析</p><p>  測(cè)試是將在屏幕上出來(lái)有關(guān)人事檔案需要填寫的東西,輸入需要填寫的信息,然后逐步操作添加信息,刪除信息,查詢信息,修改信息等操作來(lái)實(shí)現(xiàn)程序的功能。</p><p><b>  4.

53、3測(cè)試中的問(wèn)題</b></p><p>  注意聲明函數(shù)時(shí),各函數(shù)之間的調(diào)用關(guān)系。</p><p><b>  五 課程設(shè)計(jì)總結(jié)</b></p><p>  5.1程序的效果描述</p><p>  該程序主要實(shí)現(xiàn)人事管理的功能。利用14個(gè)函數(shù)的組合組成程序,然后通過(guò)該程序輸入人事信息,然后利用各個(gè)函數(shù)的調(diào)用

54、,實(shí)現(xiàn)信息輸入,信息添加,信息查詢,信息刪除,信息修改等功能。</p><p><b>  5.2優(yōu)點(diǎn)與不足</b></p><p>  優(yōu)點(diǎn):使用結(jié)構(gòu)使程序的輸入輸出更簡(jiǎn)潔</p><p>  使用函數(shù)可以使程序更簡(jiǎn)便;</p><p>  不足:輸入的內(nèi)容比較多;</p><p>  用文件儲(chǔ)

55、存信息不能用結(jié)構(gòu)輸入;</p><p>  讀取文件中的信息也不能用結(jié)構(gòu)讀?。?lt;/p><p>  程序比較大,各部分之間的關(guān)系繁瑣;</p><p><b>  5.3個(gè)人體會(huì)</b></p><p>  學(xué)習(xí)C++要切忌浮躁,要明白欲速則不達(dá)。如果想要學(xué)好C++就要多看多寫,而最關(guān)鍵的是要上課聽(tīng)老師分析。</p

56、><p>  通過(guò)一個(gè)學(xué)期的學(xué)習(xí),我更了解計(jì)算機(jī)編程了,同時(shí)也更喜歡計(jì)算機(jī)了。并且我也知道了如何學(xué)好C++,學(xué)C++靠的不是上課的那點(diǎn)兒時(shí)間,而是課前的預(yù)習(xí)工作及課后的復(fù)習(xí)工作,還有對(duì)寫程序的及時(shí)練習(xí),練習(xí)寫程序不僅是對(duì)知識(shí)的復(fù)習(xí)也是對(duì)知識(shí)的熟練從而也能更深刻的理解程序,理解C++。我們學(xué)習(xí)C++不僅要看課本,更重要的是看學(xué)習(xí)資料,從而使掌握的知識(shí)更廣闊。只有擁有豐富的知識(shí)以及掌握對(duì)編程的熟練度,才能對(duì)程序靈活書(shū)寫。

57、</p><p>  C++是比C語(yǔ)言更高級(jí)的一門語(yǔ)言,我們也可以通過(guò)學(xué)習(xí)C語(yǔ)言來(lái)學(xué)習(xí)C++,這樣就可以減少學(xué)習(xí)中遇到的困難。想要學(xué)好C++,讓我們一起努力吧。</p><p><b>  參考文獻(xiàn)</b></p><p>  【1】譚浩強(qiáng),C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第二版),北京,清華大學(xué)出版社,2000年9月。</p><

58、;p>  【2】《C++程序設(shè)計(jì)語(yǔ)言(特別版)》,機(jī)械工業(yè)出版社。</p><p>  【3】袁志祥、秦鋒主編 ,《數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)例題詳解與課程設(shè)計(jì)指導(dǎo)》第二版 中國(guó)科學(xué)技術(shù)大學(xué)出版社出版 </p><p><b>  附錄:</b></p><p>  /*人事檔案管理系統(tǒng)*/</p><p>  #inc

59、lude<iostream></p><p>  #include<fstream></p><p>  #include<string></p><p>  using namespace std;</p><p>  class person //定義通訊成員類</p><

60、;p><b>  {</b></p><p><b>  public:</b></p><p>  char num[20];//編號(hào)</p><p>  char name[30];//姓名</p><p>  char sex[20];//性別</p><p> 

61、 char age[20];//年齡</p><p>  char position[20];//職位</p><p>  char address[500];//地址</p><p>  char tel[100];//手機(jī)號(hào)</p><p>  char nation[30];//民族</p><p>  char

62、 political_status[20];//政治面貌</p><p>  char marital_status[20];//婚姻狀況</p><p>  char school[200];//畢業(yè)院校</p><p>  char identity[500];//身份證號(hào)</p><p>  char email[20];//郵箱<

63、;/p><p>  char engage_time[100];//聘用時(shí)間</p><p>  char add_time[100];//記錄時(shí)間 </p><p>  public: //對(duì)其成員函數(shù)的聲明</p><p>  void add_person(int&); //新增通訊成員</

64、p><p>  bool searchnum(); //按編號(hào)查找</p><p>  bool searchname(); //按姓名查找</p><p>  void delnum(int&); //按編號(hào)刪除</p><p>  void delname(int&); //按姓名刪除</p><p

65、>  void showall(); //統(tǒng)計(jì)職員數(shù)</p><p>  void get_i(); //讀取數(shù)據(jù)文件職員數(shù)</p><p>  friend ostream &operator<<(ostream& out,person& pe);//重載運(yùn)算符"<<"</p>&

66、lt;p><b>  };</b></p><p>  ostream &operator<<(ostream& out,person& pe)//定義重載運(yùn)算符"<<",從而直接輸出類對(duì)象</p><p><b>  {</b></p><p> 

67、 out<<"編號(hào): "<<pe.num<<endl;</p><p>  out<<"姓名: "<<pe.name<<endl;</p><p>  out<<"性別: "<<pe.sex<<endl;&

68、lt;/p><p>  out<<"年齡: "<<pe.age<<endl;</p><p>  out<<"職位: "<<pe.position<<endl;</p><p>  out<<"手機(jī)號(hào): "<

69、<pe.tel<<endl;</p><p>  out<<"民族: "<<pe.nation<<endl;</p><p>  out<<"政治面貌: "<<pe.political_status<<endl;</p><p> 

70、 out<<"婚姻狀況:"<<pe.marital_status<<endl;</p><p>  out<<"畢業(yè)院校:"<<pe.school<<endl;</p><p>  out<<"身份證號(hào):"<<pe.identity&l

71、t;<endl;</p><p>  out<<"郵箱: "<<pe.email<<endl;</p><p>  out<<"聘用時(shí)間: "<<pe.engage_time<<endl;</p><p>  out<<"

72、記錄時(shí)間:"<<pe.add_time<<endl;</p><p>  return out;</p><p><b>  }</b></p><p>  int i=0; //定義全局變量,用于記錄人事檔案管理系統(tǒng)中的職員數(shù)</p><p>  void person::get_i(

73、)</p><p><b>  {</b></p><p>  ifstream file("test.dat",ios::binary|ios::in);//打開(kāi)用于讀的binary文件</p><p><b>  if(!file)</b></p><p><b>

74、  {</b></p><p>  ofstream outfile("test.dat",ios::app|ios::binary);//打開(kāi)"test.dat"文件,并將指針指向文件尾</p><p>  if(!outfile)</p><p><b>  {</b></p>

75、<p>  cerr<<"test.dat 文件打開(kāi)錯(cuò)誤!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  return;</b></p>&

76、lt;p><b>  }</b></p><p>  file.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  while(!file.eof())</p><p><b>  {</b></p><p>  i+

77、+;//每調(diào)用一次該函數(shù),職員總數(shù)增加1</p><p>  file.read((char*)(this),sizeof(*this));//再讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p><b>  }</b></p><p>  file.close();</p><p><b>  }</b

78、></p><p>  void person::add_person(int& i)//增加人事檔案中職員信息函數(shù)</p><p><b>  {</b></p><p>  string choice="Y";</p><p>  while(choice=="Y"

79、;||choice=="y")</p><p><b>  {</b></p><p>  cout<<"-----新建人事檔案職員信息-----"<<endl;</p><p>  cout<<"請(qǐng)輸入職員的的編號(hào):(1000-9999)"<

80、<endl;</p><p><b>  cin>>num;</b></p><p>  cout<<"請(qǐng)輸入職員姓名:"<<endl;</p><p>  cin>>name;</p><p>  cout<<"請(qǐng)輸入性別:

81、"<<endl;</p><p><b>  cin>>sex;</b></p><p>  while((string)sex!="男"&&(string)sex!="女")</p><p><b>  {</b></p>

82、;<p>  cout<<"您輸入的性別有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p><b>  cin>>sex;</b></p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入年齡:"

83、;<<endl;</p><p><b>  cin>>age;</b></p><p>  cout<<"請(qǐng)輸入該職員的職位:(經(jīng)理,管理員,員工)"<<endl;</p><p>  cin>>position;</p><p>  wh

84、ile((string)position!="經(jīng)理"&&(string)position!="管理員"&&(string)position!="員工")</p><p><b>  {</b></p><p>  cout<<"您輸入的職工職位有誤,請(qǐng)核對(duì)

85、后再輸入:"<<endl;</p><p>  cin>>position;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入該職員的家庭地址:"<<endl;</p><p>  cin>>addr

86、ess;</p><p>  cout<<"請(qǐng)輸入該職員的民族:"<<endl;</p><p>  cin>>nation;</p><p>  cout<<"請(qǐng)輸入職員的政治面貌:(群眾,團(tuán)員,黨員)"<<endl;</p><p>  c

87、in>>political_status;</p><p>  while((string)political_status!="群眾"&&(string)political_status!="團(tuán)員"&&(string)political_status!="黨員")</p><p>&l

88、t;b>  {</b></p><p>  cout<<"您輸入的職工政治面貌有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p>  cin>>political_status;</p><p><b>  }</b></p><p>  co

89、ut<<"請(qǐng)輸入職員的婚姻狀況(未婚,已婚)"<<endl;</p><p>  cin>>marital_status;</p><p>  while((string)marital_status!="未婚"&&(string)marital_status!="已婚")<

90、;/p><p><b>  {</b></p><p>  cout<<"您輸入的職工的婚姻狀況有誤,請(qǐng)核對(duì)后再輸入:"<<endl;</p><p>  cin>>marital_status;</p><p><b>  }</b></p

91、><p>  cout<<"請(qǐng)輸入職員的畢業(yè)學(xué)校:"<<endl;</p><p>  cin>>school;</p><p>  cout<<"請(qǐng)輸入職員的身份證號(hào):"<<endl;</p><p>  cin>>identity;

92、</p><p>  cout<<"請(qǐng)輸入職員的手機(jī)號(hào):"<<endl;</p><p><b>  cin>>tel;</b></p><p>  cout<<"請(qǐng)輸入職員的郵箱:"<<endl;</p><p>  c

93、in>>email;</p><p>  cout<<"請(qǐng)輸入職員的聘用時(shí)間:"<<endl;</p><p>  cin>>engage_time;</p><p>  cout<<"請(qǐng)輸入此次記錄的添加時(shí)間:"<<endl;</p>&l

94、t;p>  cin>>add_time;</p><p>  cout<<endl;</p><p>  ofstream outfile("test.dat",ios::app|ios::binary);//打開(kāi)"test.dat"文件,并將指針指向文件尾</p><p>  if(!outfi

95、le)</p><p><b>  {</b></p><p>  cerr<<"test.dat 文件打開(kāi)錯(cuò)誤!"<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p

96、><p>  outfile.write((char*)(this),sizeof(*this));//將所輸入的信息追加到文件尾部</p><p>  outfile.close();</p><p>  cout<<"信息建立成功!"<<endl;</p><p>  i++; //每調(diào)用一次

97、該函數(shù),職員總數(shù)增加1</p><p>  cout<<"您還想繼續(xù)添加嗎?(y/n)"<<endl;</p><p>  cin>>choice;</p><p>  while(choice!="Y"&&choice!="y"&&cho

98、ice!="N"&&choice!="n")</p><p><b>  {</b></p><p>  cout<<"請(qǐng)按要求鍵入(y/n)"<<endl;</p><p>  cin>>choice;</p><

99、;p><b>  }</b></p><p>  if(choice=="N"||choice=="n")</p><p><b>  {</b></p><p>  outfile.close();</p><p><b>  break;&

100、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void person::showall()//定義顯示人事檔案管理系統(tǒng)中所有職員信息的函數(shù)</p>&

101、lt;p><b>  {</b></p><p>  if(i==0)//人事管理系統(tǒng)中無(wú)此職員,請(qǐng)先增加職員信息信息</p><p>  cout<<"人事管理系統(tǒng)數(shù)據(jù)為空,請(qǐng)先增加職員信息!"<<endl;</p><p><b>  else</b></p>

102、;<p><b>  {</b></p><p>  ifstream infile("test.dat",ios::binary);//打開(kāi)用于讀的binary文件</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p>&l

103、t;p>  cout<<"所有職員的信息如下:"<<endl;</p><p>  while(!infile.eof())//沿未到達(dá)文件尾,繼續(xù)處理</p><p><b>  {</b></p><p>  cout<<this;//輸出當(dāng)前對(duì)象的各數(shù)據(jù)成員</p>

104、<p>  cout<<"*******************************"<<endl;</p><p>  infile.read((char*)(this),sizeof(*this));//再讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p><b>  }</b></p>

105、<p>  infile.close();</p><p><b>  }</b></p><p><b>  }</b></p><p>  bool person::searchnum()//定義按編號(hào)查找職工信息函數(shù)</p><p><b>  {</b><

106、;/p><p>  char number[10];</p><p>  cout<<"-----按編號(hào)查找信息-----"<<endl;</p><p>  cout<<"請(qǐng)輸入要檢索的編號(hào):(1000-9999)"<<endl;</p><p>  cin

107、>>number;</p><p>  ifstream infile("test.dat",ios::binary);</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù),放入*this中</p><p>  while(!infile.eof())</

108、p><p><b>  {</b></p><p>  if(strcmp(num,number)==0)</p><p><b>  {</b></p><p>  cout<<"該編號(hào)的職工信息如下:"<<endl;</p><p>

109、;  cout<<this<<endl;</p><p>  infile.close();</p><p>  return true;</p><p><b>  }</b></p><p>  infile.read((char*)(this),sizeof(*this));//文件指針沒(méi)到

110、達(dá)文件尾,循環(huán)讀取數(shù)據(jù)</p><p><b>  }</b></p><p>  infile.close();</p><p>  cout<<"對(duì)不起,沒(méi)有該編號(hào)的職工信息!"<<endl;</p><p>  return false;</p><p

111、><b>  }</b></p><p>  bool person::searchname()//定義按姓名查找信息函數(shù)</p><p><b>  {</b></p><p>  char na[20];</p><p>  cout<<"-----按姓名查找信息!-

112、----"<<endl;</p><p>  cout<<"請(qǐng)輸入要檢索的職工姓名:"<<endl;</p><p><b>  cin>>na;</b></p><p>  ifstream infile("test.dat",ios::bina

113、ry);</p><p>  infile.read((char*)(this),sizeof(*this));//打開(kāi)文件,讀取數(shù)據(jù)</p><p>  while(!infile.eof())</p><p><b>  {</b></p><p>  if(strcmp(name,na)==0)</p>

114、<p><b>  {</b></p><p>  cout<<"該職工的個(gè)人信息如下:"<<endl;</p><p>  cout<<this;</p><p>  infile.close();</p><p>  return true;<

115、;/p><p><b>  }</b></p><p>  infile.read((char*)(this),sizeof(*this));//文件指針未到文件尾,循環(huán)讀取數(shù)據(jù)</p><p><b>  }</b></p><p>  infile.close();</p><p

116、>  cout<<"對(duì)不起,沒(méi)有您所要檢索的職工信息!"<<endl;</p><p>  return false;</p><p><b>  }</b></p><p>  void person::delnum(int& i)//定義按編號(hào)刪除信息函數(shù)</p>&l

117、t;p><b>  {</b></p><p><b>  char b;</b></p><p>  int delmark=0; //用于標(biāo)記該編號(hào)信息是否已找到</p><p>  char delnumber[10];</p><p>  cout<<"-----

118、按編號(hào)刪除個(gè)人信息-----"<<endl;</p><p>  cout<<"請(qǐng)輸入要?jiǎng)h除的編號(hào):"<<endl;</p><p>  cin>>delnumber;</p><p>  ofstream outfile("tmp.dat",ios::binary);

119、//打開(kāi)用于寫的二進(jìn)制文件"tmp.dat"</p><p>  ifstream infile("test.dat",ios::binary);//打開(kāi)用于讀的二進(jìn)制文件"test.dat"</p><p>  infile.read((char*)(this),sizeof(*this));//從"test.dat&

120、quot;中讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  while(!infile.eof())</p><p><b>  {</b></p><p>  if(strcmp(num,delnumber)==0)</p><p><b>  {</b></p><p

121、>  cout<<"該編號(hào)的個(gè)人信息如下:"<<endl;</p><p>  cout<<this;</p><p>  cout<<endl<<"你確定要?jiǎng)h除該編號(hào)的信息?y/n"<<endl;</p><p><b>  cin>

122、;>b;</b></p><p>  if(b=='y'||b=='Y')</p><p><b>  {</b></p><p>  delmark=1; //將刪除標(biāo)記置為1,表示已刪除信息</p><p>  i--; //確定刪除信

123、息,人事檔案管理系統(tǒng)中成員總數(shù)減1</p><p>  cout<<"信息已刪除!"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p>  delmark=-1;</p>&l

124、t;p><b>  }</b></p><p><b>  else</b></p><p>  outfile.write((char*)(this),sizeof(*this));//將讀得的數(shù)據(jù)寫入"tmp.dat"</p><p>  infile.read((char*)(this),s

125、izeof(*this));//再次讀取一個(gè)類對(duì)象數(shù)據(jù),放于*this中</p><p><b>  }</b></p><p>  infile.close();</p><p>  outfile.close();</p><p>  if(delmark==1)//若找到了刪除對(duì)象,就用"tmp.dta&

126、quot;文件內(nèi)容去充當(dāng)"test.dat"</p><p><b>  {</b></p><p>  ofstream outfile("test.dat",ios::binary);//打開(kāi)用于寫的二進(jìn)制文件"test.dat"</p><p>  ifstream infile

127、("tmp.dat",ios::binary);//打開(kāi)用于讀的二進(jìn)制文件"tmp.dat"</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  while(!infile.eof())</p><p><b&g

128、t;  {</b></p><p>  outfile.write((char*)(this),sizeof(*this));//將從"tmp.dat"中讀取的數(shù)據(jù)寫入" test.dat"中</p><p>  infile.read((char*)(this),sizeof(*this));//再?gòu)?quot;tmp.dat"

129、;中讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p><b>  }</b></p><p>  infile.close(); //關(guān)閉文件"tmp.dat"</p><p>  outfile.close();//關(guān)閉文件"test.dat"</p><p><b&g

130、t;  }</b></p><p>  if(delmark==0)</p><p>  cout<<"欲刪除的職工的編號(hào)尚不存在!"<<endl;</p><p><b>  }</b></p><p>  void person::delname(int&

131、; i)//定義按姓名刪除信息函數(shù)</p><p><b>  {</b></p><p><b>  char b;</b></p><p>  int delmark=0; //用于標(biāo)記該編號(hào)信息是否已找到</p><p>  char delname[20];</p><

132、;p>  cout<<"-----按姓名刪除個(gè)人信息-----"<<endl;</p><p>  cout<<"請(qǐng)輸入要?jiǎng)h除的姓名:"<<endl;</p><p>  cin>>delname;</p><p>  ofstream outfile(&quo

133、t;tmp.dat",ios::binary);//打開(kāi)用于寫的二進(jìn)制文件"tmp.dat"</p><p>  ifstream infile("test.dat",ios::binary);//打開(kāi)用于讀的二進(jìn)制文件"test.dat"</p><p>  infile.read((char*)(this),size

134、of(*this));//從"test.dat"中讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  while(!infile.eof())</p><p><b>  {</b></p><p>  if(strcmp(name,delname)==0)</p><p><b>  

135、{</b></p><p>  cout<<"該人的個(gè)人信息如下:"<<endl;</p><p>  cout<<this;</p><p>  cout<<endl<<"你確定要?jiǎng)h除該編號(hào)的信息?y/n"<<endl;</p>

136、<p><b>  cin>>b;</b></p><p>  if(b=='y'||b=='Y')</p><p><b>  {</b></p><p>  delmark=1; //將刪除標(biāo)記置為1,表示已刪除信息</p><p>  i

137、--; //確定刪除信息,人事檔案管理系統(tǒng)中成員總數(shù)減1</p><p>  cout<<"信息已刪除!"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p>  delm

138、ark=-1;</p><p><b>  }</b></p><p><b>  else</b></p><p>  outfile.write((char*)(this),sizeof(*this));//將讀得的數(shù)據(jù)寫入"tmp.dat"</p><p>  infile

139、.read((char*)(this),sizeof(*this));//再次讀取一個(gè)類對(duì)象數(shù)據(jù),放于*this中</p><p><b>  }</b></p><p>  outfile.close();</p><p>  infile.close();</p><p>  if(delmark==1)//若找到了

140、刪除對(duì)象,就用"tmp.dta"文件內(nèi)容去充當(dāng)"test.dat"</p><p><b>  {</b></p><p>  ofstream outfile("test.dat",ios::binary);//打開(kāi)用于寫的二進(jìn)制文件"test.dat"</p><p

141、>  ifstream infile("tmp.dat",ios::binary);//打開(kāi)用于讀的二進(jìn)制文件"tmp.dat"</p><p>  infile.read((char*)(this),sizeof(*this));//讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p>  while(!infile.eof())</p&

142、gt;<p><b>  {</b></p><p>  outfile.write((char*)(this),sizeof(*this));//將從"tmp.dat"中讀取的數(shù)據(jù)寫入" test.dat"中</p><p>  infile.read((char*)(this),sizeof(*this));/

143、/再?gòu)?quot;tmp.dat"中讀取一個(gè)類對(duì)象數(shù)據(jù)放入*this中</p><p><b>  }</b></p><p>  infile.close();//關(guān)閉文件"tmp.dat"</p><p>  outfile.close();//關(guān)閉文件"test.dat"</p>

144、;<p><b>  }</b></p><p>  if(delmark==0)</p><p>  cout<<"欲刪除的職員姓名不存在!"<<endl;</p><p><b>  }</b></p><p>  int delall

145、(int& i)//定義清空人事管理系統(tǒng)數(shù)據(jù)的函數(shù)</p><p><b>  {</b></p><p><b>  char b;</b></p><p>  cout<<"你真的要清空人事管理系統(tǒng)數(shù)據(jù)嗎?y/n"<<endl;</p><p>

146、;<b>  cin>>b;</b></p><p>  if(b=='y'||b=='Y')</p><p><b>  {</b></p><p>  ofstream outfile("test.dat",ios::trunc);//刪除文件"

147、test.dat"中所有數(shù)據(jù)</p><p>  i=0; //將人事管理系統(tǒng)中職員數(shù)置為0</p><p>  cout<<"人事檔案管理系統(tǒng)數(shù)據(jù)已清空!"<<endl;</p><p><b>  }</b></p><p><b>  return i

148、;</b></p><p><b>  }</b></p><p>  void total()//定義輸出人事檔案管理系統(tǒng)中職員數(shù)的函數(shù)</p><p><b>  {</b></p><p>  cout<<"人事檔案管理系統(tǒng)中的職員總數(shù)為:"<

149、<ends<<ends;</p><p>  cout<<i<<endl;</p><p><b>  }</b></p><p>  void menu() //定義菜單函數(shù)</p><p><b>  { </b></p><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)論