编写一个学生管理系统,该系统可实现学生信息的注册、查询、删除、修改、退出系统功能。学生信息至少包含:姓名、年龄、学号,除此以外可以适当添加。 设计要求: 1)定义学生类,对学生的属性信息、方法信息进行封装。 2)使用列表存储学生信息。 3)实现对数据的增、删、改、查。 4)要求关键代码有注释。每个函数的声明前加上注释, 描述该函数的功能和用途;类和对象有属性注释、方法注释。 5)代码中建议做异常处理。
时间: 2023-08-11 14:06:25 浏览: 127
好的,您的问题是如何编写一个学生管理系统,下面是我的回答:
首先,我们需要定义一个学生类,包含姓名、年龄、学号等属性,然后对这些属性进行封装,以保证数据的安全性。接着,我们使用列表来存储学生信息。
在类中,我们需要定义一些方法,用于对学生信息进行增、删、改、查等操作。具体实现方法如下:
```python
class Student:
def __init__(self, name, age, student_id):
self.name = name
self.age = age
self.student_id = student_id
def set_name(self, name):
self.name = name
def set_age(self, age):
self.age = age
def set_student_id(self, student_id):
self.student_id = student_id
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_student_id(self):
return self.student_id
class StudentManager:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def delete_student(self, student_id):
for student in self.students:
if student.get_student_id() == student_id:
self.students.remove(student)
return True
return False
def modify_student(self, student_id, name=None, age=None):
for student in self.students:
if student.get_student_id() == student_id:
if name:
student.set_name(name)
if age:
student.set_age(age)
return True
return False
def search_student(self, student_id):
for student in self.students:
if student.get_student_id() == student_id:
return student
return None
```
上述代码定义了一个学生类和一个学生管理类,学生类中封装了姓名、年龄、学号等属性和对应的 get 和 set 方法,学生管理类中实现了添加、删除、修改、查询学生信息的方法。
对于异常处理,我们可以在方法中加入 try-except 语句,捕获可能出现的异常并进行处理。例如,在添加学生信息时,可能会出现学号重复的情况,此时我们可以抛出一个自定义的异常 StudentIDError,并在主程序中进行捕获和处理。
完整代码如下:
```python
class Student:
def __init__(self, name, age, student_id):
self.name = name
self.age = age
self.student_id = student_id
def set_name(self, name):
self.name = name
def set_age(self, age):
self.age = age
def set_student_id(self, student_id):
self.student_id = student_id
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_student_id(self):
return self.student_id
class StudentIDError(Exception):
pass
class StudentManager:
def __init__(self):
self.students = []
def add_student(self, student):
try:
for s in self.students:
if s.get_student_id() == student.get_student_id():
raise StudentIDError("学号重复")
self.students.append(student)
print("添加成功")
except StudentIDError as e:
print(e)
def delete_student(self, student_id):
for student in self.students:
if student.get_student_id() == student_id:
self.students.remove(student)
print("删除成功")
return True
print("学号不存在")
return False
def modify_student(self, student_id, name=None, age=None):
for student in self.students:
if student.get_student_id() == student_id:
if name:
student.set_name(name)
if age:
student.set_age(age)
print("修改成功")
return True
print("学号不存在")
return False
def search_student(self, student_id):
for student in self.students:
if student.get_student_id() == student_id:
print(f"姓名:{student.get_name()},年龄:{student.get_age()}")
return student
print("学号不存在")
return None
def main():
manager = StudentManager()
while True:
print("=" * 30)
print("学生管理系统")
print("1. 添加学生")
print("2. 删除学生")
print("3. 修改学生信息")
print("4. 查询学生信息")
print("5. 退出系统")
print("=" * 30)
choice = input("请输入你的选择:")
if choice == "1":
name = input("请输入姓名:")
age = input("请输入年龄:")
student_id = input("请输入学号:")
student = Student(name, age, student_id)
manager.add_student(student)
elif choice == "2":
student_id = input("请输入要删除的学生学号:")
manager.delete_student(student_id)
elif choice == "3":
student_id = input("请输入要修改的学生学号:")
name = input("请输入修改后的姓名(不修改请按回车):")
age = input("请输入修改后的年龄(不修改请按回车):")
manager.modify_student(student_id, name, age)
elif choice == "4":
student_id = input("请输入要查询的学生学号:")
manager.search_student(student_id)
elif choice == "5":
print("谢谢使用")
break
else:
print("输入有误,请重新输入")
if __name__ == '__main__':
main()
```
以上就是一个简单的学生管理系统的实现,其中包含了异常处理、类的封装、列表的使用等知识点。
阅读全文