由于智能手机的普及、互联网的发展,人们生活的各个方面都开始与互联网接轨,并使用大量信息化设备来提升生活与工作学习效率。教务系统的信息化早已开始实施,但大部分学校的教务系统并没有进行升级换代,只是进行修修补补。
以下为本篇论文正文:
摘 要:采用PHP+MySQL开发教务系统,利用Flask+MySQL作为微信后端开发工具,采用响应式页面布局,充分有效地使桌面端与移动端进行互动,同时采用高性能服务器,使服务器能够同时承载更多用户。系统开发过程遵循软件工程思想,探讨需求分析、技术分析、数据库设计、代码功能实现、系统测试等步骤,并重点分析关键模块的设计与实现。经过测试,系统成功实现了教务管理所需的各项功能,且运行良好。
关键词: 教务管理系统; 微信公众平台; PHP; MySQL; Flask
一、 引言
由于智能手机的普及、互联网的发展,人们生活的各个方面都开始与互联网接轨,并使用大量信息化设备来提升生活与工作学习效率。教务系统的信息化早已开始实施,但大部分学校的教务系统并没有进行升级换代,只是进行修修补补。因此,系统的性能、安全、效率、维护成本等方面都无法满足现今的操作需求。通过对当前学校使用的教务系统进行调查、分析,并对国内外教务管理系统的发展状况进行研究,本文设计并实现了基于PHP与MySQL的教务管理系统。
二、 系统总体设计
本系统设计之初,考虑过多种方案,包括Python+Flask、Docker+Node.js、Java Web,以及PHP方案等。前两种方案都能够进行快速开发,对系统的资源需求更小,但从系统的可持续发展角度看,这样的开发方案仍无法满足需求;Java Web的开发对于几万受众而言有些重量级,而且对于系统的资源占用相当多,在不更新硬件的情况下,针对相同应用场景,可能无法发挥出Java Web的能力;PHP的开发从业人员更多,而熟悉Python、Node.Js的人相对较少,对于系统的维护和持续开发不利[1-2].因此,本文选用PHP进行系统开发。
在数据库选择上,采用Mysql数据库,同样是一款开源产品,虽然被Oracle公司收购,但在不断更新,免费发布。虽然有通过MySQL改写而成的MariaDB、Percona等高性能数据库,但是它们由社区提供支持,MySQL则由公司提供支持,在稳定性、安全性方面更胜一筹,因而选择MySQL数据库[3].在框架部分,本系统采用成熟的Bootstrap[4],这一套前端框架有相当丰富的文档以及各种插件,能够极大地提高效率,并且在视觉处理方面有专门的js文件进行自适应操作,在表格方面有完善的插件,能够更清晰明了地表现数据。
系统总体设计分为3部分:前端、后端和微信端。前端的应用公开部分目前仅提供教务新闻的展示,并没有其它功能操作。用户登录后,根据用户角色不同给予不同权限,比如学生仅能够对自己的选课进行操作,而管理员能够对全局进行操作。数据展示大部分通过Bootstrap的Bootstrap-table插件完成,该插件支持Ajax的Json数据解析,因为Json数据文件具有保存数据完整、美观、适用性广等优点,并且Json是目前多终端应用最广泛、科学的数据文件格式之一。在微信公众号部分,通过远程数据库连接,然后通过对微信服务器的xml报文进行解析得到所需信息,并根据不同条件返回数据。部分数据添加了后台验证,比如选课时间等。整体功能设计如图1所示。
三、 系统各模块设计与实现
1、 系统登录模块设计与实现
本模块是用户登录的接口,用户需要提供用户ID、用户密码及验证码,三者都验证通过才能登录到系统中。用户可以在任意界面通过页面顶部或左边的导航栏选择登录或退出操作。
图1 整体设计功能
该登录模块主要是通过ThinkPHP内置的验证码函数生成验证码图片,需要在html页面中添加Js代码,使验证码图片能够正常显示,系统在生成验证码图片时也将验证码信息保存。最后通过check_verify函数判断输入的验证码与系统生成的验证码是否匹配,如果匹配,则进入到用户账号密码判断流程;如果不匹配,则转到error信息。
2、 新闻模块设计与实现
本模块可以给全部用户展示新闻(不论是否登录),并且可以让管理员在后台发布新闻。管理员登录后即可对文章类别进行增加、删除操作,也可以添加新闻。添加新闻通过Ckeditor将输入的新闻进行转码后保存到数据库中。
该新闻发布模块主要使用了Ckeditor富文本编辑器插件,通过js导入到项目中,能够使项目支持更多、更丰富的新闻文本选项。插入都是通过Bootstrap-modal的模态框实现,通过这个插件能够在相同的页面弹出窗口进行数据操作,同时所有新闻在后台均用Bootstrap-table插件进行显示,并在后台做系统分页。而用户展示页面的分页则是通过链接传入的参数进行数据库查询,然后通过ThinkPHP内部的分页操作完成,最后在页面最下方添加分页信息。
3、 选课模块设计与实现
本模块可以展示选课基本信息,全部课程由管理员加入系统后,在选课前添加开课信息。在选课时,学生才能选择课程信息,加入到自己的选课列表。学生可以从学生管理入口进入学生选课控制台,添加、删除选课。
其中,学生的选课操作可能出现时间冲突问题,前端的js处理不太好,所以交给后端处理。通过将上课时间添加到数组,然后判断是否有重复来完成时间冲突判断,如果有冲突,返回前端给予提示。
4、 微信模块设计与实现
本模块可以通过微信发送查询指令得到希望得到的结果,微信服务端采用Python+Flask架构,通过对微信post的xml信息进行数据分析,然后进行远程数据库连接,查询数据并得到结果,最后将数据格式化后发送给微信服务器,再发送给用户[5].微信模块流程如图2所示。
这里的后台是flask,通过对发送来的数据进行判断,先判断数据是否存在“,”,如果不存在,则返回提示信息,让用户知道发送哪些命令系统会响应;如果存在,则按照“,”分隔(split),然后依次进行判断。
图2 微信模块流程
微信后端与微信联系响应,通过绑定的域名、微信服务器发送的get请求,将需要的参数发送给后端服务器,然后通过md5字符串加密,与发送来的字段进行比对。如果相同,则返回微信一个response,微信服务器确认之后,将用户发送给服务器的消息以xml的形式post给服务器。
微信服务器通过xml作为数据传输,微信响应服务器通过对腾讯微信服务器post来的数据进行xml格式化解析,然后将字典里的数据与需要响应的内容进行对比。如果符合,则对数据进行响应,读取到教务系统数据库,将数据格式化后输出字符串,然后通过xml模板,将响应的数据返回微信服务器,微信服务器再将数据发送给用户。
四、 结语
为了适应当前校园信息化需求,设计开发了基于PHP与MySQL的教务管理系统。微信公众端的开发建立在教务管理系统的基础上,这两套系统采用同一套数据库,实现了教务管理系统各类教务、教学信息的传播,以及教务的基本管理等功能。该系统是在面向对象的方法指导下,采用两种框架开发完成,两种框架都具有良好的可维护性与可扩展性,并具有高并发的特性。随着互联网与智能设备的发展,对系统开发将提出更高要求,需要兼容更多设备、提供更多信息展示方式等,这也是下一步研究的方向。
参考文献:
[1]高岭,林凯,李增智。基于校园网环境的高校教务管理系统开发研究[J].计算机应用与软件,2001,18(12):31-33.
[2]徐仁佐。软件可靠性工程[M].北京:清华大学出版社,2007.
[3]BARTHOLOMEW D.MariaDB vs.MySQL[Z].Dostopano,2012.
[4]陈员义,李艺志。基于Bootstrap响应式Web前端研究[J].福建电脑,2015,31(12):72-73.
[5]黄冰,熊昌昱,李强,等。基于微信公众平台开发的校园微信助手[J].信息通信,2015(11):110-111.