我正在使用 C 语言开发员工薪酬程序,我正在尝试找到一种更好的方法来组织代码来计算小时工的薪酬。我想使用 switch 语句,而不是一大堆 if 语句。我只是想知道这是否可能?案例需要一个值还是可以保持空白?例如,我可以只使用“ case :”而不是“ case value1 :”吗?我知道如果我确实使用了 switch 语句,我可能不得不使用 if's 来验证用户输入的内容是否有效。还是我应该坚持一堆如果?
如果您想知道,以下是我需要遵循的指示:
- 一家公司向其雇员支付: a) 经理,他们获得固定的周薪;b) 小时工,他们在工作的前 40 小时和“半小时”内获得固定的小时工资,即加班时间的小时工资的 1.5 倍;c) 佣金工人,他们收到 250 美元外加每周销售额的 5.7%;或 d) 计件工人,他们为每件生产的每件商品获得固定金额。
编写一个程序来计算每个员工的每周工资。您事先不知道员工人数。每种员工类型都有自己的工资代码:
1 经理
2小时工
3 佣金工人
4 计件工。
编写一个单独的函数来处理每种支付代码类型。使用开关根据员工的工资代码计算每个员工的工资。在开关中,提示用户输入程序需要的适当事实,以根据该员工的工资代码计算每个员工的工资。
酌情添加合理性检查(例如,工资在 0 - 100000 之间,工作小时在 0 - 84 之间,小时工资在 0 - 250 之间,每周销售额在 0 - 1000000 之间,件数在 1 - 1000 之间,每件工资在 0.01 - 1000 之间. 使用常量)。
以下是程序常量:#include
// constants
#define MANAGERS 1
#define HOURLY_WORKERS 2
#define COMMISSION_WORKERS 3
#define PIECEWORKERS 4
#define STOP_PROGRAM -1
#define COMMISSION_PERCENT 0.057
#define COMMISSION_PAY 250
#define OVERTIME_HOURS 1.5
#define MAX_HOURS_WORKED 40
这是我到目前为止的每小时工作人员功能的代码:
void calcHourlyWorkerPay()
{
float hourlyPayRate;
int totalHoursWorked;
float totalPay;
printf("You entered 2 for Hourly Worker.\n\n");
printf("Enter hourly pay rate.\n"
"(Entry must be between 0 and 250): ");
scanf ("%f", &hourlyPayRate);
printf("Enter total hours worked.\n"
"(Entry must be between 0 and 84): ");
scanf ("%d", &totalHoursWorked);
if ((totalHoursWorked <= MAX_HOURS_WORKED) && (totalHoursWorked >= 84))
{
}
}
我问的原因是因为我想为此添加验证,如果用户输入的数字不在 0 到 84 之间,它会说“输入无效,请输入 0 到 84 之间的数字”。我还想添加验证,如果用户输入的每小时费率不在 0 到 250 之间,它会说“输入无效,请输入 0 到 250 之间的数字”。我希望我没有混淆任何人。我可能犯了一些错误,我应该指出我对 C 编程非常陌生。
已编辑
我将 if 语句编辑如下:
if (((totalHoursWorked >= 0) && (totalHoursWorked <= 84)) && ((hourlyPayRate >= 0) && (hourlyPayRate <= 250)))
{
totalPay = totalHoursWorked * hourlyPayRate;
}
else if ((totalHoursWorked <= 0) || (totalHoursWorked >= 84))
{
printf("\n\nINVALID!!! Total hours worked MUST be between 0 and 84.\n\n");
printf("Enter total hours worked.\n"
"(Entry must be between 0 and 84): ");
scanf ("%d", &totalHoursWorked);
}
else if ((hourlyPayRate <= 0) || (hourlyPayRate >= 250))
{
printf("\n\nINVALID!!! Hourly pay rate MUST be between 0 and 250.\n\n");
printf("Enter hourly pay rate.\n"
"(Entry must be between 0 and 250): ");
scanf ("%f", &hourlyPayRate);
}
else
{
totalPay = (MAX_HOURS_WORKED * hourlyPayRate) + ((hoursWorked - MAX_HOURS_WORKED) * hourlyPayRate * OVERTIME_HOURS);
}
这是正确的,它会起作用吗?