【正文】
ndNode(HTREEITEM hParent, int ParentID){_ConnectionPtr pCon。 //定義連接對(duì)象_RecordsetPtr pRecord。 //定義記錄集對(duì)象……dwData = MAKELPARAM(nID, ParentID)。(hTemp, dwData)。FindNode(hTemp, nID)。pRecordMoveNext()。}}宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)225 客戶端關(guān)鍵技術(shù) 客戶端概述用戶使用客戶端登錄服務(wù)器,然后可以和其他登錄的用戶進(jìn)行通信??蛻舳酥鞔绑w模塊是用戶有登陸權(quán)限登錄服務(wù)器后的界面,在主窗體界面中,主要有一個(gè)樹形列表,樹形列表中顯示了所有的組織結(jié)構(gòu)及結(jié)構(gòu)下的成員。并且在主窗體上可以調(diào)用系統(tǒng)設(shè)置和修改密碼等其他模塊。客戶端主界面如圖 所示。 客戶端的關(guān)鍵技術(shù)ThreadProc 是向服務(wù)器端發(fā)送連接請(qǐng)求的線程,CS_CONNECTING,然后設(shè)置超時(shí)時(shí)間,如果超時(shí)需要重新連接,連接時(shí)將用戶名和密碼都會(huì)發(fā)送到服務(wù)器端。發(fā)送請(qǐng)求時(shí)消息包的類型設(shè)置為 PT_LOGINREQUEST,服務(wù)器端會(huì)根據(jù)這個(gè)類型進(jìn)行相應(yīng)的處理。在 LoginSrv()函數(shù)中調(diào)用 InitSocket 初始化網(wǎng)絡(luò)套接字,然后啟動(dòng)ThreadProc 線程向服務(wù)器發(fā)送登錄請(qǐng)求。OnTimer 是定時(shí)器,其可以判斷CS_CONNECT、CS_UNCONNECT、CS_CONNECTING 這 3 種狀態(tài);通過(guò)計(jì)數(shù)標(biāo)量 m_mCount 判斷是否連接中斷,根據(jù)連接狀態(tài)改變系統(tǒng)托盤圖標(biāo)的樣式。初始化 m_ClientSock 和 m_UdpSock 套接字,將 IP 地址都綁定為本機(jī) IP 地址,然后隨機(jī)選用端口,隨機(jī)選用端口使用 goto 語(yǔ)句形成了一個(gè)循環(huán),直到能正確獲得端口后循環(huán)停止,并且將套接字都設(shè)置為異步通信。在 OnNetEvent 中主要處理分包,以及對(duì)消息類型為PT_TEST、PT_USERINFO 、PT_DISCOUNT、PT_LOGINACCEPT 、PT_LOGINDENY、PT_LINEACCEPT、PT_UPDATEPASSSUCCESS、PT_PT_UPDATEPASSFAILD 數(shù)據(jù)包進(jìn)行處理,主要消息類型如圖 所示。如果接收到PT_TEST 的數(shù)據(jù)包,需要向服務(wù)器回復(fù)心跳測(cè)試。如果是 PT_USERINFO 的消息包,需要播放聲音提示并在主窗體的樹形列表改變新登錄用戶的圖標(biāo)。宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)23P T _ T E S T 心跳測(cè)試P T _ U S E R I N F O 新用戶登錄P T _ D I S C O U N T 客戶端斷開(kāi)連接P T _ D I S C O U N T 客戶端斷開(kāi)連接P T _ L O G I N D E N Y 用戶名或密碼不正確P T _ L O G I N E D 用戶在其他地點(diǎn)登錄P T _ L O G I N A C C E P T 用戶名和密碼驗(yàn)證通過(guò)P T _ L I N E A C C E P T 服務(wù)器發(fā)送在線用戶信息分析消息的類型圖 消息類型在 OnOrgMsg 中主要接收組織結(jié)構(gòu)信息,如果組織機(jī)構(gòu)信息比較大,一次只能接收固定大小的內(nèi)容,所以設(shè)計(jì)了分包處理機(jī)制,當(dāng)數(shù)據(jù)接收完整后,通過(guò) HandleOrgData 函數(shù)進(jìn)行處理。 OnOrgMsg 處理分包的流程如圖 所示。是否是完整的數(shù)據(jù)結(jié)構(gòu)繼續(xù)接收數(shù)據(jù)繼續(xù)接收數(shù)據(jù)合成數(shù)據(jù)結(jié)構(gòu)繼續(xù)接收數(shù)據(jù)合成數(shù)據(jù)包處理接收到的數(shù)據(jù)是否是完整的數(shù)據(jù)結(jié)構(gòu)是否是完整的數(shù)據(jù)包否否否是是是圖 處理分包流程如果是第一次處理讀取的數(shù)據(jù),可以分為包結(jié)構(gòu)是否完整兩種情況。將實(shí)宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)24現(xiàn)對(duì)讀取的數(shù)據(jù)進(jìn)行分析和處理。讀取部分?jǐn)?shù)據(jù)包結(jié)構(gòu)后,需要繼續(xù)判斷數(shù)據(jù)包結(jié)構(gòu)是否完整。其中OnOrgMsg()函數(shù)中關(guān)于數(shù)據(jù)包結(jié)構(gòu)是否完整的處理過(guò)程。獲取完整的數(shù)據(jù)結(jié)構(gòu)后,就需要判斷數(shù)據(jù)包是否已經(jīng)接收完畢,OnOrgMsg()函數(shù)中關(guān)于數(shù)據(jù)包是否完整的處理過(guò)程。RecTaskProc 是接收消息并處理的線程。處理流程如圖 所示。判斷數(shù)據(jù)包順序等待數(shù)據(jù)判斷數(shù)據(jù)類型P T _ F I L EP T _ S T R E A M 顯示數(shù)據(jù)處理分包數(shù)據(jù)是否有數(shù)據(jù)數(shù)據(jù)小有分包是否 接收消息并處理的處理流程判斷是否為第一個(gè)接收的數(shù)據(jù)包,如果是第一個(gè)接收的數(shù)據(jù)包,需要播放聲音提示,并找到對(duì)話框進(jìn)行交互。如果不是第一個(gè)接收的數(shù)據(jù)包,那么就進(jìn)行分包處理。OnUdpMsg 用來(lái)接收 UDP 消息并處理。函數(shù)中使用 recvfrom 接收消息,如果接收到 PT_REQUESTUDPPORT,就創(chuàng)建新套接字,然后將端口信息發(fā)送過(guò)去。如果有 PT_TEXT 類型的數(shù)據(jù),就直接進(jìn)行顯示。宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)256 系統(tǒng)測(cè)試 軟件測(cè)試基礎(chǔ)理論軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)的一批測(cè)試用例,并利用這些測(cè)試用例運(yùn)行程序以及發(fā)現(xiàn)錯(cuò)誤的過(guò)程,即執(zhí)行測(cè)試步驟。軟件測(cè)試就是在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼實(shí)現(xiàn)的最終審查,它是軟件質(zhì)量保證的關(guān)鍵步驟。測(cè)試的含義:所謂測(cè)試,首先是一項(xiàng)活動(dòng),在這項(xiàng)活動(dòng)中某個(gè)系統(tǒng)或組成的部分將在特定的條件下運(yùn)行,結(jié)果將被觀察和記錄,并對(duì)系統(tǒng)或組成部分進(jìn)行評(píng)價(jià)。測(cè)試活動(dòng)有兩種結(jié)果:找出缺陷和故障,或顯示軟件執(zhí)行正確。測(cè)試是一個(gè)或多個(gè)測(cè)試用例的集合。測(cè)試的意義:系統(tǒng)測(cè)試是管理信息系統(tǒng)的開(kāi)發(fā)周期中的一個(gè)十分重要環(huán)節(jié)。盡管在系統(tǒng)開(kāi)發(fā)周期的各個(gè)階段均采取了嚴(yán)格的技術(shù)審查,但依然難免會(huì)留下錯(cuò)誤,如果沒(méi)有在投入運(yùn)行前的系統(tǒng)測(cè)試階段被發(fā)現(xiàn)并糾正,問(wèn)題遲早會(huì)在運(yùn)行中暴露出來(lái),到那時(shí)要糾正錯(cuò)誤將會(huì)付出更大的代價(jià)。系統(tǒng)測(cè)試占用的時(shí)間、花費(fèi)的人力和成本占軟件開(kāi)發(fā)的很大比例。 系統(tǒng)測(cè)試在設(shè)計(jì)系統(tǒng)的過(guò)程中,難免會(huì)存在一些錯(cuò)誤。在程序編寫過(guò)程中,一些程序語(yǔ)句的語(yǔ)法錯(cuò)誤,在程序運(yùn)行時(shí)自動(dòng)提示,可以立即糾正,因此,這類錯(cuò)誤比較容易發(fā)現(xiàn)及改正。但另一類錯(cuò)誤是在程序執(zhí)行時(shí)由于不正確的操作或?qū)δ承?shù)據(jù)的計(jì)算公式的邏輯錯(cuò)誤導(dǎo)致的錯(cuò)誤結(jié)果。這類錯(cuò)誤隱蔽性強(qiáng),因此,對(duì)這一類動(dòng)態(tài)發(fā)生的錯(cuò)誤的排查是耗時(shí)費(fèi)力的。測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。為了保證測(cè)試質(zhì)量,所以制定了測(cè)試方案如下:宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)26測(cè)試一:登錄模塊測(cè)試如圖 所示。方 法: 功能模塊測(cè)試方法目 的: 測(cè)試登錄模塊正確性預(yù)期結(jié)果: 有出錯(cuò)警告過(guò) 程: 在登錄模塊中,輸入錯(cuò)誤用戶名或密碼,直接登錄測(cè)試結(jié)果: 無(wú)法登錄,有出錯(cuò)警告比 較: 與預(yù)期結(jié)果相當(dāng)結(jié) 論: 正確圖 登錄模塊測(cè)試二:組織信息管理模塊測(cè)試如圖 所示。方 法: 功能模塊測(cè)試方法目 的: 組織信息管理模塊的正確性預(yù)期結(jié)果: 成功完成各項(xiàng)信息添加、修改、刪除過(guò) 程: 在組織信息管理模塊中,添加、修改、刪除單位息測(cè)試結(jié)果: 成功添加、修改、刪除組織信息比 較: 與預(yù)期結(jié)果相當(dāng)結(jié) 論: 正確圖 組織信息管理模塊測(cè)試三:賬戶信息管理模塊測(cè)試如圖 所示。方 法: 功能模塊測(cè)試方法目 的: 賬戶信息管理模塊的正確性預(yù)期結(jié)果: 成功完成各項(xiàng)信息添加、修改、刪除過(guò) 程: 在賬戶信息管理模塊中,添加、修改、刪除賬戶信息測(cè)試結(jié)果: 成功添加、修改、刪除賬戶信息比 較: 與預(yù)期結(jié)果相當(dāng)圖 賬戶信息管理模塊宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)27 測(cè)試結(jié)果測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改進(jìn)。同時(shí),這種分析也能幫助我們?cè)O(shè)計(jì)出有針對(duì)性地檢測(cè)方法,改善測(cè)試的有效性。其次,沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法。通過(guò)測(cè)試本系統(tǒng)各部分運(yùn)行成功。宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)28結(jié)束語(yǔ)在當(dāng)今電腦網(wǎng)絡(luò)發(fā)達(dá)的世界當(dāng)中,一個(gè)簡(jiǎn)單有效地局域網(wǎng)通信工具是如此的實(shí)用,所以我們應(yīng)當(dāng)重視對(duì)它的相關(guān)研究與開(kāi)發(fā)。在本次畢業(yè)設(shè)計(jì)中,主要運(yùn)用到了 Visual C++ 開(kāi)發(fā)軟件,應(yīng)用了 Access 2022 數(shù)據(jù)庫(kù)編程,對(duì)系統(tǒng)的分析和制作有了較深刻認(rèn)識(shí)和理解。這個(gè)系統(tǒng)的實(shí)現(xiàn),給了我一次絕好的機(jī)會(huì),去了解軟件工程的思想,用軟件工程的一套方法去編制系統(tǒng),一改我對(duì)管理信息系統(tǒng)的認(rèn)識(shí)和看法,明白了軟件工程書上說(shuō)的東西,不是枯燥無(wú)味的,而是前輩總結(jié)出來(lái)的精華所在。另外,我在這次設(shè)計(jì)中看到了自己的不足之處,在開(kāi)始的時(shí)候,感覺(jué)邏輯復(fù)雜,難以控制,因此至今還有許多沒(méi)能解決的問(wèn)題,比如系統(tǒng)升級(jí)功能就沒(méi)有實(shí)現(xiàn),因?yàn)闆](méi)有做真正的系統(tǒng)設(shè)計(jì),甚至連畢業(yè)設(shè)計(jì)這樣的系統(tǒng)都沒(méi)有做過(guò),所以很多地方都是自己臨時(shí)學(xué)習(xí)的,大大影響了本設(shè)計(jì)的開(kāi)發(fā)進(jìn)度。雖然只實(shí)現(xiàn)了通信聊天的功能,但整個(gè)過(guò)程是令我欣慰而充實(shí)的既然畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,雖然有很多的功能沒(méi)有實(shí)現(xiàn),沒(méi)有對(duì)系統(tǒng)預(yù)想時(shí)的那么全面,不過(guò)經(jīng)過(guò)1 個(gè)多月的努力,終于初見(jiàn)雛形,并完成了本次的論文寫作,我希望自己能以良好的心態(tài)順利畢業(yè),走向大千社會(huì)。 宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)29致謝在這次軟件工程課程設(shè)計(jì)中,此次設(shè)計(jì)順利的成功完成,首先要感謝我的指導(dǎo)老師李瑋老師,在她的鼓勵(lì)與耐心的指導(dǎo)及其幫助下,我的設(shè)計(jì)才能快速、保質(zhì)量完成。同時(shí),感謝所有關(guān)心、支持我的老師、同學(xué),在我系統(tǒng)編寫過(guò)程中,他們給予了我很大的幫助,在此,衷心的謝謝您們!李老師對(duì)我的設(shè)計(jì)進(jìn)行耐心、細(xì)心指導(dǎo)及嚴(yán)格要求,使我戰(zhàn)勝了遇到的所有的困難,感謝他在整個(gè)設(shè)計(jì)過(guò)程中給予我最大的支持。宜賓職業(yè)技術(shù)學(xué)院電子信息與控制工程系 企業(yè) 通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)30參考文獻(xiàn)[1] C++,2022.[2]張雨, C++, 2022年1月,132.[3]王端,于速, C++ ,2022,.[4]李濤,劉凱奎, C++,2022,.[5],2022,第 24 期.[6],2022,第 8 期.[7]++,2022.[8]++,2022.[9]Archer,++技術(shù)揭秘 .機(jī)械工業(yè)出版社,2022.[10]++,2022.