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 gdata 库的 ClientLogin 中的简单问题

    【问题标题】:Simple question in ClientLogin using python gdata library使用 python gdata 库的 ClientLogin 中的简单问题 【发布时间】:2023-04-07 09:58:01 【问题描述】: 我已将 ClientLogin 合并到我的 python 应用程序中以检索用户的联系人…

    Python开发 2023年4月8日
    00
  • Python中JSON的使用方法(超详细)

    Python中JSON的使用方法(超详细) 什么是JSON JSON(JavaScript Object Notation),是一种轻量级的数据交换格式。它基于JavaScript语法的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。在Python中,我们可以通过内置的json模块对JSON数据进行处理。 JSON的基本语法 JSON的基本语法规…

    python 2023年5月14日
    00
  • Python 之 Json序列化嵌套类方式

    对于“Python之Json序列化嵌套类方式”的完整攻略,我将以下面的格式进行说明: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 正文文本 代码块 链接 列表 引用 注释 Json序列化嵌套类方式 什么是Json序列化嵌套类方式 在Python中,我们可以使用json模块对Python数据结构进行序列化与反序列化。json序列化中最常见的方法…

    python 2023年5月13日
    00
  • python 实现ping测试延迟的两种方法

    Python 实现 Ping 测试延迟的两种方法 在计算机网络中,Ping 是最基础的网络测试工具之一,常用于测量网络的传输质量。本文将介绍如何使用 Python 实现 Ping 测试延迟的两种方法。 方法一:使用系统自带 Ping 命令 在 Windows 和 Linux 系统中,都有提供 Ping 命令来测试网络延迟。我们可以使用 Python 的 su…

    python 2023年6月2日
    00
  • Python日志syslog使用原理详解

    Python日志syslog使用原理详解 什么是syslog syslog是一种用于记录系统事件的标准协议,它可以将系统事件发送到远程服务器或本地日志文件中。syslog协议最初是由UNIX系统引入的,现在已经被广泛应用于各种操作系统和设备中。 Python中的syslog模块 Python中的syslog模块提供了与syslog协议交互的功能。使用sysl…

    python 2023年5月15日
    00
  • 如何使用python获取计数和以前的比较

    【问题标题】:How to get comparison between count and previous using python如何使用python获取计数和以前的比较 【发布时间】:2023-04-05 18:43:01 【问题描述】: 我想比较当前和以前的两件事,我该如何实现,谁能帮助我提前谢谢你 import threading import …

    Python开发 2023年4月6日
    00
  • Python用requests模块实现动态网页爬虫

    Python 中的 requests 模块是一个简单易用的 HTTP 库,它能够帮助我们完成各种HTTP请求,并获取服务端数据。在实现静态网页爬虫时,我们可以直接获取网页 HTML 代码,但是如果网页通过 Ajax 等技术动态加载数据,我们就需要使用 requests 模块来模拟浏览器向服务端发送请求并获取响应。 下面是实现动态网页爬虫的完整攻略: 1. 安…

    python 2023年5月14日
    00
  • python json-rpc 规范源码阅读

    Python JSON-RPC规范源码阅读攻略 什么是JSON-RPC JSON-RPC是一种轻量级的远程过程调用(RPC)协议,它使用JSON(JavaScript Object Notation)作为数据格式。JSON-RPC协议允许客户端通过网络调用远程服务器上的函数或方法,并获取返回值。JSON-RPC协议的优点是简单、轻量级、易于使用和实现。 JS…

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