第一题
某企业年底根据当年的利润提成发放奖金。利润低于或等于10万元时,按10%提成;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,超出10万元的部分按7.5%提成;利润高于20万时,20万部分按照以上规则计算,超出20万元的部分按5%提成。从键盘输入当年利润值,根据输入值计算出应发放奖金的数额?
1.1流程图参考:
1.2代码实现如下:(仅参考)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//profit代表输入的利润,bonus代表奖金额
double profit = 0, bonus = 0;
System.out.print("请输入本年利润(万):");
Scanner sc = new Scanner(System.in);
profit = sc.nextDouble();
if(profit < 0) {
System.out.print("输入本年利润数据错误,请重新输入:");
profit = sc.nextDouble();
}
if (profit > 0 && profit <= 10) {
bonus= profit*0.1;
} else if (profit > 10 && profit <= 20) {
bonus = 10*0.1 + (profit - 10)*0.075;
} else {
bonus = 10*0.1+10*0.175+(profit - 20)*0.05;
}
System.out.println("应发放的奖金额为:" + bonus+ "万");
}
}
1.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入负数值-3 | 提示输入的数据有误,重新输入 |
2、输入1-10的值:6 | 输出结果0.6万 |
3、输入11-20的值:15 | 输出结果:1.375万 |
4、输入大于20的值:30 | 输出结果:3.25万 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。
第二题
某学院的学生会部门需要根据课程的平均值考核,每个学生有5门课程,平均值超过90分的等级为优,80-90之间为良,70-80之间为中,60-70之间为及格,60分以下为不及格。要求:5门课程的成绩从键盘依次输入,根据平均值的结果进行判定后,输出等级结果。
2.1流程图参考:
2.2参考代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//average代表5门课的平均值,score代表每门课的成绩,sum代码5门课成绩的总和
double average = 0;
int sum=0,score=0;
System.out.println("请输入5门课的成绩:");
for(int i=1;i<=5;i++) {
System.out.print("请输入第"+i+"门课的成绩:");
Scanner sc = new Scanner(System.in);
score = sc.nextInt();
sum+=score;
}
average=sum/5;
System.out.print("该同学的等级为:");
switch((int)average/10) {
case 9:System.out.println("优"); break;
case 8:System.out.println("良"); break;
case 7:System.out.println("中");break;
case 6:System.out.println("及格");break;
default:System.out.println("不及格");
}
}
}
2.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入98、95、96、97、92 | 输出等级优 |
2、输入87、86、84、82、83 | 输出等级良 |
3、输入76、72、74、78、71 | 输出等级中 |
4、输入65、63、67、64、61 | 输出等级差 |
5、输入54、34、23、43、52 | 输出等级不及格 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。
第三题
某公司制定出一套加班超时费用计算规则如下:每月标准上班时间是160小时,每小时工资是30元。如果上班时间在160-200小时之间,超出部分每小时按1.5倍工资发放;如果上班时间在200小时以上,200小时以内按照以上规则计算,超出200小时部分按2倍工资发放。从键盘输入员工的工作时间值,根据输入的值计算出本员工应发放的工资。
3.1流程图参考:
3.2参考代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//salary代表应发工资,time代表工作时间
double time = 0,salary = 0;
System.out.print("请输入员工的工作时间(小时):");
Scanner sc = new Scanner(System.in);
time = sc.nextDouble();
if(time < 0) {
System.out.print("输入时间数据错误,请重新输入:");
time = sc.nextDouble();
}
if (time > 0 && time <= 160) {
salary= time *30;
} else if (time > 160 && time <= 200) {
salary = 160*30 + (time - 160)*30*1.5;
} else {
salary = 160*30 + 40*30*1.5+(time - 200)*30*2;
}
System.out.println("本员工应发工资为:" + salary);
}
}
3.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入的时间为负数:-8 | 提示错误,重新输入 |
2、输入150 | 输出4500 |
3、输入180 | 输出5700 |
4、输入220 | 输出7800 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。
第四题
某公司对一批新入职的员工进行6个月的考核,每个月部门经理根据出勤和工作表现进行打分,最后根据6个月的平均值进行排名划分等级择优录取,如果平均值超过90分的等级为优秀,80-90之间为良好,70-80之间为中等,60-70之间为合格,60分以下为不合格。要求:6个月的考核成绩从键盘依次输入,根据平均值的结果进行判定后,输出等级结果。
4.1流程图参考:
4.2参考代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//score代表每个月的考核成绩,average代表6个月考核的平均值,sum代表总分值
double average = 0;
int sum=0,score=0;
System.out.println("请依次输入6个月的考核成绩:");
for(int i=1;i<=6;i++) {
System.out.print("请输入第"+i+"个月的成绩:");
Scanner sc = new Scanner(System.in);
score = sc.nextInt();
sum+=score;
}
average=sum/6;
System.out.print("该员工的考核等级为:");
switch((int)average/10) {
case 9:System.out.println("优秀"); break;
case 8:System.out.println("良好"); break;
case 7:System.out.println("中等");break;
case 6:System.out.println("合格");break;
default:System.out.println("不合格");
}
}
}
2.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入98、95、96、97、92 | 输出等级优秀 |
2、输入87、86、84、82、83 | 输出等级良好 |
3、输入76、72、74、78、71 | 输出等级中等 |
4、输入65、63、67、64、61 | 输出等级合格 |
5、输入54、34、23、43、52 | 输出等级不合格 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。
第五题
某银行整存整取不同期限的利率描述如下:
某银行整存整取不同期限的月息利率规则如下:
月利率 | 年限 |
0.315% | 一年 |
0.330% | 两年 |
0.345% | 三年 |
0.375% | 五年 |
0.420% | 八年 |
要求:从键盘输入存款的本金和年限,显示出用户到期时能从银行得到的本金和利息的合计金额。
5.1流程图参考:
5.2参考代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//money代表本金,rate代表月利率,total代表本金合计,year代表年限
double money,rate,total;
int year;
System.out.println("请输入本金:");
Scanner sc = new Scanner(System.in);
money=sc.nextDouble();
System.out.println("请输入年限:");
Scanner sc_year = new Scanner(System.in);
year=sc_year.nextInt();
if(year==1) rate=0.00315; /* 根据年限确定利率*/
else if(year==2)rate=0.00330;
else if(year==3) rate=0.00345;
else if(year==5) rate=0.00375;
else if(year==8) rate=0.00420;
else rate=0.0;
total=money + money * rate * 12 * year; /* 计算到期的本利合计*/
System.out.println("本金合计为:"+total);
}
}
5.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入:本金10000,年限:1 | 输出:10378.0 |
2、输入:本金10000,年限:2 | 输出:10792.0 |
3、输入:本金30000,年限:3 | 输出:33726.0 |
4、输入:本金30000,年限:5 | 输出:36750.0 |
5、输入:本金50000,年限:8 | 输出:70160.0 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。
第六题
某公司对员工按工时发放工资描述如下:
某公司每月按照员工工作时长发工资,本单位规定员工的基本工作量为160小时/月,工资计算方法为:时长小于等于160小时,每小时按30元计算;时长小于等于200小时,超出部分按照每小时35元计算;时长超出200小时,200小时以内按照以上规则计算,超出200小时部分按照每小时40元计算。要求:从键盘输入员工的工作时间值,根据输入的值计算出本员工应发放的工资。
6.1流程图参考:
6.2参考代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//salary代表应发工资,time代表工作时间
double time = 0,salary = 0;
System.out.print("请输入员工的工作时间(小时):");
Scanner sc = new Scanner(System.in);
time = sc.nextDouble();
if(time < 0) {
System.out.print("输入时间数据错误,请重新输入:");
time = sc.nextDouble();
}
if (time > 0 && time <= 160) {
salary= time *30;
} else if (time > 160 && time <= 200) {
salary = 160*30 + (time - 160)*35;
} else {
salary = 160*30 + 40*35+(time - 200)*40;
}
System.out.println("本员工应发工资为:" + salary);
}
}
2.3测试用例:(其他合理数据均给分)
用例 | 预期结果 |
1、输入的时间为负数:-8 | 提示错误,重新输入 |
2、输入140 | 输出4200 |
3、输入160 | 输出4800 |
4、输入190 | 输出5850 |
5、输入200 | 输出6200 |
6、输入230 | 输出7400 |
设计的测试用例覆盖全面,经过输入测试,达到预期效果。