APP下载

基于MVC架构的小学社团申请系统设计

2020-01-03袁源

现代信息科技 2020年14期

摘  要:目前很多中小学校开设了丰富多彩的社团课程,但由于缺乏有效的信息化管理手段,学校社团的管理任务非常的繁重。针对中小学社团管理的现状,利用LNMP、MVC等软件开发技术,设计了一款社团申请系统,系统采用B/S架构。系统的用户端实现了社团列表的查看、申请和审核结果的查询;服务端实现了社团上线和更新,社团教师的配置等。系统经过不断的迭代开发,目前已成功上线。

关键词:社团选课;PHP;LNMP;MVC

Abstract:At present,many primary and secondary schools have opened a variety of interest courses,but due to the lack of effective information management means,the courses management task is very heavy. In view of the current situation of management in primary and secondary schools,a courses application system is designed by using software development technologies such as LNMP and MVC. The system client adopts B/S mode. The client side of the system realizes the inquiry of viewing,applying and reviewing the list of associations. The service side realizes the community on-line and the renewal,the community teacher configuration and so on. After continuous iterative development,the system has been successfully launched at present.

Keywords:community course selection;PHP;LNMP;MVC

0  引  言

学生社团是指学生在自愿基础上形成的各种群众性文化、艺术、学术团体。不分年级、系科甚至学校的界限,由兴趣爱好相近的同学组成[1]。传统的应试教育在学生的知识技能发展上出现了严重的片面化倾向——唯分数论,这些并不利于学生的全面发展。为弥补传统教育的不足,很多中小学开设了社团课程,近些年学校的社团课程呈现井喷式发展,棋类、乐器、程序设计、3D打印、绘画、戏曲、语言艺术等等。繁多的社团课程丰富学生生活的同时,社团的管理工作也给学校教务管理人员和社团教师带来不小的压力。

我校有80个教学班,目前有53个校级社团和多个年级社团。每学年开学伊始,社团招生纳新活动,时间短、任务重、社团教师的压力非常大。学校传统的做法是社团教师进每个班级宣讲,宣讲完后登记下报名学生。随着学校社团的不断发展,社团数量会越来越多,这种传统的选课方式,越来越难满足我校的需求。

基于目前社团招生的现状,学校迫切需要开发一个社团在线申请系统。系统开放时间给学生选课,社团教师审核通过申请数据,以解决学生们选课难的问题,并减轻教务人员以及社团教师的压力。

1  技术选型

本系统采用B/S架构,学生和教师使用浏览器直接访问系统,无须安装额外软件。后端主要采用LNMP(Linux+ Nginx+MySQL+PHP)技术。Linux、Nginx、MySQL、PHP都是免费开源项目,不涉及任何版权纠纷,是目前Web开发过程中,应用最为广泛的Web开发技术之一。

Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。在互联网已知数据的网站中,有超过半数的流量基于LAMP或者LNMP架构;包括百度、腾讯、新浪等多家全球著名的网站。代表版本有:Ubuntu、CentOS、Debian等。其中,CentOS在服务器里,以安全稳定著称,这里我们选择CentOS作为我们的服务器系统。Nginx也是一款非常优秀的反向代理服务器,可以非常方便地实现服务器集群和负载均衡。这里我们使用Nginx作为Web服务器,以后可以非常方便地实现服务器的扩展。MySQL是免费开源的关系型数据库服务器,广泛运用于Web系统、大数据架构、数据库集群系统中。这里我们采用MySQL作为系统的数据库服务器。PHP是最常用的网站编程语言,广泛运用于网站系统中。和传统的强类型编程语言不同,PHP是一门解释型语言,系统解释运行,无须先编译后运行。PHP具有数据支持的优势,PHP支持多种主流与非主流的数据库,比如PHP与MySQL是绝佳的组合,可以实现跨平台运行[2]。特别是在PHP 7新版本发布后,PHP语言的性能也有了很大的飞跃,我们采用这门语言作为系统开发语言,能够快速地实现系统的架构。

模型-视图-控制器(Model-View-Controller,MVC)是当前非常成熟程序架构,它实现了数据、视图和业务逻辑的分层。其中模型层主要和数据库交互,主要是对数据库表的抽象,负责数据的存取。视图层负责显示数據和接收用户提交的数据。控制层负责从视图层读取数据,控制用户请求的转发,向模型层提取或提交数据。使用MVC设计的目的是实现一种动态的程序设计,方便系统的模块开发和团队开发,简化软件后期维护和扩展,并且有利于程序代码重复利用[3]。利用MVC分层方式构建B/S模式的系统时,MVC三层担任不同的角色,互不干扰,互相之间充分解耦的同时又能紧密协同完成任务。

2  系统设计

2.1  系统整体设计

系统设计大体上分两部分:管理端和用户端。管理端主要涉及社团教师的增删改、社团课程的增删改、社团招收人数、社团招生开放与结束时间的配置等。用户端涉及社团课程的浏览、报名、审核结果的查询。

2.2  管理端设计

管理端分两种权限,一种是超级管理员,超级管理员可以管理社团教师、社团课程、设置社团申请截止时间。超级管理员需要将所有的教师、社团录入到数据库,这也是一项非常烦琐的工作,因此本系统设计了社团数据和教师数据一键导入的功能,管理员将社团和教师信息做成一份Excel,Excel包含以下字段:课程名、课程简介、招收年级、教师姓名、教师账号、教师密码、预报名人数、招收人数,Excel格式如图1所示。

其中一个社团可以面向多个年级招生,对于Excel中的年级字段,每个年级之间以空格间隔。系统设计预报名人数和招收人数,预报名人数应大于或等于招收人数,社团教师选择预报名人数中选择接受的学生;每个学生可以同时报三个社团,但只有一个社团会录取。这样对于教师和学生都有一定的选择空间,实现社团教师和学生的双向选择。系统中,实现Excel导入导出是一个相对复杂的操作,这里我借助了GitHub中的PHPOffice/PhpSpreadsheet项目。PhpSpreadsheet是一个纯PHP编写的程序库,提供了xls和xlsx格式文件的读取、写入和格式修改的操作。采用PhpSpreadsheet,我们不仅可以方便地实现Excel文件的导入与导出,而且避免了“重复造轮子”,提高了程序设计的效率。

Excel批量导入时,Excel文件中的社团或者教师可能已经存在与系统中,此时就会存在重复导入的问题。起初考虑每一条数据写库前先查询一下是否存在,存在时更新数据,不存在再批量写入数据库。实践下来发现,数据库I/O时间过长,设想有100个社团和100个社团教师,查询社团和社团教师就会访问200次数据库,加上更新和写库的操作,经常会出现数据库操作时间超时。因此,插入数据库时使用MySQL的ON DUPLICATE KEY UPDATE操作,如果数据不存在,MySQL会直接写库,该数据若已存在(插入数据时,唯一索引上出现重复值),MySQL会自动执行更新操作,无须先查询。

2.3  用户端设计

用户端,学生在系统首页可以看到分年级排列的社团列表、每个社团招收人数、目前报名及已审核的人数,并且提供入口搜索自己是否已审核通过。

考虑到学生选课时类似于商品的抢购,容易出现课程超报的现象,比如小提琴社团只剩一个名额了(n=1),但一瞬间有多个人同时抢报,由于学生抢报的时间间隔非常短,A学生在报名时,系统查询到有一个名额,于是报名成功,此时名额需要减1(n=n-1);但减1操作还没有完成,B学生也进入了系统,此时查询到名额还是1,B学生报名也成功。B学生报名成功后,A学生的程序执行减1的操作完成,剩余名额为0,B学生的程序执行减1程序,导致剩余名额变成了-1。系统中我们采用Redis缓存服务器解决类似于抢购的课程超报现象。我们将课程名额写入缓存服务器,利用Redis的原子性操作,每进入一个学生报名时,锁定一个名额,这个名额被该学生独占,避免了多个学生抢一个名额的现象,如图2所示。Redis数据库中的所有数据都存储在内存中。内存的读写速度要比硬盘快得多,因而,相对于其他基于硬盘存储的数据库,Redis在性能上有明显的优势[4]。Redis的I/O性能远高于MySQL服务器,因此我们在Redis中执行完抢课操作后,再将数据用定时的CLI命令持久化到数据库中,这样不仅解决了课程超报的现象,还提高了系统的吞吐率。

2.4  界面UI设计

Web前端,我采用的是Bootstrap框架,该框架起源于Twitter,基于HTML、CSS、JavaScript,是目前最受欢迎,应用最广的前端框架之一。采用Bootstrap框架,我们可以快速地构建我们的前端页面,下面介绍下系统中主要的几个页面。

教师端登录之后跳转课程设置界面,如图3所示。对于系统管理员,黑色导航显示课程、教师、申请、退出四个按钮,对课程、教师、学生申请都有处理权限。在课程界面中可以上传如图1所示的Excel表格,一次性的导入教师和课程数据。对于社团教师,系统设计了报名数据导出功能,按照已审核、未审核、已拒绝三个工作表导出Excel,报名数据一目了然,为后续社团点名提供了便利,导出格式如图4所示。

对于学生端,导航栏有两个功能:社团、审核查询。社团功能将所有社团按年级展示,如图5所示,点击年级选项卡可以切换年级社团。在审核查询中,学生可以查询到自己的申请是否审核通过。

3  结  论

社团实践活动是落实“立德树人”的重要载体,对小学生的成长起着非常重要的作用。因此,实现社团课程的信息化管理非常重要。本系统是根据学校社团招新业务量身定制的一款教务软件,实现了中小学社团招新的电子化流程,很大程度上减轻了社团教师的工作量。在未使用本系统前,学校社团招生一般耗时两到三周,并且社团教师去班級招生时,还容易遗漏一些偏僻角落的班级。系统应用之后,只需等待学生报名,报名结束即可直接导出报名数据,并且该表格数据可以直接用于后期课上点名,非常的方便。

并且基于LNMP的软件系统,较传统的Windows服务器架构在系统的安全系、稳定性上也有质的飞跃。在系统运行阶段,我会不断地收集用户体验数据,不断地迭代完善系统。后期,当系统运行到非常稳定的阶段,预计会再加上课程展示模块和作业成绩模块,届时,系统会收集到报名数据、学生平时的作业数据和社团最后的结业成绩数据,最后我们对这些数据运用大数据技术进行综合分析,可以为学校的社团建设和学生的社团申请提供一些有价值的建议。

参考文献:

[1] 赵学敏.以社团活动为平台,促进学校艺术教育 [J].高考,2020(32):127.

[2] 刘晓知.PHP在动态网站开发中的优势 [J].电子制作,2020(8):64-65.

[3] 蒋亚辉.基于LNMP搭建教学资源分享网盘FileRun [J].中国信息技术教育,2020(2):95-98.

[4] 徐茂红,王飞,张明.基于大数据量的Redis技术应用与研究 [J].信息技术与信息化,2019(11):228-230.

[5] 史正鹤.浅析如何在社团实践活动中培养学生的品德 [J].天天爱科学(教育前沿),2020(7):138.

作者简介:袁源(1990.11—),男,汉族,江苏扬州人,信息技术教师,研究生,研究方向:远程教育平台设计及开发。