《数据结构》课程设计之企业员工信息管理系统设计与实现.doc
《《数据结构》课程设计之企业员工信息管理系统设计与实现.doc》由会员分享,可在线阅读,更多相关《《数据结构》课程设计之企业员工信息管理系统设计与实现.doc(24页珍藏版)》请在冰豆网上搜索。
《算法与数据结构》
课程设计
题目:
企业员工信息管理系统
设计与实现
院、系:
计算机信息与技术系
学科专业:
软件工程
学号:
B10060XXX
学生姓名:
XX
指导教师:
XX
2012年9月16日
目录
第一章设计要求 2
1.1问题描述 2
1.2需求分析 2
第二章概要设计 3
2.1主界面设计 3
2.2存储结构设计 3
2.3系统功能设计 4
第三章模块设计 4
3.1系统子程序及功能设计 4
3.2系统功能图 5
第四章详细设计 5
4.1数据类型定义 5
4.2系统主要子程序详细设计 6
1.显示函数:
6
2.删除函数:
6
3.查询函数:
7
4.修改函数:
9
5.主函数:
10
8.其他函数:
11
第五章测试分析 12
5.程序各功能的运行结果:
12
5.1系统主界面 12
5.2建立信息 12
5.3修改信息 13
5.4查询信息 13
5.5显示信息 14
5.6删除信息 14
5.7退出系统 15
第六章源程序清单 16
第七章工作总结 23
第八章参考文献 23
第一章设计要求
1.1问题描述
企业员工信息管理系统,包括企业中所有员工的基本信息,如:
工号、姓名、性别、学历等。
且该系统能够完成新员工的增添、所有员工信息的相应查询、修改、删除等各项功能。
1.2需求分析
(1)在相应的每条记录中,应该包括该员工的所有信息,如:
工号、姓名、性别、学历等;
(2)根据不同关键字(如工号,姓名等),对所有员工的信息进行排序;
(3)按照指定条件查找某个员工的所有信息;
(4)按工号对某个员工的信息进行修改;
(5)添加新员工的信息;
(6)按工删除已离职、退休员工的信息;
(7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。
第二章概要设计
2.1主界面设计
当输入相应的操作字符(如:
数字0-6),实现并完成各项功能操作(如:
建立、修改、删除、显示、退出等)。
系统主界面如下:
2.2存储结构设计
依据给定的数据格式,个人信息由四个字段来组成,即工号、姓名、性别、学历,外加一个判断关键字。
如:
工号|姓名|性别|学历
123fengndaxue
本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。
2.3系统功能设计
依据程序的数据结构和功能,遵照“自顶向下,逐步细化”原则,描述该程序的层次结构,在总体上包括数据的增添、修改、删除、查询以及数据的显示等功能模块。
(1)新增函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
(2)显示函数功能:
输出表中所有节点的信息。
(3)查询函数功能:
按照指定关键字,对相应员工信息进行查询。
(4)修改函数功能:
输入员工工号,查询员工信息,对其信息进行修改。
(5)删除函数功能:
查找到要删除员工的相应信息,并将其从表中永久的删除。
(6)主函数功能:
调用以上子函数,并用开关语句进行选择性的调用。
第三章模块设计
3.1系统子程序及功能设计
(1)新增员工信息,利用函数:
creatlist(linklist&L)
(2)显示所有员工信息,利用函数:
display(linklist&L)
(3)删除员工信息,是按员工工号删除,
利用函数:
delet(linklist&L,charnum[6])
(4)查询员工信息,按工号和姓名进行查询;
①按工号查询利用函数:
searchnum(linklist&L,charnum[10]);
②按姓名查询利用函数:
searchname(linklist&L,charname[10])
(5)修改员工信息,利用函数:
alter(linklist&L,charnum[6])
3.2系统功能图
主页面
建立
链表
查询
显示信息
退出
修改
删除
按工号
按姓名
按工号
图3-2系统功能图
第四章详细设计
4.1数据类型定义
结构体定义:
typedefstructnode
{
charnum[6];//工号
charname[10];//姓名
charsex[6];//性别
chardegree[20];//学历
structnode*next;//指针域
}node,*linklist;
4.2系统主要子程序详细设计
1.显示函数
函数原型:
voiddisplay(linklist&L)
函数功能:
输出表中所有节点的信息。
算法要点:
使用循环输出所有信息。
主要算法:
voiddisplay(linklist&L)
{
linklistp;
for(p=L->next;p;p=p->next)
{
printf("工号%s",p->num);
printf("姓名%s",p->name);
printf("性别%s",p->sex);
printf("学历%s",p->edu);
}
}
2.删除函数
函数原型:
voiddelet(linklist&L,charnum[6])
函数功能:
查找到要删除员工的相应信息,并将其从表中永久的删除。
算法要点:
(1)按关键字查找信息;
(2)链表中删除节点信息,并释放节点空间。
主要算法:
intdelet(linklist&L,charnum[6])
{
node*p;/*实现删除操作的临时的结构体指针变量*/
node*r;
p=L->next;
r=L;
if(!
L->next)//当list无后继结点时,提示和结束返回del()
{
printf("\n=====>提示:
没有记录可以删除!
\n");
printf("\n");
return1;
}
while(!
(strcmp(p->num,num)==0)&&p)
{
r=p;
p=p->next;
}
if(!
p)
printf("\n\n\t\t\t找不到该职工信息!
!
!
\n");
else
{
r->next=p->next;
free(p);
printf("删除成功\n");
printf("\n");
}
return1;
}
3.查询函数
(1)按工号查询
intsearchnum(linklist&L,charnum[10])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->num,num)==0)
{
printf("\t");
printf("工号%s",p->num);
printf("\t");
printf("姓名%s",p->name);
printf("\n");
printf("\t");
printf("性别%s",p->sex);
printf("\t");
printf("\t");
printf("学历%s",p->edu);
printf("\n");
}
p=p->next;
}
return1;
}
(2)按姓名查询
intsearchname(linklist&L,charname[10])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("\t");
printf("工号%s",p->num);
printf("\t");
printf("姓名%s",p->name);
printf("\n");
printf("\t");
printf("性别%s",p->sex);
printf("\t");
printf("\t");
printf("学历%s",p->edu);
printf("\n");
}
p=p->next;
}
return1;
}
4.修改函数(按工号修改)
intalter(linklist&L,charnum[6])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->num,num)==0)
{
printf("请输入员工的工号:
\n");
printf("您输入的是:
");
printf("\t");
scanf("%s",p->num);
printf("请输入员工的姓名:
\n");
printf("您输入的是:
");
printf("\t");
scanf("%s",p->name);
printf("请输入员工的性别:
\n");
printf("您输入的是:
");
printf("\t");
scanf("%s",p->sex);
printf("请输入员工的学历:
\n");
printf("您输入的是:
");
printf("\t");
scanf("%s",p->edu);
}
p=p->next;
printf("\n");
}
return1;
}
5.主函数
主函数主要是调用以上的子函数,用开关语句进行选择性的调用。
大致程序如下:
voidmain()
{
linklistL;
inta;
charm;
charname[10];
charnum[6];
initlist(L);
intg;
intf=1;
while(f)
{
menu();
scanf("%d",&g);
printf("\n");
switch(g)
{
case1:
creatlist(L);
do
{
printf("是否继续输入?
(y/n)");
printf("\t");
getchar();
scanf("%c",&m);