中南大学。
二○一二~二○一三学年第二学期。
信息科学与工程学院。
课程名称: 数据结构课程设计
班级: 计科1106
学号: 0909113109 0909113110
姓名: 胡岁生胡飞龙
指导教师: 杨旺老师。
二○一三年六月。
职工管理系统课程设计报告。
一、需求分析。
职工管理系统是一个工作单位不可缺少的管理工具,它管理的数据对于公司的决策者和管理者来说都至关重要,所以职工管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来各个公司基本上都是靠传统的人工方式来管理职工信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于信息的查找、更新和维护都带来了不少的困难。
当今社会,信息迅速膨胀,随着各个公司的规模增大,有关信息管理工作所涉及的数据量越来越大,职工信息量也大大增加,利用传统的手工查询、登记、修改等方法的处理速度远远跟不上公司的需求,有的公司不得不靠增加人力、物力来进行信息管理。
随着计算机技术的不断提高,计算机作为知识经济时代的产物,其强大的功能已为人们深刻认识,它已进入人类社会的各个行业和领域并发挥着越来越重要的作用,成为人们工作和生活中不可缺少的一部分。
而作为计算机应用的一部分,使用计算机对职工进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高职工管理的效率,也是公司的科学化、正规化管理和与世界接轨的重要条件。
职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果。
简单的职工管理系统:
1、问题描述。
对单位的职工进行管理,包括插入、删除、查找、排序等功能。
2、要求。职工对象包括姓名(字符串)、性别(字符)、出生年月(数字)、工作年月(数字)、学历(字符串)、职务(字符串)、住址(字符串)、**(字符串)等信息。
1)新增一名职工:将新增职工对象按姓名以字典方式职工管理文件中。
2)删除一名职工:从职工管理文件中删除一名职工对象。
3)查询:从职工管理文件中查询符合某些条件的职工。
4)修改:检索某个职工对象,对其某些属性进行修改。
5)排序:按某种需要对职工对象文件进行排序。
3、实现功能。
1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
2)对职工对象中的“姓名”按字典顺序进行排序。
3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
二、概要设计
1、输入功能的实现:要想实现职工管理系统的输入,必须要建立一个职工信息系统的抽象数据类型,其中职工信息以链表的存储方式实现。由键盘输入职工对象,以文件方式保存。
程序执行时先将文件读入内存。
2、系统处理功能的实现:系统管理员根据公司的人员流动情况,在提示信息的提示下,选择相应的服务进行操作。如对职工对象中的"姓名"按字典顺序进行排序;对排序后的职工对象进行增、删、查询、修改、排序等操作。
3、输出的实现:根据选择的操作,输出与之对应的信息。
综上可以绘制出职工管理功能的系统流程图,如图1所示。
图1 系统流程图。
4、系统功能结构。
根据职工管理系统问题的分析和设计要求,可以得到该职工管理系统可以分为七个模块:职工信息添加模块、职工信息修改模块、职工信息删除模块、职工信息查询模块、职工信息排序模块、职工信息保存模块、职工信息显示模块。
三、详细设计。
1)根据详细设计要求,可以得到主函数**及其对应的程序流程图:在主函数中,实现了友好的界面设计。系统需要输入职工的基本信息:
姓名、性别、出生年月、工作年月、学历、职务、住址、**等。这个系统还利用键盘输入提供的主菜单服务,在主菜单中,有九种操作,以下是结构体及其定义:
char name[m]; 姓名。
char sex[m]; 性别。
char birthday[m]; 生日。
char workday[m工作日。
char education[m教育程度。
char position[m职位。
char address[m地址
char number[m**。
void creat(wi当没有导入文件时,用此函数来创建。
void insert(wi插入函数,将新增的数据插入到链表的尾端。
void delete(wi删除函数,按照姓名来进行指定的删除 void search_by_name(wi查找函数,按照姓名来进行查找。
void edit(wi修改函数,按照姓名进行查找,然后针对指定的员工信息进行修改。
wi *sort(wi排序。
void menu(wi菜单。
void output(wi显示函数。
void s**(wi保存函数。
wi *opn(wi打开函数。
2)主函数程序流程图如图2所示:
图 2 主函数程序流程图。
3、查找模块设计。
在查询算法中,职工管理系统按照姓名进行查找,实现了系统的人性化查询操作。
void search_by_name(wi *head) /按姓名查询函数。
wi *p=head;
char name[m]; 将要查找的姓名储存在name[m]数组中,再与struct结构体中的name进行对比,用strcmp比较函数,输出为0时,代表比对相同。
printf("please input the name which you want to search");
scanf("%s",name);
while(p &&strcmp(name,p->name)!=0)
p=p->next;
if(p==null ||strcmp(name,p->name)!=0)
printf("system can not find the person");
elseprintf("name:%sage:%sbirthday:
%sworkday:%sposition:%seducation:
%saddress:%snumber:%s",p->name,p->sex,p->birthday,p->workday,p->education,p->position,p->address,p->number);
通过使用strcmp比较函数,来实现从名单中查找相应的名字。当输入的名字与名单中某一名字相差为0时,便可以得到查找结果。
4、排序模块设计。
在排序算法中,职工管理系统按照姓名首字母的英文顺序来排序,实现了系统的基本排序操作。:
wi *sort(wi *head) /排序,将所有结点的地址放入sort[m]中,再对sort[m]中的所有结点的名字的首字母进行由小到大排序,将排好的sort数组的元素赋值给新的链表,并输出。
wi *head_2,*k,*q,*sort[m],*p=head;
int i=1,n,j,b;
while(p)
n=i-1;
i=1;while(i<=n)
i=1;head_2=q=k=sort[i];
for(i=2;i<=n;i++)
return head_2;
排序,将所有结点的地址放入sort[m]中,再对sort[m]中的所有结点的名字的首字母进行由小到大排序,将排好的sort数组的元素赋值给新的链表,并输出。
四、调试分析。
测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验是否满足规定的需求或弄清预期结果与实际结果之间的差别。
在调试查询修改功能过程中,查询的总是不正确,查询的结果显示,没有找到职工信息,最后发现查找的结点不正确,查询应该与输入的值和头结点next比较,而不是头结点。还有就是查询结点不知道如何循环,最后又看看了记得笔记和书,才知道如何继续查找而不出错误。
修改时总是不能正确的修改,最初时修改总是修改最后输入的数据。最后终于找到了,又是结点写错了。
排序时注意交换的先后顺序就可以了,删除时注意交换结点的顺序。
五、测试结果。
1)进入职工管理系统,如图3所示:
图 3主菜单选择界面。
2)新增一职工信息并查询全部职工信息,如图4,5所示:
图 4 新增并查询职工信息界。
3)修改职工信息并与前面信息对照,如5所示:
图5 修改职工信息界面。
4)按姓名排序职工信息并显示,如图6所示。
图6 按姓名排序职工信息并显示。
5)退出系统,如图7所示:选择 9,退出职工管理系统。
图7 退出职工管理系统。
六、心得与体会。
本次课程设计是围绕数据结构进行。根据问题描述可知,需要解决问题并不复杂,整个问题只需要实现一个职工管理系统功能,那就是在这个系统中实现对职工信息的插入、删除、查询、排序、修改以及保存。但是,为了实现该功能,却需要优秀的算法和数据结构以保证实现的时间和空间效率。
把职工信息存储在一个单链表中,利用指针实现对职工信息的各项基本操作。
虽然设计的程序完成了题目描述所需要实现的功能,但是仍然存在不如人意的地方。那就是可以排序上面多设计几个算法。实现多角度排序。
在这个系统中没有职工序号的信息,所以允许职工姓名相同,在很大程度上面,可能是的职工信息重复。
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...