员工管理数据结构员工管理系统.docx
- 文档编号:5036390
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:12
- 大小:17.46KB
员工管理数据结构员工管理系统.docx
《员工管理数据结构员工管理系统.docx》由会员分享,可在线阅读,更多相关《员工管理数据结构员工管理系统.docx(12页珍藏版)》请在冰豆网上搜索。
员工管理数据结构员工管理系统
(员工管理)数据结构员工管理系统
壹、设计题目
[问题描述]
每个员工的信息包括:
编号、姓名、性别、出生年月、学历职务、电话、住址等。
系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
[基本要求]
(1)排序:
按不同关键字,对所有员工的信息进行排序。
(2)
(2)查询:
按特定条件查找员工。
(3)(3)更新:
按编号对某个员工的某项信息进行修改。
(4)(4)插入:
加入新员工的信息。
(5)(5)删除:
按编号删除已离职的员工的信息。
二、运行环境
MrosoftVisualC++6.0
三、算法设计的思想
构造链表存储用户记录。
四、算法的流程图
五、算法设计分析
(1)构造顺序表存储用户记录。
(2)利用冒泡法对用户名和号码分别进行排序
(3)利用直接查找法进行查找
六、源代码
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
//定义节点类型
typedefstructnode
{
charid[10];
charname[10];
charsex[10];
charbirth[10];
charxueli[10];
charzhiwu[10];
charphone[10];
charaddress[10];
structnode*next;
}node,*linklist;
//头插法生成单链表
intcreatlist(linklist&L)
{
linklistp;
p=(linklist)malloc(sizeof(node));
if(!
p)
{
return(0);
}
else
{
printf("请输入员工编号\n");
scanf("%s",p->id);
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工生日\n");
scanf("%s",p->birth);
printf("请输入员工学历\n");
scanf("%s",p->xueli);
printf("请输入员工职务\n");
scanf("%s",p->zhiwu);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
}
p->next=L->next;
L->next=p;
}
//初始化单链表
intinitlist(linklist&L)
{
L=(linklist)malloc(sizeof(node));
if(!
L)
return(0);
L->next=NULL;
return1;
}
//显示所有员工信息
voiddisplay(linklist&L)
{
linklistp;
for(p=L->next;p;p=p->next)
{
printf("编号%s",p->id);
printf("姓名%s",p->name);
printf("性别%s",p->sex);
printf("生日%s",p->birth);
printf("学历%s",p->xueli);
printf("职务%s",p->zhiwu);
printf("电话%s",p->phone);
printf("地址%s\n",p->address);
}
}
//按id删除
intdel(linklist&L,charid[10])
{
node*p;
node*r;
p=L->next;
r=L;
while(!
(strcmp(p->id,id)==0)&&p)
{
r=p;
p=p->next;
}
if(!
p)
printf("\n删除位置不合理\n");
else
{
r->next=p->next;
free(p);
printf("删除成功\n");
}
return1;
}
//查询id
intsearchid(linklist&L,charid[10])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->id,id)==0)
{
printf("编号%s",p->id);
printf("姓名%s",p->name);
printf("性别%s",p->sex);
printf("生日%s",p->birth);
printf("学历%s",p->xueli);
printf("职务%s",p->zhiwu);
printf("电话%s",p->phone);
printf("地址%s\n",p->address);
}
p=p->next;
}
return1;
}
//查询姓名
intsearchname(linklist&L,charname[10])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("编号%s",p->id);
printf("姓名%s",p->name);
printf("性别%s",p->sex);
printf("生日%s",p->birth);
printf("学历%s",p->xueli);
printf("职务%s",p->zhiwu);
printf("电话%s",p->phone);
printf("地址%s\n",p->address);
}
p=p->next;
}
return1;
}
//修改
intxiugai(linklist&L,charid[10])
{
node*p;
p=L;
while(p)
{
if(strcmp(p->id,id)==0)
{
printf("请输入员工编号\n");
scanf("%s",p->id);
printf("请输入员工姓名\n");
scanf("%s",p->name);
printf("请输入员工性别\n");
scanf("%s",p->sex);
printf("请输入员工生日\n");
scanf("%s",p->birth);
printf("请输入员工学历\n");
scanf("%s",p->xueli);
printf("请输入员工职务\n");
scanf("%s",p->zhiwu);
printf("请输入员工电话\n");
scanf("%s",p->phone);
printf("请输入员工地址\n");
scanf("%s",p->address);
}
p=p->next;
}
return1;
}
//排序
voidSort(linklist&L)
{
linklistLa;
linklistp,q,m;
La=(linklist)malloc(sizeof(node));
La->next=NULL;
while(L->next)
{
for(q=L->next,p=L->next;p->next;p=p->next)
{
if((strcmp(p->next->id,q->id))>0)
{
m=p;
q=p->next;
}
}
if(q==L->next)
{
L->next=L->next->next;
}
else
{
m->next=q->next;
}
q->next=La->next;
La->next=q;
}
L=La;
display(L);
}
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"head.h"
//主函数
voidmain()
{
linklistL;
inta;
charm;
charname[10];
charid[10];
initlist(L);
inty;
intx=1;
while(x)
{
printf("****************\n");
printf("1添加员工信息\n");
printf("2修改员工信息\n");
printf("3删除员工信息\n");
printf("4查询员工信息\n");
printf("5排序员工信息\n");
printf("6显示所有员工信息\n");
printf("7退出\n");
printf("****************\n");
printf("请输入代码:
");
scanf("%d",&y);
switch(y)
{
case1:
creatlist(L);
do
{
printf("否继续输入?
(y/n)");
getchar();
scanf("%c",&m);
if(m=='y')
{
creatlist(L);
}
}
while(m!
='n');
break;
case2:
printf("请输入修改员工编号");
getchar();
scanf("%s",&id);
xiugai(L,id);
break;
case3:
printf("请输入删除员工编号");
getchar();
scanf("%s",&id);
del(L,id);
break;
case4:
printf("请输入查询方式(1按编号查询,2按姓名查找)");
scanf("%d",&a);
if(a==1)
{
printf("请输入查询员工编号\n");
scanf("%s",&id);
searchid(L,id);
}
if(a==2)
{
printf("请输入查询员工姓名\n");
scanf("%s",&name);
searchname(L,name);
}
break;
case5:
Sort(L);
break;
case6:
printf("所有员工信息如下所示\n");
display(L);
break;
case7:
x=0;
break;
}
}
}
7、运行结果
主界面
添加员工信息
修改员工信息
删除员工信息
查询员工信息
排序
显示
八、收获及体会
实训期间,让我学到了很多东西,不仅使我于理论上对软件行业有了全新的认识,于实践能力上也得到了提高,真正地做到了学以致用,对我来说受益非浅。
除此以外,我仍学会了如何更好地和别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。
第壹次亲身感受到理论和实际的相结合,让我大开眼界。
也是对以前所学知识的壹个初审吧!
这次实训对于我以后学习、找工作也真是受益菲浅,于这短短的几天中相信这些宝贵的经验会成为我今后成功的重要的基石。
作为壹名大二的学生,经过俩年的于校学习,对程序设计有了理性的认识和理解。
于校期间,壹直忙于理论知识的学习,没有机会也没有相应的经验来参和项目的开发。
所以于实训之前,软件项目开发对我来说是比较抽象的,壹个完整的项目要怎么来分工以及完成该项目所要的基本步骤也不明确。
而经过这次实训,让我明白壹个完整项目的开发它所要经历的阶段包括:
规划和用例说明、项目结构、业务功能说明书、详细设计说明书、代码实现、测试、实训手册。
壹个项目的开发所需要的财力、人力均是大量的,如果没有壹个好的远景规划,对以后的开发进度会产生很大的影响,严重时导致于预定时间内不能完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。
壹份好的项目结构、业务功能和详细设计说明书对壹个项目的开发有明确的指引作用,它能够使开发人员对这个项目所要实现的功能于总体上有具体的认识,且能减少于开发过程中出现不必要的脱节。
代码的实现是壹个项目开发成功和否的关键,能够说,前面所做的事情就是为代码的实现做铺垫。
这次实训也让我深刻了解到,不管于工作中仍是于生活中要和老师,同学保持良好的关系是很重要的。
做事首先要学做人,要明白做人的道理,如何和人相处是现代社会的做人的壹个最基本的问题。
对于自己这样壹个即将步入社会的人来说,需要学习的东西很多,他们就是最好的老师,正所谓“三人行,必有我师”,我们能够向他们学习很多知识、道理。
于此,我应当感谢老师的指导和帮助以及学院提供此次千载难逢的实训机会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 管理 数据结构 系统