企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 計算機論文_第1頁
企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 計算機論文_第2頁
企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 計算機論文_第3頁
企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 計算機論文_第4頁
企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 計算機論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 本科畢業(yè)設(shè)計(論文)題 目: 企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計與實現(xiàn) 院 系: 計算機科學(xué)系 專 業(yè): 計算機科學(xué)與技術(shù) 姓 名: 學(xué) 號: 指導(dǎo)教師: 教師職稱: 填寫日期: 2012年5月7日貴陽學(xué)院畢業(yè)設(shè)計(論文)摘 要隨著企業(yè)的不斷增多,社會經(jīng)濟的飛速發(fā)展,越來越多的企業(yè)開始使用內(nèi)部通信軟件來解決人員的工作溝通問題,它成本低,通信速度快,不僅方便人員的技術(shù)交流,還解決了電話的單線程通訊和費用高昂等問題。企業(yè)內(nèi)部通信軟件可以很好的解決企業(yè)內(nèi)部通信問題,使每個員工都能及時的了解自己的工作內(nèi)容和獲取需要的資料,加強了團隊的溝通。此系統(tǒng)基于udp/ip協(xié)議,采用java語言設(shè)計和實現(xiàn),使用eclips

2、e和windowbuilder pro插件進行開發(fā)。系統(tǒng)實現(xiàn)了信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問公共資源、互訪對方主機五大功能。本系統(tǒng)結(jié)構(gòu)清晰、界面友好、操作簡單、通用性強,可以大大提高了企業(yè)的工作效率。關(guān)鍵詞:企業(yè);信息通信;java;udp/ipabstractwith the incresing of the enterprises ,and the rapid economic development of society, more and more of the enterprises are starting to use internal communications soft

3、ware solving communication problem of staff. it is low cost, high speed communications ,not only facilitate the technology transfer but also solve the single-threaded calls communication and costly problems.enterprise instant messaging software can solve internal communication problems, so that ever

4、y employee is able to understand their work content and access to required information enhance communication between the team. this system based on udp/ip,uses the java language design and implementation, use eclipse and windowbuilder pro plugin development. this system realizes five functions inclu

5、ding the information communication, system settings, search users, visit the public resources and other host visits,this system structure is clear, friendly interface ,easy to operate. strong universability, it could be greatly improve the efficiency of enterprises.keywords:enterprise ;information c

6、ommunication ;java;udp/ip目 錄摘 要iabstractii第一章 前言1第二章 概述2第一節(jié) 開發(fā)背景2第二節(jié) 課題現(xiàn)狀2第三節(jié) 軟硬件需求2第三章 系統(tǒng)分析3第一節(jié) 需求功能分析3第二節(jié) 可行性分析3一、可行性要求、目標3二、技術(shù)可行性分析3三、經(jīng)濟可行性分析4第四章 系統(tǒng)設(shè)計5第一節(jié) 系統(tǒng)目標5第二節(jié) 系統(tǒng)功能5第三節(jié) 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計5一、數(shù)據(jù)庫分析5二、企業(yè)內(nèi)部通信系統(tǒng)的e-r圖6三、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計7第五章 詳細設(shè)計和代碼實現(xiàn)8第一節(jié) 主窗體模塊的設(shè)計與實現(xiàn)8一、界面設(shè)計8二、實現(xiàn)過程8第二節(jié) 公共模塊的設(shè)計與實現(xiàn)10一、界面設(shè)計10二、實現(xiàn)過程11第三節(jié) 系統(tǒng)

7、托盤模塊的設(shè)計與實現(xiàn)13一、界面設(shè)計13二、實現(xiàn)過程13第四節(jié) 系統(tǒng)工具模塊的設(shè)計與實現(xiàn)14一、界面設(shè)計14二、實現(xiàn)過程15第五節(jié) 用戶管理模塊的設(shè)計與實現(xiàn)17一、界面設(shè)計17二、實現(xiàn)過程18第六節(jié) 通信模塊的設(shè)計與實現(xiàn)20一、界面設(shè)計20二、實現(xiàn)過程23第六章 總結(jié)27致謝28參考文獻2928第一章 前言從20世紀90年代開始,公共的即時消息和實時通信逐漸成為了人們重要的溝通工具, 如mail、qq、msn等。但是,公共的即時信息給人們帶來方便的同時,也帶來了極大的安全隱患,當今網(wǎng)絡(luò),木馬程序、病毒和其他惡意軟件橫行,稍不注意,電腦就會中毒。對于企業(yè),使用公共的即時消息是一種安全威脅,企業(yè)的

8、it部門對于公共即時消息的使用計劃無法控制。公共的即時通信,正成為病毒和其他惡意軟件入侵企業(yè)計算機的一個渠道,這意味著最終用戶能夠把敏感的數(shù)據(jù)外傳。為此企業(yè)內(nèi)部通信工具應(yīng)運而生,本工具從源頭上解決了這一隱患,專為企業(yè)而設(shè)計,通信服務(wù)器就直接置于企業(yè)內(nèi)部,所有信息由企業(yè)自己管理,讓企業(yè)以更安全、更可伸縮和更易于管理的方式靈活方便地使用協(xié)同和通信服務(wù)的功能。企業(yè)內(nèi)部通信工具可以很好的解決企業(yè)通信問題,面對工作目標和團隊工作中可能出現(xiàn)的問題,必須加強團隊的溝通,使每個員工都能及時地了解自己的工作內(nèi)容和獲取需要的資料。為解決這一問題,開發(fā)一個界面友好、易于操作的內(nèi)部通信軟件成為企業(yè)的首選。本系統(tǒng)應(yīng)用了

9、jdk 6.0新增的系統(tǒng)托盤技術(shù)和javadb數(shù)據(jù)庫。系統(tǒng)托盤可以在程序主窗體最小化之后,使用托盤控制窗體的相應(yīng)操作,例如打開主窗體;javadb使用靈活,可以應(yīng)用到不同的系統(tǒng)平臺中,只要該平臺有支持java的環(huán)境。整個系統(tǒng)從操作簡便、界面友好、靈活、實用、安全的要求出發(fā),實現(xiàn)信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問公共資源、互訪對方主機等功能。第二章 概述第一節(jié) 開發(fā)背景近幾年,隨著網(wǎng)絡(luò)的迅速發(fā)展和全球信息化速度的加快,網(wǎng)絡(luò)通信已經(jīng)不算是新鮮事物了,但大多數(shù)網(wǎng)絡(luò)通信需要借助internet上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題,如遭遇到網(wǎng)絡(luò)攻擊、病毒入侵等等。由于互聯(lián)網(wǎng)上的網(wǎng)

10、絡(luò)通信工具有時會給企業(yè)內(nèi)部信息交流帶來不便,所以為了方便企業(yè)內(nèi)部用戶之間的溝通、保證企業(yè)內(nèi)部局域網(wǎng)的安全,需要開發(fā)一個基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時通信工具。第二節(jié) 課題現(xiàn)狀企業(yè)內(nèi)部通信系統(tǒng)是基于局域網(wǎng)的即時通信工具,可以說是一個internet通信工具的小規(guī)模版本,一般采用udp或者tcp協(xié)議體系等來實現(xiàn),開發(fā)技術(shù)已經(jīng)比較成熟,國外的通信工具較有名的有icq、msn messenger、國產(chǎn)的qq、新浪uc都實現(xiàn)了廣域網(wǎng)的即時通信。在最近幾年,國內(nèi)的局域網(wǎng)通信工具較有代表性有飛鴿傳書、飛秋,這兩款軟件的快速、實效、迷你、簡單的特點受到了廣大企業(yè)的好評。這些工具的實現(xiàn)方式具體細節(jié)不易得之,但它

11、無非是利用各種平臺上的網(wǎng)絡(luò)通信接口,基于tcp/ip或者udp/ip協(xié)議架構(gòu)下的軟件產(chǎn)品。對于一個企業(yè)內(nèi)網(wǎng),這些功能的實現(xiàn)相比于廣域網(wǎng)更加簡單。所以還是有很大研究價值的1。第三節(jié) 軟硬件需求本系統(tǒng)運行時需要以下條件。硬件平臺:cpu:pentium4 1.8ghz內(nèi)存:128mb以上硬盤空間:100mb軟件平臺:操作系統(tǒng):windows 2000、windows xp、windows 2003等開發(fā)工具:eclipse、jdk6.0數(shù)據(jù)庫:javadb第三章 系統(tǒng)分析第一節(jié) 需求功能分析本系統(tǒng)的設(shè)計目標是實現(xiàn)一個企業(yè)內(nèi)部局域網(wǎng)通信系統(tǒng),企業(yè)內(nèi)部職工可以方便的進行交流,可以大大的提高職工的工作效

12、率。根據(jù)企業(yè)對局域網(wǎng)通信的需求,本系統(tǒng)主要包括信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問公共資源、訪問對方主機五大功能。各功能概述:信息通信:信息通信是企業(yè)內(nèi)部通信系統(tǒng)的核心功能,它用于不同職工之間的通信,這種通信方式能夠?qū)崿F(xiàn)多個職工之間的通信,而不存在類似電話占線的問題,增加了任務(wù)分配的新方式,從而提高企業(yè)的工作效率。系統(tǒng)設(shè)置:系統(tǒng)設(shè)置用于設(shè)置用戶界面、公共路徑、公告欄等的功能。用戶搜索:用戶搜索用于搜索企業(yè)局域網(wǎng)內(nèi)的其他用戶,系統(tǒng)會根據(jù)用戶所設(shè)置的ip搜索范圍搜索所有計算機上的用戶。訪問公共資源:訪問公共資源用于實現(xiàn)企業(yè)內(nèi)部公共服務(wù)器上資源訪問的功能。訪問對方主機:訪問對方主機用于兩人聊天情況下對

13、對方主機的訪問和控制的功能。第二節(jié) 可行性分析一、可行性要求、目標企業(yè)內(nèi)部通信系統(tǒng)必須提供網(wǎng)絡(luò)通信功能,在通信過程中禁止使用聊天表情、文件傳送等功能,避免資料外泄,或因發(fā)送錯誤而導(dǎo)致上機資料的丟失以及其他損失。最重要的是必須適應(yīng)任何操作系統(tǒng),也就是實現(xiàn)跨平臺技術(shù),因為企業(yè)內(nèi)部的工作需要,工作環(huán)境中使用了多個操作系統(tǒng)來完成不同的工作。另外,系統(tǒng)不需要使用服務(wù)器中轉(zhuǎn)和記錄通信內(nèi)容,可以獨立完成通信任務(wù),排除職工對領(lǐng)導(dǎo)監(jiān)視工作進度等行為的逆反心理。企業(yè)內(nèi)部通信系統(tǒng)的目標是實現(xiàn)企業(yè)的信息化通信,提高企業(yè)通信能力,提高任務(wù)理解和執(zhí)行能力,減少沒有必要的人員流動和資金損耗,以最快的速度提升企業(yè)的市場競爭力

14、。二、技術(shù)可行性分析局域網(wǎng)通信系統(tǒng)的技術(shù)已經(jīng)非常成熟,首先,從硬件上講,計算機硬件速度現(xiàn)在已經(jīng)不是問題,高速便捷的網(wǎng)絡(luò)已經(jīng)十分普遍,這些為本系統(tǒng)的運行打下堅實的基礎(chǔ)。從軟件的角度上講,數(shù)據(jù)庫技術(shù)已經(jīng)相當成熟(目前用得比較多的有sql server, javadb等),并且處理能力也非常強,這為海量數(shù)據(jù)的存儲和處理打下了堅實的基礎(chǔ),同時,使用java開發(fā)圖形界面程序也相當普遍。有了這些技術(shù)的支持,我們成功開發(fā)一個局域網(wǎng)通信系統(tǒng)沒有任何技術(shù)風險。三、經(jīng)濟可行性分析經(jīng)濟可行性主要是對項目的經(jīng)濟效益進行評價。本系統(tǒng)開發(fā)完成后可縮減工作時間,提高工作效率,而且簡單易操作,不需對使用人員進行培訓(xùn),不管是在

15、資金上還是效率上都能達到預(yù)期的效果。本系統(tǒng)開發(fā)經(jīng)費對于企業(yè)在經(jīng)濟上是可以接受的,并且本系統(tǒng)實施后可以顯著提高工作效率,有助于企業(yè)的信息化管理,所以該企業(yè)內(nèi)部通信系統(tǒng)在經(jīng)濟上是可行的。第四章 系統(tǒng)設(shè)計第一節(jié) 系統(tǒng)目標系統(tǒng)根據(jù)企業(yè)對內(nèi)部通信系統(tǒng)的要求,本系統(tǒng)可以實現(xiàn)以下目標:1.操作簡單、界面簡潔美觀。2.更方便訪問企業(yè)公共資源。3.及時顯示企業(yè)公共信息。4.在通信窗口顯示對方ip信息。5.局域網(wǎng)內(nèi)網(wǎng)用戶自動搜索。6.系統(tǒng)運行穩(wěn)定、安全可靠。 第二節(jié) 系統(tǒng)功能系統(tǒng)功能結(jié)構(gòu)圖如下:企業(yè)內(nèi)部通信系統(tǒng)信息通信系統(tǒng)設(shè)置用戶搜索訪問公共資源訪問對方主機圖4.1系統(tǒng)功能結(jié)構(gòu)圖第三節(jié) 數(shù)據(jù)庫結(jié)構(gòu)設(shè)計一、數(shù)據(jù)庫分

16、析該系統(tǒng)是一個桌面應(yīng)用程序,它不像web應(yīng)用那樣需要配置到指定的服務(wù)器上,所以數(shù)據(jù)庫和該系統(tǒng)應(yīng)存在于同一計算機中,這樣,不僅節(jié)省了開銷,而且還提高了系統(tǒng)的安全性。該系統(tǒng)所用數(shù)據(jù)庫為javadb數(shù)據(jù)庫。由于該數(shù)據(jù)庫的運行環(huán)境平臺要求較低,一般的電腦都可以滿足它的硬件條件2。二、企業(yè)內(nèi)部通信系統(tǒng)的e-r圖該系統(tǒng)的實體包括用戶和窗口位置兩個實體,分別記錄著通信窗口的絕對位置和用戶的信息。 (1)用戶實體用戶實體主要包括ip信息、pc名稱、用戶信息、系統(tǒng)信息等,它記錄了搜索到的用戶和所有的用戶信息。用戶實體的e-r圖如下所示:用戶實體頭 像提示文本用戶信息ip地 址主機名稱 圖4.2用戶實體e-r圖

17、(2)窗口位置實體窗口位置實體記錄著窗體最后的移動位置和窗體大小等信息,主要包括窗體位置的橫坐標和豎坐標(下圖用x、y軸坐標表示)、窗體的高度和寬度。窗口實體的e-r圖如下所示:x坐標窗口實體y坐標窗體高度窗體寬度圖4.3窗口實體e-r圖三、數(shù)據(jù)庫結(jié)構(gòu)設(shè)計在該系統(tǒng)中的數(shù)據(jù)庫db_eq包含兩個數(shù)據(jù)表,分別為用戶信息表tb_users和窗體位置信息表tb_location。(1)tb_users(用戶信息表)用戶信息表用來保存企業(yè)內(nèi)的通信用戶,表tb_users如下所示:表4.1用戶信息表tb_users字段名數(shù)據(jù)類型是否為空是否主鍵默認值描述ipvarchar(16)noyes用戶iphostv

18、archar(30)yesnonull主機名稱namevarchar(20)yesnonull姓名tooltipvarchar(50)yesnonull提示文本iconvarchar(50)yesnonull頭像圖標(2)tb_location(窗體位置信息表)窗體位置表用來保存窗體的位置和大小,表tb_location如下所示:表4.2 窗體位置信息表tb_location字段名數(shù)據(jù)類型是否為空是否主鍵默認值描述xlocationintyesnonullx軸坐標ylocationintyesnonully軸坐標heightintyesnonull窗體高度widthintyesnonull窗體

19、寬度第五章 詳細設(shè)計和代碼實現(xiàn)第一節(jié) 主窗體模塊的設(shè)計與實現(xiàn)一、界面設(shè)計主窗體界面是本系統(tǒng)的用戶列表,它由用戶列表、系統(tǒng)選項卡、公告提示等組成。其中系統(tǒng)選項卡用于切換不同的管理界面,包括系統(tǒng)設(shè)計和系統(tǒng)工具界面3。主窗體的效果圖如下所示:圖5.1 主窗體界面示意圖二、實現(xiàn)過程主窗體實現(xiàn)部分包括創(chuàng)建主窗體和記錄窗體位置。其中創(chuàng)建主窗體的步驟如下:(1)創(chuàng)建jxcframe類,在類中創(chuàng)建窗體的對象,為窗體添加選項卡面板,并添加用戶列表、系統(tǒng)工具、系統(tǒng)設(shè)置3個選項卡和狀態(tài)欄標簽、公告按鈕等屬性。在構(gòu)造方法中初始化窗體上的控件。數(shù)據(jù)庫操作類、首選項對象等屬性,為窗體添加時間監(jiān)聽器、為公告信息按鈕添加監(jiān)聽

20、器等。(2)初始化socket服務(wù)器,指定端口為1111,如初始化失敗,則提示服務(wù)器端口被占用或本軟件已運行,并退出本系統(tǒng)。用于接收其他用戶發(fā)送的通信信息。關(guān)鍵代碼如下:try / 啟動通訊服務(wù)端口ss = new datagramsocket(1111); catch (socketexception e2) if (e2.getmessage().startswith("address already in use")showmessagedialog("服務(wù)端口被占用,或者本軟件已經(jīng)運行。");system.exit(0);(3) checkpla

21、card方法,用于檢測系統(tǒng)公告,當公告路徑中存在系統(tǒng)公告時,將從文件中獲取完整信息,調(diào)用pushmessage()方法將信息壓入公告信息棧中。關(guān)鍵代碼如下:private void checkpacard() / 檢測公告信息方法string placarddir = preferences.get("placardpath", null);if (placarddir = null) pushmessage("未設(shè)置公告路徑");return;file placard = new file(placarddir);try if (placard.exi

22、sts() && placard.isfile() stringbuilder placardstr = new stringbuilder();scanner sc = new scanner(new fileinputstream(placard);while (sc.hasnextline() placardstr.append(sc.nextline();pushmessage(placardstr.tostring(); catch (filenotfoundexception e) pushmessage("公告路徑錯誤,或公告文件不存在");(

23、4)inituserinfobutton()方法用于初始化本地用戶信息,并在主窗體左上角顯示本地用戶的頭像和名稱,會在用戶更改本地用戶名稱時同步更新。(5) main()方法,本方法首先獲取用戶設(shè)置的界面外觀,然后調(diào)用uimanager類設(shè)置指定的外觀,生成主窗體對象。最后初始化服務(wù)器端口和系統(tǒng)欄圖標。關(guān)鍵代碼如下:public static void main(string args) try string laf = preferences.get("lookandfeel", "java默認");/獲取用戶選擇的外觀if (laf.indexof(

24、"當前系統(tǒng)")>-1)uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname();/設(shè)置外觀eq frame = new eq();frame.setvisible(true);/顯示窗體frame.systemtrayinitial();/ 初始化系統(tǒng)欄frame.server();/啟動服務(wù)端口frame.checkplacard();/檢測系統(tǒng)公告 catch (exception e) e.printstacktrace(); 記錄窗體的位置步驟如下:(1)為窗體添加監(jiān)聽器,當改變窗體的

25、位置和大小時,將調(diào)用savelocation()方法將窗體和位置大小保存到數(shù)據(jù)庫中。(2)savelocation(),該方法中調(diào)用了dao類中的updatelocation將窗體的位置和大小保存到數(shù)據(jù)庫中。第二節(jié) 公共模塊的設(shè)計與實現(xiàn)一、界面設(shè)計在本系統(tǒng)的項目空間中,有部分模塊是公用的,或者多個模塊甚至整個系統(tǒng)的配置信息是被多個模塊重復(fù)調(diào)用完成業(yè)務(wù)的邏輯。其中有關(guān)數(shù)據(jù)庫的操作、連接數(shù)據(jù)庫、創(chuàng)建本機ip的默認用戶(并添加到數(shù)據(jù)庫中)、從數(shù)據(jù)庫中獲取窗體位置和大小、添加或刪除指定用戶、更新用戶信息等4。二、實現(xiàn)過程公共模塊包括數(shù)據(jù)庫操作類和系統(tǒng)工具類。其中dao類主要負責有關(guān)數(shù)據(jù)庫的操作,該類在

26、構(gòu)造方法中驅(qū)動并連接數(shù)據(jù)庫,然后將構(gòu)造方法設(shè)置為private私有屬性,通過靜態(tài)的getdao()獲取dao類的實例對象,這是簡單的單例模式。在連接數(shù)據(jù)庫時,可以指定create參數(shù)為true直接創(chuàng)建數(shù)據(jù)庫,但在此之前需要調(diào)用dbexist()方法判斷數(shù)據(jù)庫是否存在。dao類的關(guān)鍵代碼如下:public class dao / 數(shù)據(jù)庫驅(qū)動private static final string driver = "org.apache.derby.jdbc.embeddeddriver"private static string url = "jdbc:derby:

27、db_eq"/ 數(shù)據(jù)庫urlprivate static connection conn = null;/ 數(shù)據(jù)庫連接private static dao dao = null;private dao() try class.forname(driver);if (!dbexists() conn = drivermanager.getconnection(url + "create=true");createtable(); elseconn = drivermanager.getconnection(url);adddefuser(); catch (exce

28、ption e) e.printstacktrace();joptionpane.showmessagedialog(null, "數(shù)據(jù)庫連接異常,或者本軟件已經(jīng)運行。");system.exit(0);private boolean dbexists() / 測試數(shù)據(jù)庫是否存在boolean bexists = false;file dbfiledir = new file("db_eq");if (dbfiledir.exists() bexists = true;return bexists;public static dao getdao() /

29、 獲取dao實例if (dao = null)dao = new dao();return dao;public list<user> getusers() / 獲取所有用戶list<user> users = new arraylist<user>();try string sql = "select * from tb_users"statement stm = conn.createstatement();resultset rs = stm.executequery(sql);while (rs.next() user user

30、= new user();user.setip(rs.getstring(1);user.sethost(rs.getstring(2);user.setname(rs.getstring(3);user.settiptext(rs.getstring(4);user.seticon(rs.getstring(5);users.add(user);rs.close(); catch (sqlexception e) e.printstacktrace();return users;resource類是企業(yè)內(nèi)部通信系統(tǒng)中的工具類,該類中的方法都是靜態(tài)的,可以直接調(diào)用,而不用創(chuàng)建resource類

31、的實例對象。這些工具方法包括搜索用戶的方法、登錄公共資源的方法、信使群發(fā)的方法和單條信息發(fā)送的方法。第三節(jié) 系統(tǒng)托盤模塊的設(shè)計與實現(xiàn)一、界面設(shè)計系統(tǒng)托盤模塊用于定義系統(tǒng)欄圖標。本系統(tǒng)的主窗體是繼承對話框窗體編寫的,該窗體在系統(tǒng)任務(wù)欄不會顯示任務(wù)標題,如果主窗體最小化之后將會隱藏,這時必須使用快捷鍵或者系統(tǒng)托盤中的圖標執(zhí)行顯示窗體的命令。系統(tǒng)托盤包含相應(yīng)的菜單,右鍵點擊會彈出選擇菜單,菜單包括三個選項,分別是:“訪問服務(wù)器”、“打開”、“退出”。系統(tǒng)托盤的設(shè)計效果圖如下所示: 圖5.2系統(tǒng)托盤示意圖二、實現(xiàn)過程在jdk6.0中,awt新增加了systemtray類和trayicon類,它們可以在

32、系統(tǒng)托盤區(qū)創(chuàng)建一個托盤程序。systemtray類表示桌面右下角的系統(tǒng)托盤,系統(tǒng)托盤由運行在桌面上的所有應(yīng)用程序共享,可以使用getsystemtray()方法獲取系統(tǒng)托盤對象,該方法總是對每個應(yīng)用程序返回相同的實例。并不是所有的操作系統(tǒng)都支持系統(tǒng)托盤,如果當前系統(tǒng)不支持托盤的話,該方法將自動拋出異常。為避免程序出現(xiàn)錯誤,在獲取系統(tǒng)托盤實例之前,需要檢查系統(tǒng)托盤是否支持??梢哉{(diào)用issupport()來實現(xiàn)5。systemtray類可以包含一個或多個trayicon類的實例,即系統(tǒng)欄圖標,可以使用add()將它們添加到托盤,trayicon對象由圖像、彈出菜單和一組相關(guān)監(jiān)聽器組成。創(chuàng)建系統(tǒng)托盤

33、的關(guān)鍵代碼如下:try string title = "eq通訊軟件"/系統(tǒng)欄提示文本的標題string company = "貴州省xxx科技有限公司"/系統(tǒng)欄提示文本systemtray systray = systemtray.getsystemtray();/獲取系統(tǒng)托盤對象image image = toolkit.getdefaulttoolkit().getimage(eq.class.getresource("/icons/systray.png");/ 系統(tǒng)欄圖標trayicon = new trayicon(ima

34、ge, title + "n" + company, createmenu(); /創(chuàng)建系統(tǒng)欄圖標對象trayicon.setimageautosize(true);/設(shè)置自動大小trayicon.addactionlistener(new systrayactionlistener();/添加監(jiān)聽器systray.add(trayicon);/添加系統(tǒng)欄圖標到系統(tǒng)托盤trayicon.displaymessage(title, company, messagetype.info); catch (exception e) e.printstacktrace();第四節(jié) 系

35、統(tǒng)工具模塊的設(shè)計與實現(xiàn)一、界面設(shè)計本系統(tǒng)的工具模塊起到維護系統(tǒng)的作用,包括更換程序外觀、。設(shè)置ip范圍、用戶搜索和系統(tǒng)更新、設(shè)置系統(tǒng)公告路徑、設(shè)置公共程序路徑、系統(tǒng)登錄等功能。在該系統(tǒng)第一次運行的時,用戶搜索功能可以搜索內(nèi)部網(wǎng)絡(luò)中所有正在運行的計算機。本系統(tǒng)工具模塊中使用了java的lookandfeel外觀技術(shù),不同的外觀中控件的外觀也會不同,就比如我們常用的電腦中,windows經(jīng)典樣式和windowsxp樣式外觀的按鈕、列表、菜單、工具欄甚至窗體的外觀都不相同。在本系統(tǒng)中提供了“當前系統(tǒng)”和“java默認值”兩個外觀選項,其中“java默認值”是swing默認的外觀,不需要特別設(shè)置,而“

36、當前系統(tǒng)”外觀需要使用相應(yīng)的方法獲取當前系統(tǒng)的外觀名稱,然后將該外觀應(yīng)用于默認的外觀6。系統(tǒng)工具的設(shè)計效果圖如下所示:圖5.3系統(tǒng)工具界面示意圖二、實現(xiàn)過程(1)createsystoolpanel()方法,用于創(chuàng)建系統(tǒng)工具選項卡,在該選項卡中包括界面選擇、用戶搜索和系統(tǒng)操作3部分,其中系統(tǒng)操作用于程序更新,它們都被添加到系統(tǒng)工具面板中,createsystoolpanel()方法必須設(shè)置好面板的布局和初始化工作。關(guān)鍵代碼如下:private jscrollpane createuserlist() / 用戶列表面板jscrollpane scrollpane = new jscrollpan

37、e(); scrollpane.sethorizontalscrollbarpolicy(scrollpaneconstants.horizontal_scrollbar_never);adduserpopup(chattree, getpopupmenu();/ 為用戶添加彈出菜單scrollpane.setviewportview(chattree);scrollpane.setborder(new emptyborder(0, 0, 0, 0);chattree.addmouselistener(new chattreemouselistener();return scrollpane;

38、(2)在createsystoolpanel()方法中創(chuàng)建界面選擇部分,該部分以列表控件顯示了兩種外觀選擇,當用戶選擇其中以種外觀并單擊“確定”按鈕之后,選擇外觀會保存到首選項中,然后提示重新運行本軟件。(3)在createsystoolpanel()方法中創(chuàng)建用戶搜索部分,包括搜索列表、搜索進度條和“搜索新用戶”3個控件,當單擊“搜索新用戶”按鈕時,系統(tǒng)會根據(jù)用戶在系統(tǒng)設(shè)置界面所設(shè)置的ip搜索范圍搜索所有計算機信息,并創(chuàng)建相應(yīng)的用戶對象,然后保存到數(shù)據(jù)庫中。(4)創(chuàng)建“搜索新用戶”按鈕的事件監(jiān)聽器searchuseractionlistener類,調(diào)用resource工具類的searchus

39、ers()方法搜索指定ip范圍內(nèi)的所有用戶。系統(tǒng)工具類中的searchusers()方法,該方法用于搜索局域網(wǎng)內(nèi)的通信用戶,也就是搜索企業(yè)內(nèi)的所有職工。本方法將獲取用戶指定的ip范圍,并在該范圍內(nèi)搜索所有可以訪問的計算機,如果用戶沒有指定ip范圍,系統(tǒng)默認的是-55。關(guān)鍵代碼如下:try for (int l = ipsint0; l <= ipeint0; l+) boolean b0 = l < ipeint0; / 記錄第一層循環(huán)的條件int k = l != ipsint0 ? 0 : ipsint1; / 從第二次循環(huán)以后k賦值

40、0for (; b0 ? k < 256 : k <= ipeint1; k+) boolean b1 = b0 | k < ipeint1; / 記錄第二層循環(huán)的條件int j = k != ipsint1 ? 0 : ipsint2; / 從第二次循環(huán)以后j賦值0for (; b1 ? j < 256 : j <= ipeint2; j+) boolean b2 = b1 | b1 ? j < 256 : j < ipeint2;int i = j != ipsint2 ? 0 : ipsint3;for (; b2 ? i < 256 :

41、i <= ipeint3; i+) if(!button.isselected()progressbar.setindeterminate(false);return;thread.sleep(100);/線程休息100毫秒string ip = l + "." + k + "." + j + "." + i;progressbar.setstring("正在搜索:" + ip);/取消進度條的滾動if (tree.adduser(ip, "search")/添加新用戶model.adde

42、lement("<html><b><font color=green>添加"+ ip + "</font></b></html>");catch(exception e) e.printstacktrace();第五節(jié) 用戶管理模塊的設(shè)計與實現(xiàn)一、界面設(shè)計用戶管理模塊類似于聊天軟件的好友列表,其中包含所有用戶信息,另外在用戶名稱上單擊鼠標右鍵,會彈出相應(yīng)的管理菜單,在該菜單中包含“添加用戶”、“更名”、“刪除用戶”、“信使群發(fā)(在沒有多選用戶的情況下無法進行信使群發(fā))”、“訪問主機資

43、源”和“訪問公共程序”,其中“訪問主機資源”是訪問該用戶的共享文件夾7。界面設(shè)計的效果圖如下所示:圖5.4用戶管理界面示意圖二、實現(xiàn)過程(1)創(chuàng)建usertreeranderer類,該類繼承jpanel類成為一個面板控件,同時該類也實現(xiàn)了treecellrenderer接口成為樹節(jié)點的渲染器。該類的構(gòu)造方法接受3個圖標參數(shù),分別用于樹節(jié)點的打開、關(guān)閉和葉節(jié)點的圖標。(2)在usertreeranderer類中的gettreecellrenderercomponent()方法,渲染樹節(jié)點的界面樣式。本方法獲取主窗體的寬度,并使用該寬度設(shè)置節(jié)點的寬度,是節(jié)點與窗體同寬度,當選擇某個節(jié)點時,該方法將

44、使用指定顏色繪制節(jié)點的邊框,以突出該節(jié)點被選擇的效果。(3)創(chuàng)建chattree類,該類繼承jtree自定義的樹控件,并且使用了之前定義的usertreeranderer樹節(jié)點渲染器, sortusers()方法,此方法是一個內(nèi)部線程,該線程獲取本地的ip地址,使用該地址從數(shù)據(jù)庫中獲取本地用戶對象,并將本地用戶設(shè)置在用戶列表首位。然后從數(shù)據(jù)庫中獲取其它用戶對象。使第一個用戶處于被選擇狀態(tài),并更新狀態(tài)欄的用戶人數(shù)。關(guān)鍵代碼如下:private synchronized void sortusers() /排序用戶列表new thread(new runnable() public void ru

45、n() try thread.sleep(100);root.removeallchildren();string ip = inetaddress.getlocalhost().gethostaddress(); /獲取本地ipuser localuser = dao.getuser(ip);/從數(shù)據(jù)庫中獲取自己的信息if (localuser != null) / 把自己顯示在首位defaultmutabletreenode node = new defaultmutabletreenode(localuser);root.add(node);usermap = dao.getusers(

46、);iterator<user> iterator = usermap.iterator();while (iterator.hasnext() / 遍歷用戶集合user user = iterator.next();if(user.getip().equals(localuser.getip()continue;root.add(new defaultmutabletreenode(user);/添加用戶到根節(jié)點treemodel.reload();chattree.this.setselectionrow(0);/使第一個節(jié)點被選擇if (eq != null)eq.setst

47、atic("總?cè)藬?shù):" + getrowcount();/更新狀態(tài)欄標簽 catch (exception e) e.printstacktrace();).start();(4)在chattree中的deluser()方法,用于刪除當前用戶列表中選擇的用戶對象。該方法首先獲取選擇的樹節(jié)點,從該節(jié)點中獲取綁定的用戶對象,經(jīng)用戶確認后刪除用戶信息,最后調(diào)用根節(jié)點的remove()方法刪除該用戶節(jié)點。另外是adduser()方法,用于在用戶列表中添加新用戶。本方法首先使用傳遞的ip參數(shù)到數(shù)據(jù)庫中獲取對應(yīng)的用戶對象,如成功獲取,說明數(shù)據(jù)庫已存在該用戶,系統(tǒng)會提示“已存在”,當確定

48、該ip可以訪問后,為該ip地址創(chuàng)建一個新的用戶并添加到數(shù)據(jù)庫中。關(guān)鍵代碼如下:public boolean adduser(string ip, string opration) / 添加用戶try if (ip = null)return false;user olduser = dao.getuser(ip);/從數(shù)據(jù)庫中獲取ip相同用戶if (olduser = null) / 如果數(shù)據(jù)庫中不存在該用戶inetaddress addr = inetaddress.getbyname(ip);/該用戶可以訪問if (addr.isreachable(1500) string host =

49、addr.gethostname();/獲取它的主機名稱root.add(new defaultmutabletreenode(new user(host, ip);user newuser = new user();/創(chuàng)建新用戶對象newuser.setip(ip); /設(shè)置ipnewuser.sethost(host);/設(shè)置主機名稱newuser.setname(host);/設(shè)置用戶姓名newuser.seticon("1.gif");/設(shè)置頭像dao.adduser(newuser);/添加該用戶到數(shù)據(jù)庫中sortusers();/用于重新加載用戶列表if (!o

50、pration.equals("search")joptionpane.showmessagedialog(eq.frame, "用戶" + host+ "添加成功", "添加用戶",joptionpane.information_message);return true; else /如果該用戶ip不可訪問if (!opration.equals("search") /并且不是系統(tǒng)自動搜索joptionpane.showmessagedialog(eq.frame, "檢測不到用戶i

51、p:" + ip, "錯誤添加用戶",joptionpane.error_message);/對話框提示錯誤 return false; else /如果數(shù)據(jù)庫中存在該ip用戶if (!opration.equals("search") /并且不是系統(tǒng)自動搜索joptionpane.showmessagedialog(eq.frame, "已經(jīng)存在用戶ip" + ip,"不能添加用戶", joptionpane.warning_message);/提示已存在!return false; catch (ex

52、ception e) e.printstacktrace();return false;第六節(jié) 通信模塊的設(shè)計與實現(xiàn)一、界面設(shè)計通信模塊是本系統(tǒng)中的核心模塊,它用于局域網(wǎng)內(nèi)的用戶之間的通信,而卻這種通信方式能夠?qū)崿F(xiàn)多個用戶之間的通信,不會存在像我們打電話一樣時的占線問題,增加了任務(wù)分配的方式。本模塊可以使用udp協(xié)議和信史兩種方式發(fā)送信息8。通信的聊天界面設(shè)計效果圖如下所示:圖5.7聊天界面示意圖我們通常所說的通信工具,都是采用的客戶機/服務(wù)器(c/s)架構(gòu)的,c/s結(jié)構(gòu)是這樣的一種結(jié)構(gòu):它包括一個客戶機(或前端),一個服務(wù)器(或稱后端),客戶機的作用是訪問和處理遠程服務(wù)器上的數(shù)據(jù),服務(wù)器的作用是接收和處理客戶機的數(shù)據(jù)請求。有時,可能有多個客戶向同一個服務(wù)器同時請求服務(wù),這就需要服務(wù)器決定怎樣處理這些請求。client/server結(jié)構(gòu)是當前數(shù)據(jù)庫應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展,使得當前很多系統(tǒng)都采用這種方式進行構(gòu)造,其最大的優(yōu)點是將計算機工作任務(wù)分別由客戶端和服務(wù)器端來共同完成,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來,任何客戶機都可以通過訪問服務(wù)器而獲得所需的信息。client/server模型最終可歸結(jié)為一種

溫馨提示

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

評論

0/150

提交評論