考试成绩可视化分析软件
0. 这个软件是做什么的呢?
设计这个软件的初衷
熟悉我的朋友都很清楚,我做的很多小软件其实都是用来解决我生活中遇到的实际问题的。这一次也一样,我在2021年参加了JLPT日语能力考试,这个软件便是用于我这一次考试的备考的。
同时,这个代码也可以用来练习数据可视化,记录数据并绘制折线图等功能在深度学习(绘制loss和acc等数据曲线),后端分析(访问量,网速等数据曲线绘制)等都有很大用处。现在实现这个代码不但可以用来用作我个人的成绩分析,还可以用于练习这一领域的代码实现。
软件要实现的功能
- 对用户输入的单次测试的各题型成绩进行可视化,帮助用户了解自己在考试中的优势部分和不足部分。
- 对多次考试成绩进行可视化分析,帮助用户针对性制定复习计划。
1.功能实现
本软件主要使用的第三方依赖库是matplotlib,本文将以JLPT模拟测试作为使用情景,应对不同的数据分析情节请灵活更改后使用!
输入成绩并输出可视化结果
1. 输入成绩
1.1 读入数据的类别与小项:
由于试题类别是相对固定的信息,因此可以提前准备好,在本程序中我使用了一个外部txt进行信息读取,格式为如图:
图片内的信息将被自动读取出类别和小项,实现代码如下:
def ReadPart(path):
with open(path,encoding='utf-8') as txt_r:
txt = txt_r.readlines()
classes = []
for line in txt:
MessLine = line.replace('\n','').split(':')
classes.append(MessLine)
return classes
1.2 输入成绩:
程序会读取上述的txt,随后要求用户输入数据,并通过python中的dict类型将数据进行规整并返回类别名和数据,代码如下:
def GetMess(parts):
PartTitle = parts[0]
kinds = parts[1].split(',')
print("现在输入{}部分成绩".format(PartTitle))
print("="*30)
ThisPart = {
}
for part in kinds:
s_input = input("请输入{}部分成绩,格式为:正确数,总数 ".format(part))
s = s_input.replace(',','/')
ThisPart[part] = s
return PartTitle,(ThisPart)
返回的数据同样也装载入命名为TotalMess的Dict之中,即所有数据输入完毕后的数据将为:
['类别'1:['小项1-1','小项1-2'],'类别2'['小项2-1','小项2-2'],'类别3['小项3-1','小项3-2']']
2. 输出记录并输出可视化视图
2.1 输出成绩记录
在上面的步骤中我们已经完成了对数据的整理,对于已经完成规整的数据对其进行格式化的输出就是非常简单的了,这里用一个WriteLog方法进行写入:
所有数据收集完毕后就可以对数据进行规整并写出数据记录,代码如下:
def WriteLog(Title,Mess):
WritingPaper = []
for kind in Mess:
WritingPaper.append("{}: \n{}\n".format(kind,'+'*15))
for part in Mess[kind]:
line = " {}:{}\n".format(part,Mess[kind][part])
WritingPaper.append(line)
WritingPaper.append("{}\n".<