数据结构员工管理系统.docx
- 文档编号:4853411
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:17
- 大小:176.37KB
数据结构员工管理系统.docx
《数据结构员工管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构员工管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构员工管理系统
数据结构员工管理系统
[问题描述]
每个职员的信息包括:
编号、姓名、性别、出生年月、学历职务、、住址等。
系统能够完成职员信息的查询、更新、插入、删除、排序等功能。
[差不多要求]
(1)排序:
按不同关键字,对所有职员的信息进行排序。
(2)查询:
按特定条件查找职员。
(3)更新:
按编号对某个职员的某项信息进行修改。
(4)插入:
加入新职员的信息。
(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;
}
}
}
七、运行结果
主界面
添加职员信息
修改职员信息
删除职员信息
查询职员信息
排序
显示
八、收成及体会
实训期间,让我学到了专门多东西,不仅使我在理论上对软件行业有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,对我来说受益非浅。
除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。
第一次亲身感受到理论与实际的相结合,让我大开眼界。
也是对往常所学知识的一个初审吧!
这次实训关于我以后学习、找工作也真是受益菲浅,在这短短的几天中相信这些宝贵的体会会成为我今后成功的重要的基石。
作为一名大二的学生,通过两年的在校学习,对程序设计有了理性的认识和明白得。
在校期间,一直忙于理论知识的学习,没有机会也没有相应的体会来参与项目的开发。
因此在实训之前,软件项目开发对我来说是比较抽象的,一个完整的项目要如何来分工以及完成该项目所要的差不多步骤也不明确。
而通过这次实训,让我明白一个完整项目的开发它所要经历的时期包括:
规划和用例说明、项目结构、业务功能说明书、详细设计说明书、代码实现、测试、实训手册。
一个项目的开发所需要的财力、人力差不多上大量的,假如没有一个好的远景规划,对以后的开发进度会产生专门大的阻碍,严峻时导致在预定时刻内不能完成该项目或者完成的项目跟原先打算所要实现的项目功能不符合。
一份好的项目结构、业务功能和详细设计说明书对一个项目的开发有明确的指引作用,它能够使开发人员对那个项目所要实现的功能在总体上有具体的认识,并能减少在开发过程中显现不必要的脱节。
代码的实现是一个项目开发成功与否的关键,能够说,前面所做的情况确实是为代码的实现做铺垫。
这次实训也让我深刻了解到,不管在工作中依旧在生活中要和老师,同学保持良好的关系是专门重要的。
做事第一要学做人,要明白做人的道理,如何与人相处是现代社会的做人的一个最差不多的问题。
关于自己如此一个立即步入社会的人来说,需要学习的东西专门多,他们确实是最好的老师,正所谓“三人行,必有我师”,我们能够向他们学习专门多知识、道理。
在此,我应当感谢老师的指导与关心以及学院提供此次千载难逢的实训机会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 员工 管理 系统