数据结构员工管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计题目
[问题描述]
每个员工的信息包括:编号、姓名、性别、出生年月、学
历职务、电话、住址等。系统能够完成员工信息的查询、
更新、插入、删除、排序等功能。
[基本要求]
(1)排序:按不同关键字,对所有员工的信息进行排序。(2)查询:按特定条件查找员工。
(3)更新:按编号对某个员工的某项信息进行修改。
(4)插入:加入新员工的信息。
(5)删除:按编号删除已离职的员工的信息。
二、运行环境
Mrosoft Visual C++6.0
三、算法设计的思想
构造链表存储用户记录。
四、算法的流程图
五、算法设计分析
(1)构造顺序表存储用户记录。
(2)利用冒泡法对用户名和号码分别进行排序(3)利用直接查找法进行查找
六、源代码
#include"stdio.h"
#include"stdlib.h"
#include "string.h"
//定义节点类型
typedef struct node
{
char id[10];
char name[10];
char sex[10];
char birth[10];
char xueli[10];
char zhiwu[10];
char phone[10];
char address[10];
struct node *next;
}node,*linklist;
//头插法生成单链表
int creatlist(linklist &L)
{
linklist p;
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;
}
//初始化单链表
int initlist(linklist &L)
{
L=(linklist)malloc(sizeof(node));
if(!L)
return (0);
L->next=NULL;
return 1;
}
//显示所有员工信息
void display(linklist &L)
{
linklist p;
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删除
int del(linklist &L,char id[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");
}
return 1;
}
//查询id
int searchid(linklist &L,char id[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;
}
return 1;
}
//查询姓名
int searchname(linklist &L,char name[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;
}