131 lines
3.5 KiB
Python
131 lines
3.5 KiB
Python
"""
|
||
04 类版本:学生增删改查
|
||
|
||
相比函数版本:
|
||
1. Student 表示一个学生。
|
||
2. StudentManager 表示学生管理器。
|
||
3. 数据和操作数据的方法被组织到类里面。
|
||
"""
|
||
|
||
|
||
|
||
|
||
class Student:
|
||
def __init__(self, student_id, name, age, phone):
|
||
self.id = student_id
|
||
self.name = name
|
||
self.age = age
|
||
self.phone = phone
|
||
|
||
def to_dict(self):
|
||
return {
|
||
"id": self.id,
|
||
"name": self.name,
|
||
"age": self.age,
|
||
"phone": self.phone,
|
||
}
|
||
|
||
def __str__(self):
|
||
return f"ID: {self.id}, 姓名: {self.name}, 年龄: {self.age}, 电话: {self.phone}"
|
||
|
||
|
||
class StudentManager:
|
||
def __init__(self):
|
||
self.students = []
|
||
self.next_id = 1
|
||
|
||
def add_student(self):
|
||
name = input("姓名:").strip()
|
||
age = input("年龄:").strip()
|
||
phone = input("电话:").strip()
|
||
|
||
student = Student(self.next_id, name, age, phone)
|
||
self.students.append(student)
|
||
self.next_id += 1
|
||
print("添加成功")
|
||
|
||
def list_students(self):
|
||
if not self.students:
|
||
print("暂无学生")
|
||
return
|
||
|
||
for student in self.students:
|
||
print(student)
|
||
|
||
def find_student_by_id(self, student_id):
|
||
for student in self.students:
|
||
if str(student.id) == str(student_id):
|
||
return student
|
||
return None
|
||
|
||
def search_student(self):
|
||
keyword = input("请输入要查询的姓名:").strip()
|
||
found = False
|
||
|
||
for student in self.students:
|
||
if student.name == keyword:
|
||
print(student)
|
||
found = True
|
||
|
||
if not found:
|
||
print("没有找到该学生")
|
||
|
||
def update_student(self):
|
||
student_id = input("请输入要修改的学生 ID:").strip()
|
||
student = self.find_student_by_id(student_id)
|
||
|
||
if student is None:
|
||
print("没有找到该学生")
|
||
return
|
||
|
||
student.name = input("新姓名:").strip()
|
||
student.age = input("新年龄:").strip()
|
||
student.phone = input("新电话:").strip()
|
||
print("修改成功")
|
||
|
||
def delete_student(self):
|
||
student_id = input("请输入要删除的学生 ID:").strip()
|
||
student = self.find_student_by_id(student_id)
|
||
|
||
if student is None:
|
||
print("没有找到该学生")
|
||
return
|
||
|
||
self.students.remove(student)
|
||
print("删除成功")
|
||
|
||
def show_menu(self):
|
||
print("\n====== 学生管理系统:类版本 ======")
|
||
print("1. 添加学生")
|
||
print("2. 查看所有学生")
|
||
print("3. 查询学生")
|
||
print("4. 修改学生")
|
||
print("5. 删除学生")
|
||
print("0. 退出")
|
||
|
||
def run(self):
|
||
while True:
|
||
self.show_menu()
|
||
choice = input("请输入操作编号:").strip()
|
||
|
||
if choice == "1":
|
||
self.add_student()
|
||
elif choice == "2":
|
||
self.list_students()
|
||
elif choice == "3":
|
||
self.search_student()
|
||
elif choice == "4":
|
||
self.update_student()
|
||
elif choice == "5":
|
||
self.delete_student()
|
||
elif choice == "0":
|
||
print("程序结束")
|
||
break
|
||
else:
|
||
print("输入有误,请重新输入")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
manager = StudentManager()
|
||
manager.run()
|