用身份证后六位怎么查找不了,修改也不行?
#include <stdio.h>#include<stdlib.h>
#include<string.h>
int num,i=0,m,zl;
float jbgzl,jbgz,shangxueqi,gongzi=0;
float xzbt,sysbz,ksf;
struct lrx
{
int num;
char name[30];
int leibie;
float yuefen[12];
char sfz[10];
struct lrx *next;
};
struct lrx *xinjian()//指針函數
{
struct lrx *p1,*p2,*head;
int a=0;
head=(struct lrx *)malloc(sizeof(struct lrx));
head->num=a;
p2=head;
printf("請輸入員工信息\n");
printf("编号:");
scanf("%d",&num);
while(num!=0)
{
p1=(struct lrx *)malloc(sizeof(struct lrx));
p1->next=NULL;
p1->num=num;
printf("姓名:");
scanf("%s",&p1->name);
printf("身份證后六位:");
scanf("%s",&p1->sfz);
printf("员工类别(1-5):");
scanf("%d",&zl);
if(zl<1||zl>5)
{
printf("輸入錯誤!");
}
p1->leibie=zl;
switch(zl)
{
case 1:
jbgz=850;
jbgzl=180;
printf("请输入上學期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf;
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("录入成功!(输入0退出)\n");
break;
case 2:
jbgz=650;
sysbz=200;
gongzi=jbgz+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("录入成功!(输入0退出)\n");
break;
case 3:
jbgz=750;
xzbt=360;
gongzi=jbgz+xzbt;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("录入成功!(输入0退出)\n");
break;
case 4:
jbgz=850;
jbgzl=180;
sysbz=200;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("录入成功!(输入0退出)\n");
break;
case 5:
jbgz=750;
xzbt=360;
jbgzl=180;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+xzbt+ksf;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("录入成功!(输入0退出)\n");
break;
}
p2->next=p1;
p2=p1;
printf("编号:");
scanf("%d",&num);
}
return head;
}
void insert(struct lrx *head)
{
struct lrx *p,*p1;
p=head->next; //指向链表头结点
printf("请输入员工信息(輸入0返回主菜单)\n");
printf("编号:");
scanf("%d",&num);
while(num!=0)
{
p1=(struct lrx *)malloc(sizeof(struct lrx));
p1->next=NULL;
p1->num=num;
printf("姓名:");
scanf("%s",&p1->name);
printf("身份證后六位:");
scanf("%s",&p1->sfz);
printf("员工类别(1-5):");
scanf("%d",&zl);
if(zl<1||zl>5)
{
printf("輸入错误!(1-5):");
}
p1->leibie=zl;
switch(zl)
{
case 1:
jbgz=850;
jbgzl=180;
printf("请输入上学期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf;
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("添加成功!(输入0返回主菜单)\n");
break;
case 2:
jbgz=650;
sysbz=200;
gongzi=jbgz+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("添加成功!(输入0返回主菜单)\n");
break;
case 3:
jbgz=750;
xzbt=360;
gongzi=jbgz+xzbt;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("添加成功!(输入0返回主菜单)\n");
break;
case 4:
jbgz=850;
jbgzl=180;
sysbz=200;
printf("请输入上学期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("添加成功!(输入0返回主菜单)\n");
break;
case 5:
jbgz=750;
xzbt=360;
jbgzl=180;
printf("请输入上学期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+xzbt+ksf;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("添加成功!(输入0返回主菜单)\n");
break;
}
while(p->next!=NULL)
p=p->next; //指向下一个结点
if(p->next==NULL)
p->next=p1; //将新结点链入尾结点
p=p1;
printf("编号:");
scanf("%d",&num);
}
}
struct lrx *del(struct lrx *head)
{
struct lrx *p,*r;
char sfz[10];
char *name;
//name=string;
int s;
p=head;
if(p==NULL)
{
printf("该链表为空,无法删除");
return head;
}
while(1)
{
printf("\t ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t ┃ 1.按编码删除 ┃\n");
printf("\t ┃ 2.按身份證刪除 ┃\n");
printf("\t ┃ 3. 返 回 ┃\n");
printf("\t ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请选择(1-3)==>");
scanf("%d",&s);
if(s>3||s<1)
{
printf("輸入错误,请重新选择(1-3)=>");
}
switch(s)
{
case 1:
p=head->next;
printf("请输入要删除的员工编号:");
scanf("%d",&num);
while(num!=p->num&&p->next!=NULL)
{
r=p;
p=p->next;
}
if(num==p->num)
{
r->next=p->next;
printf("删除成功\n");
}
else
printf("没有该员工信息\n");
break;
case 2:
p=head->next;
printf("请输入要删除员工的身份證:");
scanf("%s",&sfz);
while(sfz!=p->sfz&&p->next!=NULL)
{
r=p;
p=p->next;
}
if(sfz==p->sfz)
{
r->next=p->next;
printf("删除成功\n");
}
else
printf("没有该员工信息\n");
break;
case 3:
return head;
break;
}
}
return head;
}
struct lrx *xiugai(struct lrx *head)
{
struct lrx *p1;
char sfz[10];
char *name;
int s;
// name=string;
p1=head->next;
while(1)
{
printf("\t ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t ┃ 1.按编码查找 ┃\n");
printf("\t ┃ 2.按身份證查找 ┃\n");
printf("\t ┃ 3. 返 回 ┃\n");
printf("\t ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请选择(1-3)==>");
scanf("%d",&s);
if(s>3||s<1)
{
printf("輸入错误,请重新选择(1-3)=>");
}
switch(s)
{
case 1:
p1=head->next;
printf("请输入要修改的员工编号:");
scanf("%d",&num);
while(p1->num!=num&&p1->next!=NULL)
p1=p1->next;
if(p1->num==num)
{
printf("该员工本来信息:\n");
printf("编号:%d\n",p1->num);
printf("姓名:%s\n",p1->name);
printf("类别:%d\n",p1->leibie);
for(i=0;i<12;i++)
printf("%d月工资:%f\n",i+1,p1->yuefen[i]);
printf("请重新输入该员工信息:");
printf("编号:");
scanf("%d",&p1->num);
printf("姓名:");
scanf("%s",&p1->name);
printf("员工类别(1-5):");
scanf("%d",&zl);
if(zl<1||zl>5)
{
printf("輸入错误!请重新选择(1-5):");
}
p1->leibie=zl;
switch(zl)
{
case 1:
jbgz=850;
jbgzl=180;
printf("请输入上学期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf;
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 2:
jbgz=650;
sysbz=200;
gongzi=jbgz+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 3:
jbgz=750;
xzbt=360;
gongzi=jbgz+xzbt;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 4:
jbgz=850;
jbgzl=180;
sysbz=200;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 5:
jbgz=750;
xzbt=360;
jbgzl=180;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+xzbt+ksf;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
}
}
else
printf("找不到该员工信息");
break;
case 2:
p1=head->next;
printf("请输入要修改的身份證:");
scanf("%s",&sfz);
while(sfz!=p1->sfz&&p1->next!=NULL)
p1=p1->next;
if(sfz==p1->sfz)
{
printf("员工原本信息:\n");
printf("编号:%d\n",p1->num);
printf("姓名:%s\n",p1->name);
printf("身份證:%s\n",p1->sfz);
printf("类别:%d\n",p1->leibie);
for(i=0;i<12;i++)
printf("%d月工资:%f\n",i+1,p1->yuefen[i]);
printf("请重新输入该员工信息:");
printf("编号:");
scanf("%d",&p1->num);
printf("姓名:");
scanf("%s",&p1->name);
printf("身份證后六位:");
scanf("%s",&p1->sfz);
printf("员工类别(1-5):");
scanf("%d",&zl);
if(zl<1||zl>5)
{
printf("輸入错误!请重新选择(1-5):");
}
p1->leibie=zl;
switch(zl)
{
case 1:
jbgz=850;
jbgzl=180;
printf("请输入上学期工作量:");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf;
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 2:
jbgz=650;
sysbz=200;
gongzi=jbgz+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 3:
jbgz=750;
xzbt=360;
gongzi=jbgz+xzbt;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 4:
jbgz=850;
jbgzl=180;
sysbz=200;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+ksf+sysbz;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
case 5:
jbgz=750;
xzbt=360;
jbgzl=180;
printf("请输入上学期工作量");
scanf("%f",&shangxueqi);
ksf=(shangxueqi-jbgzl)*30;
gongzi=jbgz+xzbt+ksf;
for(i=0;i<12;i++)
p1->yuefen[i]='\0';
printf("录入几个月的工资(1-12):");
scanf("%d",&m);
for(i=0;i<m;i++)
p1->yuefen[i]=gongzi;
printf("修改成功!\n");
break;
}
}
else
printf("没找到该员工信息\n");
break;
case 3:
return head;
break;
}
}
return head;
}
int print(struct lrx *head)
{
struct lrx *p;
int i,s1,s;
char *name;
char sfz[10];
//name=string;
p=head->next;
if(p==NULL)
{
printf("该链表为空\n");
return 0;
}
if(p!=NULL)
b: while(1)
{
p=head->next;
printf("\t ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t ┃ 1.查询员工信息 ┃\n");
printf("\t ┃ 2. 返 回 主 菜 单 ┃\n");
printf("\t ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请选择(1-2)==>");
scanf("%d",&m);
if(m<1||m>2)
{
printf("輸入错误,请重新选择==>");
}
switch(m)
{
case 1:
while(1)
{
printf("\t ┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t ┃ 1.按编码查询 ┃\n");
printf("\t ┃ 2.按身份證查询 ┃\n");
printf("\t ┃ 3. 返 回 ┃\n");
printf("\t ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("请选择(1-3)==>");
scanf("%d",&s1);
if(m<1||m>3)
{
printf("輸入错误,请重新选择==>");
}
switch(s1)
{
case 1:
p=head->next;
printf("请输入查询员工的编码:==>");
scanf("%d",&s);
while(p->num!=s&&p->next!=NULL)
p=p->next;
if(s==p->num)
{
printf("编号:%d\n",p->num);
printf("姓名:%s\n",p->name);
printf("身份證:%s\n",p->sfz);
printf("类别:%d\n",p->leibie);
for(i=0;i<12;i++)
printf("%d月工资:%f\n",i+1,p->yuefen[i]);
}
else
printf("找不到该员工信息\n");
break;
case 2:
p=head->next;
printf("请输入查询员工的身份證后六位:==>");
scanf("%s",&sfz);
while(s=p->sfz&&p->next!=NULL)
p=p->next;
if(sfz==p->sfz)
{
printf("编号:%d\n",p->num);
printf("姓名:%s\n",p->name);
printf("身份證:%s\n",p->sfz);
printf("类别:%d\n",p->leibie);
for(i=0;i<12;i++)
printf("%d月工资:%f\n",i+1,p->yuefen[i]);
}
else
printf("找不到该员工信息\n");
break;
case 3:
goto b;
break;
}
}
break;
case 2:
return 0;
break;
}
}
return 0;
}
main()
{
int i,s=0,b=0;
struct lrx *head;
head=NULL;
printf("\t\t\t 首次使用请先初始化系统。\n");
while(1)
{
printf ("*******************************************************************************\n");
printf ("**************************歡迎進入職工工資管理系統**************************** \n");
printf ("*******************************************************************************\n");
printf("\t \n");
printf("\t 1.查询员工信息 \n");
printf("\t 2.添加员工信息 \n");
printf("\t 3.修改员工信息 \n");
printf("\t 4.删除员工信息 \n");
printf("\t 5.初 始 化系统 \n");
printf("\t 6.退出管理系统 \n");
printf("\t ****************************************************\n");
printf("\t * 类别说明: * \n");
printf("\t * 1.教师、2.实验员、3.行政人员 * \n");
printf("\t * 4.教师兼职实验员、5.行政人员兼职教师 * \n");
printf("\t ****************************************************\n");
printf("请选择操作选项(1-5)==>");
scanf("%d",&s);
if(s>6||s<1)
{ printf("輸入错误!请重新选择(1-5)==>");
}
switch(s)
{
case 1:
print(head);
break;
case 2:
insert(head);
break;
case 3:
xiugai(head);
break;
case 4:
del(head);
break;
case 5:
head=xinjian();
printf("初始化成功,请继续操作\n");
break;
case 6:
exit(1);
break;
}
}
}