python实现简易版学生成绩管理系统

1. 简介

学生成绩管理是学生管理系统的重要组成部分,是学校管理教学、考核、评估、教改和科研工作的重要依据,实现对学生成绩的信息化、规范化管理。

2. 功能需求

2.1 学生信息管理

学生信息管理功能包括增加、修改、删除、查询学生信息等,主要针对学生学号、姓名、性别、出生日期、联系方式、班级、住址等信息。

2.2 学生成绩管理

学生成绩管理功能包括增加、修改、删除、查询学生成绩等,主要针对学生的各项成绩包括课程成绩、期末成绩、总评成绩、综合测评等的管理。

2.3 成绩统计分析

成绩统计分析主要是对学生成绩进行统计、分析,包括对学生班级、年级、学科、教师等各个角度的成绩分析,为班级管理、教学管理提供依据。

2.4 数据备份与恢复

学生成绩管理系统应该具备数据备份功能,保障数据安全性,防止数据丢失。同时还应该具备数据恢复功能,为系统故障、数据错误、误删除等提供恢复方案。

3. 设计思路

本次学生成绩管理系统采用python语言进行开发。根据程序需求,我们需要实现以下功能:

学生的信息录入、信息修改、信息查询。

学生成绩的录入、成绩修改、成绩查询。

学生成绩的统计、分析、查询。

数据备份和恢复。

在实现这些功能时,需要采用面向对象的思想,将系统分成学生类、成绩类等多个类和一些功能函数,通过类与函数之间的相互调用完成程序的各项功能。

4. 功能实现

4.1 学生信息管理

首先,我们定义一个Student类,表示学生信息。该类包括学号、姓名、性别、出生日期、联系方式、班级、住址等学生基本信息,以及增删改查学生信息的方法。

class Student:

def __init__(self, id, name, sex, birth, phone, grade, hometown):

self.id = id

self.name = name

self.sex = sex

self.birth = birth

self.phone = phone

self.grade = grade

self.hometown = hometown

def add_student(self, student_list):

new_id = input("请输入学生学号:")

new_name = input("请输入学生姓名:")

new_sex = input("请输入学生性别:")

new_birth = input("请输入学生出生年月:")

new_phone = input("请输入学生联系方式:")

new_grade = input("请输入学生所在班级:")

new_hometown = input("请输入学生家庭地址:")

new_student = Student(new_id, new_name, new_sex, new_birth, new_phone, new_grade, new_hometown)

student_list.append(new_student)

print("添加成功!")

def delete_student(self, student_list):

del_id = input("请输入要删除的学生学号:")

for student in student_list:

if student.id == del_id:

student_list.remove(student)

print("删除成功!")

def modify_student(self, student_list):

modify_id = input("请输入要修改的学生学号:")

for student in student_list:

if student.id == modify_id:

student.name = input("请输入学生姓名:")

student.sex = input("请输入学生性别:")

student.birth = input("请输入学生出生年月:")

student.phone = input("请输入学生联系方式:")

student.grade = input("请输入学生所在班级:")

student.hometown = input("请输入学生家庭地址:")

print("修改成功!")

def search_student(self, student_list):

search_id = input("请输入要查询的学生学号:")

for student in student_list:

if student.id == search_id:

print(f"学号:{student.id},姓名:{student.name},性别:{student.sex},出生年月:{student.birth},联系方式:{student.phone},班级:{student.grade},家庭地址:{student.hometown}")

在main函数中,我们可以创建一个student_list列表,用于存放全部学生信息。通过while循环加菜单实现对学生信息的增删改查操作,具体代码如下:

def main():

student_list = []

while True:

menu()

choice = input("请输入功能选项:")

if choice == "1":

student = Student("", "", "", "", "", "", "")

student.add_student(student_list)

elif choice == "2":

student = Student("", "", "", "", "", "", "")

student.delete_student(student_list)

elif choice == "3":

student = Student("", "", "", "", "", "", "")

student.modify_student(student_list)

elif choice == "4":

student = Student("", "", "", "", "", "", "")

student.search_student(student_list)

elif choice == "5":

break

else:

print("输入有误,请重新输入!")

4.2 学生成绩管理

在学生成绩管理中,我们定义一个成绩Score类,表示学生的某一门课程成绩。该类包括学生学号、学科、平时成绩、期末成绩、总评成绩等,以及增删改查成绩信息的方法。

class Score:

def __init__(self, id, subject, daily_score, final_score, total_score):

self.id = id

self.subject = subject

self.daily_score = daily_score

self.final_score = final_score

self.total_score = total_score

def add_score(self, score_list):

new_id = input("请输入要添加成绩的学生学号:")

for student in student_list:

if student.id == new_id:

new_subject = input("请输入课程名称:")

new_daily_score = input("请输入平时成绩:")

new_final_score = input("请输入期末成绩:")

new_total_score = float(new_daily_score) * 0.3 + float(new_final_score) * 0.7

new_score = Score(new_id, new_subject, new_daily_score, new_final_score, new_total_score)

score_list.append(new_score)

print("添加成功!")

return

print("不存在该学生!")

def delete_score(self, score_list):

del_id = input("请输入要删除成绩的学生学号:")

del_subject = input("请输入要删除成绩的课程名称:")

for score in score_list:

if score.id == del_id and score.subject == del_subject:

score_list.remove(score)

print("删除成功!")

def modify_score(self, score_list):

modify_id = input("请输入要修改成绩的学生学号:")

modify_subject = input("请输入要修改成绩的课程名称:")

for score in score_list:

if score.id == modify_id and score.subject == modify_subject:

score.daily_score = input("请输入平时成绩:")

score.final_score = input("请输入期末成绩:")

score.total_score = float(score.daily_score) * 0.3 + float(score.final_score) * 0.7

print("修改成功!")

return

print("不存在该成绩信息!")

def search_score(self, score_list):

search_id = input("请输入要查询成绩的学生学号:")

search_subject = input("请输入要查询成绩的课程名称:")

for score in score_list:

if score.id == search_id and score.subject == search_subject:

print(f"学号:{score.id},学科:{score.subject},平时成绩:{score.daily_score},期末成绩:{score.final_score},总评成绩:{score.total_score}")

return

print("不存在该成绩信息!")

在main函数中,我们可以创建一个score_list列表,用于存放全部学生成绩信息。通过while循环加菜单实现对学生成绩的增删改查操作,具体代码如下:

def main():

student_list = []

score_list = []

while True:

score_menu()

choice = input("请输入功能选项:")

if choice == "1":

score = Score("", "", "", "", "")

score.add_score(student_list, score_list)

elif choice == "2":

score = Score("", "", "", "", "")

score.delete_score(score_list)

elif choice == "3":

score = Score("", "", "", "", "")

score.modify_score(score_list)

elif choice == "4":

score = Score("", "", "", "", "")

score.search_score(score_list)

elif choice == "5":

break

else:

print("输入有误,请重新输入!")

4.3 成绩统计分析

成绩统计分析是对学生成绩进行统计、分析,在本系统中,我们将全校学生成绩先按照各科平均分排序,再按照总成绩排序,实现对学生成绩的分析运算。

def statistic_analysis(score_list):

'''

按照平均分排序和总成绩排序

'''

avg_score_dict = {} # 存储每门课程平均分的字典

for score in score_list:

if score.subject in avg_score_dict:

avg_score_dict[score.subject].append(score.total_score)

else:

avg_score_dict[score.subject] = [score.total_score]

avg_list = []

for subject in avg_score_dict:

avg_list.append([subject, sum(avg_score_dict[subject])/len(avg_score_dict[subject])])

avg_list.sort(key=lambda x: x[1], reverse=True) # 按照平均分从高到低排序

for subject in avg_list:

print(f"{subject[0]}平均分为{subject[1]}分。")

score_list.sort(key=lambda x: x.total_score, reverse=True) # 按照总分从高到低排序

for i in range(min(5, len(score_list))):

print(f"第{i + 1}名:学号{score_list[i].id},姓名{score_list[i].name},总分{score_list[i].total_score}分。")

4.4 数据备份与恢复

数据的备份和恢复需要用到pickle模块,该模块可以将python对象序列化后保存在文件中,并在需要的时候将其恢复出来。

def backup_student(student_list):

with open("student.dat", "wb") as f:

pickle.dump(student_list, f)

def restore_student():

try:

with open("student.dat", "rb") as f:

student_list = pickle.load(f)

except:

student_list = []

return student_list

def backup_score(score_list):

with open("score.dat", "wb") as f:

pickle.dump(score_list, f)

def restore_score():

try:

with open("score.dat", "rb") as f:

score_list = pickle.load(f)

except:

score_list = []

return score_list

5. 结尾

本文讲解了python实现简易版学生成绩管理系统的设计思路和具体实现。本系统分为学生信息管理、学生成绩管理、成绩统计分析、数据备份与恢复四个部分,其中涉及到python的面向对象编程、pickle模块等相关知识点。开发出符合实际需求的学生成绩管理系统,可以提高学校教学管理工作的效率和质量。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签