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

正文內(nèi)容

基于局域網(wǎng)的聊天程序設(shè)計-資料下載頁

2024-12-06 01:14本頁面

【導(dǎo)讀】程序采用典型的C/S(服務(wù)器。用socket編程設(shè)計網(wǎng)絡(luò)通訊。界面設(shè)計部分采用WindowsMFC. 本文最終設(shè)計了一個簡易版本的聊天軟件,包括登陸、退出、添加好友、消息收/發(fā)等功能。即時通訊軟件的出現(xiàn)正在逐漸改變?nèi)藗兊臏贤ㄅc交際方式。

  

【正文】 了高性能的訪問,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫、電子郵件和文件系統(tǒng)、文本和圖形、自定義業(yè)務(wù)對象等等。OLE DB 應(yīng)用程序編程接口的目的是為各種應(yīng)用程序提供最佳的功能,它并不符合簡單化的要求。您需要的 API 應(yīng)該是一座連接應(yīng)用程序和 OLE DB 的橋梁,這就是 ActiveX Data Objects (ADO)。 ADO 庫包含三個基本接口 :_ConnectionPtr 接口、 _CommandPtr 接口和_RecordsetPtr 接口。 _ConnectionPtr 接口返回一個記錄集或一個空指針。通常使用它來創(chuàng)建一個數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的 SQL 語句,如一個存儲過程。使用_ConnectionPtr 接口返回一個記錄集不是一個好的使用方法。對于要返回記錄的操作通常用 _RecordserPtr 來設(shè)計。而用 _ConnectionPtr 操作時要想得到記錄條數(shù)得遍歷所有記錄,而用 _RecordserPtr 時不需要。 _CommandPtr 接口返回一個記錄集。它提供了簡單的方法來執(zhí)行返回記錄集的存儲過程和 SQL 語句。在使 用 _CommandPtr 接口時,你可以利用全局_ConnectionPtr 接口,也可以在 _CommandPtr 接口里直接使用連接串。如果你只執(zhí)行一次或幾次數(shù)據(jù)訪問操作,后者是比較好的選擇。但如果你要頻繁訪問數(shù)據(jù)庫,并要返回很多記錄集,那么,你應(yīng)該使用全局 _ConnectionPtr 接口創(chuàng)建一個數(shù)據(jù)連接,然后使用 _CommandPtr 接口執(zhí)行存儲過程和 SQL 語句。 _RecordsetPtr 是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標控制等。同 _CommandPtr 接口一樣,它不一定要使用一個已經(jīng)創(chuàng)建的數(shù)據(jù)連接,可以用一個連接串代替連接指針賦給_RecordsetPtr 的 connection 成員變量,讓它自己創(chuàng)建數(shù)據(jù)連接。如果你要使用多個記錄集,最好的方法是同 Command 對象一樣使用已經(jīng)創(chuàng)建了數(shù)據(jù)連接的全局 _ConnectionPtr 接口,然后使用 _RecordsetPtr 執(zhí)行存儲過程和 SQL 語句。 在下面的代碼分析中將詳細介紹 ADO 怎樣利用這幾個接口來對數(shù)據(jù)庫 SQL進行操作。 使用 ADO 操作 SQL 代碼分析 引入 ADO庫文件 使用 ADO 前必須在工程 的 頭文件里用直接引入符號 import 引入ADO 庫文件 ,以使編譯器能正確編譯。代碼如下所示: 用 import 引入 ADO 庫文件 importc:\programfiles\monfiles\system\ado\no_namespaces rename(EOF adoEOF) 這行語句聲明在工程中使用 ADO,但不使用 ADO 的名字空間,并且為了避免常數(shù)沖突,將常數(shù) EOF 改名為 adoEOF?,F(xiàn)在不需添加另外的頭文件,就可以使用 ADO 接口了 。 初 始化 OLE/COM 庫環(huán)境 必須注意的是, ADO 庫是一組 COM 動態(tài)庫,這意味應(yīng)用程序在調(diào)用 ADO 前,必須初始化 OLE/COM 庫環(huán)境。在 MFC 應(yīng)用程序里,一個比較好的方法是在應(yīng)用程序主類的 InitInstance 成員函數(shù)里初始化 OLE/COM 庫環(huán)境。 BOOL CXFClientApp:: InitInstance() { if(!AfxOleInit())//這就是初始化 COM庫 { AfxMessageBox(“ OLE 初始化出錯 !” )。 return FALSE。 } 判斷數(shù)據(jù)庫的存在 使用 USE 語句,成功了就存在;不成功,就不存在。 代碼如下: try{ m_pConnectExecute ( _bstr_t(USE INSURANCE_2021),NULL, adCmdText│ adExecuteNoRecords )。 } catch (__error amp。e) { blSuccess=FALSE。 CString str=數(shù)據(jù)庫 INSURANCE_2021 不存在! \n。 str+=()。 ::MessageBox(NULL,str,警告 ,MB_OK │ MB_ICONWARNING)。 } 連接數(shù)據(jù)庫 通過 MS SQL SERVER 2021 創(chuàng)建數(shù)據(jù)庫名為 XF,接著在 ODBC 中添加數(shù)據(jù)源,數(shù)據(jù)源名為 XF, 定義一個指向 Connection 對象的指針 :_ConnectionPtr _pConnection。連接代碼如下: HRESULT hr。 try { hr = ()。// 創(chuàng)建Connection 對象 if(SUCCEEDED(hr)) { hr = m_pConnectionOpen(DSN=XF。UID=sa。PWD= ,- 1)。//連接數(shù)據(jù)庫 } } catch(__error e)//捕捉異常 { CString errormessage。 ( 連 接 數(shù) 據(jù) 庫 失 敗 !\r\n 錯誤信息 :%s,())。 AfxMessageBox(errormessage)。//顯示錯誤信息 } 判斷表的存在 判斷一個表是否存在,可以用是否成功地打開它來判斷, 代碼如下: try{ m_pRecordsetOpen(_variant_t(mytable), _variant_t((IDispatch *)m_pConnection,true), adOpenKeyset, adLockOptimistic, adCmdTable)。 } catch (__error amp。e) { ::MessageBox(NULL,該表不存在。 ,提示 ,MB_OK │ MB_ICONWARNING)。 } 增加記錄 向通過 MS SQL SERVER 2021 在數(shù)據(jù)庫 XF 中建立的表內(nèi)增加記錄,主要代碼如下所示: CString strSQL。 (INSERT INTO new(ID,username,old) VALUES (1001,xuanfeng39。,23),1,1)。 m_pConnectionExecute((_bstr_t)strSQL,amp。RecordsAffected,adCmdText)。 統(tǒng)計記錄數(shù)目 統(tǒng)計指定表內(nèi)記錄的數(shù)目,代碼如下: _RecordsetPtr m_pRecordset。 _variant_t RecordsAffected。 m_pRecordset =m_pConnectionExecute(SELECT COUNT(*) FROM new where ID 0,amp。RecordsAffected,adCmdText)。 _variant_t vIndex = (long)0。 _variant_t vCount = m_pRecordsetGetCollect(vIndex)。 ///取得第一個字段的值放入 vCount 變量 m_pRecordsetClose()。//關(guān)閉記錄集 CString Message。 (共有 %d 條記錄 ,)。 AfxMessageBox(Message)。//顯示當(dāng)前記錄條數(shù) 更新記錄信息 修改記錄信息,如用戶信息的修改,下面代碼說明了在用戶原來年齡上增加一歲: m_pConnectionExecute(UPDATE users SET old = old+1,amp。RecordsAffected,adCmdText)。 關(guān)閉記錄 在打開記錄集進行操作之后就必須關(guān)閉記錄集,否 則進行別的操作的話會出現(xiàn)不必要的錯誤,關(guān)閉代碼如下: m_pRecordsetClose()。///關(guān)閉記錄集 ()。 第六章、總結(jié) 經(jīng)過了整整 3 個月的忙碌,終于完成了畢業(yè)設(shè)計。在這段時間里體驗了無數(shù)的酸甜苦辣,從解決不了細小問題的苦惱到問題最終解決的喜悅,一直伴隨著整個設(shè)計過程。整個設(shè)計過程是不斷學(xué)習(xí),不斷發(fā)現(xiàn)問題、分析問題、解決問題的過程。使我受益良多。設(shè)計期間有許多的感觸、想法、經(jīng)驗,教訓(xùn),對以后的學(xué)習(xí)、工作有 很大的益處。 本設(shè)計在查閱了大量的文獻后進行理論研究的同時,借鑒了其他聊天程序、聊天程序的優(yōu)缺點,在此基礎(chǔ)上展開了研究工作,歸納起來,論文取得的成果和創(chuàng)新點主要有以下幾個方面: 1) 通過網(wǎng)絡(luò)編程,設(shè)計了基本的聊天功能和文件傳輸功能。 2)將數(shù)據(jù)庫編程和網(wǎng)絡(luò)編程相結(jié)合,利用 VC++ 這一軟件進行 MFC編程,將在大學(xué)里學(xué)到的知識進行了很好的綜合。 3)利用 TCP/IP 協(xié)議中的 TCP協(xié)議,即面向連接的服務(wù),進行數(shù)據(jù)的傳輸,對網(wǎng)絡(luò)中數(shù)據(jù)的傳輸過程。 總結(jié) 通過對這個畢業(yè)設(shè)計的開發(fā)和學(xué)習(xí),使自己 對軟件開發(fā)又有了新的理解,增加了自己的開發(fā)能力,也深刻理解了團隊合作的精神。本次開發(fā),使我不僅學(xué)了 C++、數(shù)據(jù)結(jié)構(gòu)、 sql、 winsock 技術(shù),還對網(wǎng)絡(luò)編程進行了深入的學(xué)習(xí),總結(jié)出了一些網(wǎng)絡(luò)編程的特點,可以為今后的開發(fā)提供參考。 最后,要感謝老師對我的細心指導(dǎo),同時感謝我的同學(xué)對我的寶貴建議。 第七章、參考書目 [1] David J. Kruglinski, Programming Visual C++.1998. [2] 施煒、李錚、秦潁, Windows Sockets 規(guī)范和應(yīng)用 — Windows 網(wǎng)絡(luò)編程接口 . 1996. [3]Anthony Jones and Jim Ohlumd,TCP/IP 詳解 卷一:協(xié)議 (英文版 ). 機械工業(yè)出版社 ,2021. [4] 王罡 林立志 , 基于 Windows 的 TCP/IP 編程 .清華大學(xué)出版社, 2021. [5] 蔣東興等 ,Windows Sockets 網(wǎng)絡(luò)程序設(shè)計大全 . 清華大學(xué)出版社, 1999. [6] 薩師煊 , 數(shù)據(jù)庫系統(tǒng)概論 .高等教育出版社, 2021. [7]侯捷,深入簡出 MFC .1998 . [8]Jeff Prosise,MFC Windows 程 序設(shè)計(第 2版)。清華大學(xué)出版社, 1999.
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1