BUPT_HUSTOJ_1060

news/2024/11/24 21:33:06/

持续更新,敬请关注!

问题 A: 雇员类

      • 题目描述
      • 输入
      • 输出
  • 代码

题目描述

定义下述5个类, 其中SalaridEmployee, HourlyEmployee, CommisionEmployee 继承自Employee,basePlusCommisionEmployee继承自 CommisionEmployee。
类属性如下:
Employee: firstName,lastName,socialSecurityNumber
SalaridEmployee: weeklySalary(周薪)
HourlyEmployee: wage(每小时的工钱),hours(月工作小时数)
CommisionEmployee: grossSales(销售额),commissionRate(提成比率)
basePlusCommisionEmployee: baseSalary(月基本工资)

Employee类中定义了抽象方法earning,用于计算员工的月工资。
SalaridEmployee月工资计算为:weeklySalary4
HourlyEmployee月工资计算为:wage
hours
CommisionEmployee月工资计算为:grossSalescommissionRate
basePlusCommisionEmployee月工资计算为:grossSales
commissionRate+baseSalary
类还应该包括构造方法,toString方法,属性的get/set方法。
firstName,lastName,socialSecurityNumber的初始化在构造方法中完成。其中对firstName,lastName也要提供get/set方法,对socialSecurityNumber只提供get方法。
其他属性要提供get和set方法。

类中用到的数值建议用double存储。

在Main类中利用这5个类完成相应查询要求。

输入

第一行为一个整数n(0<n<=100),代表共n个雇员。后边是n行,每行一个雇员的数据,数据格式见样例。其中0表示SalaridEmployee,1表示HourlyEmployee,2表示CommissionEmployee,3表示basePlusCommisionEmployee。紧跟着的三个字符串依次代表firstName,lastName,socialSecurityNumber。后边的数字,如果是SalaridEmployee则代表周薪,如果是HourlyEmployee,则依次代表wage,hours,如果是CommissionEmployee则依次代表grossSales,commissionRate,如果是basePlusCommisionEmployee则依次代表grossSales,commissionRate,baseSalary。
这n行后的第一行为一个整数,m(0<m<100),代表测试用例条数。后边为m行,每行一条测试用例,数据格式见样例。其中0代表根据firstName(其后边跟的即为firstName)),1代表根据socialSecurityNumber查询(其后边跟的即为firstName)。

样例:

4
0 Ai Meng 2012673901 4312
1 NanXiong Qimu 2016782340 15.2 200
2 Guo Yang 2017672347 46781.3 0.1
3 Rong Huang 2018768901 7854.4 0.28 7098
4
0 Ai
1 2016782340
1 2018768901
0 Guo

输出

若干行,每行表示一个雇员的信息。具体格式见样例(注意各类数据之间都有一个空格)。建议依次调用对象的toString方法输出对象的信息,调用earning方法来输出对象的月工资。
如果一条查询有多条结果(firstName有可能相同),则按月工资从低到高的顺序输出。

java.lang包有一个接口叫Comparable,该接口只有一个方法,即int compareTo(T o)方法;如果我们在自己的类(比如Employee)中实现该接口,那么就可以使用使用Arrays.sort()方法对Employee类的数组进行排序。
int compareTo(T o)方法:
如: obj1.compareTo(obj2):obj1小于、等于、大于obj2时,分别返回负整数、零、正整数。

样例:

firstName:Ai; lastName:Meng; socialSecurityNumber:2012673901; earning:17248.00
firstName:NanXiong; lastName:Qimu; socialSecurityNumber:2016782340; earning:3040.00
firstName:Rong; lastName:Huang; socialSecurityNumber:2018768901; earning:9297.23
firstName:Guo; lastName:Yang; socialSecurityNumber:2017672347; earning:4678.13

代码

import java.util.Arrays;
import java.util.Scanner;
abstract class Employee
{String firstName,lastName,socialSecurityNumber;double weeklySalary,wage,hours,grossSales,commissionRate,baseSalary;int n;public Employee(int n, String firstName, String lastName, String socialSecurityNumber){this.n = n;this.firstName = firstName;this.lastName = lastName;this.socialSecurityNumber = socialSecurityNumber;}public String getfirstName(){return firstName;}public void setfirstName(String firstName){this.firstName = firstName;}public String getlastName(){return lastName;}public void setlastName(String lastName){this.lastName = lastName;}public String getsocialSecurityNumber(){return socialSecurityNumber;}public  abstract double earning();public String toString(){return "firstName:"+firstName+"; lastName:"+lastName+"; socialSecurityNumber:"+socialSecurityNumber+"; earning:";}
}
class SalaridEmployee extends Employee
{double weeklySarlary;public SalaridEmployee(int n,String firstName,String lastName,String socialSecurityNumber, double weeklySarlary){super(n, firstName, lastName, socialSecurityNumber);this.weeklySarlary=weeklySarlary;}public double earning(){return weeklySarlary*4;//System.out.println(super.toString()+String.format("%.2f", weeklySarlary));}
}
class HourlyEmployee extends Employee
{double wage, hours;public HourlyEmployee(int n, String firstName, String lastName, String socialSecurityNumber, double wage, double hours){super(n, firstName, lastName, socialSecurityNumber);this.wage = wage;this.hours = hours;}public double earning(){return  wage*hours;//System.out.println(super.toString() + String.format("%.2f",wage*hours));}
}
class CommisionEmployee extends Employee
{double grossSales, commissionRate;public CommisionEmployee(int n, String firstName, String lastName, String socialSecurityNumber, double grossSales, double commissionRate){super(n, firstName, lastName, socialSecurityNumber);this.grossSales = grossSales;this.commissionRate = commissionRate;}public double earning(){return grossSales*commissionRate;//System.out.println(super.toString() + String.format("%.2f",grossSales*commissionRate));}
}
class basePlusCommisionEmployee extends CommisionEmployee
{double baseSalary;public basePlusCommisionEmployee(int n, String firstName, String lastName, String socialSecurityNumber, double grossSales, double commissionRate, double baseSalary){super(n, firstName, lastName, socialSecurityNumber, grossSales, commissionRate);this.baseSalary = baseSalary;}public double earning(){double bCE_money=(grossSales*commissionRate+baseSalary);return bCE_money;//System.out.println(super.toString() + String.format("%.2f",bCE_money));}
}
public class Main{public static void main(String args[]){int m;Scanner in = new Scanner(System.in);String str,sss,mm;int i=0;mm=in.nextLine();m=Integer.parseInt(mm);Employee [] emp=new Employee[m];for(int j=m;j>=1;j--){str = in.nextLine();String[] s = str.split(" ");String str1 = s[0];int num = Integer.parseInt(str1);double money=Double.parseDouble(s[4]);if(num==0){emp[i] = new SalaridEmployee(m, s[1], s[2], s[3], money);//p[i].earning();i=i+1;}if(num==1){double a=Double.parseDouble(s[5]);emp[i] = new HourlyEmployee(m, s[1], s[2], s[3], money,a);//people1.earning();i=i+1;}if(num==2){double b=Double.parseDouble(s[5]);emp[i] = new CommisionEmployee(m, s[1], s[2], s[3], money,b);//people2.earning();i=i+1;}if(num==3){double c=Double.parseDouble(s[5]);double d=Double.parseDouble(s[6]);emp[i]  = new basePlusCommisionEmployee(m, s[1], s[2], s[3], money,c,d);//people3.earning();i=i+1;}}	Arrays.sort(emp,(first,second)->(int)(first.earning()-second.earning()));String pp=in.nextLine();for(int p=Integer.parseInt(pp);p>=1;p--){sss=in.nextLine();String []s1=sss.split(" ");String sss1=s1[0];int num1=Integer.parseInt(sss1);if(num1==1){for(int j=0;j<=i-1;j++){if(s1[1].equals(emp[j].socialSecurityNumber)){emp[j].earning();System.out.println(emp[j].toString() + String.format("%.2f",emp[j].earning()));break;}}}else{for(int k=0;k<=i-1;k++){if(s1[1].equals(emp[k].firstName)){emp[k].earning();System.out.println(emp[k].toString() + String.format("%.2f",emp[k].earning()));}}}}in.close();}
}

冲!


http://www.ppmy.cn/news/224632.html

相关文章

【ZZULIOJ】1060: 逆序数字

ZZULIOJ题解 1060: 逆序数字 题目描述 输入一个正整数&#xff0c;将其逆序输出&#xff0c;每个数字后有一个空格。 输入 输入一个正整数n&#xff0c;你可以假设n在int范围内 输出 将n按其逆序输出&#xff0c;每个数字后有一个空格&#xff0c;输出占一行。例如&#xff0c…

1060 6g

1060 显存:800 功耗:80 算力:22

1060显卡支持dx12吗_真香!1060显卡支持光线追踪技术

年初,老黄在CES展英伟达发布会的时候正式发布了支持光线追踪技术的RTX游戏显卡, 发布后RTX2060显卡瞬间被媒体贴上新一代甜品卡的标签,而原先称霸了两年多的甜品级显卡GTX1060甚至有跌下神坛的态势。 但就在前不久,老黄又在GTC大会上宣布,部分GTX显卡也支持光线追踪技术了…

TDEngine3.0 环境安装、配置及使用经验总结

TDEngine3.0 环境安装、配置及使用经验总结 一、TDengine 介绍二、TDengine的下载三、TDengine Server安装及配置3.1 安装3.2 taos的参数配置3.3 启动3.4 taosAdapter 四、TDengine Client 安装4.1 linux客户端安装4.2 windows客户端安装 五、TDEngine3.x的使用总结 一、TDengi…

Halcon得出三角形内切圆

Halcon得出三角形内切圆 news2023/5/27 7:14: 目录 一、得出三角形的三个角点二、用类似尺规作图法得出三角形圆心 1、以三角形三角点画出圆形轮廓2、求出三角形轮廓与圆形轮廓之间的交点3、获得角平分线&#xff0c;三边角平分线交点为圆心三、求出圆心到边最短距离即半径 …

Bert+FGSM/PGD实现中文文本分类(Loss=0.5L1+0.5L2)

任务目标&#xff1a;在使用FGSM/PGD来训练Bert模型进行文本分类&#xff0c;其实现原理可以简单概括为以下几个步骤&#xff1a; 对原始文本每个词转换为对应的嵌入向量。将每个嵌入向量与一个小的扰动向量相加&#xff0c;从而生成对抗样本。这个扰动向量的大小可以通过一个超…

企企通×天能股份SRM一期项目成功上线,持续深化企业采购数字化

近期&#xff0c;企企通凭借在赋能客户数字化转型方面的优秀实践与丰富的解决方案&#xff0c;荣获天能电池集团股份有限公司&#xff08;以下简称“天能股份”&#xff09;颁发的“2022年度数字化优秀供应商奖”&#xff0c;同时&#xff0c;企企通SRM项目还获得天能股份采购管…

实战:Spring Cloud Stream消息驱动框架整合rabbitMq

文章目录 前言Spring Cloud Stream简析Spring Cloud Stream与rabbitmq整合1、添加pom依赖2、application.yml增加mq配置3、定义输入输出信道4、使用输入输出信道收发消息5、模拟正常消息消费6、模拟异常消息 前言 相信很多同学都开发过WEB服务&#xff0c;在WEB服务的开发中一…