基于高校网络选修课的统计分析系统设计与实现

2020-12-07 08:26苏新梅
无线互联科技 2020年18期
关键词:文本框控件学期

苏新梅

(乌鲁木齐职业大学 基础教育部,新疆 乌鲁木齐 830001)

0 引言

网络选修课程是高校学生文化素质和综合能力的体现,目前,高等本科院校和高职院校都开设了网络选修课程,作为综合教育选修课的重要补充。各互联网教育运营商,都提供了海量的丰富的网络课程资源,帮助各高校的学子们实现跨校课程共享和学分互认,完成跨校选课修读,并获得学分。网络选修课的在线学习方式灵活多样,宿舍、教室、操场、居家等成为重要的选修课学习场所,学生通过学习所选课程视频完成相应作业、提问、讨论、考试等环节便可获取学分[1-2]。

以乌鲁木齐职业大学为例,网络选修课程2015年开始运行,主要是和超星尔雅和智慧树在线教育平台合作,每年的开设课程和选课人数都在增加。现在每名学生在校期间,要求选修课学分不低于8个学分, 2020年上学期开设课程113门,总选课人次数是23 229人次,总选课学生数6 366人。

1 统计分析系统设计

网络选修课程是学校教务管理系统的重要组成部分,是全校学生公共任选课程的主要学习方式。每学期完成网络选修课程,需要统计学期整体情况、课程学习的人数、课程学习成绩分数段的人数、按课程统计学生成绩的及格率等。针对网络选修课程的管理,传统方式是手工完成统计和查询,很费时费力。为高效、快速地实现网络选修课情况统计分析,本文设计了该统计分析程序,解决了教务管理老师的困惑,使其可以方便、全面地了解学生网络选修课课程的学习情况,轻松得到统计数据[3]。

该程序作为高校教务系统的延伸应用,使得学校各学院老师都可以方便、快速、高效地了解每学期网络选修课的情况。学生在学习中出现“刷课”等现象,公司平台会反馈不良记录的成绩清单,在系统查询学生课程信息时,会有“不良记录”的标注,以示该成绩可能不是学生真实学习得到的成绩。

网络选修课程统计分析系统为各网络平台上课程的设计提供依据和参考,如改进平台上课程的成绩构成比例,增加课程见面课的内容,课程考试难易程度的调整等。在课程的选择上,除了学校必须要求的,从选课人数上反映现代大学生的学习兴趣和爱好偏向。

2 统计分析系统技术实现

高校都使用了功能完善的教务管理系统,乌鲁木齐职业大学使用青果教务系统和喜鹊儿手机APP,可以实现成绩的查询打印等功能。网络选修课成绩都导入到教务系统,所以前期不需要再重复建立数据库,直接用公司平台的Excel原始数据作为信息源。

2.1 系统功能说明

本系统是为统计分析网络选修课而设计开发的,主要包括3项功能:(1)统计全体学生每学期学习整体情况;(2)根据学生学号查询个人各科成绩;(3)统计各科目学生成绩情况。

2.2 开发环境与运行环境

本系统使用Python语言进行开发,并外加PyQt5、Pandas、matPlotlib 3个软件包。Python语言简练,外接软件包丰富,开发效率高。本系统包括注释等只有600多行程序,可以想象其精炼程度。PyQt5、Pandas、matPlotlib是为Python提供的功能强大的软件包。PyQt5是开发界面的工具;Pandas是数据分析的工具,为处理报表数据提供了丰富的函数和方法;matPlotlib是绘制二维图的工具,功能强大,使用方便,本例中只用了10行程序,就绘制了精美的成绩分数统计直方图。系统运行环境:Windows 7,Windows 10及以上版本。

“人生苦短,我要用Python。”;选用该语言的另一个原因是Python语言是目前较为广泛流行的语言,是世界上使用人员最多的语言,在大数据处理、人工智能开发更是首选语言,并且乌鲁木齐职业大学刚开始开设该语言课程,因此选用该语言展示其魅力,以便促进各程序语言的使用者喜爱并熟练使用此语言。

2.3 输入数据文件说明

输入数据文件为Excel文件,可以接受扩展名为(.xls,.xlsx)两种格式的文件。要求每个学期数据由两个sheet组成,前一个为学员成绩表、后一个为学员不良记录表,可以存放多个学期的数据。但一个学期的两个sheet要挨着存放,即使该学期无有不良记录表,也要存放一个只有表头而无数据的sheet。每个sheet数据表格的格式可以不受限制,但要求要有如下几个数据项[‘课程名称’,‘课程ID’,‘学生姓名’,‘学号/工号’,‘综合成绩’],而且数据项名称不得改变。

2.4 程序的难点

程序的难点是3个软件包的使用,Pandas是做数据分析使用的,其使用环境更适合于行运行,直接应用于桌面程序中是一尝试;PyQt5是做界面的,matPlotlib是作图软件包有自己的界面。本系统中将matPlotlib封装为一个类作为Qt的一个控件,嵌套于Qt界面中,具有重复应用性。

2.5 界面设计说明

乌鲁木齐职业大学网络选修课统计分析如图1所示,可以看出,界面包括一行简单的菜单栏和窗口区,菜单栏实现数据表文件的加载,是打开Excel文件的多个工作表。窗口区是实现程序的3项功能:总体评价、学生成绩查询、按课程统计。依次从上到下,每个功能使用的控件包含在一个组合框内,以便于用户区分。

图1 乌鲁木齐职业大学网络选修课统计分析

(1)总体评价:使用了一个选择框,4个单行文本框,5个静态文本框。选择框供用户选择学期,其内容根据加载的文件自动更新;4个文本框用于显示统计得到的结果,为了防止用户在文本框中输入信息,文本框做了只读限制;静态框用于上述控件的标注。

(2)学生成绩查询:输入的是学号,系统查询显示姓名和4门课程信息,使用了文本框和静态框。其中一个文本框是用于输入学生号,只允许输入数字,不能超过12位;其余文本框用于显示查询的结果,均已做了只读处理;用于显示相应数据是正常还是不良记录标识使用了静态框。

(3)按课程统计:使用了3组控件,用于同时3门课程成绩的查询,每组控件包括一个选择框、两个文本框、3个静态框。选择框用于选择课程,其内容随学期选择而自动改变;两个文本框用于显示查询统计的内容,都做了只读处理;一个绘图控件,用于绘制3门成绩分数区间的直方图,图带有轴标题、轴标注、图例与网格。

2.6 数据预处理

数据预处理是指数据自文件到内存,是用户看不到的功能,却是为后续功能提供支持而不可或缺的。系统将每个季度的两个sheet的数据,通过处理存储在一个Pandas的一个DataFrame对象中,为后续的计算提供了方便,尽管数据文件数据项很多,但装入内存的只是需要的有限的几列数据,从而节约了内存。

2.7 系统功能设计

系统功能包括总体评价、学生成绩查询、课程情况查询3项。虽然Python语言是解释性语言,执行性能差,但在功能实现上均使用Pandas提供的内部函数,因为其是用C语言实现的,因此系统的执行效率并没有下降。

2.7.1 总体评价

整体情况统计的数据包括:考试人次、考生数、开设课程门数,还有及格人次数。考试人次数是数据中心的总行数,通过DataFrame的shape属性完成;选课学生数是学生号不重复的所有行数,学生号不重复数据通过DataFrame的函数unique()提取得到,返回的是一个数列,求取长度即可得到所需要的值;开设课程门数用求取学生数同样的方法可以得到;及格人次数通过DataFrame条件查找语句DataFrame([‘综合成绩’]>59.99)即可提取到所有及格的数据,在对其统计行数即可得到。

2.7.2 学生成绩查询

本功能是通过学生号找到相应的记录,通过DataFrame查找条件为[‘学号/工号’] == 输入的学生号的一个查找语句完成,查找到的结果是包含多个记录的数据列,对其进行遍历,将数据写入相应的控件。

说明:成绩状态是显示“正常”和“不良记录”,“不良记录”是该学号的学生在“不良记录”表里存在,否则显示“正常”。

2.7.3 按课程统计

本功能是参加某课程的人数以及及格人数的获取,上文已详细介绍。在此重点介绍Pandas提供的数据分割分类功能。假如已经提取了某门课程的所有数据集于data(其为DataFrame结构,是所有数据的一个子集),需要设计分割器数据表,本系统中如下:

cutdata=[-0.01,0.01,9.99,19.99,29.99,39.99,49.99,59.99,69.99,79.99,89.99,101]

这是一个列表,是由数据分割的分割点值组成,其分割采用下边界开放,上边界闭合的方式,也就是对于上述设计的分割器所做的结果是(-0.01,0.01],(0.01,9.99],(9.99,19.99],(19.99,29.99],(29.99,39.99],(39.99,49.99],(49.99,59.99],(59.99,69.99],(69.99,79.99],(79.99,89.99],(89.99,101]]共11段,如此设计是考虑成绩分数的特点以及避开浮点数进行等于判断。实际达到的分割效果如下:

[0],(0,10),[10,20),[20,30),[30,40),[40,50),[50,60),[60,70),[70,80),[80,90),[90,100]准备好了数据及数据分割器,就可以分割:

cj_cut = Pandas.cut(data[‘综合成绩’],bins=self.cutdata )该函数实现了对每一个数据进行分割归类,分类后对各类数据个数进行统计:

classdata = cj_cut.value_counts(sort=False)对分割分类的数据进行统计,也就是每类有多少个数据,参数为假,表示统计结果不排序,按上述提供的分段区间顺序。说明:0分学生大部分是选修了课程,但没有参加学习的情况,需要单独统计。

2.7.4 打开文件模块设计

由于原始Excel文件数据量大,打开文件需要时间等待,考虑增加提示信息状态栏self.statusBar().showMessage(“正在打开文件!”)。目前,只考虑源文件格式是xls和xlsx,否则,用信息框显示提示信息“该程序不支持该格式文件!”。本文使用pd.read_excel()函数来读取Excel文件:data_df =pd.read_excel(filename,sheet_name=None),将数据存入包含sheet表、行、列的三维表中,循环依此处理每个学期的成绩数据和对应该学期的不良记录。

3 系统改进和完善

目前,该系统只是单机版的基于Excel表格的统计分析系统。后期可以考虑将每年的数据导入数据库,建立基于C/S或B/S的网络版系统软件,建立有权限控制的网上查询,给教学秘书、导学教师、学生分配不同的查询和管理权限。系统可以增加历年的课程成绩比较图表、以表格形式展现一个班学生的成绩、成绩的查询结果实时打印等功能,还可以实现手机端APP查询功能等。

4 结语

网络课程线上资源丰富,通过该平台,学生可以领略各高校知名学者教授的风采,学习其精心完成的课程内容,对提高各专业教师能力也是很好的平台。因此,网络课程可以是全员参与的较好学习方式,建议学校的管理层后期可以考虑学校教务处和各个学院老师沟通,建立专业教师的个人学习发展平台,督促教师拓展和提高知识和技能。完善学校网上选课系统和公司网络课程平台的相互链接,建立老师和学生都可以参与的网络课程学习系统。

猜你喜欢
文本框控件学期
新的学期 新的尝试
期末冲刺高二上学期期末模拟卷
巧用文本框实现PPT多图片排版
PPT文本框的另类应用
文本框酷变3D效果
ASP.NET服务器端验证控件的使用
ACT和SAT的几个区别
文本框在地理课件中的应用
Spreadsheet控件在Delphi数据库系统中的编程与应用