#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define F (struct STU *)malloc(sizeof(struct STU))
int n;
struct Code
{
char worker_number[20];//职工号
char name[20];//姓名
char gender[4];//性别
int year,month,day;
char record_of_formal_schooling[30];//学历
char position[30];//职务
int salary;//薪水
char address[20];//地址
char phone[20];//电话号码
};
struct STU//定义结构体
{
struct Code data;
struct STU *next;
};
struct STU *temp()//定义链表,并初始化
{
int i;
char xb[4]="男";
char xb2[4]="女";
struct STU *head;//定义头结点head
struct STU *p;//定义节点p
struct STU *q;//定义尾结点q
struct STU *d;
head=F;//开辟一个新空间
p=head;//将head的地址赋给p,使p指向head
printf("请输入需要录入的人数:\12");
scanf("%d",&n);//输入n
q=F;
for(i=0;i<n;)//用n来确定循环几次
{
p->next=q;//将q的地址赋给p所指的节点中的成员next,既将新开辟的节点与上一个节点连接起来。
p=q;//使p指向下一个节点
p->next=NULL;//使尾结点的next为空,链表到此结束。
loop:printf("请输入职工号:\12");
d=head->next;
scanf("%s",q->data.worker_number);//输入职工号
if(i!=0)
{
while(1)
{
if(strcmp(d->data.worker_number,q->data.worker_number)==0)
{
printf("此职工号已存在,请重新输入\12");
goto loop;
}
else
{
d=d->next;
}
if(d->next==NULL)
{
++i;
break;
}
}
}
printf("请输入姓名:\12");
scanf("%s",q->data.name);//输入姓名
while(1)
{
printf("请输入性别:\12");
scanf("%s",q->data.gender);//输入性别
if(strcmp(q->data.gender,xb)==0||strcmp(q->data.gender,xb2)==0)
break;
else
printf("我不懂“%s”是什么意思,请重新输入\12",q->data.gender);
}
printf("请输入出生年月日:\12");
loop4:scanf("%d",&q->data.year);//输入出生年月日
if(q->data.year<1920||q->data.year>2020)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入年:\12");
goto loop4;
}
loop5:scanf("%d",&q->data.month);
if(q->data.month<=0||q->data.month>12)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入月:\12");
goto loop5;
}
loop6:scanf("%d",&q->data.day);
if(q->data.day<=0||q->data.day>31)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入日:\12");
goto loop6;
}
printf("请输入学历:\12");
scanf("%s",q->data.record_of_formal_schooling);//输入学历
printf("请输入职务:\12");
scanf("%s",q->data.position);//输入职务
loop3:printf("请输入薪水:\12");
scanf("%d",&q->data.salary);//输入薪水
if(q->data.salary<0)
{
printf("输入格式错误,请重新输入\12");
goto loop3;
}
printf("请输入地址:\12");
scanf("%s",q->data.address);//输入地址
while(1)
{
printf("请输入电话号码:\12");
scanf("%s",q->data.phone);//输入电话号码
if(strlen(q->data.phone)==11)
break;
else
printf("请输入11位的电话号码\12");
}
system("cls");
if(i==0)
{
++i;
q=F;
}
else
q=F;
}
return head;//返回head
}
void Storage(struct STU *head)//存储函数
{
int i;//定义变量i
struct STU *p;//定义STU类型的指针p
p=head->next;//将head中的next赋给p,使p指向下一个节点
FILE *fp=NULL;//声明fp是FILE型指针
fp=fopen("职工信息.txt","w");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是w,用来写入信息
for(i=0;i<n;i++)//循环
{
fprintf(fp,"**********欢迎进入职工信息管理系统**********\n"//存入信息
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
p=p->next;//p指向下一个节点,遍历链表
}
fclose(fp);//关闭文件
fp=NULL;
}
void Storage1(struct STU *head)//存储函数
{
int i;//定义变量i
struct STU *p;//定义STU类型的指针p
p=head->next;//将head中的next赋给p,使p指向下一个节点
FILE *fp=NULL;//声明fp是FILE型指针
fp=fopen("职工信息1.txt","w");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是w,用来写入信息
for(i=0;i<n;i++)//循环
{
fprintf(fp,"%s %s %s %d %d %d %s %s %d %s %s\12",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
p=p->next;//p指向下一个节点,遍历链表
}
fclose(fp);//关闭文件
fp=NULL;
}
void print(struct STU *head)//定义输出函数
{
struct STU *p;//定义STU类型的指针p
p=head->next;//将head中的next赋给p,使p指向下一个节点
while(p!=NULL)//循环
{
printf("**********欢迎进入职工信息管理系统**********\n"//引用printf输出函数
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
p=p->next;//p指向下一个节点,遍历链表
}
printf("\12");//换行符
}
void Find(struct STU *p)//定义Find函数,输出p所的指节点的全部信息
{
printf("**********欢迎进入职工信息管理系统**********\n"
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
printf("\12");
}
void Find3(struct STU *p)//定义Find3函数,输出p所的指节点的全部信息
{
printf("**********欢迎进入职工信息管理系统**********\n"
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
printf("\12");
}
void Find2(struct STU *head)//定义根据姓名查找的函数
{
int m=0;
struct STU *p;//定义STU类型的指针p
p=head->next;//将head中的next赋给p,使p指向下一个节点
char sc[20];//定义字符型数组sc,长度为20
while(1)//死循环
{
printf("请输入你要查询的姓名:\12");
scanf("%s",sc);//输入字符串
while(p!=NULL)//循环
{
if(strcmp(sc,p->data.name)==0)//比较sc字符串和p所指节点中的worker_number字符串作比较
{
int k;
printf("请输入需要查询的内容:\12");
printf("1.姓名 2.性别\12"
"3.出生年月日 4.学历 \12"
"5.职务 6.薪水\12"
"7.地址 8.电话号码\12"
"0.退出 9.输出全部\12");
scanf("%d",&k);
while(1)
{
if(strcmp(sc,p->data.name)==0)
{
switch(k)//switch case 语句
{
case 1:printf("姓名:%s\12",p->data.name);break;
case 2:printf("性别:%s\12",p->data.gender);break;
case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
case 5:printf("职务:%s\12",p->data.position);break;
case 6:printf("薪水:%d\12",p->data.salary);break;
case 7:printf("地址:%s\12",p->data.address);break;
case 8:printf("电话号码:%s\12",p->data.phone);break;
case 9:Find(p);break;
}
}
p=p->next;
if(p==NULL)
{
m=3;
break;
}
if(strcmp(sc,p->data.name)==0)
{
switch(k)//switch case 语句
{
case 1:printf("姓名:%s\12",p->data.name);break;
case 2:printf("性别:%s\12",p->data.gender);break;
case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
case 5:printf("职务:%s\12",p->data.position);break;
case 6:printf("薪水:%d\12",p->data.salary);break;
case 7:printf("地址:%s\12",p->data.address);break;
case 8:printf("电话号码:%s\12",p->data.phone);break;
case 9:Find(p);break;
}
}
p=p->next;
if(p==NULL)
{
m=3;
break;
}
}
if(k==0)
break;//跳出while(p!=NULL)循环
}
else
p=p->next;
}
if(p==NULL&&m==3)
break;
else
{
printf("查无此人,请重新输入\12");
p=head->next;
}
}
}
void Find1(struct STU *head)//定义根据职工号查找的函数
{
struct STU *p;
p=head->next;
char sc[20];
while(1)
{
printf("请输入你要查询的职工号:\12");
scanf("%s",sc);
while(p!=NULL)
{
if(strcmp(sc,p->data.worker_number)==0)
{
int k;
printf("请输入需要查询的内容:\12");
printf("1.职工号 2.性别\12"
"3.出生年月日 4.学历 \12"
"5.职务 6.薪水\12"
"7.地址 8.电话号码\12"
"0.退出 9.输出全部\12");
scanf("%d",&k);
switch(k)
{
case 1:printf("职工号:%s\12",p->data.worker_number);break;
case 2:printf("性别:%s\12",p->data.gender);break;
case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
case 5:printf("职务:%s\12",p->data.position);break;
case 6:printf("薪水:%d\12",p->data.salary);break;
case 7:printf("地址:%s\12",p->data.address);break;
case 8:printf("电话号码:%s\12",p->data.phone);break;
case 9:Find3(p);break;
}
if(k==0)
break;
}
else
p=p->next;
}
if(p==NULL)
p=head->next;
if(strcmp(sc,p->data.worker_number)==0)
break;
printf("查无此人,请重新输入\12");
}
}
void Deletenode(struct STU *head)//定义删除职工信息的函数
{
struct STU *q;//定义STU类型的指针q
q=head;
struct STU *p;//定义STU类型的指针p
p=head->next;//将head中的next赋给p,使p指向下一个节点
char sd[20];//定义sd字符数组,长度为20
while(1)//死循环
{
printf("请输入你要删除的职工号:\12");
scanf("%s",sd);
while(p!=NULL)
{
if(strcmp(sd,p->data.worker_number)==0)
{
break;
}
else
q=p;
p=p->next;
}
if(p==NULL)
{
printf("查无此人,请重新输入\12");
p=head->next;
}
if(strcmp(sd,p->data.worker_number)==0)
{
q->next=p->next;//将p的下一个节点与上一个节点连接起来
free(p);//释放p,既删除信息
break;
}
}
}
void Add(struct STU *head)//定义增添职工信息的函数
{
int rs;
int i;
printf("请输入你要增加的人数:\12");
scanf("%d",&rs);
for(i=0;i<rs;i++)
{
char xb[4]="男";
char xb2[4]="女";
struct STU *p;//定义STU类型的指针p
struct STU *q;//定义STU类型的指针q
struct STU *d;
p=head;
q=F;
loop:printf("请输入职工号:\12");
d=head->next;
scanf("%s",q->data.worker_number);//输入职工号
while(1)
{
if(strcmp(d->data.worker_number,q->data.worker_number)==0)
{
printf("此职工号已存在,请重新输入\12");
goto loop;
}
else
{
d=d->next;
if(d==NULL)
goto loop1;
}
if(d->next==NULL&&strcmp(d->data.worker_number,q->data.worker_number)!=0)
{
break;
}
else if(d->next==NULL&&strcmp(d->data.worker_number,q->data.worker_number)==0)
{
printf("此职工号已存在,请重新输入\12");
goto loop;
}
}
loop1:printf("请输入姓名:\12");
scanf("%s",q->data.name);//输入姓名
while(1)
{
printf("请输入性别:\12");
scanf("%s",q->data.gender);//输入性别
if(strcmp(q->data.gender,xb)==0||strcmp(q->data.gender,xb2)==0)
break;
else
printf("我不懂“%s”是什么意思,请重新输入\12",q->data.gender);
}
printf("请输入出生年月日:\12");
loop4:scanf("%d",&q->data.year);//输入出生年月日
if(q->data.year<1920||q->data.year>2020)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入年:\12");
goto loop4;
}
loop5:scanf("%d",&q->data.month);
if(q->data.month<=0||q->data.month>12)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入月:\12");
goto loop5;
}
loop6:scanf("%d",&q->data.day);
if(q->data.day<=0||q->data.day>31)
{
printf("输入格式错误,请重新输入\12");
printf("请重新输入日:\12");
goto loop6;
}
printf("请输入学历:\12");
scanf("%s",q->data.record_of_formal_schooling);//输入学历
printf("请输入职务:\12");
scanf("%s",q->data.position);//输入职务
loop3:printf("请输入薪水:\12");
scanf("%d",&q->data.salary);//输入薪水
if(q->data.salary<0)
{
printf("输入格式错误,请重新输入\12");
goto loop3;
}
printf("请输入地址:\12");
scanf("%s",q->data.address);//输入地址
while(1)
{
printf("请输入电话号码:\12");
scanf("%s",q->data.phone);//输入电话号码
if(strlen(q->data.phone)==11)
break;
else
printf("请输入11位的电话号码\12");
}
p=p->next;//p指向下一个节点
head->next=q;//连接节点
q->next=p;//连接节点
system("cls");
}
n=n+rs;
}
void update1(struct STU *p)//定义update1函数,更改p所指的节点的全部信息
{
printf("请输入姓名:\12");
scanf("%s",p->data.name);
printf("请输入性别:\12");
scanf("%s",p->data.gender);
printf("请输入出生年月日:\12");
scanf("%d %d %d",&p->data.year,&p->data.month,&p->data.day);
printf("请输入学历:\12");
scanf("%s",p->data.record_of_formal_schooling);
printf("请输入职务:\12");
scanf("%s",p->data.position);
printf("请输入薪水:\12");
scanf("%d",&p->data.salary);
printf("请输入地址:\12");
scanf("%s",p->data.address);
printf("请输入电话号码:\12");
scanf("%s",p->data.phone);
}
void update(struct STU *head)//定义更改职工信息的函数
{
struct STU *p;//定义STU类型的指针p。
p=head->next;//将head中的next赋给p,使p指向下一个节点
char w[100];//定义w字符数组 ,长度为100。
while(1)//死循环
{
printf("请输入你要更改的职工号:\12");
scanf("%s",w);
while(p!=NULL)//循环
{
if(strcmp(w,p->data.worker_number)==0)//比较w与worker_number
{
int k;
loop1:printf("请输入需要修改的内容:\12");
printf("1.姓名 2.性别\12"
"3.出生年月日 4.学历\12"
"5.职务 6.薪水\12"
"7.地址 8.电话号码\12"
"9.重新输入 0.退出\12");
scanf("%d",&k);
switch(k)
{
case 1:printf("请输入姓名:\12");scanf("%s",p->data.name);break;
case 2:printf("请输入性别:\12");scanf("%s",p->data.gender);break;
case 3:printf("请输入出生年月日:\12");scanf("%d %d %d",&p->data.year,&p->data.month,&p->data.day);break;
case 4:printf("请输入学历:\12");scanf("%s",p->data.record_of_formal_schooling);break;
case 5:printf("请输入职务:\12");scanf("%s",p->data.position);break;
case 6:printf("请输入薪水:\12");scanf("%d",&p->data.salary);break;
case 7:printf("请输入地址:\12");scanf("%s",p->data.address);break;
case 8:printf("请输入电话号码:\12");scanf("%s",p->data.phone);break;
case 9:update1(p);break;
case 0:goto loop2;
default:printf("输入错误,请重新输入\12");goto loop1;
}
loop2:if(k==0)
break;
}
else
p=p->next;
}
if(p==NULL)
p=head->next;
if(strcmp(w,p->data.worker_number)==0)
break;
printf("查无此人,请重新输入\12");
}
}
void sort(struct STU *head)//降序排序
{
int m;
struct STU *p;
p=head->next;
struct STU a[n];
int i,j;
struct STU t;
for(i=0;i<n;i++)
{
a[i]=*p;
p=p->next;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(strcmp(a[i].data.worker_number,a[i+1].data.worker_number)<0)
{
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
for(i=0;i<n;i++)
printf("**********欢迎进入职工信息管理系统**********\n"
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",a[i].data.worker_number,a[i].data.name,a[i].data.gender,a[i].data.year,a[i].data.month,a[i].data.day,a[i].data.record_of_formal_schooling,a[i].data.position,a[i].data.salary,a[i].data.address,a[i].data.phone);
printf("\12");
}
void sort1(struct STU *head)//升序排序
{
int m;
struct STU *p;
p=head->next;
struct STU a[n];
int i,j;
struct STU t;
for(i=0;i<n;i++)
{
a[i]=*p;
p=p->next;
}
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(strcmp(a[i].data.worker_number,a[i+1].data.worker_number)>0)
{
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
for(i=0;i<n;i++)
printf("**********欢迎进入职工信息管理系统**********\n"
"1.职工号:%s 2.姓名:%s\n"
"3.性别:%s 4.出生年月日:%d/%d/%d\n"
"5.学历:%s 6.职务:%s\n"
"7.薪水:%d 8.地址:%s\n"
"9.电话号码:%s\n"
"*****************谢谢使用****************\n",a[i].data.worker_number,a[i].data.name,a[i].data.gender,a[i].data.year,a[i].data.month,a[i].data.day,a[i].data.record_of_formal_schooling,a[i].data.position,a[i].data.salary,a[i].data.address,a[i].data.phone);
printf("\12");
}
void output()//定义output函数用来读取文件夹信息
{
FILE *fp;
char ch;
fp=fopen("职工信息.txt","r");
ch=fgetc(fp);
while(ch!=EOF)//EOF是End Of File的缩写,表示资源库无更多的资料可读取。表示文档的结束。
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
struct STU *read()
{
n=0;
struct STU *head;
head=F;
struct STU *p;
struct STU *q;
p=head;
char a[20],b[20],c[4],g[30],h[30],j[20],k[20];
int d,e,f,i;
FILE *fp=fopen("职工信息1.txt","r");
while(fscanf(fp,"%s%s%s%d%d%d%s%s%d%s%s",a,b,c,&d,&e,&f,g,h,&i,j,k)!=EOF)
{
q=F;
strcpy(q->data.worker_number,a);
strcpy(q->data.name,b);
strcpy(q->data.gender,c);
q->data.year=d;
q->data.month=e;
q->data.day=f;
strcpy(q->data.record_of_formal_schooling,g);
strcpy(q->data.position,h);
q->data.salary=i;
strcpy(q->data.address,j);
strcpy(q->data.phone,k);
p->next=q;
p=q;
p->next=NULL;
++n;
}
printf("读取成功!\12");
return head;
}
int main()
{
int a;//定义变量a
int j;//定义变量j
struct STU *head;//定义指针
head=NULL;
system("color 0d");//颜色
char str[]="欢迎使用职工管理系统,制作人巩淼磊";//定义一个字符型数组,并赋值
int i;//定义变量i
for(i=0;str[i];i++)//循环,使字符逐个输出
{
printf("%c",str[i]);
Sleep(40);//控制速度为40
}
printf("\12");
while(1)
{
char str1[]="请选择你要操作的步骤 1.登录 2.注册";//同上
int o;
for(o=0;str1[o];o++)
{
printf("%c",str1[o]);
Sleep(40);
}
printf("\12");
char z[10];
char c[20];//定义字符数组 c
char s[20];//定义字符数组 s
char d[20];//定义字符数组 d
char e[20];//定义字符数组 e
char f[20];//定义字符数组 f
char zz[2]="2";
char zzz[2]="1";
scanf("%s",z);
if(strcmp(zz,z)==0)
{
printf("请输入你要注册的账号:\12");
scanf("%s",c);//输入字符串c
while(1)//死循环
{
printf("请设置密码:\12");
scanf("%s",s);
printf("请确认密码:\12");
scanf("%s",d);
FILE *fp=NULL;//声明fp是FILE型指针
fp=fopen("zcxx.txt","a");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是a,用来写入信息
fprintf(fp,"\12");
fprintf(fp,"%s",c);
fprintf(fp,"\n");
fprintf(fp,"%s",d);
fclose(fp);//关闭文件
fp=NULL;
if(strcmp(s,d)==0)
{
system("cls");
printf("注册成功!\12");
break;
}
else
{
system("cls");
printf("密码不一致,请重新输入:\12");
}
}
}
if(strcmp(zzz,z)==0)
{
int q=4;
while(1)//死循环
{
printf("请登录\12");
printf("请输入账号:\12");
scanf("%s",e);
printf("请输入密码:\12");
scanf("%s",f);
int a;
FILE *fp=fopen("zcxx.txt","r");
if(!fp)
{
printf("can't open file\12");
return -1;
}
loop:fscanf(fp,"%d",&a);
itoa(a,c,10);
printf("\12");
fscanf(fp,"%d",&a);
itoa(a,s,10);
printf("\12");
fclose(fp);
if(strcmp(c,e)==0&&strcmp(s,f)==0)
{
system("cls");
printf("登录成功!\12");
break;
}
else
{
--q;
if(q!=0)
{
system("cls");
printf("你的账号或密码错误,请重新登录\12");
printf("你还有%d次输入机会\12",q);
}
if(q==0)
{
printf("你的账号被冻结!\12");
exit(0);//退出程序。
}
}
}
}
if(strcmp(c,e)==0&&strcmp(s,f)==0)
{
break;
}
if(strcmp(zzz,z)!=0&&strcmp(zz,z)!=0)
{
printf("错误,请重新选择:\12");
}
}
while(1)//死循环
{
loop5:printf("**********欢迎进入职工信息管理系统**********\n"
"1.录入职工信息并保存 2.显示所有职工信息\n"
"3.查询职工信息 4.修改职工信息并保存\n"
"5.删除职工信息 6.增加职工信息 \n"
"7.退出 8.根据职工号排序\12"
"******************欢迎使用******************\n");
printf("\12");
printf("请选择你需要操作的步骤:\12");
scanf("%d",&a);
if(a==1)//调用temp函数,并保存
{
system("color b");
system("cls");
head=temp();
Storage(head);//保存函数
Storage1(head);
system("cls");
}
else if(a==2)//调用output函数,并保存
{
system("cls");
output();
system("color a");
}
else if(a==3)//如果是查询职工信息,让用户选择一下是用职工号查找,还是姓名查找
{
int w;
printf("用职工号查找按1,用姓名查找按2\12");
scanf("%d",&w);
if(w==1)//调用Find1函数,用职工号查询信息
{
system("color c");
head=read();
system("cls");
Find1(head);
}
if(w==2)
{
system("color d");
head=read();
system("cls");
Find2(head);//调用Find2函数,用姓名查询信息
}
}
else if(a==4)//调用update函数,修改职工信息,并保存
{
system("color e");
head=read();
system("cls");
update(head);
Storage(head);
Storage1(head);
system("cls");
}
else if(a==5)//调用Deletenode函数,删除职工信息,并保存
{
system("color 0");
head=read();
system("cls");
Deletenode(head);
--n;
Storage(head);
Storage1(head);
system("cls");
}
if(a==6)//调用Add函数,增加职工信息并保存
{
system("color b");
head=read();
system("cls");
Add(head);
Storage(head);
Storage1(head);
system("cls");
}
if(a==7)//此步为结束本次程序
{
system("color 7");
system("cls");
printf("谢谢使用,制作人巩淼磊。\12");
break;
}
if(a==8)
{
loop3:printf("按职工号降序排列请按1,按职工号升序排列请按2\12");
scanf("%d",&j);
if(j==1)
sort(head);
if(j==2)
sort1(head);
if(j!=1&&j!=2)
{
printf("请重新输入\12");
goto loop3;
}
}
if(a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8)//如果用户输入的内容不在系统内,系统将报错
{
system("color 8");
system("cls");
printf("请重新输入\12");
goto loop5;
}
}
return 0;
}
写的不好,敬请谅解。