畢業(yè)論文(設(shè)計)-大學生宿舍管理系統(tǒng)(聊天室等模塊)設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  大學生宿舍管理系統(tǒng)(聊天室等模塊)設(shè)計與實現(xiàn)</p><p> 論文作者姓名:</p><p> 申請學位專業(yè):軟件工程</p><p> 申請學位類別:工學學士</p><p> 指導(dǎo)教師姓名(職稱):</p><p> 論文提交日期:2014年05月25日</p><p&g

2、t;  大學生宿舍管理系統(tǒng)(聊天室等模塊)設(shè)計與實現(xiàn)</p><p><b>  摘 要</b></p><p>  大學生宿舍管理是高校教育管理中極其重要的一部分,良好的宿舍管理對加強校風校紀建設(shè),創(chuàng)造整潔、寧靜、清新的學習生活環(huán)境,保證教學活動的順利進行有著十分積極的影響。隨著科學技術(shù)不斷提高,計算機技術(shù)成熟,其強大的功能已為人們深刻認識,使用計算機對高校宿舍

3、信息,宿舍內(nèi)的學生檔案信息以及水電費、紀律評分等信息進行管理,具有手工操作無法比擬的優(yōu)點。它有著檢索迅速,查找方便,存儲量大,保密性好,成本低等諸多特點。一個優(yōu)秀的宿舍管理系統(tǒng)能夠滿足各種對宿舍的管理需求,給高校學生宿舍管理工作帶來極大的便利。</p><p>  LINUX操作系統(tǒng)沿襲了UNIX的系統(tǒng)架構(gòu),有著安全與穩(wěn)定的特點,在這方面非WINDOWS操作系統(tǒng)可比擬,所以將宿舍管理系統(tǒng)的服務(wù)器架設(shè)在LINUX系

4、統(tǒng)下無疑是最優(yōu)的選擇。另外,LINUX作為自由和開放源碼的計算機操作系統(tǒng),適合大學生和高校管理人員進行學習和使用,制作一個可在LINUX操作系統(tǒng)下運行的圖形界面應(yīng)用程序能讓用戶在使用管理系統(tǒng)時更加方便。</p><p>  本系統(tǒng)選擇了QT這一跨平臺的C++圖形界面應(yīng)用程序框架,來開發(fā)宿舍管理系統(tǒng)的客戶端程序,并調(diào)用LINUX系統(tǒng)庫實現(xiàn)在LINUX操作系統(tǒng)下的高效運行。</p><p> 

5、 關(guān)鍵詞:宿舍管理系統(tǒng);LINUX;數(shù)據(jù)庫;QT </p><p>  College students dormitory management system (Chat rooms and other modules)design and implementation</p><p><b>  Abstract</b></p><p> 

6、 University students’ dormitory management is a very important part of the higher education management, good dormitory management has a positive impact to strengthen ethos and disciplines construction; as well as build t

7、he clean, quiet, fresh study environment and make sure the teaching activities carried out successfully. With the development of the science and technology, computer technology become more and more mature, and its powerf

8、ul features are already well known by most people, using comp</p><p>  LINUX operation system extends the structure of UNIX, its safety and reliability are much advanced than the Windows system. So setting u

9、p the server of dormitory management system on LINUX system is the beast choice. What’s more, as a free and open-source operation system, it is also the optimal one for university students and managers to learn and use.

10、Building a Graphic User Interface (GUI) for the dormitory management system under LINUX can facilitate the user operation.</p><p>  This system adopts a multi-platform C++ GUI application framework-- QT to d

11、evelop the clients’ side of dormitory management system, and calls for the LINUX’s system library to achieve the high efficiency under LINUX.</p><p>  Key words: Dormitory management system ;Linux;Database;Q

12、t</p><p><b>  目 錄</b></p><p><b>  論文總頁數(shù):31頁</b></p><p><b>  1引 言1</b></p><p>  1.1 課題背景1</p><p>  1.2 本課題研究的意義1<

13、;/p><p>  1.3 研究方法2</p><p>  1.4 QT與QT Creator簡介2</p><p>  1.5 Oracle 10g 與 Pro*c簡介2</p><p>  2系統(tǒng)的需求分析3</p><p>  2.1 總體功能分析3</p><p>  2.2 服

14、務(wù)器端分析3</p><p>  2.3 客戶端分析4</p><p>  3宿舍管理模塊-服務(wù)器的設(shè)計與實現(xiàn)5</p><p>  3.1 服務(wù)器總體設(shè)計5</p><p>  3.1.1 主線程設(shè)計6</p><p>  3.1.2 子線程設(shè)計7</p><p>  3.2 數(shù)

15、據(jù)庫設(shè)計9</p><p>  3.3 賬戶管理功能—服務(wù)器端的設(shè)計與實現(xiàn)9</p><p>  3.3.1 添加賬戶與刪除賬戶9</p><p>  3.3.2 查看賬戶與修改賬戶10</p><p>  3.4 學生管理功能—服務(wù)器端的設(shè)計與實現(xiàn)11</p><p>  3.4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計11&l

16、t;/p><p>  3.4.2 添加學生與刪除學生12</p><p>  3.4.3 修改學生13</p><p>  3.4.4 查看學生13</p><p>  3.5 寢室管理功能—服務(wù)器端的設(shè)計與實現(xiàn)14</p><p>  3.5.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計14</p><p>  3

17、.5.2 添加寢室學生15</p><p>  3.5.3 刪除寢室學生16</p><p>  3.5.4 寢室紀律評分17</p><p>  3.5.5 增加寢室與查看寢室17</p><p>  4公共聊天室的設(shè)計與實現(xiàn)18</p><p>  4.1 公共聊天室簡介18</p>&

18、lt;p>  4.2 聊天室的總體設(shè)計18</p><p>  4.2.1 服務(wù)器總體設(shè)計19</p><p>  4.2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計19</p><p>  4.2.3 客戶端總體設(shè)計19</p><p>  4.2.3 客戶端程序流程圖20</p><p>  4.3 用戶登錄與顯示在線用戶的

19、設(shè)計與實現(xiàn)20</p><p>  4.3.1 用戶登錄—客戶端20</p><p>  4.3.2 用戶登錄—服務(wù)器21</p><p>  4.3.3 顯示當前在線用戶21</p><p>  4.3.4 動態(tài)修改在線用戶22</p><p>  4.4 文本格式與表情的設(shè)計與實現(xiàn)23</p>

20、;<p>  4.4.1 設(shè)置文字的字體與顏色23</p><p>  4.4.2 設(shè)置聊天表情23</p><p>  4.5 發(fā)送與接收聊天信息的設(shè)計與實現(xiàn)24</p><p>  4.5.1 發(fā)送聊天信息24</p><p>  4.5.2 接收聊天信息25</p><p><b&g

21、t;  5系統(tǒng)測試26</b></p><p>  5.1 測試環(huán)境26</p><p>  5.2 測試方式26</p><p>  5.3 測試及結(jié)果26</p><p><b>  結(jié) 語28</b></p><p><b>  參考文獻29<

22、/b></p><p><b>  致 謝30</b></p><p><b>  聲 明31</b></p><p><b>  引 言</b></p><p><b>  1.1 課題背景</b></p><p

23、>  學生宿舍管理對于一個學校來說是必不可少的組成部分。目前好多學校還停留在宿舍管理人員手工記錄數(shù)據(jù)的最初階段,手工記錄對于規(guī)模小的學校來說勉強還可以接受,但對于學生人數(shù)比較龐大,需要記錄存檔的數(shù)據(jù)比較多的高校來說,人工記錄是相當麻煩的。而且當查找某條記錄時,由于數(shù)據(jù)量龐大,還只能靠人工去逐條查找,這樣不但麻煩還浪費了許多時間,效率也比較低。當今社會是飛速進步的世界,原始的記錄方式已經(jīng)被社會所淘汰,計算機化管理正是適應(yīng)時代的產(chǎn)物。

24、世界永遠不會是一個平靜的世界,當一種技術(shù)不能滿足需求時,就會有新的技術(shù)誕生并且取而代之。21世紀,電子科學技術(shù)在世界占著主流地位,計算機在各行各業(yè)中的運用已經(jīng)得到普及,自動化的管理越來越廣泛應(yīng)用于各個領(lǐng)域。我們針對如此,設(shè)計了一套學生宿舍管理系統(tǒng)。學生宿舍管理系統(tǒng)采用的是計算機化管理,系統(tǒng)做得盡量人性化,使用者會感到操作方便,需要做的就是將數(shù)據(jù)輸入到系統(tǒng)的數(shù)據(jù)庫中去。由于數(shù)據(jù)庫存儲容量比較大,而且比較穩(wěn)定,適合長時間的保存,也不容易丟失

25、。這無疑是為存儲量比較大的學校提供了一個方便、快捷的操作方式。本系統(tǒng)具有運行快、安全性高、穩(wěn)定性好的優(yōu)點,并且具備錄入、查詢、修改、</p><p>  1.2 本課題研究的意義</p><p>  在學校中,管理是學校運行的重要環(huán)節(jié)。學校應(yīng)該采取最有效的管理模式來管理好學生,通過對學生的信息采集將學生的信息輸入到數(shù)據(jù)庫中,可以方便地查詢學生的信息,這樣比傳統(tǒng)的手工查找學生檔案方式要方便多

26、了。作為計算機應(yīng)用的一部分,使用計算機對學校公寓進行管理,有著手工管理無法比擬的優(yōu)勢,例如:使管理工作更為輕松便捷,高效精確;方便管理人員對學生信息的添加、修改、查看等操作;簡化了管理人員的日常事務(wù),例如更新公告、對寢室衛(wèi)生評分等。</p><p>  同時,我們也希望在宿舍管理、宿舍活動方面并不是由學校和宿舍管理人員單方面的參與,而是在宿舍中學習生活的學生也能參與于其中。學校的通知能夠讓每一名學生及時收到,而學

27、生的申請能夠及時得到處理,不同宿舍的學生彼此之間有著較密聯(lián)系,學生和宿舍管理人員對宿舍管理和活動進行討論,給宿舍建設(shè)、管理方式提出好的建議。使得學生宿舍有著更好的氛圍,宿舍的管理也更加靈活、體貼。 </p><p><b>  1.3 研究方法</b></p><p>  系統(tǒng)使用C/S結(jié)構(gòu),使用Oracle 10g數(shù)據(jù)庫來存儲各類信息。由于不希望客戶端能夠直接訪問數(shù)

28、據(jù)庫,將編寫一個服務(wù)器程序,并使用Socket通信機制,讓客戶端與服務(wù)器進行通信,從而將客戶端對數(shù)據(jù)庫的訪問操作由服務(wù)器代為進行,并將獲得的數(shù)據(jù)信息轉(zhuǎn)發(fā)給客戶端。</p><p>  服務(wù)器:使用C語言編寫,無圖形界面。其中聊天室模塊的服務(wù)器和宿舍管理模塊的服務(wù)器各自獨立,綁定不同的端口,并使用LINUX的多線程方式為不同客戶提供服務(wù)。涉及對數(shù)據(jù)庫進行訪問的部分,使用PRO*C編程嵌入SQL語句,實現(xiàn)對數(shù)據(jù)庫的訪

29、問。</p><p>  客戶端:使用QT Creator制作圖形界面,C++語言編寫控制代碼,涉及LINUX系統(tǒng)函數(shù)調(diào)用的操作封裝在一個控制類中。其中聊天室程序使用了QT的多線程方式,使得信息顯示和信息發(fā)送能并發(fā)進行。</p><p>  1.4 QT與QT Creator簡介</p><p>  Qt是一個1991年由奇趣科技開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程

30、序開發(fā)框架。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴展,并且允許組件編程。</p><p>  Qt Creator是跨平臺的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級集成開發(fā)環(huán)境(IDE)。此 IDE 能夠跨平臺運行,支持的系統(tǒng)包括 Linux(32 位及 64 位)、Mac OS X 以及 Windo

31、ws。Qt Creator 的設(shè)計目標是使開發(fā)人員能夠利用 Qt 這個應(yīng)用程序框架更加快速及輕易的完成開發(fā)任務(wù)。</p><p>  1.5 Oracle 10g 與 Pro*c簡介</p><p>  Oracle是目前最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被越來越多的用戶在信息系統(tǒng)管理、企業(yè)數(shù)據(jù)處理、Internet、電子商務(wù)網(wǎng)站等領(lǐng)域作為應(yīng)用數(shù)據(jù)的后臺處理系統(tǒng)。此前流行的版本為Oracle9

32、i。Oracle公司在Oracle9i基礎(chǔ)上,推出了代表數(shù)據(jù)庫最新技術(shù)的數(shù)據(jù)庫系統(tǒng)Oracle 10g。在Oracle 10g中,第一次提出數(shù)據(jù)自動鏡像存儲、數(shù)據(jù)閃回功能以及功能強大的數(shù)據(jù)導(dǎo)出工具、大文件表空間以及表空間組管理等概念。</p><p>  通過在過程化編程語言中嵌入SQL語句而開發(fā)出的應(yīng)用程序稱為Pro程序,在通用編程語言中使用的SQL稱為嵌入式SQL。在SQL標準中定義了多種語言的嵌入式SQL,

33、各個廠商對嵌入式SQL的具體實現(xiàn)不同。</p><p>  宿主語言 Pro程序</p><p>  C/C++ Pro*C/C++</p><p>  FORTRAN Pro*FORTRAN</p><p>  PASCAL Pro*PASCAL</p><p><b> 

34、 系統(tǒng)的需求分析</b></p><p>  2.1 總體功能分析</p><p>  LINUX下的大學生宿舍管理系統(tǒng),由兩部分組成:一個是服務(wù)器,一個客戶端。其中服務(wù)器程序使用C語言編寫,沒有任何圖形界面以求獲得最大的運行效率;而客戶端程序則是由C++語言編寫,使用QT制作圖形界面,便于用戶進行使用。宿舍管理系統(tǒng)的功能結(jié)構(gòu)如圖1所示:</p><p>

35、;<b>  系統(tǒng)功能結(jié)構(gòu)圖</b></p><p>  宿舍管理模塊基本功能說明:</p><p>  學生管理:包括學生信息的增加、刪除、修改、查看及維護功能。</p><p>  寢室管理:包括學生住宿信息的增加、刪除、修改、查看及維護功能 。</p><p>  公告管理:包括公告設(shè)置和公告查看功能。&

36、lt;/p><p>  財務(wù)管理:每個月交納水費用、電費、物品維修信息的查詢及維護功能。</p><p>  賬戶管理:包括用戶信息的增加、刪除、修改、查看及維護功能。</p><p>  學生申請:包括學生申請內(nèi)容的添加。</p><p>  公告聊天室模塊基本功能說明:</p><p>  設(shè)置昵稱:支持用戶設(shè)置聊天昵

37、稱。</p><p>  設(shè)置字體與顏色:支持用戶設(shè)置聊天內(nèi)容中文字的字體和顏色。</p><p>  設(shè)置表情:支持用戶發(fā)送各種表情圖片。</p><p>  顯示在線用戶:動態(tài)的顯示當前在線用戶信息和在線人數(shù)。</p><p>  2.2 服務(wù)器端分析</p><p>  服務(wù)器運行于Red Hat Enterpr

38、ise Linux 5操作系統(tǒng)下??紤]到服務(wù)器程序的執(zhí)行效率,服務(wù)器使用C語言編寫,通過調(diào)用Linux的系統(tǒng)庫函數(shù),實現(xiàn)與客戶端的網(wǎng)絡(luò)通信,同時使用Pro*c 嵌入SQL語句,訪問數(shù)據(jù)庫,從而將用戶和數(shù)據(jù)信息聯(lián)系起來,并且避免了用戶直接對數(shù)據(jù)進行訪問,使得數(shù)據(jù)的傳輸、保存與分析更加安全。同時由于C語言的高效,加之Red Hat Enterprise Linux 5操作系統(tǒng)的穩(wěn)定和快速,采用以上方法開發(fā)出的服務(wù)器程序為用戶服務(wù)時,用戶所獲

39、得的體驗,并不會比使用其他客戶端直接訪問數(shù)據(jù)庫的應(yīng)用程序獲得的體驗有太大的差異。Red Hat Enterprise Linux 5操作系統(tǒng)界面如圖2所示:</p><p>  Red Hat Enterprise Linux 5界面</p><p><b>  2.3 客戶端分析</b></p><p>  客戶端應(yīng)可運行于支持圖形界面的主流

40、LINUX操作系統(tǒng)上,比如Ubuntu、Fedora、OpenSUSE等,本文中客戶端程序運行于為Fedora13系統(tǒng)下,該操作系統(tǒng)界面如圖3所示:</p><p>  Fedora13操作系統(tǒng)界面</p><p>  客戶端使用QT4的類庫,制作圖形界面。QT做為一個成熟的多平臺C++圖形用戶界面應(yīng)用程序框架,它可以滿足一個圖形用戶應(yīng)用程序所需的所有功能。使用其制作的Linux桌面應(yīng)用程

41、序,擁有同Windows下的桌面應(yīng)用相媲美的圖形效果。同樣客戶端程序也要調(diào)用Linux 的系統(tǒng)庫函數(shù)來實現(xiàn)動態(tài)分配內(nèi)存、網(wǎng)絡(luò)通信等這些功能,使得客戶端在Linux操作系統(tǒng)下有著更高的運行效率。</p><p>  客戶端主要由兩個大的功能模塊組成:宿舍管理模塊與公共聊天室模塊。宿舍管理模塊包含:學生管理、賬戶管理、寢室管理、公告管理、財務(wù)管理、學生申請。而公共聊天室模塊支持多人聊天,自定義昵稱,設(shè)置字體、顏色、表

42、情和顯示當前在線用戶信息??蛻舳私缑嫒鐖D4所示:</p><p><b>  客戶端程序界面</b></p><p>  宿舍管理模塊-服務(wù)器的設(shè)計與實現(xiàn)</p><p>  在大學生宿舍管理系統(tǒng)中,宿舍管理模塊無疑是最重要的組成部分,它通過對賬戶、學生、宿舍等信息的操作,實現(xiàn)了宿舍管理系統(tǒng)所需的各個功能。由于服務(wù)器程序與數(shù)據(jù)庫運行于同一臺的電

43、腦上,顯然對這些數(shù)據(jù)的獲取與保存由服務(wù)器程序來處理是最高效的。同時服務(wù)器程序也將對各個數(shù)據(jù)進行簡單的匹配、整合和計算,所以客戶端只需要發(fā)送和接受預(yù)先定義好格式的數(shù)據(jù)消息便可以實現(xiàn)對所有數(shù)據(jù)的正確獲取與管理,降低了客戶端與服務(wù)器通信中數(shù)據(jù)信息出錯的概率。整個第三章將對宿舍管理模塊的服務(wù)器總體設(shè)計、數(shù)據(jù)庫設(shè)計和各個功能模塊的設(shè)計與實現(xiàn)進行詳細的描述。</p><p>  3.1 服務(wù)器總體設(shè)計</p>

44、<p>  系統(tǒng)采用的是C/S結(jié)構(gòu),對服務(wù)器和客戶端進行了適當?shù)娜蝿?wù)分配。服務(wù)器并不需要太多過于復(fù)雜的操作,主要負責在客戶端與數(shù)據(jù)庫之間進行數(shù)據(jù)的轉(zhuǎn)接,使得客戶端能及時的獲取到所需要的數(shù)據(jù),同時客戶端發(fā)送給服務(wù)器的數(shù)據(jù)也能被及時的存入數(shù)據(jù)庫中。服務(wù)器應(yīng)當穩(wěn)定、并發(fā)與高效率,為了實現(xiàn)這三個目的服務(wù)器采用了多線程模式,即服務(wù)器程序為每一個客戶創(chuàng)建一個線程進行服務(wù),各個線程之間互不干擾。而主線程負責對各個子線程進行管理。</p

45、><p>  3.1.1 主線程設(shè)計</p><p>  主線程主要負責初始化網(wǎng)絡(luò),創(chuàng)建客戶鏈表,接受客戶連接、創(chuàng)建子線程、管理所有線程五個功能。其具體設(shè)計如下:</p><p>  1.服務(wù)器啟動后,主線程為服務(wù)器綁定IP地址與端口,進行初始化網(wǎng)絡(luò)操作,如果初始化網(wǎng)絡(luò)失敗,則關(guān)閉服務(wù)器。</p><p>  2.初始化網(wǎng)絡(luò)成功后,主線程創(chuàng)建客戶

46、鏈表,并對客戶鏈表進行初始化,然后進入接受用戶連接的循環(huán)中。</p><p>  3.每當有一個用戶連接到服務(wù)器,服務(wù)器將創(chuàng)建一個子線程為客戶進行服務(wù),線程創(chuàng)建完畢后返回接受用戶連接循環(huán)。</p><p>  4.當服務(wù)器進程接受到SIGINT信號(2號信號)時,關(guān)閉所有正在與客戶進行通信的套接字,關(guān)閉所有子線程,初始化客戶鏈表,關(guān)閉服務(wù)器進程。</p><p> 

47、 主線程的程序流程如圖5所示:</p><p><b>  主線程程序流程圖</b></p><p>  3.1.2 子線程設(shè)計</p><p>  子線程負責為每個申請連接的客戶進行服務(wù),包含了:添加客戶到客戶鏈表,從客戶鏈表刪除客戶,判斷用戶名密碼是否正確,判斷用戶的需求并提供對應(yīng)的服務(wù),向用戶返回服務(wù)是否成功的消息。具體設(shè)計如下:<

48、/p><p>  1.子線程創(chuàng)建成功后,進入判斷用戶賬號密碼的循環(huán),接受客戶端傳來的賬號與密碼,若賬號密碼正確,則將客戶信息添加到客戶鏈表上,并退出循環(huán)。否則給客戶端發(fā)送錯誤信息,并返回判斷用戶賬號密碼的循環(huán)。</p><p>  2.添加客戶到客戶鏈表后,進入為用戶服務(wù)循環(huán),接收到客戶端的一個服務(wù)請求后,判斷其請求類型,并為客戶端進行對應(yīng)的服務(wù)操作。服務(wù)完成后給客戶發(fā)送服務(wù)是否成功信息,然后

49、返回服務(wù)循環(huán)。</p><p>  3.在判斷用戶賬戶密碼期間,如果用戶退出或者斷開連接,將關(guān)閉與用戶通信的套接字,并關(guān)閉線程。</p><p>  4.在為客戶進行服務(wù)期間,如果用戶退出或者斷開連接,用關(guān)閉與用戶通信的套接字,并從客戶鏈表中將客戶刪除,然后釋放資源關(guān)閉線程。</p><p>  5.由于涉及多個線程對臨界資源(客戶鏈表)的訪問,需要設(shè)計線程同步的方

50、式。使用互斥鎖機制,每當一個線程訪問客戶鏈表時,別的線程將不能對客戶鏈表進行訪問。</p><p>  6.由于客戶要求的服務(wù)有多種,所以需要一種統(tǒng)一格式的請求服務(wù)消息,供服務(wù)器判斷用戶的要求。本系統(tǒng)設(shè)計了由類型(char type[3])和數(shù)據(jù)(char type[1000])組成的消息結(jié)構(gòu)體,所有服務(wù)消息如表1所示:</p><p><b>  系統(tǒng)所有服務(wù)消息</b&

51、gt;</p><p>  7.當子線程對用戶的一次服務(wù)請求進行了操作后,將向客戶端發(fā)送一條信息,用于表示操作是否成功。</p><p>  子線程流程圖如圖6所示:</p><p><b>  子線程流程圖</b></p><p><b>  3.2 數(shù)據(jù)庫設(shè)計</b></p>&l

52、t;p>  LINUX下的大學生宿舍管理系統(tǒng)使用Oracle 10g數(shù)據(jù)庫用來存儲各類數(shù)據(jù)信息,從而使得用戶使用管理系統(tǒng)對數(shù)據(jù)信息的查看、增加、修改、刪除、排序等操作更加便捷與安全。系統(tǒng)的E-R圖如圖7所示:</p><p><b>  系統(tǒng)E-R圖</b></p><p>  3.3 賬戶管理功能—服務(wù)器端的設(shè)計與實現(xiàn)</p><p>

53、  賬戶管理模塊主要負責對大學生宿舍管理系統(tǒng)的用戶信息進行操作,能實現(xiàn)賬號的增加、刪除、修改、查看。賬戶管理模塊功能結(jié)構(gòu)如圖8所示:</p><p><b>  賬戶管理功能結(jié)構(gòu)圖</b></p><p>  3.3.1 添加賬戶與刪除賬戶</p><p>  添加賬戶功能可以在用戶表中添加一行賬戶信息,由于在用戶表中設(shè)置了用戶名字段為唯一鍵和

54、非空約束,所以在添加賬戶時用戶名不能與已經(jīng)存在的賬戶的用戶名相同。另外由于設(shè)置了用戶ID為用戶表的主鍵,所以每添加一個用戶需要為該用戶自動生成一個用戶表中不存在的用戶ID。</p><p>  添加賬戶程序流程如圖9所示:</p><p><b>  添加賬戶程序流程圖</b></p><p>  設(shè)置新添加賬戶的用戶ID值的方法:獲取用戶表中

55、用戶ID的最大值,將其進行加1操作后,賦值給新添加賬戶的用戶ID。</p><p>  設(shè)置新添加賬戶用戶ID操作的Pro*c語句: </p><p>  exec sql select max(userid)+1 into :ora_user2.uid from sm_user; </p><p>  刪除賬戶功能可以從用戶表中刪除一行對應(yīng)的用戶信息。和添加用戶相

56、似,刪除用戶同樣需要先判斷要刪除的用戶是否存在。如果不存在,則向客戶端發(fā)送用戶不存在的信息,如果存在便從用戶表中刪除此用戶。</p><p>  刪除賬戶Pro*c語句:</p><p>  exec sql delete from sm_user where uname=:ora_user2.name;</p><p>  3.3.2 查看賬戶與修改賬戶</

57、p><p>  查看賬戶功能可以查看用戶表中所有的用戶信息,當服務(wù)器接收到客戶端的查看賬戶請求后,便從用戶表中讀取所有的用戶信息,并統(tǒng)計出用戶的個數(shù)。然后將所有獲取的用戶信息一條一條的發(fā)送給客戶端。</p><p>  查看賬戶Pro*c語句:</p><p>  exec sql declare user_cursor cursor for select userid

58、, uname, password, pemisson to_char(register_time,’yyyy-mm-dd’) from sm_user;</p><p>  修改賬戶功能可以修改用戶表中的一行用戶的密碼與權(quán)限。修改賬戶,同樣需要預(yù)先判斷所修改的用戶是否存在,在進行對應(yīng)的操作。修改賬戶程序流程如圖10所示:</p><p><b>  修改賬戶流程圖</b&

59、gt;</p><p>  修改賬戶Pro*c語句:</p><p>  exec sql update sm_user set password=:ora_user2.passwd,pemisson =:ora_user2.pemisson where uname=:ora_user2.name;</p><p>  3.4 學生管理功能—服務(wù)器端的設(shè)計與實

60、現(xiàn)</p><p>  學生管理模塊是宿舍管理系統(tǒng)的重要組成部分,它主要是負責對學生數(shù)據(jù)進行管理,實現(xiàn)對某一棟宿舍樓的學生進行增加、刪除、修改和查看操作。</p><p>  學生管理模塊功能結(jié)構(gòu)如圖11所示:</p><p>  學生管理模塊功能結(jié)構(gòu)圖</p><p>  3.4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計</p><p> 

61、 根據(jù)學生表設(shè)計了結(jié)構(gòu)體oracle_Student,用于保存學生信息。結(jié)構(gòu)體的成員變量說明如表2所示:</p><p>  oracle_Student結(jié)構(gòu)體成員變量說明</p><p>  3.4.2 添加學生與刪除學生</p><p>  添加學生功能可以在學生表中增加一行學生信息,由于學生表中設(shè)置了學號為主鍵,所以添加一行學生信息時其學號不能為表中已存在的學

62、號。故在添加學生要預(yù)先檢查該學號的學生信息是否已經(jīng)存在于學生表中。</p><p>  添加學生方法:首先接受客戶端傳入待添加學生信息,判斷其學號是否與學生表中某一個學生的學號相同。如果相同,向客戶端發(fā)送學生已存在信息并中止后續(xù)操作;否則將學生信息添加入學生表。</p><p>  判斷該學號學生是否存在于學生表關(guān)鍵代碼:</p><p>  exec sql se

63、lect sid into :studentCount from sm_student where sid=:ora_stu2.SID; //查看用戶表中是否存在該學生</p><p>  if(Count) {//如果存在</p><p>  exec sql commit work release; //關(guān)閉對數(shù)據(jù)的訪問</p><p>  return 1

64、; //返回1</p><p><b>  }</b></p><p>  else{//如果不存在</p><p>  exec sql commit work release; //關(guān)閉對數(shù)據(jù)庫的訪問</p><p>  return 0; //返回0</p><p><b&

65、gt;  }</b></p><p>  刪除學生功能可以從學生表中刪除一行學生信息,刪除學生同樣預(yù)先判斷學生是否存在于學生表中在做后續(xù)操作。由于同刪除賬戶類似,對刪除學生流程不再做贅述。</p><p>  3.4.3 修改學生</p><p>  修改學生功能可以實現(xiàn)修改學生表中的某個學生信息,在修改某個學生之前需要判斷該學生是否再找與學生表中。由于

66、一行學生信息包含了大量信息內(nèi)容,對一行學生信息每個字段進行修改顯得比較麻煩,所以對修改學生信息功能采用了先刪除再添加的方式,即刪除當前學生然后將新的學生信息插入學生表。修改學生程序流程如圖12所示:</p><p><b>  修改學生程序流程圖</b></p><p>  3.4.4 查看學生</p><p>  查看學生功能可以查看某一棟宿

67、舍樓的所有學生信息,當服務(wù)器接收到客戶端的查看學生請求消息后,可以根據(jù)請求信息中的數(shù)據(jù)獲取宿舍樓棟號,然后根據(jù)棟號從學生表中查找出所有該棟宿舍樓的學生信息并統(tǒng)計出學生總數(shù)。然后將學生總數(shù)和獲取到的學生信息發(fā)送給客戶端。</p><p>  一次查看學生操作服務(wù)器運行情況如圖13所示:</p><p>  查看學生操作服務(wù)器運行圖</p><p>  3.5 寢室管理

68、功能—服務(wù)器端的設(shè)計與實現(xiàn)</p><p>  寢室管理功能是整個宿舍管理模塊中最為重要的部分,可以說宿舍管理模塊的主要目的就是實現(xiàn)對寢室的管理。通過寢室管理功能,用戶可以實現(xiàn)增添寢室,查看寢室的學生信息,為寢室添加學生等必要的對寢室進行管理的行為。寢室管理模塊的功能結(jié)構(gòu)如圖14所示:</p><p>  寢室管理模塊功能結(jié)構(gòu)圖</p><p>  3.5.1 數(shù)據(jù)

69、結(jié)構(gòu)設(shè)計</p><p>  根據(jù)寢室表設(shè)計了結(jié)構(gòu)體oracle_Room和oracle_Score,用于保存寢室信息和寢室紀律評分信息,結(jié)構(gòu)體的成員變量說明如表3和表4所示:</p><p>  oracle_Room結(jié)構(gòu)體成員變量說明</p><p>  oracle_Score結(jié)構(gòu)體成員變量說明</p><p>  3.5.2 添加寢室

70、學生</p><p>  添加寢室學生功能可以為一個沒有滿員的宿舍增加尚未入住寢室的學生,它還包含了兩個子功能:查看有空位的寢室和未入住寢室的學生。</p><p>  由于寢室表中有寢室容量字段和寢室人數(shù)字段,所以判斷一個寢室是否有空位只需要判斷寢室容量減去寢室人數(shù)是否大于0,如果大于0就說明該寢室尚未滿員。而學生表中有寢室號字段,如果一個學生的寢室號為0則說明該學生沒有入住寢室。依照以

71、上兩種方法可以比較方便的實現(xiàn)查看有空位的寢室和未入住寢室的學生的兩個功能。</p><p>  查看有空位的寢室流程:從用客戶端發(fā)送來的請求消息中獲取需要查詢的宿舍樓棟號,根據(jù)棟號從寢室表中獲取所有尚未滿員的寢室信息并計算出寢室的數(shù)量。然后將寢室的數(shù)量和排好序的寢室信息發(fā)送給客戶端。</p><p>  查看有空位的寢室Pro*c語句:</p><p>  exec

72、 sql declare room_cursor cursor for select * from sm_room where buildingid=:ora_room2.buildingID and roomcapacity-roomman>0 order by roomID;</p><p>  查看未入住寢室的學生流程:從用客戶端發(fā)送來的請求消息中獲取需要查詢的宿舍樓棟號,根據(jù)棟號從學生表中獲取所有寢

73、室號為0的學生信息并計算出學生的數(shù)量。然后將學生數(shù)量和排好序的學生信息發(fā)送給客戶端。</p><p>  查看未入住寢室學生的Pro*c語句:</p><p>  exec sql declare stu_cursor cursor for select * from sm_Student where Sbuildingid=:ora_stu2.SbuildingID and SroomI

74、D=0 order by sid;</p><p>  當獲取了有空位的寢室和未入住寢室的學生信息后,便可以進行為寢室添加學生的操作了,需要修改學生的宿舍號和宿舍的人數(shù)。為寢室添加學生程序流程如圖15所示:</p><p>  為寢室添加學生程序流程圖</p><p>  3.5.3 刪除寢室學生</p><p>  刪除寢室學生功能可以為一

75、個有學生入住的宿舍刪除寢室內(nèi)的學生,它包含了兩個子功能:查看有人入住的寢室和查看某寢室內(nèi)的學生。 </p><p>  查看有人入住的寢室方法:從客戶端發(fā)送來的請求消息中獲取需要查詢的宿舍樓棟號,根據(jù)棟號從寢室表中獲取所有寢室人數(shù)大于0的寢室信息并計算出有人入住寢室的總數(shù)。然后把寢室數(shù)量和排好序的寢室信息發(fā)送給客戶端。</p><p>  查看有人入住寢室的Pro*c語句:</p&g

76、t;<p>  exec sql declare room_cursor cursor for select * from sm_room where buildingid=:ora_room2.buildingID and roomman>0 order by roomID;</p><p>  實現(xiàn)查看某寢室的學生方法:從用客戶端發(fā)送來的請求消息中獲取需要查詢的宿舍樓棟號與寢室號,然后在學

77、生表中查找出所有棟號和寢室號與之相同的學生信息并計算出學生的數(shù)量。然后把數(shù)量和排好序的學生信息發(fā)送給客戶端。 </p><p>  查看未入住寢室學生的Pro*c語句:</p><p>  exec sql declare stu_cursor cursor for select * from sm_Student where Sbuildingid=:ora_stu2.Sbuilding

78、ID and SroomID=:ora_stu2.SroomID order by sid;</p><p>  當獲取了有人入住的寢室的學生信息后,就可以進行為寢室刪除已入住的學生的操作了,同樣需要修改學生的宿舍號和宿舍的人數(shù)。為寢室刪除學生的程序流程如圖16所示:</p><p>  為寢室刪除學生程序流程圖</p><p>  3.5.4 寢室紀律評分<

79、/p><p>  紀律評分功能可以實現(xiàn)對一棟的所有宿舍進行紀律管理,它由添加寢室評分和查看寢室評分兩部分組成。</p><p>  添加寢室評分可以為一個宿舍增加一條評分信息,同時也會自動記錄添加評分的時間。實現(xiàn)添加寢室評分的方法:從客戶端發(fā)送來的請求消息中獲取某個寢室的評分信息,然后生成時間日期將評分信息插入紀律評分表。</p><p>  查看寢室評分功能可以實現(xiàn)對

80、某一宿舍樓的某一個月的所有寢室評分信息進行查詢。實現(xiàn)查看寢室評分的方法:從客戶端發(fā)送來的請求消息中獲取宿舍樓棟號和年月信息,然后從評分表中查找出該宿舍樓該年月的所有評分信息并統(tǒng)計出條數(shù)。然后將數(shù)量和所有評分信息發(fā)送給客戶端。增加評分與查看評分服務(wù)器運行情況如圖17所示:</p><p>  增加和查看寢室評分圖</p><p>  3.5.5 增加寢室與查看寢室</p>&l

81、t;p>  增加寢室和查看寢室功能可以實現(xiàn)對寢室的增添和對某一棟宿舍樓所有寢室信息進行查詢。由于對寢室的增添與查看和賬戶管理、學生管理中的增添查看功能極其相似,對其設(shè)計與流程不做贅述。</p><p>  公共聊天室的設(shè)計與實現(xiàn)</p><p>  在大學生宿舍管理系統(tǒng)中,公共聊天室是重要的組成部分,它支持多個用戶同時進行實時的文字聊天。與宿舍管理模塊相似,公共聊天室同樣由服務(wù)器和客

82、戶端兩部分組成,服務(wù)器主要負責將每個用戶發(fā)送的聊天信息轉(zhuǎn)發(fā)給在線的其他用戶,同時對進入聊天室的用戶進行管理;客戶端負責與用戶進行交互,獲取用戶的輸入信息并將其發(fā)送至服務(wù)器,同時將從服務(wù)器接收到的必要信息以圖形方式向用戶展示。</p><p>  4.1 公共聊天室簡介</p><p>  本聊天室支持發(fā)送聊天信息,設(shè)置顏色和字體,發(fā)送表情,顯示當前在線用戶等諸多功能。本章將對這些功能的設(shè)計

83、和實現(xiàn)做詳細的描述,并對這些功能的具體效果進行演示。聊天室界面如圖18所示:</p><p><b>  聊天室界面圖</b></p><p>  4.2 聊天室的總體設(shè)計</p><p>  公共聊天室同樣采取了C/S結(jié)構(gòu),服務(wù)器和客戶端各自完成不同的任務(wù),通過網(wǎng)絡(luò)通信進行聯(lián)系。服務(wù)器需要為客戶端提供高效、穩(wěn)定的服務(wù),客戶端需要給用戶提供友好

84、、方便的界面。</p><p>  4.2.1 服務(wù)器總體設(shè)計</p><p>  服務(wù)器程序由C語言編寫,無圖形界面以求高效率,通過調(diào)用LINUX的系統(tǒng)庫函數(shù)實現(xiàn)文件I/O和網(wǎng)絡(luò)通信。采用多線程模型,即每當有一個用戶連接到服務(wù)器后,服務(wù)器主線程將創(chuàng)建一個子線程為該用戶服務(wù)。當用戶發(fā)出退出請求或者斷開連接后,將關(guān)閉子線程并釋放相應(yīng)的資源。服務(wù)器維護了一個客戶鏈表用于保存和管理用戶信息,各個

85、線程對客戶鏈表的訪問采用了互斥鎖機制,即當一個線程正在對客戶鏈表進行訪問時,別的線程無法訪問鏈表。</p><p>  聊天室服務(wù)器程序的主線程程序流程與宿舍管理服務(wù)器主線程程序流程完全相同,而子線程也大體一樣,只是不需要核對用戶名密碼信息,同時在往用戶鏈表添加刪除用戶的同時會向客戶端發(fā)送信息以提示客戶端更新在線用戶信息。所以對服務(wù)器程序流程不在做詳細的描述。</p><p>  4.2.

86、2 數(shù)據(jù)結(jié)構(gòu)設(shè)計</p><p>  根據(jù)聊天室需求設(shè)計了pthtread_LinkedList鏈表,供服務(wù)器用于保存所有聊天室用戶信息,結(jié)構(gòu)體的成員變量和函數(shù)說明如表5和表6所示:</p><p>  PthreadNode節(jié)點結(jié)構(gòu)體成員變量說明</p><p><b>  鏈表函數(shù)說明 </b></p><p>  

87、4.2.3 客戶端總體設(shè)計</p><p>  客戶端由C++語言編寫,使用QT的圖形庫來完成圖形界面,同時調(diào)用LINUX系統(tǒng)庫函數(shù)完成網(wǎng)絡(luò)通信等功能??蛻舳说墓δ艿膶崿F(xiàn)主要依靠以下兩個工作:與服務(wù)器通信工作和與用戶交互工作。由于客戶端需要在接收用戶輸入的同時,不斷從服務(wù)器接收數(shù)據(jù)并反饋到圖形界面上,所以需要創(chuàng)建一個子線程來專門完成此任務(wù)。當客戶端與服務(wù)器斷開連接后,客戶端需向用戶提示斷開連接信息,并做相應(yīng)的操作

88、(釋放資源、關(guān)閉程序等)。</p><p>  4.2.3 客戶端程序流程圖</p><p>  聊天室客戶端程序流程如圖19所示:</p><p>  聊天室客戶端程序流程圖</p><p>  4.3 用戶登錄與顯示在線用戶的設(shè)計與實現(xiàn)</p><p>  4.3.1 用戶登錄—客戶端</p><

89、;p>  用戶登錄功能負責在客戶端啟動后,生成用戶登錄界面,供用戶設(shè)置聊天室昵稱并連接到服務(wù)器。用戶登錄界面如圖20所示:</p><p><b>  用戶登錄界面圖</b></p><p>  用戶登錄界面會要求用戶輸入自己的聊天室昵稱,并會檢查用戶輸入昵稱是否符合要求,如果不符合會彈出錯誤信息并讓用戶重新輸入。當用戶設(shè)置完昵稱后,客戶端將會嘗試連接到服務(wù)器,

90、如果連接失敗將彈出錯信息并關(guān)閉程序,成功連接到后會關(guān)閉登錄界面,生成聊天室界面。</p><p>  4.3.2 用戶登錄—服務(wù)器</p><p>  服務(wù)器會在客戶端連接到服務(wù)器后創(chuàng)建一個子線程與客戶端進行通信,并在用戶鏈表的尾部插入新登錄的用戶信息。然后遍歷用戶鏈表,向用戶鏈表中的每一個用戶發(fā)送新用戶登錄消息,提醒客戶端更新在線用戶信息。</p><p>  4

91、.3.3 顯示當前在線用戶</p><p>  用戶設(shè)置完昵稱并進入聊天室后,在線用戶界面會顯示此時聊天室中的所有用戶信息和用戶人數(shù)。顯示在線用戶界面如圖21所示:</p><p><b>  顯示在線用戶界面圖</b></p><p>  當客戶端連接到服務(wù)器,服務(wù)子線程將新用戶信息添加到用戶鏈表后,會對用戶鏈表進行一次遍歷,然后將鏈表中所有

92、用戶的信息一條一條的發(fā)送給客戶端??蛻舳嗣拷邮艿揭粭l信息便會往在線用戶界面中添加一個用戶,并修改當前的在線人數(shù)。在線用戶界面中添加一個用戶關(guān)鍵代碼如下所示:</p><p>  void ChatRoomClient::addUserItem(int i) //添加用戶</p><p>  char imagePath[50]; //定義文件路徑</p><p> 

93、 sprintf(imagePath,":/HeadImage/head%d.png",i%15+1); //計算出頭像的文件路徑</p><p>  QListWidgetItem* userItem = new QListWidgetItem(QIcon(imagePath),trUtf8(</p><p>  contral.userNode[i].qqName)

94、+tr("(")+tr(contral.userNode[i].name)+tr(")"));</p><p>  ui->UserlistWidget->addItem(userItem); //在在線用戶界面中添加一個用戶</p><p>  char userNumber[4] = {0};</p><p>

95、  sprintf(userNumber,"%d 人",i+1); //拼接出在線人數(shù)</p><p>  ui->onlineNumber->setText(trUtf8(userNumber)); //修改在線人數(shù)</p><p>  4.3.4 動態(tài)修改在線用戶</p><p>  當有用戶進入或者退出聊天室時,在線用戶界面會動

96、態(tài)的修改在線用戶信息和在線用戶人數(shù)。</p><p>  實現(xiàn)動態(tài)添加在線用戶的方法:一個新的用戶進入聊天室并被添加到用戶鏈表后,服務(wù)器立即向鏈表中的所有用戶發(fā)送新用戶登入的消息和新用戶的必要數(shù)據(jù)信息;客戶端接收到新用戶登入消息后,加新登錄的用戶信息添加到在線用戶界面并修改在線人數(shù)。</p><p>  實現(xiàn)動態(tài)刪除在線用戶的方法:一個在線用戶退出聊天室后,服務(wù)器從用戶鏈表中刪除此用戶信息

97、并關(guān)閉與此用戶的網(wǎng)絡(luò)通信,然后向所有鏈表中的所有用戶發(fā)出用戶退出消息,最后為此用戶服務(wù)的子線程;客戶端接收到有用戶退出消息后,從在線用戶界面刪除退出的用戶信息并修改在線人數(shù)。動態(tài)修改在線用戶程序流程如圖22所示:</p><p>  動態(tài)修改在線用戶程序流程圖</p><p>  4.4 文本格式與表情的設(shè)計與實現(xiàn)</p><p>  4.4.1 設(shè)置文字的字體與顏

98、色</p><p>  為了給用戶帶來良好的聊天體驗,聊天室客戶端支持用戶自定義文字字體和文字顏色功能。</p><p>  設(shè)置字體與文字顏色的方法:設(shè)置字體與文字顏色的方法比較簡單,主要是利用了QFontDialog和QColorDialog兩個類供用戶選擇操作系統(tǒng)支持的字體和文字顏色。獲取到用戶對文字的設(shè)置,將會把設(shè)置好的字體與顏色信息分別存入一個QFont類對象和一個QColor類

99、對象,然后便可以使用這兩個對象設(shè)置輸入聊天信息文本編輯框的文字樣式了。設(shè)置文字的字體的關(guān)鍵代碼下所示:</p><p>  void ChatRoomClient::on_fontButton_clicked() //設(shè)置文字字體格式</p><p><b>  {</b></p><p>  ui->faceButton->set

100、Checked(false); //設(shè)置表情按鈕為未按下</p><p><b>  bool ok;</b></p><p>  QFont font = QFontDialog::getFont(</p><p>  &ok, QFont("Helvetica [Cronyx]", 10), this);//獲取

101、字體</p><p>  if(ok) //如果獲取成功</p><p>  ui->inputTextEdit->setFont(font);</p><p><b>  }</b></p><p>  4.4.2 設(shè)置聊天表情</p><p>  在線上聊天中,用戶常常想用把自己心

102、情比如高興、傷心、緊張等信息展示給對方。但是使用文字來表達這些信息的時候,往往顯得索然無味,即使是有些良好文學功底的用戶,對于一些比較特殊的心理活動也很難用文字進行描述。而聊天表情就能很好的滿足反映用戶心理活動的功能,它由一些簡單、有趣的圖片組成。本聊天室客戶端為提供40個聊天表情供用戶使用,如圖23所示:</p><p><b>  聊天表情圖</b></p><p&g

103、t;  設(shè)置聊天表情的方法:每一個聊天表情實際上為一張png格式的圖片,為了讓用戶能使用這些圖片,先要預(yù)先將圖片作為資源預(yù)先加載到文本編輯框的資源庫中,然后利用QListWidget類,將這些表情以圖標的形式供用戶選擇。當用戶選擇了某個表情后,便可以獲取到用戶選擇的圖標的索引,然后計算出表情圖片的資源路徑,然后將表情圖片顯示到文本編輯框的當前光標位置后。設(shè)置聊天表情程序流程如圖24所示:</p><p>  設(shè)置

104、聊天表情程序流程圖</p><p>  4.5 發(fā)送與接收聊天信息的設(shè)計與實現(xiàn)</p><p>  發(fā)送與接收聊天信息功能是聊天室程序中最重要的部分,無論是顯示在線用戶信息還是設(shè)置聊天內(nèi)容的樣式都只是為了給用戶帶來一些視覺上的享受。而要實現(xiàn)多個用戶的實時交流,對聊天信息的發(fā)送與接收才是真正的核心。</p><p>  4.5.1 發(fā)送聊天信息</p>

105、<p>  發(fā)送消息功能由兩部分組成:客戶端將用戶的聊天內(nèi)容發(fā)送到客戶端和服務(wù)器將受到的信息轉(zhuǎn)發(fā)給所有在線用戶。</p><p>  發(fā)送信息的實現(xiàn)方法:當用戶點擊了發(fā)送按鈕后將觸發(fā)發(fā)送信息槽函數(shù),由于用戶的聊天內(nèi)容中包含了圖片和不同的文字格式,而樸素文本(plainText)并不能滿足對這些信息的存儲,所以需要將其轉(zhuǎn)換成html格式然后在發(fā)送給服務(wù)器。服務(wù)器接收到客戶端發(fā)來的信息后,把信息轉(zhuǎn)發(fā)給用戶鏈

106、表上的所有用戶。發(fā)送聊天信息程序流程如圖25所示:</p><p>  發(fā)送聊天信息程序流圖</p><p>  4.5.2 接收聊天信息</p><p>  接收聊天信息功能可以讓客戶端從服務(wù)器接收其他的用戶發(fā)送的聊天信息,并在文本編輯框上按照一定格式顯示。聊天信息顯示格式如圖26所示:</p><p><b>  消息顯示框圖&

107、lt;/b></p><p>  接收聊天信息并顯示的實現(xiàn)方法:客戶從服務(wù)器接收到一條聊天信息中已經(jīng)包含了用戶信息、發(fā)送時間和聊天內(nèi)容信息,所以只需要先將用戶信息和發(fā)送時間拼接成一個字符串,然后設(shè)定顏色為藍色添加到消息顯示框。然后在將html格式的聊天信息讀出,再次做一次添加,就可以完成一次對聊天信息的接收顯示任務(wù)。為了使聊天信息一行接著一行添加到消息顯示框中,需要使用控件庫中的QTextEditWidge

108、t類的append(Qstring)函數(shù)來做添加操作。實現(xiàn)接收聊天信息功能的關(guān)鍵代碼如下所示:</p><p>  else if(strcmp(msg.type,”TM”) == 0) //判斷消息為聊天消息</p><p><b>  {</b></p><p>  QString info = trUtf8(((textMSG*)(msg

109、.data))->info); //獲取用戶信息和發(fā)送時間</p><p>  QString htmlData = trUtf8(((textMSG*)(msg.data))->htmldata);//獲取聊天內(nèi)容</p><p>  emit appendTextMessage(info); //為顯示用戶信息和時間發(fā)送添加信號</p><p>  

110、emit appendTextMessage(htmlData); //顯示聊天內(nèi)容信息發(fā)送添加信號</p><p><b>  }</b></p><p><b>  系統(tǒng)測試</b></p><p><b>  5.1 測試環(huán)境</b></p><p>  服務(wù)器:操作系統(tǒng)

111、Red Hat Enterprise Linux 5,內(nèi)存1G或以上</p><p>  客戶端:操作系統(tǒng)Fedora13,內(nèi)存512M或以上</p><p><b>  5.2 測試方式</b></p><p>  軟件測試的方法主要分為白盒測試和黑盒測試。白盒測試是通過分析程序內(nèi)部的邏輯與執(zhí)行路線,設(shè)計測試用例進行測試的方法,它又稱為結(jié)構(gòu)化

112、測試或路徑測試,通常使用于相對較小的程序。黑盒測試是把程序或系統(tǒng)看成一個黑盒子,完全不考慮其內(nèi)部結(jié)構(gòu)和處理過程,主要是測試各個程序或功能模塊之間的接口,檢查系統(tǒng)功能是否能按照設(shè)計書的規(guī)定正常執(zhí)行,是否能接收正確的輸入數(shù)據(jù)產(chǎn)生正確的輸出結(jié)果。</p><p><b>  5.3 測試及結(jié)果</b></p><p>  本系統(tǒng)的測試采用了黑盒測試的方式,測試人員非系統(tǒng)開發(fā)

113、人員以求測試結(jié)果更加具有實際意義。本次測試主要是測試聊天室功能模塊,其測試用例及其結(jié)果如表7所示:</p><p>  聊天室功能模塊測試結(jié)果</p><p><b>  結(jié) 語</b></p><p>  經(jīng)過5個月的努力,通過艱苦學習、研究、思考和工作,終于完成了“學生宿舍管理系統(tǒng)”這一系統(tǒng)的構(gòu)建,達到了畢業(yè)設(shè)計的預(yù)期目標,也學到了相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論