Python实训题目:学生成绩管理与分析系统

简介: 登记、整理和分析各年级学生多门课程的成绩

一、题目要求



二、Python代码实现


登记、整理和分析各年级学生多门课程的成绩,约定如下:

  • 每位学生所选课程总数为:6
  • 课程有:语文 英语 数学 物理 化学 生物 政治 历史 地理
  • 登记信息格式为:学号 姓名 班级 科目。。。
  • 登记成绩时,该学生没选这门课,按回车跳过即可,录入空值


导入 pandas 和初始化一个空列表


importpandasaspd# pandas的一些设置   打印DataFrame时格式好看一些pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', 300)
students_list= []     # 初始化一个空列表   之后存放每位学生的信息字典


打印菜单选项界面


# 制作简洁美观的菜单页面print("================== 欢迎进入学生成绩系统 ==================")
print("=======            1.登记学生成绩              =========")
print("=======            2.删除学生成绩              =========")
print("=======            3.修改学生成绩              =========")
print("=======            4.显示学生成绩              ==========")
print("=======            5.学生成绩分析              ==========")
print("=======            6.退出系统                  ==========")
print("===========================================================")
# 输入要执行的功能choice=input("请输入你所要执行的功能:")


登记学生成绩


# 登记学生成绩ifchoice=='1':
while1:
print("================== 登记学生成绩 ================")
id_name=input("请输入学生的学号:")
name=input("请输入学生的姓名:")
classes=input("请输入学生所属班级:")
# 以下输入成绩  该学生没选这门课 按回车即可Chinese=input("请输入学生的语文成绩:")
Math=input("请输入学生的数学成绩:")
English=input("请输入学生的英语成绩:")
Physics=input("请输入学生的物理成绩:")
Chemistry=input("请输入学生的化学成绩:")
Biology=input("请输入学生的生物成绩:")
Politics=input("请输入学生的政治成绩:")
History=input("请输入学生的历史成绩:")
Geography=input("请输入学生的地理成绩:")
students_list.append(
                {"学号": id_name, "姓名": name, "班级": classes, "语文": Chinese, "数学": Math, "英语": English,
"物理": Physics, "化学": Chemistry, "生物": Biology, "政治": Politics, "历史": History, "地理":Geography                 })
print("=============================================")
print("========      1.继续添加学生成绩      ==========")
print("========      2.返回上一层            ==========")
print("==============================================")
pd_01=input("请输入序号:")
ifpd_01=="1":
continueelifpd_01=='2':
breakelse:
print("请输入正确的序号!")
continue


删除学生成绩


# 删除学生成绩elifchoice=='2':
whileTrue:
print("================= 删除学生成绩 ====================")
print("======       1.按姓名删除学生成绩     ========")
print("======       2.按学号删除学生成绩     ========")
print("======       3.返回上一层            =========")
print("==================================================")
pd_02=input("请输入选择:")
ifpd_02=='1':
name=input("请输入要删除的学生姓名:")
flag=0forscore_dictinstudents_list:
ifscore_dict["姓名"] ==name:
flag=1students_list.remove(score_dict)
print("删除成功!")
breakifflag==0:
print("没有找到这个学生的信息,无法删除!")
elifpd_02=='2':
name=input("请输入要删除的学生学号:")
flag=0forscore_dictinstudents_list:
ifscore_dict["姓名"] ==name:
flag=1students_list.remove(score_dict)
print("删除成功!")
breakifflag==0:
print("没有找到这个学生的信息,无法删除!")
elifpd_02=='3':
breakelse:
print("请重新选择!")
continue


修改学生成绩


# 修改学生成绩elifchoice=='3':
whileTrue:
print("=================  修改学生成绩 ====================")
print("========            1.修改学生语文成绩      =========")
print("========            2.修改学生数学成绩      =========")
print("========            3.修改学生英语成绩      ==========")
print("========            4.修改学生物理成绩      ==========")
print("========            5.修改学生化学成绩      ==========")
print("========            6.修改学生生物成绩      ==========")
print("========            7.修改学生政治成绩      ==========")
print("========            8.修改学生历史成绩      ==========")
print("========            9.修改学生地理成绩      ==========")
print("========            10.返回上一层            ==========")
print("===================================================")
name=input("请输入要修改成绩的学生的姓名:")
flag=0i=0forscore_dictinstudents_list:
i+=1ifscore_dict["姓名"] ==name:
flag=1ifflag==0:
print("没有找到这个学生的信息,无法修改!")
continueinfo=students_list[i-1]
pd_03=input("请输入选择>>>")
ifpd_03=="1":
change_Math=int(input("请输入修改后成绩:"))
info["语文"] =change_Mathprint("修改成功!")
breakelifpd_03=="2":
change_Chinese=int(input("请输入修改后成绩:"))
info["数学"] =change_Chineseprint("修改成功!")
breakelifpd_03=="3":
change_English=int(input("请输入修改后成绩:"))
info["英语"] =change_Englishprint("修改成功!")
breakelifpd_03=="4":
change_English=int(input("请输入修改后成绩:"))
info["物理"] =change_Englishprint("修改成功!")
breakelifpd_03=="5":
change_English=int(input("请输入修改后成绩:"))
info["化学"] =change_Englishprint("修改成功!")
breakelifpd_03=="6":
change_English=int(input("请输入修改后成绩:"))
info["生物"] =change_Englishprint("修改成功!")
breakelifpd_03=="7":
change_English=int(input("请输入修改后成绩:"))
info["政治"] =change_Englishprint("修改成功!")
breakelifpd_03=="8":
change_English=int(input("请输入修改后成绩:"))
info["历史"] =change_Englishprint("修改成功!")
breakelifpd_03=="9":
change_English=int(input("请输入修改后成绩:"))
info["地理"] =change_Englishprint("修改成功!")
breakelifpd_03=="10":
breakelse:
print("请重新选择!")
continue


显示学生成绩 并将数据保存到Excel


# 函数功能:显示登记了的成绩信息  并将信息保存到Exceldefshow_scores(info_list):
# 生成DataFrame对象data=pd.DataFrame(info_list)
print(data)
# 将DataFrame数据保存到Excel 当前目录下  不要自动索引data.to_excel('学生成绩信息.xlsx', index=False)
# 显示学生成绩 并将数据保存到Excelelifchoice=="4":
print("=================  显示学生成绩 ==================")
show_scores(students_list)


分析学生成绩


# 函数功能:对各门成绩进⾏分析# 得到每个班级的各⻔成绩平均分,每门课程的总平均分,选修不同课程的⼈数等defanalysis_score(info_list):
# 生成DataFrame对象data=pd.DataFrame(info_list)
# 该函数将被应用于整个DataFrame,可以转换为数字类型的列将被转换# 而不能(例如,它们包含非数字字符串或日期)的列将被单独保留data=data.apply(pd.to_numeric, errors='ignore')
data['学号'] =data['学号'].apply(str)    # 学号的数据类型还是变为字符串# 每个班级各门成绩平均分print('--------------------- 每个班级各门成绩平均分如下 ---------------------------')
df1=data.groupby('班级').mean()
print(df1)
print('------------------------------------')
# 每门课程总的总平均分print('------------------------- 每门课程的总平均分如下 ----------------------------')
df2=data.iloc[::, 3:].mean()
print(df2)
print('------------------------------------')
print('------------------------ 选修不同课程的人数统计如下 ---------------------------')
# 选修不同课程的人数forsubjectin ['语文', '数学', '英语', '物理', '化学', '生物', '政治', '历史', '地理']:
df3=data[subject].dropna()
print(f'选修 {subject} 的人数为:{len(df3)}')
# 分析学生成绩elifchoice=='5':
print("=================  分析学生成绩 ==================")
analysis_score(students_list)


其他处理


# 退出系统elifchoice=="6":
print("========================== 退出系统! =============================")
exit()
# 输入指令有误  重新输入else:
print("输入指令有误,请重新输入!")
continue


完整代码如下:


# -*- coding: UTF-8 -*-"""@File    :实训题目.py@Author  :叶庭云@CSDN    :https://yetingyun.blog.csdn.net/"""importpandasaspd# pandas的一些设置   打印DataFrame时格式好看一些pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.width', 300)
"""登记、整理和分析各年级学生多门课程的成绩约定如下:1.每位学生所选课程总数为:62.课程有:语文 英语 数学 物理 化学 生物 政治 历史 地理3.登记信息格式为:学号 姓名 班级  科目。。。4.登记成绩时  该学生没选这门课 按回车跳过即可  录入空值"""students_list= []     # 初始化一个空列表   之后存放每位学生的信息字典# 函数功能:显示登记了的成绩信息  并将信息保存到Exceldefshow_scores(info_list):
# 生成DataFrame对象data=pd.DataFrame(info_list)
print(data)
# 将DataFrame数据保存到Excel 当前目录下  不要自动索引data.to_excel('学生成绩信息.xlsx', index=False)
# 函数功能:对各门成绩进⾏分析# 得到每个班级的各⻔成绩平均分,每门课程的总平均分,选修不同课程的⼈数等defanalysis_score(info_list):
# 生成DataFrame对象data=pd.DataFrame(info_list)
# 该函数将被应用于整个DataFrame,可以转换为数字类型的列将被转换# 而不能(例如,它们包含非数字字符串或日期)的列将被单独保留data=data.apply(pd.to_numeric, errors='ignore')
data['学号'] =data['学号'].apply(str)    # 学号的数据类型还是变为字符串# 每个班级各门成绩平均分print('--------------------- 每个班级各门成绩平均分如下 ---------------------------')
df1=data.groupby('班级').mean()
print(df1)
print('------------------------------------')
# 每门课程总的总平均分print('------------------------- 每门课程的总平均分如下 ----------------------------')
df2=data.iloc[::, 3:].mean()
print(df2)
print('------------------------------------')
print('------------------------ 选修不同课程的人数统计如下 ---------------------------')
# 选修不同课程的人数forsubjectin ['语文', '数学', '英语', '物理', '化学', '生物', '政治', '历史', '地理']:
df3=data[subject].dropna()
print(f'选修 {subject} 的人数为:{len(df3)}')
whileTrue:
# 制作简洁美观的菜单页面print("================== 欢迎进入学生成绩系统 ==================")
print("=======            1.登记学生成绩              =========")
print("=======            2.删除学生成绩              =========")
print("=======            3.修改学生成绩              =========")
print("=======            4.显示学生成绩              ==========")
print("=======            5.学生成绩分析              ==========")
print("=======            6.退出系统                  ==========")
print("===========================================================")
# 输入要执行的功能choice=input("请输入你所要执行的功能:")
# 登记学生成绩ifchoice=='1':
while1:
print("================== 登记学生成绩 ================")
id_name=input("请输入学生的学号:")
name=input("请输入学生的姓名:")
classes=input("请输入学生所属班级:")
# 以下输入成绩  该学生没选这门课 按回车即可Chinese=input("请输入学生的语文成绩:")
Math=input("请输入学生的数学成绩:")
English=input("请输入学生的英语成绩:")
Physics=input("请输入学生的物理成绩:")
Chemistry=input("请输入学生的化学成绩:")
Biology=input("请输入学生的生物成绩:")
Politics=input("请输入学生的政治成绩:")
History=input("请输入学生的历史成绩:")
Geography=input("请输入学生的地理成绩:")
students_list.append(
                {"学号": id_name, "姓名": name, "班级": classes, "语文": Chinese, "数学": Math, "英语": English,
"物理": Physics, "化学": Chemistry, "生物": Biology, "政治": Politics, "历史": History, "地理":Geography                 })
print("=============================================")
print("========      1.继续添加学生成绩      ==========")
print("========      2.返回上一层            ==========")
print("==============================================")
pd_01=input("请输入序号:")
ifpd_01=="1":
continueelifpd_01=='2':
breakelse:
print("请输入正确的序号!")
continue# 删除学生成绩elifchoice=='2':
whileTrue:
print("================= 删除学生成绩 ====================")
print("======       1.按姓名删除学生成绩     ========")
print("======       2.按学号删除学生成绩     ========")
print("======       3.返回上一层            =========")
print("==================================================")
pd_02=input("请输入选择:")
ifpd_02=='1':
name=input("请输入要删除的学生姓名:")
flag=0forscore_dictinstudents_list:
ifscore_dict["姓名"] ==name:
flag=1students_list.remove(score_dict)
print("删除成功!")
breakifflag==0:
print("没有找到这个学生的信息,无法删除!")
elifpd_02=='2':
name=input("请输入要删除的学生学号:")
flag=0forscore_dictinstudents_list:
ifscore_dict["姓名"] ==name:
flag=1students_list.remove(score_dict)
print("删除成功!")
breakifflag==0:
print("没有找到这个学生的信息,无法删除!")
elifpd_02=='3':
breakelse:
print("请重新选择!")
continue# 修改学生成绩elifchoice=='3':
whileTrue:
print("=================  修改学生成绩 ====================")
print("========            1.修改学生语文成绩      =========")
print("========            2.修改学生数学成绩      =========")
print("========            3.修改学生英语成绩      ==========")
print("========            4.修改学生物理成绩      ==========")
print("========            5.修改学生化学成绩      ==========")
print("========            6.修改学生生物成绩      ==========")
print("========            7.修改学生政治成绩      ==========")
print("========            8.修改学生历史成绩      ==========")
print("========            9.修改学生地理成绩      ==========")
print("========            10.返回上一层            ==========")
print("===================================================")
name=input("请输入要修改成绩的学生的姓名:")
flag=0i=0forscore_dictinstudents_list:
i+=1ifscore_dict["姓名"] ==name:
flag=1ifflag==0:
print("没有找到这个学生的信息,无法修改!")
continueinfo=students_list[i-1]
pd_03=input("请输入选择>>>")
ifpd_03=="1":
change_Math=int(input("请输入修改后成绩:"))
info["语文"] =change_Mathprint("修改成功!")
breakelifpd_03=="2":
change_Chinese=int(input("请输入修改后成绩:"))
info["数学"] =change_Chineseprint("修改成功!")
breakelifpd_03=="3":
change_English=int(input("请输入修改后成绩:"))
info["英语"] =change_Englishprint("修改成功!")
breakelifpd_03=="4":
change_English=int(input("请输入修改后成绩:"))
info["物理"] =change_Englishprint("修改成功!")
breakelifpd_03=="5":
change_English=int(input("请输入修改后成绩:"))
info["化学"] =change_Englishprint("修改成功!")
breakelifpd_03=="6":
change_English=int(input("请输入修改后成绩:"))
info["生物"] =change_Englishprint("修改成功!")
breakelifpd_03=="7":
change_English=int(input("请输入修改后成绩:"))
info["政治"] =change_Englishprint("修改成功!")
breakelifpd_03=="8":
change_English=int(input("请输入修改后成绩:"))
info["历史"] =change_Englishprint("修改成功!")
breakelifpd_03=="9":
change_English=int(input("请输入修改后成绩:"))
info["地理"] =change_Englishprint("修改成功!")
breakelifpd_03=="10":
breakelse:
print("请重新选择!")
continue# 显示学生成绩 并将数据保存到Excelelifchoice=="4":
print("=================  显示学生成绩 ==================")
show_scores(students_list)
# 分析学生成绩elifchoice=='5':
print("=================  分析学生成绩 ==================")
analysis_score(students_list)
# 退出系统elifchoice=="6":
print("========================== 退出系统! =============================")
exit()
# 输入指令有误  重新输入else:
print("输入指令有误,请重新输入!")
continue

运行效果符合题目要求

目录
相关文章
|
7天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
97 70
|
17天前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品安全追溯系统的深度学习模型
使用Python实现智能食品安全追溯系统的深度学习模型
41 4
|
27天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
6天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
58 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
7天前
|
机器学习/深度学习 算法 前端开发
基于Python深度学习的果蔬识别系统实现
果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。
18 4
基于Python深度学习的果蔬识别系统实现
|
2月前
|
机器学习/深度学习 传感器 存储
使用 Python 实现智能地震预警系统
使用 Python 实现智能地震预警系统
130 61
|
1月前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
51 2
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
24天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
72 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
24天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
67 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型