试设计一学生信息管理系统,使之能提供以下功能 1. 系统以菜单方式工作 2学生信息录入功能(学生信息用文件保存)一输入 3. 学生信息浏览功能一输出 4. 查询,排序功能一算法 5. 按号查询 6. 按姓名查询 7. 按成绩查询 8. 学生信息的删除与修改(可选项)
时间: 2024-03-20 16:41:15 浏览: 48
好的,这个系统可以使用面向对象编程的方式实现。我们需要设计以下几个类:
1. 学生类(Student):包含学生的学号、姓名、性别、年龄、成绩等属性。同时需要实现学生信息的录入、浏览、查询、排序、删除和修改等操作方法。
2. 学生管理类(StudentManager):负责管理所有学生对象,包含学生的增删改查等操作方法。
3. 用户界面类(UserInterface):提供用户界面,接收用户输入,并调用学生管理类的相关方法进行操作。
下面是一个简单的实现示例:
```python
class Student:
def __init__(self, id, name, gender, age, score):
self.id = id
self.name = name
self.gender = gender
self.age = age
self.score = score
def __str__(self):
return f"{self.id}\t{self.name}\t{self.gender}\t{self.age}\t{self.score}"
class StudentManager:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def remove_student(self, student):
self.students.remove(student)
def find_student_by_id(self, id):
for student in self.students:
if student.id == id:
return student
return None
def find_student_by_name(self, name):
result = []
for student in self.students:
if student.name == name:
result.append(student)
return result
def find_student_by_score(self, score):
result = []
for student in self.students:
if student.score == score:
result.append(student)
return result
def sort_students_by_score(self):
self.students.sort(key=lambda student: student.score, reverse=True)
def list_students(self):
for student in self.students:
print(student)
def load_students(self, filename):
with open(filename, "r") as f:
for line in f:
parts = line.strip().split("\t")
id = parts[0]
name = parts[1]
gender = parts[2]
age = int(parts[3])
score = int(parts[4])
student = Student(id, name, gender, age, score)
self.add_student(student)
def save_students(self, filename):
with open(filename, "w") as f:
for student in self.students:
f.write(str(student) + "\n")
class UserInterface:
def __init__(self):
self.manager = StudentManager()
def run(self):
while True:
print("1.学生信息录入\n2.学生信息浏览\n3.查询学生\n4.按成绩排序\n5.按号查询\n6.按姓名查询\n7.按成绩查询\n8.学生信息删除与修改\n9.保存学生信息\n10.退出")
choice = input("请选择操作:")
if choice == "1":
id = input("请输入学号:")
name = input("请输入姓名:")
gender = input("请输入性别:")
age = input("请输入年龄:")
score = input("请输入成绩:")
student = Student(id, name, gender, age, score)
self.manager.add_student(student)
print("学生信息录入成功")
elif choice == "2":
self.manager.list_students()
elif choice == "3":
sub_choice = input("请选择查询方式:1.按号查询 2.按姓名查询 3.按成绩查询")
if sub_choice == "1":
id = input("请输入学号:")
student = self.manager.find_student_by_id(id)
if student:
print(student)
else:
print("学生不存在")
elif sub_choice == "2":
name = input("请输入姓名:")
students = self.manager.find_student_by_name(name)
if students:
for student in students:
print(student)
else:
print("学生不存在")
elif sub_choice == "3":
score = input("请输入成绩:")
students = self.manager.find_student_by_score(score)
if students:
for student in students:
print(student)
else:
print("学生不存在")
else:
print("无效操作")
elif choice == "4":
self.manager.sort_students_by_score()
print("学生信息排序成功")
elif choice == "5":
id = input("请输入学号:")
student = self.manager.find_student_by_id(id)
if student:
print(student)
sub_choice = input("请选择操作:1.删除 2.修改")
if sub_choice == "1":
self.manager.remove_student(student)
print("学生信息删除成功")
elif sub_choice == "2":
name = input("请输入姓名:")
gender = input("请输入性别:")
age = input("请输入年龄:")
score = input("请输入成绩:")
student.name = name
student.gender = gender
student.age = age
student.score = score
print("学生信息修改成功")
else:
print("无效操作")
else:
print("学生不存在")
elif choice == "6":
name = input("请输入姓名:")
students = self.manager.find_student_by_name(name)
if students:
for student in students:
print(student)
sub_choice = input("请选择操作:1.删除 2.修改")
if sub_choice == "1":
for student in students:
self.manager.remove_student(student)
print("学生信息删除成功")
elif sub_choice == "2":
gender = input("请输入性别:")
age = input("请输入年龄:")
score = input("请输入成绩:")
for student in students:
student.gender = gender
student.age = age
student.score = score
print("学生信息修改成功")
else:
print("无效操作")
else:
print("学生不存在")
elif choice == "7":
score = input("请输入成绩:")
students = self.manager.find_student_by_score(score)
if students:
for student in students:
print(student)
sub_choice = input("请选择操作:1.删除 2.修改")
if sub_choice == "1":
for student in students:
self.manager.remove_student(student)
print("学生信息删除成功")
elif sub_choice == "2":
name = input("请输入姓名:")
gender = input("请输入性别:")
age = input("请输入年龄:")
for student in students:
student.name = name
student.gender = gender
student.age = age
print("学生信息修改成功")
else:
print("无效操作")
else:
print("学生不存在")
elif choice == "8":
id = input("请输入学号:")
student = self.manager.find_student_by_id(id)
if student:
sub_choice = input("请选择操作:1.删除 2.修改")
if sub_choice == "1":
self.manager.remove_student(student)
print("学生信息删除成功")
elif sub_choice == "2":
name = input("请输入姓名:")
gender = input("请输入性别:")
age = input("请输入年龄:")
score = input("请输入成绩:")
student.name = name
student.gender = gender
student.age = age
student.score = score
print("学生信息修改成功")
else:
print("无效操作")
else:
print("学生不存在")
elif choice == "9":
filename = input("请输入文件名:")
self.manager.save_students(filename)
print("学生信息保存成功")
elif choice == "10":
break
else:
print("无效操作")
if __name__ == "__main__":
ui = UserInterface()
filename = input("请输入学生信息文件名:")
ui.manager.load_students(filename)
ui.run()
```
在这个程序中,我们定义了一个Student类来表示学生对象,一个StudentManager类来管理所有学生对象,以及一个UserInterface来提供用户界面。用户可以通过输入数字选择需要执行的操作,比如学生信息的录入、浏览、查询、排序、删除和修改等。程序会根据用户的选择调用相应的方法来执行操作,并可以将学生信息保存到文件中。