freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)畢業(yè)論文-閱讀頁

2025-07-09 15:44本頁面
  

【正文】 接受信息,所以必須退出程序。} catch (SocketException e2) {if (().startsWith(Address already in use))showMessageDialog(服務(wù)端口被占用,或者本軟件已經(jīng)運(yùn)行。(0)。當(dāng)公告路徑中存在公告信息時(shí),該方法將從公告文件中獲取完整信息,然后調(diào)用 pushMessage()方法將通告信息壓入公告信息棧中。(6)編寫 main()方法。最后,初始化服務(wù)器端口和系統(tǒng)欄圖標(biāo)。if ((當(dāng)前系統(tǒng))1)(UIManager.getSystemLookAndFeelClassName())。 //創(chuàng)建主窗體對象(true)。// 初始化系統(tǒng)欄()。 //檢測系統(tǒng)公告} catch (Exception e) {()。(2)編寫 saveLocation()法可以調(diào)用 Dao 數(shù)據(jù)庫操作類的 updateLocation()法將窗體位置和窗體的大小保存到數(shù)據(jù)庫中。(1)數(shù)據(jù)庫操作類:基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)16 Dao 類主要負(fù)責(zé)有關(guān)數(shù)據(jù)庫的操作,該類在構(gòu)造方法里驅(qū)動并連接數(shù)據(jù)庫,之后將連接方法設(shè)置為 private 私有屬性,通過靜態(tài)的 getDao()方法獲取 Dao 類的實(shí)例對象,這是典型的單例模式。關(guān)鍵代碼public class Dao {// 數(shù)據(jù)庫驅(qū)動private static final String driver = 。// 數(shù)據(jù)庫 URLprivate static Connection conn = null。private Dao() {try {(driver)。create=true)。} elseconn = (url)。} catch (Exception e) {()。)。}}private boolean dbExists() {// 測試數(shù)據(jù)庫是否存在基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)17boolean bExists = false。if (()) {bExists = true。}public static Dao getDao() {// 獲取 DAO 實(shí)例if (dao == null)dao = new Dao()。}public void createTable() { // 創(chuàng)建數(shù)據(jù)表格String createUserSql = CREATE TABLE tb_users (+ ip varchar(16) primary key, + host varchar(30),+ name varchar(20), + tooltip varchar(50),+ icon varchar(50))。try {Statement stmt = ()。(createLocationSql)。()。}}(2)addDelfLocation()方法此方法用于添加窗體默認(rèn)位置和大小到數(shù)據(jù)庫,在企業(yè)內(nèi)部通信系統(tǒng)首次運(yùn)行時(shí),將使用此方法設(shè)置窗體位置和窗體大小。(3)addDefUser()方法此方法使用本機(jī) IP 地址創(chuàng)建默認(rèn)用戶,并添加到數(shù)據(jù)庫。(4)getLocation()方法 此方法用于從數(shù)據(jù)庫中獲取窗體位置和窗體大小信息,并將這些信息封裝成Rectangle 類的實(shí)例對象,然后作為方法的返回值。(6)updateLocation()方法此方法用于更新窗體位置和窗體大小信息,將接受 Rectangle 類的實(shí)例對象作參數(shù),將位置、寬度和高度等參數(shù)保存到數(shù)據(jù)庫中。系統(tǒng)工具類:Resource 類是企業(yè)內(nèi)部通信系統(tǒng)的工具類,該類中的工具方法都是靜態(tài)的,可以直接調(diào)用,不用創(chuàng)建 Resource 類的實(shí)例對象。 其中有以下幾種方法:基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)19(1)searchUsers()方法 用于搜索局域網(wǎng)中的通信用戶。(3)sendMessenger()方法 用于發(fā)送信使到指定用戶的操作系統(tǒng),當(dāng)通信對方?jīng)]有運(yùn)行企業(yè)內(nèi)部的通信系統(tǒng)時(shí),就無法接收到通信系統(tǒng)的發(fā)送內(nèi)容,此時(shí)這個(gè)方法就可以向?qū)Ψ桨l(fā)送信息,對方的操作系統(tǒng)接收到信使之后會以對話框的顯示內(nèi)容。(5)startFolder() 方法 用于打開指定的文件或者網(wǎng)絡(luò)共享資源?!∠到y(tǒng)模塊托盤的實(shí)現(xiàn)企業(yè)內(nèi)部通信系統(tǒng)的主窗體是繼承對話框窗體編寫的,該窗體在系統(tǒng)任務(wù)欄不會顯示相應(yīng)的任務(wù)標(biāo)題,主窗體最小化之后將會隱藏在系統(tǒng)任務(wù)欄中,不利于使用者的調(diào)取工作,這時(shí)必須使用快捷鍵或者系統(tǒng)托盤中的圖標(biāo)執(zhí)行顯示窗體的命令。包含 SystemTray 類和 TrayIcon 類,分別用于創(chuàng)建系統(tǒng)托盤和系統(tǒng)圖標(biāo)。由 PopupMenu 類和 MenuItem 類實(shí)現(xiàn)創(chuàng)建彈出菜單和菜單項(xiàng)。實(shí)現(xiàn)過程:(1)需要在主程序里面編寫 SystemTrayInitial()方法,用于初始化系統(tǒng)托盤,在方法中初始化系統(tǒng)托盤的提示文本、系統(tǒng)欄圖標(biāo),然后調(diào)用 createMenu()方法為系統(tǒng)欄圖標(biāo)創(chuàng)建彈出菜單,同時(shí)為系統(tǒng)欄圖標(biāo)添加 SysTrayActionListener 類事件監(jiān)聽器。(3)創(chuàng)建 SysTrayActionListener 內(nèi)部類,它實(shí)現(xiàn)了 ActionListener 接口,是系統(tǒng)欄基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)20圖標(biāo)的雙擊事件監(jiān)聽器,在用戶雙擊系統(tǒng)欄圖標(biāo)之后,該監(jiān)聽器將實(shí)現(xiàn)主窗體的顯示這和系統(tǒng)欄圖標(biāo)的“打開”菜單項(xiàng)所實(shí)現(xiàn)的功能相同,但是雙擊后會更加方便。圖 434 系統(tǒng)托盤 系統(tǒng)工具模塊的實(shí)現(xiàn)概述:企業(yè)內(nèi)部通信系統(tǒng)的系統(tǒng)工具模塊起到維護(hù)系統(tǒng)的作用,包括用戶搜索、更換程序外觀、系統(tǒng)升級等三個(gè)功能。在有新版的程序系統(tǒng)時(shí),可以直接升級到最新版本。使用 UIManager 類的 setLookAndFeel()方法可以設(shè)置不同的 LookAndFeel 外觀。實(shí)現(xiàn)過程:(1)在程序主類中編寫 createSysToolPanel()方法,用于創(chuàng)建系統(tǒng)工具的選項(xiàng)卡,在該選項(xiàng)卡中包含界面選擇,用戶搜索和系統(tǒng)操作三個(gè)部分。(2)在以 createSysToolPane()方法中創(chuàng)建界面選擇部分,該部分以列表控件顯示了兩種外觀選擇, 當(dāng)用戶選擇其中一種外觀并單擊“確定”按鈕之后,選擇的外觀會保存到首選項(xiàng)中,然后提示用戶重新運(yùn)行本軟件。當(dāng)單擊“搜索新用戶”按鈕時(shí),系統(tǒng)會根據(jù)用戶在系統(tǒng)設(shè)置界面所設(shè)置 IP 搜索范圍搜索所有計(jì)算機(jī)信息,并創(chuàng)建對應(yīng)的用戶對象,然后保存到數(shù)據(jù)庫中。當(dāng)用戶單擊“系統(tǒng)更新”按鈕時(shí),該按鈕的事件監(jiān)聽器會下載當(dāng)前最新版本的 程序,然后更新相應(yīng)的標(biāo)簽控件提示用戶更新信息。為避免等待搜索用戶的業(yè)務(wù)邏 輯過長而導(dǎo)致程序界面死鎖,監(jiān)聽器創(chuàng)建了另一個(gè)線程來執(zhí)行用戶搜索的業(yè)務(wù)。(7)編寫更新程序的 updateProject()方法,在該方法中分別創(chuàng)建本地程序和服務(wù)器最新程序文件對象,然后解析兩個(gè)文件的最后修改日期,如果服務(wù)器程序的最后修改日期比本地程序更新,那么獲取服務(wù)器文件的內(nèi)容并更新到本地文件中。相關(guān)技術(shù):用戶管理模塊主要用于顯示用戶列表,這個(gè)用戶列表是使用 JTree 樹控件實(shí)現(xiàn)的。為提高用戶列表的美觀性,用戶管理模塊必須實(shí)現(xiàn) TreeCellRenderer 創(chuàng)建實(shí)現(xiàn)顯示自定義圖標(biāo)的樹單元格誼染器,這樣就可以自定義樹節(jié)點(diǎn)的樣式了。實(shí)現(xiàn)過程:(1)創(chuàng)建 UserTreeRanderer 類,該類繼承 Jpanel 類成為一個(gè)面板控件,同時(shí)該類也實(shí)現(xiàn)了 TreeCellRenderer 接口成為樹節(jié)點(diǎn)的渲染器。(2)在 UserTreeRanderer 類中重寫父類 getTreeCellRendererComponent()方法,它負(fù)責(zé)渲染樹節(jié)點(diǎn)的界面樣式。(3)創(chuàng)建 ChatTree 類,該類繼承 Jtree 類實(shí)現(xiàn)自定義的樹控件,并使用了之前定義的 UserTreeRanderer 樹節(jié)點(diǎn)渲染器,它在構(gòu)造方法中初始化類的屬性,然后調(diào)用sortUsers()方法添加并顯示用戶列表。從數(shù)據(jù)庫中獲取所有的用戶對象,將除自己以外的用戶分別添加到用戶列表中。(5)在 ChatTree 類中編寫 delUser()方法,用于刪除當(dāng)前用戶列表中選擇的用戶基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)23對象。刪除用戶的流程圖: 圖 436 刪除用戶流程圖(6)在 ChatTree 類 中 編 寫 delUser()方法,它可以向用戶列表中添加新用戶。添加用戶的流程圖如下: 圖 437 添加用戶傳遞 IP 參數(shù)到數(shù)據(jù)庫判斷是否存在此用戶提示數(shù)據(jù)庫已存在此用戶,不需添加是IP 搜索并添加新用戶到數(shù)據(jù)庫否是否刪除調(diào)用 delUser()方法從數(shù)據(jù)庫獲取用戶信息并刪除。依照上面的步驟我們都可以運(yùn)行出對應(yīng)的功能。該模塊可以使用 UDP協(xié)議和系統(tǒng)信使兩種方式發(fā)送通信信息。UDP 協(xié)議是“用戶數(shù)據(jù)報(bào)協(xié)議” 。在用該協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送方只需要知道對方的 IP 地址和端口號就可以發(fā)送數(shù)據(jù),并不需要進(jìn)行連接,當(dāng)連接的遠(yuǎn)程主機(jī)端口號處于監(jiān)聽狀態(tài)時(shí),則 UDP 必須處于連接狀態(tài)。實(shí)現(xiàn)過程:(1)創(chuàng)建 TelFrame 類,該類必須繼承 JFrame 類實(shí)現(xiàn) Swing 的窗體,在類的控件聲明代碼段中定義窗體需要的所有控件,例如接收信息的文本框、輸入發(fā)送信息的文基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)25本框、發(fā)送按鈕、信使按鈕以及各種滾動面板等,另外還需要定義訪問數(shù)據(jù)庫的Dao 實(shí)例,在通信窗口右側(cè)顯示的用戶信息需要使用 Dao 實(shí)例從數(shù)據(jù)庫中獲取。 private User user。 private JScrollPane scrollPane = new JScrollPane()。private JScrollPane scrollPane_1 = new JScrollPane()。private JButton sendButton = new JButton()。private JPanel panel = new JPanel()。private final JCheckBox messageMode = new JCheckBox()。private JToggleButton toolFontButton = new JToggleButton()。private JButton button = new JButton()。private final JButton button_1 = new JButton()。private JPanel panel_2 = new JPanel()。private JLabel label = new JLabel()。private final JLabel label_1 = new JLabel()。private byte[] buf。private String ip。private TelFrame frame。private int rightPanelWidth = 148。該方法創(chuàng)建的所有窗體實(shí)例都會保存到從 Map 集合類的實(shí)例中,除非退出企業(yè)內(nèi)部通信系統(tǒng),否則窗體的實(shí)例對象會一直保存在這個(gè)集合夾中,并且用戶再次打開已存在的窗體時(shí),將直接從集合類中獲取,不再創(chuàng)建新的窗體實(shí)例。if (!(tmpIp)) {TelFrame frame = new TelFrame(ssArg, dp, treeArg)。(treeArg)。}()。return frame。(())。if (!()) {(true)。()。}}(3)在構(gòu)造方法中初始化 TelFrame 類的所有控件屬性,該構(gòu)造接受基于 JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)27DatagramSocket、DatagramPacket 和 ChatTree 類的三個(gè)參數(shù),分別是 Socket 服務(wù)、數(shù)據(jù)庫和用戶列表的實(shí)例對象,在通信窗體中需要使用它們。該方法首先從數(shù)據(jù)報(bào)中獲取發(fā)送的用戶 IP 地址,然后從數(shù)據(jù)庫中獲取該 IP 用戶的名稱,同時(shí)將這些信息顯示到信息文本框中,最后將數(shù)據(jù)報(bào)中的通信信息文本追加到信息文本框中。String hostAddress = ().getHostAddress()。info = info + ( + new Date().toLocaleString() + )。appendReceiveText(rText + \n, null)。當(dāng)用戶輸入通信信息,并單擊“信使”按鈕時(shí),該事件監(jiān)聽器的 actionPerformed()方法會調(diào)用 Resource 工具類的 sendMessager()方法將信息以系統(tǒng)信使方式發(fā)送到對方計(jì)算機(jī)。String sendInfo = (0, ())。)?;?JAVA 開發(fā)的企業(yè)內(nèi)部通信系統(tǒng)28}insertUserInfoToReceiveText(tree)。(user, sendInfo, frame)。()。}}} 若能正常運(yùn)行則應(yīng)出現(xiàn)如下的通信窗口:圖 43 通信窗口 測試方法及測定結(jié)果概述系統(tǒng)測試是軟件開發(fā)過程的重要組成部分,是用來確認(rèn)一個(gè)程序的品質(zhì)或性能是否符合開發(fā)之前所提出的要求的方法,是對軟件規(guī)范、軟件設(shè)計(jì)和編碼的最終復(fù)審
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1