python学生管理系统代码实现

yizhihongxing

下面我将为大家详细讲解 “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更新数据库中的数据?

    当需要更新数据库中的数据时,可以使用Python连接到数据库并执行SQL UPDATE语句。以下是使用Python更新数据库中的数据的完整攻略: 连接数据库 要连接到数据库,需要提供数据库的主机名、用户名、密码和数据库名称。可以使用以下代码连接MySQL: import mysql.connector mydb = mysql.connector.conne…

    python 2023年5月12日
    00
  • 在Numpy中查找一个数组元素的长度(字节)和元素消耗的总字节数

    要查找一个Numpy数组元素的长度(字节),可以使用数组的dtype属性,它返回数组数据类型的字符串表示形式,并通过查找numpy.dtype对象来获悉每种数据类型所占的字节数。 要查找Numpy数组的总字节数,可以使用数组的nbytes属性,它返回数组数据占用的总字节数。 以下是两个示例来说明: 示例1: import numpy as np arr = …

    python-answer 2023年3月25日
    00
  • PyTorch安装与基本使用详解

    下面是“PyTorch安装与基本使用详解”的完整攻略,包括安装步骤、基本使用以及两个示例。 PyTorch安装与基本使用详解 安装 安装前的准备工作 在安装PyTorch之前,我们需要先安装以下环境: Python 3.6或以上版本; Anaconda或Miniconda。 安装PyTorch 安装PyTorch可以通过Anaconda/Miniconda或…

    python 2023年5月14日
    00
  • python 如何做一个识别率百分百的OCR

    下面将详细讲解Python如何实现识别率百分百的OCR的完整攻略: 1. 确认需求和选择技术方案 首先需要明确需求,确定要识别的语言、文字类型、图片格式等。然后根据需求选择OCR技术方案,包括开源OCR库、云端OCR服务以及自研OCR模型等。我们考虑选择开源OCR库Tesseract 4作为技术方案。 2. 数据预处理 OCR技术对输入的图片质量要求较高,因…

    python 2023年5月18日
    00
  • python数据解析BeautifulSoup爬取三国演义章节示例

    Python数据解析BeautifulSoup爬取三国演义章节示例 本文将介绍如何使用Python和BeautifulSoup库爬取三国演义的章节内容。我们将提供两个示例,演示如何获取三国演义的章节列表和章节内容。 获取章节列表 以下是一个示例代码,演示如何使用Python和BeautifulSoup库获取三国演义的章节列表: from bs4 import…

    python 2023年5月15日
    00
  • Python文件常见操作实例分析【读写、遍历】

    下面是针对“Python文件常见操作实例分析【读写、遍历】”的完整攻略。 1. 文件读取 Python中的文件读取可以使用内置的open()函数打开文件,使用read()等方法读取文件内容。具体步骤如下: 1.1 打开文件 f = open(‘filename.txt’, ‘r’) 其中,’filename.txt’是文件名,’r’表示以只读方式打开文件。 …

    python 2023年6月5日
    00
  • python 示例分享—逻辑推理编程解决八皇后

    下面是关于“Python示例分享—逻辑推理编程解决八皇后”的完整攻略。 1. 逻辑推理编程简介 逻辑推理编程是一种基于逻辑推理的编程范式,它的核心思想是将问题描述为一组逻辑约束条件,并使用逻辑推理来解决问题。逻辑推理编程通常使用一种专门的编程语言,如Prolog,来实现。 2. 八皇后问题 八皇后问题是一个经典的问题,它的目标是在一个8×8的棋盘上放置8…

    python 2023年5月13日
    00
  • python高级特性和高阶函数及使用详解

    Python高级特性和高阶函数详解 在Python中,高级特性和高阶函数是我们需要掌握的一些重要概念,它们可以极大地简化我们的开发工作,提高我们的编程效率。 列表推导式 列表推导式是Python中非常有用、简洁的特性,它可以让我们用一种简洁而优雅的方式来生成列表。其基本语法如下: [expression for item in iterable if con…

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