python实现学生信息管理系统(精简版)

Python实现学生信息管理系统(精简版)攻略

简介

本文将介绍如何使用Python编写一个简单的学生信息管理系统。在该系统中,我们将使用文件来存储学生信息,并提供添加、删除、修改、查询等基本功能。在操作时,我们将使用命令行交互,用户可以根据提示输入相应的指令来实现操作。

环境配置

在开始之前,我们需要确保Python环境已经安装并正确配置。

  1. 首先,我们需要从Python官网下载并安装Python。你可以访问Python官网来查找适合你的操作系统的Python版本。
  2. 安装完成后,我们需要确保Python已正确配置到环境变量中。在命令行中输入python -V可以检查是否正确安装。
  3. 在Python安装完成并且正确配置后,我们需要安装pandas库,这里我们使用以下命令来完成:
pip install pandas

设计思路

在设计学生信息管理系统时,我们需要考虑以下几个问题:

  1. 如何存储学生信息?
  2. 如何添加、删除、修改和查询学生信息?
  3. 如何在命令行中与用户进行交互?

为了解决这些问题,我们将使用以下方案:

  1. 学生信息将存储在一个CSV文件中。
  2. 我们将使用pandas库来读取和写入CSV文件,使用相关函数实现添加、删除、修改和查询功能。
  3. 我们将使用命令行界面与用户进行交互。

具体实现方式将在下面的代码块中介绍。

代码实现

以下是完整的Python代码实现:

import pandas as pd

class StudentManager:
    def __init__(self, file_path):
        self.data = pd.read_csv(file_path, index_col=0)

    def add_student(self, name, age, gender):
        index = len(self.data) + 1
        self.data.loc[index] = [name, age, gender]

    def remove_student(self, id):
        self.data.drop(id, inplace=True)

    def modify_student(self, id, name=None, age=None, gender=None):
        if name is not None:
            self.data.loc[id, 'name'] = name
        if age is not None:
            self.data.loc[id, 'age'] = age
        if gender is not None:
            self.data.loc[id, 'gender'] = gender

    def query_student(self, id=None, name=None):
        if id is not None:
            return self.data.loc[id]
        elif name is not None:
            return self.data[self.data['name'] == name]
        else:
            return self.data

    def save_data(self, file_path):
        self.data.to_csv(file_path)

def main():
    file_path = 'student_info.csv'
    manager = StudentManager(file_path)

    while True:
        print("\nWelcome to Student Information Management System")
        print("-" * 50)
        print("1. Add Student Information")
        print("2. Remove Student Information")
        print("3. Modify Student Information")
        print("4. Query Student Information")
        print("5. Exit System")
        print("-" * 50)
        option = input("Please enter the option number: ")

        if option == '1':
            name = input("Please input student name: ")
            age = input("Please input student age: ")
            gender = input("Please input student gender: ")
            manager.add_student(name, age, gender)
            print("Student information added!")

        elif option == '2':
            id = input("Please input student id to be removed: ")
            manager.remove_student(int(id))
            print("Student information removed!")

        elif option == '3':
            id = input("Please input student id to be modified: ")
            name = input("Please input student name (press Enter to skip): ")
            age = input("Please input student age (press Enter to skip): ")
            gender = input("Please input student gender (press Enter to skip): ")
            manager.modify_student(int(id), name, age, gender)
            print("Student information modified!")

        elif option == '4':
            print("-" * 50)
            print(manager.query_student())
            print("-" * 50)
            id = input("Please input student id to be queried (press Enter to skip): ")
            name = input("Please input student name to be queried (press Enter to skip): ")
            if id != '':
                print(manager.query_student(int(id)))
            if name != '':
                print(manager.query_student(name=name))

        elif option == '5':
            manager.save_data(file_path)
            print("Student information saved!")
            break

        else:
            print("Invalid option number, please try again.")

if __name__ == '__main__':
    main()

代码中包括了一个名为StudentManager的类,这个类的作用是管理学生信息。

我们先来看一下这个类的构造函数__init__()。这个函数接受一个文件路径参数,它会从指定的CSV文件中读取学生信息。index_col=0表示将CSV文件中的第一列作为行索引。

class StudentManager:
    def __init__(self, file_path):
        self.data = pd.read_csv(file_path, index_col=0)

接下来分别介绍该类中的添加、删除、修改和查询功能。这些功能都是通过pandas库实现的。

  • 添加

添加学生信息需要提供姓名、年龄和性别三个参数,这些信息将会添加进CSV文件中。

    def add_student(self, name, age, gender):
        index = len(self.data) + 1
        self.data.loc[index] = [name, age, gender]
  • 删除

删除学生信息需要提供要删除的学生id,这个id对应的学生信息将会从CSV文件中删除。

    def remove_student(self, id):
        self.data.drop(id, inplace=True)
  • 修改

修改学生信息需要提供要修改的学生id,并可选择提供新的姓名、年龄和性别信息。modify_student()函数通过判断这些信息是否提供来决定是否需要对相应列进行修改。

    def modify_student(self, id, name=None, age=None, gender=None):
        if name is not None:
            self.data.loc[id, 'name'] = name
        if age is not None:
            self.data.loc[id, 'age'] = age
        if gender is not None:
            self.data.loc[id, 'gender'] = gender
  • 查询

查询学生信息可以根据学生id或姓名进行。如果不提供这两个参数,则会返回所有学生信息。query_student()函数根据传入的参数来判断进行何种查询。

    def query_student(self, id=None, name=None):
        if id is not None:
            return self.data.loc[id]
        elif name is not None:
            return self.data[self.data['name'] == name]
        else:
            return self.data

最后是一个名为main()的函数,这个函数利用了一个无限循环,实现在命令行中与用户进行交互的方式。用户输入相应的指令,程序根据这些指令执行不同的操作。

def main():
    file_path = 'student_info.csv'
    manager = StudentManager(file_path)

    while True:
        print("\nWelcome to Student Information Management System")
        print("-" * 50)
        print("1. Add Student Information")
        print("2. Remove Student Information")
        print("3. Modify Student Information")
        print("4. Query Student Information")
        print("5. Exit System")
        print("-" * 50)
        option = input("Please enter the option number: ")

        if option == '1':
            name = input("Please input student name: ")
            age = input("Please input student age: ")
            gender = input("Please input student gender: ")
            manager.add_student(name, age, gender)
            print("Student information added!")

        # 省略删除、修改和查询部分

        elif option == '5':
            manager.save_data(file_path)
            print("Student information saved!")
            break

        else:
            print("Invalid option number, please try again.")

示例说明

以下是使用示例:

  1. 添加学生

在命令行中输入 1,然后输入名字、年龄、性别三个信息:

Please enter the option number: 1

Please input student name: Jack
Please input student age: 20
Please input student gender: M

Student information added!

此时学生信息已经添加成功。

  1. 查询学生

在命令行中输入4,然后根据提示输入要查询的学生的id或name:

Please enter the option number: 4
--------------------------------------------------
   name  age gender
1  Jack   20      M
--------------------------------------------------
Please input student id to be queried (press Enter to skip):
Please input student name to be queried (press Enter to skip): Jack
   name  age gender
1  Jack   20      M

可以看到,输入姓名后,程序会在CSV文件中查找匹配的学生信息,并输出到屏幕上。

以上是学生信息管理系统的简单使用示例。

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

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

相关文章

  • Python模拟简单电梯调度算法示例

    Python模拟简单电梯调度算法示例 电梯调度算法是指根据乘客的需求和电梯的状态,决定梯的运行方向和停靠楼层的算法。在本文中,我们将介绍如何使用Python模拟单电梯调度算法,并提供两个示例说明,一个是基于FIFO算法的电梯调度,另一个是基于SCAN算的电梯调度。 示例1:基于FIFO算法的电梯调度 在这个示例中,我们将使用FIFO算法模电梯调度。FIFO算…

    python 2023年5月14日
    00
  • 如何使用Python基于接口编程的方法实现

    针对如何使用Python基于接口编程的方法实现,下面是具体的攻略: 什么是基于接口编程? 在了解基于接口编程之前,需要先了解软件设计中的接口概念。接口(interface)是一个固定的交互边界,它定义了一个类或者对象提供的公共方法,是一种限制和规范类或对象的行为方式的方法。在面向对象编程中,接口是一种约束。 基于接口编程(Interface Based Pr…

    python 2023年5月18日
    00
  • python爬虫 基于requests模块发起ajax的get请求实现解析

    以下是关于Python爬虫基于requests模块发起ajax的GET请求实现解析的攻略: Python爬虫基于requests模块发起ajax的GET请求实现解析 在使用Python爬虫时,有时需要使用requests模块发起ajax的GET请求,并解析响应内容。以下是Python爬虫基于requests模块发起ajax的GET请求实现解析的攻略。 发起a…

    python 2023年5月15日
    00
  • Python爬虫获取页面所有URL链接过程详解

    下面就来详细讲解“Python爬虫获取页面所有URL链接过程详解”。 简介 在网络爬虫中,获取页面上所有的URL链接是一个非常常见的任务,它是爬虫获取网站信息的基础。本攻略将介绍如何使用Python爬虫获取页面上的所有URL链接。 实现步骤 获取页面上所有URL链接的过程可以分为以下几个步骤: 发送HTTP请求:使用Python的requests库向需要爬取…

    python 2023年5月14日
    00
  • python自动化测试之DDT数据驱动的实现代码

    下面是“python自动化测试之DDT数据驱动的实现代码”的完整攻略: 一、什么是DDT数据驱动? DDT,即 Data-Driven Testing,数据驱动测试。它是一种基于数据的测试方法,它的主要思想是不同的输入数据可以得到不同的测试结果,因此我们可以通过不同的数据来验证系统的稳定性和可靠性。DDT可以通过将测试数据与测试脚本分离,实现更好的复用性和可…

    python 2023年5月19日
    00
  • 全面了解python字符串和字典

    全面了解Python字符串和字典 字符串 什么是字符串 字符串是在Python中最常用的数据类型之一。它是一个由字符组成的序列。可以使用单引号(‘)或双引号(“)来表示字符串。 示例代码: s1 = "Hello, World!" # 使用双引号来表示字符串 s2 = ‘Hello, World!’ # 使用单引号来表示字符串 print…

    python 2023年5月13日
    00
  • 详解Python函数中的几种参数

    我会用 markdown 格式撰写完整攻略,内容如下: 详解 Python 函数中的几种参数 在 Python 函数中,参数是用于传递值给函数的占位符。在这篇文章中,我们将详细阐述 Python 函数中的几种参数,并举例说明。 位置参数 位置参数是指那些按照其顺序被输入到函数中的参数。也就是说,位置参数的位置是很重要的。比如,下面这个例子中的函数 add 接…

    python 2023年5月13日
    00
  • python实现人性化显示金额数字实例详解

    Python实现人性化显示金额数字实例详解 在很多的计算机应用场景中,需要对金额数字进行人性化的显示,比如货币、股票等金融领域。Python作为一种经典的开发语言,提供了非常方便的解决方案来实现金额数字的人性化显示。本文将介绍如何用Python实现人性化显示金额数字,以及提供一些示例说明。 实现思路 人性化金额数字的显示,需要满足以下几个条件: 数字需要进行…

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