资源描述
洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称 数据结构
设计题目 员工管理系统
课 程 设 计 任 务 书
设计题目: 员工管理系统
_________________________________________________________
设计内容与要求:[问题描述]
每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
[基本要求]
(1) 排序:按不同关键字,对所有员工的信息进行排序。
(2) 查询:按特定条件查找员工。
(3) 更新:按编号对某个员工的某项信息进行修改。
(4) 插入:加入新员工的信息。
(5) 删除:按编号删除已离职的员工的信息。
课 程 设 计 评 语
成绩:
指导教师:_______________
年 月 日
前言
员工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以员工管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来各个公司基本上都是靠传统的人工方式来管理员工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。
当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,员工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。
随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。
而作为计算机应用的一部分,使用计算机对员工进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高员工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。
员工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。
需求分析
员工信息管理系统是企业管理中的一个重要内容,随着时代的进步,企业也逐渐变得庞大起来。如何管理好企业内部员工的信息,成为企业管理中的一个大问题。在这种情况下,开发一个人力资源管理系统就显得非常必要
现在,市场上可以选购的应用开发产品很多,流行的也有数十种。在目前市场上这些众多的程序开发工具中,有些强调程序语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。然而,语言的弹性和工具的便利性是密不可分的,只强调程序语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间;相反,如果只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用。
本系统结合公司实际的人事、制度,经过实际的需求分析,采用功能强大的Visual C++ 6.0作为开发工具而开发出来的管理系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,本管理系统具有如下功能:
1、问题描述
对单位的员工进行管理,包括插入、删除、查找、排序等功能。
2、要求
员工对象包括姓名、性别、年龄、职位、工龄等信息。
(1)新增一名员工:将新增员工对象按姓名以字典方式员工管理文件中,基本信息中的编号是按照添加顺序自动增加的。
(2)删除一名员工:从员工管理文件中删除一名员工对象,分为根据编号删除、根据姓名删除。
(3)查询:从员工管理文件中查询符合某些条件(编号、姓名)的员工。
(4)修改:根据编号检索出对象,既可以对整个对象修改,也可对某个属性修改。
(5)排序:按照年龄、工龄对所有的员工排序(降序),也可以回复排序以前的员工现实状态。
3、实现提示
员工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)当启动程序是,自动从文件(message.txt)中读出员工信息
(2)由键盘输入员工对象存入链表当中。
(3)对员工对象中的"编号、年龄、工龄"按字典顺序进行排序。
(4)对排序后的员工对象进行增、删、查询、修改、排序等操作。
(5)当退出程序时,将此刻单链表中存储的数据写入到文件(message.txt)中去,保存起来。
概要设计
(一)数据类型定义:
typedef struct{
int num; //编号
char name[MAX_NUM];//姓名
int age; //年龄
char job[MAX_NUM];//职位;
int workTime;// 工龄
}People;
ypedef struct node{
People people;
struct node * next;
int len;//表示链表长度
}linklist;
(二)流程图:
(图1)
(三)各程序模块之间的层次图:
(图2)
详细设计
1、主菜单模块:显示员工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void main()函数来实现。
2、添加员工模块:输入员工的编号、姓名、年龄、职位、工龄以,通过自己定义的void addMessage()函数来实现。
3、查询员工信息模块:浏览所有员工的相关信息,通过自己定义的void searchPeople()函数来实现。
(1)按员工姓名查询:可以按员工工号来查询员工的相关信息,通过自己定义的void searchPeopleByName( )函数来实现。
(2)按员工编号查询:可以按员工职务来查询员工的相关信息,通过自己定义的void searchPeopleByNum( )函数来实现。
(3)退出。
4、删除员工模块:删除需要删除的员工的所有信息,通过自己定义的void deletePeople( )函数来实现。
(1)按员工姓名删除模块:可以按员工工号来删除员工的相关信息,通过自己定义的void deletePeopleByName( )函数来实现。
(2)按员工编号删除模块:可以按员工编号删除员工的相关信息,通过自己定义void deletePeopleByNum( )函数来实现。
(3)退出
5、修改模块:可以修改需要修改的员工的相关信息,通过自己定义的 void editMessage()函数来实现。
(1)修改整条记录,可以修改该员工的全部信息,通过自己定义的void editAll()函数来实现。
(2)修改部分记录,可以修改该员工的部分信息,通过自己定义的void editSome()函数来实现。
(3)退出。
6、员工信息排序模块:可以按照规定要求对员工信息排序,通过自己定义的void sort()函数来实现。
(1)按年龄排序:可以按员工工号对员工信息排序,通过自己定义的void sortByAge()函数来。
(2)按工龄排序:可以按员工工龄对员工信息排序,通过自己定义的void sortByWorkTime()函数来实现。
(3)回复原排序:可以回复排序前的顺序,通过自己定义的void sortByNum ()函数来实现。
(4)退出。
7、退出系统模块:退出员工信息管理系统,通exit(0)函数来实现。
函数调用图:
(图3)
测试结果
(一)当操作人员运行程序时,弹出的DOS界面如下:
(二)根据提示语,输入1,添加员工信息,操作如下界面:
(三)在主菜单输入2,进入输出员工功能,操作如下:
添加员工、展示所有员工信息功能实现。
(四)在主菜单输入3,查询员工信息
按编号查询,测试如下:
按姓名查询,测试如下:
以上查询功能测试功能。
(五)在主菜单,输入4,删除员工功能:
按编号删除,测试如下:
按姓名删除如下:
以上测试完成。
(六)在主菜单输入5,进入修改信息功能:
(七)在主菜单输入6,进入排序功能:
按年龄排序,测试如下:
按工龄排序相同操作,测试成功。回复排序,回复到未排序状态,测试成功。
(八)退出,将所有的员工信息写入message.txt 文件中,实现永久保存。退出系统,测试完成。
总结
在本系统的开发过程中由于时间也比较仓促、准备不充分,系统必然会存在一些缺陷和不足。对员工信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。
课程设计中我们遇到很多问题。我们在开发时,我们查阅了许多资料,了解到即是对员工的编号号,姓名,年龄,工龄等复杂多样的信息,能够较清晰,快捷而操作方便的现代化管理系统。弄清了这个基本概念以后,我们又详细理解了老师所讲的设计要求和注意事项,大致确定了总体的设计思路,初步提出问题的解决方案,以及系统大致设计方案和框架,接下来我们就着手编程。在编程过程中,先是根据系统所要求,找出所需要知识点。编完程序,我们在机房进行了一次又一次的调试,找出了其中的错误,一一纠正,并且修改了其中不太完善的部分,力求做到实用并且精确
尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法。
通过本次课程设计,我们对数据结构知识掌握了很多,并能将它用以程序编写中,并且提高了自己的解决实际问题的能力。
-----------------------------------------------------------
附录:源代码
#include"stdio.h"
#include"stdlib.h"
#include "string.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct LNode
{
char id[20];
char name[10];
char sex[10];
char birth[10];
char edu[10];
char duty[10];
char phone[20];
char address[30];
struct LNode *next;
}LNode,*Linklist;//定义节点类型
int CreatList(Linklist &L)
{
Linklist p;
p=(Linklist)malloc(sizeof(LNode));
if(!p)
{
return (0);
}
else
{
printf("请输入员工编号\n");
scanf("%s",p->id);
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工生日\n");
scanf("%s",p->birth);
printf("请输入员工学历\n");
scanf("%s",p->edu);
printf("请输入员工职务\n");
scanf("%s",p->duty);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
}
p->next=L->next;
L->next=p;
}//头插法生成单链表
int Initlist(Linklist &L)
{
L=(Linklist)malloc(sizeof(LNode));
if(!L)
return (0);
L->next=NULL;
return OK;
}//初始化单链表
void Display(Linklist &L)
{
Linklist p;
for(p=L->next;p;p=p->next)
{
printf("编号 %s\n",p->id);
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("生日 %s\n",p->birth);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
printf("============================\n");
}
}//显示所有员工信息
int SearchID(Linklist &L,char id[20])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->id,id)==0)
{
printf("编号 %s\n",p->id);
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("生日 %s\n",p->birth);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
}
p=p->next;
}
return OK;
}//ID查询
int SearchName(Linklist &L,char name[10])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("编号 %s\n",p->id);
printf("姓名 %s\n",p->name);
printf("性别 %s\n",p->sex);
printf("生日 %s\n",p->birth);
printf("学历 %s\n",p->edu);
printf("职务 %s\n",p->duty);
printf("电话 %s\n",p->phone);
printf("地址 %s\n",p->address);
}
p=p->next;
}
return OK;
}//姓名查询
void SortID(Linklist &L ,char id[20])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->id,q->id ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//编号排序
void SortName(Linklist &L ,char name[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->name,q->name ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//姓名排序
void SortSex(Linklist &L ,char sex[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->sex,q->sex))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//性别排序
void SortBirth(Linklist &L ,char birth[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->birth,q->birth ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//出生年月排序
void SortEdu(Linklist &L ,char edu[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->edu,q->edu ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q
}
L=La;
Display(L);
}//学历排序
void SortDuty(Linklist &L ,char duty[10])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->duty,q->duty ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//职务排序
void SortPhone(Linklist &L ,char phone[20])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->phone,q->phone ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q
}
L=La;
Display(L);
}//电话排序
void SortAddress(Linklist &L ,char address[30])
{
Linklist La;
Linklist p,q,m;
La=(Linklist)malloc(sizeof(LNode));
La->next =NULL;
while(L->next)
{
for(q=L->next ,p=L->next ;p->next ;p=p->next )
{
if((strcmp( p->next->address,q->address ))>0 )
{
m=p;
q=p->next ;
}
}
if(q==L->next)
{
L->next =L->next->next ;
}
else
{
m->next =q->next ;
}
q->next =La->next ;
La->next =q ;
}
L=La;
Display(L);
}//地址排序
int Alter(Linklist &L,char id[20])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->id,id)==0)
{
printf("请输入员工编号\n");
scanf("%s",p->id);
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工生日\n");
scanf("%s",p->birth);
printf("请输入员工学历\n");
scanf("%s",p->edu);
printf("请输入员工职务\n");
scanf("%s",p->duty);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
}
p=p->next;
}
return OK;
}//更改
int Del(Linklist &L,char id[20])
{
LNode *p;
LNode *r;
p=L->next;
r=L;
while(!(strcmp(p->id,id)==0)&&p)
{
r=p;
p=p->next;
}
if(!p)
printf("\n删除位置不合理\n");
else
{
r->next=p->next;
free(p);
printf("删除成功\n");
}
return OK;
}//按ID删除
//主函数
void main()
{
Linklist L;
int a;
char m;
char name[10];
char id[20];
char sex[10];
char birth[10];
char edu[10];
char duty[10];
char phone[20];
char address[30];
Initlist(L);
int y;
int x=1;
while(x)
{
printf("=========================\n");
printf("欢迎进入员工管理系统!\n");
printf("=========================\n");
printf("1-添加员工信息\n");
printf("2-查询员工信息\n");
printf("3-排序员工信息\n");
printf("4-显示所有员工信息\n");
printf("5-更改员工信息\n");
printf("6-删除员工信息\n");
printf("7-退出\n");
printf("请选择操作序号并按回车:");
scanf("%d",&y);
switch(y)
{
case 1: CreatList(L);
do
{
printf("是否继续输入?(y/n)");
getchar();
scanf("%c",&m);
if(m=='y')
{
CreatList(L);
}
}
while(m!='n');
break;
case 2: printf("请输入查询方式(1按编号查询,2按姓名查找)");
scanf("%d",&a);
if(a==1)
{
printf("请输入查询员工编号\n");
scanf("%s",&id);
SearchID(L,id);
}
if(a==2)
{
printf("请输入查询员工姓名\n");
scanf("%s",&name);
SearchName(L,name);
}
break;
case 3: printf("请选择排序条件:1.编号2.姓名3.性别4.出生年月5.学历6.职务7.电话8.地址0.退出\n");
scanf("%d",&a);
if(a==1)
{
printf("编号排序\n");
SortID(L,id);
}
if(a==2)
{
printf("姓名排序\n");
SortName(L,name);
}
if(a==3)
{
printf("性别排序\n");
SortSex(L,sex);
}
if(a==4)
{
printf("出生年月排序\n");
SortBirth(L, birth);
}
if(a==5)
{
printf("姓名排序\n");
SortDuty(L,duty);
}
if(a==6)
{
printf("姓名排序\n");
SortEdu(L,edu);
}
if(a==7)
{
printf("姓名排序\n");
SortPhone(L,phone);
}
if(a==8)
{
printf("姓名排序\n");
SortAddress(L,address);
}
break
case 4: printf("所有员工信息如下所示\n");
Display(L);
break;
case 5: printf("请输入更改员工编号");
getchar();
scanf("%s",&id);
Alter(L,id);
break;
case 6: printf("请输入删除员工编号");
getchar();
scanf("%s",&id);
Del(L,id);
break;
case 7: x=0;
break;
default:
printf("请输入正确序号!\n");
break;
}
}
}
物业安保培训方案
为规范保安工作,使保安工作系统化/规范化,最终使保安具备满足工作需要的知识和技能,特制定本教学教材大纲。
一、课程设置及内容全部课程分为专业理论知识和技能训练两大科目。
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
1)保安人员培训应以保安理论知识、消防知识、法律常识教学为主,在教学过程中,应要求学员全面熟知保安理论知识及消防专业知识,在工作中的操作与运用,并基本掌握现场保护及处理知识2)职业道德课程的教学应根据不同的岗位元而予以不同的内容,使保安在各自不同的工作岗位上都能养成具有本职业特点的良好职业道德和行为规范)法律常识教学是理论课的主要内容之一,要求所有保安都应熟知国家有关法律、法规,成为懂法、知法、守法的公民,运用法律这一有力武器与违法犯罪分子作斗争。工作入口门卫守护,定点守卫及区域巡逻为主要内容,在日常管理和发生突发事件时能够运用所学的技能保护公司财产以及自身安全。
2、培训要求
1)保安理论培训
通过培训使保安熟知保安工作性质、地位、任务、及工作职责权限,同时全面掌握保安专业知识以及在具体工作中应注意的事项及一般情况处置的原则和方法。
2)消防知识及消防器材的使用
通过培训使保安熟知掌握消防工作的方针任务和意义,熟知各种防火的措施和消防器材设施的操作及使用方法,做到防患于未燃,保护公司财产和员工生命财产的安全。
3) 法律常识及职业道德教育
通过法律常识及职业道德教育,使保安树立法律意识和良好的职业道德观念,能够运用法律知识正确处理工作中发生的各种问题;增强保安人员爱岗敬业、无私奉献更好的为公司服务的精神。
4) 工作技能培训
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工
展开阅读全文