1. 系统开发背景
图书馆因有良好的学习氛围、大量的学习资源吸引大家前来学习,图书馆还未开馆就有大量的同学在门口排队等待,有限的座位与日益增加的自主学习者之间形成了供不应求的现象,再加上不了解图书馆的座位使用情况和恶意占座等现象,使得有限的学习座位越发紧张 [1] 。伴随着越来越多的同学去图书馆,人一多座位少就难免会发生一系列问题:座位占着不用,座位使用率降低,更有甚者用大量的书占座据为己有,同时也引发了同学之间的矛盾,为此发生口舌,甚至与图书馆人员争论不休。针对一系列事情,发现了学生占座的诸多原因,如学生的道德素质有待提高、图书馆有待规范、基础设施有待进一步提升等,针对解决图书馆座位资源的管理和利用率的问题,图书馆一直在着手努力解决。
随着科技的大力发展,如今越来越多的问题可以使用微信小程序等一系列工具解决,例如使用微信小程序进行点餐。所以我们想到可以使用微信小程序来开发一款高性能的图书馆座位预约系统。
2. 开发技术
2.1. 概述开发平台
微信小程序是继原生APP、Web APP之后出现的一种新的APP形态。原生APP随着Android和iOS两大平台的迅速发展而逐渐变得强大起来,但由于两个平台的互不兼容,就需要开发两个版本,开发成本比较高。使用HTML5开发的Web APP很好地解决了跨平台的问题,但是性能和同学体验不佳。为此,微信小程序借鉴了现有的Web技术,通过独立的运行环境实现了跨平台,并提供了接近原生APP的使用体验,具有明显的优势。 [2]
2.2. 设计技术
1) 微信小程序开发语言
小程序的编写主要在微信开发者工具上进行,它可以实时预览界面,便于迅速调试、修改,还可以通过手机查看预览效果。小程序的前端界面主要是运用WXML、WXSS和JS等语言编写的。WXML是框架设计的一套标签语言,用来构建页面结构;WXSS是样式语言,决定页面中组件的展示样式,它具有CSS大部分特性,为了适应开发小程序,对CSS进行扩充及修改;JS用来处理与同学交互的逻辑事件 [3] 。小程序利用云开发功能,可提供完整的云端支持,不需要搭建、配置或管理服务器,代码运行所需要的服务器服务皆由云端平台来提供,只需要考虑复杂的业务逻辑问题即可。系统使用的数据库是MySQL数据库,后台则是使用基于云开发搭建的可视化的内容管理服务,开通简单,无须编写代码即可使用丰富的管理功能 [4] 。
2) 座位图的设计
导入记录有座位分布的二维平面图,通过技术手段,将已预约的座位的小正方形显示为红色,意为已经有人预约此座位,未预约的座位的小正方形显示为绿色,意为可以预约此座位。
3) 与门禁系统关联
通过网络与图书馆门禁相连接,并设置定时,在预约座位之后,二十分钟之内需要通过门禁进入到图书馆,否则视为取消预约。
4) 架构
为了让系统具有良好的灵活性和伸缩性,选用了面向服务的架构(SOA)。面向服务的架构是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
5) MySql数据库
在系统开发中会产生很多的数据,那么数据库的作用就显得尤为重要。目前主流的数据库有MySQL数据库,SQL server数据库和Oracle Database数据库。在此我们选择MySQL数据库作为我们系统开发的数据库。MySQL可以将数据存储在不同的表中,非常灵活,而且还可以提高系统在实际应用中的速度。同时拥有较高的兼容性。对数据库的操作包括增加、删除、修改、查找等功能。MySQL具有体积小、速度快、成本低等优点,是目前最受欢迎的开源数据库。使用流程如下:
a) 创建小程序并引入云开发。
b) 创建云函数,取名为mysql。
c) 安装MySQL2模块依赖。
d) 编写MySQL云函数链接MySQL数据库。代码如下:
const cloud = require('wx-server-sdk')
const mysql = require('mysql2/promise')
exports.main = async(event, context) => {
try {
const connection = await mysql.createConnection({
host: 服务器ip,
database: 数据库名,
user: mysql使用后名,
password: mysql密码
})
const [rows, fields] = await connection.execute('SELECT version();')
return rows;
} catch (err) {
console.log(链接错误, err)
return err
}
}
6) 上传并部署云函数。
部署完成后即可通过小程序链接MySQL数据库来进行相关的增删改查操作。
3. 模块设计
3.1. 系统架构
本系统分为五个模块,如图1所示,分别为学生注册/登录系统模块、签到/销到模块、数据管理模块、数据利用模块和座位管理模块,如图2所示为系统架构数据模型ER图。接下来,我们对每一个模块进行详细的说明。
3.1.1. 学生注册/登录模块
在使用本系统前,学生需要在系统的登录界面选择注册一个账号,输入自己的学号、专业、班级以及对应的学院信息,完成账号的注册,同时,系统完成对注册学生的信息的收集(学号、专业、班级、学院、以及感兴趣的领域),供接下来的数据管理模块和数据利用模块使用。然后完成账号注册,登录时通过自己的学号和设置的密码进行登录预约系统,进行座位预约。登录界面如图3和注册界面如图4所示。
预约系统内部展示座位信息,如图5所示,在图中展示座位信息,其中有三种颜色:红色表示已经在使用,蓝色表示已经有人预约但还没有签到使用,绿色表示没有人预约也没有人在使用,可以进行预约并使用该座位。在系统内部可选择自习楼层,系统会根据学生所选择的楼层进行不同楼层间座位图的展示。更直观的让学生了解到座位使用情况。
Figure 1. System architecture diagram
图1. 系统架构图
Figure 2. System architecture ER diagram
图2. 系统架构ER图
Figure 3. System login screen
图3. 系统登录界面
Figure 4. System registration interface
图4. 系统注册界面
Figure 5. Schematic diagram of the seat reservation interface
图5. 预约座位界面示意图
3.1.2. 签到/销到模块
签到销到模块为我们系统设计的一大亮点,其中签到模块摒弃了传统的图书馆机器签到,我们采用墨水屏显示二维码来让预约座位的同学扫描二维码进行签到。电子墨水在通电时可以改变颜色,可以像传统屏幕那样显示变化的图像,并且它的功耗低、辐射小,能够作为签到所需的二维码屏幕。由此,我们设计了动态刷新的二维码,可在一定程度上防止拍照签到等签到作弊现象,同时,签到时系统会通过GPS根据用户所在位置信息,来判断是否满足签到条件(范围需定位在图书馆范围内方可签到)。签到界面如图6所示。同时,在座位使用完毕,即将离开图书馆之际,需要在小程序上释放该座位。签到与销到皆与门禁系统相关联。在小程序上预约座位后,门禁会开启20分钟倒计时(图6中以一小时为例),在20分钟内,学生需要到达图书馆刷卡进馆签到确认预约,否则视为取消预约,系统自动释放位置信息。
Figure 6. Booking system check-in diagram
图6. 预约系统签到示意图
3.1.3. 数据管理模块
在学生注册账号的同时,会收集学生信息,包括姓名,性别、专业、班级、学院等并保存在系统中。同时,数据库还会记录和保存每一位学生来图书馆预约座位的次数以及是否按规定流程进行销到。数据由表单的方式呈现,存储在MySQL数据库中供系统使用。具体学生信息表如表1所示。
表名 |
字段 |
数据类型 |
描述 |
学生信息表 |
STU_ID |
BIGINT |
学生账号 |
PWD |
VARCHAR |
登录密码 |
|
NAM |
VARCHAR |
学生姓名 |
|
AGE |
BIGINT |
年龄 |
|
MAJOR |
ENUM |
专业 |
|
CLASS |
ENUM |
班级 |
|
STATUS |
ENUM |
预约状态 |
Table 1. Student information sheet
表1. 学生信息表
3.1.4. 数据利用模块
数据在系统中占着非常重要的地位和作用,单单实现其功能是不够的,如若对系统使用过程中的数据加以利用,则更能体现系统的价值。因此系统在对学生信息以及预约信息的收集和利用方面下了不少功夫,同时对数据的利用方式也是我们系统的一个亮点所在。由于在注册账号时收集到了学生的信息,因此我们通过大数据接口进行数据分析,在预约座位的同时,为学生推荐相关专业性的书籍,在预约座位的同时能够简单快速的大致了解一本书。如果学生对这本书感兴趣,系统会调用图书馆图书借阅系统查阅此书的位置,方便学生进行借阅。
根据学生预约图书馆座位的次数(非恶意刷次数的预约)推出学习之星,“榜样”的力量是无穷的,以此来激发同学们去图书馆自习的意愿。在3.1.2签到销到模块中提到的销到模块,此处系统会统计是否正常销到,未按规定销到的次数达到四次,则暂停此学生图书馆座位预约一周。以此督促大家养成良好的使用习惯。在被暂停预约功能之后,可联系图书馆管理员,由管理员视其情况决定是否予以开启。
3.1.5. 系统座位管理模块
系统具有座位自动管理和图书馆管理员管理两种形式。其会对图书馆每层自习室中的座位数量进行收集,并在系统中展示相关座位信息(通过红、蓝、绿三种颜色)。座位释放时,系统收到释放指令,则立即更新释放座位为绿色(可预约座位)。同时,系统每天在图书馆闭馆后,自动释放所有座位,全部标为绿色可预约状态,在第二天早晨开启预约功能。
3.1.6. 系统管理员模块
系统管理员模块分为登录、座位管理、用户管理和公告管理四个部分,关系如图7所示。其中登录部分为管理员专用账号和密码,登录即是管理员界面,如图8所示为图书馆管理界面,包括用户界面、座位管理、公告管理。
1) 座位管理模块
管理员可以查找调用MySQL数据库的表进行数据交互,使得管理员可以对系统的座位进行管理(如释放座位信息等)。
2) 用户管理模块
当有的学生信息发生改变后(如毕业、离校、转院等),可联系图书馆管理员进行信息的修改。
3) 公告管理模块
该模块包括查询栏和公告通知,公告类型主要分为违规通告和闭馆通知等,由系统管理员进行发布与管理。在该页面,用户可以清晰查看公告发出的时间以及标题内容。同时当公告过多时,可以透过上方的搜索框进行关键字的搜索,方便查找。
Figure 7. System administrator module
图7. 系统管理员模块
Figure 8. System administrator interface
图8. 系统管理员界面
4. 性能分析
1) 与传统的管理方式相比,传统的管理方式是使用人工通过用纸和笔进行数据信息的统计和管理,并且这种方式对于存储和查找某一数据信息都比较麻烦,随着计算机网络的到来,这种传统的方法很难适应当下社会的发展,不仅降低人们的办事效率,而且还需要很多的人力和物力,对于使用的时间和所要花费的费用都是比较高的,为了降低成本费用,提高学生的工作效率,进行开发一套基于计算机和网络技术的图书馆座位预约系统。
2) 图书馆座位预约系统的开发设计时一个独立的系统,以流行数据库进行数据的存储开发,主要是为了实现图书馆座位预约系统的学生角色及相对应的功能模块,让图书馆座位预约系统的管理不会存在管理差异、低效率,而是跟传统的管理信息恰好相反,图书馆座位预约系统的实现可以节约资源,并且对于业务的处理速度也提高,速度快、效率高,功能性强大。
3) 预约系统以微信小程序的方式,结合数据库,互联网,达到方便、快捷的使用方式,相较于APP,微信小程序面向的用户更广,不占用手机内存空间,轻量化,不会导致手机卡顿。其次,小程序开发门槛和成本更低,研发时间更短,并且维护成本相较于APP也更低。更重要的是,微信小程序不受限于平台,安卓和苹果系统都可以使用,兼容性更高。
5. 总结
在图书馆占座现象普遍大量存在的现在,一个好的、实用的座位预约系统显得尤为重要,本系统不仅具有座位预约功能,其利用同学个人数据进行个性化推荐和统计其自习次数以及时长来对系统产生的数据进行充分利用。其次,本系统的签到模块是一大亮点,通过GPS定位在图书馆范围内签到在一定程度上防止了签到作弊的现象。本系统以微信小程序的方式呈现,体积更小,内存更小,使用更方便,开发更快捷,实用性更高。本系统旨在减少占座的现象,促使大家养成一个好的座位预约使用的习惯,提高座位利用率,营造一个较公平的座位使用环境,拒绝长时间占座。
参考文献
[1] | 付伟, 吴珊珊, 钱少博. 高校人力资源管理工作的优化路径探析[J]. 现代营销(信息版), 2020(2): 206. |
[2] | 黑马程序员. 微信小程序开发实战[M]. 北京: 人民邮电出版社, 2019: 22-23. |
[3] | 李昊楠, 刘雅莉. 基于微信小程序的图书馆座位预约系统设计[J]. 现代信息科技, 2020, 4(6): 4-6. |
[4] | 潘俊芳, 侯振兴. 基于微信小程序的图书馆座位预约系统的设计[J]. 黑龙江工业学院学报(综合版), 2022, 22(5): 66-71. |