学生信息管理系统
一、目的
1)认识函数,掌握函数的定义和调用方式;
2)掌握不同的参数传递方法及函数的返回值;
3)了解变量作用域,掌握局部变量和全局变量的特点;
4)掌握匿名函数和递归函数的定义和使用;
5)掌握文件的基本操作。
二、课程目标
了解Python的发展历程和未来趋势,了解Python在社会发展中起到的积极作用以及作为软件工程师应具有的一些职业美德和坚守的法律底线。掌握脚本语言程序设计的编程规范、函数模块化编程、文件操作。
三、任务
编程实现学生信息管理系统。
学生信息管理系统应具备以下功能:
(1)实时地将更新后的学生信息保存到磁盘文件中;
(2)添加学生及成绩信息;
(3)修改和删除学生信息;
(4)查询学生信息;
(5)根据学生成绩进行排序;
(6)统计学生的总分。
实现的界面要求如下:
学生信息管理系统
1:录入学生信息
2:查找学生信息
3:删除学生信息
4:修改学生信息
5:对学生进行排序
6:统计学生总人数
7:显示所有学生信息
8:退出系统
请输入您要使用的功能对应的序号:
四、要求
对每个任务求解步骤是:算法思想、程序代码、运行结果的截图。
五、任务设计及结果
1.问题分析
(1)实时地将更新后的学生信息保存到磁盘文件中;
(2)添加学生及成绩信息;
(3)修改和删除学生信息;
(4)查询学生信息;
(5)根据学生成绩进行排序;
(6)统计学生的总分。
2.算法设计
1:录入学生信息: add_student() students.append()
2:查找学生信息: find_student()
3:删除学生信息: delete_student() students.remove()
4:修改学生信息: update_student()
5: 对学生进行排序:sort_students() students.sort(key=lambda x: int(x[“scores”]), reverse=True)
6:统计学生总人数:count_students() count=len()
7:显示所有学生信息:show_students()
8:读取学生列表:load_data()
9:主系统菜单:menu()
10:保存学生列表:save_data()
3.程序代码
import json
# 定义一个空的学生列表,用于存储学生信息
students = []
#定义主菜单函数
def menu():
print("*************学生信息管理系统*************")
print("1:录入学生信息")
print("2:查找学生信息")
print("3:删除学生信息")
print("4:修改学生信息")
print("5:对学生进行排序")
print("6:统计学生总人数")
print("7:显示所有学生信息")
print("8:退出系统")
print("**************************************")
# 将学生列表保存到磁盘文件中
def save_data():
#将students列表中的数据以JSON格式保存到students.json文件中
with open('students.json', 'w') as f:
json.dump(students, f)
# 从磁盘文件中读取学生列表
def load_data():
# 全局变量
global students
#try-expect处理文件操作可能发生的异常
try:
with open('students.json', 'r') as f:
students = json.load(f)
except FileNotFoundError:
# 如果文件不存在,则初始化为空列表
students = []
#添加学生信息
def add_student():
ID = input("请输入学号:")
name = input("请输入学生姓名:")
prog_score = int(input("请输入学生程序设计成绩:"))
math_score = int(input("请输入学生高数成绩:"))
phil_score = int(input("请输入学生马哲成绩:"))
scores = prog_score + math_score + phil_score
student = {"ID": ID, "name": name, "prog_score": prog_score,"math_score": math_score,"phil_score": phil_score,"scores": scores}
students.append(student)
save_data()
#查找学生信息
def find_student():
ID = input("请输入要查找的学生学号:")
name = input("请输入要查找的学生姓名:")
for student in students:
if student["name"] == name and student["ID"] == ID:
print(student)
return
print("找不到该学生信息")
#删除学生信息
def delete_student():
ID = input("请输入要删除的学生学号:")
name = input("请输入要删除的学生姓名:")
for student in students:
if student["name"] == name and student["ID"] == ID:
print(f"删除前的学生信息{student}")
students.remove(student)
save_data()
print("删除成功")
print(f"删除后的学生总信息{students}")
return
print("找不到该学生信息")
#修改学生信息
def update_student():
ID = input("请输入要修改的学生学号:")
name = input("请输入要修改的学生姓名:")
for student in students:
if student["name"] == name and student["ID"] == ID:
print(f"修改前的学生信息{student}")
prog_score = int(input("请修改学生的程序设计成绩:"))
math_score = int(input("请修改学生的高数成绩:"))
phil_score = int(input("请修改学生的马哲成绩:"))
scores = prog_score + math_score + phil_score
student["prog_score"] = prog_score
student["math_score"] = math_score
student["phil_score"] = phil_score
student["scores"] = scores
save_data()
print("修改成功")
print(f"修改后的学生信息{student}")
return
print("找不到该学生信息")
#对学生进行排序
def sort_students():
students.sort(key=lambda x: int(x["scores"]), reverse=True)
print("按学生成绩排序成功")
for student in students:
print(student)
#统计学生总人数
def count_students():
count = len(students)
print("学生总人数为:", count)
#显示所有学生信息
def show_students():
print("学生信息如下:")
for student in students:
print(student)
# 加载数据文件
load_data()
while True:
menu()
option = input("请输入您要使用的功能对应的序号:")
if option == '1':
add_student()
elif option == '2':
find_student()
elif option == '3':
delete_student()
elif option == '4':
update_student()
elif option == '5':
sort_students()
elif option == '6':
count_students()
elif option == '7':
show_students()
elif option == '8':
break
else:
print("输入错误,请重新输入")
4.运行结果
1:录入学生信息
2:查找学生信息
3:删除学生信息
4:修改学生信息
5:对学生进行排序
6:统计学生总人数
7:显示所有学生信息
8:退出系统