在学习python过程中,为了更好地理解面向对象编程(OOP)的概念,我们将通过构建一个简单而实用的 Python 学生管理系统来学习其核心原理和实践技巧。
- import csv
-
- class Student:
- def __init__(self, name, age, gender):
- self.name = name
- self.age = age
- self.gender = gender
-
- class DataManager:
- def __init__(self):
- self.students = []
-
- def add_student(self, student):
- self.students.append(student)
-
- def modify_student(self, index, student):
- self.students[index] = student
-
- def delete_student(self, index):
- del self.students[index]
-
- def get_all_students(self):
- return self.students
-
- def find_student(self, name):
- for student in self.students:
- if student.name == name:
- return student
- return None
-
- def save_to_csv(self, filename):
- with open(filename, 'w', newline='', encoding='utf-8') as file:
- writer = csv.writer(file)
- writer.writerow(['姓名', '年龄', '性别'])
- for student in self.students:
- writer.writerow([student.name, student.age, student.gender])
-
- def load_from_csv(self, filename):
- with open(filename, 'r', encoding='utf-8') as file:
- reader = csv.reader(file)
- next(reader) # Skip header
- for row in reader:
- self.add_student(Student(row[0], int(row[1]), row[2]))
-
- class ControlPanel:
- def __init__(self, data_manager):
- self.data_manager = data_manager
-
- def display_menu(self):
- print("*"*15, "菜单", "*"*15)
- print("1. 添加学生")
- print("2. 修改学生")
- print("3. 删除学生")
- print("4. 显示所有学生")
- print("5. 查找学生")
- print("6. 保存数据到 CSV 文件")
- print("7. 从 CSV 文件加载数据")
- print("8. 退出")
-
- def run(self):
- while True:
- self.display_menu()
- choice = input("请输入选项:")
- switch = {
- '1': self.add_student,
- '2': self.modify_student,
- '3': self.delete_student,
- '4': self.show_all_students,
- '5': self.find_student,
- '6': self.save_to_csv,
- '7': self.load_from_csv,
- '8': lambda: exit(0)
- }
- func = switch.get(choice)
- if func:
- func()
- else:
- print("无效选项")
-
- def add_student(self):
- name = input("请输入学生姓名:")
- age = int(input("请输入学生年龄:"))
- gender = input("请输入学生性别:")
- self.data_manager.add_student(Student(name, age, gender))
-
- def modify_student(self):
- index = int(input("请输入要修改的学生索引:"))
- name = input("请输入新的姓名:")
- age = int(input("请输入新的年龄:"))
- gender = input("请输入新的性别:")
- self.data_manager.modify_student(index, Student(name, age, gender))
-
- def delete_student(self):
- index = int(input("请输入要删除的学生索引:"))
- self.data_manager.delete_student(index)
-
- def show_all_students(self):
- students = self.data_manager.get_all_students()
- for i, student in enumerate(students):
- print(f"{i+1}. 姓名: {student.name}, 年龄: {student.age}, 性别: {student.gender}")
-
- def find_student(self):
- name = input("请输入要查找的学生姓名:")
- student = self.data_manager.find_student(name)
- if student:
- print(f"找到学生 - 姓名: {student.name}, 年龄: {student.age}, 性别: {student.gender}")
- else:
- print("未找到学生")
-
- def save_to_csv(self):
- filename = input("请输入要保存到的文件名:")
- self.data_manager.save_to_csv(filename)
- print("保存成功!")
-
- def load_from_csv(self):
- filename = input("请输入要加载的文件名:")
- self.data_manager.load_from_csv(filename)
- print("加载成功!")
-
- if __name__ == "__main__":
- data_manager = DataManager()
- control_panel = ControlPanel(data_manager)
- control_panel.run()
查看原文:打造简单实用的Python学生管理系统
关注公众号 "字节航海家" 及时获取最新内容
