人事档案管理系统课程设计说明书.doc_第1页
人事档案管理系统课程设计说明书.doc_第2页
人事档案管理系统课程设计说明书.doc_第3页
人事档案管理系统课程设计说明书.doc_第4页
人事档案管理系统课程设计说明书.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编号: 数据结构与算法课程设计说明书题 目: 人事档案管理系统 学 院: 计算机科学与工程学院 专 业: 计算机科学与技术 学生姓名: 学 号: 指导教师: 唐麟 2013年 9月26号 摘 要电脑已经深入到我们日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。 随着企事业单位的发展,人员会越来越多,少则几十人、多则上万人。例如一个企业分很多部门,每个部门又分为许多科或室等,而其下又分为各级领导和员工。用笔和纸传统的手工管理档案,这中管理方式存在着不易更新、不易存放、不安全、容易丢失、难以备份等重大缺陷,管理起来效率低下而且很可能造成管理上的混乱。而自己建立简单的电子文档对信息管理进行管理虽然克服了以上的缺点,但查询效率较低,特别是当数据量十分庞大时,劣势尤其明显。因此开发一个既可以存储信息,又可以进行更新、查询、管理等功能,同时价格又能为广大消费者接受的多功能电子人事信息管理系统就显得十分必要。 关键词:visual c+6.0;算法;人事管理;类面向对象;链表 目 录引言11系统概述22需求分析22.1 系统需求22.2 开发环境33详细设计 43.1类的设计及分析 43.2各功能的设计 64 所遇到的问题和分析解决 105 系统特色及关键技术 115.1成员函数添加的分析 115.2直接选择排序 146 用户使用 157 结论18参考文献19 引 言随着全球对知识和人才的重视,企业对人力资源管理重要性的认识逐渐深化,人才的全球化竞争使企业的人力资源管理面临前所未有的挑战。在新形势下,人事档案管理系统是一个企业单位不可缺少的部分,是适应现代企业制度,推动企业人力资源管理走向科学化、规范化、自动化的必要条件;是应对挑战、适应环境变化、提高企业管理效率、提升核心竞争力的关键措施。它所包含内容对于企业的决策者和管理者来说至关重要。目前市场上的人事管理系统很多,但要找到一款真正称心、符合企业实际情况的并不容易。由于存在这样那样的不足,使企业浪费了大量的人力、物力等大量资源,难以真正提升企业人力资源的管理水平,提高工作效率及降低管理成本的效果也不明显。因此,为了加快公司信息化的步伐,提高公司的管理水平,并在激烈的社会竞争中立于不败之地,建立及完善人力资源管理系统已变得十分必要和迫切。在社会中,人力资源是企事业单位的核心,而对它的管理及管理软件的选用则是评价管理者管理水平的一个重要标志。因此人力资源管理工作是企事业单位工作的一项重要任务,是提高管理质量和保障企事业单位生产目标实现的一个重要保证。因此,人力资源管理的内容对企事业单位的决策者和管理者来说都具有重要意义。当规模扩大以后,企事业单位人员部门增加,给人力资源管理带来困难。根据需求,本人事档案管理系统主要分系统管理、信息登记、信息删除、信息查询、信息修改、信息按顺序输出、报表信息输出、系统简介等八大部分。具体要求实现:对业务模块相关信息的添加,修改,删除以及对人员调动的管理;对考勤信息设置、管理和查询;对工资信息设置;部门,员工工资统计查询等等。1 系统概述 本人事档案管理系统主要分系统管理、信息登记、信息删除、信息查询、信息修改、信息按顺序输出、报表信息输出、系统简介等八大部分。具体要求实现:对业务模块相关信息的添加,修改,删除以及对人员调动的管理;对考勤信息设置、管理和查询;对工资信息设置;部门,员工工资统计查询等等。2 需求分析2.1 系统需求在信息技术高速发展的今天,传统的数据统计方式在处理庞大繁杂的信息量时显得力不从心,于是,人们对于运用计算机来辅助和管理工作的需求正在逐步提高。随着各个企业业务的逐步扩展,企业的员工人数也在迅速增加,由于管理人员水平有限,导致某些员工纪录管理并不完善,特别是繁杂的员工工资管理纪录,不易查询、修改,极易导致错误,而落后的员工管理方法随着社会的日益竞争,必将被淘汰。由计算机来管理庞大而繁杂的企业员工纪录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化企业管理的需要,同时也更利于实现全面办公自动化。因此开发一套企业员工工资管理系统软件势在必行。企业员工工资管理系统是企业管理系统中的一个重要组成部分,它为企业合理的员工调配与编制,以及有关问题的决策能够提供各种必要的基础数据,是公司管理现代化的一个重要方面。利用微机对庞杂而繁锁的员工工资系统实现自动化管理,是计算机公司信息管理系统的重要内容。我在陈勇老师指导下开发了企业员工工资管理系统。企业员工工资管理系统旨在为商业人士及在社会团体、机构中负责管理关系的人士提供一个功能全面、使用方便的工资管理系统,以替代传统的手工管理工资纪录,同时利用先进信息技术为用户提供一些更为方便实用的功能。 本系统实现五种基本功能:输入员工工资信息、删除员工工资信息、修改员工工资信息、查找员工工资信息、列出所有员工工资信息。所以该工资管理系统可以分为5个模块,分别为输入模块、删除模块、修改模块、查找模块、列表模块,每个模块都有其对应的功能以及其设计。(1)输入模块输入模块的功能是创建存储职工工资信息的存储系统以及添加某职工的工资信息。为实现输入的功能,有两个方面的任务:定义结构体以及建立链表。(2)删除模块删除模块的功能是删除某职工的工资信息。(3)修改模块修改模块的功能是修改某职工的部分工资信息。(4)查找模块查找模块的功能就是:输出指定编号职工的工资信息;输出姓名和部门联合查询的职工工资信息。(5)统计模块统计模块的功能是:统计全企业总人数及各部门的人数;统计企业的平均工资及部门的平均工资。(6)排序模块排序的模块的功能是:对全企业的信息表按受教育年限及工资进行递增排序。(7)列表模块列表模块的功能是输出全体职工的工资信息。程序具体功能介绍:2.1.1 功能介绍现在,需要存储这些人员的人事档案信息:员工编号, 员工姓名 ,年龄 ,性别 ,部门 ,职务, 受教育年限 ,工资 ,缺勤(天) ,罚金, 个税 ,实发数。其中,人员编号唯一,不能重复。添加删除功能:能根据学企业人事的变动情况,添加删除记录;查询功能:能根据编号及姓名和部门的复合查询进行查询;编辑功能(高级):根据查询对相应的记录进行修改,并存储;统计功能:能根据多种参数进行人员的统计及平均工资,统计要求同时显示被统计者的信息;排序功能:按照受教育年限、工资进行排序;保存功能:能对输入的数据进行相应的存储;2 .2 系统框图系统框架图在本设计中,将主要实现以下功能:增加记录功能,修改记录功能,删除记录功能,以及筛选记录功能等。主菜单输入员工工资信息删除指定员工工资信息修改指定员工工资信息查找指定员工工资信息输出全体员工工资信息退出 图1 系统框架图2.2 开发环境 本系统是在visual c+6.0平台上运行的,主要运行c及c+等语言。3 详细设计具体系统设计3.1 结构体及类的设计与分析 3.1.1:员工结构体的建立struct worker_payint num; /员工编号string name; /员工姓名int age; /年龄string sex; /性别string department; /部门string title; /职务int eduage; /学历(年)float wage; /工资int day; /缺勤天数float allowance; /扣发工资float tax; /个人所得税float real_wage; /实发数worker_pay * next; /链表结点的指针域;3.1.2:员工类的建立class workerprotected:worker_pay * head; /链表的头结点指针public:worker()head=null; /构造函数void display(worker_pay *); /输出函数 worker_pay * find(int); /查找函数int listcount(); /统计员工人数函数 void additem(int,string,int,string,string,string,float,float); /创建链表并链表的插入void removeitem(int); /删除函数void replaceitem(int); /修改函数void listl(); /遍历函数 void search(int); /查找并输出某个员工信息函数void real_wage(float,float); /计算函数void recordinfo(int,string,int,string,string,string,float,float,float,float); /存储函数;3.1.3:相关的成员函数表1 worker类说明表名称属性说明head数据成员链表头结点指针worker()成员函数缺省的构造函数,缺省值为head=nullvoid display(worker_pay *)成员函数输出函数worker_pay * find(int)成员函数查找函数int listcount()成员函数统计员工人数函数void additem(int,float,float)成员函数创建链表并链表的插入void removeitem(int)成员函数删除函数void replaceitem(int)成员函数修改函数void listl()成员函数遍历函数void listavg(string)成员函数部门查询及统计的函数void load()成员函数读取文件void sort_data();对员工信息进行整理的函数void search(sting ,string)成员函数复合查找并输出员工信息的函数void search(int)成员函数查找并输出某个员工信息函数void real_wage()成员函数计算函数voidrecoreinfo(int,float,float)成员函数存储函数3.1.4非成员函数的设计与分析表2 非成员函数说明表名称说明int menu()用于显示主菜单char exit()用于退出程序void input(int * num,float * allowance)用于输入员工工资信息void addnew()用于调用成员函数additem(int,float,float)real_wage()和recoreinfo(int,float,float)void dofind()用于调用成员函数search(int)void dodelete()用于调用成员函数removeitem(int)void domotify()用于调用成员函数replaceitem(int)void list()用于调用成员函数listl()int main()主函数void findtavg()用于调用成员函数void listavg(string)3.2:各功能模块设计:(1)、新建数据文件模块:、数据结构;看各个数据信息,员工编号(int), 员工姓名 (sting),年龄 (int),性别 (string),部门(string) ,职务(string), 受教育年限 (int),工资 (string),缺勤(天)(int) ,罚金(int), 个税 (int),实发数(int),在文件中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组成了一个结构体数组。定义见结构体及类的设计与分析(2)、追加模块:1需求分析该模块的功能是拥护需要增加新的员工记录,从键盘输入并逐条写入到原来的文件中去,其中输入号码是要防止号码重复,重复时报告错误,重新输入。为方便用户管理和查看,该模块采用的方式是用先把原来文件中的数据读入内存,保存在内存中,然后在内存中的数据后面增加新的数据,操作完成后用写的方式打开文件,用覆盖的方式写入。2流程图:略;3对应程序:void addnew() (3)修改模块:需求分析:该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由用户输入需要修改的人员的号码,查找成功后,显示查找结果,并询问拥护修改人员的哪部分记录,根据用户选择修改相应的信息,然后保存修改后的结果;用户选择要修改的数据流程图:输入编号是否有此编号 y y n找到调用修改函数提示没有找到询问用户是否继续修改返回主菜单 y n 对应的函数:void domotify();(4)删除模块:1需求分析:该模块的运行方式与修改模块类似,首先分屏显示所有人员的记录,显示完所有的记录后,由用户输入要删除的人员的号码,根据号码查找相应的记录并将结果显示出来,经用户确认后删除,删除的方法是将文件中的数据读入内存,赋给相应的结构体,并将结构体数组中将删除的后面的数据赋给前一个结构体,然后将相应数据写入文件并保存;2流程图:类似添加的流程对应函数: void dodelete(); (5)、按编号搜索:1需求分析:该模块的功能是按照输入的人员的编号查找对应的记录,并将其显示,查找成功以后,增加删除和修改等功能,其中删除和修改功能可以通过调用相应的函数来实现。2流程图;(6)按姓名和部门搜索。需求分析:该模块的功能是按照输入的人员的姓名和部门查找对应的记录,并将其显示,查找成功以后,增加删除和修改等功能,其中删除和修改功能可以通过调用相应的函数来实现。该模块的结构与按号码查询的结构基本相同;对应函数:void dofindbumen();(7)输出模块;需求分析:该模块的功能是显示所有保存在文件中的记录。2、流程图;略对应函数:void list(); (8)、排序模块;1、需求分析;该模块的功能是要求将记录按照年龄或者来院时间进行排序,总体结构是先用n=load()函数将文件中的数据调入内存,然后按照选择法排序,并将结果显示出来,然后将排序后的结果保存。 流程图;略。 对应函数: void sort_data()(9)、统计模块1、需求分析;该模块的功能是按照用户的要求统计出满足符合条件的所有记录的个数,并将满足条件的记录显示出来。该模块是在其他模块进行的同时进行的,没有单独列出,没有涉及到文件的保存。2流程图;无;3对应函数:包含在其他函数内4 所遇到的问题和分析解决(1)设计初期,先完成初步构思,写出主函数。然后对主函数所涉及的各个模块进行编程,将各个模块利用指针和链表联系起来。在环境中进行调试,应一边编译,一边调试,并且要一个模块一个模块的调试。直至此模块完全没有错误时,在进入下一模块的调试。不能直接输入全部的代码一次性调,这样错误会很多,并且不易找出和修改。在完成程序的编译链接后,要用多组数据进行审查,确保做到系统无误。设计过程中,不应忽视环境提示的警告,有时程序运行不正确与警告也有很大的关系。这次设计中遇到很多问题都是提示类型不匹配,这时就要认真检查前面的代码,及时改正并且认真仔细,杜绝此类错再次发生。编写代码时应该少用全局变量,全局变量在编写试看似定义次数少,很方便。但全局变量出错几率较大,且不易修改,每次修改时都要全面考虑,所以应避免用到。程序调试中碰到的错误可以使自己学到知识。养成良好的编程习惯,可以节省很多时间,避免很多不必要的错误。(2)在编辑完整个程序后,进行调试阶段总是会数显head无定义。解决办法:再类的定义是忘记声明指针worker_pay *head;。 (3)在写读入函数时,总是不能读入数据,经同学检查发现没有申请新的空间存放数据。 解决办法:在读入txt文件时,q=new worker_pay; q-next=null。5 系统特色及关键技术5.1:worker类中的成员函数void additem(int,float,float)(1)功能:创建存储职工工资信息的存储系统以及添加某职工的工资信息。算法思路:先定义一个结构体worker_pay,通过从表尾插入的方法来建立链表。首先要先设立一个头指针(head)来存放链表的首地址,然后,不断用new运算符生成一个新的结点,将这个结点链入已有的链表尾部;如果链表中还没有结点,则这个新结点将是首结点,否则,将新结点的地址赋给原有链表的尾结点的next指针。流程图:startif !head员工工资信息赋给headreturn*t=headwhile t&t-num!= num1t=t-nextif t操作失败return*p-headwhilep-nextp-next员工工资信息赋给preturnend(3)代码:void worker:additem(int num1,string name1 , )if(!head)head=new worker_pay;head-num=num1; head-next=null;return;worker_pay * t=head;while(t&t-num!=num1) t=t-next;if(t)cout操作失败;员工编号为num1的信息已经存在!next)p=p-next;worker_pay * p1=new worker_pay; return;5.2:worker类中的成员函数void sort_data()(1)功能:创建存储职工工资信息的存储系统以及添加某职工的工资信息。算法思路:运用算法课本上的直接选择排序的算法,与课本的不同之处在于,本程序是用指针进行排序的,课本使用的数组。直接选择排序的比较次数与文件初始状态无关,在第i趟排序中选出最小的记录,需做n-i次比较,因此总的次数为:o(n*n),文件初始状态为正序时,移动0;最坏情况每趟排序都要交换操作,总的移动次数是3(n-1)。直接选择排序的平均时间复杂度为o(n平方)。算法中增加了一个辅助空间temp,因此辅助空间为s(n)=o(1)。直接选择排序是不稳定的。 主要代码:worker_pay * p,*q,*small,*temp; temp= new worker_pay ; for(p=head;p-next!=null;p=p-next)small=p;for(q=p-next ;q!=null;q=q-next)if(q-eduageeduage)small=q;if(small!=p) temp-eduage=p-eduage;p-eduage=small-eduage;small-eduage=temp-eduage; cout员工编号 员工姓名 年龄 性别 部门 职务 学历 工资 缺勤(天) 罚金 个税 实发数next;6 用户手册及测试结果6.1用户手册运行程序时,界面刚开始出现一个主菜单及提示信息,用户通过在键盘上输入来选择某个功能。当用户选择了某个功能,系统将跳转到所选择的功能界面,用户将可以根据提示信息来使用该功能,当用户通过键盘输入编号为-1时,系统将返回主界面。 6.2 测试结果1,主菜单2,输入,添加,删除,修改,查询:统计排序7.总结:成功之处:此系统程序虽然简单,却集结了基本的管理功能。删除,存储,统计等功能还是较为成功的。特别是人事档案的统计管理功能,使烦琐的工作变得简单轻松。不足之处:由于我们水平和时间有限,难免有不足和差强人意的地方。尤其是对于系统应该配以保密性的设置,可是由于我知识积累不够,做不出来。还请迟老师海涵。两周的数据结构与算法课程设计结束了,在这几天的时间里,我自己独立完成了一个程序从构思结构,到编写代码,然后上机调试运行的过程,感觉自己收获很大。通过解决一个又一个的问题,熟悉了c+语言的应用。在设计过程中,在编程时条理清晰是至关重要的。主函数,函数,成员函数之间的层次关系,调用关系一定要有一个全面的把握,尤其要体会类的封装性。另外很重要的一点就是一定要对链表的五种操作熟练的掌握。我理解了对于一个较大的程序,不可能一次编写出一个较大的系统,通常要采取自顶向下的设计思想,先设计主函数,再通过完善一个个的功能模块来完成程序的设计过程,在设计过程中要充分理解整个程序的设计思路,采用逐步细化的方式来完成整个程序。在编译,链接,调试的过程中一定要有耐心。因为一个程序中会有很多小的错误,甚至有的问题要几个小时才能解决。遇到问题,一定要全面分析,有时候还要向同学请教。总得来说,编程时极需要耐心的。 参考文献c语言大学实用教程 电子工业出版社2、c+程序设计教程(第二版)高等教育出版社 3、c语言程序设计教程 北京大学出版社4、c语言程序设计实例精粹 电子工业出版社 5、6、陈天华编.面向对象程序设计与visual c+6.0教程m.北京:清华大学出版社,2006程序清单:#include#include#include#includeusing namespace std;/*/*定义一个员工信息的结构体worker_pay*/struct worker_payint num; /员工编号string name; /员工姓名int age; /年龄string sex; /性别string department; /部门string title; /职务int eduage; /学历(年)float wage; /工资int day; /缺勤天数float allowance; /扣发工资float tax; /个人所得税float real_wage; /实发数worker_pay * next; /链表结点的指针域;/*/*定义一个员工类worker*/class workerprotected:worker_pay * head;/链表的头结点指针 / worker_pay * p;public:worker()head=null; /构造函数void display(worker_pay *); /输出函数 worker_pay * find(int); /查找函数worker_pay * find(string,string);worker_pay * find(string);int listcount(); /统计员工人数函数 void additem(int,string,int,string,string,string,int,float,int,float); /创建链表并链表的插入void removeitem(int); /删除函数void replaceitem(int); /修改函数void listl(); /遍历函数 void search(int); /查找并输出某个员工信息函数 void search(string,string);void search(string); void listavg(string);void real_wage(float,float); /计算函数void recordinfo(int,string,int,string,string,string,int,float,int,float,float,float); /存储函数void paixu(string);void load(); void sort_data();/worker_pay *t;/*/功能:用于统计员工人数int worker:listcount()if(!head) return 0;worker_pay * p=head;int n=0;while(p)n+;p=p-next;return n;/*/功能:在链表中查找员工的编号worker_pay * worker:find(int num)if(listcount=0)cout列表为空,请先输入数据!num=num) break;p=p-next;if(!p)cout错误,找不到该信息!endl;return null;return p;/*/*worker_pay * worker:find(string department)if(listcount=0)cout列表为空,请先输入数据!department=department) /worker1.listavg(department);break;p=p-next;if(!p)cout错误,找不到该信息!num=num1;head-name=name1;head-age=age1;head-sex=sex1;head-department=department1;head-title=title1;head-eduage=eduage1;head-wage=wage1;head-day=day1;head-allowance=allowance1;head-next=null;return;worker_pay * t=head;while(t&t-num!=num1)t=t-next;if(t)cout操作失败;员工编号为num1的信息已经存在!next)p=p-next;worker_pay * p1=new worker_pay;p1-num=num1;p1-name=name1;p1-age=age1;p1-sex=sex1;p1-department=department1;p1-title=title1;p1-eduage=eduage1;p1-wage=wage1;p1-day=day1;p1-allowance=allowance1;p1-next=null;p-next=p1;return;/*/功能:从链表中删除一个结点void worker:removeitem(int num)worker_pay * t=find(num);if(!t)return;worker_pay * p=head;if(head=t)head=head-next;delete p;cout成功删除员工编号为num的信息!next!=t)p=p-next;worker_pay * p1=p-next;p-next=p1-next;delete p1;cout成功删除员工编号为num的信息!endl;return;/*/功能:修改员工信息void worker:replaceitem(int num)worker_pay * p=find(num);if(!p)return;cout请重新输入相应信息endl;coutp-num;coutp-name;coutp-age;coutp-sex;coutp-department;coutp-title;coutp-eduage;coutp-wage;coutp-day;/coutallowance=p-wage*p-day*0.01;/cin* allowance;return;/*/功能:输出员工信息void worker:display(worker_pay * p)coutsetw(3)numsetw(9)namesetw(9)agesetw(5)sexsetw(5)departmentsetw(5)titlesetw(5)eduagesetw(6)wagesetw(6)daysetw(8)allowancesetw(4)taxsetw(8)real_wageendl;return;/*/功能:遍历链表void worker:listl()float sum=0;float aver=0;int n=0;if(listcount=0)cout当前列表为空,请先输入数据!endl;return;worker_pay * p=head;cout*员工信息*endl;cout共有listcount()个员工信息endl;cout员工编号 员工姓名 年龄 性别 部门 职务 学历 工资 缺勤(天) 罚金 个税 实发数wage;p=p-next;aver=sum/n;cout员工平均薪水:averendl;return;/*/功能:查找并输出指定员工信息void worker:search(int num)coutsearch.endl;worker_pay * p =find(num);if(p)cout员工编号为num的员工工资信息:endl;cout员工编号 员工姓名 年龄 性别 部门 职务 学历 工资 缺勤(天) 罚金 个税 实发数endl;display(p);coutendl;return;/*/功能:程序内部函数计算的信息例如个人所得税,实发数void worker:real_wage(float tax,float real_wage)if(listcount()=0)cout当前列表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论