企业员工信息管理系统 设计与实现c语言.docx
- 文档编号:11038384
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:32
- 大小:159.59KB
企业员工信息管理系统 设计与实现c语言.docx
《企业员工信息管理系统 设计与实现c语言.docx》由会员分享,可在线阅读,更多相关《企业员工信息管理系统 设计与实现c语言.docx(32页珍藏版)》请在冰豆网上搜索。
企业员工信息管理系统设计与实现c语言
《算法与数据结构》
课程设计
题目:
企业员工信息管理系统
设计与实现
院、系:
计算机信息与技术系
学科专业:
计算机科学与技术
学号:
B********
学生姓名:
**************
2012年9月16日
设计要求
1.1问题描述
近年来,随着企业彼此间的竞争日趋激烈,信息管理技术在企业的发展中占据着越来越重要的地位。
在企业的经营生产中,员工信息已成为企业经营管理中不可缺少的一部分,为管理者进行管理决和进行各种人事调配活动提供了重要的依据,在生产分配安排中发挥了越来越重要的作用。
此次课程设计应该具有的功能是能够查看员工的个人信息,每个员工的信息包括:
编号、姓名、性别、部门、工资;系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
1.2需求分析
(1)在相应的每条记录中,应该包括该员工的所有信息,譬如:
编号、姓名、性别、出生年月、学历、职务、电话、住址等;
(2)根据不同关键字(如编号,姓名等),对所有员工的信息进行排序;
(3)按照指定条件查找某个员工的所有信息;
(4)按编号对某个员工的信息进行更改;
(5)添加新员工的信息,并实现排序;
(6)按编号删除已离职的员工的信息;
(7)与此同时,除了以上基本的需求以外,该企业员工信息管理系统的程序源代码还应具有良好的编程结构和适当的注释,运行界面清晰,提示内容明确,易于操作。
概要设计
2.1主界面设计
当输入相应的操作字符(比如:
0-6或者#),通过在主函数中选择并调用对应的子函数程序以及其他函数(比如:
菜单函数)中的辅助调用,实现并完成各自的功能操作(比如:
添加、查找、更改、排序、删除、显示等)。
系统主界面如下:
2.2存储结构设计
依据给定的数据格式,个人信息由九个字段来组成,即编号、姓名、性别、生日、学历、职务、电话和住址,外加一个判断关键字。
如:
编号|姓名|性别|出生年月|学历|职务|电话|住址
01fdfn1991-10bq189p
本课程设计根据功能需求,使用线性结构来组织数据,由于要对表中某项数据进行插入、删除操作,所以使用链表比较方便。
2.3系统功能设计
依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的插入、添加、删除、查找、更改和数据的排序以及数据的显示等功能模块。
(1)输入函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
(2)排序函数功能:
按照指定关键字对员工信息进行排序。
(3)显示函数功能:
输出表中所有节点的信息。
(4)查找函数功能:
按照指定关键字,对相应员工信息进行查找。
(5)更改函数功能:
输入员工编号,查找到员工信息,对其信息进行更新。
(6)删除函数功能:
查找到要删除员工的相应信息,并将其从表中永久的删除。
(7)主函数功能:
调用以上子函数,并用开关语句进行选择性的调用。
(8)其它函数功能:
主要起辅助作用,比如:
菜单函数,主要起到引导作用;释放空间函数,主要用于释放已经删除节点的信息,或者释放整个链表的节点信息。
模块设计
3.1系统子程序及功能设计
1.创建成员表函数
Stuff*Cre(Stuff*head)//创建一个员工的信息列表
2.添加成员函数
Stuff*App(Stuff*head)//添加其他员工的信息列
3.排序函数
voidSort(Stuff*head)//按照编号等对员工进行排序
4.判断函数
intSel(charch,Stuff*p,Stuff*q)//判断该员工是否存在
5.查找函数
Stuff*Search(Stuff*head)//查找该员工的信息情况
6.更改函数
Stuff*Change(Stuff*head,charn[10])//更改员工的信息情况
7.删除函数
Stuff*Del(Stuff*head,charn[10])//删除员工的信息情况
3.2系统功能图
详细设计
4.1数据类型定义
1.员工结构体定义
structStuff
{
charnumber[10];
charname[10];
charsex[8];
charborth[10];
chardegree[20];
charbusiness[20];
charphone[15];
charplace[50];
charcon[50];
structStuff*next;
};
4.2系统主要子程序详细设计
1.输入函数:
Stuff*App(Stuff*head)
{
Stuff*p=NULL,*q=head;
while(n)
{
p=(Stuff*)malloc(sizeof(Stuff));//申请结构体空间
if(p==NULL)
{
printf("空间不足,自动退出系统!
\n");
exit(0);
}
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);
p->con[0]='\0';//防止后面判断出现随机值
if(head==NULL)
head=p;
else
{
while(q->next!
=NULL)
q=q->next;
q->next=p;
}
q=p;//尾插法
}
if(!
strcmp(p->number,"#"))
{
free(p);//完成添加,释放多余空间
break;
}
}
returnhead;
}
2.排序函数:
voidSort(Stuff*head)
{
charch;
Stuff*p,*q,*r;
while
(1)
{
printf("请选择排序条件:
1.编号|2.姓名|0.退出\n");
getchar();
scanf("%c",&ch);
if(ch=='0')
break;
if(ch<'1'||ch>'2')
{
printf("输入错误,请重新输入!
\n");
continue;
}
p=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)//交换信息
{
Scpy(r->number,p->number);
Scpy(r->name,p->name);
Scpy(r->sex,p->sex);
Scpy(r->birthday,p->birthday);
Scpy(r->degree,p->degree);
Scpy(r->business,p->business);
Scpy(r->phone,p->phone);
Scpy(r->place,p->place);
}
p=p->next;
}
Show(head);//输出
}
}
3.显示函数:
voidShow(Stuff*head)
{
Stuff*p=head;
intn=1;
if(head!
=NULL)
{
printf("员工信息如下:
\n");
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)
{
Stuff*p=NULL,*q,a={"\0","\0","\0","\0","\0","\0","\0","\0"};
intflag;//查找判断
charch,sh;//两个控制变量
q=&a;
while
(1)
{
printf("请输入要查找的条件:
1.编号2.姓名0.退出\n");
scanf("%c",&ch);
if(ch=='0')
break;
if(ch<'1'||ch>'2')
{
printf("输入错误,请重新输入!
\n");
continue;
}
getchar();
printf("请输入:
");
gets(q->con);
p=head;//指向表头
flag=0;
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;
}
if(flag==0)
printf("没有找到该员工信息!
\n");
}
returnhead;
}
5.更改函数:
Stuff*Change(Stuff*head,charn[10])
{
Stuff*p=head;
intflag=0;
if(head==NULL)
printf("信息表为空,请先建立信息表!
\n");
else
{
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;
}
if(flag==0)
printf("未找到该员工信息!
\n");
}
Show(head);
returnhead;
}
//删除函数
Stuff*Del(Stuff*head,charn[10])
{
Stuff*p,*pr;
intflag;
flag=0;
p=head,pr=head;
if(head==NULL)
printf("未找到员工信息!
\n");
else
{
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--;
}
else
printf("未找到员工信息!
\n");
}
Show(head);
returnhead;
6.删除函数:
voidFre(Stuff*head)
{
Stuff*p;
while(head!
=NULL)
{
p=head;
head=head->next;
free(p);
}
}
7.主函数:
voidmain()
{
charIndex[10];
Stuff*head=NULL;//链表头指针定义
printf("---------------欢迎使用《员工信息管理系统》-------------\n");
Sleep(1000);
while
(1)
{
switch(Menu())
{
//case1:
//head=Cre(head);
//break;
case1:
printf("请输入员工信息,直接输入'#'结束\n");
head=App(head);
break;
case2:
Sort(head);
break;
case3:
head=Search(head);
break;
case4:
Show(head);
break;
case5:
printf("请输入员工编号:
");
scanf("%s",Index);
Change(head,Index);
break;
case6:
printf("请输入员工编号:
");
scanf("%s",Index);
head=Del(head,Index);
break;
case0:
printf("-------------------欢迎下次光临!
-----------------\n");
Sleep(2000);
exit(0);
break;
default:
printf("输入错误,请重新输入!
\n");
}
printf("按Enter键继续~");
getchar();
getchar();
system("cls");//清屏效果
}
Fre(head);
}
8.其他函数:
charMenu();//菜单函数
voidShow(Stuff*head);//输出函数
测试分析
各功能的运行结果:
(1)添加界面
(2)排序界面
(3)查找界面
(4)输出员工界面
(5)更改员工信息界面
(6)删除员工信息界面
数据域指针域
源程序清单
#include"stdio.h"
#include"stdlib.h"
#include"windows.h"
#include"string.h"
typedefstructStuff
{
charnumber[10];
charname[10];
charsex[8];
charbirthday[10];
chardegree[20];
charbusiness[20];
charphone[15];
charplace[50];
charcon[50];
structStuff*next;
}Stuff;
charMenu();
//Stuff*Cre(Stuff*head);
Stuff*App(Stuff*head);
voidSort(Stuff*head);
Stuff*Search(Stuff*head);
Stuff*Change(Stuff*head,charn[10]);
voidScpy(char*p,char*q);
Stuff*Del(Stuff*head,charn[10]);
intSel(charch,Stuff*p,Stuff*q);
voidShow(Stuff*head);
voidFre(Stuff*head);
intn=1;
//菜单函数
charMenu(void)
{
intch;
printf("--------------------欢迎光临-------------------\n");
//printf("1.建立员工信息\n");
printf("*1.添加员工信息2.员工信息排序*\n");
printf("*3.查找员工信息4.输出员工信息*\n");
printf("*5.更改员工信息6.删除员工信息*\n");
printf("*0.退出*\n");
printf("-----------------------------------------------\n");
printf("请选择你的操作:
");
scanf("%d",&ch);
returnch;
}
//创建成员表函数
//Stuff*Cre(Stuff*head)
//{
//Stuff*p=NULL,*q=head;
//p=(Stuff*)malloc(sizeof(Stuff));
//App(head);
//returnhead;
//}
//添加成员函数
Stuff*App(Stuff*head)
{
Stuff*p=NULL,*q=head;
while(n)
{
p=(Stuff*)malloc(sizeof(Stuff));
if(p==NULL)
{
printf("空间不足,自动退出系统!
\n");
exit(0);
}
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);
p->con[0]='\0';
if(head==NULL)
head=p;
else
{
while(q->next!
=NULL)
q=q->next;
q->next=p;
}
q=p;
}
if(!
strcmp(p->number,"#"))
{
free(p);
break;
}
}
returnhead;
}
//排序函数
voidSort(Stuff*head)
{
charch;
Stuff*p,*q,*r;
while
(1)
{
printf("请选择排序条件:
1.编号|2.姓名|0.退出\n");
getchar();
scanf("%c",&ch);
if(ch=='0')
break;
if(ch<'1'||ch>'2')
{
printf("输入错误,请重新输入!
\n");
continue;
}
p=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)
Scpy(r->number,p->number);
Scpy(r->name,p->name);
Scpy(r->sex,p->sex);
Scpy(r->birthday,p->birthday);
Scpy(r->degree,p->degree);
Scpy(r->business,p->business);
Scpy(r->phone,p->phone);
Scpy(r->place,p->place);
}
p=p->next;
}
Show(head);
}
}
//交换函数
voidScpy(char*p,char*q)
{
charc[50];
strcpy(c,p);
strcpy(p,q);
strcpy(q,c);
}
//判断函数
intSel(charch,Stuff*p,Stuff*q)
{
switch(ch)
{
case'1':
returnstrcmp(q->number,p->number)<0||strcmp(q->con,p->number)==0;case'2':
returnstrcmp(q->name,p->name)<0||strcmp(q->con,p->name)==0;
default:
exit(0);
}
}
//查找函数
Stuff*Search(Stuff*head)
{
Stuff*p=NULL,*q,a={"\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业员工信息管理系统 设计与实现 c语言 企业 员工 信息管理 系统 设计 实现 语言