数据结构课程设计-职工管理系统

合集下载

数据结构课程设计_公司职工管理系统

数据结构课程设计_公司职工管理系统

辽宁工业大学课程设计说明书题目:数据结构课程设计学院(系):电子与信息工程学院专业班级:计算机科学与技术专业学号:学生姓名:指导教师:教师职称:副教授起止时间: 2009.12.01—2009.12.08课程设计(论文)任务及评语院(系):电子与信息工程教研室:软件工程目录第1章课程设计目的与要求 (1)1.1课程设计目的 (1)1.2课程设计的实验环境 (1)1.3课程设计的预备知识 (1)1.4课程设计要求 (1)第2章课程设计内容 (2)2.1第五类题目 (2)2.2题目的具体实现 (2)2.3题目内容 (2)2.4思考题解析 (16)总结 (18)参考文献 (19)第1章课程设计目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业、软件工程专业的专业技术实践课。

本实践课的主要目的是:使学生学会利用在课堂中学过的理论知识,解决相应的实际问题,深入理解和灵活掌握所学的内容,培养学生理论和实践相结合的能力,培养学生分析问题解决问题的能力。

同时,在实验步骤规范化、程序设计方法等方面受到比较系统和规范的训练。

通过实践设计使学生进一步加深对程序设计的规范化及对复杂程序设计步骤的理解。

1.2 课程设计的实验环境PC机,WindowsXP,Win-tc。

1.3 课程设计的预备知识C语言程序设计、高级程序设计应用、数据结构。

1.4 课程设计要求(1)认真查找资料,分析每个题目应选择的数据结构(逻辑结构和物理结构);(2)按时到实验室调试程序,遵守实验室的规章制度,爱护设备;(3)每个题目编写源程序时,每个子功能定义为相应的子函数,在主函数中调用各子函数,程序结构清晰,有必要的注释,可读性强。

(4)程序健壮性强,当数据输入错误时,要进行相应的处理;(5)分析算法的时间复杂度,要求算法的效率尽可能高;(6)对于排序算法,要验证排序算法的稳定性。

第2章课程设计内容2.1 第五类题目1、简单的职工管理系统a.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。

数据结构课程设计(员工管理系统)

数据结构课程设计(员工管理系统)

目录一、问题描述 1二、测试数据 1三、算法思想 1四、模块划分 1五、数据结构 2六、源程序 2七、测试情况 7八、设计体会 8参考文献 9一、问题描述(1)自定义一个类型表示员工各信息,定义一个顺序表存储员工信息,包括员工编号、姓名、性别、职务、出生年月、学历、电话、地址等。

(2)系统能够完成员工信息的输入、输出、查询、更新、插入、删除、排序等功能,并且数据能由文件导入和导出到文件。

(3)通过菜单选择进行哪一项操作,并输出每一项操作结果。

二、测试数据1 李一女 1989.10.2 本科职员 188******** 广西南宁2 苏三女 1986.3.18 本科职员 180******** 广西北海3 孙大云女 1987.12.1 本科秘书 180******** 广西柳州5 陈二男 1986.7.12 硕士经理 150******** 广西梧州三、算法思想线性表是最常用且最简单的一种线性结构,由数据元素组成,而数据元素又可以包含若干个数据项。

线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,通常用数组表示。

对顺序表的操作可借鉴数组的算法。

在本次课程设计中的员工管理信息系统,每个员工为一个数据元素,包括编号、姓名、性别、学历等数据项。

用一个数组来存储员工信息,对其进行的输入、删除、输出等操作可由一般数组的算法变换而得。

四、模块划分(1)自定义一个数据类型ElemType,表示员工信息,定义一个顺序表List,将员工信息存放于顺序表中,包括员工的编号、姓名、性别、职务、出生年月、学历、电话、地址等,并完成顺序表的初始化;(2)void ListInput(List &L,int n),函数作用是输入员工信息,需要一个循环完成每个员工信息的输入,最后要修改表长;(3)int LocateElem(List L,int num),函数作用是在顺序表里查找某编号员工的信息,从第一个员工开始找,通过编号的两两比较,若找到与要查找员工的编号一致的员工,则返回员工的位置,并在主函数中输出此与员工的信息;(4)void ListInsert(List &L,ElemType e)函数功能是新员工信息的插入,先判断表是否满或此员工的信息是否已存在,若是则不进行插入操作;否则,保持员工编号顺序不变,找到插入点的位置,把从插入点后一位的数据都往后移一个位置,把新信息插入,最后使表长增1;(5)void ListDelete(List &L,int bh)函数作用是员工信息的删除,若表空或所要删除的员工信息不存在,则不进行下一步操作;否则,把删除点后的数据都往前移覆盖其前一个元素,最后使表长减1;(6)void BubbleSort(List &L)函数功能是通过冒泡法试员工信息按编号从小到大排序,进行n-1趟,每趟使小编号的员工信息往上放在表的前端,把编号大的员工信息往下沉到表的末端;(7)ChangeM(List &L),更新员工信息,由菜单选择需要修改的信息项进行修改,并保存新的信息;(8)void newFile(List &L),生成一个新的txt文件,存放员工信息,存入计算机内存;(9)void readFile(List &L),把员工信息从文件中导出;(10)void main()主函数,通过菜单和各函数的调用实现各部分的操作。

职工管理系统数据结构课程设计报告

职工管理系统数据结构课程设计报告

攀枝花学院数据结构课程设计(论文)题目:职工基本信息管理学生姓名:学号: *********所在院(系):数学与计算机学院专业:计算机科学与技术班级: 2010级计本2班第二组指导教师:周朝职称:讲师2011 年 6 月7 日攀枝花学院本科学生课程设计任务书注:任务书由指导教师填写。

目录一、需求分析 (4)二、概要设计 (5)1、输入功能的实现 (5)2、系统处理功能的实现 (5)3、输出的实现 (5)4、系统功能结构 (5)5、模块函数构造 (6)三、详细设计 (6)1、抽象数据类型定义 (6)2、主函数设计 (7)3、查找算法设计 (8)4、排序算法设计 (8)四、调试分析 (11)五、用户使用说明 (11)六、测试结果 (12)七、附录 (16)1、参考文献 (16)2、实验程序 (16)一、需求分析职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。

当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。

随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。

而作为计算机应用的一部分,使用计算机对职工进行管理,具有手工管理所无法比拟的优点。

例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

数据结构课程设计 简单的职工管理系统

数据结构课程设计 简单的职工管理系统

数据结构课程设计简单的职工管理系统简单的职工管理系统设计1. 引言本文旨在设计一个简单的职工管理系统,用于匡助管理者进行职工信息的录入、查询、修改和删除等操作。

该系统基于数据结构的相关知识,通过合理的数据结构设计和算法实现,实现对职工信息的高效管理。

2. 功能需求2.1 职工信息录入系统提供一个录入界面,管理者可以输入职工的基本信息,包括职工编号、姓名、性别、年龄、职位等。

系统应该能够对输入的信息进行合法性验证,并将信息存储到合适的数据结构中。

2.2 职工信息查询系统提供一个查询界面,管理者可以根据职工的编号、姓名、职位等条件进行查询。

系统应该能够根据查询条件从数据结构中快速定位到符合条件的职工信息,并将结果展示给管理者。

2.3 职工信息修改系统提供一个修改界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行修改。

系统应该能够根据选择的职工信息,提供可修改的字段,并对输入的修改信息进行合法性验证,并更新数据结构中对应的职工信息。

2.4 职工信息删除系统提供一个删除界面,管理者可以根据职工的编号或者姓名等条件选择一个职工信息进行删除。

系统应该能够根据选择的职工信息,从数据结构中删除对应的职工信息,并给出相应的提示。

3. 数据结构设计为了高效地管理职工信息,我们可以采用链表作为基本的数据结构。

每一个节点表示一个职工信息,包括职工编号、姓名、性别、年龄、职位等字段。

节点之间通过指针进行连接,形成一个链表结构。

3.1 链表节点设计每一个链表节点包含以下字段:- 职工编号(int)- 姓名(string)- 性别(string)- 年龄(int)- 职位(string)- 指向下一个节点的指针(Node*)3.2 链表操作设计- 初始化链表:创建一个空链表,并初始化头节点指针为NULL。

- 添加节点:根据输入的职工信息创建一个新节点,并将其插入到链表的合适位置。

- 删除节点:根据职工的编号或者姓名等条件,找到对应的节点,并将其从链表中删除。

数据结构简单的职工管理系统

数据结构简单的职工管理系统
void ListInitiate(SLNode **head)//---------------------------------链表初始化
{
if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间
2.2
由系统管理员依次输入现有职工和新增职工的以下信息:姓名(可以重复)、性别、出生年月、工作年月、学历、职务、地址、电话等信息,并且注意输入时姓名、学历、职务、地址为字符串形式,性别为字符,其余的为长整型数字。
系统管理员根据公司的人员流动情况,选择系统提供的各项功能进行操作,并输出相应的结果。
2.3
经过本次课程设计,我们对于数据结构基本理论和存储结构及算法设计将有更加深入的理解,并提高我们在实际设计操作中系统分析、结构确定、算法选择、数学建模和信息加工的能力,提高我们的C/C++语言程序设计能力,以及培养学我们编写程序设计文档的能力。
在经济繁荣中的今天对于职工管理有很大程度上的要求,一个工程能否较好较快的运行,与职工管理的好坏分不开关系,通过该系统,能够更好的管理职工,简化管理,使管理更方便,准确性和直观性更强。本着实践为目的,通过设计与制作进一步学习和掌握职工管理系统的原理和使用方法。虽然在一定程度上较为简单,但也能体现在出在人员管理上的方便快捷。
初始化链表
系统处理模块
SLNode *ListInsert(SLNode *head,DataType x)
插入职工信息
ListDelete(SLNode *head)
删除职工信息
ListModify(SLNode *head)
修改职工信息
put(SLNode *head,FILE *fp)

数据结构课程设计-员工信息管理系统

数据结构课程设计-员工信息管理系统

12信计2013-2014(一)数据结构课程设计设计题目员工信息管理系统设计时间2014.1.6~2014.1.10学生姓名葛考学生学号20120402127所在班级12精算指导教师刘风华徐州工程学院数学与物理科学学院题目员工信息管理系统一、需求分析员工信息管理系统设计,具体功能如下:1、系统以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中的输入异常情况。

2、员工信息录入系统(员工信息用文件保存),注意员工按员工编号进行区分,即每个员工的员工编号都是唯一的,不允许出现两个员工或员工编号相同的情况。

3、可对员工信息进行查询,具体分为:按姓名查询、按员工号查询、按生日查询;4、可对员工信息进行删除;5、可对员工信息进行修改,但应注意员工号不能修改,修改应逐个进行,一个员工记录的更改不应影响其他的员工记录;6、可对全部的员工信息进行显示v(员工信息浏览),注意员工信息的显示规范;员工信息应包括姓名、员工编号、性别、年龄、生日、学历、职务、联系电话、住址。

二、概要设计2.1、抽象数据类型ADT List{数据对象:D={ai|ai∈ElemSet,i=1,2,······,n,n>=0}数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,······,n}基本操作:Init List(&L);操作结果:构造一个空的线性表L。

DestroyList(&L);初始条件:线性表L存在。

操作结果:销毁线性表L。

LocateElem(L,I,&e);初始条件:线性表L存在,1<i<Listlength(L)。

操作结果:用e返回线性表L中第i个数据元素的值。

数据结构课程设计报告(员工管理系统)

数据结构课程设计报告(员工管理系统)

数据结构课程设计报告一、课程设计目的:综合运用线性表、查找、排序的相关知识,解决一个实际应用问题。

通过本次实习,要求熟练掌握线性表的存储结构,能在对应的存储结构上进行各种操作,并能分析不同的查找和排序方法的性能。

二、设计基本信息:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等三、课程设计需要实现的功能:(1)查询:按特定条件查找员工。

(2)更新:按编号对某个员工的某项信息进行修改。

(3)插入:加入新员工的信息。

(4)删除:按编号删除已离职的员工的信息。

(5)排序:按工资,对所有员工的信息进行排序。

四、功能实现代码:#include <string>#include <iostream>#include <fstream>#include <iomanip>#include <memory.h>#include <stdio.h>#include <conio.h>#include <stdlib.h>using namespace std;struct Employee{//声明职工的结构作为链表节点。

//-----数据域-----string m_Code;string m_Name;unsigned short int m_Year;string m_Gender;string m_Edu;string m_Post;unsigned int m_Tel;string m_Add;unsigned int m_Wage;//链表节点的指针域---struct Employee* Next;};typedef struct Employee Node;typedef Node* Link;//-------函数声明-------------Link Create(Link Head);void Release(Link Head);Link Add(Link Head);bool Search(Link Head);Link Search_Unique(Link Head);void Display_List(Link Head);void Display_Node(Link pNode);Link Modify(Link Head);Link Del(Link Head);void Save_ByFile(Link Head,fstream& ofile); Link Sort(Link Head);//-------函数实现--------------------------Link Create(Link Head){//创建一个带头节点的空链表。

数据结构课程设计 简单的职工管理系统

数据结构课程设计 简单的职工管理系统

数据结构课程设计题目名称:简单的职工管理系统计算机科学与技术学院一.需求分析1.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。

2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。

(1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。

(2)删除一名职工:从职工管理文件中删除一名职工对象。

(3)查询:从职工管理文件中查询符合某些条件的职工。

(4)修改:检索某个职工对象,对其某些属性进行修改。

(5)排序:按某种需要对职工对象文件进行排序。

3.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。

(1)由键盘输入职工对象,以文件方式保存。

程序执行时先将文件读入内存。

(2)对职工对象中的"姓名"按字典顺序进行排序。

(3)对排序后的职工对象进行增、删、查询、修改等操作。

二.概要设计1.设计一个职工的结构体typedef struct Worker{char* name;char* sex;char* Bothdate;char* Workdate;char* school;char* duty;char* address;char* phone;struct Worker *next;}worker;2.主体函数(1).输入函数void Scanfwork(worker** phead,worker** pend,int num);(2).输出函数void Printfwork(worker* phead);(3).查询职工函数void Findworker(worker* phead);(4).更新职工函数void Updata(worker* phead);(5).删除职工函数void Delwork(worker** phead,worker** pend);void Delete(worker** phead,worker** pend,char* name);(6).按字典排序函数worker* Sort(worker** phead,worker** pend,int num);(7).文件调用函数void save(worker* phead);(8).增加职工函数void Addworker(worker** phead,worker** pend,worker* p);worker* GetnodeIn();三.详细设计1.流程图2.代码详细分析(1).输入函数void Scanfwork(worker** phead,worker** pend,int num) {int i;srand((unsigned int)time(0));for(i=0;i<num;i++){Addworker(phead,pend,Getwork());}}(2).输出函数void Printfwork(worker* phead){while(phead){printf("%s %s %s %s %s %s %s %s\n",phead->name,phead->s ex,phead->Bothdate,phead->Workdate,phead->school,phead->duty,phea d->phone,phead->address);phead=phead->next;}printf("b返回主菜单");key=getchar();switch (key){case 'b':return;break;default:printf("按错了\n");}}(3).查询职工函数void Findworker(worker* phead){char* keyword = NULL;worker* w=NULL;worker* newhead=NULL;worker* newend=NULL;worker* pDel=NULL;worker* bj=phead;while(1){while(1){printf("请输入要查询的关键字:");keyword=getstring();printf("按a键确认你的输入,按其他键重新输入:");if(getkey()=='a'){break;}else{free(keyword);keyword=NULL;}}phead=bj;while(phead){if(strncmp(phead->name,keyword,strlen(keyword))==0||strncmp(phead->sex,keyword,strlen(keyword))==0|| strncmp(phead->Bothdate,keyword,strlen(keyword))==0||strncmp(phead->Workdate,keyword,strlen(keyword))==0||strncmp(phead->school,keyword,strlen(keyword))==0||strncmp(phead->duty,keyword,strlen(keyword))==0||strncmp(phead->address,keyword,strlen(keyword))==0||strncmp(phead->phone,keyword,strlen(keyword))==0){w=(worker*)malloc(sizeof(worker));w->name=phead->name;w->sex=phead->sex;w->Bothdate=phead->Bothdate;w->Workdate=phead->Workdate;w->duty=phead->duty;w->school=phead->school;w->address=phead->address;w->phone=phead->phone;w->next=NULL;Addworker(&newhead,&newend,w);}phead=phead->next;}if(newhead!=NULL){Printfwork(newhead);while(newhead){pDel=newhead;newhead=newhead->next;free(pDel);pDel=NULL;}newhead=NULL;newend=NULL;}if(key=='b'){return;}else{printf("没有找到\n");}}}(4).更新职工函数void Updata(worker* phead){worker* bj=phead;char* name1;while(1){printf("请输入要修改的名字");name1=getstring();phead=bj;while(phead){if(strncmp(phead->name,name1,strlen(name1))==0){printf("请输入新的电话号码");free(phead->phone);phead->phone=getstring();}phead=phead->next;}printf("y继续修改,其他键返回");if(getkey()!='y'){return;}}}(5).删除职工函数void Delwork(worker** phead,worker** pend){char* name1;while(1){printf("请输入删除的姓名:");name1=getstring();Delete(phead,pend,name1);printf("按y继续删除其他键返回主菜单\n");if(getkey()!='y'){return;}}}void Delete(worker** phead,worker** pend,char* name) {worker* bj= *phead;worker* pDel=NULL;if(strncmp((*phead)->name,name1,strlen(name1))==0) {pDel=*phead;*phead=(*phead)->next;free(pDel);pDel=NULL;return;}while(bj->next!=NULL){if(strncmp(bj->next->name,name1,strlen(name1))==0){pDel=bj->next;bj->next=bj->next->next;free(pDel);pDel=NULL;if(bj->next==NULL){*pend=bj;}return;}bj=bj->next;}}(6).按字典排序函数worker* Sort(worker** phead,worker** pend,int num){int i;int j;worker* bj=*phead;worker* sign=NULL;worker* sign1=NULL;char temp[20]={0};char temp1[20]={0};char temp2[20]={0};char temp3[20]={0};char temp4[20]={0};char temp5[20]={0};char temp6[15]={0};char temp7[12]={0};for(i=0;i<num;i++){bj=(*phead);sign=bj;for(j=i+1;j<num;j++){sign1=sign->next;if(strncmp(sign->name,sign1->name,strlen(sign1->name))>=0) {strcpy(temp,sign->name);strcpy(temp1,sign->sex);strcpy(temp2,sign->Bothdate);strcpy(temp3,sign->Workdate);strcpy(temp4,sign->school);strcpy(temp5,sign->duty);strcpy(temp6,sign->address);strcpy(temp7,sign->phone);strcpy(sign->name,sign1->name);strcpy(sign->sex,sign1->sex);strcpy(sign->Bothdate,sign1->Bothdate);strcpy(sign->Workdate,sign1->Workdate);strcpy(sign->school,sign1->school);strcpy(sign->duty,sign1->duty);strcpy(sign->address,sign1->address);strcpy(sign->phone,sign1->phone);strcpy(sign1->name,temp);strcpy(sign1->sex,temp1);strcpy(sign1->Bothdate,temp2);strcpy(sign1->Workdate,temp3);strcpy(sign1->school,temp4);strcpy(sign1->duty,temp5);strcpy(sign1->address,temp6);strcpy(sign1->phone,temp7);}sign=sign->next;}}return *phead;}(7).文件调用函数void save(worker* phead){FILE* pf;fopen_s(&pf,"F:\\worker.txt","w+");while(phead){fprintf(pf,"%s %s %s %s %s %s %s %s\n",phead->name,phea d->sex,phead->Bothdate,phead->Workdate,phead->school,phead->du ty,phead->phone,phead->address);phead=phead->next;}fclose(pf);}(9).增加职工函数void Addworker(worker** phead,worker** pend,worker* p){if(*phead==NULL){*phead=p;}else{(*pend)->next=p;}*pend=p;}worker* GetnodeIn(){worker* w=(worker*)malloc(sizeof(worker));printf("请输入名字\n");w->name=getstring();printf("请输入性别\n");w->sex=getstring();printf("请输入出生年月\n");w->Bothdate=getstring();printf("请输入工作年月\n");w->Workdate=getstring();printf("请输入学历\n");w->school=getstring();printf("请输入职务\n");w->duty=getstring();printf("请输入电话\n");w->phone=getstring();printf("请输入住址\n");w->address=getstring();w->next=NULL;return w;}四.调试分析1.在写职工程序的时候遇到了单链表排序问题,解决的方法我选择了询问网络以及身边的朋友2.当写删除的时候遇到了头删除的问题,解决方法我选择了查看书籍3.当调用文件保存的时候也遇到了问题,例如文件内容不能直接覆盖,数据不能全部输出等问题,解决的方法我选择了询问网络,查看视频等4.在写职工程序的时候,虽然遇到了很多问题,我通过自己的努力以及身边朋友的帮助,使我克服了问题,这次的课程设计提高我自己写代码能力,以及训练了我运用链表的增删改查方面的知识和文件的调用存取方面的知识。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、前言----------------------------------------------------------------------2二、需求分析----------------------------------------------------------------3三、概要设计----------------------------------------------------------------4四、详细设计----------------------------------------------------------------5五、调试分析----------------------------------------------------------------6六、用户使用说明----------------------------------------------------------7七、测试结果----------------------------------------------------------------8八、总结---------------------------------------------------------------------11九、主要参考文献和附录------------------------------------------------12员工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以员工管理系统应该能够为用户提供充足的信息和快捷的查询手段。

但一直以来各个公司基本上都是靠传统的人工方式来管理员工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。

当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,员工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。

随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。

而作为计算机应用的一部分,使用计算机对员工进行管理,具有手工管理所无法比拟的优点。

例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高员工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。

员工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。

需求分析员工信息管理系统是企业管理中的一个重要内容,随着时代的进步,企业也逐渐变得庞大起来。

如何管理好企业内部员工的信息,成为企业管理中的一个大问题。

在这种情况下,开发一个人力资源管理系统就显得非常必要现在,市场上可以选购的应用开发产品很多,流行的也有数十种。

在目前市场上这些众多的程序开发工具中,有些强调程序语言的弹性与执行效率;有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。

然而,语言的弹性和工具的便利性是密不可分的,只强调程序语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间;相反,如果只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用。

本系统结合公司实际的人事、制度,经过实际的需求分析,采用功能强大的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)调试分析测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验是否满足规定的需求或弄清预期结果与实际结果之间的差别。

在调试查询修改功能过程中,查询的结果显示,没有找到员工信息,最后发现查找的结点不正确,查询应该与输入的值和头结点next比较。

此外查询结点不知道如何循环,反复修改程序才知道如何继续查找而不出错误。

本次课程设计是围绕数据结构进行。

根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个员工管理系统功能,那就是在这个系统中实现对员工信息的插入、删除、查询、排序、修改。

但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。

把员工信息存储在一个单链表中,利用指针实现对员工信息的各项基本操作。

虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。

可以排序上面多设计几个算法,实现多角度排序。

在这个系统中没有员工序号的信息,所以允许员工姓名相同,在一定程度上可能存在员工信息重复。

经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。

当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。

因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。

用户使用说明进入员工管理系统,首先看到的就是主菜单界面,然后提示:“请选择主菜单(0---6):”如果选择1,进入添加员工模块,按照提示语依次录入员工对象信息。

选择2,进入展示员工所有的信息模块,DOS界面显示刚才录入的员工信息。

选择3,进入员工查询模块,在此模块下:系统提示:按姓名查询、按编号查询,系统根据用户选择进行相应的处理,退出查询模块时,系统进入主菜单模块。

选择4,进入删除员工模块,在此模块下:系统提示:按编号删除、按姓名删除,系统根据用户选择,进行相应的处理,退出删除模块时,系统进入主菜单模块。

选择5,进入修改员工信息模块,在该模块下:系统提示:修改整条信息,修改部分信息,系统根据用户选择,进行相应的功能处理。

当用户选择退出修改模块时,系统进入主菜单模块。

选择6,进入排序模块,在该模块下:系统提示:按年龄排序、按工龄排序、回复原排序,系统根据用户的选择,进行相应的处理。

选择0,退出系统。

测试结果(一)当操作人员运行程序时,弹出的DOS界面如下:(二)根据提示语,输入1,添加员工信息,操作如下界面:(三)在主菜单输入2,进入输出员工功能,操作如下:添加员工、展示所有员工信息功能实现。

相关文档
最新文档