数据结构简单的职工管理系统.docx
- 文档编号:402337
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:24
- 大小:285.34KB
数据结构简单的职工管理系统.docx
《数据结构简单的职工管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构简单的职工管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构简单的职工管理系统
第一章前言
随着电子信息的到来,能够在任何时候、任何地方、利用应用程序获得统计分析的相关信息,并享受应用软件带来的便捷。
数据结构就是为着实现这样的目标而设立的核心问题解决方法。
《数据结构》是计算机专业一门重要的基础课程。
本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术。
本课程将为整个专业的学习以及软件设计水平的提高打下良好的基础。
为了学好《数据结构》,必须掌握编写一些在特定数据结构上的算法,并通过上机调试,更好地掌握各种数据结构及其特点,此次《数据结构》课程设计目的正在于此。
经过本次课程设计,我们对于数据结构基本理论和存储结构及算法设计将有更加深入的理解,并提高我们在实际设计操作中系统分析、结构确定、算法选择、数学建模和信息加工的能力,提高我们的C/C++语言程序设计能力,以及培养学我们编写程序设计文档的能力。
在经济繁荣中的今天对于职工管理有很大程度上的要求,一个工程能否较好较快的运行,与职工管理的好坏分不开关系,通过该系统,能够更好的管理职工,简化管理,使管理更方便,准确性和直观性更强。
本着实践为目的,通过设计与制作进一步学习和掌握职工管理系统的原理和使用方法。
虽然在一定程度上较为简单,但也能体现在出在人员管理上的方便快捷。
第二章系统功能总体设计分析
2.1问题描述
根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择
对功能要求的实现是解决管理系统的关键问题。
一个管理系统能将其划分为插入、删除、查找、排序等功能。
对不同的功能模块进行编写实现,然后通过一定的方式的进行连接调用,从而完成对各部分的操作。
2.2详细要求
由系统管理员依次输入现有职工和新增职工的以下信息:
姓名(可以重复)、性别、出生年月、工作年月、学历、职务、地址、电话等信息,并且注意输入时姓名、学历、职务、地址为字符串形式,性别为字符,其余的为长整型数字。
系统管理员根据公司的人员流动情况,选择系统提供的各项功能进行操作,并输出相应的结果。
2.3功能分析
2.3.1具体要求
简单的职工管理系统主要实现以下功能:
新增一名职工:
将新增职工对象按姓名以字典方式职工管理文件中。
删除一名职工:
从职工管理文件中删除一名职工对象。
查询:
从职工管理文件中查询符合某些条件的职工。
修改:
检索某个职工对象,对其某些属性进行修改。
排序:
按某种需要对职工对象文件进行排序。
要求:
职工信息包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
2.3.2系统流程分析
(1)输入功能的实现:
要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。
由键盘输入职工对象,以文件方式保存。
程序执行时先将文件读入内存。
(2)系统处理功能的实现:
系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。
如对职工对象中的"姓名"按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。
(3)输出的实现:
根据选择的操作,输出与之对应的信息。
综上可以绘制出职工管理功能的系统流程图,如图1所示
图1系统流程图
2.3.3系统功能结构
根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为五个模块:
职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块。
其系统功能结构如图2所示。
图2系统功能结构图
2.3模块函数构造
根据系统功能结构图的描述,可以构造出该系统的抽象数据类型和相对应的函数,其方法名和功能如表1所示。
表1函数功能表
模块
函数或数据结构
功能
链表数据类型
typedefstructNode
定义链表结点
typedefstructDatatype
定义职工信息
ListInitiate(SLNode*head)
初始化链表
系统处理模块
SLNode*ListInsert(SLNode*head,DataTypex)
插入职工信息
ListDelete(SLNode*head)
删除职工信息
ListModify(SLNode*head)
修改职工信息
put(SLNode*head,FILE*fp)
保存职工信息
Listfind(SLNodehead)
查询职工信息
Listpaixu(SLNode*head)
职工信息排序
输出模块
print(SLNode*head)
显示职工信息
第三章详细设计分析
3.1抽象数据类型定义
(1)定义表结点(typedefstructNode)
typedefstructNode{
longintborn_time,work_time,tele_num;
charsex,name[ALLMAX],degree[ALLMAX],job[ALLMAX],address[ALLMAX];
structNode*next;
}SLNode;
(2)定义职工信息(typedefstructDatatype)
typedefstruct{
longintborn_time,work_time,tele_num;
charname[ALLMAX],sex,degree[ALLMAX],job[ALLMAX],address[ALLMAX];
}DataType;
(3)初始化链表(ListInitiate(SLNode**head))
voidListInitiate(SLNode**head)//---------------------------------链表初始化
{
if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit
(1);//动态分配存储空间
(*head)->next=NULL;
}
3.2主函数设计
(1)根据详细设计要求,可以得到主函数代码及其对应的程序流程图:
在主函数中,实现了友好的界面设计。
系统需要输入职工的基本信息:
姓名、性别、出生年月、工作年月、学历、职务、住址、电话等。
这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有七种操作的调用:
新增职工信息:
SLNode*ListInsert(SLNode*head,DataTypex)
查询职工信息:
Listfind(SLNodehead)
删除职工信息:
ListDelete(SLNode*head)
修改职工信息:
ListModify(SLNode*head)
职工信息排序:
Listpaixu(SLNode*head)
保存职工信息:
put(SLNode*head,FILE*fp)
显示职工信息:
print(SLNode*head)
(2)主函数程序流程图如图3所示:
图3主函数程序流程图
3.3查找算法设计
在查询算法中,职工管理系统提供了七种查询操作,实现了系统的人性化查询操作。
这些查询操作分别为:
对姓名进行查询,对性别进行查询,对出生年月进行查询,对工作年月进行查询,对学历进行查询,对职位进行查询,对住址进行查询,对电话进行查询等一些列操作。
查找算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。
查询算法程序流程图如图4所示:
图4查询算法程序流程图
3.4排序算法设计
在排序算法中,职工管理系统提供了四种查询操作,实现了系统的基本排序操作。
这些排序操作分别为:
对姓名进行排序,对性别进行排序,对出生年月进行排序,对工作年月进行排序,等一些列操作。
排序算法中,利用链表的指针的移动扫描整个职工信息表,利用strcmp()函数判断字符串是否匹配。
排序的核心代码:
for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)
{
if(p->born_time>q->born_time)//对出生年月进行排序
{
if(head==p)
{
head->next=q->next;
head=q;
q->next=p;
q=head->next;
p=head;
}
else
{
p->next=q->next;
q->next=p;
s->next=q;
p=q;
q=p->next;
}
flag=1;
}
}
排序算法流程图如图5所示:
图5排序算法程序流程图
测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验是否满足规定的需求或弄清预期结果与实际结果之间的差别.
系统运行结果:
(1)进入职工管理系统,如图6所示:
图6主菜单选择界面
(2)新增一职工信息并查询全部职工信息,如图7、8所示:
图7新增职工信息界面
图8查询职工信息界面
(3)修改职工信息并与前面信息对照,如图9所示:
图9修改职工信息界面
(4)退出系统,如图10所示:
选择0,退出职工管理系统。
图10退出职工管理系统
第五章课程设计总结
本次课程设计是围绕数据结构进行。
根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改以及保存。
但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。
把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。
虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。
那就是可以排序上面多设计几个算法。
实现多角度排序。
在这个系统中没有职工序号的信息,所以允许职工姓名相同,在很大程度上面,可能是的职工信息重复。
经过这次数据结构课程设计,我们不仅及时巩固的了数据结构、算法、以及软件工程的知识,并明白数据结构和算法对于程序时间和空间性能的影响,及软件工程提供的开发流程和工具对于实现特定功能程序的重要意义。
当我们面对一个实际问题,应该迅速根据问题性质和特点抽象成特定的数据结构,当然每个问题都有可能能够抽象成多种数据结构,每种数据结构适应于不同的算法。
因此应该综合考虑这样的数据结构、算法以及它们的空间和时间效率,然后从中选择一个作为实现程序的基础。
此外,对程序的测试应该要仔细,根据模块的特点和测试阶段,采用各种软件测试方法对程序进行测试,确保各个模块的正确性和完整性,最后集成起来测试其是否正确和完整地实现了问题描述中要求的功能。
参考文献
[1]李云清,杨庆红,揭安全.数据结构(C语言版)[M].北京:
人民邮电大学出版社,2004.6
[2]潘彦.算法设计与分析基础[M].北京:
清华大学出版社,2007.1
[3]肖梦强,曲秀清.软件工程——原理、方法与应用[M].北京:
中国水利水电出版社,2005.10
[4]吕凤翥.C++语言程序设计(第2版)[M].北京:
电子工业出版社,2007.2
[5]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,20
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 简单 职工 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)