# include
# include
# define NUM 30
typedef struct{
char Id[20];
char Name[20];
float BasicSalary;
float JobSalary;
float Subsidy;
float Cut;
float RealWage;
}Staff;
int input(Staff*stud);
void search(Staff *stud);
void rank(Staff *stud);
int displaymenu();
void printall(Staff*stud);
void everysalary(Staff*stud);
int input(Staff *stud)//输入
{
Staff *p=stud;
unsigned i=0;
char ch;
printf("请分别输入职工号、姓名、基本工资、岗位工资、补贴、扣款\n如果停止数据输入,请在输入职工号时直接按回车键\n");
printf("请输入职工号(直接按回车键退出):");
while(gets(p->Id)&&p->Id[0]!='\0')
{
printf("请输入姓名:");
gets(p->Name);
printf("请输入基本工资数据:");
while(scanf("%f",&(p->BasicSalary))!=1)
{
printf("请输入正确的基本工资数据:");
while(ch=getchar()!='\n')
{
continue;
}
}
getchar();
printf("请输入岗位工资数据:");
while(scanf("%f",&(p->JobSalary))!=1)
{
printf("请输入正确的岗位工资数据:");
while(ch=getchar()!='\n')
{
continue;
}
}
getchar();
printf("请输入补贴数据:");
while(scanf("%f",&(p->Subsidy))!=1)
{
printf("请输入正确的补贴数据:");
while(ch=getchar()!='\n')
{
continue;
}
}
getchar();
printf("请输入扣款数据:");
while(scanf("%f",&(p->Cut))!=1)
{
printf("请输入正确的扣款数据:");
while(ch=getchar()!='\n')
{
continue;
}
}
getchar();
p->RealWage=p->BasicSalary+p->JobSalary+p->Subsidy-p->Cut;
p++;
printf("请输入职工号(直接按回车键退出):");
}
printf("各职工信息录入成功!\n");
return p-stud;
}
void search(Staff *stud)//按姓名搜索
{
Staff *p;
char searchname[20];
printf("请输入要查找职工的姓名:");
gets(searchname);
for(p=stud;p->Id[0]!='\0';p++)
{
if(!strcmp(p->Name,searchname))
{
printf("该职工职工号%s,姓名%s,基本工资%.3f,岗位工资%.3f,补贴%.3f,扣款%.3f,实发工资%.3f\n",p->Id,p->Name,p->BasicSalary,p->JobSalary,p->Subsidy,p->Cut,p->RealWage);
break;
}
}
if(p->Id[0]=='\0')
{
printf("您输入的姓名不存在!!!\n");
}
}
void rank(Staff *stud)//按职工号排序
{
Staff *p,*q,*k,temp;
for(p=stud;p->Id[0]!='\0';p++)
{
k=p;
for(q=p+1;q->Id[0]!='\0';q++)
{
if(strcmp(q->Id,k->Id)<0)
{
temp=*q;
*q=*k;
*k=temp;
}
}
}
printall(stud);
}
int displaymenu()
{
int item;
char ch;
printf(" *********************工资管理程序*********************\n");
printf(" 1.录入工资数据 2.按职工号排序\n");
printf(" 3.按姓名查找职工 4.汇总各部门的各项工资数据\n");
printf(" 5.打印工资表\n");
while((scanf("%d",&item)!=1)||(item<1)||(item>5))
{
printf("请输入正确的选项(1~5):");
while(ch=getchar()!='\n')
{
continue;
}
}
getchar();
return item;
}
void printall(Staff *stud)
{
Staff *p;
for(p=stud;p->Id[0]!='\0';p++)
{
printf("职工号%s,姓名%s,基本工资%.3f,岗位工资%.3f,补贴%.3f,扣款%.3f,实发工资%.3f\n",p->Id,p->Name,p->BasicSalary,p->JobSalary,p->Subsidy,p->Cut,p->RealWage);
}
}
void everysalary(Staff *stud)
{
Staff *p;
for(p=stud;p->Id[0]!='\0';p++)
{
printf("职工号%s,姓名%s,基本工资%.3f,岗位工资%.3f,实发工资%.3f\n",p->Id,p->Name,p->BasicSalary,p->JobSalary,p->RealWage);
}
}
void main()
{
Staff stud[NUM]={0};
int item,StaffNum;
char str[10];
str[0]='y';
while((str[0]!='q')&&(str[0]!='Q')&&(item=displaymenu()))
{
switch(item)
{
case 1:StaffNum=input(stud);
break;
case 2:rank(stud);
break;
case 3:search(stud);
break;
case 4:everysalary(stud);
break;
case 5:printall(stud);
break;
default:break;
}
printf("是否退出,退出请键入q,不退出键入其他键:");
gets(str);
}
}
不知道是不是满足楼主的意思。。。。。。。。。。。。。。