用C语言程序设计编写 工资管理程序设计,有悬赏,财富悬赏100!请各位大虾、高手帮帮忙!

工资管理程序设计
(1)选项菜单集成各功能函数模块
(2)录入工资数据(职工号、姓名、基本工资、岗位工资、补贴、扣款,计算实发工资)
(3)按职工号排序
(4)按姓名查找
(5)汇总统计各部门的各项工资数据
(6)打印工资表

说明:最好不要规定程序的人数限制,扣款率、补贴率从键盘端输入,但不规定具体数字,按职工号排序时按升序排列

# include<stdio.h>

# include<string.h>

# 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);

 }

}

 

不知道是不是满足楼主的意思。。。。。。。。。。。。。。

温馨提示:答案为网友推荐,仅供参考
相似回答