2员工管理系统.docx

上传人:小飞机 文档编号:4881319 上传时间:2023-05-21 格式:DOCX 页数:42 大小:188.25KB
返回 下载 相关 举报
2员工管理系统.docx_第1页
第1页 / 共42页
2员工管理系统.docx_第2页
第2页 / 共42页
2员工管理系统.docx_第3页
第3页 / 共42页
2员工管理系统.docx_第4页
第4页 / 共42页
2员工管理系统.docx_第5页
第5页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《2员工管理系统.docx》由会员分享,可在线阅读,更多相关《2员工管理系统.docx(42页珍藏版)》请在三一办公上搜索。

1、课程设计(论文)任务书信息学院学 院16诵信卓越专业1班一、课程设计(论文)题目二、课程设计(论文)工作自2 2017年06月19日起至2017年06月25日三、课程设计(论文)地点:四、课程设计(论文)内容要求:1. 本课程设计的目的(1) 熟练掌握C语言的基本知识和技能;(2) 掌握线性表的链式存储结构;(3) 掌握线性链表的创建算法;(4) 熟悉掌握多线性链表的增加、删除算法;(5) 培养分析、解决问题的能力;提高学生的科技论文写作能力。2. 课程设计的任务及要求每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。 系统能够完成员工信息的查询、更新、插入、删除、排序

2、等功能。1) 基本要求:(1) 排序:按不同关键字,对所有员工的信息进行排序。一(2) 查询:按特定条件查找员工。(3) 更新:按编号对某个员工的某项信息进行修改。(4) 插入:加入新员工的信息。(5) 删除:按编号删除已离职的员工的信息。2) 创新要求:提高算法效率,降低时间复杂度和空间复杂度一3) 课程设计论文编写要求(1) 要按照课程设计模板的规格书写课程设计论文(2) 论文包括目录、正文、心得体会、参考文献等(3) 课程设计论文用A4纸统一打印,装订按学校的统一要求完成4) 答辩与评分标准:(1) 完成原理分析:20分;(2)完成设计过程:40分;(3)完成调试:20分;(4)回答问题

3、:20分。5)参考文献:(1)严蔚敏,吴伟民.数据结构.北京:清华大学出版社,2012.(2)严蔚敏、吴伟民、米宁.数据结构题集.北京:清华大学出版社,2009.(3)谭浩强.C程序设计(第4版)北京:清华大学出版社,2013.(4)何钦铭、冯雁、陈越.数据结构课程设计.杭州:浙江大学出版社,20136)课程设计进度安排内容天数地点构思及收集资料2图书馆编程设计与调试5实验室撰写论文3图书馆、实验室学生签名:2017年06 月19日课程设计(论文)评审意见(1)完成原理分析(20分):优()、良()、中()、一般()、差();(2)设计分析(20分):优()、良()、中()、一般()、差();

4、(3)完成调试(20分):优()、良()、中()、一般()、差();(4)翻译能力(20分):优()、良()、中()、一般()、差();(5)回答问题(20分):优()、良()、中()、一般()、差();(6)格式规范性及考勤是否降等级:是()、否()评阅人:职称: 2017年06 月25日一、问题描述4二、内容简介52.1基本要求: 52.2. 算法思想:52.3. 模块划分:.62.4. 数据结构: .72.5. 源程序:72.6. 测试情况:34三、小结38四、参考文献39一、问题描述(描述要求编程解决的问题)本次课程设计所制作的员工管理系统,选择用C+语言、利用链表、函数等知识对员 工

5、的信息、数据进行收集管理,具有手工管理所无法比拟的优点,例如:检索迅速、查找 方便、可靠性高、存储量大、成本低、充足的信息、快捷的查询手段等优点。这些优点能 够极大地提高员工管理的效率,也是企业的科学化、正规化管理和与世界接轨的重要条件。本次课程设计的是一个基于员工数据信息的数据管理系统,通过这个员工管理系统, 对员工的数据信息进行管理,企业的管理员就可以按照菜单选择相应的操作,快捷高效地 对员工信息执行查询、更新、插入、删除、排序等基本功能。本次课程设计建立的一个“员工管理系统”,如图1所示,该员工管理系统需要我们 利用编程知识解决以下几点问题:(1)该员工管理系统可以编写存放一定量的员工基

6、本信息,存放的员工的人数应该在 100人以内,每个员工的信息应该包括:员工编号、员工姓名、员工性别、员工出生年月、 员工学历、员工职务、员工电话、员工家庭住址、员工的工资等。(2)该员工管理系统在保证能满足录入职工号不出现重复的情况下,录入的职工号信 息可以按照要求以文件形式保存。(3)该员工管理系统是建立职工信息管理的文件的情况下,并且可以实现对其按照不 同关键字,如出生年月、员工的编号、员工的工资、员工的电话号码等对所有员工的信息 进行从大到小的排序。(4)该员工管理系统还应该可以按照特定条件查找员工、按编号对某个员工的某项信 息进行修改、加入新员工的信息、按编号删除已经离职的员工的信息,

7、在满足这些基本功 能的情况下,本程序尽可能地对其进行简化算法并提高算法效率,降低时间复杂度和空间 复杂度。员工管理系统杏一词职工信息修改职工信底排序职工信息图1:员工管理系统系统功能结构图二、内容简介2.1基本要求:(给出程序要达到的具体的要求。)该员工管理系统能够管理员工的编号、姓名、性别、出生年月、学历、职务、电话号 码、住址、工资等这些基本信息,除此之外,系统还可以实现员工信息的查询、更新、插 入、删除、排序等功能,该功能的具体要求如下所示。(1)排序:按不同关键字,如出生年月排序、员工工资排序、电话号码排序、员工编 码这些关键字对所有员工的信息进行排序。(2)查询:从员工管理文件中查询

8、符合某些条件的员工,可以通过关键字查询的信息 有:员工部门查询、出生年月查询、员工学历查询、员工职务查询、员工住址查询、电话 号码查询、员工编码查询、员工性别查询。(3)修改:先按编号检索某个需要修改信息的员工对象,对其某些属性进行修改,这 些属性包括:员工的编号、姓名、性别、出生年月、学历、职务、电话号码、住址、工资 等。(4)插入:新增一名员工,将新增员工信息加入员工管理文件当中。(5)删除:按编号删除已离职的员工的信息。2.2.算法思想:(描述解决相应问题算法的设计思想。)(1)排序算法在排序算法中,员工管理系统提供了四种排序操作,实现了系统的基本排序操作。这 些排序操作分别为:对员工出

9、生年月进行排序,对员工电话号码进行排序,对员工工资进 行排序,对员工编号进行排序。在排序算法中,利用链表的指针的移动遍历整个职工信息 表,利用if语句判断链表上两两之间排序数据的大小,再从大到小的排序。(2)删除算法在删除算法中,创新点事将删除算法拆分为查找要删除职工信息所在的节点位置为一 个算法,删除节点为另一个算法,这样做不仅使算法更为简单清晰,还将一个函数可以被 删除函数、修改函数两个函数调用,提高了算法的效率。(3)链式存储算法因为员工的编码是不可重复的,所以锁定信息时,只需要从职工的编码确定职工的节 点,节省了算法的时间复杂度和空间复杂度。(4)查询算法:在查询算法中,职工管理系统提

10、供了其中多种查询操作,实现了系统的人性化查询操 作,这些操作分别为:对姓名进行查询、对性别进行查询、对出生年月进行查询、对工作年月进行查询、对学历进行查询、对职位进行查询、对住址进行查询、对电话进行查询等 一系列操作。在查找算法中,利用链表的指针的移动扫描整个员工信息表,利用if语句判 断字符串是否匹配,将匹配的员工信息全部输出,如图2所示。在排序算法中,员工管理系统提供了四种查询操作,实现了系统的基本排序操作,这 些排序操作分别为:对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年 月进行排序。排序算法中,利用链表的指针的移动扫描整个员工信息表,将需要比较的两 个数据拆分成一个算法

11、,其余数据为另一个算法,利用if语句判断同一链表相邻数据的大 小,并在链表中从头结点开始,从大到小排列,如图3所示。图3:排序算法程序流程2.3.模块划分:(描述所设计程序的各个模块(即函数)功能。)根据员工管理系统问题的分析和设计需求,可以得到该员工管理系统可以分为五个模 块分别为菜单选择模块、信息输入模块、信息游览模块、信息修改模块、信息删除模块。其系统功能结构如下图所示(1)菜单选择:用于完成接受管理人员的命令,是职工信息管理的入口,用户所进行的各 种操作均需要在此模块中进行选择,并且进而调用其他模块,从而实现相应的功能。(2)信息输入模块:完成职工信息的输入功能,输入职工的信息,包括姓

12、名、出生年月、 职工号、性别、职务、工资、地址、电话、工资等。(3)信息游览模块:完成一件录入的员工信息的查询,查询方式有按编号查询、按姓名查 按学历查询、按员工职务查询、按员工部门进行查询、按出生年月进行查询、按员工住址 进行查询、按员工电话号码、按员工性别进行查询等八种查询方式。(4)信息修改模块:查询要修改员工数据所对应的节点,完成员工信息的修改功能。(5)信息删除模块:查询要删除员工数据所对应的节点,完成对员工信息的删除功能。2.4.数据结构:(给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义 的抽象数据类型。)根据系统功能结构图的描述,可以构造出该系统的抽象数据类

13、型和相对应的函数,其 方法名和功能如下表1所示模块函数或数据结构功能链表数据类型Typedef struct node定义链表节点struct Employee定义职工信息Link Create(Link Head)初始化链表系统处理模块Link Add(Link Head)插入职工信息Link Del(Link Head)删除职工信息Link Modify(Link Head)修改职工信息Void Save_ByFile(Link Head,fstream& ofile)保存职工信息bool Search(Link Head)Link Search_Unique_Front(Link Hea

14、d)查询职工信息Link Sort(Link Head)职工信息排序输出模块void Display_List(Link Head)显示职工信息表1:系统功能结构表2.5.源程序:(给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参 数的含义和函数返回值的含义。)/*员工管理系统*/ /*头文件*/#include #include /字符串头文件#include /写入、读出操作文件的头文件#include /*控制cin、cout之类的一些操纵运算子比如setfill,setw, setbase, setprecision等 I / O 流控制头文件*/#include /

15、将文件中的函数声明放到工程中头文件#include 数的头文件*/*调用 getch()cprintf()cputs()kbhit()之类的函#include /malloc、free、exit等常用函数的头文件using namespace std;struct Employee定义结构体类型Employee,声明职工的结构作为链表节点。string m_Code;string m_Name;string m_Sex;string m_Post;string m_Degree;string m_Home;string m_Department;unsigned int m_Wage;/定义字

16、符串m_ Code 为职工代码/定义字符串 m_Name 为职工姓名定义字符串m_Sex为职工性别定义字符串m_Post为职工职称/定义字符串m_Degree为职工的学历/定义字符串 m_Home 为职工住址/定义字符串m_Department为职工部门定义无符号整型m_Wage为职工工资定义无符号短整型m_ Year 为职工出生年份unsigned short int m_Year;unsigned long int m_Tel;/定义无符号长整型m_Tel为职工的电话号码struct Employee* Next;定义链表节点的指*Next;/取别名typedef struct Emplo

17、yee Node;/Node 类型等同于 struct Employeetypedef Node* Link;型/定义typedef Employee *为一种新类型,即指针类函数声明LinkCreate(Link Head);创建带有头结点的链表voidRelease(Link Head);释放带有头结点的链表LinkAdd(Link Head);/添加员工信息到链表里boolSearch(Link Head);/查询满足姓名和部门条件的员工信息Link唯一)*/Search_Unique(Link Head);/*查询满足“员工代码“的职工信息(职工代码必需voidDisplay_List

18、(Link Head);/打印职工信息voidDisplay_Node(Link pNode);在标准输出设备上输出。LinkModify(Link Head);/修改员工信息LinkDel(Link Head);/删除员工信息voidLinkSort(Link Head);/员工信息排序Save_ByFile(Link Head, fstream& ofile);/保 存员工信息函数实现Link Create(Link Head) /创建一个带头节点的空链表。Head =(Link)new Node;/每次动态分布给Node 一个内存大小if (!Head)cout 分配内存失败! m_Co

19、de =;Head-m_Name =;Head-m_Year = 0;Head-m_Sex =;Head-m_Post =;Head-m_Department =;Head-m_Wage = 0;Head-m_Home =;Head-m_Degree =;Head-m_Tel = 0;Head-Next = NULL;return Head;void Release(Link Head)释放链表Link ptr;/声明一个操作用的指针。while (Head != NULL)ptr = Head;Head = Head-Next;delete ptr;/释放节点资源。Link Add(Link

20、 Head)前插法添加数据。Link pNew;/声明一个新节点。char again;string code, name, sex, post, department, home, degree;unsigned short int year;unsigned int wage;unsigned long int tel;dopNew = (Link)new Node;cout code;cout name;cout year;cout sex;cout post;cout department;cout wage;cout degree;cout home;cout tel;pNew-m_

21、Code = code;pNew-m_Name = name;pNew-m_Year = year;pNew-m_Sex = sex;pNew-m_Post = post;pNew-m_Department = department;pNew-m_Wage = wage;pNew-m_Degree = degree;pNew-m_Home = home;pNew-m_Tel = tel;指针域。pNew-Next = Head-Next;Head-Next = pNew;cout ”数据添加成功!是否继续添加? (Y/N) again; while (again = Y | again = y

22、);/大 小写均能运行return Head;bool Search(Link Head)/查询职工信息。Link ptr;string department, name, home, code, sex, degree;int i, year, tel,j=0;ptr = Head-Next;cout“/ cs1 -* enu_L.cout *=员工信息查询系统=* endl;cout*=* endl;cout * 1.员工部门查询2.出生年月查询3.员工学历查询4.员工职务查询* endl;cout * 5.员工住址查询6.电话号码查询7.员工编码查询8.员工性别查询* endl;cout

23、个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个 enu_Lcout 请选择相应操作菜单项: endl;while (1)cout i;if (i = 1) /对部门进行查询cout department;cout endl 查询结果m_Department = department)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 2) /对出身年月进行查询cout

24、 year;cout endl 查询结果m_Year = year)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0) cout 无此职工的信息。 endl;return false;if (i = 3) /对学历进行查询cout degree;cout endl 查询结果m_Degree = degree)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 4) 对职务进行查询cout d

25、epartment;cout endl 查询结果m_Department = department)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 5) /对住址进行查询cout home;cout endl 查询结果m_Home = home)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 6) /对电话

26、号码进行查询cout tel;cout endl 查询结果m_Tel = tel)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 7) /对员工编码进行查询cout code;cout endl 查询结果m_Code = code)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;if (i = 8) 对员工性别进行查询co

27、ut sex;cout endl 查询结果m_Sex = sex)Display_Node(ptr);/打印满足条件的节点。cout Next;/查询下一节点。if (j = 0)cout 无此职工的信息。 endl;return false;else if (i != 1 & i != 2 & i != 3 & i != 4 & i != 5 & i != 6 & i != 7 & i != 8)cout 输入出错,请再次输入:;Link Search_Unique_Front(Link Head)查询满足“职工代码“的职工信息(职工代码必需唯一),为删除职工信息和修改职工信 息这两个算法做

28、准备。Link ptr;string code;ptr = Head;cout code;cout endl 询结果Next)if (ptr-Next-m_Code = code)return ptr;/注意,是返回的查询到的节点的直接前趋节点。ptr = ptr-Next; /查询下一节点。return ptr;void Display_List(Link Head)Link ptr;ptr = Head-Next;cout =所有职工信息=Next;void Display_Node(Link pNode)在标准输出设备上输出。cout 员工代码员工名字 出生年月 员工性别员工职称员工部门

29、员工名字员工学位电话号码 员工工资 endl;cout setw(12) left m_Code setw(12) left m_Name setw(12) left m_Year setw(12) left m_Sex setw(12) left m_Post setw(12) left m_Department setw(12) left m_Home setw(12) left m_Degree setw(12) left m_Tel/A个空格和一个员工信息共占是个字符 位置 setw(12) left m_Wage Next)cout 你现在可以修改此职工的信息了 endl;cout

30、code;cout name;cout year;cout sex;cout post;cout department;cout wage;cout degree;cout home;cout tel;cout 修改成功,请继续操作! Next-m_Code = code; 因ptr是前趋节点,所以要用 ptr-Next;ptr-Next-m_Name = name;ptr-Next-m_Year = year;ptr-Next-m_Sex = sex;ptr-Next-m_Post = post;ptr-Next-m_Department = department;ptr-Next-m_Wa

31、ge = wage;ptr-Next-m_Name = name;ptr-Next-m_Home = home;ptr-Next-m_Tel = tel;elsecout 没找到此职工的记录,无法修改。Next;if (ptr)ptr_front-Next = ptr-Next;delete ptr;/删除此节点。cout 删除成功,请继续操作! endl;elsecout 没找到此职工的记录,无法删除。Next;ofile.clear();/清除文件结束状态。while (pNode)ofile setw(10) left m_Code setw(10) left m_Name setw(1

32、0) left m_Year setw(10) left m_Sex setw(10) left m_Post setw(10) left m_Department setw(10) left m_Name setw(10) left m_Degree setw(10) left m_Tel/A个空格和一个员工信息共占是个 字符位置 setw(10) left m_Wage Next;cout 数据文件保存成功! Next = NULL) | | (Head-Next-Next = NULL)/此步条件判断非常有 价值。cout 数据节点数少于2个,不用排序! Next-Next;ptr_F

33、= Head;Head-Next-Next = NULL;/到此,分成了两个链表ptr和ptr_Fcout个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个 enu_Lcout *=员工信息排序系统=* endl;cout*=* endl;cout * 1.出生年月排序2.员工工资排序3.电话号码排序4.员工编码排序* endl;cout个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个个 enu_L;cout 请选择相应操作菜单项: endl;cout i;while (ptr)ptr_N = ptr-Next;ptr_F = Head;/ptr_F 的归位。while (ptr_F-Next)if (i = 1)对员工出生年月进行排序if (ptr-m_Year ptr_F-Next-m_Year)ptr-Next = ptr_F-Next;p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号