先编写一个日期类Date,包含三个数据成员:Year,Month和day,再编写一个工人类计算工人的总工资,总工资由固定工资、工龄工资和工时工资组成,工人类中设计一个Birthday属性,类型为Data。完成对某个工人总工资及其个人信息的输出(姓名、性别、出生年月日等)。
时间: 2024-12-10 11:28:17 浏览: 30
首先,我们可以创建一个`Date`类,用于存储年份(`year`)、月份(`month`)和日期(`day`),类结构如下:
```java
public class Date {
private int year;
private int month;
private int day;
// 构造函数
public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
// 获取和设置方法
public int getYear() { return year; }
public void setYear(int year) { this.year = year; }
public int getMonth() { return month; }
public void setMonth(int month) { this.month = month; }
public int getDay() { return day; }
public void setDay(int day) { this.day = day; }
// 输出日期
@Override
public String toString() {
return String.format("%d-%02d-%02d", year, month, day);
}
}
```
接下来,我们创建一个`Worker`类,它包括姓名(`name`)、性别(`gender`)、生日(`birthday`,类型为`Date`)以及工资计算相关的属性和方法:
```java
public class Worker {
private String name;
private String gender;
private Date birthday;
private double fixedSalary;
private double senioritySalary;
private double hourlyWage;
// 构造函数和其他getter/setter
// 工资计算方法
public double calculateTotalSalary() {
double total = fixedSalary + senioritySalary * yearsOfService(birthday);
total += hourlyWage * hoursWorked();
return total;
}
// 辅助方法
private double yearsOfService(Date birthday) {
// 计算当前年份与出生年份之间的差值
return java.time.LocalDate.now().getYear() - birthday.getYear();
}
private double hoursWorked() {
// 假设这里是一个简单的示例,实际应用可能需要更复杂的逻辑
return 40; // 每周工作小时数
}
// 输出个人信息
@Override
public String toString() {
return "Name: " + name + ", Gender: " + gender + ", Birthday: " + birthday +
", Total Salary: " + calculateTotalSalary();
}
}
```
现在,你可以实例化一个`Worker`对象并打印其个人信息和总工资:
```java
public static void main(String[] args) {
Worker worker = new Worker("张三", "男", new Date(1990, 1, 1), 5000, 100, 20);
System.out.println(worker);
}
```
阅读全文