“link”定义出现了问题,你的那行仔细看一下有没有问题
#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct worker
{
int no;
char name[50];
int sex;
int xueli;
int wage;
int tel;
struct worker *next;//录入
};
void setdata(struct worker *temp)
{
printf("请输入职工号\n");
scanf("%d",&temp->no);
printf("请输入姓名\n");
scanf("%s",&temp->name);
printf("请输入性别\n");
scanf("%d",&temp->sex);
printf("请输入学历\n");
scanf("%s",&temp->xueli);
printf("请输入工资\n");
scanf("%d",&temp->wage);
printf("请输入电话\n");
scanf("%s",&temp->tel);
}
struct worker *createlink()//浏览
{
struct worker *head,*p,*q;
head=(struct worker *)malloc(sizeof(struct worker));
head->next=NULL;
p=head;
q=(struct worker *)malloc(sizeof(struct worker));
setdata(q);
while(q->no!=0)
{
p->next=q;
p=q;
q=(struct worker *)malloc(sizeof(struct worker));
setdata(q);
}
p->next=NULL;
return head;
}
void printlink(struct worker *head)
{
struct worker *p;
for(p=head->next;p!=NULL;p=p->next)
{
printf("%d%s%d%s%d%s",p->no,p->name,p->sex,p->xueli,p->wage,p->tel);
printf("\n");
}
}
void print(struct worker *p)
{
printf("%d%s%d",p->no,p->name,p->sex,p->xueli,p->wage,p->tel);
}
struct worker *find1(struct worker *head,int num)//查询
{
//按工号查询
struct worker *p;
p=head->next;
while(p->no!=num)
{
p=p->next;
}
return p;
}
struct worker *find2(struct worker *head,char name[50])
{
//按姓名查询
struct worker *p;
p=head->next;
while(strcmp(p->name,name)!=0)
{
p=p->next;
}
return p;
}
void deletexs(struct worker *head,struct worker *p)//删除
{
struct worker *q;//q指向p前面那个节点
for(q=head->next;q->next!=p;q=q->next);
q->next=p->next;
free(p);
}
void xiugai(struct worker*p)//修改
{
int wage;
printf("请输入修改的工资\n");
scanf("%d",wage);
strcpy(p->wage,wage);
printf("已修改\n");
}
void maina()
{
struct worker *head;
printf("职工系统功能\n");
printf("1.职工信息录入\n");
printf("2.职工信息浏览\n");
printf("3.职工信息查询\n");
printf("4.职工信息删除\n");
printf("5.职工信息修改\n");
printf("6.退出\n");
while(true)
{
struct worker *p;
char c=getchar();
if(c=='1')
{
printf("进入职工信息录入功能\n");
head=createlink();
};
if(c=='2')
{
printf("进入职工信息浏览功能");
printlink(head);
};
if(c=='3')
{
printf("进入职工信息查询功能\n");
printf("按工号查询请输入1\n");
printf("按姓名查询请输入2\n");
int d;
scanf("%d",&d);
if(d==1)
{
printf("请输入学历\n");
int xueli;
scanf("%s",&xueli);
p=find1(head,xueli);
print(p);
};
if(d==2)
{
printf("请输入姓名\n");
char name[50];
scanf("%s",name);
p=find2(head,name);
print(p);
};
};
if(c=='4')
{
//按职工姓名删除
printf("请输入要删除职工的姓名\n");
char name[50];
scanf("%s",name);
p=find2(head,name);
deletexs(head,p);
printf("该学生信息已删除\n");
printlink(head);
};
if(c=='5')
{
printf("请输入修改工资职工的学历\n");
int xueli;
scanf("%s",&xueli);
p=find1(head,xueli);
xiugai(p);
printlink(head)
;};
if(c=='6')
{
break;
};
}
}