教师公积金缴纳金额计算
功能描述:
某中学教师每月需要根据工资的总额来确定当月需要缴纳的公积金,而当月工资除了基本工资1500元以外,还包括绩效工资,绩效工资和三个因素有关,当月的值班天数,当月的监考次数以及当月的上课次数。(教师每值班一天能够获得60元的收入,每监考一次能获得30元的收入,每上课一次能获得64元的收入)
公积金的缴纳额需要根据工资总额按照一定的比例进行上交。
处理过程描述
输入:
值班天数:整型,教师每月的值班天数不少于5天,不能超过正常工作日22天。
监考次数:整型,教师监考次数不能超过10次。
上课次数:整型,上课次数不能超过30次。
值班天数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。
监考次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。
上课次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。
计算公积金:
工资总额=基本工资+绩效工资
绩效工资=值班收入+监考收入+上课收入
值班收入=值班天数×值班的天收入
监考收入=监考次数×监考次收入
上课收入=上课次数×上课次收入
需缴纳的公积金=工资总额大于5000的部分×0.25+工资总额大于4000小于5000的部分×0.2+工资总额大于2000小于4000的部分×0.15+工资总额小于2000的部分×0.1
输出:
绩效工资总额,工资总额,需要缴纳的公积金
测试任务
整个测试所包含的内容:
1、用C语言写出教师公积金缴纳问题的程序,并简单测试,确保程序基本正确
(特别说明:进一步实现其他任何非整型输入的情况,比如输入字符,建议用单独的函数实现判断,在主函数中调用此函数判断值班数/监考数/上课数是否为整数)
2、用visio画出程序所对应的流程图
3、写白盒测试用例,包含语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖,基本路径测试(根据控制流图,同样需要使用visio画出)
4、写黑盒测试用例,包含等价类划分法,边界值法,判定表法(额外补充:时间允许情况下,再用visio画出因果图法)
5、两两交叉进行测试所有黑盒和白盒测试的用例,比较测试结果和预期的结果
6、形成黑盒测试以及白盒测试的大报告
while(1)
{
nRes = scanf("%d",&nDuty);
if (nRes == 1)
{
if (nDuty >= 5 && nDuty <= 22)
{
break;
}
else if (nDuty < 0)
{
printf("输入数据有误,请输入整数!\n");
printf("输入老师值班天数,不少于5天,不能超过22天:");
}
else
{
printf("输入范围有误,请输入整数!\n");
printf("输入老师值班天数,不少于5天,不能超过22天:");
}
}
else if (nRes == 0)
{
scanf("%*c");
printf("输入老师值班天数,不少于5天,不能超过22天:");
}
else if (nRes == EOF)
{
break; //强制中断
}
}
供参考。。
这需求就是大学c语言作业题吧,如果是妹纸我可以帮你写 哈哈
是啊,帮忙写下啦。。。
int main()
{
int nBase = 1500,nPerformance = 0,nTemp = 0,nRes = 0;
int nDuty = 0,nInvigilate = 0,nClass = 0;
float fReserve = 0.0;
printf("输入老师值班天数,不少于5天,不能超过22天:");
nRes = scanf("%d",&nDuty);
while(nRes == 1)
{
if (nDuty >= 5 && nDuty <= 22)
{
break;
}
else if (nDuty < 0)
{
printf("输入数据有误,请输入整数!\n");
}
else
{
printf("输入范围有误,请输入整数!\n");
}
printf("输入老师值班天数,不少于5天,不能超过22天:");
nRes = scanf("%d",&nDuty);
}
printf("输入老师监考次数,不能超过10次:");
nRes = scanf("%d",&nInvigilate);
while(nRes == 1)
{
if (nInvigilate >= 0 && nInvigilate <= 10)
{
break;
}
else if (nInvigilate < 0)
{
printf("输入数据有误,请输入整数!\n");
}
else
{
printf("输入范围有误,请输入整数!\n");
}
printf("输入老师监考次数,不能超过10次:");
nRes = scanf("%d",&nInvigilate);
}
printf("输入老师上课次数,不能超过30次:");
nRes = scanf("%d",&nClass);
while(nRes == 1)
{
if (nClass >= 0 && nClass <= 30)
{
break;
}
else if (nClass < 0)
{
printf("输入数据有误,请输入整数!\n");
}
else
{
printf("输入范围有误,请输入整数!\n");
}
printf("输入老师上课次数,不能超过30次:");
nRes = scanf("%d",&nClass);
}
nPerformance = (nDuty * 60) + (nInvigilate * 30) + (nClass * 64);
nTemp = nPerformance + nBase;
if (nTemp > 5000)
{
fReserve = (nTemp - 5000) * 0.25 + 1000 * 0.2 + 2000 * 0.15 + 2000 * 0.1;
}
else if (nTemp > 4000 && nTemp < 5000)
{
fReserve = (nTemp - 4000) * 0.2 + 2000 * 0.15 + 2000 * 0.1;
}
else if (nTemp > 2000 && nTemp < 4000)
{
fReserve = (nTemp - 2000) * 0.15 + 2000 * 0.1;
}
else if (nTemp < 2000)
{
fReserve = (float)(nTemp * 0.1);
}
printf("%d,%d,%0.2f",nPerformance,nTemp,fReserve);
return 0;
}