《c++人事管理系統(tǒng)報告.doc》由會員分享,可在線閱讀,更多相關《c++人事管理系統(tǒng)報告.doc(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
課程設計報告
課程名稱 面向對象課程設計
設計題目 人事管理系統(tǒng)
專業(yè)班級
姓 名
學 號
指導教師
起止時間 2010年12月20日-12月31日
成 績 評 定
考核
內容
設計
表現(xiàn)
設 計
報 告
答辯
綜合
評定
成 績
電氣與信息學院
人事管理系統(tǒng)
一、課程設計的目的
現(xiàn)代信息技術的發(fā)展,在改變著我們的生活方式的同時,也改變著我們的工作方式,使傳統(tǒng)意義上的人事管理的形式和內涵都在發(fā)生著根本性的變化。在過去,一支筆和一張繪圖桌,可能就是進行辦公的全部工具。今天,電腦、掃描儀和打印機等,已基本取代了舊的辦公用具。如今,人事管理己完全可以通過電腦進行,并在計算機輔助下準確快速地完成許多復雜的工作。這些都大大地縮短管理的時間。而今天,人事管理的內容己經(jīng)轉變?yōu)閷Ω鼮閺V泛的系統(tǒng)價值的追求。信息管理,如今已是一個熱門話題,它已為許多企業(yè)所采用。我認為,在現(xiàn)代化的進程中,引入現(xiàn)代管理的思想,建立一套可面向企事業(yè)單位人事的信息管理系統(tǒng),也是十分必要的
二、課程設計的要求
要求了解企業(yè)管理信息系統(tǒng)開發(fā)的全過程,理解信息系統(tǒng)課程相關的概念,掌握管理信息系統(tǒng)的開發(fā)方法。主要包括:登陸的兩個用戶:管理員、職工
管理員:可以對職工信息進行添加信息、刪除信息、查詢員工信息、修改員工信息、瀏覽員工信息。
用戶:可以對自己的信息進行瀏覽、修改、查詢;還可以對別人的信息進行查詢,瀏覽。
開發(fā)這個系統(tǒng)的目的就是幫助企業(yè)的人力資源部門提高工作效率,實現(xiàn)企業(yè)人事信息管理的系統(tǒng)化,規(guī)范化和自動話。根據(jù)這個系統(tǒng)最終實現(xiàn)的主要功能如下:
系統(tǒng)部分:主要完成本系統(tǒng)的維護工作。
員工基本信息部分:主要完成員工基本信息的管理。
本系統(tǒng)是個簡單的程序,由于時間和技術有限,功能不是多完整,多具體,還請包涵。
本系統(tǒng)的功能模塊圖如下:
人事管理系統(tǒng)
添加職員
刪除職員
查詢員工
修改
信息
信息瀏覽
退出系統(tǒng)
管
理
員
登
陸
職工登陸
查詢員工
修改
信息
信息瀏覽
圖1功能層次圖
三、設計思路
1. 系統(tǒng)分析
系統(tǒng)開發(fā)背景、開發(fā)范圍、建設目標與必要性
人事信息管理是一個單位信息管理的重要組成部分,它的內容對于一個單位的人事管理起著至關重要的作用。人事信息管理系統(tǒng)應該能夠為管理者提供充足的信息和快捷的查詢手段,但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點。如:效率低、保密性差,另外時間一長,將產生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。
隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機對人事信息進行管理,具有著手工管理所無法比擬的優(yōu)點。這些優(yōu)點能夠極大地提高人事管理的效率,也是企業(yè)的科學化、正規(guī)化管理,與世界接軌的重要條件。根據(jù)以上情況,決定實施建立人事信息管理系統(tǒng), 因為人事信息管理是一個企業(yè)單位不可缺少的部分,它的內容對于企業(yè)的決策者和管理者來說都至關重要,所以人事信息管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。隨著計算機技術的飛速發(fā)展,計算機在企業(yè)管理中應用的普及,利用計算實現(xiàn)企業(yè)人事檔案的管理勢在必行。當前企業(yè)信息管理系統(tǒng)正在從US結構向B/S結構轉移,但是由于安全性等方面的因素,C/S結構的管理信息系統(tǒng)仍然占據(jù)企業(yè)管理信息系統(tǒng)的主流。人事管理系統(tǒng)是現(xiàn)代企業(yè)管理工作不可缺少的一部分,是適應現(xiàn)代企業(yè)制度要求、推動企業(yè)勞動人事管理走向科學化、規(guī)范化的必要條件。
該系統(tǒng)主要從以下幾個功能來實現(xiàn)的:
新增:添加新員工的個人信息。
修改:修改已有員工的個人信息。
刪除:刪除已有員工的個人信息。
查詢:根據(jù)條件查詢員工的信息。
顯示所有:顯示所有員工的信息。
四、系統(tǒng)流程圖
1.流程分析
通過對職工管理管理業(yè)務的詳細調查分析,弄清了職工管理工作的業(yè)務流程和管理功能,系統(tǒng)業(yè)務流程圖如下:
本系統(tǒng)業(yè)務流程圖:
管理員:
管理員
修改員工信息
刪除員工信息
員工信息修改
員工信息更新
插入員工信息
圖2業(yè)務流程圖
從該流程圖可以看出職工管理系統(tǒng)主要有以下幾項管理功能:
1) 員工信息刪除:在接到認識部門的員工離職報告后,被解雇或者辭職的員工信息將被管理員刪除。
2) 員工信息修改:在公司員工發(fā)生職位變化后,人事部門向系統(tǒng)管理者發(fā)出員工信息修改報告,管理員修改員工信息。
3) 員工信息插入:當有新員工進入公司市,管理員在數(shù)據(jù)庫中插入新的員工信息。
4) 信息查詢:輸入要查詢的人姓名,很快就出現(xiàn)這個人的所有信息
職員:
職員
瀏覽員工信息
瀏覽其他員工信息
查詢員工信息
圖3業(yè)務流程圖
從該流程圖可以看出職工管理系統(tǒng)主要有以下幾項管理功能:
1) 員工信息瀏覽:員工可以自己瀏覽自己的信息,及時發(fā)現(xiàn)錯誤,及時修改個人的信息保證個人信息的準確性。
2) 員工信息修改:這里是我個人加入一個比較人性化的設計,考慮到我做的只是一個小型的系統(tǒng),沒有什么隱私或者公司利益、個人利益的牽扯,所以員工也可以自行修改自己不正確的信息。
3) 員工瀏覽別人的信息:我這個員工可以通過查找姓名看到別人的信息,可以方便員工要聯(lián)系某人時不知道他的聯(lián)系方式,當然必須是熟悉你的人才可以看到你的信息,不會流露到公司外部,所以不牽扯隱私暴露問題。
2.流程圖
確認對數(shù)據(jù)文件的任何修改自己保存
獲取指向數(shù)據(jù)流
獲取新的ID值
添加新記錄,并保存
更新記錄
把游標移到最后一記錄
結束
開始
圖4 增加記錄的流程圖
圖5 刪除記錄的流程圖
開始
結束
刪除記錄
是
游標移到下一條記錄
記錄內容為空
更新表單
游標在文件尾
游標在文件頭
否
是
否
游標移動到最后一條記錄
3.數(shù)據(jù)字典
為了對數(shù)據(jù)流程圖中的各個元素作出詳細的說明,建立數(shù)據(jù)字典是必要的。數(shù)據(jù)字典主要是對數(shù)據(jù)流程圖中的數(shù)據(jù)項、數(shù)據(jù)結構、數(shù)據(jù)流、處理邏輯、數(shù)據(jù)存儲和外部實體等六個方面進行具體的定義。數(shù)據(jù)流程圖和數(shù)據(jù)字典一起使用,就可以從圖形和文字兩個方面對系統(tǒng)的邏輯模型進行完整的描述。
五、類的層次圖
員工檔案:員工基本信息(姓名,學歷等)
表1 員工基本信息
字段名
數(shù)據(jù)類型
關鍵字段
說明
編號
整型
是
員工姓名
Char
否
性別
Char
否
男、女
職務
Char
否
出生年月
日期/時間
否
身份證號
Char
否
家庭住址
Char
否
電話號
Char
否
六、系統(tǒng)功能模塊圖
1.系統(tǒng)主界面
打開項目,編輯運行,進入主界面。如圖6
圖6登陸界面
圖 7管理員主界面
2.增加界面
打開系統(tǒng)主界面,點擊新增按鈕,進入增加員工信息界面。如圖5
圖8增加界面
進入新增界面,添加職工信息。這樣就寫入文件中啦
3.查詢界面
點擊主界面中的查詢按鈕,進入查詢職工信息界面。系統(tǒng)列出以下查詢條件:如圖9
圖9查詢界面
輸入要查詢的員工的姓名,就會出現(xiàn)下面的內容:
圖10查詢結果界面
4.修改界面
在你還想進行何種操作:輸入3,修改查找人信息,先輸入自己要修改人的姓名,然后直接寫入自己要修改的內容就行啦,這里有點錯誤,因為能力有限,我沒找出來。
圖11修改界面
這樣就修改完了,我們可以通過顯示查找人信息查找下,如圖12
圖12修改成功界面
由于上面的錯誤,導致里面的值會出現(xiàn)這樣一種狀況,我請教了同學沒有人會,我能力有限時間有限就這樣,希望你們諒解!
5.顯示所有界面
選擇5.顯示所有在廠員工,系統(tǒng)會顯示所有員工的信息。如圖13
圖13 顯示界面
6.刪除界面
選擇你要進行的操作,輸入4按回車,在輸入要刪除的人的姓名,操作如圖14、15
圖14刪除界面
圖15刪除界面
然后輸入y就會刪除員工信息,輸入N放棄刪除如圖16
圖16刪除界面
七、關鍵程序代碼
//全部代碼、界面及注釋
#include
#include
#include
#include
#include
#include
char mima[20],employname[10];
int sl,k=1,lenth=0;
char NAME[20];
struct date
{
int year;
int month;
int day;
};
struct infor
{
char name1[20]; //姓名
char sex1[3]; //性別
char zhiwu1[10]; //職務
char ID1[20]; //身份證號
char brithday1[12]; //生日
char address1[50]; //家庭住址
char tele1[20]; //電話號碼
char idemployee1[20]; //工作編號
char money1[5];
}inf[100];
void tiquxinxi() //提取信息
{
char e;
int i;
int j;
ifstream myfile("d:\\q.txt",ios::nocreate);
for(i=0;i<1000;i++)
{
myfile.getline(inf[i].name1,11);
if(strlen(inf[i].name1)<2) break;
for(j=1;j<30;j++)
if(inf[i].name1[j]== ) inf[i].name1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].sex1,4);
for(j=1;j<30;j++)
if(inf[i].sex1[j]== ) inf[i].sex1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].zhiwu1,11);
for(j=1;j<30;j++)
if(inf[i].zhiwu1[j]== ) inf[i].zhiwu1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].idemployee1,6);
for(j=1;j<30;j++)
if(inf[i].idemployee1[j]== ) inf[i].idemployee1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].ID1,21);
for(j=1;j<30;j++)
if(inf[i].ID1[j]== ) inf[i].ID1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].brithday1,11);
myfile.get(e);
myfile.getline(inf[i].address1,31);
for(j=1;j<30;j++)
if(inf[i].address1[j]== ) inf[i].address1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].tele1,13);
for(j=1;j<30;j++)
if(inf[i].tele1[j]== ) inf[i].tele1[j]=\0;
myfile.get(e);
myfile.getline(inf[i].money1,6);
for(j=1;j<30;j++)
if(inf[i].money1[j]== ) inf[i].money1[j]=\0;
myfile.get(e);
}
lenth=i;
myfile.close();
}
class people //人的類
{
protected:
char name[20]; //姓名
char sex[2]; //性別
char zhiwu[10]; //職務
char ID[20]; //身份證號
date brithday; //生日
char address[50]; //家庭住址
char tele[20]; //電話號碼
char idemployee[20]; //工作編號
double money;
public:
void input_inf() //輸入信息函數(shù)
{
ofstream outfile("d:\\q.txt",ios::in|ios::app); //建立并追加方式
if(!outfile)
{
cerr<<"open error!"<>name;
outfile<>sex;
outfile<<" "<>zhiwu;
outfile<<" "<>idemployee;
outfile<<" "<>ID;
outfile<<" "<>brithday.year>>brithday.month>>brithday.day;
outfile<<" "<>address;
outfile<<" "<>tele;
outfile<<" "<>money;
outfile<<" "<>NAME;
for(int i=0;i=lenth)
cout<<"查無此人!\n";
else
{
cout<<"請重新輸入信息:"<>inf[i].name1;
cout<<"請輸入職工性別:";
cin>>inf[i].sex1;
cout<<"請輸入職工職務(限制5位):";
cin>>inf[i].zhiwu1;
cout<<"請輸入職工工作編號:";
cin>>inf[i].idemployee1;
cout<<"請輸入職工身份證號:";
cin>>inf[i].ID1;
cout<<"請輸入職工生日(YYYY/MM/DD):";
cin>>inf[i].brithday1;
cout<<"請輸入職工家庭住址:";
cin>>inf[i].address1;
cout<<"請輸入職工電話號碼:";
cin>>inf[i].tele1;
cout<<"請輸入職工月薪(不超過5位):";
cin>>inf[i].money1;
ofstream outfile("d:\\q.txt",ios::in);
if(!outfile)
{
cerr<<"open error!"<>e;
if(e==y||e==Y)
{
for(int i=0;i<1000;i++)
if(strcmp(NAME,inf[i].name1)==0) break;
j=i;
ofstream outfile("d:\\q.txt",ios::trunc); //全清
if(!outfile)
{
cerr<<"open error!"<>NAME;
seach(NAME);
}
};
void mune1()
{
cout<<"\t*********************************************************\n";
cout<<"\t****------------------------------------------------*****\n";
cout<<"\t**** 1.輸入個人的信息 *****\n";
cout<<"\t**** 2.顯示個人信息 *****\n";
cout<<"\t**** 3.修改個人信息 *****\n";
cout<<"\t**** 4.查找他人信息 *****\n";
cout<<"\t**** 5.顯示所有在廠職工 *****\n";
cout<<"\t**** 6.返回主菜單 *****\n";
cout<<"\t**** 0.退出 *****\n";
cout<<"\t****------------------------------------------------*****\n";
cout<<"\t*********************************************************\n";
}
void mune2()
{
cout<<"\t*********************************************************\n";
cout<<"\t****------------------------------------------------*****\n";
cout<<"\t**** 1.輸入職工的信息 *****\n";
cout<<"\t**** 2.顯示查找人的信息 *****\n";
cout<<"\t**** 3.修改查找人信息 *****\n";
cout<<"\t**** 4.刪除查找人信息 *****\n";
cout<<"\t**** 5.顯示所有在廠職工 *****\n";
cout<<"\t**** 6.返回主菜單 *****\n";
cout<<"\t**** 0.退出 *****\n";
cout<<"\t****------------------------------------------------*****\n";
cout<<"\t*********************************************************\n";
}
int queding() //確定管理員密碼是否正確;
{
ifstream myfile("d:\\mima.txt",ios::nocreate);
myfile.getline(mima,20);
myfile.close();
int i=0;
char aa[10];
cout<<"請輸入管理員密碼"<<":"<>ch;
switch(ch)
{
case 0:cout<<"你已經(jīng)成功退出!謝謝使用!^_^"<input_inf();cout<<"你還想進行何種操作:";break;}
case 2:{pt->oneprint();cout<<"你還想進行何種操作:";break;}
case 3:{pt->change_infor();cout<<"你還想進行何種操作:";break;}
case 4:
{
if(sl==1)
{
cout<<"請輸入要刪除人的姓名:";
cin>>NAME;
tiquxinxi();
for(int i=0;i=lenth) cout<<"記錄中暫無此人信息.\n";
else
pt->delet();
cout<<"你還想進行何種操作:";break;
}
if(sl==2)
{cout<<"請輸入查找人姓名:";cin>>NAME;pt->seach(NAME);cout<<"你還想進行何種操作:";break;}
}
case 5:{pt->allprint();;cout<<"你還想進行何種操作:";break;}
case 6:k=0;break;
default:cout<<"你的選擇錯誤,請重新選擇:";break;
}
}while(k);
}
int main() //主函數(shù)及界面
{
tiquxinxi();
//cout<>sl;
switch(sl)
{
case 0:{ cout<<"你已經(jīng)成功退出!謝謝使用!^_^\n";exit(0); }break;
case 1:
{
system("cls");
switch(queding())
{
case 0:{cout<<"你不能以管理員身份進入!\n";break;}
case 1:{cout<<"操作成功!你已經(jīng)以管理員身份成功進入!\n";system("cls");mune2();select();break;}
}
}
break;
case 2:
{
cout<<"請輸入您的姓名:";
cin>>employname;
system("cls");
tiquxinxi();
for(int i=0;i=lenth) cout<<"記錄中暫無您的信息,請首先選擇1來輸入您的信息.\n";
mune1();
select();
}
break;
default:{cout<<"錯誤!你只能輸入1,2,或0";}
}
}while(sl>2||sl<0);
if(k==0)
k=1;
system("cls");
goto b;
return 0;
}
八、課程設計總結或結論
經(jīng)過兩個星期的軟件實習,在老師的指導下,順利完成該軟件實習。通過該軟件實習,收獲頗多。
一、 對實驗原理有更深的理解
通過該軟件實習,掌握了什么是人事管理,什么是數(shù)據(jù)流,怎樣建立數(shù)據(jù)流文件,并對其進行讀寫操作,了解了其各階段的基本任務,熟悉了程序總流程框圖,了解了程序的生成過程、構造工具及其相關的技術對課本上的知識有了更深的理解。學會了怎樣把文件寫入并讀出,而且靈活的運用了ios類成員函數(shù)。通過把該算法的內容,算法的執(zhí)行順序在計算機上實現(xiàn),把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。
二、 對該理論在實踐中的應用有深刻的理解
通過把該算法的內容,算法的執(zhí)行順序在計算機上實現(xiàn),知道和理解了怎樣制一個人事管理系統(tǒng), 對該理論在實踐中的應用有深刻的理解 。
三、知道很多不足
在做這個程序時想的很好,但實踐起來不是那么容易的,一遍又一遍的找錯誤,一遍又一遍的改正、學習、還有咨詢同學,最終完成了這個不是多完美功能多強大的程序,知道原來自己什么都不是,要學習的東西還很多。不完整的程序希望老師見諒,我會在以后的時間里認真學習,學好學精~!
九、參考文獻
[1]張立科,張儀凡,劉芳.Visual C++信息管理系統(tǒng)開發(fā).北京:人民郵電出版社,2005
[2]劉金李,王力.Visual C++面向對象的課程設計.北京:電子工業(yè)出版社,2005
[3]軟件實習指導書 淮安:淮陰工學院教務處,2008.3
[4]嚴平,張瑩.Programming Visual C++編程寶典.北京:北京科學出版社,2003
[5]朱繼滿等譯.Programming Visual C++ 6.0技術內幕.北京:希望電子出版社,2001
[6]謝公義,趙亮,李永利. Visual C++編程詳解.北京:希望電子出版社,2001
[7]宇鵬,鄭新,薛海東. Visual C++實踐與提高.北京:電子出版社,2003
[8]張紅軍等. Visual C++編程詳解.北京:科學出版社,2002
[9]郭翠英.C語言課程設計安全精編.北京:中國水利水電出版社,2004
[10]原奕.Visual C++實踐與提高——數(shù)據(jù)庫開發(fā)與工程應用篇.清華大學出版社,2006
鏈接地址:http://m.appdesigncorp.com/p-6423998.html