刘忻曈,毛明志,2*
(1.中山大学计算机学院,广州510275;
2.中山大学软件工程学院,珠海 519082)
大学生作为一个特殊社会群体,正处于由校园走向社会的过渡时期,主要面临着包括环境变化引起的不良适应性、异性交往引起的情感困惑、人际关系的困扰、学习压力及求职择业引起的紧张焦虑问题以及经济负担等心理问题[1]。近年来,随着计算机技术在高校的不断成熟和发展,传统的大学生心理健康教育已经不能满足大学生的心理健康需求,利用网络开展心理健康教育成为一种新思路、新途径[2]。
国内外高校在心理健康相关组织机构和服务方面、教育模式方面也存在着明显差异[2-4]。与国外高校的心理健康教育相比,我国对高校学生的心理健康教育起步较晚,但呈现出迅速发展的趋势,目前已经形成了较为完整的理论体系和操作模式,取得了很多的成果[5-8],但从实际的效果来看,我国大学生心理健康教育工作仍然存在一些不足,如教学模式不够灵活多样、服务实效不够理想、体系和平台建设不够健全的问题[9]。为此,本文在心理问卷的基础上,设计并实现了一款大学生心理健康服务APP系统,可为高校大学生提供形式更丰富的心理健康服务,方便大学生了解相关知识,对自身心理健康状态有更清晰的认知,尽早发现心理健康问题并寻求学校辅导员教师以及专业人员的帮助。
目前国内对心理健康的研究方法中,测验法运用最为广泛,即通过国内外测评量表对大学生心理健康进行评定分析,使用频率较高的量表有:90项症状自评量表(SCL-90)、自编量表、大学生人格问卷(UPI)、抑郁自评量表(SDS)、焦虑自评量表(SAS)、卡特尔16种人格因素测验(16PF)[6]。
本文采用症状自评量表(SCL-90)对学生进行心理健康测量评估,系统开发采用前后端分离的混合开发模式。数据库使用PostgreSQL实现,在Ubuntu系统下运行;
后端接口使用Flask实现,在Ubuntu系统下运行;
前端使用Ionic作为框架,Angular作为JS框架进行开发,教师端应用了Echarts插件展示分析数据。
1.1 症状自评量表(SCL-90)
症状自评量表(SCL-90)作为当前广泛应用于精神障碍和心理疾病门诊的检查量表,具有容量大、反映症状丰富、能准确刻画测试者的自觉症状等特点,能有效对大学生群体展开心理健康状况测查。
该量表共包含90个自我评定项目,分为9个因子,分别为躯体化、强迫症状、人际关系敏感、抑郁、焦虑、敌对、恐怖、偏执、精神病性[8],剩余未归入任何因子的7项作为第10个因子处理。症状自评量表(SCL-90)每个项目均采用五级评分(无、轻度、中度、偏重、严重)[10]。每个因子分计算方法为组成该因子的项目总分除以组成该因子的项目数。
因子分为1~2.5,说明被测者自觉无症状或症状较轻;
因子分为2.5~3.5,说明被测者自觉有症状,严重程度为轻到中度;
因子分为3.5~4.5,说明被测者自觉有症状,严重程度为中到严重;
因子分为4.5~5,说明被测者自觉有症状,且症状非常严重。
1.2 混合开发模式
混合开发模式(hybrid)是指利用Web技术进行Web APP开发,再将程序打包封装成原生APP,同时也可以通过开发原生插件的方式调用移动设备上的硬件资源[11]。
混合开发模式集原生技术和Web技术于一体,既能实现设备功能调用,又能保证一定程度的跨平台特性[12],具有开发效率高,更新和部署方便,代码维护方便,可离线运行等优点。
1.3 Flask
Python框架Flask是一个只提供Web框架的核心功能的轻量级框架,具有自由、灵活、可扩展性强、第三方库的选择面广等优点,非常适用于开发Web服务的API接口。因此,本系统后端使用Flask框架实现数据接口,接收前端发送的HTTP请求,数据接口响应请求后将数据以JSON对象的形式返回给前端。由于Flask本身不具备ORM框架,因此使用falsk-sqlalchemy模块进行数据库的反射和执行ORM操作。
1.4 Ionic
Ionic是 基 于Web技术应用HTML5、CSS3和JavaScript技术进行智能设备APP开发的轻量框架,具有良好的跨平台性能,被称为Hybird APP框架。Ionic既是一个CSS框架,也是一个JavaScript UI库[13],具有原生APP的卓越运行性能,提供简洁、美观的UI组件库和强大的命令行工具,具有可维护性高、运行速度快、开发效率高等特点,适合用于开发移动APP。
1.5 Angular
Angular框架由Google公司开发,主要特点包括与MVC设计思想一致的整体框架、模块化和依赖注入以及双向数据绑定。Angular最初被设计成一个标准MVC模式,但是通过代码重构和API重写,呈现出越来越接近MVVM框架模式的趋势。Angular基于TypeScript,TypeScript是JavaScript的一组超集,最重要的区别在于增加了类型的概念,提高了代码的可读性和维护性。
2.1 系统总体架构设计
系统的总体架构采用三层架构,将整个系统的业务划分为应用表示层、业务逻辑层和数据访问层,目的是实现“高内聚、低耦合”,有利于系统的开发、维护、部署和扩展[13]。系统总体架构设计如图1所示。
图1 系统总体架构
应用表示层主要负责直接跟用户进行交互,用于数据录入,数据显示等。逻辑业务层是系统架构中体现核心价值的部分,其主要任务是完成业务规则的制定、业务流程的实现以及其他与业务需求相关的系统设计,例如对具体问题进行逻辑判断与执行操作等。本系统中,逻辑业务层包括对用户输入内容的检验,计算测试分数,生成测试评定结果,统计分析测试成绩等功能。数据访问层是数据库的主要操控系统,主要负责为业务逻辑层或表示层提供数据服务,包括数据的增加、删除、修改、查询等基本操作,不包含逻辑处理。数据访问层是对数据的操作,而不是数据库本身。
2.2 系统功能模块设计
本系统使用角色分为学生、教师以及管理员三种,包括登录、心理健康测试、推荐内容浏览、成绩统计分析、心理咨询、用户管理、班级管理、测试管理、文章管理、测试成绩管理、消息管理等11个子功能模块。系统功能模块设计如图2所示。
图2 系统功能模块设计
2.2.1 心理健康测试功能模块
心理健康测试功能模块主要由计分模块与测试结果评定模块组成。
测试开始后,测试题目的得分以数组形式存进存储服务中,切换下一题时,将本题得分推入数组;
切换上一题时,将数组最后一个元素弹出。由于本系统测试题目均为单选题,选项采用1到5级评分,分别记1到5分,最后成绩为各题目得分之和除以测试题目总数。测试计分业务流程如图3所示。
图3 测试计分业务流程
测试评定结果文本以数组形式存储,系统根据不同测试成绩匹配相应的测试结果,测试评定结果分为以下四类:自觉无症状或症状较轻、自觉症状严重程度为轻到中度、自觉症状严重程度为中度到严重、自觉症状非常严重。测试结果评定业务流程如图4所示。
图4 测试结果评定业务流程
2.2.2成绩统计分析功能模块
教师选择测试、班级后,系统将该班级学生在该测试下的成绩分为以下五类:未完成测试、自觉无症状或症状较轻、自觉症状严重程度为轻到中度、自觉症状严重程度为中度到严重、自觉症状非常严重。成绩统计分析业务流程如图5所示。
图5 成绩统计分析业务流程
2.3 数据库设计
本系统采用PostgreSQL数据库,并使用pg-Admin 4 v5.0版本作为开发工具。pgAdmin 4是一款专门针对PostgreSQL数据库的管理与开发工具,它提供了友好的图形用户界面,大大提高了用户对数据库访问的便捷性。
本文主要运用对象角色建模(ORM),设计一个合理的数据库并建立相应的实体关系库。该数据库的结构具有设计合理的特点,易于创建和修改业务规则,可以减少数据库的存储量,增强数据一致性和完整性,提高系统响应速度,简化数据库应用数据[14]。
表1 数据库结构表
3.1 学生端
学生端可通过页面下方菜单栏切换“首页”“测试”与“我的”页面。
学生可通过下方菜单栏进入测试页面,页面分类展示已完成和未完成的测试,已完成的测试不可再次完成。选择要完成的测试后,可进入测试详情页面,查看测试简介与题目总数等信息。点击开始测试按钮后,可进入题目页面开始答题,用户可通过左、右箭头按钮切换上下题,测试结束后可在“我的”页面查看测试记录。学生端测试页面如图6所示。
图6 学生端测试页面
3.2 教师端
教师端应用的结构与学生端大体相似,不同的是“测试”页面不提供测试功能,而是为教师提供学生测试成绩统计分析功能。
教师可根据测试ID、测试名称查找测试,点击对应测试操作栏的“成绩分析”按钮进入成绩分析页面,查看所负责班级的测试统计分析结果。
成绩分析页面共分为三部分:最上方选择栏展示该教师负责的所有班级,可通过左右横向滑动浏览切换;
中间饼图展示班级测试成绩分布情况,点击分块可查看对应成绩分段下的学生测试成绩;
最下方展示该班级所有学生的该测试成绩,并提供按学生用户名查找测试记录的功能。未选择班级时,饼图和学生测试记录列表为空。选择班级后,对应班级的测试成绩分析页面如图7所示。
图7 测试成绩分析页面
3.3 管理员端
管理员登录成功后,可以根据左侧的菜单栏进入对应功能的操作页面,对用户、班级、班级成员、测试、题目、测试记录、文章、用户反馈消息进行增、删、改、查等管理操作。管理员端页面如图8所示。
图8 管理员端页面
3.4 心理咨询
学生点击“首页”页面右上方的信息按钮,可浏览到负责所在班级的教师用户,选择教师用户后可进入与该教师的聊天页面。
教师有两种方法选择学生,进行心理咨询服务:
(1)点击“首页”页面右上方的信息按钮,可浏览到发送过信息的用户,选择用户后可进入与该用户的聊天页面;
(2)进入成绩分析页面,点击对应学生“发信息”栏的按钮,可进入与该学生的聊天页面。
4.1 测试目标
本文主要采用黑盒测试,根据程序功能的要求规范设计测试用例,并推导出测试结果的准确性。
4.2 测试实现与结果
本系统测试分为单元测试、集成测试、权限测试三部分。
4.2.1 单元测试
单元测试由一组独立的测试构成,每个测试针对软件中的一个独立的软件单元,用于检验被测代码所实现的一个独立功能的正确性。
本文对系统的6个管理员管理单元以及学生答题单元进行了测试,测试结果正常,说明系统独立单元功能正常。
4.2.2 集成测试
集成测试是在单元测试基础上进行的一种有序测试,测试目的是验证软件单元之间、软件单元和集成的软件系统之间的接口关系,并验证已集成软件系统是否满足设计要求。
本文对学生端测试、测试结果生成与个人测试记录查看模块,意见反馈模块,心理咨询模块以及管理员模块功能进行测试,结果均为正常,说明系统各单元之间能顺利传输数据、协作运转,各功能模块运行正常,系统能完整实现需求。
4.2.3 权限测试
本系统用户划分为学生、教师以及管理员三种,进行权限测试的目的是检查是否出现用户越权行为。由于系统已划分为学生端、教师端以及管理员端三个不同的版本分别实现,只需在用户登录时检查用户角色是否具有登录当前版本的权限即可。
测试结果正常,说明用户可以正确登录对应版本完成相应操作。
5.1 搭建Android应用运行环境
Android应用的运行主要在Android Studio上的模拟设备以及真实的物理设备上进行。Android Studio基于IntelliJ IDEA,为开发者提供集成的Android开发工具,便于应用程序的开发与调试。
搭建Android应用的运行环境包括模拟器运行与物理机运行。
5.1.1 模拟器运行
Android Studio中的设备模拟器提供多种虚拟设备供开发者调试运行项目,本文选用Pixel 2 API 30进行模拟运行。点击“Run”按钮后,Android Studio会在该虚拟设备上安装并运行应用包。经过模拟运行测试,APP能在虚拟设备上正常运行,运行页面如图9所示。
图9 虚拟设备运行页面
5.1.2 真机运行
真机运行使用USB数据线连接安卓手机与电脑,物理机匹配成功后点击“Run”按钮,Android Studio会在该物理设备上安装并运行应用包。经过模拟运行测试,APP能在真实物理设备上正常运行。
5.2 发布应用
测试通过后,需要将应用发布到应用商城中。Android系统要求签名机制,所有安装在Android系统上的软件都必须经过签名,目的是使用签名辨别软件的开发者。使用Android Studio在工程目录下成功创建APP-release.apk和testjsk.jsk文件后,即可将签名成功的apk文件发布到应用商城。
本文在开发过程中结合心理学专业问卷,实现了高校大学生心理健康服务APP,实现了学生端测试、教师端成绩统计分析以及管理员端管理的基本流程,满足学生、教师以及管理员三种角色不同的使用需求。本文实现的移动端APP使用更为便捷,方便学生随时进行心理测试;
功能也更为多样,例如增加了心理健康相关文章、内容的展示功能,有助于提高学生的使用频率,引起学生对心理健康的重视。