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

本次实验是关于面向对象编程的学习,主要内容是设计一个学生信息管理系统,通过该系统的设计和实现,我对面向对象编程的思想和方法有了更加深入的了解和掌握。

实验内容

该系统包含两个主要的类:

  1. Student 类: 用于存储单个学生的信息,包括学号、姓名、班级、电话、家庭住址和宿舍号。
  2. Manage 类: 用于管理学生信息,包含文件名、学生列表等属性和添加、修改、删除、查找、浏览等方法。

实验代码

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

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()

实验总结

在本次实验中,我首先了解了面向对象编程的概念和特点,它是一种用于解决复杂问题的编程思想,将数据和操作数据的方法封装在一起,形成一个独立的对象,通过对象之间的交互和协作来完成任务。在实验中,我将学生信息和学生信息管理相关的操作封装成了一个学生类和一个管理类,通过类的实例化和调用方法来完成各种操作。

其次,在实验过程中,我学习了如何使用文件来存储和读取数据,这是一个非常实用的技能。在本次实验中,我使用 Python 内置的 open 函数和 with 语句来读写文件,其中 with 语句可以自动关闭文件,避免了文件未关闭的问题,同时也可以提高代码的可读性和可维护性。

最后,在实验中我加深了对于面向对象编程的理解,学习了如何设计类和方法,如何使用继承和多态等高级特性。同时,在实验中我也注意到了一些编程的规范和技巧,例如命名规范、代码缩进、注释规范等,这些都是编写高质量代码的重要组成部分。

实验心得

总之,本次实验让我对面向对象编程有了更加深入的了解和掌握,同时也提高了我的编程能力和技巧。我将继续不断学习和实践,不断提高自己的编程水平。

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

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

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