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

正文內(nèi)容

基于java技術(shù)的即時(shí)聊天系統(tǒng)實(shí)現(xiàn)-在線(xiàn)瀏覽

2025-01-10 22:01本頁(yè)面
  

【正文】 軟件的設(shè)計(jì)過(guò)程中 ,才能夠理解到理論與現(xiàn)實(shí)的差距, 遇到棘手問(wèn)題, 應(yīng)該快速查閱資料快速攻破。 Java 技術(shù)簡(jiǎn)介 Java 是一種程序設(shè)計(jì) 語(yǔ)言, 主要 應(yīng)用于 Android 應(yīng)用、 JSP 網(wǎng)站、 PC 和 游戲控制臺(tái) 等領(lǐng)域 。 本次課題中主要用到 Swing工具包 中 JFrame 類(lèi),采用 Java 和 Windows 混合界面 風(fēng)格 ,作為 開(kāi)發(fā) 程序 的 外觀風(fēng)格 來(lái) 設(shè)計(jì)聊天系統(tǒng)界面 ; 其次, 使用 Java Socket 編程 技術(shù)實(shí)現(xiàn)系統(tǒng)之間 的 網(wǎng)絡(luò)通信 [2]。 MyEclipse 的功能強(qiáng)大, 可以集成 多種 語(yǔ)言 開(kāi)發(fā) 插件 ,進(jìn)行相應(yīng) 開(kāi)發(fā)語(yǔ)言 的開(kāi)發(fā)工作 。 它的代碼是開(kāi)源的 , 用戶(hù)可以在其基礎(chǔ)上根據(jù) 自己的需要進(jìn)行二次開(kāi)發(fā) ; MySQL 的體積小 、速度快、成本低, 因此一些 小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為 其 網(wǎng)站 的 數(shù)據(jù)庫(kù) 。項(xiàng)目流程化能夠促進(jìn)項(xiàng)目的監(jiān)管、人員的合理分配。 功能 性 需求分析 即時(shí)聊天系統(tǒng) 在功能上 主要能夠?qū)崿F(xiàn)如今人們經(jīng)常用到的各種即時(shí)通訊軟件的 一些基本交流聊天的功能,主要的功能性需求如下: 1. 登錄界面: 注冊(cè) 用戶(hù)能夠進(jìn)行登錄, 通過(guò)連接數(shù)據(jù)庫(kù)進(jìn)行判斷用戶(hù)是否能夠進(jìn)入好友列表界面 。 3. 好友列表界面: 用戶(hù)能夠 自由 添加、刪除好友, 移動(dòng) 黑名單 等 ; 同時(shí) 能夠?qū)崿F(xiàn)雙擊好友,能夠進(jìn)入對(duì)應(yīng)好友聊天窗口等 4. 聊天界面:能夠?qū)⒘奶斓男畔?、表情等顯示 到對(duì)應(yīng) 的 聊天界面上;能夠發(fā)送 文件、音樂(lè)、視頻等 ; 能夠?qū)α奶斓臍v史記錄進(jìn)行 簡(jiǎn)單的查看 、翻頁(yè) 等 。 非功能性需求 分析 1. 操作系統(tǒng): Windows7 旗艦版 ; 2. 硬盤(pán): 500G; 3. 開(kāi)發(fā)平臺(tái): MyEclipse2020; 4. 數(shù)據(jù)庫(kù): MySQL。 功能模塊 設(shè)計(jì) 根據(jù)系統(tǒng)分 析的結(jié)果 畫(huà)出系統(tǒng) 功能模塊 圖 , 對(duì)各個(gè)模塊進(jìn)行細(xì)分,確定模塊相互 結(jié)構(gòu)關(guān)系。 1. ER 圖 設(shè)計(jì): 分析確定各個(gè)數(shù)據(jù)表的字段、數(shù)據(jù)類(lèi)型、關(guān)系等,畫(huà)出 ER 圖。 表 4 1 用戶(hù)信息表 序 列 號(hào) 字段 描述 類(lèi)型 空 額外 1 id 用戶(hù)編號(hào) int(11) 否 主鍵(自增) 2 name 用戶(hù)名 varchar(16) 否 3 zhanghao 用戶(hù)帳號(hào) varchar(11) 否 唯一 4 password 用戶(hù)密碼 varchar(32) 否 5 sex 性別 varchar(2) 否 6 birthday 出生年月 varchar(32) 否 7 address 地址 varchar(32) 否 表 4 2 好友信息表 序列號(hào) 字段 描述 類(lèi)型 空 額外 1 id 編號(hào) int(11) 否 主鍵(自增) 2 zhanghao 用戶(hù)帳號(hào) varchar(11) 否 外鍵 3 friendId 好友帳號(hào) varchar(255) 4 blackname 黑名單 varchar(255) 表 4 3 歷史記錄表 序列號(hào) 字段 描述 類(lèi)型 空 額外 1 id 編號(hào) int(11) 否 主鍵(自增) 2 zhanghao 用戶(hù)帳號(hào) varchar(32) 否 3 who 屬于者 varchar(11) 否 外鍵 5 4 sendtime 發(fā)送時(shí)間 varchar(32) 否 5 font 字體類(lèi)型 varchar(64) 否 6 record 發(fā)送類(lèi)容 varchar(255) 否 7 pic 表情 varchar(255) 5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 編碼階段 是將軟件設(shè)計(jì)階段的各種描述轉(zhuǎn)變成程序代碼,在編碼階段應(yīng)該注意編程語(yǔ)言的選擇,在本次課題中,我們使用的是 Java 語(yǔ)言。 下面簡(jiǎn)單的 介紹下如何設(shè)計(jì)軟件的界面。 上 部 是一個(gè) JPanel,內(nèi)置 一個(gè) JLabel;中間是根據(jù)需要放置 JLabel、JTExtField、 JPasswordField;最下方放置一個(gè) JButton。S (0,5,428,159)。(70, 165, 30, 30)。(110, 163, 130, 30)。(70, 200, 30, 30)。(255, 163, 52, 30)。(110, 200, 130, 30)。(255, 200, 52, 30)。 (85, 270, 195, 30)。 對(duì)于 JLabel、 JTExtField、JPasswordField 如何放置就不講太多了,在這里主要講下新引入的知識(shí)點(diǎn) HashMap 集合 和Graphics 繪畫(huà)技術(shù) 。 通過(guò) For 循環(huán)創(chuàng)建 每 個(gè)省份按鈕 ,并 添加 addActionListener 監(jiān)聽(tīng)器,獲取其對(duì)應(yīng) 省份代號(hào),再通過(guò) get 方法向 HashMap 索要其對(duì)應(yīng)的 ID 值。 FOR(INT i=0。i++){(province[i], ar[i])。 ((), 0, City, 0, ().length)。i().length。 } } Graphics 可以對(duì)其進(jìn)行重寫(xiě),調(diào)用其方法進(jìn)行繪畫(huà),對(duì)于本界面中的驗(yàn)證碼,正是運(yùn)用到此類(lèi),可以根據(jù)自己想要的樣式進(jìn)行繪制。 FOR (INT i = 0。 i++) {//通過(guò)循環(huán)繪制驗(yàn)證碼 String stm = (codeSequence[()])。green = (255)。(stm, (i + 1) * X, CodeY)。 圖 5 2 注冊(cè)界面 修改密碼界面 密碼修改界面(圖 37)是一個(gè)重要的組成部分,用戶(hù)在此能夠進(jìn)行密碼 修改 、 重置 密碼;在 本界面中同樣的運(yùn)用到以上界面的基本布局界面的組件,同樣的引入了新的組件JTabbedPane。 從密碼修改界面能夠開(kāi)出它擁有兩個(gè)界面提供用戶(hù)使用。(null)。(null)。(修改密碼 ,Sjp0)。 圖 5 3 密碼修改界面 好友列表界面 在好友列表界面 (圖 38) 中,引入 一個(gè)新的組件 JTree。 JTree 是許多初學(xué)者在做類(lèi)似系統(tǒng)軟件的首選,對(duì)于 Java默認(rèn)的 Tree 節(jié)點(diǎn)、 把柄 的圖標(biāo)是不美觀的,我們需要對(duì)其進(jìn)行重寫(xiě)。 (close) }return this。 8 圖 5 4 好友列表界面 聊天窗口界面 聊天窗口界面 ( 39) 是即時(shí)聊天系統(tǒng)里最重要的部位,在這我們能夠進(jìn)行交流,發(fā)送表情,發(fā)送文件,音樂(lè),視頻等,它是軟件中的靈魂。 在這個(gè)普通的界面中運(yùn)用到了 JWindow、 JTextPane、和 JSplitPane 組件。 JWindow 是一個(gè) 窗口 容器。 JSplitPane 分隔 組件。 代碼如下: JLabel jl[]=new JLabel[105]。 for(i=0。i++){ file_names=img/+i+.gif。 jl[i].setToolTipText(i+)。 (())。 (jl[i])。 功能實(shí)現(xiàn) 在實(shí)現(xiàn)功能之前我們需要做一些必要的 共同 類(lèi) 。 實(shí)現(xiàn)登錄 實(shí)現(xiàn)登錄功能還是一個(gè)比較簡(jiǎn) 單的功能,只需要我們獲取到用戶(hù)的登錄帳號(hào)和登錄密碼,通過(guò)對(duì)象流 將對(duì)象 ( u) 給 傳遞給 服務(wù)器,服務(wù)器 通過(guò) Get 方法獲取帳號(hào)和密碼,然后從數(shù)據(jù)庫(kù)中查詢(xún) 用戶(hù)的密碼 字段 信息 進(jìn)行對(duì)比,將對(duì)比的后的信息再通過(guò)對(duì)象流的方式傳遞給客戶(hù)端,再進(jìn)行相應(yīng)的處理。 (().Trim())。 ()。 if((M)){ QqFriendListFrame PeopleList =new QqFriendListFrame(M. getUserNo ())。 ObjectOutputStream oos = null。 } catch (IOException e1) { ()。//做一個(gè) Message ()。//指明我要的是這個(gè) 帳號(hào) 的 全部 好友 } 實(shí)現(xiàn)注冊(cè) 注冊(cè)功能需要將用戶(hù)在注冊(cè)界面的填寫(xiě)信息和相應(yīng)的選擇信息,通過(guò)對(duì)象流的形式將對(duì)象( u)傳遞給服務(wù)器,服務(wù)器調(diào)用數(shù)據(jù)庫(kù)插入代碼即可。 String []Str=new String[6]。 Str[0]=()。 Str[2]=((()))。 Str[4]=().toString()+().toString()+edItem().toString()。 (Str)。 (Str)。 ClientUser qqClientUser=new ClientUser()。 new ClientLogin()。 (m[0])。 ((m[1]))。 ()。 if((M)){ dispose()。 } 11 添加、刪除好友 添加好友相對(duì)于刪除好友,是一件比較麻煩的事情,具體的思路是:當(dāng)用戶(hù)在添加好友輸入框中輸入想要添加好友的帳號(hào),然后通過(guò)對(duì)象流將對(duì)象( m)傳送給服務(wù)器,服務(wù)器通過(guò)后臺(tái) HashMap 集合 獲取好友的線(xiàn)程,然后將對(duì)象傳遞給好友。 代碼如下: public HashMap Thread=new HashMapString, ServerConnecClient()。 } public static ServerConnectClient getClient(String No){ return (No)。對(duì)于通常系統(tǒng)的黑名單,你將對(duì)方添加至黑名單,但對(duì)方并未將你刪除 或者也添加至黑名單;而且本系統(tǒng)的數(shù)據(jù)庫(kù)中的好友字段在添加好友的時(shí)候只是將要添加好友的帳號(hào)追加到自己的好友字段中,好友的字段不做任何 的處理, 所以在添加黑名單的時(shí)候,你不知道自己的好友字段中是否有此帳號(hào); 本著簡(jiǎn)單的原則,我們只要將你想添加黑名單的帳號(hào)追加到你的黑名單字段,對(duì)于其在你好友字段中不做任 何的處理。 代碼如下: public ArrayList getfriend(String userId){ String sql1=select friendId from friend where zhanghao=+userId+ limit 1。%+userId++%39。 SqlHelper sqlhelp=new SqlHelper()。 ArrayList al=new ArrayList()。 Object[]tr2=(Object[])(1)。i。 (tr1[i])。j。 if(tr1[i].equals(tr2[j])){ (tr1[i])。 ()。 (str2)。 } 多對(duì)多聊天 多對(duì)多的聊天是本系統(tǒng)的一個(gè)比較亮點(diǎn)的設(shè)計(jì),用戶(hù)能夠在同一時(shí)間跟多個(gè)用戶(hù)進(jìn)行聊天,對(duì)于聊天的內(nèi)容不會(huì)錯(cuò)亂。 代碼如下: Msges S=new Msges ()。 (()+ +(), qqChat)。 if(!()){ (true)。//顯示 } 顯示表情 在本聊天系統(tǒng)中,用戶(hù)能夠發(fā)送表情圖片,然而圖片跟文字是不一樣的,不能夠直接的顯示在聊天窗口上的, 也不能直接的傳送給好友, 也不能將其直接的存放在數(shù)據(jù)庫(kù)中;因此,我專(zhuān)門(mén)給顯示表情編寫(xiě)了一些必要的函數(shù)。 for(int i = 0。 i++){ if(().equals(icon)){ Icon icon = (().getAttributes())。 PictureInfo pictureInfo= new PictureInfo (i,(()))。 (i++ ()++)。 FOR(Int i = 0 。 i++){ String[] pp = PicInfo [i].split([])。 (Spic)。 對(duì)于如何發(fā)送文件,這是個(gè)值得探討的問(wèn)題。考慮到我們不可能專(zhuān)門(mén)為發(fā)送文 件再寫(xiě)一個(gè)服務(wù)器端,因此,對(duì)于文件的發(fā)送我們?cè)俅蔚氖褂脤?duì)象流的形式進(jìn)行發(fā)送,同樣文件的發(fā)送也可以多對(duì)多的發(fā)送,不會(huì)造成錯(cuò)亂。此時(shí),文件的讀取方式、發(fā)送方式已經(jīng)確定,剩下的 就是寫(xiě)入方式了,既然我們采用的是字節(jié)流的方式讀取的,就應(yīng)該用字節(jié)流的方式進(jìn)行寫(xiě)入,如何采用字符流的方式寫(xiě)入,會(huì)出現(xiàn)一些意想不到的問(wèn)題,例如:文本文 件可能會(huì)有亂碼,一些圖片、 exe 文件等打不開(kāi)的問(wèn)題 。 byte []bytes=new byte[1024*4]。 ObjectOutputStream pos=new ObjectOutputStream(getOutputStream())。 } 文件的寫(xiě)入: FileOutputStream ps=new FileOutputStream(()+\\+(),true)。 歷史記錄 歷史記錄是每一個(gè)即時(shí)聊天系統(tǒng)必備的功能,本系統(tǒng)的歷史記錄做的相對(duì)比較簡(jiǎn)單,除了能夠 在每一頁(yè) 顯示 規(guī)定的 記錄 條數(shù)之外 ,還能夠顯示當(dāng)前頁(yè)數(shù)和總頁(yè)數(shù),用戶(hù)能夠通過(guò)點(diǎn)擊上一頁(yè)和下一頁(yè)進(jìn)行翻看歷史記錄。 For(Int i=0。i++){ String []str=(String[]) (i)。 String msg=str[0]+
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1