1、(完整word)简单的职工信息管理系统报告淮阴工学院算法设计技能训练实习报告题目:简单的职工管理系统系(院): 计算机工程学院 专 业: 计算机科学与技术(微软合作) 班 级: 计算机 1137 学 号: 姓 名 指导教师: 周海岩 学年学期: 2014 2015 学年 第 1 学期2014年12月31日算法设计技能训练任务书课题名称简单的职工管理系统设计目的1、通过算法设计技能训练,深入理解算法设计的意义和重要性,更好地掌握算法设计的知识。2、 能够针对某一具体问题,设计算法进行解决。3、 锻炼实践动手能力,提高解决问题的能力。实验环境硬件:1、PC机,奔腾以上CPU, 512MB以上内存,
2、80G以上硬盘; 软件:Visual C+编程工具任务要求1.对单位的职工进行管理,包括插入、删除、查找、排序等功能。2.职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。 (1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。 (2)删除一名职工:从职工管理文件中删除一名职工对象。 (3)查询:从职工管理文件中查询符合某些条件的职工。 (4)修改:检索某个职工对象,对其某些属性进行修改。 (5)排序:按某种需要对职工对象文件进行排序。 3。实现功能 职工对象数不必很多,便于一次读入内容,所有操作不经过内外存交换。 (1)由键盘输入职工对象,以文件方式保存.
3、程序执行时先将文件读入内存。 (2)对职工对象中的“姓名”按字典顺序进行排序. (3)对排序后的职工对象进行增、删、查询、修改、排序等操作.工作进度计划序号起止日期工 作 内 容12014。12。28任务下达,查阅文献资料22013。12.292013.12。31总体设计、素材搜集、课题详细设计、调试32015。1.12015。1。3完善设计、撰写报告42015.1.4答辩指导教师(签章): 年 月 日 摘要在当今社会,互联网的发展,给人的工作和生活带来了极大的便利和高效,信息化、电子化已经成为节约运营成本提高工作效率的首选。随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工
4、信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度已经远远跟不上公司的需求。而且,人工方式来管理职工信息,存在着许多缺点,如:效率低、保密性差,对信息的查找、更新和维护不便。计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识。本文对职工管理系统进行设计,主要为了企业职工的信息进行集中管理和快捷查询。本职工信息管理系统包括新增、删除、查询、修改、排序等常用功能。整个系统用C+语言设计,用户可轻松管理企业员工信息。关键词 职工管理系统 职工信息管理 C+ 数据结构目 录1 引言 51。1 设计目的 5 1。2 设计意义 52 需求分析 62.1 设计题目描述 62.2 设计要
5、求 62.3 实现提示 62.4 选做内容 62。5 软硬件运行环境及开发工具 63 课程设计报告内容 6 3。1 系统设计思想 7 3。2 系统概要设计 7 3。3 系统详细设计 93。3.1 结构体设计 93。3。2 主函数设计 93。3.3 查找算法设计 113。3.4 排序算法设计 11 3.4 运行与测试 13总结 16致谢 17参考文献 18附录 程序代码 19指导教师评语 32图1 系统流程图 7图2 系统功能结构图 8表1 函数功能表 8图3 模块调用关系图 9图4 主函数程序流程图 10图5 排序算法程序流程图 13图6 主菜单选择界面 13图7 新增并查询职工信息界面 14
6、图8 修改职工信息界面 14图9 按工资排序职工信息显示图 15图10 退出职工管理系统 15371 引言通过大一一学年对C+语言的学习,了解到了很多C+语言的相关知识。它简洁紧凑、使用灵活方便、运算符丰富、适用范围大、可移植性好。它既具有高级语言的特点,又具有汇编语言的特点.此职工管理系统利用C+语言的优点,进行了设计.睡着社会经济的飞速发展,信息化程度的不断深入,传统方式的职工信息管理已愈来愈不能满足各大公司的需求。企业间的竞争愈加激烈时,如何高效地管理大量的职工信息,如何进行快速地查询,如何利用计算机技术加强企业职工信息管理,是摆在各家企业面前的一个迫切需要解决的问题。信息化的职工管理系
7、统为用户提供充足的信息和快捷的查询手段,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等.这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。11 设计目的本程序旨在训练基于C+语言的编程思想,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,了解管理信息系统的开发流程,熟悉C+语言的文件和结构数组的各种基本操作。能够利用所学的基本知识好技能,解决简单的程序设计问题,增强独立完成工作的能力。通过本程序的训练,提高逻
8、辑思维能力,熟练掌握一些排序算法,熟练掌握利用数组存储结构实现职工信息管理的原理,为进一步开发出高质量的管理系统打下坚实的基础。12 设计意义做一个企业员工信息管理系统,就是需求所定制的,所以他首先要做的是满足最基本得员工信息的增删改查及排序基础上进行功能的扩展,其次是部门管理,工资管理等等。 一个正规性企业都希望自己的员工管理非常合理,如此复杂性的操作如果通过人手动的写,会非常的麻烦。基于这一点考虑到设计管理类型的软件,来解决这个繁琐的问题,方便与企业的工作管理以及一些制度的规定。 在企业中,员工信息管理工作是非常重要的一项工作,它负责整个企业的日常人事安排,员工的人事管理等。高效的人事管理
9、可以提高企业的市场竞争力,使企业具有更强的凝聚力和活力。为此,提高员工管理工作的效率,设计 一套员工信息管理系统具有实际应用意义。2 设计题目描述和设计要求21 设计题目描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。 22 设计要求职工对象包括姓名(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、电话(字符串)等信息。 (1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。 (2)删除一名职工:从职工管理文件中删除一名职工对象。 (3)查询:从职工管理文件中查询符合某些条件的职工。 (4)修改:检索某个职工对
10、象,对其某些属性进行修改。 (5)排序:按某种需要对职工对象文件进行排序。2。3 实现提示 职工对象数不必很多,便于一次读入内容,所有操作不经过内外存交换. (1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。 (2)对职工对象中的“姓名”按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作.2.4 选做内容 将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。2.5 软硬件运行环境及开发工具Windows7操作系统 Visual C+ 6。0 运行环境3 课程设计报告内容3。1 系统设计思想(1)系统数据需
11、求通过对企业员工的信息管理业务流程的调查,总结系统对其数据的需求,主要有:员工档案信息,员工工资信息,部门、职务、工资类型等基础信息。(2)系统功能需求系统的主要需求,即所设计的系统在功能上应做什么.本系统主要的功能有:员工管理:完成员工档案的新增、修改、删除、查询及打印等功能;主要实现对所有员工的姓名、性别、出生年月、工作年月、学历、职务(字符串)、住址、电话等信息的管理。工资管理:完成员工工资的录入、查询、分析及相关打印等功能;主要实现对员工的姓名、工资类别及工资金额等信息的管理.系统帮助:帮助用户解决问题,沟通与软件开发者的联系。(3)系统性能需求系统的性能指标包括存储容量限制、运行时间
12、限制、传输速度要求、安全保密性等几个方面。(4)系统运行环境需求硬件方面:采用的设备机型以及外部设备等;软件方面:支持系统运行的系统软件,如操作系统、数据库系统等。(5)系统可靠性及安全保密需求对系统、重要子系统在运行中的安全、可靠、保密方面提出要求。3.2 系统总体设计1、输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。 2、系统处理功能的实现:系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。如对职工对象中的姓名按字典顺序进行排
13、序;对排序后的职工对象进行增、删、查询、修改、排序等操作。 3、输出的实现:根据选择的操作,输出与之对应的信息。 综上可以绘制出职工管理功能的系统流程图,如图1所示。图1 系统流程图4、 功能结构根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块.其系统功能结构如图2所示。图2 系统功能结构图5、模块函数构造根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示.表1函数功能表6、系统模块的调用关系图框架根据系统功能结构图的描述,可以构造
14、出该系统的抽象数据类型和相对应的函数,函数之间通过调用来实现系统的功能. 职工管理系统问题的系统模块类图如图3所示:图3模块调用关系图3.3 系统详细设计3.3。1 结构体设计本课程设计的是职工管理系统,对于职工的基本信息通过构造结构体链表实现:struct Employee string m_Code; /编号string m_Name; /姓名string m_Year; /出生年月string m_Sex; /性别string m_Post; / 职务string m_Department; /部门unsigned int m_Wage; /工资struct Employee* Next
15、; ;3,3.2 主函数设计 本程序主要是使用链表来实现操作.使用链表这样做的好处是,可以随时增加内容,也容易将职工信息从文件中删除.为职工设计一个类,单独设计完成这个文件读写的成员函数。使用结构数组作为职工信息的存储器,由它们和文件建立读写关系.需要显示它们时,先将文件读入内存,然后再显示。需要显示输出职工信息时,则直接从内存链表中筛选。当然,需要显示原始信息时,也通过直接显示链表信息的方法实现。这四种数据的显示问题均通过一个成员函数来完成。(1)根据详细设计要求,可以得到主函数代码及其对应的程序流程图:在主函数中,实现了友好的界面设计。系统需要输入职工的基本信息:姓名、性别、出生年月、工作
16、年月、学历、职务、住址、电话等.这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:1)新建函数 Link Create(Link Head);/ 创建一个带头节点的空链表 2)修改函数 Link Modify(Link Head);/修改单个节点3)删除函数 Link Del(Link &Head);4)查询函数: bool Search(Link Head)/ 查询同时满足“姓名和“部门的职工信息 Link Search_Unique_Front(Link Head)/ 查询满足“职工代码“的职工信息(职工代码必需唯一)5)保存函数 void Save_ByFile(Li
17、nk Head)6)排序函数(包括按工资排序和按姓名进行字典排序)Link Sort(Link Head)Link Sort_byname(Link Head)7)显示函数 void Display_List(Link Head)(2)主函数程序流程图如图4所示:图4主函数程序流程图3。3.3 查找算法设计在查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。这些查询操作分别为:对姓名进行查询,对性别进行查询,对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作.查找算法中,利用链表的指针的移动扫描整个职工信息表
18、,利用strcmp()函数判断字符串是否匹配。查找算法主要代码如下:Link Search_Unique_Front(Link Head) /查询满足“职工代码“的职工信息Link ptr; string code; ptr=Head-Next; coutcode; coutendl-查询结果-”endl; while(ptr) if(ptr-m_Code=code) Display_Node(ptr);/打印满足条件的节点。return ptr;ptr=ptr-Next;/查询下一节点。return ptr; void Display_List(Link Head) /显示职工信息函数 Li
19、nk ptr; ptr=HeadNext; cout”=所有职工信=”endl; while(ptr) Display_Node(ptr); ptr=ptr-Next; 3。3.4 排序算法设计在排序算法中,职工管理系统提供了四种查询操作,实现了系统的基本排序操作。这些排序操作分别为:对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年月进行排序,等一些列操作。排序算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。排序的核心代码:Link Sort(Link Head) /创建的是带头节点的链表(用直接插入法)if(Head-Next=NULL
20、)|(HeadNextNext=NULL))/条件判断 cout数据节点数少于2个,不用排序!Next; ptr_F=Head;/ptr_F的归位。 while(ptr_F-Next) if(ptr-m_Wageptr_FNext-m_Wage) ptrNext=ptr_F-Next; ptr_F-Next=ptr; break; else ptr_F=ptr_FNext; if(ptr_F-Next=NULL) ptrNext=ptr_FNext; ptr_F-Next=ptr;/表示插到有序链表的最后面了 ptr=ptr_N;/归位,准备下一次排序cout”从高到低,排序成功!”endl;
21、 return Head; 排序算法流程图如图5所示:图5排序算法程序流程图3。4 运行与测试测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.其主要阶段包括单元测试、集成测试、确认测试和系统测试.测试方法主要有白盒测试法和黑盒测试法;其中,白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作,检验程序中的每条通路是否都能按预定要求正确工作;黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构。 职工信息有:姓名、性别、
22、出生年月、工作年月、学历、职务、住址、电话。在数据输入中注意数据类型。 (1)进入职工管理系统,如图6所示:图6主菜单选择界面(2) 新增一职工信息并查询全部职工信息,如图7所示:图7新增并查询职工信息界面(3) 修改职工信息并与前面信息对照,如图8所示:图8修改职工信息界面(4) 按工资排序职工信息并显示,如图9所示:图9按工资排序职工信息显示图(5)退出系统,如图10所示:选择0,退出职工管理系统。图10退出职工管理系统总结本次设计我选择的题目是职工信息管理系统。因为事先的计划非常明确,所以我在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为涉
23、及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽.加上在开发系统之前,我阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行.由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。经过对职工信息管理系统的分析与编程,我得到了很大的收获.自主学习的必要性更是解决问题的基础.这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。除了对系统做出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐
24、渐变得明朗。每一个功能模块经过调查后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好.在这样的前提下,最后顺利完成了这份设计。这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性.从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用。致谢感谢淮阴工学院、计算机工程系给我们提供了这次实验机会,感谢实验室人员给我们提供了实验环境,感谢我们数据结构任课老师张有栋老师的谆谆教诲,感谢周海岩老师的辛勤指导和无微不至的关怀,感谢朱叶、袁星星等同学在实验中给我提供的帮助,感谢实用c+教程的作者马智娴和徐克奇二人.回顾这过
25、去的一周,我收获了很多,也成长了很多,感悟到上机实验是多么的重要,自己去动手操作是多么的重要,懂得了如何去多方位地查找资料,完善和创新一些旧的思维方式,相信这次课程设计的体验将成为今后我更多更广学习的奠基石.同时,也在此感谢老师能给我这次机会锻炼自己!在这次的课程设计中要感谢我的朋友们,要不是他们的细心和热情帮助这次的课程设计就没那么容易完成。有些由于粗心造成的错误就很难查出!所以在这里对他们表示我诚挚的谢意!其次,也谢谢上机实验时指导老师的细心指导!当然做课程设计不是靠一个人的力量能够完成的,需要各个方面的支持和借鉴。在做课程设计的同时也提高了各方面的能力,让我明白了一个道理:同学之间应该相
26、互帮助,相互学习才能提高自己的能力!在本次课程设计中由于我们没有经验所以在这一周的课程设计中经常会遇到各方面的小问题是自己一时难以解决的,再次,我要谢谢他们对我的帮助,让我能够比较顺利的完成本次课程设计,而且还提高了各个方面的能力。感谢所有支持和帮助过我的人.参考文献1 殷人昆.数据结构(第二版).北京:清华大学出版社,2007;2 马智娴、徐克奇、荣祺.实用c+教程.北京:高等教育出版社,2004;3 潘彦。算法设计与分析基础M.北京:清华大学出版社,2007。1;4 吕凤翥。C+语言程序设计(第2版)M.北京:电子工业出版社,2007。2; 5 李云清,杨庆红,揭安全。数据结构(C+语言版
27、)M.北京:人民邮电大学出版社,2004。6;附录 程序代码include #include fstream #include iomanip #include include using namespace std; struct Employee/声明职工的结构作为链表节点 string m_Code; /数据域 string m_Name; unsigned short int m_Year; string m_Sex; string m_Post; string m_Department; unsigned int m_Wage; struct Employee Next; /链表节点
28、的指针域 ; typedef struct Employee Node; /取别名 为现有数据类型定义同义词typedef Node Link; /取别名 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 H
29、ead); Link Del(Link Head); void Save_ByFile(Link Head,fstream ofile); Link Sort(Link Head); /函数实现Link Create(Link Head) /创建一个带头节点的空链表 Head=(Link)new Node; if(!Head) cout”分配内存失败!”m_Code=”; Headm_Name=”; Headm_Year=0; Head-m_Sex=”; Headm_Post=; Head-m_Department=”; Head-m_Wage=0; Head-Next=NULL; retur
30、n Head; void Release(Link Head) /释放链表 Link ptr; /声明一个操作用的指针 while(Head!=NULL) ptr=Head; Head=HeadNext; delete ptr; /释放节点资源 Link Add(Link Head) /前插法添加数据 Link pNew;/ 声明一个新节点. char again; string code,name,sex,post,department; unsigned short int year; unsigned int wage; do pNew=(Link)new Node; coutcode;
31、 coutendl请输入职工姓名:”; cinname; coutendlyear; while(cin.fail() cout请输入正确的年份格式。year; coutsex; coutpost; coutendldepartment; coutendlwage; while(cin。fail() cout请输入正确的工资数据。endl; cin。clear(); fflush(stdin); cinwage; coutm_Sex=sex; pNew-m_Post=post; pNewm_Department=department; pNew-m_Wage=wage; pNew-Next=H
32、ead-Next; Head-Next=pNew; cout数据添加成功!是否继续添加?(Y/N)”again; while(again=Y|again=y); return Head; bool Search(Link Head) /查询同时满足“姓名和“部门”的职工信息Link ptr; string department; string name; ptr=HeadNext; cout请输入部门:”; cindepartment; coutendl请输入姓名:”; cinname; coutm_Department=department) Display_Node(ptr);/打印满足条
33、件的节点。return true; ptr=ptrNext;/查询下一节点. coutNext; coutcode; coutendl”-查询结果-m_Code=code) Display_Node(ptr);/打印满足条件的节点。return ptr;ptr=ptrNext;/查询下一节点。 return ptr; void Display_List(Link Head) /显示职工信息函数 Link ptr; ptr=Head-Next; cout”=所有职工信息=endl; while(ptr) Display_Node(ptr); ptr=ptrNext; void Display_N
34、ode(Link pNode) /在标准输出设备上输出coutendlsetw(10)leftpNodem_Code /setw(10)表示占10个字符位置setw(10)leftpNodem_Name setw(10)leftpNode-m_Year setw(10)leftpNode-m_Sex setw(10)leftm_Post setw(10)m_Department setw(10)m_Wageendl; Link Modify(Link Head) / 修改单一个节点Link ptr; ptr=Search_Unique_Front(Head); string code,name
35、,sex,post,department; unsigned short int year; unsigned int wage; if(ptr) cout”-你现在可以修改此职工的信息了-endl; coutcode; coutname; coutendl请输入职工出生年份:”; cinyear; while(cin.fail()) cout”请输入正确的年份格式.endl; cin.clear(); cinyear; coutendlsex; coutendl请输入职工职称:; cinpost; coutendldepartment; coutendl”请输入职工工资:; cinwage; while(cin。fail() cout”请输入正确的工资数据。”wage; coutendl; ptrm_Code=code;ptr-m_Name=name; ptr-m_Year=year; ptrm_Sex=sex; ptrm_Post=post; ptr-m_Department=department; ptr-m_Wage=wage; elsecout”没找到此职工的记录,无法修改。”endl;
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100