
用C语言程序设计编写 工资管理程序设计,有悬赏,财富悬赏100!请各位大虾、高手帮帮忙!
工资管理程序设计(1)选项菜单集成各功能函数模块(2)录入工资数据(职工号、姓名、基本工资、岗位工资、补贴、扣款,计算实发工资)(3)按职工号排序(4)按姓名查找(5)汇...
工资管理程序设计
(1)选项菜单集成各功能函数模块
(2)录入工资数据(职工号、姓名、基本工资、岗位工资、补贴、扣款,计算实发工资)
(3)按职工号排序
(4)按姓名查找
(5)汇总统计各部门的各项工资数据
(6)打印工资表
说明:最好不要规定程序的人数限制,扣款率、补贴率从键盘端输入,但不规定具体数字,按职工号排序时按升序排列 展开
(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);
}
}
不知道是不是满足楼主的意思。。。。。。。。。。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询