python学生管理系统代码实现

下面我将为大家详细讲解 “Python学生管理系统代码实现”的完整攻略。

一、需求分析

首先,我们要明确学生管理系统需要实现的功能,一般包括以下几个方面:

  1. 学生信息录入;
  2. 学生查询,包括按姓名、学号、班级等条件查询;
  3. 学生信息修改;
  4. 学生信息删除。

二、代码实现

经过需求分析,我们可以开始尝试编写学生管理系统的代码了。下面是具体的代码实现步骤:

1. 创建学生类

学生管理系统的核心就是学生类,首先我们需要先创建一个学生类,包括学号、姓名、班级、性别等基本属性,并实现一些基本的方法,比如__init__(),__str__(),get_info()等。

class Student:
    def __init__(self, id, name, gender, grade, major, tel):
        self.id = id
        self.name = name
        self.gender = gender
        self.grade = grade
        self.major = major
        self.tel = tel

    def __str__(self):
        return f'{self.id}\t{self.name}\t{self.gender}\t{self.grade}\t{self.major}\t{self.tel}'

    def get_info(self):
        return self.__str__()

2. 创建学生管理系统类

创建完学生类后,就需要开始构建学生管理系统类了。学生管理系统需要实现的功能比较多,因此我们需要先分析一下需要哪些方法来实现这些功能。以下是学生管理系统类的基本实现代码:

class StudentManagerSystem:
    def __init__(self):
        self.students = []

    def run(self):
        while True:
            self.show_menu()
            option = input("请选择要执行的操作:")
            if option == "1":
                self.add_student()
            elif option == "2":
                self.search_student()
            elif option == "3":
                self.modify_student()
            elif option == "4":
                self.delete_student()
            elif option == "5":
                self.show_all_students()
            elif option == "6":
                self.save_to_file()
            elif option == "7":
                self.read_from_file()
            elif option == "0":
                print("谢谢使用!")
                break
            else:
                print("输入有误,请重新输入!")

    def show_menu(self):
        print("请输入要执行的操作:")
        print("1. 添加学生信息")
        print("2. 查找学生信息")
        print("3. 修改学生信息")
        print("4. 删除学生信息")
        print("5. 显示所有学生信息")
        print("6. 保存到文件")
        print("7. 从文件读取")
        print("0. 退出系统")

    def add_student(self):
        id = input("请输入学号:")
        name = input("请输入姓名:")
        gender = input("请输入性别:")
        grade = input("请输入年级:")
        major = input("请输入专业:")
        tel = input("请输入手机号码:")

        stu = Student(id, name, gender, grade, major, tel)
        self.students.append(stu)
        print(f'{name}学生信息已添加成功!')

    def search_student(self):
        while True:
            print("请输入要查询的条件:")
            print("1. 按姓名查询")
            print("2. 按学号查询")
            print("3. 按班级查询")
            print("0. 返回上一级")

            option = input("请选择要查询的条件:")
            if option == "1":
                name = input("请输入要查询的姓名:")
                stu_list = filter(lambda student: student.name == name, self.students)
                self.print_students(stu_list)
            elif option == "2":
                id = input("请输入要查询的学号:")
                stu_list = filter(lambda student: student.id == id, self.students)
                self.print_students(stu_list)
            elif option == "3":
                grade = input("请输入要查询的班级:")
                stu_list = filter(lambda student: student.grade == grade, self.students)
                self.print_students(stu_list)
            elif option == "0":
                break
            else:
                print("输入有误,请重新输入!")

    def modify_student(self):
        id = input("请输入要修改的学生编号:")
        for stu in self.students:
            if stu.id == id:
                name = input(f"请输入{name}修改后的姓名:")
                gender = input(f"请输入{name}修改后的性别:")
                grade = input(f"请输入{name}修改后的年级:")
                major = input(f"请输入{name}修改后的专业:")
                tel = input(f"请输入{name}修改后的手机号码:")
                stu.name = name if name else stu.name
                stu.gender = gender if gender else stu.gender
                stu.grade = grade if grade else stu.grade
                stu.major = major if major else stu.major
                stu.tel = tel if tel else stu.tel
                print(f"{name}学生信息已修改成功!")
                break
        else:
            print(f"学号为{id}的学生不存在!")

    def delete_student(self):
        id = input("请输入要删除的学生编号:")
        for i,stu in enumerate(self.students):
            if stu.id == id:
                self.students.pop(i)
                print(f'学号为{id}的学生信息已删除!')
                break
        else:
            print(f"学号为{id}的学生不存在!")

    def show_all_students(self):
        self.print_students(self.students)

    def print_students(self, students):
        if not students:
            print("没有找到符合要求的学生!")
            return

        print("学号\t姓名\t性别\t年级\t\t专业\t\t\t手机号")
        for student in students:
            print(student.get_info())

    def save_to_file(self):
        with open('students.txt', 'w') as f:
            for stu in self.students:
                f.write(f"{stu.id},{stu.name},{stu.gender},{stu.grade},{stu.major},{stu.tel}\n")
        print("学生信息已保存到文件中!")

    def read_from_file(self):
        self.students.clear()
        with open('students.txt') as f:
            for line in f.readlines():
                id, name, gender, grade, major, tel = line.strip().split(",")
                stu = Student(id, name, gender, grade, major, tel)
                self.students.append(stu)
        print("学生信息已从文件中读取!")

三、示例说明

下面举两个例子说明如何使用学生管理系统:

示例一:添加一个学生信息

def test_add_student():
    sys = StudentManagerSystem()
    sys.add_student()
    sys.show_all_students()

执行这个测试函数后,控制台会输出以下语句:

请输入学号:001
请输入姓名:张三
请输入性别:男
请输入年级:大二
请输入专业:计算机
请输入手机号码:13888888888

张三学生信息已添加成功!
学号  姓名  性别  年级      专业          手机号
001 张三  男   大二      计算机     13888888888

说明学生信息已成功添加至学生管理系统中。

示例二:保存到文件并从文件中读取

在学生管理系统添加了多个学生信息后,我们可以将学生信息保存到文件中,方便下次使用时直接从文件中读取。下面是保存到文件并从文件中读取的示例代码:

def test_save_to_file_and_read():
    sys = StudentManagerSystem()
    sys.add_student()
    sys.add_student()
    sys.add_student()
    sys.save_to_file()

    sys2 = StudentManagerSystem()
    sys2.read_from_file()
    sys2.show_all_students()

在执行这个测试函数之前,我们需要确保在项目根目录下已经创建了一个students.txt文件,然后运行测试函数,控制台输出以下内容:

请输入学号:001
请输入姓名:张三
请输入性别:男
请输入年级:大二
请输入专业:计算机
请输入手机号码:13888888888

张三学生信息已添加成功!

请输入学号:002
请输入姓名:李四
请输入性别:女
请输入年级:大一
请输入专业:外语
请输入手机号码:13999999999

李四学生信息已添加成功!

请输入学号:003
请输入姓名:王五
请输入性别:男
请输入年级:大三
请输入专业:物理
请输入手机号码:13333333333

王五学生信息已添加成功!

学生信息已保存到文件中!

学号  姓名  性别  年级      专业          手机号
001 张三  男   大二      计算机     13888888888
002 李四  女   大一      外语          13999999999
003 王五  男   大三      物理          13333333333

从控制台输出可以看到,学生信息已经成功保存至文件中,并且通过read_from_file()方法可以从文件中读取到学生信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python学生管理系统代码实现 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Python 高级库15 个让新手爱不释手(推荐)

    Python高级库15个让新手爱不释手(推荐) Python是一种功能强大的编程语言,拥有许多高级库,可以帮助我们快速开发各种应用程序。本文将介绍15个Python高级库,这些库可以让新手爱不释手。 1. NumPy NumPy是Python中的一个科学计算库,用于处理大型多维数组和矩阵。它提供了许多数学函数和操作,可以用于数据分析、机器学习和科学计算等领域…

    python 2023年5月15日
    00
  • Python基于select实现的socket服务器

    本攻略将介绍如何使用Python基于select实现一个socket服务器。select是一种多路复用的I/O模型,可以同时监视多个文件描述符,当其中任意一个文件描述符就绪时,select函数就会返回。使用select可以实现高效的I/O操作,避免了阻塞和轮询的问题。 实现socket服务器 以下是一个示例代码,用于实现一个基于select的socket服务…

    python 2023年5月15日
    00
  • Python定时库Apscheduler的简单使用

    Python定时库Apscheduler是一种可以按照固定时间触发函数执行的工具。本篇攻略将介绍Apscheduler的基本使用,包括安装、创建调度器以及不同类型的作业的创建。 安装 可以通过pip对Apscheduler进行安装: pip install apscheduler 创建调度器 在使用Apscheduler之前,需要先创建一个调度器Schedu…

    python 2023年6月2日
    00
  • Python用imghdr模块识别图片格式实例解析

    接下来我将详细讲解如何使用Python的imghdr模块识别图片格式的完整攻略: 介绍 imghdr模块是Python标准库中提供的一个用于识别图片格式的模块。通过使用该模块,可以在Python中轻松地识别图像文件的格式,而无需首先处理文件的内容。imghdr模块非常适合用于对上传文件的类型进行检查,以确保上传的内容是安全且符合预期的。 安装 imghdr模…

    python 2023年5月19日
    00
  • 解决PyCharm 中写 Turtle代码没提示以及标黄的问题

    首先我们需要了解Turtle模块的情况。Turtle是Python自带的图形化绘制模块,可以很方便地绘制各种简单的图形,特别适合Python初学者进行练习。而在使用PyCharm编写Turtle应用时,有时候会遇到一些编译器无法识别Turtle模块的情况,比如代码没有颜色高亮和自动提示等问题,下面介绍一下如何解决这个问题。 一、安装Turtle模块 在PyC…

    python 2023年5月13日
    00
  • python使用marshal模块序列化实例

    当我们在 Python 中使用某些数据结构时(例如列表、字典等),我们可能需要序列化(将它们转换为特定格式的字符串、文件)以进行长时间存储或网络传输。 Python 中有一个内置的序列化模块 marshal,该模块可以将实例序列化为二进制数据,也可以将二进制数据反序列化为相应的实例对象。下面是使用 marshal 模块序列化 Python 实例的完整攻略。 …

    python 2023年6月2日
    00
  • 教你Pycharm安装使用requests第三方库的详细教程

    以下是关于在PyCharm中安装和使用requests第三方库的详细攻略: 在PyCharm中安装requests第三方库 PyCharm是一种流行的Python集成开发环境(IDE),可以用于开发Python应用程序。以下是在PyCharm中安装requests第三方库的步骤: 打开PyCharm 首先,打开PyCharm。 创建Python项目 在PyC…

    python 2023年5月14日
    00
  • python GUI库图形界面开发之PyQt5线程类QThread详细使用方法

    下面是详细的攻略。 Python GUI库图形界面开发之PyQt5线程类QThread详细使用方法 在PyQt5中,线程类QThread被用来处理一些耗时的操作,以避免把这些操作放在主线程中引起其卡顿或者假死。下面我们详细讲解QThread的使用方法。 QThread的使用方法 1.导入必要的模块和类 import sys from PyQt5.QtCore…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部