打造简单实用的Python学生管理系统

在学习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学生管理系统

关注公众号 "字节航海家" 及时获取最新内容

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值