为trainee类创建属性
时间: 2023-05-18 18:02:36 浏览: 34
非常感谢您的提问。为trainee类创建属性的代码如下:
class Trainee:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
在这个代码中,我们创建了一个名为Trainee的类,它有三个属性:name、age和gender。在类的初始化方法__init__中,我们将这些属性赋值给传入的参数。这样,我们就可以创建一个trainee对象,并设置它的属性。
相关问题
3)创建上述数据库,并插入数据。 (4)用T-SQL语句为部门表创建一个DELETE类型的触发器DEL_COUNT,删除数据时,显示删除元组的个数。 (5)如果删除员工表中的某一元组,因为涉及与部门表的外键联系,需要创建员工表的INSTEAD OF触发器,使得在删除员工表元组前,必须先删除表中外键联系的元组。 (6)把实习生的姓名和所在部门名称定义为一个视图。 (7)查询“教务系统”项目组负责人姓名。 (8)查询每个部门的实习生的人数。 (9)查询各个实习生所参加的项目名称,并按照项目名称排序。
由于没有提供数据,我只能给出创建表和视图的 SQL 语句以及查询语句的大致思路,具体实现可能需要根据实际数据稍作修改。
1. 创建表的 SQL 语句:
```sql
CREATE TABLE Department (
dno CHAR(9) PRIMARY KEY,
dname CHAR(9),
daddress CHAR(50),
mno CHAR(9),
CONSTRAINT c1 FOREIGN KEY (mno) REFERENCES Employee (eno)
);
CREATE TABLE Employee (
eno CHAR(9) PRIMARY KEY,
ename CHAR(9),
elevel INT,
dno CHAR(9),
FOREIGN KEY (dno) REFERENCES Department (dno)
);
CREATE TABLE Trainee (
tno CHAR(9) PRIMARY KEY,
tname CHAR(9),
tage INT,
dno CHAR(9),
FOREIGN KEY (dno) REFERENCES Department (dno)
);
CREATE TABLE Project (
pno CHAR(9) PRIMARY KEY,
pname CHAR(50),
start_time DATETIME,
terminal_time DATETIME,
rno CHAR(9),
FOREIGN KEY (rno) REFERENCES Employee (eno)
);
CREATE TABLE Trainee_participate (
tno CHAR(9),
pno CHAR(9),
FOREIGN KEY (tno) REFERENCES Trainee (tno),
FOREIGN KEY (pno) REFERENCES Project (pno)
);
CREATE TABLE Employee_participate (
eno CHAR(9),
pno CHAR(9),
time_rate FLOAT,
FOREIGN KEY (eno) REFERENCES Employee (eno),
FOREIGN KEY (pno) REFERENCES Project (pno)
);
```
2. 插入数据的 SQL 语句:
```sql
-- 待插入数据
```
3. 创建触发器的 SQL 语句:
```sql
-- 创建部门表的 DELETE 类型触发器 DEL_COUNT
CREATE TRIGGER DEL_COUNT
ON Department
FOR DELETE
AS
BEGIN
DECLARE @count INT
SELECT @count = COUNT(*) FROM deleted
PRINT CONCAT('Deleted ', CAST(@count AS VARCHAR), ' rows.')
END
```
4. 创建视图的 SQL 语句:
```sql
CREATE VIEW TraineeDepartmentView AS
SELECT Trainee.tname, Department.dname
FROM Trainee
INNER JOIN Department ON Trainee.dno = Department.dno;
```
5. 查询语句:
- 查询“教务系统”项目组负责人姓名
```sql
SELECT Employee.ename
FROM Employee
INNER JOIN Project ON Employee.eno = Project.rno
WHERE Project.pname = '教务系统';
```
- 查询每个部门的实习生的人数
```sql
SELECT Department.dname, COUNT(Trainee.tno) AS trainee_count
FROM Department
LEFT JOIN Trainee ON Department.dno = Trainee.dno
GROUP BY Department.dname;
```
- 查询各个实习生所参加的项目名称,并按照项目名称排序
```sql
SELECT Trainee.tname, Project.pname
FROM Trainee_participate
INNER JOIN Trainee ON Trainee_participate.tno = Trainee.tno
INNER JOIN Project ON Trainee_participate.pno = Project.pno
ORDER BY Project.pname;
```
某企业对员工每月工资的计算规定如下:固定工资+绩校补贴。 高级工程师的固定工资为5000元,每次加班补贴50元。 初级工程师的固定工资为3000元,每次加班补贴30元。 学员的固定工资为2000元,每次加班补贴20元。 要求:定义员工抽象类,派生不同级别的员工类,用java编写一个程序求若干个员工的月工资。
已经给出了题目所需的抽象类和不同级别员工的派生类,只需要在Main类中创建员工对象数组和加班时间数组,通过循环计算每个员工的月工资并输出即可。
下面是完整的程序代码:
```
public abstract class Employee {
protected String name; // 姓名
protected double fixedSalary; // 固定工资
public Employee(String name, double fixedSalary) {
this.name = name;
this.fixedSalary = fixedSalary;
}
// 计算月工资的抽象方法
public abstract double calculateSalary(int overtime);
}
public class SeniorEngineer extends Employee {
private static final double OVERTIME_SUBSIDY = 50.0;
public SeniorEngineer(String name) {
super(name, 5000.0);
}
@Override
public double calculateSalary(int overtime) {
return fixedSalary + overtime * OVERTIME_SUBSIDY;
}
}
public class JuniorEngineer extends Employee {
private static final double OVERTIME_SUBSIDY = 30.0;
public JuniorEngineer(String name) {
super(name, 3000.0);
}
@Override
public double calculateSalary(int overtime) {
return fixedSalary + overtime * OVERTIME_SUBSIDY;
}
}
public class Trainee extends Employee {
private static final double OVERTIME_SUBSIDY = 20.0;
public Trainee(String name) {
super(name, 2000.0);
}
@Override
public double calculateSalary(int overtime) {
return fixedSalary + overtime * OVERTIME_SUBSIDY;
}
}
public class Main {
public static void main(String[] args) {
Employee[] employees = {
new SeniorEngineer("张三"),
new JuniorEngineer("李四"),
new Trainee("王五")
};
int[] overtimes = {10, 20, 30};
for (int i = 0; i < employees.length; i++) {
double salary = employees[i].calculateSalary(overtimes[i]);
System.out.println(String.format("%s的月工资为:%.2f元", employees[i].name, salary));
}
}
}
```
输出结果为:
```
张三的月工资为:5500.00元
李四的月工资为:3600.00元
王五的月工资为:2600.00元
```