Python实现学生信息管理系统(精简版)攻略
简介
本文将介绍如何使用Python编写一个简单的学生信息管理系统。在该系统中,我们将使用文件来存储学生信息,并提供添加、删除、修改、查询等基本功能。在操作时,我们将使用命令行交互,用户可以根据提示输入相应的指令来实现操作。
环境配置
在开始之前,我们需要确保Python环境已经安装并正确配置。
- 首先,我们需要从Python官网下载并安装Python。你可以访问Python官网来查找适合你的操作系统的Python版本。
- 安装完成后,我们需要确保Python已正确配置到环境变量中。在命令行中输入
python -V
可以检查是否正确安装。 - 在Python安装完成并且正确配置后,我们需要安装pandas库,这里我们使用以下命令来完成:
pip install pandas
设计思路
在设计学生信息管理系统时,我们需要考虑以下几个问题:
- 如何存储学生信息?
- 如何添加、删除、修改和查询学生信息?
- 如何在命令行中与用户进行交互?
为了解决这些问题,我们将使用以下方案:
- 学生信息将存储在一个CSV文件中。
- 我们将使用pandas库来读取和写入CSV文件,使用相关函数实现添加、删除、修改和查询功能。
- 我们将使用命令行界面与用户进行交互。
具体实现方式将在下面的代码块中介绍。
代码实现
以下是完整的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
,然后输入名字、年龄、性别三个信息:
Please enter the option number: 1
Please input student name: Jack
Please input student age: 20
Please input student gender: M
Student information added!
此时学生信息已经添加成功。
- 查询学生
在命令行中输入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技术站