在学习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学生管理系统
关注公众号 "字节航海家" 及时获取最新内容