APP下载

基于微信小程序的学业互助平台研究与实现*

2023-11-07刘明华王乐乐武思涵

微处理机 2023年5期
关键词:页面程序数据库

刘明华,王乐乐,葛 恒,武思涵,李 涵

(北京信息科技大学理学院,北京 100192)

1 引 言

随着信息科技的迅猛发展和上网人群规模的日趋壮大[1],越来越多的软、硬件工具被开发出来,为人们的学习和娱乐提供便利。在这当中,移动端应用普及度高,但存在硬件资源要求高、占用存储空间大等缺陷。针对此类缺陷,轻应用(Light App)[2]产品在2013 年由百度公司首先提出,但在社会中并未获得广泛应用。而于2017 年提出的微信小程序(WeChat Applet),却受到人们的喜爱,迅速形成庞大的用户人群,越来越多的微信用户熟悉和适应了这种无需下载就可使用、打开速度快、不过多占用存储空间的微型程序[3-4]。对于开发者而言,微信小程序的前端代码都存储在腾讯云服务器上,其因响应速度快、开发成本低等优点也受到青睐。本研究尝试设计实现一款基于微信小程序的学业互助平台,运用MINA 框架、JSON 数据库进行开发,以丰富便利的功能为广大学生群体的学习和生活提供帮助。

2 技术框架

2.1 功能设计

所设计的学业互助平台分为四个模块,分别为:个人中心模块、论坛模块、首页模块和搜索模块,如图1 所示。在个人中心模块,有“注册”和“我的标签”两个功能。标签内容包括学生个人专业信息及年级。在首页模块中,学生可以查看自己的专业介绍和培养计划。小程序也会根据学生在个人中心选择的标签,推荐学生可能感兴趣的文章。在搜索模块中,小程序会给出最近的搜索热词,并使用模糊搜索完成信息检索工作。在论坛模块,学生可以发布文章、上传和下载图片,文章会附带发布者的标签信息。同时小程序还有“监控审核”功能,后台管理员会把论坛中不合适的帖子或图片删除。

2.2 数据库设计

在开发过程中,小程序需要读取构建页面所需要的图片和文字信息,并在发布后存储用户信息和用户发布的内容。为此选用JSON(JavaScript Object Notation)[5]设计和创建数据库表。JSON 数据库是一种非关系型数据库,用于存储和查询JSON 格式数据。在此一共为数据库设计四张表,分别是User(用户表)、Competition(竞赛信息表)、Essay(文章表)、Plan(培养计划表),用来记录数据。

用户表如表1 所示。它用来保存注册用户的基本信息和用户勾选的标签信息。其中,Id 是记录唯一标识,使用了String 类型,用于在表中编号,由数据库表自动分配,且不可更改;_openid 是微信用户识别的唯一标识,使用了String 类型,这个标识只对当前的小程序有效;Major、Nianji 是用户在标签页面选择的专业、年级,使用了String 类型,根据用户选择的不同按钮进行赋值;Name 是用户昵称,使用了String 类型,是用户授权微信身份的名称;Submit 是用户发布的文章数组,使用了Array 类型,数组内部是String 类型的文章Id。

表1 User 表

竞赛表如表2 所示。它用来存储首页页面中的竞赛信息。其中,Id 是记录唯一标识,使用了String类型,用于在表中编号,由数据库表自动分配且不可更改;Title 是竞赛名称,使用了String 类型,存放了记录竞赛的简称;Images 是图片地址数组,使用了Array 类型,内部包含String 类型的图片存储地址;Index 是竞赛索引,使用了Number 类型,用来在数据库表中排序。

表2 Competition 表

培养计划表如表3 所示。它用来存储不同专业的培养计划数据。其中,Id 是记录唯一标识,使用了String 类型,用于在表中编号,由数据库表自动分配,不可更改;Image 是培养计划图片地址,使用String类型,存放图片在云存储的存储地址;Major 是专业标识,使用String 类型,存放了培养计划图所属专业。

表3 Plan 表

文章表如表4 所示。它用来记录论坛模块中学生发布的文章数据。其中,Id 是记录唯一标识,使用了String 类型,用于在表中编号,由数据库表自动分配且不可更改;_openid 是微信用户识别的唯一标识,使用了String 类型,作为唯一标识用来检索用户表中的信息;Avatar 是作者头像地址,使用String 类型,是微信为每一个微信用户提供的头像网络地址;Body 是文章文字的主体,使用了String 类型,存放用户在文章中编辑的文字内容;Images 是文章图片地址数组,使用了Array 类型,内部是String 类型的云存储中图片地址;Major、Nianji 是作者的专业、年级,使用了String 类型,是在用户发布后复制的用户表中发布者的信息;Time 是文章发布时间,使用了Date 类型,方便文章在展示过程中排序;Title 是文章标题,使用String 类型,是搜索页面模糊查询的搜索源;Writer 是作者名称,使用了String 类型,以便在论坛页面直接显示作者名称;Comments 是用户评论数组,使用了Array 类型,内部是Object 类型的对象,包含String 类型的Name(评论者名称)、String 类型的Avatar(评论者头像地址)、String 类型的Image(评论图片)、String 类型的Body(评论内容)。

表4 Essay 表

2.3 MINA 框架

本小程序采用了腾讯官方提供的微信开发者工具,以MINA(MINA IS NOT APP)为小程序开发框架,进行简洁高效的开发。整个小程序系统可分为应用层、视图层(Viewer)、逻辑层(App Service)[6]和存储层四层,如图2 所示。

图2 MINA 层次架构图

其中,存储层是整个系统的云端环境。设计使用了腾讯云提供的JSON 数据库和云存储来存储用户信息数据和用户上传的图片。

逻辑层为整个系统提供服务。使用JavaScript[7]来编写页面的交互逻辑、网络请求、数据处理;使用JSON[8]编写页面交互逻辑,实现处理数据和网络请求,用来配置系统文件,同时与存储层JSON 数据库连接。

视图层是实现数据交换和数据显示的试题页面。用WXML(WeiXin Markup Language)[9]和WXSS(WeiXin Style Sheet)编写,并由组件展示。WXML 用于搭建小程序页面的基本结构,是一种类似HTML的文本标记语言;WXSS 则与CSS 类似,用来渲染页面的表现形式。MINA 框架为页面组件提供了一些事件监听相关的属性,通过事件处理函数可以将视图层和逻辑层绑定在一起。当更改逻辑层中的数据时,视图层也会随之改变。

应用层是系统与用户操作的核心部分。微信小程序可以在PC 端的微信软件和移动手机端的微信APP 上使用,本设计小程序同样也可跨平台使用。

2.4 模糊搜索算法

在搜索页面中,采用模糊搜索[10]对学生输入的词语或语句进行检索。模糊搜索是用户搜索意向不明确或者检索词较少时想要返回更多查询结果的情况下使用的方法。模糊搜索的核心思想是将用户输入的字符串拆分成多个长度较小的字符串,与待搜索的数组的每一项做匹配,把符合要求的数据保存下来。在本小程序中,模糊搜索的应用场景是在数据库表中寻找与检索词类似的结果。拆分检索词的过程需要用到正则表达式,如要查询标题与“数学”相关的文章时,后台代码会将字符串“数学”分为“%数%学%”并完成查询。

设计使用db.RegExp 完成模糊搜索。它是官方提供的模糊查询API,代码情况具体如图3 所示。首先通过查找语句访问数据库表'essay',确定查询域是表中每条数据的title;然后使用db.RegExp 将用户输入内容content 分词,并且当用户输入英文查询查询时,内容不区分大小写;最后使用get 函数获取查询结果。

图3 模糊搜索代码

2.5 基于内容的推荐算法

首页模块中包含向学生推荐感兴趣文章的功能。推荐功能的实现需要使用基于内容的推荐算法(Content-Based Recommendations)[11-12],该算法是基于标的物相关信息、用户相关信息为用户提供推荐服务的。具体来说,算法首先获取用户选择的专业和年级标签,然后从文章库中找出所有包含这些标签的文章。文章的标签可以是人工标定的,也可以是从作者自己设置的标签中提取的。应用推荐算法的一个实例如图4 所示。本小程序可以为大一学生推荐新生入学指南,向大二学生推荐各自专业的竞赛经验,针对大三同学推荐考研经验,等等。

图4 推荐算法示例

基于内容推荐的实现代码如图5 所示。首先使用微信小程序API 接口获取用户基本信息,然后在User 表中查找与用户昵称相同的数据并用变量admin 存储;接下来查询数据库表Essay,寻找专业和年级标签与用户相同的文章,并将这些文章按时间降序排序存入全局变量passages 中。

图5 实现基于内容推荐的代码

3 系统实现

3.1 系统搭建与调试

小程序基于腾讯云服务器搭建,使用的云服务器配置为4 核CPU、8G 内存、10M 带宽,此外还包括1500 GB 月流量;系统盘选取100 GB SSD;10 M公网带宽下载速度峰值为1280kB/s。所设计的小程序被应用于北京信息科技大学理学院,为信息与计算科学、电子信息科学与技术、应用统计学三个专业的学生提供服务。目前理学院在校本科生共579 人。小程序于2022 年8 月21 日发布试用版进行内测,经过10 天的建议采纳,进行了修改优化,于8 月31日发布正式版。从正式发布到2023 年3 月1 日,在7 个月的时间内累计访问用户593 人次。小程序用户访问曲线如图6 所示。

图6 小程序用户访问统计曲线

对于图6 中的数据变化趋势可作如下分析解释:2022 年8 月到9 月期间小程序访问用户人数较高,这一时期适逢开学,学生需要对新学期课程提前加以了解,并做出相应学业规划;2023 年1 月开始,该学期临近结束,学生陆续进入寒假状态,对课程信息的需求减少,因此用户访问量较少。

3.2 实际使用方法

小程序的首页模块的各个页面如图7 所示。进入首页后,可以看到学校海报的轮播图、竞赛公告、培养计划和文章推荐等,如图7(a)所示;点击培养计划按钮,小程序会根据学生的专业信息,展示相应专业的学分修读计划,如图7(b)所示;如果想更深入了解自己的专业,可以选择相应的专业简称,查看专业特色介绍和与各学期的课程安排,如图7(c)所示;在竞赛公告一栏,会列出最近三个适合学生参加的学科竞赛,点击则可查看详情介绍,如图7(d)所示。在首页的最下面,通过基于内容的推荐算法,会根据学生选择信息进行推荐。

图7 首页模块界面

点击放大镜图标即可转入搜索模块。在搜索栏中输入文字,可通过模糊查询获取检索内容,具体示例如图8 所示。在顶部文本输入框中输入“数学”,点击搜索按钮就可以看到在数据库中检索到有关数学的内容。搜索结果包括数学建模(信计)期末考试、期末考试-数学分析1、期末考试-数学分析3 等。

图8 搜索模块界面

论坛模块的各个页面如图9 所示。在图9(a)中,顶端是发布文章按钮,点击即可进入发布界面,如图9(b);发布按钮下面,按时间倒序展示发布的文章,展示内容包括文章标题、作者、时间,以便学生快速定位自己感兴趣的文章,点击标题即进入文章详情页面,页面如图9(c)所示,点击图片可以放大查看也可以下载,如图9(d)所示。在发布界面,学生可以编辑标题、正文和上传图片,图片的数量最多不超过9 张。在阅读文章的最后提供评论功能,输入文字上传图片点击发表即可完成评论。与文章展示顺序相反,评论信息将按时间正序排列。

图9 论坛模块界面

个人中心模块的各个页面如图10 所示。学生可以自由选择是否登录来实现对自己的隐私保护。登录后,小程序会获取学生的微信头像和昵称,在个人中心页面显示。在头像和昵称下方,提供了方便学生寻找自己发布内容的“我的发布”,以及为首页推荐和文章标签提供信息的“我的标签”。标签在专业一栏可以选择“信计”、“电技”和“统计”等不同专业。年级一栏可选择“大一”、“大二”、“大三”和“大四”。除此之外,还可在“关于程序”当中查看小程序介绍和小程序开发者信息,为学生定制化信息和提出修改建议也提供了便利。

图10 个人中心模块界面

4 结 束 语

本小程序的开发工作,从功能需求选择、数据库环境搭建、小程序页面实际开发,到小程序上线和发布、后台监管和检测,都是在对现有微信小程序开发经验进行梳理和运用的基础上,与大学生的学习生活需要相结合而完成的。在互助平台的构建中,融入了模糊搜索算法和基于内容的推荐算法,对小程序的搜索功能及个性化推荐功能实现优化和改善。设计实现的互助平台,不仅能帮助大学生全面认识各专业,更可辅助学生做出合理学业规划,让学生在课堂之外体验合作学习的乐趣。目前小程序也存在一些不足,比如随着时间的推移,学生发布在小程序上面的内容会越来越多,届时腾讯云开发所使用的数据库和存储容量都将需要扩增,购买云服务器和数据库来增大存储和网络带宽,将作为一个让小程序运行更流畅的不可避免的选择。后续研究将继续跟进,进一步修改、优化代码,提供更好的服务。

猜你喜欢

页面程序数据库
刷新生活的页面
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
数据库
数据库
数据库
数据库
创卫暗访程序有待改进
网站结构在SEO中的研究与应用