void require(sy *h) { printf("若想按编号查询,请按1\n" "若想按姓名查询,请按2\n"); scanf("%d",&i); int number; char name[10]; int flag=0;//为零表示没有找到该员工,为1表示找到了该员工 sy *p; p=h->next; switch(i) { case 1: printf("请输入想查询员工的编号:"); scanf("%d",&number); while(p!=NULL) { if(p->num==number && p->FLAG==0) { printf("该员工信息如下:\n"); printf("员工编号\t姓 名\t\t入职年月\t岗位工资\t奖金\t扣款\t实发工资\n"); printf("%d\t\t%s\t\t%s\t",p->num,p->name,p->time); printf("%.2f\t\t%.2f\t%.2f\t%.2f\n",p->salary,p->bonus,p->withhold,p->net_payroll); flag=1; } p=p->next; } break; case 2: printf("请输入想查询员工的姓名:"); scanf("%s",&name); while(p!=NULL) { if(strcmp(p->name,name)==0 && p->FLAG==0) { printf("该员工信息如下:\n"); printf("员工编号\t姓 名\t\t入职年月\t岗位工资\t奖金\t扣款\t实发工资\n"); printf("%d\t\t%s\t\t%s\t",p->num,p->name,p->time); printf("%.2f\t\t%.2f\t%.2f\t%.2f\n",p->salary,p->bonus,p->withhold,p->net_payroll); flag=1; } p=p->next; } break; default: printf("您输入的数字不在范围内,请重新输入!\n"); break; } if(flag==0) printf("没有该员工信息!"); }
时间: 2023-10-31 11:06:32 浏览: 81
这段代码主要涉及的是链表的操作,对于一个已有的员工信息链表,提供了按照编号或姓名查询员工信息的功能,其中包括了员工编号、姓名、入职年月、岗位工资、奖金、扣款、实发工资等信息。具体实现过程中,通过scanf函数获取用户输入的查询方式和查询条件,然后通过while循环遍历整个链表,查找符合条件的员工信息并输出。同时,还设置了一个flag变量来表示是否找到符合条件的员工信息,最终输出查询结果或提示信息。
阅读全文