搜索
您的当前位置:首页正文

c++人事管理系统报告

来源:爱够旅游网


课程设计报告

课程名称 面向对象课程设计 设计题目 人事管理系统 专业班级 姓 名 学 号 指导教师 起止时间 2010年12月20日-12月31日

1

成 绩 评 定

考核 内容 设计 表现 设 计 答辩 报 告 综合 评定 成 绩

电气与信息学院

2

人事管理系统

一、课程设计的目的

现代信息技术的发展,在改变着我们的生活方式的同时,也改变着我们的工作方式,使传统意义上的人事管理的形式和内涵都在发生着根本性的变化。在过去,一支笔和一张绘图桌,可能就是进行办公的全部工具。今天,电脑、扫描仪和打印机等,已基本取代了旧的办公用具。如今,人事管理己完全可以通过电脑进行,并在计算机辅助下准确快速地完成许多复杂的工作。这些都大大地缩短管理的时间。而今天,人事管理的内容己经转变为对更为广泛的系统价值的追求。信息管理,如今已是一个热门话题,它已为许多企业所采用。我认为,在现代化的进程中,引入现代管理的思想,建立一套可面向企事业单位人事的信息管理系统,也是十分必要的

二、课程设计的要求

要求了解企业管理信息系统开发的全过程,理解信息系统课程相关的概念,掌握管理信息系统的开发方法。主要包括:登陆的两个用户:管理员、职工

管理员:可以对职工信息进行添加信息、删除信息、查询员工信息、修改员工信息、浏览员工信息。

用户:可以对自己的信息进行浏览、修改、查询;还可以对别人的信息进行查询,浏览。 开发这个系统的目的就是帮助企业的人力资源部门提高工作效率,实现企业人事信息管理的系统化,规范化和自动话。根据这个系统最终实现的主要功能如下:

系统部分:主要完成本系统的维护工作。

员工基本信息部分:主要完成员工基本信息的管理。

本系统是个简单的程序,由于时间和技术有限,功能不是多完整,多具体,还请包涵。

本系统的功能模块图如下:

3

人事管理系统 管 理 员 登 陆 职工登陆 退出系统 添加职员 删除职员 查询员工 修改 信息 信息浏览 查询员工 修改 信息 信息浏览

图1功能层次图

4

三、设计思路

1. 系统分析

系统开发背景、开发范围、建设目标与必要性

人事信息管理是一个单位信息管理的重要组成部分,它的内容对于一个单位的人事管理起着至关重要的作用。人事信息管理系统应该能够为管理者提供充足的信息和快捷的查询手段,但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点。如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法比拟的优点。这些优点能够极大地提高人事管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。根据以上情况,决定实施建立人事信息管理系统, 因为人事信息管理是一个企业单位不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以人事信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算实现企业人事档案的管理势在必行。当前企业信息管理系统正在从US结构向B/S结构转移,但是由于安全性等方面的因素,C/S结构的管理信息系统仍然占据企业管理信息系统的主流。人事管理系统是现代企业管理工作不可缺少的一部分,是适应现代企业制度要求、推动企业劳动人事管理走向科学化、规范化的必要条件。

该系统主要从以下几个功能来实现的: 新增:添加新员工的个人信息。 修改:修改已有员工的个人信息。 删除:删除已有员工的个人信息。 查询:根据条件查询员工的信息。 显示所有:显示所有员工的信息。

5

四、系统流程图

1.流程分析

通过对职工管理管理业务的详细调查分析,弄清了职工管理工作的业务流程和管理功能,系统业务流程图如下:

本系统业务流程图:

管理员:

员工信息修改 员工信息更新 删除员工信息

图2业务流程图

管理员 修改员工信息 插入员工信息

从该流程图可以看出职工管理系统主要有以下几项管理功能:

1) 员工信息删除:在接到认识部门的员工离职报告后,被解雇或者辞职的员工信息将被管

理员删除。

2) 员工信息修改:在公司员工发生职位变化后,人事部门向系统管理者发出员工信息修改

报告,管理员修改员工信息。

3) 员工信息插入:当有新员工进入公司市,管理员在数据库中插入新的员工信息。 4) 信息查询:输入要查询的人姓名,很快就出现这个人的所有信息 职员:

6

浏览员工信息 查询员工信息 浏览其他员工信息 职员 图3业务流程图

从该流程图可以看出职工管理系统主要有以下几项管理功能:

1) 员工信息浏览:员工可以自己浏览自己的信息,及时发现错误,及时修改个人的信息保

证个人信息的准确性。

2) 员工信息修改:这里是我个人加入一个比较人性化的设计,考虑到我做的只是一个小型

的系统,没有什么隐私或者公司利益、个人利益的牵扯,所以员工也可以自行修改自己不正确的信息。

3) 员工浏览别人的信息:我这个员工可以通过查找姓名看到别人的信息,可以方便员工要

联系某人时不知道他的联系方式,当然必须是熟悉你的人才可以看到你的信息,不会流露到公司外部,所以不牵扯隐私暴露问题。 2.流程图

开始 获取指向数据流 确认对数据文件的任何修改自己保获取新的ID值 添加新记录,并保存 更新记录 把游标移到最后一记录 结束 图4 增加记录的流程图

7

开始 删除记录 游标移到下一条记录 是 游标移动到最后一条记录 游标在文件尾 否 游标在文件头 是 记录内容为空 否 更新表单 结束 图5 删除记录的流程图

3.数据字典

为了对数据流程图中的各个元素作出详细的说明,建立数据字典是必要的。数据字典主要是对数据流程图中的数据项、数据结构、数据流、处理逻辑、数据存储和外部实体等六个方面进行具体的定义。数据流程图和数据字典一起使用,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。

8

五、类的层次图

员工档案:员工基本信息(姓名,学历等)

表1 员工基本信息

字段名 编号 员工姓名 性别 职务 出生年月 身份证号 家庭住址 电话号 数据类型 整型 关键字段 是 否 否 否 否 否 否 否 说明 男、女 Char Char Char 日期/时间 Char Char Char 六、系统功能模块图

1.系统主界面

打开项目,编辑运行,进入主界面。如图6

9

图6登陆界面

图 7管理员主界面

2.增加界面

打开系统主界面,点击新增按钮,进入增加员工信息界面。如图5

10

图8增加界面

进入新增界面,添加职工信息。这样就写入文件中啦

3.查询界面

点击主界面中的查询按钮,进入查询职工信息界面。系统列出以下查询条件:如图9

图9查询界面

输入要查询的员工的姓名,就会出现下面的内容:

图10查询结果界面

4.修改界面

在你还想进行何种操作:输入3,修改查找人信息,先输入自己要修改人的姓名,然后直接写入自己要修改的内容就行啦,这里有点错误,因为能力有限,我没找出来。

11

图11修改界面

这样就修改完了,我们可以通过显示查找人信息查找下,如图12

图12修改成功界面

由于上面的错误,导致里面的值会出现这样一种状况,我请教了同学没有人会,我能力有限时间有限就这样,希望你们谅解!

12

5.显示所有界面

选择5.显示所有在厂员工,系统会显示所有员工的信息。如图13

图13 显示界面

6.删除界面

选择你要进行的操作,输入4按回车,在输入要删除的人的姓名,操作如图14、15

图14删除界面

13

图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;

14

}; 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]; int month; int day;

}inf[100];

void tiquxinxi() //提取信息 {

char e; int i; int j;

ifstream myfile(\"d:\\\\q.txt\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);

15

}

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;

void input_inf() //输入信息函数 {

ofstream outfile(\"d:\\\\q.txt\ //建立并追加方式 if(!outfile) { }

cout<<\"请输入职工姓名:\"; /*改成按格式输入文件*/ cin>>name;

outfile<>sex;

cerr<<\"open error!\"<} lenth=i; myfile.close();

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);

public:

16

}

void seach(char NAME[]) //按姓名查找函数 {

tiquxinxi();

for(int t=0;tcout<cout<<\"\\n工作编号:\"<cout<<\"\\n工资:\"<cout<<\"请输入职工家庭住址:\"; cin>>address;

outfile<<\" \"<>tele;

outfile<<\" \"<cout<<\"请输入职工月薪(不超过5位):\"; cin>>money;

outfile<<\" \"<outfile<<\" \"<>zhiwu;

outfile<<\" \"<cout<<\"请输入职工工作编号(限制5位):\"; cin>>idemployee;

outfile<<\" \"<>ID;

outfile<<\" \"<cin>>brithday.year>>brithday.month>>brithday.day; outfile<<\"

\"<17

};

class employee:public people { public: };

class guanliyuan:public people { public:

void change_infor() //管理员修改职员信息 {

tiquxinxi();

cout<<\"请输入想要修改人的姓名:\"; cin>>NAME; for(int i=0;iif(strcmp(NAME,inf[i].name1)==0) break; cout<<\"查无此人!\\n\";

void delet() //只是形式,整个程序不会用到此函数 { }

void oneprint() //显示一个人的信息 { }

seach(employname);

cout<<\"YOU CANNOT DELETE INFORMATION!\\n\"; }

void allprint() //显示全部信息函数 { }

virtual void oneprint()=0; //显示一个人的信息 //纯虚函数 virtual

void change_infor()=0; //修改信息函数

virtual void delet()=0; //删除函数

tiquxinxi();

ifstream myfile(\"d:\\\\q.txt\int i; char a[120]; for(i=0;imyfile.close();

myfile.getline(a,150); cout<else cout<<\"查无此人!\\n\";

if(i>=lenth)

18

}

void delet() //管理员删除职员信息

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\if(!outfile) { }

for(i=0;ioutfile.close();

outfile<cerr<<\"open error!\"<19

{ }

void oneprint() //显示查找人信息 { }

cout<<\"请输入查找人的姓名:\"; cin>>NAME; seach(NAME); int j;char e; tiquxinxi();

cout<<\"以下为\"<>e; if(e=='y'||e=='Y') { } else

cout<<\"你已经放弃了删除该信息!\\n\"; for(int i=0;i<1000;i++) j=i;

ofstream outfile(\"d:\\\\q.txt\ //全清 if(!outfile) { }

for(i=0;ioutfile.close();

cout<<\"你已经成功删除\"<if(i==j) continue;

outfile<cerr<<\"open error!\"<if(strcmp(NAME,inf[i].name1)==0) break;

seach(NAME);

20

};

void mune1() { }

void mune2() { }

int queding() //确定管理员密码是否正确; {

ifstream myfile(\"d:\\\\mima.txt\myfile.getline(mima,20); myfile.close(); int i=0;

char aa[10];

cout<<\"请输入管理员密码\"<<\":\"<aa[i] = getch(); if(aa[i] == '\\r') {

aa[i]='\\0'; break;

cout<<\"\*********************************************************\\n\"; cout<<\"\****------------------------------------------------*****\\n\";

cout<<\"\**** 1.输入职工的信息 *****\\n\"; cout<<\"\**** 2.显示查找人的信息 *****\\n\"; cout<<\"\**** 3.修改查找人信息 *****\\n\"; cout<<\"\**** 4.删除查找人信息 *****\\n\"; cout<<\"\**** 5.显示所有在厂职工 *****\\n\"; cout<<\"\**** 6.返回主菜单 *****\\n\"; cout<<\"\**** 0.退出 *****\\n\"; cout<<\"\****------------------------------------------------*****\\n\";

cout<<\"\*********************************************************\\n\"; cout<<\"\*********************************************************\\n\"; cout<<\"\****------------------------------------------------*****\\n\";

cout<<\"\**** 1.输入个人的信息 *****\\n\"; cout<<\"\**** 2.显示个人信息 *****\\n\"; cout<<\"\**** 3.修改个人信息 *****\\n\"; cout<<\"\**** 4.查找他人信息 *****\\n\"; cout<<\"\**** 5.显示所有在厂职工 *****\\n\"; cout<<\"\**** 6.返回主菜单 *****\\n\"; cout<<\"\**** 0.退出 *****\\n\"; cout<<\"\****------------------------------------------------*****\\n\";

cout<<\"\*********************************************************\\n\";

21

}

void select() //菜单管理及选择 {

people *pt; employee em; guanliyuan guan; if(sl==1) pt=&guan; if(sl==2) pt=&em;

cout<<\"请选择你要进行的操作(0-6):\"; do {

int ch; cin>>ch; switch(ch) {

case 0:cout<<\"你已经成功退出!谢谢使用!^_^\"<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;pt->seach(NAME);cout<<\"你还想进

cout<<\"请输入要删除人的姓名:\"; cin>>NAME; tiquxinxi();

for(int i=0;ipt->delet();

cout<<\"你还想进行何种操作:\";break;

if(strcmp(NAME,inf[i].name1)==0) break; if(i>=lenth) cout<<\"记录中暂无此人信息.\\n\";

} aa[i]='\\0';

if(strcmp(aa,mima)==0) return 1; else return 0;

}

if(aa[i] == '\\b') {cout<<\"\\b \\b\"<if(sl==2)

行何种操作:\";break;}

22

}

int main() //主函数及界面 { b:

cout<<\"\\n\\n\\n ☆☆☆☆ 公司人事管理系统 ☆☆☆☆\\n\"; cout<<\"\\n\\n\\n\\n\\n\";

cout<<\"\**********************************************************\\n\"; cout<<\"\***** 请选择你的身份: *****\\n\"; cout<<\"\*****------------------------------------------------*****\\n\";

cout<<\"\***** 1.管理员 *****\\n\"; cout<<\"\***** 2.普通职工 *****\\n\"; cout<<\"\***** 0.退出 *****\\n\"; cout<<\"\**********************************************************\\n\\n\\n\\n\"; do {

cout<<\"请选择你的身份:\"; cin>>sl; switch(sl) {

case 0:{ cout<<\"你已经成功退出!谢谢使用!^_^\\n\";exit(0); }break; case 1: { } break; case 2: {

cout<<\"请输入您的姓名:\"; cin>>employname; system(\"cls\"); tiquxinxi(); system(\"cls\"); switch(queding()) {

case 0:{cout<<\"你不能以管理员身份进入!\\n\";break;} case 1:{cout<<\"操作成功!你已经以管理员身份成功进}

tiquxinxi(); //cout<case 5:{pt->allprint();;cout<<\"你还想进行何种操作:\";break;} case 6:k=0;break;

default:cout<<\"你的选择错误,请重新选择:\";break; }

}while(k);

入!\\n\";system(\"cls\");mune2();select();break;}

23

}

}

} break;

default:{cout<<\"错误!你只能输入1,2,或0\";}

for(int i=0;iif(strcmp(employname,inf[i].name1)==0) break;

if(i>=lenth) cout<<\"记录中暂无您的信息,请首先选择1来输入您的信息.\\n\"; mune1(); select();

}while(sl>2||sl<0); if(k==0)

k=1; system(\"cls\"); goto b; return 0;

八、课程设计总结或结论

经过两个星期的软件实习,在老师的指导下,顺利完成该软件实习。通过该软件实习,收获颇多。

一、 对实验原理有更深的理解

通过该软件实习,掌握了什么是人事管理,什么是数据流,怎样建立数据流文件,并对其进行读写操作,了解了其各阶段的基本任务,熟悉了程序总流程框图,了解了程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解。学会了怎样把文件写入并读出,而且灵活的运用了ios类成员函数。通过把该算法的内容,算法的执行顺序在计算机上实现,把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

二、 对该理论在实践中的应用有深刻的理解

通过把该算法的内容,算法的执行顺序在计算机上实现,知道和理解了怎样制一个人事管理系统, 对该理论在实践中的应用有深刻的理解 。

三、知道很多不足

在做这个程序时想的很好,但实践起来不是那么容易的,一遍又一遍的找错误,一遍又一遍的改正、学习、还有咨询同学,最终完成了这个不是多完美功能多强大的程序,知道原来自己什么都不是,要学习的东西还很多。不完整的程序希望老师见谅,我会在以后的时间里认真学习,学好学精~!

24

九、参考文献

[1]张立科,张仪凡,刘芳.Visual C++信息管理系统开发.北京:人民邮电出版社,2005 [2]刘金李,王力.Visual C++面向对象的课程设计.北京:电子工业出版社,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++实践与提高——数据库开发与工程应用篇.清华大学出版社,2006

25

因篇幅问题不能全部显示,请点此查看更多更全内容

Top