Python 学生信息管理系统:面向对象编程实践

本项目使用 Python 面向对象编程实现了一个简单的学生信息管理系统,涵盖添加、修改、删除、查找、浏览等基本功能,并通过文件存储实现学生数据的持久化。

1. 定义学生类

class Student:
    def __init__(self, id, name, classname, phone, address, dorm):
        self.id = id
        self.name = name
        self.classname = classname
        self.phone = phone
        self.address = address
        self.dorm = dorm

Student 类代表一个学生,包含学号 (id)、姓名 (name)、班级 (classname)、电话 (phone)、家庭住址 (address) 和宿舍号 (dorm) 等属性。

2. 定义管理类

class Manage:
    def __init__(self):
        self.filename = 'students.txt'  # 存储学生信息的文件名
        self.students = []  # 学生列表

    # 从文件中加载学生信息到列表中
    def load_data(self):
        try:
            with open(self.filename, 'r', encoding='utf-8') as f:
                for line in f:
                    line = line.strip()
                    if line:
                        id, name, classname, phone, address, dorm = line.split(',')
                        student = Student(id, name, classname, phone, address, dorm)
                        self.students.append(student)
        except FileNotFoundError:
            pass

    # 将学生列表中的信息保存到文件中
    def save_data(self):
        with open(self.filename, 'w', encoding='utf-8') as f:
            for student in self.students:
                line = '{},{},{},{},{},{}
'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm)
                f.write(line)

    # 添加学生信息
    def add_student(self):
        id = input('请输入学号:')
        name = input('请输入姓名:')
        classname = input('请输入班级:')
        phone = input('请输入电话:')
        address = input('请输入家庭住址:')
        dorm = input('请输入宿舍号:')
        student = Student(id, name, classname, phone, address, dorm)
        self.students.append(student)
        self.save_data()
        print('添加成功!')

    # 修改学生信息
    def modify_student(self):
        id = input('请输入要修改信息的学生学号:')
        for student in self.students:
            if student.id == id:
                print('学号	姓名	班级	电话	家庭住址	宿舍号')
                print('{}	{}	{}	{}	{}	{}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))
                choice = input('请选择要修改的信息(1-班级 2-电话 3-家庭住址 4-宿舍号 0-取消):')
                if choice == '1':
                    classname = input('请输入新的班级:')
                    student.classname = classname
                    self.save_data()
                    print('修改成功!')
                elif choice == '2':
                    phone = input('请输入新的电话:')
                    student.phone = phone
                    self.save_data()
                    print('修改成功!')
                elif choice == '3':
                    address = input('请输入新的家庭住址:')
                    student.address = address
                    self.save_data()
                    print('修改成功!')
                elif choice == '4':
                    dorm = input('请输入新的宿舍号:')
                    student.dorm = dorm
                    self.save_data()
                    print('修改成功!')
                elif choice == '0':
                    print('取消修改!')
                else:
                    print('输入有误!')
                return
        print('没有找到该学生!')

    # 删除学生信息
    def delete_student(self):
        id_or_name = input('请输入要删除信息的学生学号或姓名:')
        for student in self.students:
            if student.id == id_or_name or student.name == id_or_name:
                self.students.remove(student)
                self.save_data()
                print('删除成功!')
                return
        print('没有找到该学生!')

    # 查找学生信息
    def search_student(self):
        id_or_name = input('请输入要查找信息的学生学号或姓名:')
        for student in self.students:
            if student.id == id_or_name or student.name == id_or_name:
                print('学号	姓名	班级	电话	家庭住址	宿舍号')
                print('{}	{}	{}	{}	{}	{}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))
                return
        print('没有找到该学生!')

    # 浏览所有学生信息
    def show_students(self):
        if not self.students:
            print('没有学生信息')
        else:
            print('学号	姓名	班级	电话	家庭住址	宿舍号')
            for student in self.students:
                print('{}	{}	{}	{}	{}	{}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))

    # 启动管理系统
    def start(self):
        self.load_data()
        while True:
            print('===== 学生信息管理系统 =====' )
            print('1. 录入学生信息')
            print('2. 修改学生信息')
            print('3. 删除学生信息')
            print('4. 查找学生信息')
            print('5. 浏览所有学生信息')
            print('6. 退出系统')
            choice = input('请选择功能(1-6):')
            if choice == '1':
                self.add_student()
            elif choice == '2':
                self.modify_student()
            elif choice == '3':
                self.delete_student()
            elif choice == '4':
                self.search_student()
            elif choice == '5':
                self.show_students()
            elif choice == '6':
                confirm = input('确定退出系统吗?(y/n):')
                if confirm == 'y':
                    print('谢谢使用!')
                    break
            else:
                print('输入有误!')

if __name__ == '__main__':
    manage = Manage()
    manage.start()

Manage 类负责管理学生信息,包含文件名 (filename)、学生列表 (students) 和一系列方法,例如加载数据 (load_data)、保存数据 (save_data)、添加学生 (add_student)、修改学生 (modify_student)、删除学生 (delete_student)、查找学生 (search_student)、浏览学生 (show_students) 等。

3. 系统启动

if __name__ == '__main__': 代码块中,实例化 Manage 类并调用 start() 方法启动学生信息管理系统。

4. 运行结果

运行程序后,系统会显示菜单,用户可以选择相应的功能进行操作。例如,选择“1. 录入学生信息”后,系统会提示用户输入学生信息,并将信息保存到文件中。

5. 面向对象编程的优势

本项目使用面向对象编程的思想,将学生信息管理系统分解成不同的类和对象,每个类负责特定的功能,使代码结构清晰、易于理解和维护。

  • 封装性: 将数据和行为封装在类中,提高代码的安全性和可维护性。
  • 抽象性: 使用抽象类和接口定义公共行为,提高代码的可扩展性和可重用性。
  • 继承性: 通过继承可以创建新的类,复用父类的属性和方法,提高代码的开发效率。
  • 多态性: 通过多态可以实现代码的灵活性和可扩展性。

本项目是一个简单的学生信息管理系统的示例,通过学习和实践,可以更好地理解面向对象编程的思想和应用,并将其应用到实际项目中。

Python 学生信息管理系统:面向对象编程实践

原文地址: https://www.cveoy.top/t/topic/ozTd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录