python 编写一个学生和教师数据输入和输出的程序。学生数据包括编号、姓名、 班号、和成绩;教师的数据含有编号、姓名、职称和部门。要求设计一个person 类,作为学生数据操作类student和教师数据操作类teacher的基类。
时间: 2024-06-10 17:04:25 浏览: 83
python 编写input()和output()函数输入,输出5个学生的数据记录(示例)
好的,我了解了您所说的要求,现在为您介绍一种 Python 编写的学生、教师数据输入和输出的程序。
首先,我们需要定义一个基类为 `Person` 的 Python 类,包含编号、姓名等个人基本信息。然后,我们可以定义两个子类分别为 `Student` 和 `Teacher`,从 `Person` 继承并添加独有的属性,比如 `Student` 还包括班号和成绩,而 `Teacher` 包括职称和所属部门。最后,我们可以编写输入和输出数据的方法,以便对数据进行读写。具体实现如下:
```
class Person(object):
def __init__(self, id, name):
self.id = id
self.name = name
def display(self):
print("ID:", self.id, "Name:", self.name)
class Student(Person):
def __init__(self, id, name, class_no, score):
super().__init__(id, name)
self.class_no = class_no
self.score = score
def display(self):
super().display()
print("Class:", self.class_no, "Score:", self.score)
class Teacher(Person):
def __init__(self, id, name, title, department):
super().__init__(id, name)
self.title = title
self.department = department
def display(self):
super().display()
print("Title:", self.title, "Department:", self.department)
class DataIO(object):
@classmethod
def read(cls, filename):
data_list = []
with open(filename) as f:
lines = f.readlines()
for line in lines:
fields = line.split(",")
if fields[0] == "S":
data = Student(fields[1], fields[2], fields[3], fields[4])
elif fields[0] == "T":
data = Teacher(fields[1], fields[2], fields[3], fields[4])
else:
raise ValueError("Invalid data type")
data_list.append(data)
return data_list
@classmethod
def write(cls, filename, data_list):
with open(filename, "w+") as f:
for data in data_list:
if isinstance(data, Student):
f.write("S,")
f.write("{},{},{},{}\n".format(data.id, data.name, data.class_no, data.score))
elif isinstance(data, Teacher):
f.write("T,")
f.write("{},{},{},{}\n".format(data.id, data.name, data.title, data.department))
else:
raise ValueError("Invalid data type")
```
在上述代码中,我们首先定义了一个基类为 `Person` 的 Python 类,接着定义了两个子类 `Student` 和 `Teacher` 继承自 `Person`,并添加了独有的属性。最后,我们定义了一个 dataIO 类,编写了 read 和 write 方法用于读写数据,这样就能轻松进行数据的输入和输出了。
以下是示例代码演示:
```
students = [Student("001", "Tom", "1", "89"), Student("002", "Jerry", "1", "90")]
teachers = [Teacher("001", "Mrs. White", "Professor", "Math"), Teacher("002", "Mr. Black", "Associate Professor", "English")]
DataIO.write("sample.csv", students + teachers)
loaded_data = DataIO.read("sample.csv")
for data in loaded_data:
data.display()
```
在上述示例中,我们首先创建了一些实例以及数据,然后调用 `DataIO.write()` 方法将数据写入 `sample.csv` 文件,接着读取该文件并将其存储在 `loaded_data` 中,最后调用实例的 `display()` 方法来显示每个实例的详细信息。
希望这个答案能够帮到您,如果您还有其他问题,请继续提问!
阅读全文