Python类练习

这篇博客探讨了如何使用Python设计员工和公司类。员工类包括姓名、年龄、性别、编号、薪资和部门等属性,而公司类包含公司名称及员工信息。公司类功能包括按部门分类员工、获取特定部门员工并按薪资降序排序。
摘要由CSDN通过智能技术生成

题目

设计员工类和公司类。
员工的属性有姓名、年龄、性别、编号、薪资、部门名。
公司的属性有公司名称和员工信息。
公司类中实现按部门名称对员工分类,获取指定部门中的员工信息,并对该部门员工按照薪资降序排序。

代码

# 员工类
class Employee:
    def __init__(self, name, age, sex, eid, sal, dname):
    # 初始化,姓名、年龄、性别、编号、薪资、部门名
        self.name = name
        self.age = age
        self.sex = sex
        self.eid = eid
        self.sal = sal
        self.dname = dname
    # 重写__str__、__repr__方法,由它返回需要对应的信息数据
    def __str__(self):
        return f"(name={self.name}, age={self.age}, sex={self.sex}, eid={self.eid}, sal={self.sal}, dname={self.dname})"
    __repr__ = __str__

# 公司类
class Company:
    def __init__(self, name, employee):
        # 初始化,公司名称和员工信息
        self.name = name
        self.employee = employee
        self.dep = None
    # 员工分类方法
    def classify(self):
        stuff_category = {
   }
        # 以部门名为键,员工信息为值。如果键不存在,创建键值对。若存在,更新键对应的值。
        for person in self<
好的,根据你的要求,我可以帮你创建这两个,并创建数据库表,最后使用MyBatis查询信息。以下是代码示例: 首先是`Employee`和`Company`的定义: ```python class Employee: def __init__(self, name): self.name = name class Company: def __init__(self, id, name): self.id = id self.name = name self.employees = [] ``` 在上面的代码中,我们定义了一个`Employee`和一个`Company`。`Employee`有一个`name`属性,表示员工的姓名。`Company`有一个`id`和一个`name`属性,表示公司的编号和名称,以及一个`employees`属性,用于存储公司的员工。 接下来是创建数据库表的SQL语句: ```sql CREATE TABLE Company ( id INT PRIMARY KEY, name VARCHAR(255) ); CREATE TABLE Employee ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), company_id INT, FOREIGN KEY (company_id) REFERENCES Company(id) ); ``` 在上面的SQL语句中,我们创建了一个`Company`表和一个`Employee`表。`Company`表包含`id`和`name`两个列,`Employee`表包含`id`、`name`和`company_id`三个列。`company_id`列是外键,参考`Company`表的`id`列。 最后是使用MyBatis查询的代码: ```python import mysql.connector import xml.etree.ElementTree as ET # 读取MyBatis的配置文件 tree = ET.parse('mybatis-config.xml') root = tree.getroot() # 连接数据库 db_config = root.find('environments').find('environment').find('dataSource') config = { 'host': db_config.find('property[@name="host"]').get('value'), 'user': db_config.find('property[@name="username"]').get('value'), 'password': db_config.find('property[@name="password"]').get('value'), 'database': db_config.find('property[@name="database"]').get('value') } conn = mysql.connector.connect(**config) # 查询id为1的公司信息 cursor = conn.cursor() cursor.execute('SELECT * FROM Company WHERE id=%s', (1,)) company_data = cursor.fetchone() company = Company(company_data[0], company_data[1]) cursor.execute('SELECT * FROM Employee WHERE company_id=%s', (1,)) employee_data = cursor.fetchall() for employee_row in employee_data: employee = Employee(employee_row[1]) company.employees.append(employee) print("Company name:", company.name) print("Employees:") for employee in company.employees: print(employee.name) # 关闭数据库连接 cursor.close() conn.close() ``` 在上面的代码中,我们首先读取了MyBatis的配置文件,并使用其中的信息连接到MySQL数据库。然后,我们执行了两个SQL查询语句,分别查询`Company`表和`Employee`表中与id为1的公司有关的数据。接下来,我们创建了一个`Company`对象,并将查询结果中的数据填充到对象中。最后,我们打印了公司信息和所有员工的姓名。 需要注意的是,我们使用了`fetchone()`方法获取查询结果中的第一行数据,因为我们只查询了一条记录。如果查询结果包含多条记录,可以使用`fetchall()`方法获取所有查询结果。同时,我们还使用了`AUTO_INCREMENT`关键字来指定`Employee`表中的`id`列自增长,以便每个员工都有一个唯一的编号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值