基于PHP的成绩快速输入系统的设计
2019-07-08吴国辉
摘 要: 教师往往需要将学生完成作业的情况输入到电子表格中。但是,由于原始文档中存在多个班级,学生完成作业的顺序较为混乱,且数据量较大,直接输入费时费力。针对该问题,提出利用PHP设计成绩快速输入系统的解决思路。首先将学生的学号信息导入到MySQL数据库,然后通过PHP页面的文本框接收输入的学号字符串并自动增加新的作业字段,接着通过explode函数对字符串进行分割并提取学号,再根据学号与数据库对比更新当前作业所在字段,最后将数据表导出到电子表格。实践表明,该系统运行速度较快,稳定可靠,能够极大地提高工作效率。
关键词: 成绩快速输入; PHP; explode函数; MySQL; 字段
中图分类号:TP319 文献标志码:A 文章编号:1006-8228(2019)06-49-04
Abstract: Teachers often need to input student finished jobs into spreadsheet. However, due to the students in the original document belong to different classes, the order of the finished jobs is chaotic, and the amount of data is large, so the direct input is time-consuming and laborious. To solve this problem, a solution of designing a score fast input system with PHP is put forward. Firstly, the student's Student Number Information is imported into the MySQL database, then the string of Student Number Information is received by the text box of the PHP page and the new job field is automatically added. Then the string is segmented by the explode function to extract the Student Number, and the field is updated according to the comparison of the Student Number and the database, and the data table is finally exported to a spreadsheet. Practice shows that the system runs fast, stable and reliable, and can greatly improve the work efficiency.
Key words: score fast input; PHP; explode function; MySQL; field
1 成绩输入的困难
在高校、中职学校中,大部分的平时作业为上机操作或实验[1]。教师需要记录学生完成作业情况,这也是学生期末总评成绩的重要组成部分。学生成绩是学生学习情况和教学质量的晴雨表,其重要性不言而喻[2]。由于教学管理日趋严格,平时成绩需要记录,作为评估、考核的原始文档,如果直接在纸质版的成绩表上记录,则需要从中找到某学生,再找到对应某次作业,才能进行登记。因为这样的现场记录要花费的时间太多,所以教师习惯于在白纸上记录学生的学号,等期末再统一输入到电子表格成绩表。
由于学生完成作业的先后顺序是随机的,所以教师记录在纸张上的学号自然杂乱无章。因此,在将其输入到电子表格的时候,需要找到对应的行(学号)和列(某次作业),非常费时费力。如果是多个班级合班上的,则输入效率更低。因此,如何设计一种能够将不同班级的学号,快速地输入到电子表格,成为一大挑战。
2 快速输入系统的思路
2.1 输入的方便快捷
教师现场手写的记录比较潦草,图像识别的硬件技术和软件算法又比较复杂[3],难以通过图像识别来提高输入效率。由此,只能在记录和输入的策略上减少工作量。一方面,由于同一门课程经常存在合班现象,为了方便,用一位数字表示学生班别代号,用二位數字表示学生本班排序号,三位数字组合成学生的学号,如219为2班19号学生。现场记录只需记录学号。另一方面,输入的时候,采用右手小键盘、左手分隔符的方式可以实现快速输入。其中,分隔符采用最大的按键——空格键。例如,某次输入的内容为“219 107”,就表示完成本次作业的学生的学号分别为219号和107号。按照“最短学号、左右手配合、最大按键”策略,使得输入更为快捷。
2.2 提取学号并修改数据
输入某次作业的一批学号之后,就需要从该字符串中提取学号并修改对应的作业一列的数据。每次作业,都会存在部分同学没有完成、无法上交的情况,因此造成输入的学号不连续,无法使用电子表格的排序功能进行自动处理。所以,最终只能通过设计程序来实现,解决思路如下。
第一步,将学生的学号信息从电子表格导入数据库。
第二步,输入完成某次作业的学生的学号,一般为几十个学生的学号,从而形成一长串字符串。
第三步,以空格为分割符,对字符串进行分割,提取出每个学号,接下来就是根据提取出来的学号,与数据库进行比对并进行相应的修改。
第四步,把修改好的成绩导出到电子表格。
3 PHP应用程序的设计
3.1 动态技术的选择
通过前面的分析可以看出,要实现设计要求,必须要设计程序。目前的程序从设计架构看可以分为C/S(Client/Server,客户/服务器)和B/S(Brower/Server,浏览器/服务器)两大类型。前者运行速度较快,但是需要安装才能运行,如果要修改还需要在开发平台中重新编译,比较麻烦。后者速度稍慢,但是只要有浏览器即可运行,修改也比较便捷。目前,Web系统的应用日益广泛,传统需安装的Foxmail等软件都可以在Web页面中完成[4]。由于Web开发成为发展主流,在此采用B/S模式设计该系统。
B/S模式的开发主流语言主要有PHP、JSP、ASP、ASP.NET几种。虽然它们都能实现Web应用程序,但是差异还是比较大的。PHP具有完全开源、完全免费、跨平臺、开发容易、修改维护方便等诸多优点[5]。目前,在动态网页上,PHP获得了最广泛的支持,全球排行前100万的网站中有70%以上采用了PHP技术,例如国内的百度、淘宝、新浪等大型网站。在论坛、中小型企业网站中,PHP更是处于绝对垄断的地位。另外,PHP的各种资源相当丰富,容易解决技术问题。因此,选择PHP技术来设计系统。
3.2 环境与数据库设置
采用phpStudy来配置环境。该软件小巧精悍,集成了PHP编程环境、MySQL数据库、phpMyAdmin管理工具、Apache服务器平台等工具,自动完成常规的配置[6]。此时,在系统默认的网站根目录下的WWW文件夹编写php网页文件,就可以通过http://localhost/来访问了。
PHP默认采用MySQL数据库。MySQL具有开源、免费、支持千万条记录、容易移植、安装调试简便等优点,特别适合中小型信息系统[7]。该系统的数据表中有两种类型的字段:①学号,用于记录若干行学生的学号;②某次作业,用于记录某学生是否完成该次作业。由于作业的次数不是固定的,因此一般采用自动增加的方式来实现;而学号是固定的,需要从电子表格中导入。
要将学号导入到MySQL数据表,首先要将电子表格的成绩表,保留nums(学号)这一列,另存为CSV格式的文件123.csv。然后在test数据库中导入该文件。此处要注意勾选“文件首行包含数据表的字段名”,否则会影响该字段的名称。完成之后,系统会自动新建数据表TABLE 1。例如,笔者的某门课程有两个班,学号分别从101到135、201到235,导入test数据库后如图1所示。
默认表TABLE 1的名字中间含有空格不方便操作,而且名称也不容易记忆,在此采用RENAME TABLE `test`.`table 1` TO `test`.`pingshi` 的命令将该表改名为pingshi,意思是平时作业的数据表。
3.3 Session控制新的字段
不管是电子表格,还是MySQL中的数据表,都是一个行(记录)、列(字段)的二维表。现在nums列已经有了,学号数据也有了,只需要在网页每次刷新的时候插入某次作业的新列即可。为了确保每一列都不相同,采用Session技术,分三个步骤:
第一,用Session_start()命令声明使用Session变量。
第二,定义变量并使之自增,例如$_SESSION['wu']++。其中的wu变量就是一个在所有页面中的全局变量。
第三,由于数字直接用于字段的名称并不符合数据库的命名规范,因此定义变量lie,用于产生新的字段。
3.4 字符串的接收与分割
为了接收用户输入的某次作业的学号,首先要在PHP页面中添加一个Form窗体、一个textarea文本框、一个submit的提交按钮,HTML代码如下:
以上代码中文本框的名字为text。当用户按下提交按钮后,PHP程序通过if(!empty($_POST['button1']))判断是否产生响应,然后对text的字符串进行分割处理。字符串分割、模糊处理的算法很多[8],但是PHP提供了explode函数,本系统的分割处理较为简单,因此直接使用explode将字符串打散为数组即可。核心代码如下:
此时,$tmp[$i]就是某次作业所对应所有学号,将其插入到对应的列即可。
3.5 数据库操作
成绩快速输入系统面向的是数据,因此核心的操作是数据库。
第一步,PHP页面要链接到MySQL数据库:
第二步,将分割出来的各个学号的数值与pingshi表中的nums字段进行匹配,如果符合则修改当前作业列的内容:
第三步,循环遍历本次输入的字符串并修改数据库之后,需要清空各种临时变量并关闭数据库链接:
4 系统测试
该系统在广西钦州商贸学校的“网页设计”、“Internet应用”等几门课程中投入使用,获得较好的效果。例如,将某次作业的成绩输入到系统中,如图2所示:
第一行的“1”表示当前session变量。第二行表示插入新的字段L1成功。接下来的文本框用于输入学生的学号。点击提交后,通过MySQL管理工具phpMyAdmin中可以看到插入的作业完成情况已经成功,test数据库中的pingshi表,里面除了nums字段外,还自动增加了L1字段。已经完成本次作业的101、103、104、105号同学,他们的L1列的内容被修改为1;而102号同学没有完成,保持为初始化的数值0。
输入并提交完15次的作业,就可以将该数据表导出为CSV格式,该格式可以在Excel中直接打开。最终效果如图3所示。
采用PHP成绩快速输入系统,60秒就能输入1个班的学号字符串并完成自动处理。
假设每位教师每个学期10个班、每个班级35人、每个学期15周次的作业,PHP系统所需要的时间为:10×15×60=9000秒。
而传统的输入方式是先在纸张上看到某学号,再在电子表格中找到该学号,将鼠标定位到某次作业的那一列,输入1回车确定。该操作流程每处理1人次的作业就需要消耗10秒时间,同样的工作量需要的時间为:10×35×15×10=52500秒。
经过比较可以看出,PHP系统所需要的时间仅为传统方式的17.1%,效率获得极大提高。
5 结束语
针对海量作业成绩的输入难题,利用PHP设计自动化处理系统,通过PHP自动增加新字段、对输入字符串进行分割、将提取的学号与数据库匹配、修改数据库等步骤,将学号排列混乱、大量数据的平时作业成绩快速输入到电子表格中。实践显示,该系统具有输入便捷、处理快速、稳定可靠等优点,能够大大节约时间,减轻劳动量。该系统容易移植到其他乱序、海量输入的应用场合中。
参考文献(References):
[1] 吴国辉.基于AJAX的便携式作业管理系统的设计[J].电子制作,2014.16:64-65
[2] 倪玲玲.高职院校学生成绩管理系统的设计与实现[D].湖北工业大学硕士学位论文,2017.
[3] 许广强,贾翠翠,詹念等.基于FPGA和DBN的手写体图像识别算法的实现[J].电子世界,2017.7:69
[4] 吴国辉.基于PXF模式快速提升网页视觉效果的研究[J].电子技术与软件工程,2016.14:107,165
[5] 丁宁.基于PHP的在线调研系统的设计与实现[D].北京邮电大学硕士学位论文,2017.
[6] phpstudy.phpstudy安装及使用教程[EB/OL].http://www.phpstudy.net/jishu-php-2956.html
[7]李强.基于MySql的物流管理系统的设计与实现[J].西安文理学院学报(自然科学版),2017.20(2):50-54
[8] 何晓明,洪亲,蔡坚勇等.基于n-gram中英文字符串分割算法实现[J].电脑知识与技术,2012.8(23):5530-5533