数据结构实验:员工管理系统

#include"stdio.h"
#include"stdlib.h"
#include "string.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2


typedef struct LNode
{
char id[20];
char name[15];
char sex[10];
char phone[20];
char dep[30];
char age[5];
char wage[10];
struct LNode *next;
}LNode,*Linklist;//定义节点类型


int CreatList(Linklist &L)
{
Linklist p;
p=(Linklist)malloc(sizeof(LNode));
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->phone);
    printf("请输入员工单位\n");
scanf("%s",p->dep);
printf("请输入员工年龄\n");
scanf("%s",p->age);
printf("请输入员工工资\n");
scanf("%s",p->wage);
}
p->next=L->next;
L->next=p;
}//头插法生成单链表


int Initlist(Linklist &L)
{
L=(Linklist)malloc(sizeof(LNode));
if(!L)
return (0);
L->next=NULL;
return OK;
}//初始化单链表


void Display(Linklist &L)
{
Linklist p;
for(p=L->next;p;p=p->next)
{
printf("编号  %s\n",p->id);
   printf("姓名  %s\n",p->name);
   printf("性别  %s\n",p->sex);
   printf("电话  %s\n",p->phone);
   printf("年龄  %s\n",p->age);
   printf("工资  %s\n",p->wage);
}


}//显示所有员工信息


int SearchID(Linklist &L,char id[20])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->id,id)==0)
{
printf("编号  %s\n",p->id);
   printf("姓名  %s\n",p->name);
   printf("性别  %s\n",p->sex);
   printf("电话  %s\n",p->phone);
   printf("年龄  %s\n",p->age);
   printf("工资  %s\n",p->wage);
}
p=p->next;
}
return OK;
}//查询ID


int SearchName(Linklist &L,char name[10])
{
LNode *p;
p=L;
while(p)
{
if(strcmp(p->name,name)==0)
{
printf("编号  %s\n",p->id);
   printf("姓名  %s\n",p->name);
   printf("性别  %s\n",p->sex);
   printf("电话  %s\n",p->phone);
   printf("年龄  %s\n",p->age);
   printf("工资  %s\n",p->wage);
}
p=p->next;
}
return OK;
}//查询姓名


void Sort(Linklist &L)
{
Linklist La;
Linklist p,q,m;
    La=(Linklist)malloc(sizeof(LNode));
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);
}//排序


int Alter(Linklist &L,char id[20])
{
LNode *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->phone);
       printf("请输入员工单位\n");
            scanf("%s",p->dep);
   printf("请输入员工年龄\n");
   scanf("%s",p->age);
   printf("请输入员工工资\n");
   scanf("%s",p->wage);
}
p=p->next;
}
return OK;
}//更改


int Del(Linklist &L,char id[20])
{
LNode *p;
LNode *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 OK;
}//按ID删除
void ShowWage(Linklist &L){
    Linklist p;
    int ave=0;
    int zz;
    int i=0;
    for(p=L->next;p;p=p->next){
    i++;
    printf("%s 的工资是:%s\n",p->name,p->wage);
    zz=atoi(p->wage);
    ave=ave+zz;
    }
    printf("平均工资是:%d\n",ave/i);






}//平均工资
int main()
{
Linklist L;
int a;
char m;
char name[10];
    char id[20];
Initlist(L);
int y;
int x=1;
while(x)
{
printf("****************************\n");
printf("****************************\n");
printf("1.添加员工信息\n");
printf("2.查询员工信息\n");
printf("3.排序员工信息\n");
printf("4.显示所有员工信息\n");
printf("5.更改员工信息\n");
printf("6.删除员工信息\n");
printf("7.显示工资及平均工资\n");
printf("8.退出\n");
printf("****************************\n");
printf("请输入操作序号:");
scanf("%d",&y);
switch(y)
{
case 1: CreatList(L);
do
{
printf("是否继续输入?(y/n)");
getchar();
scanf("%c",&m);
if(m=='y')
{
CreatList(L);
}
}
while(m!='n');
break;


case 2: 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;


case 3:
Sort(L);
break;


case 4: printf("所有员工信息如下所示\n");
Display(L);
break;


case 5: printf("请输入更改员工编号");
getchar();
scanf("%s",&id);
Alter(L,id);
break;


case 6: printf("请输入删除员工编号");
getchar();
scanf("%s",&id);
Del(L,id);
break;


            case 7:printf("工资情况如下所示:\n  ");
                ShowWage(L);
                break;
case 8: x=0;
break;


default:
printf("请输入正确序号!\n");
break;
}
}


}

你可能感兴趣的:(数据结构实验:员工管理系统)