APP下载

基于QT的网络心理健康平台的设计与实现

2019-06-01周伟邵鹏

电脑知识与技术 2019年12期

周伟 邵鹏

摘要:多数学校普遍会设立自己的心理咨询室帮助学生解决心理问题上的困惑,这种措施帮助许多学生解决了心理困惑,取得了显著成效。但是,多数的心理咨询室存在开放时间短,咨询教师少,以及学生的认识不足等问题。对此,该系统采用QT开发前端界面,Tomcat作为服务器,Mysql作为数据库,主要满足学生对于烦恼情绪的倾诉需求,能够将自己遇到的心事发布到平台上与他人沟通获得答案。

关键词:心理健康平台;QT;C/S;Mysql;Tomcat;C++

中图分类号:TP311.1 文献标识码:A

文章编号:1009-3044(2019)12-0055-02

开放科学(资源服务)标识码(OSID):

Design and Implementation of Network Mental Health Platform Based on QT

ZHOU Wei, SHAO Peng

(School of Computer and Information Engineer, Jiangxi Agricultural University, Nanchang 330045, China)

Abstract: Most schools generally set up their own counseling rooms to help students solve their psychological problems. This measure helps many students solve their psychological problems and has achieved remarkable results. However, most of the counseling rooms have some problems, such as short opening time, few counseling teachers, and insufficient awareness of students. Therefore, This System adopts QT technology to develop front-end interface, and tomcat as server, Mysql as database, which mainly satisfies the need to pour out annoyances, and can publish the worries they encounter on the platform to communicate with others to get answers.

Key words: Mental health Platform; QT; C/S; Mysql; Tomcat; C++

1 背景

调查发现,大学生在学业情感等方面的压力下,普遍存在焦虑、人际交往等问题[1]。对此,多数学校都建设了心理咨询室,许多学生通过心理咨询及时与老师沟通,让自己的心事得到了答案。然而,大多数学校的心理咨询室都只在规定时间内开放,并且心理咨询老师的人数偏少,对于内向的学生而言,面对老师多少会觉得自己的事情难以启齿。因此,本文设计开发了一款面向学校心理咨询室的软件,除了老师以外,也能够让更多乐于助人的人帮助他人。让学生也能够放下顾虑,将自己的心事,疑惑等说出来,也能让自己的问题得到更好的解答。

2 系统功能设计

2.1 主要功能

本文所设计的基于QT的网络心理健康平台系统主要分为两个部分:前台服务和后台服务。该系统中的前台服务包括了用户注册、用户登录、首页、提问、回答等五个功能模块;后台服务包括了数据库管理、文件管理等两个功能部分。

2.1.1 前台服务

1) 用户注册:用户通过此模块成为系统的合法用户。当用户信息符合系统规范时,程序将此用户的信息保存到数据库中。

2) 用户登录:注册完成的用户可以用过此功能登录系统,登录成功后的用户可以使用系统的相应功能。

3) 首页:用户通过首页可以看到其他用户发布的所有内容。

4) 提问:用户通过此功能可以把自己遇到的问题,想发布的消息添加到首页。

5) 回答:用戶通过进入问题详情页后可以查看问题的详细内容,以及其他人对于这个问题的看法,提出的建议,如果是已经登录的用户可以通过这个页面发表属于自己的看法。

2.1.2 后台服务

1) 数据库管理:保存了用户的基本信息,各个用户发布的内容等。

2) 文件管理:保存了用户发布信息时用户辅助说明的图片、附件等内容。

2.2 数据库设计

本系统使用的是Mysql数据库,其体积小、速度快,可以很好地满足本系统的要求。对于数据库连接方面,本系统使用C3p0数据库连接池来对数据库连接进行管理,可以有效地简化编码,节省数据库资源,提高系统响应速度,避免数据库连接泄露[2]。根据系统功能的需要,主要的实体有:用户实体,消息实体,附件实体等,主要的数据库表格有:用户表,提问表,消息表,附件表等。

3 系统功能实现

本系统的前台服务主要是通过QT实现,后台服务通过Tomcat服务器实现。当用户需要所需的信息时,前台发送一条Http请求到服务器,服务器从数据库中查询相应的内容,把经过处理后的数据返回给客户端。用户在客户端进行了提交操作时,将参数填入form表单后发送POST请求,把数据提交到服务器,服务器根据提交的参数将内容写入数据库或文件中。

3.1 前台服务

前台服务主要是系统面向用户的功能,通过QT编写的用户界面来完成用户的基本操作。

3.1.1 用户注册及登录功能

用户在登录注册页面填写相应的信息,前端检查用户填写的信息是否符合系统的规范。由于QT默认的编码方式是utf-16,所以在提交之前需要将信息编码为utf-8格式。然后通过POST方法提交到具体的Servlet。具体操作如下面代码所示:

QCryptographicHash md5(QCryptographicHash::Md5);//定义一个哈希加密对象

md5.addData(this->editPassword->text().toLocal8Bit());//对密码进行加密

QTextCodec* utf8QTextCodec::codecForName("UTF-8");//定义一个文本编码类

QString url = QString("http://") + SystemSetting::SERVER + ":" + QString::number(SystemSetting

::SERVERPORT) + "/" + SystemSetting::LOGINSERVLET;//拼接請求url

request.setUrl(url);//设置请求url

request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader,"application/x-www-form-urlencoded;charset=utf-8");//设置请求标识和字符集

QString param="username="+this->editUsername->text()+"&password="+md5.result().toHex());//拼接POST参数

httpManager->post(request,utf8->fromUnicode(param);//编码并发送post请求

服务器接收到数据后,将合法的数据填入数据库表格中。并将返回给客户端的响应消息编码为JSON字符串后返回客户端,本系统使用的是阿里巴巴的fastjson,在使用前需要导入jar包,并且在Java文件中引入相应类[3],具体操作如下:

import com.alibaba.fastjson.JSON;//引入JSON类

response.getWriter().append(JSON.toJSONString(serverResponse));//通过toJSONString方法把字符串编码为JSON格式的字符串

客户端接收到服务器的响应信息后,立即解析JSON字符串,读取其中的响应码,消息,数据等内容,具体操作如下:

QJsonDocument jsonDocument=QJsonDocument::fromJson(data);//定义JSON文档类

QJsonObject jsonObejct=jsonDocument.object();//把JSON字符串转化为JSON对象

int responseCode=jsonObejct.value("responseCode").toInt();//读取服务器响应码

其中,服务器响应数据的格式如表1所示:

解析完成后,客户端对于服务器的不同结果,进行不同的处理。登录成功后跳转到主界面,失败则提示用户具体原因。注册成功时显示用户的账号,失败后提示用户出错的原因。

3.1.2 用户首页

用户进入首页后,客户端向服务器请求数据,显示不同用户最近发布的问题等。用户每次提交的问题在数据库都以提交时间作为顺序在数据库中存放。所以,为了节省用户和服务器资源,客户端每次向服务器请求30条数据,当用户下拉到底部时,客户端则向服务器再次请求30条数据。如果用户返回顶部,那么客户端向服务器拉取最新的30条数据。对于图片和声音等体积较大的文件,为了避免网络传输延时造成用户的长时间等待,客户端必须首先下载文字内容,然后开始传输图片等文件,具体的做法是开启一个新线程,之后创建一个队列,将要显示的图片按照先后出现的顺序加入队列中,依次传输。当其中一个文件下载完毕后通知用户界面更新内容。

3.1.3 提问及回答功能

用户进入提问界面后,可以通过QTextEdit控件来编辑自己的内容,如果用户需要向编辑器中加入图片,或调整字体格式等操作,那么客户端就转化为相应的html代码并加入编辑器中以达到对应的效果,当用户编辑完成后,调用QTextEdit的toHtml函数,将数据保存为html格式。对于图片这种体积较大的资源文件,为节省带宽和服务器存储空间,在传输前客户端将自动转换为jpg格式并限制图像的最大分辨率。为了保证加入数据的sql语句能够正确执行,需要将html代码中的特殊字符用相应的转义字符替换,如: (空格)替换为 ;,&(逻辑与)替换为&;等,最后提交到数据库中保存。由于回答与提问操作类似,这里便不再赘述。

3.2 后台服务

后台服务是系统面向数据库系统的功能,主要完成用户数据的增、删、改、查以及文件的存取等操作。

3.2.1 数据库管理

对用户数据的管理,将用户使用时产生的数据保存到数据库中,并在用户需要时进行查询,修改和删除。

3.2.2 文件管理

用户在描述和说明时通常会使用到图片,声音等资源文件。文件管理功能主要是对这些文件进行管理,将用户提交到服务器中的资源文件读取并写入到服务器指定的目录中。当用户上传文件时,首先检查文件大小,如果超出规定的最大数值,则提示用户进行压缩或者分多次上传,未超出则通过MD5算法产生信息摘要字符串,在数据库文件表中查询是否存在相同的文件,如果存在则直接在数据库中添加相应的记录,如不存在则以信息摘要字符串作为文件名把文件上传到服务器,并在数据库中添加相应记录。

4 结束语

经过测试,系统已经完成了最初的设计目标,能够满足学生的倾诉需求,让他们能够彼此间进行交流、讨论。方便了学校对于心理咨询工作的开展。虽然系统的功能还存在一些不足,例如:对于一些恶意的言论,系统没有较为完善的措施进行处理和过滤等。这些将在后续的开发过程中不断完善和改进。

参考文献:

[1] 黄凯丽, 朱悦心, 常荣, 等. 大学生心理健康现况调查及对策分析[J]. 卫生职业教育, 2019, 37(1): 111-113.

[2] 张淑荣, 苏兵. 基于J2EE+C3P0的用户管理模块设计与实现[J]. 信息技术与信息化, 2017(10): 51-54.

[3] 刘东, 詹娟娟, 冯志新. 用fastJSON实现安卓手机APP与ASP.NET系统集成研究[J]. 软件导刊, 2016,15(4): 110-112.

[4] 谷莉莎, 叶岩明. 面向社区的实名制社交网络系统的设计与实现[J]. 电脑知识与技术, 2015, 11(6): 19-20.

[5] 罗曦. 基于SSH框架的网络问答社区的设计及实现[J]. 信息与电脑: 理论版, 2018, 415(21): 108-109.

[6] 常祖政. Tomcat数据库连接池的工作原理与配置[J]. 信息与电脑, 2017(18): 120-121, 124.

[7] 谢亦才. 基于MVC设计与实现实验室开放课题管理系统[J]. 电脑知识与技术, 2016(6): 96-98.

[8] 娄月新. 基于ASP.NET的网络在线论坛系统的设计与实现[J]. 电脑知识与技术, 2014(5): 938-941.

【通联编辑:谢媛媛】