假设教师工作证包括编号(tchNo)、姓名(name)、性别(sex)、出生年月()、职务()和签发时间();学生证包括编号(stuNo)、姓名(name)、性别(sex)、出生年月()、系别()、入校时间()。请为教师工作证与学生工作证设计一个类结构,尽可能保证代码的重用率,并输出教师工作证和学生工作证信息。
时间: 2023-07-04 08:12:41 浏览: 108
好的,这是一个简单的面向对象编程问题。为了最大化代码重用,我们可以创建一个基类WorkCertificate,然后派生出TeacherCertificate和StudentCertificate类。这些类可以包含相同的属性和方法,但也可以包含一些特定于教师或学生的属性和方法。
下面是一个可能的解决方案:
```python
class WorkCertificate:
def __init__(self, no, name, sex, birthdate, issue_date):
self.no = no
self.name = name
self.sex = sex
self.birthdate = birthdate
self.issue_date = issue_date
def display_info(self):
print("编号:", self.no)
print("姓名:", self.name)
print("性别:", self.sex)
print("出生年月:", self.birthdate)
print("签发时间:", self.issue_date)
class TeacherCertificate(WorkCertificate):
def __init__(self, no, name, sex, birthdate, issue_date, position):
super().__init__(no, name, sex, birthdate, issue_date)
self.position = position
def display_info(self):
super().display_info()
print("职务:", self.position)
class StudentCertificate(WorkCertificate):
def __init__(self, no, name, sex, birthdate, issue_date, department, admission_date):
super().__init__(no, name, sex, birthdate, issue_date)
self.department = department
self.admission_date = admission_date
def display_info(self):
super().display_info()
print("系别:", self.department)
print("入校时间:", self.admission_date)
```
现在我们可以创建一个教师工作证或学生工作证对象,并显示其信息:
```python
# 创建一个教师工作证对象并显示其信息
teacher_cert = TeacherCertificate("001", "张三", "男", "1980-01-01", "2021-01-01", "教授")
teacher_cert.display_info()
# 创建一个学生工作证对象并显示其信息
student_cert = StudentCertificate("1001", "李四", "女", "2000-01-01", "2021-09-01", "计算机科学系", "2020-09-01")
student_cert.display_info()
```
输出:
```
编号: 001
姓名: 张三
性别: 男
出生年月: 1980-01-01
签发时间: 2021-01-01
职务: 教授
编号: 1001
姓名: 李四
性别: 女
出生年月: 2000-01-01
签发时间: 2021-09-01
系别: 计算机科学系
入校时间: 2020-09-01
```
阅读全文