企业员工信息管理系统 设计与实现 数据结构.docx
- 文档编号:12014169
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:156.20KB
企业员工信息管理系统 设计与实现 数据结构.docx
《企业员工信息管理系统 设计与实现 数据结构.docx》由会员分享,可在线阅读,更多相关《企业员工信息管理系统 设计与实现 数据结构.docx(16页珍藏版)》请在冰豆网上搜索。
企业员工信息管理系统设计与实现数据结构
《算法与数据结构》
课程设计
题目:
企业员工信息管理系统
设计与实现
院、系:
计算机信息与技术系
学科专业:
计算机科学与技术
学号:
B10060103
学生姓名:
陈绪杰
指导教师:
王楠
2012年9月16日
设计要求
1.1问题描述
在这个企业员工信息管理系统中,包括企业中所有员工的信息,如:
编号、姓名、性别、出生年月、学历、职务、电话、住址等。
并且该系统能够完成所有员工信息的相应查询、更新、插入、删除、以及排序等功能。
1.2需求分析
(1)在相应的每条记录中,应该包括该员工的所有信息,譬如:
编号、姓名、性别、出生年月、学历、职务、电话、住址等;
(2)根据不同关键字(如编号,姓名等),对所有员工的信息进行排序;
(3)按照指定条件查找某个员工的所有信息;
(4)按编号对某个员工的信息进行更改;
(5)添加新员工的信息,并实现排序;
(6)按编号删除已离职的员工的信息;
(7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。
概要设计
2.1主界面设计
当输入相应的操作字符(比如:
0-6或者#),通过在主函数中选择并调用对应的子函数程序以及其他函数(比如:
菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:
添加、查找、更改、排序、删除、显示等)。
系统主界面如下:
2.2存储结构设计
依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。
如:
编号|姓名|性别|出生年月|学历|职务|电话|住址
01opkn1991-10uq189p
本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。
2.3系统功能设计
依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的插入、添加、删除、查找、更改和数据的排序以及数据的显示等功能模块。
(1)输入函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
(2)排序函数功能:
按照指定关键字对员工信息进行排序。
(3)显示函数功能:
输出表中所有节点的信息。
(4)查找函数功能:
按照指定关键字,对相应员工信息进行查找。
(5)更改函数功能:
输入员工编号,查找到员工信息,对其信息进行更新。
(6)删除函数功能:
查找到要删除员工的相应信息,并将其从表中永久的删除。
(7)主函数功能:
调用以上子函数,并用开关语句进行选择性的调用。
(8)其它函数功能:
主要起辅助作用,比如:
菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。
模块设计
3.1系统子程序及功能设计
(1)输入函数:
Stuff*App(Stuff*head);//通过输入各项数据给数据元素,来建立一个数据表。
(2)排序函数:
VoidSort(Stuff*head);//按照指定关键字对员工信息进行排序。
(3)显示函数:
VoidShow(Stuff*head);//输出表中所有节点的信息。
(4)查找函数:
Stuff*Search(Stuff*head);//按照指定关键字,对相应员工信息进行查找。
(5)更改函数:
Stuff*Change(Stuff*head,Charn[10]);//输入员工编号,查找到员工信息,对其信息进行更新。
(6)删除函数:
Stuff*Del(Stuff*head,Charn[10]);//查找到要删除员工的响应信息,并将其从表中永久的删除。
(7)主函数:
Voidmain();//调用以上子函数,并用开关语句进行选择性的调用。
(8)其他函数:
CharMenu();//主要起到引导作用.
VoidFre(Stuff*head);//主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。
3.2系统功能图
图3-2系统功能图
详细设计
4.1数据类型定义
结构体定义:
typedefstructStuff
{
charnumber[10];//编号
charname[10];//姓名
charsex[8];//性别
charbirthday[10];//生日
chardegree[20];//学历
charbusiness[20];//职务
charphone[15];//电话
charplace[50];//住址
charcon[50];//判断关键字
structStuff*next;//指针域
}Stuff;
4.2系统主要子程序详细设计
1.输入函数:
函数原型:
Stuff*App(Stuff*head);
函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
算法要点:
(1)用循环控制输入记录;
(2)为每一结构体数据项输入数据;
(3)返回输入记录数。
主要算法:
Stuff*App(Stuff*head);
{
while(n)
{
p->next=NULL;//指针域为空
printf("请输入第%d名员工:
\n",n);
printf("编号|姓名|性别|出生年月|学历|职务|电话|住址:
\n");
getchar();
scanf("%s",p->number);
if(strcmp(p->number,"#"))
{
++n;
scanf("%s%s%s%s%s%s%s",p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);
}
}
}
2.排序函数:
函数原型:
voidSort(Stuff*head);
函数功能:
按照指定关键字对员工信息进行排序。
算法要点:
(1)比较法对信息进行排序;
(2)使用交换函数,对每项信息进行交换。
主要算法:
VoidSort(Stuff*head);
{
while(p->next!
=NULL)//选择排序
{
q=p->next;
r=p;
while(q!
=NULL)
{
if(Sel(ch,r,q))//调用判断函数
r=q;
q=q->next;
}
if(r!
=p)//交换信息
{
……
}
p=p->next;
}
}
3.显示函数:
函数原型:
voidShow(Stuff*head);
函数功能:
输出表中所有节点的信息。
算法要点:
使用循环输出所有信息。
主要算法:
VoidShow(Stuff*head);
{
if(head!
=NULL)
{
printf("员工信息如下:
\n");
while(p!
=NULL)
{
printf("%d.%s%s%s%s%s%s%s%s\n"
n++,p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);
p=p->next;
}
}
else
{
printf("信息为空!
\n");
}
}
4.查找函数:
函数原型:
Stuff*Search(Stuff*head);
函数功能:
按照指定关键字,对相应员工信息进行查找。
算法要点:
(1)输入字段和信息相应字段的比较;
(2)函数中调用删除和更改函数。
主要算法:
Stuff*Search(Stuff*head);
{
while(p!
=NULL)
{
if(strcmp(q->con,p->number)==0||strcmp(q->con,p->name)==0)
{
printf("员工信息如下:
\n");
printf("编号|姓名|性别|出生年月|学历|职务|电话|住址\n%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);
printf("是否需要:
1.更改2.删除3.继续\n");
scanf("%c",&sh);
if(sh=='1')
Change(head,p->number);//调用更改函数
elseif(sh=='2')
head=Del(head,p->number);//调用删除函数flag=1;
break;
}
p=p->next;
}
}
5.更改函数:
函数原型:
Stuff*Change(Stuff*head,charn[10]);
函数功能:
输入员工编号,查找到员工信息,对其信息进行更新。
算法要点:
(1)信息查找;
(2)信息重新录入及保存。
主要算法:
Stuff*Change(Stuff*head,charn[10]);
{
while(p!
=NULL)
{
if(!
strcmp(p->number,n))
{
printf("找到员工,请输入新的信息:
\n编号|姓名|性别|出生年月|学历|职务|电话|住址\n");
scanf("%s%s%s%s%s%s%s%s",p->number,p->name,p->sex,p->birthday,p->degree,p->business,p->phone,p->place);
printf("员工信息如下:
\n");
flag=1;
}
p=p->next;
}
}
6.删除函数:
函数原型:
Stuff*Del(Stuff*head,charn[10]);
函数功能:
查找到要删除员工的相应信息,并将其从表中永久的删除。
算法要点:
(1)按关键字查找信息;
(2)链表中删除节点信息,并释放节点空间。
主要算法:
Stuff*Del(Stuff*head,charn[10]);
{
while(strcmp(p->number,n)&&p->next!
=NULL)
{
pr=p;
p=p->next;
}
if(!
strcmp(p->number,n))
{
if(p==head)
head=p->next;
else
pr->next=p->next;
free(p);
printf("删除成功!
\n");
n--;
}
}
7.主函数:
主函数主要是调用以上的子函数,用开关语句进行选择性的调用。
大致程序如下:
switch(Menu())
{
case1:
调用函数语句;
break;
case2:
调用函数语句;
break;
……
case0:
退出程序语句;
default:
printf("输入错误,请重新输入!
\n");
}
8.其他函数:
这些函数主要起到辅助功能,比如:
菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。
菜单函数原型:
charMenu();
释放函数原型:
voidFre(Stuff*head);
测试分析
5.程序各功能的运行结果:
5.1系统主界面
5.2添加信息
(1)首先输入操作字符“1”;
(2)接着输入员工信息;
(3)最后输入操作字符“#”结束输入。
5.3排序信息
(1)首先输入操作字符“2”;
(2)接着输入操作字符“1”(即实现按“编号”排序);
(3)最后输入操作字符“#”结束输入。
5.4查找信息
(1)首先输入操作字符“3”;
(2)接着输入操作字符“1”(即实现按“编号”查找);
(3)再输入编号的字符“01”;
(4)最后输入操作字符“#”结束输入。
5.5输出信息
(1)首先输入操作字符“4”;
(2)最后按Enter键退出输出界面。
5.6更改信息
(1)首先输入操作字符“5”;
(2)接着输入编号的字符“01”;
(3)再输入新的员工信息,
比如:
编号||姓名||性别||出生年月||学历||职务||电话||住址
03gta1892-3jv160l
(4)最后按Enter键退出更改界面。
5.7删除信息
(1)首先输入操作字符“6”;
(2)接着输入编号的字符“03”;
(3)最后按Enter键退出删除界面。
5.8退出系统
(1)首先输入操作字符“0”;
(2)最后按任意键退出系统。
源程序清单
工作总结
通过本次数据结构课程设计,使我深深的意识到以下几个问题。
首先,要善于利用十分强大的互联网。
要不是通过互联网的搜索,找到了相应的程序与代码以及看到了很多人的经典构想与特殊思维,否则,真的不知道自己该如何解决程序中出现的一系列问题。
其次,勿忘好学多思。
经过这次实践,使我深深的意识到自身的严重不足。
比如:
知识储备远远不够、自身眼光看得太浅、自身学习精神与意志力缺乏等等。
最后,我想起了一句很有道理的名言。
即:
“感觉有问题,能力不够;感觉有困难,方法不对。
”
参考文献
[1].耿国华.数据结构—C语言描述.高等教育出版社.2005/067511.
[2].谭浩强.C程序设计.清华大学出版社.2007/014674.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业员工信息管理系统 设计与实现 数据结构 企业 员工 信息管理 系统 设计 实现