校園即時通訊設(shè)計與開發(fā)課程設(shè)計_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  計 算 機(jī) 與 信 息 工 程 學(xué) 院</p><p>  題目: 校園即時通訊設(shè)計與開發(fā) </p><p>  姓 名: </p><p>  學(xué) 號: </p><p>  專 業(yè): 計算機(jī)科學(xué)與技術(shù) </p><p>  指導(dǎo)教

2、師: </p><p>  起止日期: 12.11.26—13.01.20 </p><p>  計 算 機(jī) 與 信 息 工 程 學(xué) 院</p><p><b>  目 錄</b></p><p><b>  1 引言1</b></p><p>&

3、lt;b>  2 需求分析1</b></p><p><b>  2.1 用例圖1</b></p><p>  2.2 用例描述4</p><p><b>  3 系統(tǒng)設(shè)計8</b></p><p>  3.1 系統(tǒng)架構(gòu)設(shè)計8</p><p>  

4、3.2 系統(tǒng)功能模塊劃分9</p><p>  3.3 系統(tǒng)數(shù)據(jù)庫設(shè)計9</p><p><b>  4 系統(tǒng)實現(xiàn)12</b></p><p>  4.1 用戶登陸12</p><p>  4.1.1 用戶登錄12</p><p>  4.1.2 系統(tǒng)主界面14</p>

5、<p>  4.1.3 用戶通訊窗口15</p><p>  4.1.4 校園消息查詢19</p><p>  4.1.5 用戶辦公提醒設(shè)置20</p><p>  4.1.6 個人信息修改22</p><p>  4.1.7 系統(tǒng)設(shè)置24</p><p>  4.1.8 日程安排提醒設(shè)置26&l

6、t;/p><p>  4.1.9 聊天記錄查看28</p><p>  4.2 業(yè)務(wù)邏輯及數(shù)據(jù)庫操作29</p><p>  4.2.1 數(shù)據(jù)庫操作29</p><p>  4.2.2 網(wǎng)絡(luò)通訊31</p><p><b>  5 系統(tǒng)測試33</b></p><p>

7、;  5.1 測試基本要求33</p><p>  5.1.1 內(nèi)容檢查33</p><p>  5.1.2 鏈接檢查34</p><p>  5.1.3 易用性測試34</p><p>  5.1.4 功能檢查34</p><p>  5.1.5 容錯性測試34</p><p> 

8、 5.2 測試舉例35</p><p>  5.2.1 輸入域測試35</p><p>  5.2.2 頁面控件檢查35</p><p>  5.2.3 功能測試36</p><p><b>  6 總結(jié)38</b></p><p><b>  7 參考文獻(xiàn)38</b&

9、gt;</p><p><b>  1 引言</b></p><p>  由于即時通信軟件的興起,能夠進(jìn)行即時互通的“內(nèi)容”正迅速由語音全面擴(kuò)展到圖像、文字、數(shù)據(jù)等方面,不過“多功能”還不是即時通信的全部內(nèi)涵,能夠跨越互聯(lián)網(wǎng)、手機(jī)、固定電話等多個平臺進(jìn)行通信才是即時通信未來的價值所在。一位業(yè)內(nèi)人士認(rèn)為,即時通信已經(jīng)跨越原來狹義上的“網(wǎng)絡(luò)”概念,正向更為廣義的方向發(fā)展,

10、未來的即時通信軟件可以隨時隨地和任何人進(jìn)行任何方式的溝通,不僅是語音,還包括圖像、資料、數(shù)據(jù)等等,不僅在電腦上,還可以在手機(jī)、固定電話等任何終端上。</p><p>  現(xiàn)在的大學(xué)網(wǎng)絡(luò)的覆蓋已經(jīng)非常廣泛,對于我們學(xué)校來講已經(jīng)有了非常完善的校園網(wǎng)絡(luò),校園的日益擴(kuò)大也增加了師生之間的聯(lián)系,這樣一來就需要一個能方便師生聯(lián)系的即時通訊系統(tǒng),對于由于大家目前的IM都不統(tǒng)一,所以開發(fā)一款針對大學(xué)校園的即時通訊系統(tǒng)是很有必要的

11、,通過這套系統(tǒng)不僅僅能夠方便師生聯(lián)系,而且還融合了辦公,校園通知等等,加上學(xué)校比較完善的校園網(wǎng)絡(luò),這套系統(tǒng)更能體現(xiàn)出來網(wǎng)絡(luò)校園的特色。</p><p><b>  2 需求分析</b></p><p>  本系統(tǒng)總體目標(biāo)是為了實現(xiàn)網(wǎng)絡(luò)通訊。通過系統(tǒng)實現(xiàn)和對方進(jìn)行在線交流或者發(fā)送離線消息,并且還能通過該信息查詢?nèi)熒幕拘畔?,通過該系統(tǒng)還能夠查詢學(xué)校的最新通知或者之

12、前的通知,并且根據(jù)師生的日常學(xué)習(xí)和工作的需要還能夠設(shè)置工作提醒。</p><p><b>  2.1 用例圖</b></p><p>  用例圖(User Case)是被稱為參與者的外部用戶所能觀察到的系統(tǒng)功能的模型圖,呈現(xiàn)了一些參與者和一些用例,以及它們之間的關(guān)系,主要用于對系統(tǒng)、子系統(tǒng)或類的功能行為進(jìn)行建模。用例圖展示了用例之間以及同用例參與者之間是怎樣相互聯(lián)系的

13、。用例圖用于對系統(tǒng)、子系統(tǒng)或類的行為進(jìn)行可視化,使用戶能夠理解如何使用這些元素。</p><p>  1、IM系統(tǒng)的用例圖(如圖2-1所示)。</p><p>  圖2-1 IM系統(tǒng)用例圖</p><p>  2、登陸子系統(tǒng)的用例圖(如圖2-2所示)。</p><p>  圖2-2 登陸子系統(tǒng)的用例圖</p><p>

14、;  3、通訊子系統(tǒng)的用例圖(如圖2-3所示)。</p><p>  圖 2-3 通訊子系統(tǒng)的用例圖</p><p>  4、信息修改子系統(tǒng)的用例圖(如圖2-4)</p><p>  圖 2-4 信息修改子系統(tǒng)的用例圖</p><p>  5、信息查詢子系統(tǒng)的用例圖(如圖 2-5)</p><p>  圖 2-5 信息

15、查詢子系統(tǒng)的用例圖</p><p><b>  2.2 用例描述</b></p><p>  用例是軟件工程或系統(tǒng)工程中對系統(tǒng)如何反應(yīng)外界請求的描述,是一種通過用戶的使用場景來獲取需求的技術(shù)。每個用例提供了一個或多個場景,該場景說明了系統(tǒng)是如何同最終用戶或其它系統(tǒng)交互(interact)的,也就是誰可以用系統(tǒng)做什么,獲得一個明確的業(yè)務(wù)目標(biāo)。</p>&l

16、t;p>  如下為IM系統(tǒng)的用例描述。</p><p><b>  用例名稱:登錄前臺</b></p><p>  用例目的:登錄前臺,讓用戶顯示主界面</p><p><b>  參與者: 普通用戶</b></p><p>  前置條件:用戶已經(jīng)注冊過</p><p>

17、;<b>  事件流:</b></p><p>  第一步:系統(tǒng)顯示登錄界面</p><p>  第二步:用戶輸入登錄信息</p><p>  第三步:用戶點(diǎn)擊登錄</p><p>  第四步:系統(tǒng)驗證登錄信息正確,是否為空等,如果正確,則進(jìn)入系統(tǒng)主界面,如果不正確則繼續(xù)執(zhí)行第二步</p><p>

18、;  后置條件:用戶登錄成功,系統(tǒng)才會顯示主界面</p><p>  用例名稱:通訊信息的發(fā)送</p><p>  用例目的:成功發(fā)送信息,是對方能成功的接收的信息</p><p><b>  參與者:普通用戶</b></p><p>  前置條件:用戶已經(jīng)登錄,打開聊天界面</p><p>&l

19、t;b>  事件流:</b></p><p><b>  發(fā)送文本信息</b></p><p>  第一步:選中文本信息輸入框</p><p>  第二步:輸入文本信息,如果超過限制的字?jǐn)?shù),則不能再輸入</p><p>  第三步:點(diǎn)擊發(fā)送按鈕</p><p><b>

20、  發(fā)送表情</b></p><p>  第一步:在聊天界面,點(diǎn)擊表情選項,彈出表情列表</p><p>  第二步:選中需要的表情,單擊顯示的信息輸入框內(nèi)</p><p><b>  第三步:點(diǎn)擊發(fā)送</b></p><p><b>  發(fā)送圖片</b></p><

21、p>  第一步:在聊天界面,點(diǎn)擊發(fā)送圖片選項,彈出圖片路徑選擇框</p><p>  第二步:選擇圖片所在路徑,點(diǎn)擊打開按鈕,圖片會顯示在信息輸入框內(nèi)</p><p><b>  第三步:點(diǎn)擊發(fā)送</b></p><p><b>  發(fā)送文件</b></p><p>  第一步:在聊天界面,點(diǎn)

22、擊發(fā)送文件選項,彈出文件路徑選擇框</p><p>  第二步:選擇需要發(fā)送文件的路徑,點(diǎn)擊確定</p><p><b>  第三步:點(diǎn)擊發(fā)送</b></p><p><b>  字體修改</b></p><p>  第一步:在聊天界面,點(diǎn)擊字體選項,彈出字體選擇界面</p><

23、p>  第二步:選擇需要修改的字體大小,字形等,點(diǎn)擊確定</p><p>  后置條件:當(dāng)前處于聊天界面,表情列表,圖片、文件路徑選擇框,字體選擇框點(diǎn)擊彈出</p><p>  用例名稱:帳號信息修改</p><p>  用例目的:讓用戶對自己所用的帳號信息進(jìn)行修改</p><p><b>  參與者:用戶</b>

24、</p><p>  前置條件:該用戶已經(jīng)登錄</p><p><b>  事件流:</b></p><p>  第一步:選中該用戶,點(diǎn)擊修改用戶名及用戶資料</p><p>  第二步:彈出更改用戶名對話框</p><p>  第三步:對相關(guān)條目進(jìn)行修改,點(diǎn)擊確定</p><

25、p>  第四步:系統(tǒng)檢查用戶填寫的新用戶名是否為空,如果不為空則執(zhí)行下一步。否則判斷用戶資料信息是否全部為空,如果用戶資料全為空,則用戶名采用默認(rèn)名稱,執(zhí)行下一步,否則顯示提示對話框,跳轉(zhuǎn)到第三步。</p><p>  第五步:保存修改信息</p><p>  后置條件:更改用戶名對話框關(guān)閉,用戶名顯示修改后信息</p><p>  用例名稱:好友信息修改&l

26、t;/p><p>  用例目的:讓用戶對自己好友所用的用戶名信息進(jìn)行修改</p><p><b>  參與者:用戶</b></p><p>  前置條件:該用戶已經(jīng)登錄,修改對象已加為好友</p><p><b>  事件流:</b></p><p>  第一步:選中該好友,點(diǎn)擊

27、修改用戶名</p><p>  第二步:彈出更改用戶名對話框</p><p>  第三步:對備注名進(jìn)行修改,點(diǎn)擊確定</p><p>  第四步:系統(tǒng)檢查用戶填寫的新用戶名是否為空,如果不為空則執(zhí)行下一步。否則判斷用戶資料信息是否全部為空,如果用戶資料全為空,則用戶名采用好友默認(rèn)名稱,執(zhí)行下一步,否則顯示提示對話框,跳轉(zhuǎn)到第三步。</p><p&

28、gt;  第五步:保存修改信息</p><p>  后置條件:更改用戶名對話框關(guān)閉,該好友用戶名顯示修改后信息</p><p>  用例名稱:好友分組修改</p><p>  用例目的:讓用戶對自己好友分組信息進(jìn)行新增,刪除,修改</p><p><b>  參與者:用戶</b></p><p>

29、  前置條件:該用戶已經(jīng)登錄</p><p><b>  事件流:</b></p><p><b> ?。ㄔ黾樱?lt;/b></p><p>  第一步:點(diǎn)擊新建組,系統(tǒng)顯示新建組名對話框</p><p>  第二步:填寫新建組信息,點(diǎn)擊確定</p><p>  第三步:保存增加

30、信息,系統(tǒng)關(guān)閉新建組名對話框</p><p><b> ?。▌h除)</b></p><p>  第一步:選中所要刪除的分組名</p><p>  第二步:點(diǎn)擊刪除,進(jìn)行該分組信息的刪除</p><p>  第三步:系統(tǒng)提示刪除成功</p><p><b> ?。ㄐ薷模?lt;/b>

31、</p><p>  第一步:選中所要修改的組名</p><p>  第二步:對相關(guān)條目進(jìn)行修改</p><p>  第三步:點(diǎn)擊保存,系統(tǒng)提示修改成功</p><p>  后置條件:頁面自動轉(zhuǎn)跳到即時通訊界面</p><p>  用例名稱:聲音設(shè)置 用例目的:讓用戶選擇消息提示聲音的開關(guān)并自定義消息提示聲音。

32、 參與者:用戶 前置條件:用戶處于已登錄狀態(tài)。 事件流: 第一步:顯示聲音設(shè)置界面。 第二步:用戶設(shè)置消息提示聲音的開關(guān)或者自定義消息聲音,并提交設(shè)置。</p><p>  第三步:系統(tǒng)應(yīng)用聲音設(shè)置。</p><p>  后置條件:聲音設(shè)置已應(yīng)用。</p><p>  用例名稱:快捷鍵設(shè)置

33、用例目的:讓用戶自定義快捷鍵,使軟件使用更快捷方便。 參與者:用戶 前置條件:用戶處于已登錄狀態(tài)。 事件流: 第一步:顯示快捷鍵設(shè)置界面 第二步:用戶自定義快捷鍵,并提交設(shè)置。 第三步:系統(tǒng)判斷已定義快捷鍵是否存在沖突。如果存在,則返回上一步;如

34、 果不存在,則繼續(xù)進(jìn)入下一步。 第四步:系統(tǒng)應(yīng)用快捷鍵設(shè)置。 后置事件:快捷鍵已應(yīng)用。</p><p>  用例名稱:常規(guī)設(shè)置 用例目的:用戶按照個人喜好選擇鎖需要的常規(guī)設(shè)置。 參與者:用戶 前置條件:用戶處于已登錄

35、狀態(tài) 事件流:</p><p>  第一步:顯示常規(guī)設(shè)置界面 第二步:用戶選擇所需要的設(shè)置,并提交。 第三步:系統(tǒng)應(yīng)用常規(guī)設(shè)置。 后置條件:已應(yīng)用常規(guī)設(shè)置。</p><p>  用例名稱:文件設(shè)置 用例目的:設(shè)置文件接收的路徑</p><p>  參與者:用戶 事件流:

36、 第一步:顯示文件設(shè)置界面 第二步:選擇或填寫接收文件的默認(rèn)路徑,并提交</p><p>  第三步:系統(tǒng)判斷默認(rèn)文件接收路徑是否為空。如果為空,返回上一步;如果不為空,則繼續(xù)下一步。 第四步:系統(tǒng)應(yīng)用文件設(shè)置。 后置事件:文件設(shè)置已應(yīng)用。</p><p><b>  用例描述:查詢</b></p>

37、<p>  用例目的:使用戶可以清晰的查看好友的信息,查看學(xué)校的通知信息</p><p><b>  參與者:用戶</b></p><p>  前置條件:查詢界面已經(jīng)打開</p><p><b>  事件流:</b></p><p><b>  好友查詢</b><

38、;/p><p>  第一步:點(diǎn)擊查詢按鈕選,顯示信息查詢界面</p><p>  第二步:選擇好友查詢選項卡,在搜索欄搜索好友信息,如果為空,怎不能搜索,如果查詢信息格式不對,則沒有結(jié)果,成功搜索,會顯示與相關(guān)信息有關(guān)的好友</p><p>  第三步:右擊可以添加好友</p><p>  第四步:提示是否添加該用戶為好友</p>

39、<p>  第五步:添加則點(diǎn)擊確定,不同意則取消</p><p><b>  校園信息查詢</b></p><p>  第一步:點(diǎn)擊校園信息選項卡,顯示校園通知信息</p><p>  第二步:輸入需要查詢的某日期的學(xué)校通知的信息,將顯示此日期的所有校園通知的信息</p><p><b>  第三步:

40、點(diǎn)擊查看</b></p><p>  后置條件:用戶已查詢成功,成功退出查詢界面</p><p>  用例描述: 聊天記錄</p><p>  用例目的:用戶查看聊天記錄</p><p><b>  參與者:用戶</b></p><p>  前置條件:用戶打開聊天界面</p>

41、;<p><b>  事件流:</b></p><p>  第一步:點(diǎn)擊聊天記錄選項,聊天界面右側(cè)彈出聊天記錄界面</p><p>  第二步:在日期搜索欄輸入需要查看的日期記錄</p><p>  第三步:再次點(diǎn)擊聊天記錄按鈕,退出查看</p><p>  后置條件:聊天記錄彈窗關(guān)閉</p>

42、<p>  用例描述:校園即時通知查看</p><p>  用例目的:即時了解校園的通知</p><p><b>  參與者:用戶</b></p><p>  前置條件:用戶在某時間段第一次登錄,學(xué)校在此時間段有消息通知</p><p><b>  事件流:</b></p>

43、<p>  第一步:在軟件圖標(biāo)上會自動彈出信息通知小窗體</p><p>  第二步:點(diǎn)擊查看,則啟動連接,連接到校園信息通知處,取消則推出彈窗</p><p>  后置條件:用戶已查看窗體或取消窗體</p><p><b>  3 系統(tǒng)設(shè)計</b></p><p>  3.1 系統(tǒng)架構(gòu)設(shè)計</p>

44、;<p>  本系統(tǒng)采用三層架構(gòu)設(shè)計,將整個業(yè)務(wù)應(yīng)用劃分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三層。</p><p>  數(shù)據(jù)訪問層DAL:用于實現(xiàn)與數(shù)據(jù)庫的交互和訪問,從數(shù)據(jù)庫獲取數(shù)據(jù)或保存數(shù)據(jù)到數(shù)據(jù)庫的部分。</p><p>  業(yè)務(wù)邏輯層BLL:業(yè)務(wù)邏輯層承上啟下,用于對上下交互的數(shù)據(jù)進(jìn)行邏輯處理,實現(xiàn)業(yè)務(wù)目標(biāo)。</p><p>  表示層UI:主要實

45、現(xiàn)和用戶的交互,接收用戶請求或返回用戶請求的數(shù)據(jù)結(jié)果的展現(xiàn),而具體的數(shù)據(jù)處理則交給業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層去處理。</p><p>  三層架構(gòu)是將系統(tǒng)按其作用分成三部分,每部分解決自己負(fù)責(zé)的流程。</p><p>  3.2 系統(tǒng)功能模塊劃分</p><p>  系統(tǒng)功能模塊圖如圖3-1所示。</p><p>  圖3-1 系統(tǒng)功能模塊圖&l

46、t;/p><p>  3.3 系統(tǒng)數(shù)據(jù)庫設(shè)計</p><p>  本系統(tǒng)采用mysql5.5建立和維護(hù)數(shù)據(jù)庫,該數(shù)據(jù)庫主要是用于以下任務(wù):班級信息,客戶端狀態(tài),院系信息,用戶信息,行政部門信息,專業(yè)信息,校園信息。數(shù)據(jù)庫中主要有以下表:</p><p> ?。?)用戶信息表(im_user),用于保存用戶的基本信息,包括用戶id,登陸密碼,用戶名,性別,簽名,郵箱,電話

47、號碼。用戶信息表結(jié)構(gòu)如圖3-2所示。</p><p>  圖3-2 用戶信息表</p><p> ?。?)客戶端狀態(tài)表(usr_status),主要包括以下字段:用戶id,客戶端登陸ip,最近一次刷新的時間,登陸狀態(tài)??蛻舳藸顟B(tài)表結(jié)構(gòu)如圖3-3所示。</p><p>  圖3-3 客戶端狀態(tài)表</p><p>  (3)院系信息表(depar

48、tment)用于保存院系的基本信息,包括院系id,院系名稱。院系信息表結(jié)構(gòu)如圖3-4所示。</p><p>  圖3-4 院系信息表</p><p>  (4)未接收信息表(not_receive_message)用于記錄未接收的信息,包括發(fā)送時間,發(fā)送人id,接收人id。未接收信息表結(jié)構(gòu)如圖3-5所示。</p><p>  圖3-5 未接收信息表</p>

49、;<p>  (5)專業(yè)信息表(profession)用于保存學(xué)校各個專業(yè)的基本信息,包括專業(yè)id,專業(yè)名稱。專業(yè)信息表結(jié)構(gòu)如圖3-6所示。</p><p>  圖3-6 專業(yè)信息表</p><p>  (6)管理者信息表(manager)用于保存管理者所屬行政部門的信息。管理者信息表結(jié)構(gòu)如圖3-7所示。</p><p>  圖3-7 管理者信息表&l

50、t;/p><p>  (7)班級信息表(class)用于記錄班級的基本信息,包括班級id,班級名稱。班級信息表結(jié)構(gòu)如圖3-8所示。</p><p>  圖3-8 班級信息表</p><p>  (8)學(xué)生信息表(student)用于保存學(xué)生的基本信息,包括用戶id,院系id,專業(yè)id,班級id。學(xué)生信息表結(jié)構(gòu)如圖3-9所示。</p><p>  

51、圖3-9 學(xué)生信息表</p><p>  (9)教職工信息表(teacher)用于記錄教職工所屬院系的信息。包括教職工id,院系id。教職工信息表結(jié)構(gòu)如圖3-10所示。</p><p>  圖3-10 教職工信息表</p><p><b>  4 系統(tǒng)實現(xiàn)</b></p><p><b>  4.1 用戶登陸&

52、lt;/b></p><p>  4.1.1 用戶登錄</p><p>  用戶登陸如圖4-1所示。如果輸入信息有誤則會提示錯誤信息,需要重新輸入。</p><p>  圖4-1 會員注冊頁面</p><p>  首先程序在啟動時會自動加載上一次的登陸記錄下來的信息。包括服務(wù)器信息,用戶民,如果上次登錄時還選擇了記住密碼則在登陸框中密碼

53、會以“*”代替,直接進(jìn)行登陸。</p><p><b>  讀取配置文件如下:</b></p><p>  /// <summary></p><p>  /// 讀取配置文件 若讀取不成功,重建配置文件</p><p>  /// </summary></p><p&g

54、t;  private void ReadINI()</p><p><b>  {</b></p><p>  this.comboBox1.Text = inifile.Readfile("Login", "server");</p><p>  this.textBox1.Text = inifil

55、e.Readfile("Login", "ui");</p><p>  if (inifile.Readfile("Login", "pwd") != "")</p><p>  this.textBox2.Text = dl.Decrypto(inifile.Readfile("

56、;Login", "pwd"));</p><p>  if (inifile.Readfile("Login", "Remember") == "true")</p><p>  this.checkBox1.CheckState = CheckState.Checked;</p>&

57、lt;p>  if (inifile.Readfile("Login", "AutoLogin") == "true")</p><p>  this.checkBox2.CheckState = CheckState.Checked;</p><p><b>  }</b></p>&l

58、t;p>  本次登錄成功后,系統(tǒng)會根據(jù)用戶選擇的進(jìn)行保存信息配置信息,以便以后可以快速登錄:代碼如下:</p><p>  /// <summary></p><p>  /// 寫入配置文件 </p><p>  /// </summary></p><p>  private void SetINI()<

59、;/p><p><b>  {</b></p><p>  inifile.Writefile("Login", "server", this.comboBox1.Text);</p><p>  inifile.Writefile("Login", "ui", thi

60、s.textBox1.Text);</p><p>  inifile.Writefile("Login", "Remember", this.checkBox1.Checked.ToString().ToLower());</p><p>  inifile.Writefile("Login", "AutoLogin&

61、quot;, this.checkBox2.Checked.ToString().ToLower());</p><p>  if (this.checkBox1.Checked == true)</p><p>  inifile.Writefile("Login", "pwd", dl.Encrypto(this.textBox2.Text));

62、</p><p><b>  else</b></p><p>  inifile.Writefile("Login", "pwd", "");</p><p><b>  }</b></p><p>  用戶登錄判斷的代碼如下:</

63、p><p>  /// <summary></p><p><b>  /// 登陸判斷</b></p><p>  /// </summary></p><p>  /// <param name="ui">賬號</param></p>&l

64、t;p>  /// <param name="pwd">密碼</param></p><p>  /// <returns></returns></p><p>  private bool Check_Login(string ui, string pwd)</p><p><b>

65、;  {</b></p><p>  DBHelper.DBHelper db = new DBHelper.DBHelper(this.comboBox1.Text.Trim(), "nyist_im_test", "nyist_im_test", "nyist");</p><p>  DataSet ds = n

66、ew DataSet();</p><p>  ds= db.Login(ui, dl.Encrypto(pwd));</p><p>  if (ds.Tables[0].Rows.Count != 0)</p><p><b>  {</b></p><p>  //if (db.GetColumn("SE

67、LECT state_num FROM `user_state` WHERE userid='" + ui + "'")=="1")</p><p><b>  //{</b></p><p>  // return false;</p><p><b>  //

68、}</b></p><p>  fm = new Frm_Main(db,ds,this.textBox1.Text,this);</p><p>  user_name = ds.Tables[0].Rows[0].ItemArray[0].ToString();</p><p>  return true;</p><p>&

69、lt;b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p>  4.1.2 系統(tǒng)主界面</p><p>  系統(tǒng)主界面如圖4-3所示。</p><p><b>  圖4-3系統(tǒng)主界面</b>

70、;</p><p>  登錄成功后會太轉(zhuǎn)到系統(tǒng)的主界面,主界面會自動加載校內(nèi)的所有用戶的列表,包括院系,專業(yè),教職工,行政單位等等,</p><p><b>  主要代碼實現(xiàn)如下:</b></p><p>  private void Tree_Group_NodeMouseClick(object sender, TreeNodeMouseC

71、lickEventArgs e)</p><p><b>  {</b></p><p>  if (e.Button == MouseButtons.Right)</p><p><b>  {</b></p><p>  this.Tree_Group.SelectedNode = e.Node

72、; </p><p>  if (Tree_Group.SelectedNode.ImageIndex == 2)</p><p><b>  {</b></p><p>  contextMenu_tree.Items[0].Visible = true;</p><p>  contex

73、tMenu_tree.Items[1].Visible = true;</p><p>  contextMenu_tree.Items[2].Visible = true;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  

74、{</b></p><p>  contextMenu_tree.Items[0].Visible = false;</p><p>  contextMenu_tree.Items[1].Visible = false;</p><p>  contextMenu_tree.Items[2].Visible = false;</p>&l

75、t;p><b>  }</b></p><p>  this.contextMenu_tree.Show(Tree_Group, e.Location);</p><p>  this.str_name = e.Node.Text.ToString();//選中的節(jié)點(diǎn)信息</p><p><b>  }</b><

76、;/p><p>  else if (e.Button == MouseButtons.Left) </p><p><b>  {</b></p><p>  if (e.Node.IsExpanded == false)</p><p><b>  {</b></p><p>

77、;  e.Node.Expand();</p><p>  this.Tree_Group.SelectedNode = e.Node;</p><p>  if (e.Node.Nodes.Count == 0&&e.Node.ImageIndex!=2)</p><p><b>  {</b></p><

78、p>  Upload_friend(e.Node.Name,e.Node.Parent.Text,e.Node);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if (e.Node.IsExpanded == true)</p><

79、p><b>  {</b></p><p>  e.Node.Collapse();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>

80、;  MessageBox.Show("test");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.1.3 用戶通訊窗口</p><p&g

81、t;  在如圖4-4所示的就是用戶之間進(jìn)行聊天的窗口</p><p>  圖4-4 用戶聊天窗口</p><p>  當(dāng)用戶主動與對方發(fā)起聊天請求的時候可以通過兩種方式進(jìn)行:</p><p>  1:可以通過雙擊用戶列表中的用戶就能直接彈出聊天窗口</p><p><b>  主要代碼如下:</b></p>

82、<p>  //雙擊好友,進(jìn)行聊天</p><p>  private void Tree_Group_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)</p><p><b>  {</b></p><p>  if (e.Node.ImageIn

83、dex == 2)</p><p><b>  {</b></p><p>  Chat_Show(e.Node.Name,e.Node.Text);</p><p><b>  }</b></p><p><b>  }</b></p><p>  2

84、:用戶也可以通過右擊用戶節(jié)點(diǎn),會彈出快捷菜單,菜單中有聊天選項,代碼實現(xiàn)如下:</p><p>  private void contextMenu_tree_ItemClicked(object sender, ToolStripItemClickedEventArgs e)</p><p><b>  {</b></p><p>  thi

85、s.contextMenu_tree.Hide();</p><p>  switch (e.ClickedItem.Text)</p><p><b>  {</b></p><p>  case "發(fā)送消息":</p><p>  if (this.Tree_Group.SelectedNode.

86、ImageIndex == 2) Chat_Show(this.Tree_Group.SelectedNode.Name, this.Tree_Group.SelectedNode.Text);</p><p><b>  break;</b></p><p>  case "發(fā)送文件": MessageBox.Show("發(fā)送文件&qu

87、ot;);</p><p><b>  break;</b></p><p>  case "查看資料":</p><p>  if (this.Tree_Group.SelectedNode.ImageIndex == 2)</p><p><b>  {</b></p&

88、gt;<p>  if (frm_info_show == null||frm_info_show.IsDisposed)</p><p><b>  {</b></p><p>  frm_info_show = new Frm_Info_Show(str_name, this.Tree_Group.SelectedNode.Name.ToString

89、(), db);</p><p>  frm_info_show.Show();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  frm_info_show

90、.Activate();</p><p><b>  }</b></p><p>  } </p><p><b>  break;</b></p><p>  case "刷新":</p><p><b>

91、  {</b></p><p>  if(Tree_Group.SelectedNode.Nodes.Count!=0)</p><p>  if (Tree_Group.SelectedNode.Nodes[0].ImageIndex == 2)</p><p><b>  {</b></p><p>  

92、if (Tree_Group.SelectedNode.IsExpanded)</p><p><b>  {</b></p><p>  Tree_Group.SelectedNode.Toggle();</p><p><b>  }</b></p><p>  Tree_Group.Selec

93、tedNode.Nodes.Clear();</p><p>  MessageBox.Show("刷新完畢!");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p

94、><p><b>  }</b></p><p><b>  }</b></p><p>  當(dāng)對方像自己發(fā)起聊天請求時,聊天窗口會自動彈出,主要代碼如下:</p><p>  /// <summary></p><p>  /// 新建聊天窗口</p>

95、<p>  /// </summary></p><p>  /// <param name="user_id">對方賬號</param></p><p>  /// <param name="user_name">對方姓名</param></p><p>

96、;  /// <returns>返回新建的窗體對象</returns></p><p>  private void Create_Char(string user_id, string user_name,string info)</p><p><b>  {</b></p><p><b>  try&l

97、t;/b></p><p><b>  {</b></p><p>  f_chat = new Frm_Chat(user_id, user_name);</p><p>  f_chat.from_close += new dell_close(f_chat_from_close);</p><p>  f_c

98、hat.SendInfo += new IM.Frm_UI.Communication.Message(f_chat_SendInfo);</p><p>  list_chat.Add(f_chat);</p><p>  //Application.DoEvents();</p><p>  if (info != "") </p>

99、;<p><b>  {</b></p><p>  ImShoeMessage showinfo = new ImShoeMessage(f_chat.Receive_info);</p><p>  this.Invoke(showinfo,info); </p><p><b>  }</b></

100、p><p>  f_chat.Show();</p><p>  //f_chat.Receive_info(info);</p><p>  //Application.DoEvents();</p><p>  //f_chat.Activate();</p><p><b>  }</b><

101、;/p><p>  catch (Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show("新建聊天窗口");</p><p><b>  }</b></p><p><b>  }&l

102、t;/b></p><p>  主界面于此同時還在不停的刷新,以便能夠及時接收到其他用戶向本用戶發(fā)送的消息,主要代碼如下:</p><p>  /// <summary></p><p>  /// 進(jìn)行消息的處理</p><p>  /// </summary></p><p>  //

103、/ <param name="info">接收的消息</param></p><p>  private void Check_info(string info)</p><p><b>  {</b></p><p><b>  try</b></p><p

104、><b>  {</b></p><p>  string user_id = "";</p><p>  int index = 0;</p><p>  for (int i = 0; i < info.Length; i++)</p><p><b>  {</b&g

105、t;</p><p>  if (info[i] == '(')</p><p>  { index = i; break; }</p><p><b>  }</b></p><p>  if (index == 0) return;</p><p>  user_id = in

106、fo.Substring(0, index);</p><p>  int x = index; int y = info.IndexOf(')');</p><p>  string user_name = info.Substring(x + 1, y - x);</p><p>  //string user_name = db.GetColu

107、mn("select name from im_user where userid='" + user_id.Trim() + "'");</p><p>  info = info.Substring(y + 1);</p><p>  Find_Frm_chat(user_id, user_name, info);</p&g

108、t;<p><b>  }</b></p><p>  catch (Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show("消息處理");</p><p><b>  }</b>

109、;</p><p><b>  }</b></p><p>  4.1.4 校園消息查詢</p><p>  用戶登錄后可查詢校園的校內(nèi)通知 如圖4-6所示。</p><p>  圖4-6 校內(nèi)通知查詢</p><p><b>  主要代碼如下:</b></p>

110、<p>  private void linklable_LinkClicked(object sender,LinkLabelLinkClickedEventArgs e)</p><p><b>  {</b></p><p>  LinkLabel link = (LinkLabel)sender;</p><p>  //S

111、ystem.Diagnostics.Process.Start("iexplore.exe", "http://www.google.cn");</p><p>  link.Links[link.Links.IndexOf(e.Link)].Visited = true;</p><p>  string targetUrl = e.Link.Li

112、nkData as string;</p><p>  //targetUrl = "http://www.google.cn";</p><p>  targetUrl = link.Name.ToString();</p><p>  if (string.IsNullOrEmpty(targetUrl))</p><p&

113、gt;  MessageBox.Show("沒有鏈接地址!");</p><p><b>  else</b></p><p>  System.Diagnostics.Process.Start(DefaultWebBrowserFilePath(), targetUrl);</p><p><b>  }<

114、;/b></p><p>  /// 獲取默認(rèn)瀏覽器的路徑</p><p>  private String DefaultWebBrowserFilePath()</p><p><b>  {</b></p><p>  RegistryKey key = Registry.ClassesRoot.OpenSu

115、bKey("http\\shell\\open\\command", false);</p><p>  String path = key.GetValue("").ToString();</p><p>  if (path.Contains("\""))</p><p><b> 

116、 {</b></p><p>  path = path.TrimStart('"');</p><p>  path = path.Substring(0, path.IndexOf('"'));</p><p><b>  }</b></p><p> 

117、 key.Close();</p><p>  return path;</p><p><b>  }</b></p><p>  4.1.5 用戶辦公提醒設(shè)置</p><p>  用戶辦公提醒設(shè)置如圖4-8所示。</p><p>  圖4-8 用戶辦公提醒設(shè)置</p><p

118、><b>  主要代碼如下:</b></p><p>  public void Time_Tip(string time,string tip_text)</p><p><b>  {</b></p><p>  DateTime dt = Convert.ToDateTime(time);</p>

119、<p>  string str_time_data = "s";</p><p>  long data = DateAndTime.DateDiff(str_time_data, DateTime.Now, dt, FirstDayOfWeek.Sunday, FirstWeekOfYear.FirstFourDays);</p><p>  Syst

120、em.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();</p><p>  timer.Interval = (int)data*1000;//MessageBox.Show(dt.ToString());</p><p>  timer.Tick += new EventHandler(timer_Tick);&l

121、t;/p><p>  timer.Tag = time;</p><p>  // MessageBox.Show(time);</p><p>  // time.Replace(":", "");</p><p>  timer.Start();</p><p><b>

122、;  }</b></p><p>  /*|--fk修改,2012.9。30--*/</p><p>  /// <summary></p><p>  /// 定時器觸發(fā)事件</p><p>  /// </summary></p><p>  /// <param name

123、="sender"></param></p><p>  /// <param name="e"></param></p><p>  public void timer_Tick(object sender, EventArgs e)</p><p><b>  {<

124、;/b></p><p>  string str_time = ((System.Windows.Forms.Timer)sender).Tag.ToString().Replace(":","");</p><p>  // MessageBox.Show(Environment.CurrentDirectory + "\\提醒&

125、quot; + DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString() + DateTime.Today.Day + "\\" + str_time + ".text");</p><p>  FileStream fs = new FileStream(Environment.CurrentDire

126、ctory + "\\提醒\\" + DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString() + DateTime.Today.Day + "\\" + str_time + ".txt", FileMode.OpenOrCreate, FileAccess.Read);</p><p

127、>  StreamReader sr = new StreamReader(fs,Encoding.GetEncoding("gb2312"));</p><p>  string str = sr.ReadToEnd();</p><p>  Frm_Message_Tip tip = new Frm_Message_Tip(((System.Windows.F

128、orms.Timer)sender).Tag.ToString(), str);</p><p>  tip.Show();</p><p>  this.mInidg_remind();</p><p>  ((System.Windows.Forms.Timer)sender).Stop();</p><p>  ((System.Win

129、dows.Forms.Timer)sender).Dispose();</p><p><b>  }</b></p><p>  4.1.6 個人信息修改</p><p>  個人信息更改頁面如圖4-9所示。</p><p>  圖4-9 個人信息更改頁面</p><p><b>  

130、主要代碼如下:</b></p><p>  //點(diǎn)擊確認(rèn)修改個人信息</p><p>  private void bt_alter_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  model = CreatModel();//創(chuàng)

131、建Model</p><p>  if (bll.Updata(model,str_uid)>0)</p><p><b>  {</b></p><p>  MessageBox.Show("個人信息修改成功!");</p><p><b>  }</b></p&g

132、t;<p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox.Show("個人信息修改失敗!請檢查...");</p><p><b>  }</b></p><p><b&g

133、t;  }</b></p><p>  //點(diǎn)擊取消修改個人信息</p><p>  private void bt_cancle_info_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  mInigB_Info_alter();

134、</p><p><b>  }</b></p><p>  //點(diǎn)擊確認(rèn)修改密碼</p><p>  private void bt_ensure_Click_1(object sender, EventArgs e)</p><p><b>  {</b></p><p>

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論