周偉 邵鵬
摘要:多數(shù)學校普遍會設立自己的心理咨詢室?guī)椭鷮W生解決心理問題上的困惑,這種措施幫助許多學生解決了心理困惑,取得了顯著成效。但是,多數(shù)的心理咨詢室存在開放時間短,咨詢教師少,以及學生的認識不足等問題。對此,該系統(tǒng)采用QT開發(fā)前端界面,Tomcat作為服務器,Mysql作為數(shù)據(jù)庫,主要滿足學生對于煩惱情緒的傾訴需求,能夠?qū)⒆约河龅降男氖掳l(fā)布到平臺上與他人溝通獲得答案。
關鍵詞:心理健康平臺;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 背景
調(diào)查發(fā)現(xiàn),大學生在學業(yè)情感等方面的壓力下,普遍存在焦慮、人際交往等問題[1]。對此,多數(shù)學校都建設了心理咨詢室,許多學生通過心理咨詢及時與老師溝通,讓自己的心事得到了答案。然而,大多數(shù)學校的心理咨詢室都只在規(guī)定時間內(nèi)開放,并且心理咨詢老師的人數(shù)偏少,對于內(nèi)向的學生而言,面對老師多少會覺得自己的事情難以啟齒。因此,本文設計開發(fā)了一款面向?qū)W校心理咨詢室的軟件,除了老師以外,也能夠讓更多樂于助人的人幫助他人。讓學生也能夠放下顧慮,將自己的心事,疑惑等說出來,也能讓自己的問題得到更好的解答。
2 系統(tǒng)功能設計
2.1 主要功能
本文所設計的基于QT的網(wǎng)絡心理健康平臺系統(tǒng)主要分為兩個部分:前臺服務和后臺服務。該系統(tǒng)中的前臺服務包括了用戶注冊、用戶登錄、首頁、提問、回答等五個功能模塊;后臺服務包括了數(shù)據(jù)庫管理、文件管理等兩個功能部分。
2.1.1 前臺服務
1) 用戶注冊:用戶通過此模塊成為系統(tǒng)的合法用戶。當用戶信息符合系統(tǒng)規(guī)范時,程序?qū)⒋擞脩舻男畔⒈4娴綌?shù)據(jù)庫中。
2) 用戶登錄:注冊完成的用戶可以用過此功能登錄系統(tǒng),登錄成功后的用戶可以使用系統(tǒng)的相應功能。
3) 首頁:用戶通過首頁可以看到其他用戶發(fā)布的所有內(nèi)容。
4) 提問:用戶通過此功能可以把自己遇到的問題,想發(fā)布的消息添加到首頁。
5) 回答:用戶通過進入問題詳情頁后可以查看問題的詳細內(nèi)容,以及其他人對于這個問題的看法,提出的建議,如果是已經(jīng)登錄的用戶可以通過這個頁面發(fā)表屬于自己的看法。
2.1.2 后臺服務
1) 數(shù)據(jù)庫管理:保存了用戶的基本信息,各個用戶發(fā)布的內(nèi)容等。
2) 文件管理:保存了用戶發(fā)布信息時用戶輔助說明的圖片、附件等內(nèi)容。
2.2 數(shù)據(jù)庫設計
本系統(tǒng)使用的是Mysql數(shù)據(jù)庫,其體積小、速度快,可以很好地滿足本系統(tǒng)的要求。對于數(shù)據(jù)庫連接方面,本系統(tǒng)使用C3p0數(shù)據(jù)庫連接池來對數(shù)據(jù)庫連接進行管理,可以有效地簡化編碼,節(jié)省數(shù)據(jù)庫資源,提高系統(tǒng)響應速度,避免數(shù)據(jù)庫連接泄露[2]。根據(jù)系統(tǒng)功能的需要,主要的實體有:用戶實體,消息實體,附件實體等,主要的數(shù)據(jù)庫表格有:用戶表,提問表,消息表,附件表等。
3 系統(tǒng)功能實現(xiàn)
本系統(tǒng)的前臺服務主要是通過QT實現(xiàn),后臺服務通過Tomcat服務器實現(xiàn)。當用戶需要所需的信息時,前臺發(fā)送一條Http請求到服務器,服務器從數(shù)據(jù)庫中查詢相應的內(nèi)容,把經(jīng)過處理后的數(shù)據(jù)返回給客戶端。用戶在客戶端進行了提交操作時,將參數(shù)填入form表單后發(fā)送POST請求,把數(shù)據(jù)提交到服務器,服務器根據(jù)提交的參數(shù)將內(nèi)容寫入數(shù)據(jù)庫或文件中。
3.1 前臺服務
前臺服務主要是系統(tǒng)面向用戶的功能,通過QT編寫的用戶界面來完成用戶的基本操作。
3.1.1 用戶注冊及登錄功能
用戶在登錄注冊頁面填寫相應的信息,前端檢查用戶填寫的信息是否符合系統(tǒng)的規(guī)范。由于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參數(shù)
httpManager->post(request,utf8->fromUnicode(param);//編碼并發(fā)送post請求
服務器接收到數(shù)據(jù)后,將合法的數(shù)據(jù)填入數(shù)據(jù)庫表格中。并將返回給客戶端的響應消息編碼為JSON字符串后返回客戶端,本系統(tǒng)使用的是阿里巴巴的fastjson,在使用前需要導入jar包,并且在Java文件中引入相應類[3],具體操作如下:
import com.alibaba.fastjson.JSON;//引入JSON類
response.getWriter().append(JSON.toJSONString(serverResponse));//通過toJSONString方法把字符串編碼為JSON格式的字符串
客戶端接收到服務器的響應信息后,立即解析JSON字符串,讀取其中的響應碼,消息,數(shù)據(jù)等內(nèi)容,具體操作如下:
QJsonDocument jsonDocument=QJsonDocument::fromJson(data);//定義JSON文檔類
QJsonObject jsonObejct=jsonDocument.object();//把JSON字符串轉(zhuǎn)化為JSON對象
int responseCode=jsonObejct.value("responseCode").toInt();//讀取服務器響應碼
其中,服務器響應數(shù)據(jù)的格式如表1所示:
解析完成后,客戶端對于服務器的不同結(jié)果,進行不同的處理。登錄成功后跳轉(zhuǎn)到主界面,失敗則提示用戶具體原因。注冊成功時顯示用戶的賬號,失敗后提示用戶出錯的原因。
3.1.2 用戶首頁
用戶進入首頁后,客戶端向服務器請求數(shù)據(jù),顯示不同用戶最近發(fā)布的問題等。用戶每次提交的問題在數(shù)據(jù)庫都以提交時間作為順序在數(shù)據(jù)庫中存放。所以,為了節(jié)省用戶和服務器資源,客戶端每次向服務器請求30條數(shù)據(jù),當用戶下拉到底部時,客戶端則向服務器再次請求30條數(shù)據(jù)。如果用戶返回頂部,那么客戶端向服務器拉取最新的30條數(shù)據(jù)。對于圖片和聲音等體積較大的文件,為了避免網(wǎng)絡傳輸延時造成用戶的長時間等待,客戶端必須首先下載文字內(nèi)容,然后開始傳輸圖片等文件,具體的做法是開啟一個新線程,之后創(chuàng)建一個隊列,將要顯示的圖片按照先后出現(xiàn)的順序加入隊列中,依次傳輸。當其中一個文件下載完畢后通知用戶界面更新內(nèi)容。
3.1.3 提問及回答功能
用戶進入提問界面后,可以通過QTextEdit控件來編輯自己的內(nèi)容,如果用戶需要向編輯器中加入圖片,或調(diào)整字體格式等操作,那么客戶端就轉(zhuǎn)化為相應的html代碼并加入編輯器中以達到對應的效果,當用戶編輯完成后,調(diào)用QTextEdit的toHtml函數(shù),將數(shù)據(jù)保存為html格式。對于圖片這種體積較大的資源文件,為節(jié)省帶寬和服務器存儲空間,在傳輸前客戶端將自動轉(zhuǎn)換為jpg格式并限制圖像的最大分辨率。為了保證加入數(shù)據(jù)的sql語句能夠正確執(zhí)行,需要將html代碼中的特殊字符用相應的轉(zhuǎn)義字符替換,如: (空格)替換為?;,&(邏輯與)替換為&;等,最后提交到數(shù)據(jù)庫中保存。由于回答與提問操作類似,這里便不再贅述。
3.2 后臺服務
后臺服務是系統(tǒng)面向數(shù)據(jù)庫系統(tǒng)的功能,主要完成用戶數(shù)據(jù)的增、刪、改、查以及文件的存取等操作。
3.2.1 數(shù)據(jù)庫管理
對用戶數(shù)據(jù)的管理,將用戶使用時產(chǎn)生的數(shù)據(jù)保存到數(shù)據(jù)庫中,并在用戶需要時進行查詢,修改和刪除。
3.2.2 文件管理
用戶在描述和說明時通常會使用到圖片,聲音等資源文件。文件管理功能主要是對這些文件進行管理,將用戶提交到服務器中的資源文件讀取并寫入到服務器指定的目錄中。當用戶上傳文件時,首先檢查文件大小,如果超出規(guī)定的最大數(shù)值,則提示用戶進行壓縮或者分多次上傳,未超出則通過MD5算法產(chǎn)生信息摘要字符串,在數(shù)據(jù)庫文件表中查詢是否存在相同的文件,如果存在則直接在數(shù)據(jù)庫中添加相應的記錄,如不存在則以信息摘要字符串作為文件名把文件上傳到服務器,并在數(shù)據(jù)庫中添加相應記錄。
4 結(jié)束語
經(jīng)過測試,系統(tǒng)已經(jīng)完成了最初的設計目標,能夠滿足學生的傾訴需求,讓他們能夠彼此間進行交流、討論。方便了學校對于心理咨詢工作的開展。雖然系統(tǒng)的功能還存在一些不足,例如:對于一些惡意的言論,系統(tǒng)沒有較為完善的措施進行處理和過濾等。這些將在后續(xù)的開發(fā)過程中不斷完善和改進。
參考文獻:
[1] 黃凱麗, 朱悅心, 常榮, 等. 大學生心理健康現(xiàn)況調(diào)查及對策分析[J]. 衛(wèi)生職業(yè)教育, 2019, 37(1): 111-113.
[2] 張淑榮, 蘇兵. 基于J2EE+C3P0的用戶管理模塊設計與實現(xiàn)[J]. 信息技術與信息化, 2017(10): 51-54.
[3] 劉東, 詹娟娟, 馮志新. 用fastJSON實現(xiàn)安卓手機APP與ASP.NET系統(tǒng)集成研究[J]. 軟件導刊, 2016,15(4): 110-112.
[4] 谷莉莎, 葉巖明. 面向社區(qū)的實名制社交網(wǎng)絡系統(tǒng)的設計與實現(xiàn)[J]. 電腦知識與技術, 2015, 11(6): 19-20.
[5] 羅曦. 基于SSH框架的網(wǎng)絡問答社區(qū)的設計及實現(xiàn)[J]. 信息與電腦: 理論版, 2018, 415(21): 108-109.
[6] 常祖政. Tomcat數(shù)據(jù)庫連接池的工作原理與配置[J]. 信息與電腦, 2017(18): 120-121, 124.
[7] 謝亦才. 基于MVC設計與實現(xiàn)實驗室開放課題管理系統(tǒng)[J]. 電腦知識與技術, 2016(6): 96-98.
[8] 婁月新. 基于ASP.NET的網(wǎng)絡在線論壇系統(tǒng)的設計與實現(xiàn)[J]. 電腦知識與技術, 2014(5): 938-941.
【通聯(lián)編輯:謝媛媛】