课程设计报告
课程名称 面向对象课程设计 设计题目 人事管理系统 专业班级 姓 名 学 号 指导教师 起止时间 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 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< cerr<<\"open error!\"< 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;t outfile<<\" \"< outfile<<\" \"< outfile<<\" \"< outfile<<\" \"< outfile<<\" \"< outfile<<\" \"< \"< }; class employee:public people { public: }; class guanliyuan:public people { public: void change_infor() //管理员修改职员信息 { tiquxinxi();