潘俊芳, 侯振兴
(兰州财经大学 信息工程学院,甘肃 兰州 730020)
当今社会网络科技发达,人们的日常生活大都与网页、微信小程序和手机App相关。对于开发来说,网页的优点就是不需要下载,运行速度快,但设计网页时需要考虑兼容性及网页优化标准;手机App需要下载并且需要考虑手机系统,研发多版本;而小程序是一种不需要下载就可以使用的应用程序,相较于网页不需要考虑兼容性及相关标准,相较于App减少了内存的占用,而且不管是什么系统, 只需开发一个版本即可[1]。通过搜索小程序或者扫描小程序码,就可立即使用。已有的研究设计大都需要购买设备或服务器,成本较高,消耗大量的资金,给高校造成一定经济压力。系统开发时,开发人员不仅要开发功能模块,还需要关注数据库和文件储存,后期管理员也会被频繁的服务器故障花费大量时间精力[2]。由此,设计一款基于小程序云开发,方便学生预约座位、监督及管理员进行信息化管理的小程序,可以减少抢占座乱象和因抢占座造成的冲突,提高座位的利用率,减轻学校经济压力。
小程序的编写主要在微信开发者工具上进行,它可以实时预览界面,便于迅速调试、修改,还可以通过手机查看预览效果。小程序的前端界面主要是运用WXML、WXSS和JS等语言编写的。WXML是框架设计的一套标签语言,用来构建页面结构;WXSS是样式语言,决定页面中组件的展示样式,它具有CSS大部分特性,为了适应开发小程序,对CSS进行扩充及修改;JS用来处理与用户交互的逻辑事件[3]。小程序利用云开发功能,可提供完整的云端支持,不需要搭建、配置或管理服务器,代码运行所需要的服务器服务皆由云端平台来提供,只需要考虑复杂的业务逻辑问题即可。系统使用的数据库是小程序云数据库,后台则是使用基于云开发搭建的可视化的内容管理服务,开通简单,无须编写代码即可使用丰富的管理功能[4]。云数据库属于文档型数据库,除了支持基础读写、搜索及数据库事务,还管理索引和数据库访问权限,保证了信息的独立性,具有很强的安全性,能够满足系统后台数据的处理要求。
根据图书馆座位管理需求,系统主要功能有权限、信息查询、积分需求等几个方面。在权限方面,小程序的使用对象主要是在读学生。因此,需要在登录时识别用户身份跳转到对应页面。在信息查询方面,需要能让学生随时随地地查看图书馆座位使用及预约情况,所以系统需要实时更新座位情况,确保用户能够及时了解情况。对于座位签到和释放需求,用户需要在入座时使用手机进行签到,表明自己已入座[5],同样也需要在离座时使用手机进行退座处理,让其他同学可继续预约该座位。在调整座位状态方面,为避免座位无人被举报,用户可根据自身情况进行暂离或归座处理。然后,取消预约需求,一旦临近预约的时间段,用户如果无法直接到达预约座位,可以删除预约座位信息。在反馈监督方面,学生需要对程序开发设计方面提出建议,也需对使用过程中出现的浪费座位资源情况提出反馈。在积分需求方面,为了规范学生行为,系统需要对未签到、及时签到、未退座及其他违规行为做出相应地处罚,对积极举报反馈的相关学生给予鼓励,因此,需要用积分的形式作为依据,当积分低于一定值时没有预约功能的使用权[6]。
通过前期对系统的需求分析,得出图书馆座位预约小程序功能结构,如图1所示。
图1 系统功能结构图
3.1.1 用户模块
小程序端的用户模块对系统设计主要有登录、预约、签到、退座功能等几个方面。在登录功能方面,因为用户仅为在校学生,所以不采取获取微信用户信息的方式登录,而使用传统的账号密码登录,根据账号的身份登录到不同用户界面。界面如图2所示。
图2 登录界面
在预约功能方面,在可预约时间内,系统将每个时段设定为1小时,时段设定后可根据云后台用户使用数据进行调整;用户根据自身的使用需求,利用小程序随时随地地预约特定时间段内的座位[7]。在预约成功后,用户可接收订阅消息,系统将会在预约开始前的半个小时在微信上通过OpenID为用户发送预约信息,提醒用户。如果在某中间时间段,座位仍有空余,用户也可直接扫描座位码入座。
在签到功能方面,图书馆开馆期间,用户在预约时间前10分钟可进行扫描桌子上的座位码入座,系统会判断该座位是否已有人入座及入座是否及时。退座功能方面,分为主动退座和被动退座,主动退座为在预约时间结束前使用小程序自行确认离座,需要重新扫描座位码以判断是否为同一座位;被动离座是离开时未在小程序上退座,需要通过小程序定时程序退座。只有在签到完成后才能进行退座和暂离。预约结果详情界面如图3所示。
图3 预约详情界面
在小程序“我的界面”可以查看预约和反馈的历史记录及详细信息,并进行一定修改,还可以查看自己的积分情况[8]。反馈界面如图4所示。
图4 反馈界面
3.1.2 管理员模块
由于小程序采用云开发提供的后台管理网站,可以对用户、自习室、预约等信息进行简单的增删改查,所以小程序端的管理员模块对系统设计主要有公告管理、反馈管理、用户管理等几个方面,方便管理者在手机上进行简要处理。在公告管理方面,管理员可在小程序上直接发布公告信息,例如,桌椅损坏,行为违规等信息。在用户信息管理方面,主要是为忘记密码的学生进行重置密码操作。在反馈信息管理方面,管理员可登录小程序对反馈进行处理,并向反馈者发送审核反馈。反馈管理界面如图5所示。
图5 反馈回复界面
除此之外,小程序使用云函数设置定时功能,会在开馆时间内每小时对当天的预约进行遍历,对未签到的用户,视为违约,并修改座位状态;对未主动释放座位的用户,扣除积分,并将其座位状态改为已使用。定时功能config.json部分的代码如下:
"triggers": [
{
"name": "myTrigger",
"type": "timer",
"config": "0 0 9-22 * * * *"
}
]
系统采用云开发自带的数据库,根据系统需求以及功能设计,为了确保数据传输和各个表之间连接顺利,设计了用户表、预约表、自习室表、反馈表和公告表,主要详细介绍下面四张表的字段。用户信息包括编号、用户姓名、账号、密码、学院、专业、班级、身份(教师或学生)和积分等字段。预约信息包括编号、学号、学生姓名、自习室名称、座位号、日期、开始时间、结束时间、签到时间、退座时间、最近一次操作时间和座位状态(已入座、未入座、已使用和暂时离开)等字段。自习室信息包括:编号、自习室名称、座位数和备注(可用或不可用)等字段。反馈信息包括:编号、反馈者姓名、自习室名称、座位号、反馈类型、反馈内容、详情图片、反馈时间、反馈状态(已处理或未处理)和管理员回复等字段。其中所有表中主键均为编号字段,它是由系统自动生成的,所有编号都不相同且没有规律。
为了让系统内各部分的关系简单明了的表现出来,用E-R模型图来表示,如图6所示。除了学生和自习室座位之间关系为一对一,其他用户和实体之间明确是一对多的关系。一个管理员可发布多条公告、管理多个自习室和回复多个反馈;一个学生一个时段仅可预约一个座位、提交多条反馈和查看多条公告;一个自习室包含多个座位。
图6 系统的E-R图
根据上述功能设计,图书馆座位预约步骤如下:首先,用户使用学号/工号登录系统,系统会自动识别用户身份,根据用户身份,系统将展示相应的系统界面。学生通过界面选择使用的功能:预约、查询和反馈。管理员通过界面选择功能:查询、反馈回复、用户管理和发布公告。其次,学生在预约座位时,需要先选择自习室,再选择预约时间段,如果预约的时间段,没有空余座位,则会提示重新选择;否则,预约成功。需要注意学生仅能预约当天的自习室座位,且每个时段每个学生仅能有一个预约的座位,不能重复预约。在预约时间前10分钟内,学生可签到,同时系统会判断签到时间,确定学生是否按时就坐。当用户发现自习室有很多空位置,如果通过查询座位状态发现为已入座,可填写相关信息或图片,可向管理员举报该用户;或者说发现座位上有私物堆放,如果座位为未入座,也可投诉。管理员可重置学生账户密码,将学生的反馈经过商讨验证后给予回复。
由上述使用步骤得出图书馆座位预约小程序的系统流程如图7所示。
图7 系统的流程图
系统完成设计后,需要对图书馆座位预约小程序进行系统测试,由于小程序仍在开发阶段,微信服务平台提供的压测工具对MAU有一定的要求,所以暂时不能进行压力测试。因此,主要对小程序进行功能测试,即分别测试系统的功能用例,检查相关功能是否达到预期的使用要求,以便及时解决测试过程中发现的程序问题,保证系统运行的准确性。测试主要采取黑盒测试,对系统功能用例进行测试。通过分别登录学生端和教师端进行预约、入座、退座、反馈、查询和处理反馈等几个方面的功能操作。其中,预约和入座用例主要测试代码逻辑是否准确严谨;用例测试座位状态更改是否顺畅;查询用例主要测试查询语句是否准确;反馈提交及回复用例主要测试学生端和教师端交互是否正常;暂离、退座和修改、重置密码用例主要测试前端与数据库之间交互是否正常。经过对系统所有功能的全面测试,测试结果表明,每个功能模块相互之间的联系都非常顺畅,页面之间跳转参数传递也都正常,数据库的添加、删除、更新、查找等语句也很准确,经过对微信小程序所有功能性测试,系统功能已经达到了预期的目标[9]。
本文详细论述了对图书馆座位预约小程序的设计,且系统已较完整地实现了文中所论述的功能。其中,用户可以通过小程序预约座位,对座位使用状态与预约情况进行查询,对使用过程中出现的问题进行反馈,在入座时进行座位签到,以及调整座位状态。管理员可以登录小程序进行审核反馈、重置用户密码和发布公告等简单操作,在内容管理界面上对用户、预约、公告、自习室以及反馈等信息进行管理。我们可以通过云开发控制台了解数据库的使用情况,以及小程序的访问量,还可以通过可视化图表了解小程序使用的高频时段。根据后续使用情况及建议对小程序做相应的修改。