

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 面向對象程序設計課程設計報告</p><p> ?。?011/2012學年第二學期)</p><p> 題目名稱 人事檔案管理 </p><p&
2、gt; 系 部 機電動力與信息工程系 </p><p> 專 業(yè) 計算機科學與技術(工業(yè)控制)
3、 </p><p> 班 級 10級計算機班
4、</p><p> 學 生 xxx </p><p> 學 號 </p><p> 完成時間 2012年 6月19日 </p>&
5、lt;p> 指導老師 xxx </p><p><b> 目 錄</b></p><p><b> 引 言3</b></p><p> 1. 課程設計目的與意義4</p><p> 1.1設計目的與任務4</p><
6、;p> 1.1.1本課程設計的目的4</p><p> 1.1.2本課程設計的任務4</p><p> 1.2 選題背景4</p><p><b> 1.2.1選題4</b></p><p> 1.2.2開發(fā)環(huán)境4</p><p><b> 2. 詳細設計5
7、</b></p><p><b> 2.1需求描述5</b></p><p><b> 2.2功能描述5</b></p><p> 2.3 程序運行說明6</p><p> 2.3.1總體設計6</p><p> 2.3.2 界面設計6<
8、/p><p> 2.3.3 設計內容6</p><p> 2.3.4 程序運行具體說明21</p><p> 3. 課程設計總結28</p><p> 3.1編程日志27</p><p> 3.2 測試報告28</p><p> 4. 心得體會30</p>&
9、lt;p> 5 參考文獻31</p><p><b> 引 言</b></p><p> 隨著人們生活水平的提高,計算機發(fā)展異常迅速。如今,計算機已經深入到我們社會的各個領域,計算機的使用也已不再局限于科學計算,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。通過計算機對各類問題求解已經成為一種高效、快捷的方式。</p><
10、p> 《面向對象程序設計》課程設計是實踐性教學環(huán)節(jié)之一,是《面向對象程序設計》課程的輔助教學課程。該課程設計要求學生綜合運用在《面向對象程序設計》課程中學到的面向對象技術與實際編程相結合,獨立完成一項較為完整、并具有一定實際功能的課程設計任務,同時加深學生對面向對象和C++編程技術的理解和掌握,培養(yǎng)實際的應用程序開發(fā)能力。在課程設計過程中,使學生養(yǎng)成良好的程序設計風格,并掌握C++應用程序的設計開發(fā)過程和編程方法、測試方法。&l
11、t;/p><p> 本課程設計題目為《人事檔案管理》,信息時代的到來和全社會信息化、網絡化建設的興起,使得傳統(tǒng)的人員檔案管理系統(tǒng)和操作方法越來越不能滿足用戶的需要,智能化、網絡化、信息化的人事檔案管理系統(tǒng)應用勢在必行。 </p><p> 人事檔案管理主要解決在一個小型企業(yè)中,進行公司內部人員的分配,調整和更新的程序設計。企業(yè)人事檔案管理是企業(yè)管理的一個重要內容,隨著時代的進步,企業(yè)也逐漸
12、變得龐大起來。如何管理好企業(yè)內部員工的信息,成為企業(yè)管理中的一個大的問題。在這種情況下,一個可以規(guī)范化、自動化的企業(yè)人事管理系統(tǒng)就顯得非常必要。</p><p> 最初的人事檔案管理,都是靠人力來完成的。當企業(yè)規(guī)模比較小的時候,人力可以完成,隨著企業(yè)的規(guī)模越來越大,企業(yè)的員工人數(shù)也越來越多,依然維持著人力進行人事管理,必然會造成工作效率低,工作錯誤增高的問題。</p><p> 人事檔
13、案管理系統(tǒng)就是把分散的企事業(yè)單位的職工信息實行統(tǒng)一、集中、規(guī)范的收集管理,建立分類編號管理、電腦存儲查詢以及防火、防潮、防蛀、防盜等現(xiàn)代化、專業(yè)化的管理系統(tǒng),為企事業(yè)單位和職工解除后顧之憂。</p><p> 1. 課程設計目的與意義</p><p> 1.1設計目的與任務</p><p> 1.1.1本課程設計的目的</p><p>
14、 1)通過課程設計更進一步理解C++的基礎知識和面向對象的思想。</p><p> 2)訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),并在此過程中培養(yǎng)嚴謹?shù)目茖W態(tài)度和良好的工作作風。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能。</p><p> 3)熟練掌握C++中類及類模板在程序中的應用,并熟練了解類中函數(shù)的調用。</p><p&
15、gt; 1.1.2本課程設計的任務</p><p> 使用類實現(xiàn)編寫一個人事檔案管理系統(tǒng) ,能夠實現(xiàn)員工信息增加、刪除、修改、查找、清空、統(tǒng)計,信息的輸入輸出能夠重載輸入與輸出操作符,并且要求有錯誤提示功能,例如輸入日期,輸入錯誤提示重新輸入。</p><p><b> 1.2 選題背景 </b></p><p><b> 1
16、.2.1選題 </b></p><p> 人員檔案管理系統(tǒng)是一個典型的信息管理系統(tǒng),本系統(tǒng)是一個為適應當前各個行業(yè)</p><p> 對人員檔案管理的迫切需求而設計開發(fā)的系統(tǒng)。系統(tǒng)分為添加、查找、顯示、刪除、顯示、清空、統(tǒng)計以及主函數(shù)等幾大模塊,其中各模塊分別實現(xiàn)預定的功能。</p><p> 1.2.2開發(fā)環(huán)境 </p><p
17、> 編程工具: C-Free 5.0 </p><p><b> 機型:lenovo</b></p><p> 操作系統(tǒng): Microsoft Windows XP Professional </p><p><b> 2. 詳細設計</b></p><p><b>
18、 2.1需求描述</b></p><p> 人事檔案管理系統(tǒng)是針對人事處的大量業(yè)務處理工作用計算機進行全面現(xiàn)代化管理,主要包括人員基本情況管理,提供人員基本信息的添加、查詢、顯示、刪除、清空、統(tǒng)計等幾個方面的功能,以實現(xiàn)用戶方便的輸入、查詢、統(tǒng)計、打印相關報表的業(yè)務需求。</p><p> 2.2.1.1系統(tǒng)管理</p><p> 系統(tǒng)啟動的時候
19、有一個管理員用戶,使用這個用戶登陸以后,可以添加其他用戶,而且每個用戶都可以更改自己的密碼。</p><p><b> 登陸系統(tǒng)</b></p><p> 用戶設置:設置用戶密碼,只有管理員才能創(chuàng)建修改刪除其他用戶。</p><p><b> 退出系統(tǒng)</b></p><p> 2.2.1.
20、2人事檔案管理 </p><p> 添加員工信息:對新增員工的基本信息的輸入,包括編號,姓名,性別,年齡,職位,地址,手機號,民族,政治面貌,婚姻狀況,畢業(yè)院校,身份證號,郵箱,聘用時間和記錄時間。</p><p> 之后可以對員工信息進行刪除、瀏覽、繼續(xù)添加、清空、統(tǒng)計等操作。</p><p><b> 2.2功能描述</b></
21、p><p> 人事檔案管理系統(tǒng)主要包含職工個人自然情況,工作情況,簡歷,政治情況等各方面信息。同時還綜合考慮檔案管理工作的性質,總結歸納出所需實現(xiàn)的功能。主要是為人事檔案進行服務,對人事的變動、人事資料、以及人事資料的查詢,統(tǒng)計等功能。</p><p> 總體上說具有編輯,查詢,用戶管理等功能。</p><p> (1)靈活的數(shù)據(jù)記錄編輯功能,可以隨時對記錄進行增
22、加,修改,更新,刪除,瀏覽等編輯操作。并將查詢方式有機溶入編輯界面,可以實現(xiàn)對某項記錄定位,再進行編輯,修改,更新。</p><p> (2)具備分級用戶權限管理設置,以確保檔案的保密性和安全性。</p><p> (3)具有比較友好的人機交互界面,各種操作可以在電腦上直觀的界面上通過人機交互式進行。</p><p> 2.3 程序運行說明</p>
23、<p><b> 2.3.1總體設計</b></p><p> ?。?)定義員工(Person)類,其中包括編號,姓名,年齡,職位(“經理”、“管理員”、“員工”),地址,手機號,民族,政治面貌(“群眾”、“團員”、“黨員”),婚姻狀況(“已婚”、“未婚”),畢業(yè)院校,身份證號,郵箱,聘用時間和記錄時間。</p><p> (2)實現(xiàn)下面的功能 &l
24、t;/p><p> a、設計菜單實現(xiàn)功能選擇; </p><p> b、輸入功能:輸入員工的信息,并保存到文件中;</p><p> c、刪除資料:能夠根據(jù)編號刪除員工的資料;</p><p> d、查詢功能:能夠根據(jù)編號來查看員工的資料;</p><p> e、統(tǒng)計功能:能夠統(tǒng)計在職人員、中共黨員、女教職工
25、、高職稱、高學歷的人數(shù)。</p><p> f、錯誤提示功能:如果輸入的資料不合法,將會提示錯誤,并給予指導。</p><p> 2.3.2 界面設計 </p><p> 在用戶界面部分,根據(jù)需求分析結果,用戶需要一個友善界面。在界面設計上,應</p><p> 做到簡單明了,易于操作,并且要注意到界面的布局,應突出的顯示重要以及出錯
26、信息。</p><p> 在界面設計部分,本系統(tǒng)為用戶提供友好、方便、直觀、簡潔的操作環(huán)境,并且采用柔</p><p> 和的綠色做底色??晒┯脩暨x擇的項目主要有:添加,顯示,查找,刪除,清空等。 </p><p> 2.3.3 設計內容 </p><p><b> (1)實現(xiàn)功能 </b></p>
27、<p> 系統(tǒng)主要包括人員檔案的添加、顯示、查詢、刪除、清空等功能。負責人員只需進</p><p> 入該系統(tǒng)就可以在信息化條件下實現(xiàn)人員檔案的添加、顯示、查詢、刪除、清空等工作。 </p><p> (2)概要設計(涉及類的框圖) </p><p> 符號 名稱 說明
28、 </p><p> 實體 數(shù)據(jù)的源點/終點 </p><p> 輸入/輸出 表示輸入或輸出的報表 </p><p> 處理 能改變數(shù)據(jù)值或數(shù)據(jù)位置的加工或部件 </p><p> 數(shù)據(jù)流 用來
29、連接其他符號,指明數(shù)據(jù)流動方向 </p><p> 存儲 表示任何種類的聯(lián)機存儲 </p><p><b> 流程圖:</b></p><p> <1>Person::add()</p><p> <2>Person::delete()</p>&
30、lt;p> <3>Person::change()</p><p> <4>.Person::find()</p><p> (4)程序注釋與說明</p><p> /*人事檔案管理系統(tǒng)*/</p><p> #include<iostream></p><p>
31、#include<fstream></p><p> #include<string></p><p> using namespace std;</p><p> class person //定義通訊成員類</p><p><b> {</b></p><
32、;p><b> public:</b></p><p> char num[20];//編號</p><p> char name[30];//姓名</p><p> char sex[20];//性別</p><p> char age[20];//年齡</p><p> ch
33、ar position[20];//職位</p><p> char address[500];//地址</p><p> char tel[100];//手機號</p><p> char nation[30];//民族</p><p> char political_status[20];//政治面貌</p><
34、;p> char marital_status[20];//婚姻狀況</p><p> char school[200];//畢業(yè)院校</p><p> char identity[500];//身份證號</p><p> char email[20];//郵箱</p><p> char engage_time[100];/
35、/聘用時間</p><p> char add_time[100];//記錄時間 </p><p> public: //對其成員函數(shù)的聲明</p><p> void add_person(int&); //新增通訊成員</p><p> bool searchnum(); //按編號
36、查找</p><p> bool searchname(); //按姓名查找</p><p> void delnum(int&); //按編號刪除</p><p> void delname(int&); //按姓名刪除</p><p> void showall(); //統(tǒng)計職員數(shù)</p>
37、<p> void get_i(); //讀取數(shù)據(jù)文件職員數(shù)</p><p> friend ostream &operator<<(ostream& out,person& pe);//重載運算符"<<"</p><p><b> };</b></p>
38、<p> ostream &operator<<(ostream& out,person& pe)//定義重載運算符"<<",從而直接輸出類對象</p><p><b> {</b></p><p> out<<"編號: "<<pe.n
39、um<<endl;</p><p> out<<"姓名: "<<pe.name<<endl;</p><p> out<<"性別: "<<pe.sex<<endl;</p><p> out<<"年齡:
40、 "<<pe.age<<endl;</p><p> out<<"職位: "<<pe.position<<endl;</p><p> out<<"手機號: "<<pe.tel<<endl;</p><p>
41、; out<<"民族: "<<pe.nation<<endl;</p><p> out<<"政治面貌: "<<pe.political_status<<endl;</p><p> out<<"婚姻狀況:"<<pe.mar
42、ital_status<<endl;</p><p> out<<"畢業(yè)院校:"<<pe.school<<endl;</p><p> out<<"身份證號:"<<pe.identity<<endl;</p><p> out<&l
43、t;"郵箱: "<<pe.email<<endl;</p><p> out<<"聘用時間: "<<pe.engage_time<<endl;</p><p> out<<"記錄時間:"<<pe.add_time<<endl;
44、</p><p> return out;</p><p><b> }</b></p><p> int i=0; //定義全局變量,用于記錄人事檔案管理系統(tǒng)中的職員數(shù)</p><p> void person::get_i()</p><p><b> {</b>
45、;</p><p> ifstream file("test.dat",ios::binary|ios::in);//打開用于讀的binary文件</p><p><b> if(!file)</b></p><p><b> {</b></p><p> ofstrea
46、m outfile("test.dat",ios::app|ios::binary);//打開"test.dat"文件,并將指針指向文件尾</p><p> if(!outfile)</p><p><b> {</b></p><p> cerr<<"test.dat 文件打
47、開錯誤!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p>&
48、lt;p> file.read((char*)(this),sizeof(*this));//讀取一個類對象數(shù)據(jù)放入*this中</p><p> while(!file.eof())</p><p><b> {</b></p><p> i++;//每調用一次該函數(shù),職員總數(shù)增加1</p><p>
49、file.read((char*)(this),sizeof(*this));//再讀取一個類對象數(shù)據(jù)放入*this中</p><p><b> }</b></p><p> file.close();</p><p><b> }</b></p><p> void person::add
50、_person(int& i)//增加人事檔案中職員信息函數(shù)</p><p><b> {</b></p><p> string choice="Y";</p><p> while(choice=="Y"||choice=="y")</p><p&
51、gt;<b> {</b></p><p> cout<<"-----新建人事檔案職員信息-----"<<endl;</p><p> cout<<"請輸入職員的的編號:(1000-9999)"<<endl;</p><p><b> ci
52、n>>num;</b></p><p> cout<<"請輸入職員姓名:"<<endl;</p><p> cin>>name;</p><p> cout<<"請輸入性別:"<<endl;</p><p><
53、;b> cin>>sex;</b></p><p> while((string)sex!="男"&&(string)sex!="女")</p><p><b> {</b></p><p> cout<<"您輸入的性別有誤,請核
54、對后再輸入:"<<endl;</p><p><b> cin>>sex;</b></p><p><b> }</b></p><p> cout<<"請輸入年齡:"<<endl;</p><p><b>
55、; cin>>age;</b></p><p> cout<<"請輸入該職員的職位:(經理,管理員,員工)"<<endl;</p><p> cin>>position;</p><p> while((string)position!="經理"&&a
56、mp;(string)position!="管理員"&&(string)position!="員工")</p><p><b> {</b></p><p> cout<<"您輸入的職工職位有誤,請核對后再輸入:"<<endl;</p><p&g
57、t; cin>>position;</p><p><b> }</b></p><p> cout<<"請輸入該職員的家庭地址:"<<endl;</p><p> cin>>address;</p><p> cout<<&quo
58、t;請輸入該職員的民族:"<<endl;</p><p> cin>>nation;</p><p> cout<<"請輸入職員的政治面貌:(群眾,團員,黨員)"<<endl;</p><p> cin>>political_status;</p><
59、p> while((string)political_status!="群眾"&&(string)political_status!="團員"&&(string)political_status!="黨員")</p><p><b> {</b></p><p>
60、cout<<"您輸入的職工政治面貌有誤,請核對后再輸入:"<<endl;</p><p> cin>>political_status;</p><p><b> }</b></p><p> cout<<"請輸入職員的婚姻狀況(未婚,已婚)"<
61、<endl;</p><p> cin>>marital_status;</p><p> while((string)marital_status!="未婚"&&(string)marital_status!="已婚")</p><p><b> {</b><
62、;/p><p> cout<<"您輸入的職工的婚姻狀況有誤,請核對后再輸入:"<<endl;</p><p> cin>>marital_status;</p><p><b> }</b></p><p> cout<<"請輸入職員的畢業(yè)
63、學校:"<<endl;</p><p> cin>>school;</p><p> cout<<"請輸入職員的身份證號:"<<endl;</p><p> cin>>identity;</p><p> cout<<"請輸
64、入職員的手機號:"<<endl;</p><p><b> cin>>tel;</b></p><p> cout<<"請輸入職員的郵箱:"<<endl;</p><p> cin>>email;</p><p> cout
65、<<"請輸入職員的聘用時間:"<<endl;</p><p> cin>>engage_time;</p><p> cout<<"請輸入此次記錄的添加時間:"<<endl;</p><p> cin>>add_time;</p>&l
66、t;p> cout<<endl;</p><p> ofstream outfile("test.dat",ios::app|ios::binary);//打開"test.dat"文件,并將指針指向文件尾</p><p> if(!outfile)</p><p><b> {</b&
67、gt;</p><p> cerr<<"test.dat 文件打開錯誤!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> outfile.write((char*)(this
68、),sizeof(*this));//將所輸入的信息追加到文件尾部</p><p> outfile.close();</p><p> cout<<"信息建立成功!"<<endl;</p><p> i++; //每調用一次該函數(shù),職員總數(shù)增加1</p><p> cout<&
69、lt;"您還想繼續(xù)添加嗎?(y/n)"<<endl;</p><p> cin>>choice;</p><p> while(choice!="Y"&&choice!="y"&&choice!="N"&&choice!="n
70、")</p><p><b> {</b></p><p> cout<<"請按要求鍵入(y/n)"<<endl;</p><p> cin>>choice;</p><p><b> }</b></p><
71、;p> if(choice=="N"||choice=="n")</p><p><b> {</b></p><p> outfile.close();</p><p><b> break;</b></p><p><b> }&
72、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> void person::showall()//定義顯示人事檔案管理系統(tǒng)中所有職員信息的函數(shù)</p><p><b> {</b></p>&
73、lt;p> if(i==0)//人事管理系統(tǒng)中無此職員,請先增加職員信息信息</p><p> cout<<"人事管理系統(tǒng)數(shù)據(jù)為空,請先增加職員信息!"<<endl;</p><p><b> else</b></p><p><b> {</b></p>
74、;<p> ifstream infile("test.dat",ios::binary);//打開用于讀的binary文件</p><p> infile.read((char*)(this),sizeof(*this));//讀取一個類對象數(shù)據(jù)放入*this中</p><p> cout<<"所有職員的信息如下:"
75、<<endl;</p><p> while(!infile.eof())//沿未到達文件尾,繼續(xù)處理</p><p><b> {</b></p><p> cout<<(*this);//輸出當前對象的各數(shù)據(jù)成員</p><p> cout<<"*********
76、**********************"<<endl;</p><p> infile.read((char*)(this),sizeof(*this));//再讀取一個類對象數(shù)據(jù)放入*this中</p><p><b> }</b></p><p> infile.close();</p>&l
77、t;p><b> }</b></p><p><b> }</b></p><p> bool person::searchnum()//定義按編號查找職工信息函數(shù)</p><p><b> {</b></p><p> char number[10];<
78、/p><p> cout<<"-----按編號查找信息-----"<<endl;</p><p> cout<<"請輸入要檢索的編號:(1000-9999)"<<endl;</p><p> cin>>number;</p><p> if
79、stream infile("test.dat",ios::binary);</p><p> infile.read((char*)(this),sizeof(*this));//讀取一個類對象數(shù)據(jù),放入*this中</p><p> while(!infile.eof())</p><p><b> {</b>&l
80、t;/p><p> if(strcmp(num,number)==0)</p><p><b> {</b></p><p> cout<<"該編號的職工信息如下:"<<endl;</p><p> cout<<(*this)<<endl;</
81、p><p> infile.close();</p><p> return true;</p><p><b> }</b></p><p> infile.read((char*)(this),sizeof(*this));//文件指針沒到達文件尾,循環(huán)讀取數(shù)據(jù)</p><p><b
82、> }</b></p><p> infile.close();</p><p> cout<<"對不起,沒有該編號的職工信息!"<<endl;</p><p> return false;</p><p><b> }</b></p>
83、<p> bool person::searchname()//定義按姓名查找信息函數(shù)</p><p><b> {</b></p><p> char na[20];</p><p> cout<<"-----按姓名查找信息!-----"<<endl;</p>&l
84、t;p> cout<<"請輸入要檢索的職工姓名:"<<endl;</p><p><b> cin>>na;</b></p><p> ifstream infile("test.dat",ios::binary);</p><p> infile.rea
85、d((char*)(this),sizeof(*this));//打開文件,讀取數(shù)據(jù)</p><p> while(!infile.eof())</p><p><b> {</b></p><p> if(strcmp(name,na)==0)</p><p><b> {</b><
86、/p><p> cout<<"該職工的個人信息如下:"<<endl;</p><p> cout<<(*this);</p><p> infile.close();</p><p> return true;</p><p><b> }<
87、/b></p><p> infile.read((char*)(this),sizeof(*this));//文件指針未到文件尾,循環(huán)讀取數(shù)據(jù)</p><p><b> }</b></p><p> infile.close();</p><p> cout<<"對不起,沒有您所要檢
88、索的職工信息!"<<endl;</p><p> return false;</p><p><b> } </b></p><p> void person::delnum(int& i)//定義按編號刪除信息函數(shù)</p><p><b> {</b><
89、/p><p><b> char b;</b></p><p> int delmark=0; //用于標記該編號信息是否已找到</p><p> char delnumber[10];</p><p> cout<<"-----按編號刪除個人信息-----"<<endl;
90、</p><p> cout<<"請輸入要刪除的編號:"<<endl;</p><p> cin>>delnumber;</p><p> ofstream outfile("tmp.dat",ios::binary);//打開用于寫的二進制文件"tmp.dat"&
91、lt;/p><p> ifstream infile("test.dat",ios::binary);//打開用于讀的二進制文件"test.dat"</p><p> infile.read((char*)(this),sizeof(*this));//從"test.dat"中讀取一個類對象數(shù)據(jù)放入*this中</p>
92、<p> while(!infile.eof())</p><p><b> {</b></p><p> if(strcmp(num,delnumber)==0)</p><p><b> {</b></p><p> cout<<"該編號的個人信息如
93、下:"<<endl;</p><p> cout<<(*this);</p><p> cout<<endl<<"你確定要刪除該編號的信息?y/n"<<endl;</p><p><b> cin>>b;</b></p>&
94、lt;p> if(b=='y'||b=='Y')</p><p><b> {</b></p><p> delmark=1; //將刪除標記置為1,表示已刪除信息</p><p> i--; //確定刪除信息,人事檔案管理系統(tǒng)中成員總數(shù)減1</p>&
95、lt;p> cout<<"信息已刪除!"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p> delmark=-1;</p><p><b> }</b>&
96、lt;/p><p><b> else</b></p><p> outfile.write((char*)(this),sizeof(*this));//將讀得的數(shù)據(jù)寫入"tmp.dat"</p><p> infile.read((char*)(this),sizeof(*this));//再次讀取一個類對象數(shù)據(jù),放于
97、*this中</p><p><b> }</b></p><p> infile.close();</p><p> outfile.close();</p><p> if(delmark==1)//若找到了刪除對象,就用"tmp.dta"文件內容去充當"test.dat&quo
98、t;</p><p><b> {</b></p><p> ofstream outfile("test.dat",ios::binary);//打開用于寫的二進制文件"test.dat"</p><p> ifstream infile("tmp.dat",ios::bina
99、ry);//打開用于讀的二進制文件"tmp.dat"</p><p> infile.read((char*)(this),sizeof(*this));//讀取一個類對象數(shù)據(jù)放入*this中</p><p> while(!infile.eof())</p><p><b> {</b></p><
100、;p> outfile.write((char*)(this),sizeof(*this));//將從"tmp.dat"中讀取的數(shù)據(jù)寫入" test.dat"中</p><p> infile.read((char*)(this),sizeof(*this));//再從"tmp.dat"中讀取一個類對象數(shù)據(jù)放入*this中</p>
101、<p><b> }</b></p><p> infile.close(); //關閉文件"tmp.dat"</p><p> outfile.close();//關閉文件"test.dat"</p><p><b> }</b></p><
102、;p> if(delmark==0)</p><p> cout<<"欲刪除的職工的編號尚不存在!"<<endl;</p><p><b> }</b></p><p> void person::delname(int& i)//定義按姓名刪除信息函數(shù)</p>&
103、lt;p><b> {</b></p><p><b> char b;</b></p><p> int delmark=0; //用于標記該編號信息是否已找到</p><p> char delname[20];</p><p> cout<<"----
104、-按姓名刪除個人信息-----"<<endl;</p><p> cout<<"請輸入要刪除的姓名:"<<endl;</p><p> cin>>delname;</p><p> ofstream outfile("tmp.dat",ios::binary);/
105、/打開用于寫的二進制文件"tmp.dat"</p><p> ifstream infile("test.dat",ios::binary);//打開用于讀的二進制文件"test.dat"</p><p> infile.read((char*)(this),sizeof(*this));//從"test.dat&q
106、uot;中讀取一個類對象數(shù)據(jù)放入*this中</p><p> while(!infile.eof())</p><p><b> {</b></p><p> if(strcmp(name,delname)==0)</p><p><b> {</b></p><p&g
107、t; cout<<"該人的個人信息如下:"<<endl;</p><p> cout<<(*this);</p><p> cout<<endl<<"你確定要刪除該編號的信息?y/n"<<endl;</p><p><b> cin>
108、;>b;</b></p><p> if(b=='y'||b=='Y')</p><p><b> {</b></p><p> delmark=1; //將刪除標記置為1,表示已刪除信息</p><p> i--; //確定刪除信息,人事檔案
109、管理系統(tǒng)中成員總數(shù)減1</p><p> cout<<"信息已刪除!"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p> delmark=-1;</p><p>
110、;<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),sizeof(
111、*this));//再次讀取一個類對象數(shù)據(jù),放于*this中</p><p><b> }</b></p><p> outfile.close();</p><p> infile.close();</p><p> if(delmark==1)//若找到了刪除對象,就用"tmp.dta"文
112、件內容去充當"test.dat"</p><p><b> {</b></p><p> ofstream outfile("test.dat",ios::binary);//打開用于寫的二進制文件"test.dat"</p><p> ifstream infile("
113、;tmp.dat",ios::binary);//打開用于讀的二進制文件"tmp.dat"</p><p> infile.read((char*)(this),sizeof(*this));//讀取一個類對象數(shù)據(jù)放入*this中</p><p> while(!infile.eof())</p><p><b> {&
114、lt;/b></p><p> outfile.write((char*)(this),sizeof(*this));//將從"tmp.dat"中讀取的數(shù)據(jù)寫入" test.dat"中</p><p> infile.read((char*)(this),sizeof(*this));//再從"tmp.dat"中讀取一個
115、類對象數(shù)據(jù)放入*this中</p><p><b> }</b></p><p> infile.close();//關閉文件"tmp.dat"</p><p> outfile.close();//關閉文件"test.dat"</p><p><b> }<
116、;/b></p><p> if(delmark==0)</p><p> cout<<"欲刪除的職員姓名不存在!"<<endl;</p><p><b> }</b></p><p> int delall(int& i)//定義清空人事管理系統(tǒng)數(shù)據(jù)的
117、函數(shù)</p><p><b> {</b></p><p><b> char b;</b></p><p> cout<<"你真的要清空人事管理系統(tǒng)數(shù)據(jù)嗎?y/n"<<endl;</p><p><b> cin>>b;&l
118、t;/b></p><p> if(b=='y'||b=='Y')</p><p><b> {</b></p><p> ofstream outfile("test.dat",ios::trunc);//刪除文件"test.dat"中所有數(shù)據(jù)</p&g
119、t;<p> i=0; //將人事管理系統(tǒng)中職員數(shù)置為0</p><p> cout<<"人事檔案管理系統(tǒng)數(shù)據(jù)已清空!"<<endl;</p><p><b> }</b></p><p><b> return i;</b></p><
120、p><b> }</b></p><p> void total()//定義輸出人事檔案管理系統(tǒng)中職員數(shù)的函數(shù)</p><p><b> {</b></p><p> cout<<"人事檔案管理系統(tǒng)中的職員總數(shù)為:"<<ends<<ends;</p
121、><p> cout<<i<<endl;</p><p><b> }</b></p><p> void menu() //定義菜單函數(shù)</p><p><b> { </b></p><p> cout<<endl; <
122、;/p><p> cout<< "---------------------------人事檔案管理系統(tǒng)------------------------------------"<<endl<<endl; </p><p> cout<< "-------------------------此系統(tǒng)由【李林】完成-
123、-----------------------"<<endl<<endl; </p><p> cout<<"\t\t\t 1:添加職員具體信息"<<endl; </p><p> cout<<"\t\t\t 2:按姓名查找職員信息"<<endl; <
124、/p><p> cout<<"\t\t\t 3:按編號查找職員信息"<<endl; </p><p> cout<<"\t\t\t 4:按姓名刪除職員信息"<<endl; </p><p> cout<<"\t\t\t 5:按編號刪除職員信息"
125、<<endl; </p><p> cout<<"\t\t\t 6:顯示人事管理系統(tǒng)中所有職員信息"<<endl; </p><p> cout<<"\t\t\t 7:清空人事管理系統(tǒng)中所有職員信息"<<endl;</p><p> cout<<&q
126、uot;\t\t\t 8:統(tǒng)計人事管理系統(tǒng)中的職員總數(shù)"<<endl;</p><p> cout<<"\t\t\t 0:退出人事檔案管理系統(tǒng)"<<endl; </p><p> cout<<"****************************************************
127、****************************"<<endl; </p><p><b> } </b></p><p> void password()</p><p><b> {</b></p><p> string password;</p&
128、gt;<p> int j=1; //密碼出錯次數(shù)</p><p> cout<<"欲使用本系統(tǒng),請輸入本系統(tǒng)的密碼:"<<endl;</p><p> cin>>password;</p><p> while(password!="lilin"&&j
129、<=3)</p><p><b> {</b></p><p> if(j==3&&password!="lilin")</p><p><b> {</b></p><p> cout<<"您連續(xù)三次輸入密碼有誤,系統(tǒng)自動退出
130、"<<endl;</p><p><b> exit(0);</b></p><p><b> }</b></p><p> cout<<"您輸入的密碼有誤,請再次輸入:"<<endl;</p><p> cin>>
131、;password;</p><p><b> j++;</b></p><p><b> }</b></p><p> if(password=="lilin"&&j<=3)</p><p><b> {</b></p&
132、gt;<p> cout<<endl<<"歡迎進入人事檔案管理系統(tǒng)\n請根據(jù)系統(tǒng)功能列表選擇相應的功能(請輸入選項對應的數(shù)字)"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void
133、 manage()//定義控制函數(shù)</p><p><b> { </b></p><p> person per;</p><p> per.get_i();</p><p> int choice,k=1;</p><p><b> menu();</b>&l
134、t;/p><p> password();</p><p><b> while(k)</b></p><p><b> {</b></p><p> cin>>choice;</p><p> switch(choice) </p><
135、;p><b> { </b></p><p><b> case 1:</b></p><p> per.add_person(i);//調用增加人事檔案中職員信息函數(shù)</p><p><b> break; </b></p><p><b>
136、case 2:</b></p><p> per.searchname();//調用按姓名查找職工信息函數(shù)</p><p><b> break;</b></p><p><b> case 3:</b></p><p> per.searchnum();//調用按編號查找職工信
137、息函數(shù)</p><p><b> break;</b></p><p><b> case 4:</b></p><p> per.delname(i);//調用按姓名刪除職工信息函數(shù)</p><p><b> break;</b></p><p&g
138、t;<b> case 5:</b></p><p> per.delnum(i);//調用按編號刪除職工信息函數(shù)</p><p><b> break;</b></p><p><b> case 6:</b></p><p> per.showall();//調用
139、顯示人事檔案管理系統(tǒng)中所有職員信息的函數(shù)</p><p><b> break;</b></p><p><b> case 7:</b></p><p> delall(i);//調用清空人事檔案管理系統(tǒng)中所有數(shù)據(jù)的函數(shù)</p><p><b> break;</b>
140、</p><p><b> case 8:</b></p><p> total();//調用輸出人事檔案管理系統(tǒng)中職員數(shù)的函數(shù)</p><p><b> break;</b></p><p><b> case 0:</b></p><p>
141、 cout<<endl<<"謝謝本次使用由 【李林】開發(fā)的人事檔案管理系統(tǒng),再見!"<<endl<<endl;</p><p><b> k=0;</b></p><p><b> break;</b></p><p><b> defau
142、lt:</b></p><p> cout<<"您輸入的選項有錯,請重新選擇!";</p><p><b> }</b></p><p><b> if(k!=0)</b></p><p><b> {</b></p&g
143、t;<p><b> menu();</b></p><p> cout<<"請根據(jù)系統(tǒng)功能列表選擇相應的功能(請輸入選項對應的數(shù)字)"<<endl;</p><p><b> }</b></p><p><b> }</b></
144、p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p> system("color");//設置背景和前景顏色 </p><p><b> manage();<
145、/b></p><p><b> }</b></p><p> 2.3.4 程序運行具體說明</p><p><b> ?。?)涉及知識點 </b></p><p> 類封裝、面向對象程序設計、數(shù)組的應用、循環(huán)語句的使用、過程化設計的思想等。 </p><p>
146、?。?)系統(tǒng)運行(主要運行界面抓圖) </p><p> <1>編譯首頁截圖: </p><p> <2>輸入系統(tǒng)密碼(lilin)之后的頁面截圖:</p><p> <3>選擇功能列表1(添加職工具體信息)的頁面截圖: </p><p> <4>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論