《算法与数据结构》
课程设计
题目:企业员工信息管理系统
设计与实现
院、 系: 计算机信息与技术系
学科专业: 软件
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
学 号: B10060XXX
学生姓名: XX
指导教师: X X
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 存储结构设计
依据给定的数据格式,个人信息由四个字段来组成,即工号、姓名、性别、学历,外加一个判断关键字。
如:
工号 | 姓名 | 性别 | 学历
123 feng n daxue
本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。
2.3 系统功能设计
依据程序的数据结构和功能,遵照“自顶向下,逐步细化”原则,描述该程序的层次结构,在总体上包括数据的增添、修改、删除、查询以及数据的显示等功能模块。
(1)新增函数功能:通过输入各项数据给数据元素,来建立一个数据表。
(2)显示函数功能:输出表中所有节点的信息。
(3)查询函数功能:按照指定关键字,对相应员工信息进行查询。
(4)修改函数功能:输入员工工号,查询员工信息,对其信息进行修改。
(5)删除函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除。
(6)主函数功能:调用以上子函数,并用开关语句进行选择性的调用。
模块设计
3.1 系统子程序及功能设计
(1) 新增员工信息,利用函数: creatlist(linklist &L)
(2) 显示所有员工信息,利用函数: display(linklist &L)
(3) 删除员工信息,是按员工工号删除,
利用函数: delet(linklist &L,char num[6])
(4) 查询员工信息,按工号和姓名进行查询;
①按工号查询利用函数: searchnum(linklist &L,char num[10]) ;
②按姓名查询利用函数: searchname(linklist &L,char name[10])
(5) 修改员工信息,利用函数: alter(linklist &L,char num[6])
3.2 系统功能图
图3-2 系统功能图
详细设计
4.1 数据类型定义
结构体定义:
typedef struct node
{
char num[6]; //工号
char name[10]; //姓名
char sex[6]; //性别
char degree[20]; //学历
struct node *next; //指针域
} node,*linklist;
4.2 系统主要子程序详细设计
1. 显示函数
函数原型: void display(linklist &L)
函数功能:输出表中所有节点的信息。
算法要点:使用循环输出所有信息。
主要算法:
void display(linklist &L)
{
linklist p;
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. 删除函数
函数原型:void delet(linklist &L,char num[6])
函数功能:查找到要删除员工的相应信息,并将其从表中永久的删除。
算法要点:
(1) 按关键字查找信息;
(2) 链表中删除节点信息,并释放节点空间。
主要算法:
int delet(linklist &L, char num[6])
{
node *p; /*实现删除操作的临时的结构体指针变量*/
node *r;
p=L->next;
r=L;
if(!L->next) //当list无后继结点时,提示和结束返回del()
{
printf("\n=====>提示:没有记录可以删除!\n");
printf("\n");
return 1;
}
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");
}
return 1;
}
3. 查询函数
(1)按工号查询
int searchnum(linklist &L,char num[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;
}
return 1;
}
(2)按姓名查询
int searchname(linklist &L,char name[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;
}
return 1;
}
4. 修改函数 (按工号修改)
int alter(linklist &L,char num[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");
}
return 1;
}
5. 主函数
主函数主要是调用以上的子函数,用开关语句进行选择性的调用。
大致程序如下:
void main()
{
linklist L;
int a;
char m;
char name[10];
char num[6];
initlist(L);
int g;
int f=1;
while(f)
{
menu();
scanf("%d",&g);
printf("\n");
switch(g)
{
case 1: creatlist(L);
do
{
printf("是否继续输入?(y/n)");
printf("\t");
getchar();
继续阅读