PHP学生成绩查询及分析系统制作
【摘要】本系统是中学一线教师制作的成绩查询及分析的网络程序。程序为B/S模式,程序语言为PHP,数据库为Mysql。可跨平台运行,经多平台测试,可运行于各种linux(CentOS/Debian/Ubuntu)、FreeBSD及Windows(WindowsXP/Win7/Windows2003)操作系统,建议使用Linux平台,效果更好。主要功能有:查询学生个人及全班历次成绩;进行班级及年级成绩分析(平均分、及格率、优秀率等);可显示学生成绩变化曲线图;所有查询及分析表格均可以直接输出为Excel格式,方便保存及修改。
【关键词】成绩查询 成绩分析 PHP+Mysql
【正文】
在2009年9月份开学后,我校高三年级进行了第一次月考。月考后,许多高三班主任使用Excel分析本班学生的历次成绩数据,感到非常麻烦。于是,笔者在教学之余开始制作适用于全校所有年级的网络成绩查询系统。两年多来,经过广大老师们的试用,提出了许多很好的建议,目前网络程序的功能已经比较完善,成为我校老师、年级主任查询及分析学生成绩的
好帮手。为更好的测试、完善本程序,也为了方便其他中学使用,本程序已经开放源代码,成为一个开源程序,可在程序主页(/phpcj/)下载使用。下面就此PHP网络程序的功能及制作思路作一简要说明。
一、网络程序运行的平台
我校程序运行的平台为接入校园局域网的LNMP(Linux+Nginx+Mysql+PHP)服务器。其中的操作系统采用Ubuntu Server(Linux操作系统的一种),配置了高效的Nginx作为网络服务软件,数据库使用Mysql,用PHP语言进行网络编程。以上所采用系统及软件均是免费的开源程序,稳定、安全、高效,无软件成本。[1]另外,由于PHP网络程序可移植性好,经测试,完全可以运行于各版本的Windows平台上。目前程序在一台256M内存的linux旧主机上运行良好。
二、成绩查询系统的主要功能:
1、可以查询单个、全班或年级前N名学生的历次考试成绩,并可显示其年级名次变化曲线图。查询结果如下:
初中2007 级1班 宋×× 同学初三历次考试成绩如下: |
考试 | 年级 | 班 级 | 语文 | 语排 | 数学 | 数排 | 英语 | 英排 | 物 理 | 物排 | 化学 | 化排 | 历史 | 历排 | 政治 | 政 排 | 总分 |
0909初三月考一 | 56 | 1 | 96 | 40 | 85 | 188 | 108 | 34 | 92 | 82 | 90 | 55 | 90 | 74 | 93 | 51 | 654 |
0911初三月考二 | 62 | 1 | 96 | 49 | 88 | 224 | 110 | 24 | 92 | 41 | 94 | 59 | 93 | 38 | 83 | 72 | 656 |
0912初三月考三 | 73 | 1 | 95 | 54 | 93 | 193 | 110 | 12 | 83 | 153 | 96 | 39 | 82 | 112 | 81 | 93 | 640 |
1002初三月考四 | 55 | 1 | 88 | 52 | 74 | 144 | 110 | 14 | 88 | 123 | 89 | 94 | 81 | 124 | 97 | 13 | 627 |
1003初三基摸考试 | 70 | 2 | 82 | 98 | 81 | 183 | 113 | 20 | 46 | 83 | 54 | 95 | 53 | 19 | 52 | 82 | 482 |
1004初三模拟考试 | 27 | 1 | 101.5 | 23 | 104 | 79 | 108 | 10 | 38 | 135 | 48 | 65 | 48 | 42 | 55 | 6 | 502.5 |
宋××同学初三历次成绩总名次变化曲线图如下: |
考虑到对学生个人成绩分析的多种需求,其中的显示选项如下:
其中的选项有:是否显示成绩变化曲线图、是否显示各科年级及班级排名、是否显示全部科目、初高三的特殊显示(只显示初高三成绩还是全部成绩)、显示本班全部学生还是单个学生等。另外,其中的打印按纽强制不显示曲线图,供在网页中直接打印或将其复制到Excel中编辑后再进行打印。
2、成绩导入网站数据库后,程序会自动进行各种成绩统计并输出,供各位老师查询。如成绩分析表(任课教师的红字体为班主任):
2010年05月高二期中(文)成绩分析表
班级 | 语文 | 数学 | 英语 | 历 史 | 地理 | 政治 | 总分 | |
平均 分 | 校 | 89.89 | 55.90 | 67.48 | 58.35 | 31.18 | 61.24 | 364.04 |
及格率 | 51.74% | 11.63% | 23.26% | 50.58% | 2.91% | 52.91% | ||
优秀率 | 0% | 0.58% | 0.58% | 5.23% | 0% | 4.65% | ||
最高分 | 116 | 133 | 133.5 | 91 | 69 | 92 | 566.5 | |
最优生 | 杨同学/闫同学 | 冯同学 | 王同学 | 王同学 | 杨同学 | 原同学 | 冯同学 | |
平 均分 | 6班 | 82.19 | 47.44 | 55.53 | 50.09 | 26.33 | 54.23 | php好看主页源码 315.81 |
及格率 | 24.56% | 3.51% | 8.77% | 28.07% | 3.51% | 28.07% | ||
优秀率 | 0% | 0% | 0% | 1.75% | 0% | 0% | ||
最高分 | 112 | 105 | 105 | 86 | 69 | 76 | 505.5 | |
最优生 | 杨同学 | 于同学 | 赵同学 | 杨同学 | 杨同学 | 梁同学 | 杨同学 | |
任课教师 | 李老师 | 李老师 | 魏老师 | 赵老师 | 张老师 | 李老师 | ||
... | ... | ... | ... | ... | ... | ... | ... | ... |
家长会成绩条,如下表:
初中2007级1班(1004初三模拟考试)成绩条
年级 | 班级 | 姓名 | 语 文 | 数学 | 英语 | 物理 | 化学 | 历史 | 政治 | 总分 |
27 | 1 | 宋同学 | 101.5 | 104 | 108 | 38 | 48 | 48 | 55 | 502.5 |
年级 | 班级 | 姓名 | 语文 | 数 学 | 英语 | 物理 | 化学 | 历史 | 政治 | 总分 |
55 | 2 | 齐同学 | 95.5 | 99 | 99 | 48 | 51 | 53 | 41 | 486.5 |
3、分段统计
各年级可按不同的分数段统计各班人数,其中分段的步长值可以任意设置,如100分、10分等,而且最高及最低分数段的数值可从数据中自动读出。如下表:
2010年05月高一期中分段统计表
分数线 | 年 级 | 1班 | 2班 | 3班 | 4班 | 5班 | 6班 | 7 班 | 8班 |
700以上 | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 1 |
600以上 | 75 | 5 | 0 | 10 | 0 | 4 | 0 | 28 | 28 |
500以上 | 173 | 25 | 1 | 26 | 2 | 21 | 1 | 48 | 49 |
400以上 | 278 | 40 | 14 | 46 | 12 | 44 | 20 | 52 | 50 |
300以上 | 371 | 45 | 41 | 47 | 44 | 46 | 46 | 52 | 50 |
200以上 | 386 | 45 | 50 | 47 | 47 | 46 | 49 | 52 | 50 |
200以下 | 2 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
合计 | 388 | 45 | 51 | 47 | 48 | 46 | 49 | 52 | 50 |
4、所有查询及分析结果均可以直接输出为设置好一定打印格式的Excel文件,方便老师们进行保存或编辑。
5、除此还有各种定制输出的表格,如各班成绩单、年级和班级名次变化表等。
三、程序设计
网络程序主要分三个模块:数据库部分、后台数据处理和前台数据输出。
1、数据库的设计。
数据库设计是否合理,关系到程序的查询效率及各种功能的实现。本程序的数据库采用Mysql数据库,数据结构设计如下:
成绩数据库“data”下有数据表:“chengji”、“jiaoshi”、“c2007_0912”、“g2007_0912”……
说明:其中的“chengji”数据表用来记录各年级历次成绩的相关信息,如考试名称、年级、班级数目、考试科目、成绩数据表名等信息;“jiaoshi”数据表用来记录当前各年级及每次考试的任课老师、班主任信息;“c2007_0912”形式的数据表用来记录成绩数据,表示“初中2007级学生09年12月”的考试成绩。
2、程序后台成绩数据添加及处理模块。由于程序后台功能不太复杂,因此只用了一个“admin.php”文件实现。
程序管理员将含有学生姓名、班级及各科分数的Excel表格通过网站后台程序上传,简单添加相关考试信息(如考试名称、班级信息、各科满分分数等)后,程序会自动实现以下过程:①添加每个学生的总分及各科的年级、班级排名;②根据已有信息添加任课老师、班主任等信息;③自动读出上一次考试信息,并计算本次考试与上次考试的年级和班级名次变化等。另外,各年级的考试信息也可以随时修改。
3、前台网页数据输出模块,用一个“index.php”文件实现,这也是程序最关键的部分。计算机连上学校局域网后,不用安装软件,用浏览器通过学校内网ip地址或机器名访问程序服务器即可进行成绩的查询,如:192.168.1.109。
本模块又包含几个子模块:查询学生的历次成绩、显示最近一次考试各年级的各种分析表(成绩分析表、名次变化表、家长会成绩条、分段统计表等)、历次成绩表和名次变化曲线图等模块。各子模块的实现思路如下:
⑴历次成绩查询,以查询全班学生历次成绩为例。首先在最近一次考试的成绩数据中读出所有学生的姓名,然后依次以每个学生姓名为关键字,加上班级作为次要关键字(防止同年级中出现重名现象),在本年级所有成绩表中去读出此学生的成绩并显示。
⑵成绩分析表。这个实现起来就比较简单了,直接用sql统计命令,输出年级及各班的平均分、及格率、优秀率、各科最高分及最高分的学生姓名等信息。如果“jiaoshi”数据表中有任课老师信息,则把任课老师信息也显示出来。
⑶其他各种统计表的输出则根据不同的需求,用sql命令读取成绩数据表中的数据即可。
⑷名次变化曲线图源代码来自网上,对其进行了优化及美化后,添加了一些实用的显示功能,如可显示年级、考试时间、最好及最差名次等信息。
四、本网络程序的优点
1、简单高效
硬件方面:只需要一台能联网的闲置主机即可,操作系统安装完成后,不需要键盘、鼠标和显示器,插上网线即可通过网络进行管理。
软件方面:所用软件均为开源的免费软件,安全、高效。而且PHP程序运行效率高,优于asp及asp开发的程序。
2、前后台操作简单
后台操作:程序平台搭建好以后,管理员只需将每次考试后的成绩数据上传,同时添加简单的考试信息即可。在数据上传后,程序会自动将成绩数据进行各种处理,如对学生进行排名、添加任课教师信息、与上一次考试成绩进行比较等一系列操作。
前台浏览:对于使用者——老师来说,只需要用浏览器打开程序主页,就能查询或浏览各种成绩分析结果。
3、由于设计者是教学一线的老师,更加熟悉班主任和老师们的需求,所制作的功能实用性强。
五、网络程序的运行效果评价
由于我校各年级班级数量相对较少,每个年级最多10个班,目前程序放在一台256内存的旧主机上,运行情况良好。而程序对更多班级的数据处理效率暂未测试。但从现在的运行情况来看,在后台上传数据并进行10个班级数据处理时,256M内存的主机需时半分钟左右。如果数据量加大的话,采用增加内存的方式,应该可以实现大量数据的快速处理。另
外,程序的最关键环节——前台成绩数据输出显示暂无法进行压力测试,主要是看高并发情况下服务器能否承受(如百人以上同时点击),笔者预测,通过采用更高配置的linux主机,完全可以承受,程序运行应无大碍。
总之,本网络程序是在结合我校实际情况基础上开发制作的,功能还可以进一步拓展,以期能减轻班主任和年级主任分析成绩的负担,方便任课老师了解学生、关注学生成绩变动,能更好、更有针对性的对学生进行辅导、教育。
【参考文献】
[1] baike.baidu/view/3714049.htm
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论