class Student():
   def __init__(self, sid, name, gender, height):
     self.sid = sid
     self.name = name
     self.gender = gender
     self.height = height

class SequenceTSet():
   def __init__(self):
     self.TSet = []

   def readFile(self, filname):
     with open(filname, 'r') as f:
       for line in f:
         sid, name, gender, height = line.strip().split()
         self.TSet.append(Student(sid, name, int(gender), float(height)))

   def writeFile(self, filname):
     with open(filname, 'w') as f:
       for student in self.TSet:
         f.write(f"{student.sid}	{student.name}	{student.gender}	{student.height}
")

   def sortAndprint(self,filename):
     sorted_TSet = sorted(self.TSet, key=lambda student: student.height)
     with open(filename, 'w') as f:
       for student in sorted_TSet:
         f.write(f"{student.sid}	{student.name}	{student.gender}	{student.height}
")
     for student in sorted_TSet:
       print(f"{student.sid}	{student.name}	{student.gender}	{student.height}")

   def cntHeight(self, y):
     cnt = 0
     for student in self.TSet:
       if student.height > y:
         cnt += 1
     print(f"There are {cnt} students whose height is greater than {y}.")

   def splitSet(self, x,filename):
     new_TSet = [student for student in self.TSet if student.gender != x]
     self.TSet = new_TSet
     self.writeFile(filename)

   def del(self, sid):
     new_TSet = [student for student in self.TSet if student.sid != sid]
     self.TSet = new_TSet

   def insert(self, hei):
     new_student = Student(str(len(self.TSet) + 1), "New Student", 0, hei)
     self.TSet.append(new_student)
     self.TSet = sorted(self.TSet, key=lambda student: student.height)

TSet = SequenceTSet()
TSet.readFile("student.txt")
TSet.sortAndprint("sorted_student.txt")
TSet.cntHeight(1.7)
TSet.splitSet(1, "student_without_male.txt")
TSet.del("1")
TSet.insert(1.8)
TSet.writeFile("student.txt")

该代码定义了两个类:Student 类用于存储单个学生的信息,SequenceTSet 类用于管理学生信息列表,包括读取、写入、排序、筛选、删除和添加学生等功能。

使用方法:

  1. 确保存在名为 student.txt 的文件,其中包含学生信息,每行信息以空格分隔,分别为学号、姓名、性别(0 代表女性,1 代表男性)、身高。
  2. 运行代码,程序会自动读取 student.txt 文件中的信息,并进行以下操作:
    • 对学生按身高进行升序排序,并将排序后的结果写入 sorted_student.txt 文件。
    • 统计身高大于 1.7 米的学生人数并打印结果。
    • 删除性别为 1 (男性)的学生,并将结果写入 student_without_male.txt 文件。
    • 删除学号为 1 的学生。
    • 添加一个身高为 1.8 米的新学生。
    • 将更新后的学生信息写入 student.txt 文件。

程序功能:

  • readFile: 从文件读取学生信息,并将信息存储到 TSet 列表中。
  • writeFile:TSet 列表中的学生信息写入文件。
  • sortAndprint:TSet 列表中的学生按身高进行升序排序,并将结果打印到控制台和写入文件。
  • cntHeight: 统计 TSet 列表中身高大于指定高度的学生数量。
  • splitSet:TSet 列表中删除指定性别的学生,并将结果写入文件。
  • del:TSet 列表中删除指定学号的学生。
  • insert: 添加一个新学生到 TSet 列表中,并保持列表按身高升序排序。

该代码示例展示了如何使用 Python 类来实现一个简单但功能强大的学生信息管理系统。您可以根据自己的需求进行修改和扩展,例如添加其他功能,例如搜索、统计等。


原文地址: https://www.cveoy.top/t/topic/n30S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录