学生信息管理系统源码执行图
扫码关注公众号回复 学生信息管理系统 获取完整项目代码
一、引言
随着教育信息化的不断发展,学校对学生的管理需求日益增加。学生信息管理系统作为一种高效、便捷的工具,能够帮助学校更好地管理学生信息,提高工作效率。本文介绍了一个基于Python的学生信息管理系统的设计与实现,该系统具备录入、查询、删除、修改、排序、统计和显示学生信息等功能,能够满足学校对学生信息管理的基本需求。
二、系统设计
(一)功能模块划分
学生信息管理系统主要包含以下功能模块:
-
录入学生信息:用户可以输入学生的基本信息(如ID、姓名、英语成绩、Python成绩、C语言成绩等),并将这些信息保存到文件中。
-
查询学生信息:用户可以通过学生ID或姓名查找特定学生的信息。
-
删除学生信息:用户可以根据学生ID删除指定学生的信息。
-
修改学生信息:用户可以根据学生ID找到特定学生,并修改其信息。
-
排序:用户可以根据英语成绩、Python成绩、C语言成绩或总成绩对学生信息进行升序或降序排序。
-
统计学生总数:系统可以统计并显示当前保存的学生总数。
-
显示所有学生信息:系统可以显示所有学生的信息。
-
退出系统:用户可以选择退出系统。
(二)数据存储设计
学生信息存储在本地文件中,文件名为students.txt
。每个学生的信息以字典的形式存储,然后将字典转换为字符串并按行写入文件。例如:
{"id": "1001", "name": "张三", "english": 85, "python": 90, "c": 78}
(三)技术选型
本系统基于Python语言开发,利用其强大的文件操作和数据处理能力,结合正则表达式模块(re
)和操作系统模块(os
),实现对学生信息的管理。
三、系统实现
(一)主菜单设计
系统启动后,首先显示主菜单,用户可以通过输入数字选择相应的功能模块。主菜单的显示由menu()
函数实现,其代码如下:
def menu():
print('''
╔———————学生信息管理系统————————╗
│ │
│ =============== 功能菜单 =============== │
│ │
│ 1 录入学生信息 │
│ 2 查找学生信息 │
│ 3 删除学生信息 │
│ 4 修改学生信息 │
│ 5 排序 │
│ 6 统计学生总人数 │
│ 7 显示所有学生信息 │
│ 0 退出系统 │
│ ========================================== │
│ 说明:通过数字或↑↓方向键选择菜单 │
╚———————————————————————╝
''')
(二)录入学生信息
用户可以通过选择菜单中的“1 录入学生信息”选项,进入学生信息录入模块。该模块允许用户输入学生的ID、姓名、英语成绩、Python成绩和C语言成绩,并将这些信息保存到文件中。录入功能由insert()
函数实现,其核心代码如下:
def insert():
studentList = []
mark = True
while mark:
id = input("请输入ID(如 1001):")
if not id:
break
name = input("请输入名字:")
if not name:
break
try:
english = int(input("请输入英语成绩:"))
python = int(input("请输入Python成绩:"))
c = int(input("请输入C语言成绩:"))
except:
print("输入无效,不是整型数值....重新录入信息")
continue
student = {"id": id, "name": name, "english": english, "python": python, "c": c}
studentList.append(student)
inputMark = input("是否继续添加?(y/n):")
if inputMark == "y":
mark = True
else:
mark = False
save(studentList)
print("学生信息录入完毕!!!")
(三)查询学生信息
用户可以通过选择菜单中的“2 查找学生信息”选项,进入学生信息查询模块。该模块支持按学生ID或姓名查询学生信息。查询功能由search()
函数实现,其核心代码如下:
def search():
mark = True
student_query = []
while mark:
id = ""
name = ""
if os.path.exists(filename):
mode = input("按ID查输入1;按姓名查输入2:")
if mode == "1":
id = input("请输入学生ID:")
elif mode == "2":
name = input("请输入学生姓名:")
else:
print("您的输入有误,请重新输入!")
search()
with open(filename, 'r') as file:
student = file.readlines()
for list in student:
d = dict(eval(list))
if id and d['id'] == id:
student_query.append(d)
elif name and d['name'] == name:
student_query.append(d)
show_student(student_query)
student_query.clear()
inputMark = input("是否继续查询?(y/n):")
if inputMark == "y":
mark = True
else:
mark = False
else:
print("暂未保存数据信息...")
return
(四)删除学生信息
用户可以通过选择菜单中的“3 删除学生信息”选项,进入学生信息删除模块。该模块允许用户根据学生ID删除指定学生的信息。删除功能由delete()
函数实现,其核心代码如下:
def delete():
mark = True
while mark:
studentId = input("请输入要删除的学生ID:")
if studentId:
if os.path.exists(filename):
with open(filename, 'r') as rfile:
student_old = rfile.readlines()
else:
student_old = []
ifdel = False
if student_old:
with open(filename, 'w') as wfile:
d = {}
for list in student_old:
d = dict(eval(list))
if d['id'] != studentId:
wfile.write(str(d) + "\n")
else:
ifdel = True
if ifdel:
print("ID为 %s 的学生信息已经被删除..." % studentId)
else:
print("没有找到ID为 %s 的学生信息..." % studentId)
else:
print("无学生信息...")
break
show()
inputMark = input("是否继续删除?(y/n):")
if inputMark == "y":
mark = True
else:
mark = False
(五)修改学生信息
用户可以通过选择菜单中的“4 修改学生成绩信息”选项,进入学生信息修改模块。该模块允许用户根据学生ID找到特定学生,并修改其信息。修改功能由modify()
函数实现,其核心代码如下:
def modify():
show()
if os.path.exists(filename):
with open(filename, 'r') as rfile:
student_old = rfile.readlines()
else:
return
studentid = input("请输入要修改的学生ID:")
with open(filename, "w") as wfile:
for student in student_old:
d = dict(eval(student))
if d["id"] == studentid:
print("找到了这名学生,可以修改他的信息!")
while True:
try:
d["name"] = input("请输入姓名:")
d["english"] = int(input("请输入英语成绩:"))
d["python"] = int(input("请输入Python成绩:"))
d["c"] = int(input("请输入C语言成绩:"))
except:
print("您的输入有误,请重新输入。")
else:
break
student = str(d)
wfile.write(student + "\n")
print("修改成功!")
else:
wfile.write(student)
mark = input("是否继续修改其他学生信息?(y/n):")
if mark == "y":
modify()
(六)排序
用户可以通过选择菜单中的“5 排序”选项,进入学生信息排序模块。该模块允许用户根据英语成绩、Python成绩、C语言成绩或总成绩对学生信息进行升序或降序排序。排序功能由sort()
函数实现,其核心代码如下:
def sort():
show()
if os.path.exists(filename):
with open(filename, 'r') as file:
student_old = file.readlines()
student_new = []
for list in student_old:
d = dict(eval(list))
student_new.append(d)
else:
return
ascORdesc = input("请选择(0升序;1降序):")
if ascORdesc == "0":
ascORdescBool = False
elif ascORdesc == "1":
ascORdescBool = True
else:
print("您的输入有误,请重新输入!")
sort()
mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):")
if mode == "1":
student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)
elif mode == "2":
student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)
elif mode == "3":
student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)
elif mode == "0":
student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)
else:
print("您的输入有误,请重新输入!")
sort()
show_student(student_new)
(七)统计学生总数
用户可以通过选择菜单中的“6 统计学生总人数”选项,进入学生信息统计模块。该模块可以统计并显示当前保存的学生总数。统计功能由total()
函数实现,其核心代码如下:
def total():
if os.path.exists(filename):
with open(filename, 'r') as rfile:
student_old = rfile.readlines()
if student_old:
print("一共有 %d 名学生!" % len(student_old))
else:
print("还没有录入学生信息!")
else:
print("暂未保存数据信息...")
(八)显示所有学生信息
用户可以通过选择菜单中的“7 显示所有学生信息”选项,进入学生信息显示模块。该模块可以显示所有学生的信息。显示功能由show()
函数实现,其核心代码如下:
def show():
student_new = []
if os.path.exists(filename):
with open(filename, 'r') as rfile:
student_old = rfile.readlines()
for list in student_old:
student_new.append(eval(list))
if student_new:
show_student(student_new)
else:
print("暂未保存数据信息...")
四、系统运行与测试
为了验证系统的功能和稳定性,我们进行了详细的测试。测试内容包括:
-
录入学生信息:验证系统是否能够正确保存学生信息。
-
查询学生信息:验证系统是否能够根据ID或姓名准确查询学生信息。
-
删除学生信息:验证系统是否能够正确删除指定学生的信息。
-
修改学生信息:验证系统是否能够正确修改学生的信息。
-
排序:验证系统是否能够按照指定的排序方式对学生信息进行排序。
-
统计学生总数:验证系统是否能够正确统计学生总数。
-
显示所有学生信息:验证系统是否能够正确显示所有学生的信息。