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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、der pro插件進行開發(fā)。系統(tǒng)實現(xiàn)了信息通信、系統(tǒng)設置、搜索用戶、訪問公共資源、互訪對方主機五大功能。本系統(tǒng)結構清晰、界面友好、操作簡單、通用性強,可以大大提高了企業(yè)的工作效率。關鍵詞:企業(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 software solving

3、 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 every employee i

4、s 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 including the inf

5、ormation 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 communication

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

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

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

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

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

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

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

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

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

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

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

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

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

20、t服務器,指定端口為1111,如初始化失敗,則提示服務器端口被占用或本軟件已運行,并退出本系統(tǒng)。用于接收其他用戶發(fā)送的通信信息。關鍵代碼如下:try / 啟動通訊服務端口ss = new datagramsocket(1111); catch (socketexception e2) if (e2.getmessage().startswith(address already in use)showmessagedialog(服務端口被占用,或者本軟件已經(jīng)運行。);system.exit(0);(3) checkplacard方法,用于檢測系統(tǒng)公告,當公告路徑中存在系統(tǒng)公告時,將從文件中獲取完

21、整信息,調用pushmessage()方法將信息壓入公告信息棧中。關鍵代碼如下:private void checkpacard() / 檢測公告信息方法string placarddir = preferences.get(placardpath, null);if (placarddir = null) pushmessage(未設置公告路徑);return;file placard = new file(placarddir);try if (placard.exists() & placard.isfile() stringbuilder placardstr = new string

22、builder();scanner sc = new scanner(new fileinputstream(placard);while (sc.hasnextline() placardstr.append(sc.nextline();pushmessage(placardstr.tostring(); catch (filenotfoundexception e) pushmessage(公告路徑錯誤,或公告文件不存在);(4)inituserinfobutton()方法用于初始化本地用戶信息,并在主窗體左上角顯示本地用戶的頭像和名稱,會在用戶更改本地用戶名稱時同步更新。(5) main

23、()方法,本方法首先獲取用戶設置的界面外觀,然后調用uimanager類設置指定的外觀,生成主窗體對象。最后初始化服務器端口和系統(tǒng)欄圖標。關鍵代碼如下:public static void main(string args) try string laf = preferences.get(lookandfeel, java默認);/獲取用戶選擇的外觀if (laf.indexof(當前系統(tǒng))-1)uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname();/設置外觀eq frame = new eq();frame.s

24、etvisible(true);/顯示窗體frame.systemtrayinitial();/ 初始化系統(tǒng)欄frame.server();/啟動服務端口frame.checkplacard();/檢測系統(tǒng)公告 catch (exception e) e.printstacktrace(); 記錄窗體的位置步驟如下:(1)為窗體添加監(jiān)聽器,當改變窗體的位置和大小時,將調用savelocation()方法將窗體和位置大小保存到數(shù)據(jù)庫中。(2)savelocation(),該方法中調用了dao類中的updatelocation將窗體的位置和大小保存到數(shù)據(jù)庫中。第二節(jié) 公共模塊的設計與實現(xiàn)一、界面設

25、計在本系統(tǒng)的項目空間中,有部分模塊是公用的,或者多個模塊甚至整個系統(tǒng)的配置信息是被多個模塊重復調用完成業(yè)務的邏輯。其中有關數(shù)據(jù)庫的操作、連接數(shù)據(jù)庫、創(chuàng)建本機ip的默認用戶(并添加到數(shù)據(jù)庫中)、從數(shù)據(jù)庫中獲取窗體位置和大小、添加或刪除指定用戶、更新用戶信息等4。二、實現(xiàn)過程公共模塊包括數(shù)據(jù)庫操作類和系統(tǒng)工具類。其中dao類主要負責有關數(shù)據(jù)庫的操作,該類在構造方法中驅動并連接數(shù)據(jù)庫,然后將構造方法設置為private私有屬性,通過靜態(tài)的getdao()獲取dao類的實例對象,這是簡單的單例模式。在連接數(shù)據(jù)庫時,可以指定create參數(shù)為true直接創(chuàng)建數(shù)據(jù)庫,但在此之前需要調用dbexist()方

26、法判斷數(shù)據(jù)庫是否存在。dao類的關鍵代碼如下:public class dao / 數(shù)據(jù)庫驅動private static final string driver = org.apache.derby.jdbc.embeddeddriver;private static string url = jdbc:derby:db_eq;/ 數(shù)據(jù)庫urlprivate static connection conn = null;/ 數(shù)據(jù)庫連接private static dao dao = null;private dao() try class.forname(driver);if (!dbexis

27、ts() conn = drivermanager.getconnection(url + ;create=true);createtable(); elseconn = drivermanager.getconnection(url);adddefuser(); catch (exception e) e.printstacktrace();joptionpane.showmessagedialog(null, 數(shù)據(jù)庫連接異常,或者本軟件已經(jīng)運行。);system.exit(0);private boolean dbexists() / 測試數(shù)據(jù)庫是否存在boolean bexists =

28、false;file dbfiledir = new file(db_eq);if (dbfiledir.exists() bexists = true;return bexists;public static dao getdao() / 獲取dao實例if (dao = null)dao = new dao();return dao;public list getusers() / 獲取所有用戶list users = new arraylist();try string sql = select * from tb_users;statement stm = conn.createsta

29、tement();resultset rs = stm.executequery(sql);while (rs.next() user user = 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

30、();return users;resource類是企業(yè)內部通信系統(tǒng)中的工具類,該類中的方法都是靜態(tài)的,可以直接調用,而不用創(chuàng)建resource類的實例對象。這些工具方法包括搜索用戶的方法、登錄公共資源的方法、信使群發(fā)的方法和單條信息發(fā)送的方法。第三節(jié) 系統(tǒng)托盤模塊的設計與實現(xiàn)一、界面設計系統(tǒng)托盤模塊用于定義系統(tǒng)欄圖標。本系統(tǒng)的主窗體是繼承對話框窗體編寫的,該窗體在系統(tǒng)任務欄不會顯示任務標題,如果主窗體最小化之后將會隱藏,這時必須使用快捷鍵或者系統(tǒng)托盤中的圖標執(zhí)行顯示窗體的命令。系統(tǒng)托盤包含相應的菜單,右鍵點擊會彈出選擇菜單,菜單包括三個選項,分別是:“訪問服務器”、“打開”、“退出”。系統(tǒng)托

31、盤的設計效果圖如下所示: 圖5.2系統(tǒng)托盤示意圖二、實現(xiàn)過程在jdk6.0中,awt新增加了systemtray類和trayicon類,它們可以在系統(tǒng)托盤區(qū)創(chuàng)建一個托盤程序。systemtray類表示桌面右下角的系統(tǒng)托盤,系統(tǒng)托盤由運行在桌面上的所有應用程序共享,可以使用getsystemtray()方法獲取系統(tǒng)托盤對象,該方法總是對每個應用程序返回相同的實例。并不是所有的操作系統(tǒng)都支持系統(tǒng)托盤,如果當前系統(tǒng)不支持托盤的話,該方法將自動拋出異常。為避免程序出現(xiàn)錯誤,在獲取系統(tǒng)托盤實例之前,需要檢查系統(tǒng)托盤是否支持??梢哉{用issupport()來實現(xiàn)5。systemtray類可以包含一個或多個

32、trayicon類的實例,即系統(tǒng)欄圖標,可以使用add()將它們添加到托盤,trayicon對象由圖像、彈出菜單和一組相關監(jiān)聽器組成。創(chuàng)建系統(tǒng)托盤的關鍵代碼如下: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.

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

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

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

36、scrollpane = new jscrollpane(); scrollpane.sethorizontalscrollbarpolicy(scrollpaneconstants.horizontal_scrollbar_never);adduserpopup(chattree, getpopupmenu();/ 為用戶添加彈出菜單scrollpane.setviewportview(chattree);scrollpane.setborder(new emptyborder(0, 0, 0, 0);chattree.addmouselistener(new chattreemouseli

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

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

39、nt1; / 從第二次循環(huán)以后k賦值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 : i = ipeint3; i+) if(

40、!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.addelement(添加+ ip + );catch(exception e) e.printstacktrace();第五節(jié) 用戶管理模塊的設計與實現(xiàn)一、界面設計用戶管理模

41、塊類似于聊天軟件的好友列表,其中包含所有用戶信息,另外在用戶名稱上單擊鼠標右鍵,會彈出相應的管理菜單,在該菜單中包含“添加用戶”、“更名”、“刪除用戶”、“信使群發(fā)(在沒有多選用戶的情況下無法進行信使群發(fā))”、“訪問主機資源”和“訪問公共程序”,其中“訪問主機資源”是訪問該用戶的共享文件夾7。界面設計的效果圖如下所示:圖5.4用戶管理界面示意圖二、實現(xiàn)過程(1)創(chuàng)建usertreeranderer類,該類繼承jpanel類成為一個面板控件,同時該類也實現(xiàn)了treecellrenderer接口成為樹節(jié)點的渲染器。該類的構造方法接受3個圖標參數(shù),分別用于樹節(jié)點的打開、關閉和葉節(jié)點的圖標。(2)在u

42、sertreeranderer類中的gettreecellrenderercomponent()方法,渲染樹節(jié)點的界面樣式。本方法獲取主窗體的寬度,并使用該寬度設置節(jié)點的寬度,是節(jié)點與窗體同寬度,當選擇某個節(jié)點時,該方法將使用指定顏色繪制節(jié)點的邊框,以突出該節(jié)點被選擇的效果。(3)創(chuàng)建chattree類,該類繼承jtree自定義的樹控件,并且使用了之前定義的usertreeranderer樹節(jié)點渲染器, sortusers()方法,此方法是一個內部線程,該線程獲取本地的ip地址,使用該地址從數(shù)據(jù)庫中獲取本地用戶對象,并將本地用戶設置在用戶列表首位。然后從數(shù)據(jù)庫中獲取其它用戶對象。使第一個用戶處

43、于被選擇狀態(tài),并更新狀態(tài)欄的用戶人數(shù)。關鍵代碼如下:private synchronized void sortusers() /排序用戶列表new thread(new runnable() public void run() try thread.sleep(100);root.removeallchildren();string ip = inetaddress.getlocalhost().gethostaddress(); /獲取本地ipuser localuser = dao.getuser(ip);/從數(shù)據(jù)庫中獲取自己的信息if (localuser != null) / 把自己

44、顯示在首位defaultmutabletreenode node = new defaultmutabletreenode(localuser);root.add(node);usermap = dao.getusers();iterator iterator = usermap.iterator();while (iterator.hasnext() / 遍歷用戶集合user user = iterator.next();if(user.getip().equals(localuser.getip()continue;root.add(new defaultmutabletreenode(u

45、ser);/添加用戶到根節(jié)點treemodel.reload();chattree.this.setselectionrow(0);/使第一個節(jié)點被選擇if (eq != null)eq.setstatic(總人數(shù): + getrowcount();/更新狀態(tài)欄標簽 catch (exception e) e.printstacktrace();).start();(4)在chattree中的deluser()方法,用于刪除當前用戶列表中選擇的用戶對象。該方法首先獲取選擇的樹節(jié)點,從該節(jié)點中獲取綁定的用戶對象,經(jīng)用戶確認后刪除用戶信息,最后調用根節(jié)點的remove()方法刪除該用戶節(jié)點。另外是

46、adduser()方法,用于在用戶列表中添加新用戶。本方法首先使用傳遞的ip參數(shù)到數(shù)據(jù)庫中獲取對應的用戶對象,如成功獲取,說明數(shù)據(jù)庫已存在該用戶,系統(tǒng)會提示“已存在”,當確定該ip可以訪問后,為該ip地址創(chuàng)建一個新的用戶并添加到數(shù)據(jù)庫中。關鍵代碼如下: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ù)庫中不存在該用戶inetadd

47、ress addr = inetaddress.getbyname(ip);/該用戶可以訪問if (addr.isreachable(1500) string host = addr.gethostname();/獲取它的主機名稱root.add(new defaultmutabletreenode(new user(host, ip);user newuser = new user();/創(chuàng)建新用戶對象newuser.setip(ip); /設置ipnewuser.sethost(host);/設置主機名稱newuser.setname(host);/設置用戶姓名newuser.setico

48、n(1.gif);/設置頭像dao.adduser(newuser);/添加該用戶到數(shù)據(jù)庫中sortusers();/用于重新加載用戶列表if (!opration.equals(search)joptionpane.showmessagedialog(eq.frame, 用戶 + host+ 添加成功, 添加用戶,joptionpane.information_message);return true; else /如果該用戶ip不可訪問if (!opration.equals(search) /并且不是系統(tǒng)自動搜索joptionpane.showmessagedialog(eq.frame

49、, 檢測不到用戶ip: + 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 (exception e) e.printstacktrace();return false;第

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

溫馨提示

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

評論

0/150

提交評論