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

正文內(nèi)容

嵌入式聊天系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)設(shè)計論文-資料下載頁

2024-11-29 10:17本頁面

【導(dǎo)讀】1.綜述QT的發(fā)展及其應(yīng)用領(lǐng)域;2.深入了解嵌入式聊天系統(tǒng)的設(shè)計方法及思想;3.綜述即時通信的發(fā)展及其技術(shù)支撐;6.訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力;7.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。顏色、設(shè)置字體大小及退出;1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計論文;[1]蔡子裕.基于ARM嵌入式無線點菜系統(tǒng)中斷的研究與設(shè)計[D].湖南:中南大學(xué),2020.[7]鄭莉,董淵.C++語言程序設(shè)計(第三版)[M].北京:清華大學(xué)出版社,2020.[8]陳英,梁建武.Linux基礎(chǔ)及應(yīng)用教程[J].北京:水利水電出版社,2020.[9]丁林松,黃麗琴.Qt4圖形設(shè)計與嵌入式開發(fā)[D].北京:人民郵電出版社,2020.[13](美)KenhA.Reek.C和指針[M].北京:人民郵電出版社,.方針,使我國產(chǎn)品由“中國制造”向“中國創(chuàng)造”邁進(jìn)的突破口。服務(wù)器端程序是通過vi編輯器,使用C、C++編寫并利用了MySql. 連接,如何進(jìn)行登陸和注冊,如何進(jìn)行私聊和群聊,等等。

  

【正文】 1所示。 圖 41 客戶機(jī)/服務(wù)器通信結(jié)構(gòu)示圖 在客戶端啟動后,客戶端計算得到本地網(wǎng)絡(luò)的廣播地址,進(jìn)行廣播查找服務(wù)器端,服務(wù)器接收到客戶端的廣播信息后返回服務(wù)器地址,則客戶端接收、驗證信息并記錄服務(wù)器端地址,然后客戶端啟動定時期,定時發(fā)送信息到服務(wù)器,以告知服務(wù)器自己在線,然后服務(wù)器返回在線用戶列表,服務(wù)器依靠客戶端發(fā)送的信息來更新維護(hù)在線用戶列表。在客戶端與服務(wù)器盡心數(shù)據(jù)交換,擁有了在線用戶列表后,就可以選擇 IP 進(jìn)行客戶端之間的點對點信息交流了。如果服務(wù)器不在線,則客戶端會提示用戶退出,在一定的時間后自動退出。 功能模塊 設(shè)計 根據(jù)上一階段中對聊天系統(tǒng)進(jìn)行的功能需求分析,可以確定該系統(tǒng)中應(yīng)包含的所有必需模塊,從而設(shè)計出聊天 系統(tǒng)的層次圖 ,其 如圖 42 所示。 北京郵電大學(xué)畢業(yè)設(shè)計 14 圖 42 聊天系統(tǒng)層次圖 客戶端功能模塊的 設(shè)計 連接 服務(wù)器 模塊: 客戶端 首先 需要輸入服務(wù)器的 IP和端口 號 來 連接已啟動的服務(wù)器, 當(dāng) 連接成功后 才能登陸賬號和在線的用戶聊天 或注冊新用戶;若連接失敗,則會登陸或注冊操作不能完成 。 注冊模塊: 用戶在連接服務(wù)器成功后,新 用戶 可以 注冊 聊天 賬號, 由于該系統(tǒng)中 用戶的 id 號 是 由系統(tǒng)自動分配的 , 因此, 只需填寫用戶相關(guān)個人信息就可實現(xiàn)注冊。 注冊成功會彈出對話框提示用戶 id號 。 該新用戶則可通過剛注冊的 id 號和設(shè)置的密碼來登陸聊天系統(tǒng)進(jìn)行聊天。 登錄 模塊: 用戶 在成功 連接服務(wù)器 后 , 系統(tǒng)用戶通過 填寫用戶的 賬號和密碼 來登錄該聊天系統(tǒng)。 如果輸入的賬號 與密碼不匹配 , 則彈出對話框提示輸入有誤 ,并且清空所填寫的 id 號和密碼,需要重新登陸;若 id 號和密碼匹配, 則成功登陸 ,進(jìn)入聊天界面開始聊天 ,同時所有在線用戶的在線用戶列表均會刷新,可以看到剛登陸成功的用戶信息 。 私聊模塊:私聊 模塊 實現(xiàn) 的是 用戶與另一用戶之間的 雙方 通信 ,其他用戶對于聊天信息不可見 , 在該模塊設(shè)計中 發(fā)起聊天的用戶可以雙擊在線信息列表來實現(xiàn)向另一用戶發(fā)起會話 。 群聊模塊:群聊 模塊 實現(xiàn) 的是當(dāng)某一用戶發(fā)起會話時,所有的用戶均可收到聊天信息,所有在線用戶可以共享聊天信息。 退出模塊: 當(dāng) 用戶 要 退出該系統(tǒng),則所有在線用戶的在線用戶列表都會刷新 ,在在線列表中將不會看到該用戶的信息,從而實現(xiàn)退出功能 。 設(shè)置字體模塊:用戶可以設(shè)置個性化的聊天文字,即可以設(shè)置聊天時 使用的字體 顯示的 顏色、大小及字體類型,也可以使字體加粗、傾斜及加下劃線。 界面模塊:該系統(tǒng)的聊天界面,大體上分為左右結(jié)構(gòu),左 邊的界面用來發(fā)送信息及顯示聊天信息,右邊的界面用來顯示在線用戶列 表。 嵌入式聊天系統(tǒng) 私聊 群聊 連接服務(wù)器 登錄 注冊 聊天 設(shè)置字體 退出 設(shè)置字體大 小 設(shè)置字體類型 設(shè)置字體加粗 設(shè)置字體傾斜 字體 加下劃線 設(shè)置字體顏色 獲得用戶列表 北京郵電大學(xué)畢業(yè)設(shè)計 15 服務(wù)器端功能模塊的劃分 用戶注冊模 塊:接受到客戶端發(fā)送的注冊請求后 ,向用戶的數(shù)據(jù)庫中增加新用戶的記錄,并自動分配用戶 id,然后將用戶 id 發(fā)送給客戶端。 用戶登錄模塊:接收到客戶端發(fā)送的登陸請求后 ,檢查用戶名和密碼是否匹配,并向客戶端發(fā)送匹配結(jié)果。 獲得在線用戶類表模塊:用戶登陸成功后,向服務(wù)器端發(fā)送獲得在線用戶列表的請求,查詢數(shù)據(jù)庫后并按一定的協(xié)議向客戶端發(fā)送響應(yīng)信息。 用戶私聊模塊:接收到客戶端發(fā)送的私聊請求后 ,向指定用戶轉(zhuǎn)發(fā)聊天信息。 用戶群聊模塊: 接收到客戶端發(fā)送的群聊請求后 ,向所有在線用戶轉(zhuǎn)發(fā)聊天信息。 用戶退出模塊:更新在用戶數(shù)據(jù)庫中該退出用戶的在線狀態(tài),然后向所有在線用戶發(fā)送在線用戶列表。 數(shù)據(jù)庫設(shè)計 本系統(tǒng)中設(shè)計的可抽象出來的數(shù)據(jù)模型是用戶( users) 數(shù)據(jù)模型。 服務(wù)器采用MySql 數(shù)據(jù) 庫 來保存用戶信息。 用戶 (users)表有如下字段:用戶 ID( id) 、昵稱( nickname)、密碼( passwd)、年齡( age)、出生日期( birthday)、在線狀態(tài)( state) ,其中 id 為主鍵。其 users表定義如 表 41 所示 。 表 41 users表結(jié)構(gòu) 字段名 字段類型 字段長度 初始值 是否為主鍵 描述 id int 11 0 是 用戶 ID nickname Varchar 10 NULL 否 昵稱 passwd Varchar 8 NULL 否 密碼 age smallint 6 NULL 否 年齡 birthday date — NULL 否 出生日期 state int 1 0 否 在線狀態(tài) 北京郵電大學(xué)畢業(yè)設(shè)計 16 5 系統(tǒng)的詳細(xì)設(shè)計 及編碼實現(xiàn) 客戶端實現(xiàn) 前期的需求 分析和總體設(shè)計,對嵌入式聊天系統(tǒng)的功能需求和模塊設(shè)計做出了 分析。在此基礎(chǔ)上,需對聊天系統(tǒng)進(jìn)行更深一步地分析。該系統(tǒng)的邏輯結(jié)構(gòu)如圖 51所示 。 輸 入 I P 和P o r t開 始運(yùn) 行 客 戶 端 程 序連 接 服 務(wù) 器 成 功注 冊輸 入 I d 和 密碼I d 與 密 碼 匹 配彈 出 出 錯 提 示 對 話框群 聊 私 聊輸 入 用 戶 信息昵 稱 與 密 碼 非空彈 出 申 請 成 功 I d 號的 對 話 框顯 示 聊 天 界 面退 出 聊 天 系 統(tǒng)結(jié) 束Y E SY E SN OY E SN ON O Y E SN ON OY E S 圖 51 程序流程圖 北京郵電大學(xué)畢業(yè)設(shè)計 17 連接服務(wù)器模塊 由于本系統(tǒng)設(shè)計是基于 C/S 架構(gòu)的,因此客戶端需成功連接服務(wù)器端 從而來實現(xiàn)其系統(tǒng)功能。 連接服務(wù)器模塊主要用到網(wǎng)絡(luò)編程 和多線程編程 的 相關(guān) 知識 。在具體實現(xiàn)時,客戶端要設(shè)計兩個線程,其中一個線程用來連續(xù)不斷接受服務(wù)器端的響應(yīng)消息,而另一線程則需向服務(wù)器端發(fā)送請求消息。在客戶端中實現(xiàn)網(wǎng)絡(luò)通信,主要用到 QT 中封裝好的類 QTcpSocket 的相關(guān)方法。 在該模塊中使用 自定義線程 類 MyThread(該類繼承 QThread 類) 主要用來不斷地接收服務(wù)器的消息并向主界面發(fā)送相應(yīng)的信號,在該類中連接服務(wù)器的主要代碼 如下: (thism_ip,thism_port)。 if(()){ qDebug() Connect to host success!。 }else{ qDebug() Connect To Host fail!。 return。 } emit connectToHostSuccess()。 在主 界面 中 ,當(dāng)點擊登錄 服務(wù)器的按鈕 m_serverBtn 后, 會 啟動自定義線程, 在自定義線程中會 設(shè)置要連接的服務(wù)器端 IP和 Port 為連接服務(wù)器做準(zhǔn)備 ,當(dāng)連接服務(wù)器成功后 會發(fā)送 connectToHostSuccess 信號,當(dāng)主線程收到該信號時會 執(zhí)行 相應(yīng)的槽 函數(shù) logServSuccess()函數(shù) ,該函數(shù)主要 作用 是使按鈕 m_serverBtn 顯示為 “ Log Success” 提示用戶登錄 服務(wù)器成功, 且 該按鈕 不可再點擊,其代碼如下 : connect(thism_serverBtn,SIGNAL(clicked()), this,SLOT(connServer()))。 connect(thism_thread,SIGNAL(connectToHostSuccess()), this,SLOT(logServSuccess()))。 void MyDialog::connServer() { QString ip=getIp()。 int port=getPort()。 thism_threadsetIpPort(ip,port)。 thism_threadstart()。 } void MyDialog::logServSuccess() { thism_serverBtnsetEnabled(false)。 thism_serverBtnsetText(Log Success)。 } 執(zhí)行 客戶端 程序后 顯示的 運(yùn)行界面 如 圖 52 所示 。 圖 52 登錄 界面 北京郵電大學(xué)畢業(yè)設(shè)計 18 輸入服務(wù)器端的 IP和 Port,點擊“ Log Server”按鈕,連接服務(wù)器成功后該按鈕顯示為“ Log Success”,且該按鈕不可用,其 連接服務(wù)器成功后的界面如 圖 53所示 。 圖 53 登錄 服務(wù)器成功界面 登錄 模塊 該模塊主要 是用于 已注冊用戶 通過輸入 id 號和密碼 登錄 聊天系統(tǒng) ,登錄 成功則 進(jìn)入 聊天 系統(tǒng),否則提示出錯信息。 在該模塊的設(shè)計中,其重點就是設(shè)定好客戶端與服務(wù)器進(jìn)行通信時使用的協(xié)議,即確定客戶端向服務(wù)器發(fā)送請求信息的格式,從而服務(wù)器端可以正確提取出請求類型和數(shù)據(jù)。該系統(tǒng)設(shè)計的登陸請求協(xié)議為“ Login:nickname:id”。 客戶端程序有兩個線程,主線程主要用來向服務(wù)器端發(fā)送請 求信息,次線程主要用來接收服務(wù)器端的響應(yīng)信息并發(fā)送給主線程。登錄 模塊的主線程會向服務(wù)器端發(fā)送登陸請求,服務(wù)器端接收到該請求后作出登陸成功或失敗的響應(yīng), 此時次線程會收到該響應(yīng)信息,若匹配則 會向主線程 發(fā)送信號 logSuccess()否則發(fā)送 logFail()信號 ,其主要代碼如下: while(1) { while(()==false) { ()。 (())。 } qDebug()Thread streamData:streamData。 int i = (@@@@)。 (0,i+4)。 recvData=(())。 qDebug()recvData。 if((check:)==true) { if((check:Ok)==true) { qDebug() Thread Login Success!\n 。 emit logScuccess()。 }else { qDebug()Thread Login Failed!\n。 emit logFail()。 } } 在主線程中, 當(dāng)?shù)卿?按鈕被點擊時會發(fā)送 clicked()信號,從而觸發(fā)槽函數(shù)checkLogin(),該槽函數(shù)主要功能首先向服務(wù)器端發(fā)送登錄 請求, 此時次線程會收到北京郵電大學(xué)畢業(yè)設(shè)計 19 該響應(yīng)信息并發(fā)送給主線程 ,然后主線程會觸發(fā)響應(yīng)槽函數(shù)做出響應(yīng) ,其主要代碼如下: connect(thism_login,SIGNAL(clicked()), this,SLOT(checkLogin()))。 connect(thism_thread,SIGNAL(logScuccess()), this,SLOT(loginSucceess()))。 connect(thism_thread,SIGNAL(logFail()), this,SLOT(recvLogFail()))。 void MyDialog::checkLogin() { QString nickname=thisgetNickName()。 QString passwd=thisgetPasswd()。 QString mesg=Login:+nickname+:+passwd。 thism_thread(QByteArray(()))。 if(!thism_thread()){ qDebug() write Login: failed!。 return。 }else{ qDebug() write Login: success!。 } } 在登錄成功后,登錄 界面會隱藏從而會進(jìn)入聊天主界面,在該界面中有一模塊是用于顯示在線用戶列表,而要實現(xiàn)該功能
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1