目录

项目总览

生活小故事引入

项目思路

项目实现

功能改善

代码展示

效果演示

项目后期

项目适用

每文一语

项目总览

生活小故事引入

微风和煦,散乱在办公桌上的测验小试卷还有几分“热度”,在小学助教的小王老师刚刚批改完昨天的语文单元测评,显得有些疲惫,但脸上却是慢慢的欣慰。看来通过最近的监督学习模型的转化和实践,他们的成绩有大幅度的提升,正准备把这个学习方法分享给其他在办公室的老师,上课铃响起了。像往常一样,教室外面陆陆续续的孩子,钻进了教室,清脆的“老师好!”成了这一时刻的主题曲,虽然只有短短的几秒钟,但却让每一位老师很“享受”,感觉就是一种动力加速着每一位老师的转化率。

本想休息一下的小王老师,想了想下下节课就是他的课了,得赶紧把成绩登记了待会给大家公布一下,顺便分析一下成绩。像往常一样正要新建一个Excel表格的时候,电脑桌面突然弹出一个广告页面“学习Python升职加薪.....”,心里正嘀咕着:“现在电脑的自动拦截功能也不好使了”,正准备关掉的时候,小王老师发现前几天不是在自学Python吗,感觉掌握了基础语法用处也不大呀。可不可以用Python写一个成绩录入加分析智能的小程序,这样就不用每次还要打开Excel,点各种排序,各种函数来分析了,平日里喜欢创新的它,正在想要不要实现一下。

这时窗外突然传来几声:“加油”!他探头欲望,原来是正在上体育课的小二班在组织跑步比赛,本来有点犹豫的他现在似乎被这几声突如其来的鼓励所打动,不说了还有35分钟,不试一试怎么知道可不可以呢?于是他自信满满的打开了之前安装好的pycharm......

项目思路

经过一番构思后,他把需要实现的功能打在编辑器屏幕上,接下来就是开始搭建框架了,封装函数了,首先引入了两个库

import numpy as np

import csv

项目实现

这个时候,小王老师开始码代码了,说是迟那时快,思路来了就是无法阻挡,花了15分钟就写好了框架代码,结果试了几次感觉不够智能,因为写的记录只保存在电脑的内存里面,并没有写入磁盘,那岂不是每一次运行之后关闭就没了,他想了一下如果要是录入不完那岂不是下次又要从头再来。他想了想那不行,必须要写入文件,这样下次运行就可以直接按照上一次还没录入完毕的开始,花了几分钟改善了这个。

功能改善

测试成功之后,他发现自己可以根据自己需要来选择场景按钮,如果是想要重新录入就直接清空之前的,如果不想要清空这个就追加在文件后面,代码构造如下:

def write_record_0():

import csv

a = []

dict = records[0]

for headers in sorted(dict.keys()): # 把字典的键取出来

a.append(headers)

header = a # 把列名给提取出来,用列表形式呈现

with open('成绩数据.csv', 'w', newline='', encoding='utf-8') as f:

writer = csv.DictWriter(f, fieldnames=header) # 提前预览列名,当下面代码写入数据时,会将其一一对应。

writer.writeheader() # 写入列名

writer.writerows(records) # 写入数据

def write_record_1():

import csv

with open('成绩数据.csv', 'w', newline='', encoding='utf-8') as f:

for i in records:

data = []

data.append(i['name'])

data.append(i['score'])

wf = csv.writer(f)

wf.writerow(data) # 写入一行数据

一个是追加一个为覆盖,这里没有送到a属性,只是用自己的方法思路设计的一个,还是可以的,如果用a这个属性,测试过程中后面有一个小功能好像无法尽善尽美

但是小王老师又发现一个问题,如果自己在录入的过程中过于激动,点快了按钮它总是报错,这样岂不是就成为了bug了吗,那不行如果要推广给其他老师,到时候他们会吐槽我的,他又开始改了一些代码,发现现在可以避免bug出现了,目前优化之后好像还没发现什么bug

利用Python的异常处理和循环判断控制,达到了使用者的最大便利

代码展示

功能打印函数

def print_menu():

print("""

\t学生成绩管理系统-智能录入+分析系统

0 - 退出

1 - 打印功能菜单栏

2 - 显示所有学生信息

3 - 添加学生信息

4 - 查找学生信息

5 - 删除学生信息

6 - 排序功能

7 - 写入此次操作数据并完成更新

8 - 数据分析展示功能(最高分,最低分,平均分,及格人数,及格率,分数段详情)

""")

文件加载函数

def csv_students():

global student_infos

global records

import csv

student_infos = []

with open(r"成绩数据.csv", encoding='utf-8-sig') as file: # 将你的CSV文件和该程序文件放在一个文件夹下面

f_csv = csv.reader(file) # 读取文件里面的每一行数据,转换为列表赋值给新的变量

header = next(f_csv) # 利用迭代的方法,直接取出表头行(标题行),更新f_csv的数据,去除了标题行

for row in f_csv:

student_info = {}

for index in range(2):

if index == 0:

student_info[header[index]] = row[index]

if index == 1:

student_info[header[index]] = float(row[index])

# print(type(student_info[header[index]]))

student_infos.append(student_info)

records = student_infos

功能按钮函数

def user_choice():

try:

choice = input("请选择(0~8):")

# 确保用户的选择是在0~8

while int(choice) > 8 or int(choice) < 0:

choice = input("请重新选择(0~8):")

return choice

except:

print("你的输入有错,程序已终结!请慢一点输入哟!")

增删改查函数

def add_record():

name = input('请输入学生的名字:')

while name == '':

name = input('请输入学生的名字:')

# 确定学生信息是否已经录入

for info in records:

if info['name'] == name:

print("该学生已经存在")

break

else:

score = float(input('请输入成绩(0~100):'))

while score < 0.0 or score > 100.0:

score = float(input('请输入成绩(0~100):'))

info = {

'name': name,

'score': score

}

records.append(info)

print(records)

def display_records():

print("\t所有学生信息")

for info in records:

print("姓名:", info['name'], '\t成绩:', info['score'])

def search_record():

name = input('请输入学生的名字:')

while name == '':

name = input('请输入学生的名字:')

for info in records:

if info['name'] == name:

print("该学生成绩为:", info['score'])

break

else:

print("没有该学生")

def del_record():

name = input('请输入学生的名字:')

while name == '':

name = input('请输入学生的名字:')

for info in records:

if info['name'] == name:

records.remove(info)

print("已删除!")

break

else:

print("没有该用户")

数据分析函数

def dis_data():

pjj = []

for pj in records:

pjj.append(float((pj['score'])))

print("\t本次成绩数据的平均分是:{}".format(round(np.mean(pjj)), 3))

bjg = int(sum(i < 60 for i in pjj))

print("\t本次数据不及格的有{}人!".format(bjg))

zs = int(len(pjj))

print("\t本次数据的及格率为{}".format((zs - bjg) / zs))

print("\t大于90分的有{}人\t等级为优秀!".format(sum(i > 90 for i in pjj)))

print("\t80-90分的有{}人\t等级为良好!".format(sum(90 >= i > 80 for i in pjj)))

print("\t70-80分的有{}人\t等级为中等!".format(sum(80 >= i > 70 for i in pjj)))

print("\t60-70分的有{}人\t等级为合格!".format(sum(70 >= i > 60 for i in pjj)))

print("\t小于60分的有{}人\t等级为差!".format(bjg))

效果演示

经过敲代码完成,小王老师发现了一个道理,就是这个东西要自己去寻找漏洞,才能做的十分的实用

项目后期

刚好还有下课了,小王老师把本次的程序分享给办公室的其他老师,让他们也试一试这个,然后他就去上课去了,你觉得他是去激励学生还是奖励学生?

项目适用

1.平时的小测验成绩登记分析

2.边改边登记的作业

3.体育测验登记

4.单科成绩管理

5.......

时间过得真快,慢慢的小王老师发现这个代码被很多人拿去用,于是他写下博客,发现阅读量非常大,于是他又深耕于算法设计与Python代码里面

本次的项目采用的故事类的解说,希望大家喜欢,故事情节都是虚构的,我不是那个小王老师哟,哈哈哈,如果有需要代码的请私信我,送上自己的一份力,帮助大家解决更多的日常烦恼!

每文一语

故事永远是讲给别人听的,只有别人的才能讲个自己听,己所不欲,勿施于人。

python 成绩分析系统_用Python编写成绩管理分析系统(故事升级版)相关推荐

  1. mysql+web日志分析工具_用Python+MySQL实现2017年web日志分析报告

    日志分析在web系统中故障排查.性能分析方面有着非常重要的作用.目前,开源的ELK系统是成熟且功能强大的选择.但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度和效率是有保证的)的实 ...

  2. python人工智能决策系统_用Python学人工智能

    spContent=本课程是教育部-百度产学合作协同育人项目成果,课程将介绍智能计算机系统设计的基本思想和技术,具体重点将放在使用Python语言实现上述的智能系统.课程中学习的技术适用于各类人工智能 ...

  3. vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe

    1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...

  4. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  5. python模拟登录教务系统_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  6. python课表查询系统_使用python抓取广西科技大学教务系统课程表

    因学校教务系统课程表查询功能累赘,服务器经常挂,同时也不适合手机端查询,所以用python开发爬虫抓取所有课程表,放到我的服务器上面. 本文仅供学习. 特性 中途退出程序再次运行不会抓取到重复课程表 ...

  7. 基于python的智能家居系统_基于Python Django的可扩展智能家居系统

    基于 Python Django 的可扩展智能家居系统 龚 鸣,余杨志,邓宏涛 * [摘 要] 针对现阶段智能家居系统智能化迭代开发的需求,分析当前智能家居 系统主控的相关实现技术,提出了基于 Pyt ...

  8. 基于python的排课表系统_利用python爬取广西科技大学教务管理信息系统班级课表...

    操作环境 python 3.6.1 pycharm 5.0.3 WampServer 3.0.6 windows 8(64位) 特点 1.中途退出程序或者断网之后重连再次运行不会抓取到重复的课程表 2 ...

  9. python抢课脚本 验证码_用Python实现模拟登录正方教务系统抢课

    最近学校开始选课,但是如果选课时间与自己的事情冲突,这时候就可以使用Python脚本自助抢课,抢课的第一步即是模拟登录,需要模拟登录后保存登录信息然后再进行操作. 而且整个流程是比较简单,这是因为正方 ...

  10. python实现情感分析流程图_用python实现文本情感分析

    注:本文转载自知乎专栏 情感分析就是分析一句话说得是很主观还是客观描述,分析这句话表达的是积极的情绪还是消极的情绪. 原理 比如这么一句话:"这手机的画面极好,操作也比较流畅.不过拍照真的太 ...

最新文章

  1. 云数据未来面临的问题
  2. MongoDB 安装配置
  3. mysql2014授权设置_SQLServer2014许可证(六)虚拟化中的授权
  4. nyoj 10 skiing(DAG上的最长路,备忘录方法)
  5. 计算机编程术语. dsp,什么是数字信号处理器(DSP)
  6. CVPR 2019 Oral | 华科开源效果超群的人体姿态迁移算法
  7. 研究员使用新型CPU攻击技术 “SmashEx” 攻破 Intel SGX
  8. 【cocos2d-x 手游研发小技巧(4)与Android混编实现换“头像图片”】
  9. Python入门+进阶 第1章 Python入门导学(无论何时,只要开始就不晚)
  10. 数据结构题集第一章(严蔚敏)
  11. 计算机的硬盘材料,电脑坏了把硬盘资料转移到新硬盘的方法
  12. CorelDRAWX4SP2简体中文正式版精简增强版
  13. win10重装系统后连不上公司服务器,win10重装系统后连不上网有什么解决方法
  14. 西数文件共享服务器,数据轻松共享 西数Live网络硬盘首测
  15. 我爱淘冲刺阶段站立会议2每天任务2
  16. 学习笔记 | Orillusion-WebGPU小白入门(六)
  17. General Algorithm
  18. 2006-09-28 墨子的双眼皮
  19. java 生成word目录_java代码生成word目录
  20. ksps什么单位_[转载]采样频率Hz 采样率KSPS或MSPS,两种单位的换算关系

热门文章

  1. Web优化 --利用css sprites降低图片请求
  2. window10 mysql5.7 解压版 安装
  3. 使用curl登陆上网账号
  4. javascript笔记:javascript的前世,至于今生嘛地球人都知道了哈
  5. 查看NTFS文件系统版本号
  6. 天池幸福感的数据处理_了解幸福感与数据(第1部分)
  7. 计算机真正管理的文件名是什么,计算机题,请大家多多帮忙,谢谢
  8. leetcode剑指 Offer 42. 连续子数组的最大和(动态规划)
  9. react hooks使用_如何开始使用React Hooks:受控表格
  10. gitlab设置邮件服务器_如何设置您自己的一次性电子邮件服务器