版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 前言6</b></p><p><b> 2 需求分析6</b></p><p><b> 2.1 功能分析</b></p><p><b> 2.2
2、方案分析</b></p><p><b> 3 概要設(shè)計6</b></p><p> 3.1 數(shù)據(jù)結(jié)構(gòu)7</p><p> 3.2 邏輯結(jié)構(gòu)與物理結(jié)構(gòu)7</p><p> 3.3 功能模塊劃分9</p><p> 3.4抽象數(shù)據(jù)類定義11</p>&
3、lt;p><b> 4 詳細設(shè)計11</b></p><p> 4.1 數(shù)據(jù)類型定義11</p><p> 4.2 主要模塊內(nèi)部設(shè)計12</p><p> 4.2.1模塊1設(shè)計12</p><p> 4.2.2 模塊2設(shè)計13</p><p> 4.2.3 模塊3設(shè)計
4、14</p><p> 5 實現(xiàn)與調(diào)試分析15</p><p> 5.1 實現(xiàn)環(huán)境15</p><p> 5.2 語言選擇15</p><p> 5.3 調(diào)試分析15</p><p><b> 6 測試分析16</b></p><p> 6.1 測試用
5、例16</p><p> 6.2 測試結(jié)果17</p><p> 6.3 性能分析19</p><p><b> 7用戶手冊20</b></p><p><b> 總 結(jié)20</b></p><p><b> 參考文獻21</b>&
6、lt;/p><p><b> 1 前言</b></p><p> 1.1 即時消息系統(tǒng)的研究現(xiàn)狀 </p><p> 即時消息系統(tǒng)[1](Instant Messenger,IM)是一種在后 PC 時代興起的,以 Internet 網(wǎng)絡(luò)為基礎(chǔ)的,允許交互雙方即時地傳送文字、語音、視頻等信息,能夠跟蹤網(wǎng)絡(luò)用戶在線狀態(tài)的網(wǎng)絡(luò)應(yīng)用軟件。即時消息系統(tǒng)
7、產(chǎn)生有著深刻的社會原因:人們都有渴望社交,獲得社會尊重、實現(xiàn)自我的需求,這正是即時消息軟件風(fēng)行的原動力,而物質(zhì)文明的日益發(fā)達所帶來副作用,又使得人們習(xí)慣與周圍的人保持距離,以致人們更愿意對陌生人敞開心扉,在網(wǎng)絡(luò)中可以跨越年齡、身份、行業(yè)、地域的限制,達到人與人、人與信息之間的零距離交流。從這點上講,即時消息系統(tǒng)的出現(xiàn)改變了人們的溝通方式和交友文化,大大拓展了個人生活交流的空間。</p><p> 1.2本工程的
8、主要內(nèi)容</p><p> 本工程主要是設(shè)計完成一基于P2P的聊天系統(tǒng),本系統(tǒng)主要包括客戶端和服務(wù)器端兩部分,實現(xiàn)類似于QQ的功能。包括用戶注冊、在線朋友的獲取、點對點的聊天等功能。而本項目類容主要是使用VC++實現(xiàn)其中的點對點聊天功能。</p><p><b> 2 需求分析</b></p><p> 此次開發(fā)的網(wǎng)絡(luò)聊天工具可作為個人的
9、交流工具使用。本聊天需包含如下基本功能:</p><p><b> 2.1功能分析</b></p><p><b> 客戶端:</b></p><p><b> 發(fā)送消息;</b></p><p><b> 接收消息;</b></p>
10、<p><b> 消息記錄;</b></p><p><b> 服務(wù)端:</b></p><p> (1)對客戶端發(fā)來的消息處理并發(fā)送給另一客戶端;</p><p> (2)將消息類容計入數(shù)據(jù)庫;</p><p> ?。?)對客戶請求作出應(yīng)答并處理。</p><
11、;p><b> 2.2 方案分析</b></p><p> 本項目僅供點對點聊天模塊進行方案分析。</p><p> 本系統(tǒng)實現(xiàn)用戶點對點聊天,通過一客戶端向服務(wù)器發(fā)送消息,服務(wù)器接受消息后將消息信息(消息內(nèi)容和消息時間)記錄到數(shù)據(jù)庫,然后將其發(fā)送給另一用戶,實現(xiàn)聊天功能,并可以向服務(wù)器發(fā)送請求查詢消息記錄。</p><p><
12、;b> 3 概要設(shè)計 </b></p><p> 聊天主要包括兩方面內(nèi)容:服務(wù)器端和客戶端。 1</p><p> 2.2.1服務(wù)器端功能主要包括:建立連接、接收用戶數(shù)據(jù)、操作數(shù)據(jù)庫。</p><p> ?。?)建立連接:系統(tǒng)啟動時建立一個連接,不斷偵聽是否有客戶端連接或許斷開
13、。</p><p> ?。?)監(jiān)聽客戶請求:服務(wù)器端是一個信息的樞紐,所有客戶端的信息都要傳到服務(wù)器端,再由服務(wù)器根據(jù)要求分發(fā)出去,客戶端在向服務(wù)器發(fā)送各種請求。 </p><p> ?。?)數(shù)據(jù)庫操作:當(dāng)客戶機向服務(wù)器發(fā)送請求時,服務(wù)器需要通過數(shù)據(jù)庫管理軟件對數(shù)據(jù)庫的數(shù)據(jù)進行增、刪和查詢。</p><p> (4)發(fā)送系統(tǒng)消息:在客戶端管理界面上,可以輸入消息,
14、并發(fā)送給所有的在線用戶。</p><p> 2.2.2客戶端主要功能:發(fā)送消息,接收消息,查詢消息記錄。</p><p> ?。?)客戶端在與好友端建立通信連接后,便可以與好友進行聊天,聊天時發(fā)送的是文本信息,好友端在接收到聊天消息后,會提示收到消息,并由好友端自主打開消息接收界面。</p><p> ?。?)所有的聊天消息都會被保存起來,可以查看與每個好友的聊天
15、記錄。聊天記錄包括內(nèi)容和時間。</p><p><b> 3.1 數(shù)據(jù)結(jié)構(gòu) </b></p><p> 此系統(tǒng)數(shù)據(jù)庫中儲存信息采用字符指針儲存,將用戶的信息用字符的形式進行處理并儲存。</p><p> 3.2 邏輯結(jié)構(gòu)與物理結(jié)構(gòu) </p><p><b> ?。?)邏輯結(jié)構(gòu):</b>&l
16、t;/p><p> 用戶向服務(wù)器發(fā)送請求,服務(wù)器獲取對方IP,若獲取成功,用戶向其發(fā)送消息,服務(wù)器將其處理并將其記錄,然后將消息發(fā)給另一用戶。其E—R圖如下所示:</p><p><b> 2</b></p><p> 將E-R圖轉(zhuǎn)化為關(guān)系模型,建立關(guān)系模型為:</p><p> 消息(內(nèi)容,時間);</p&g
17、t;<p> 記錄信息(內(nèi)容,儲存信息);</p><p> 服務(wù)器(服務(wù)器IP);</p><p><b> ?。?)物理結(jié)構(gòu):</b></p><p> 在關(guān)系數(shù)據(jù)庫中,確定數(shù)據(jù)庫的物理結(jié)構(gòu)主要指確定數(shù)據(jù)庫的儲存位置和儲存結(jié)構(gòu),包括確定關(guān)系索引、日志、備份等數(shù)據(jù)的儲存分配和儲存結(jié)構(gòu),并確定系統(tǒng)配置等。</p>
18、<p> 建立好的數(shù)據(jù)庫物理結(jié)構(gòu)可以提高系統(tǒng)執(zhí)行速率,使得在數(shù)據(jù)庫上運行的各種事務(wù)響應(yīng)時間小、儲存空間利用率高、事務(wù)吞吐率大。還要充分了解所用RDBMS的內(nèi)部特征,特別是系統(tǒng)提供的存取方法忽然儲存結(jié)構(gòu)。</p><p> a.所引法:對常需要查詢的數(shù)據(jù)建立索引;b.聚簇法:為了提高某個屬性(或?qū)傩越M)的查詢速度,把這個或這些屬性上具有相同值的元組集中存放在連續(xù)的物理塊中;c.hash法:如果一個
19、關(guān)系的屬性大小可預(yù)知,而且不變或關(guān)系的大小變動,而且數(shù)據(jù)庫管理系統(tǒng)提供了動態(tài)hash存取方法則可以使用hash存取方法。</p><p> 評價物理數(shù)據(jù)庫的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的儲存空間、存取時間和維護代價入手,對估算結(jié)果進行權(quán)衡、比較,選擇一個較為優(yōu)化的合理方案設(shè)計物理結(jié)構(gòu)。</p><p><b> 3</b></p&
20、gt;<p> 3.3 功能模塊劃分</p><p><b> 3.3.1結(jié)構(gòu)框圖</b></p><p><b> 3.3.2程序流圖</b></p><p> ?。?)整個系統(tǒng)流程圖如下:</p><p><b> 4</b></p>&
21、lt;p> 3.3.3模塊功能分析及外部設(shè)計</p><p><b> 模塊功能分析:</b></p><p> ?。?)發(fā)送消息:用戶選擇好友,如果好友在線,服務(wù)器便獲取其IP地址,用戶打開消息盒編輯需要發(fā)送的消息,然后發(fā)送,服務(wù)器接受此消息,并處理記錄到記錄表中,然后將其發(fā)送給好友。</p><p> ?。?)接收消息:好友發(fā)送的
22、信息通過服務(wù)器處理并發(fā)送到本用戶,如果設(shè)置為接收消息,則系統(tǒng)提示并可以打開查看此消息,否則服務(wù)器不將此消息發(fā)送到本用戶。</p><p> (3)消息記錄查詢:用戶向服務(wù)器發(fā)送查詢請求,服務(wù)器作出響應(yīng)并將最近消息記錄發(fā)送到此用戶。</p><p><b> 外部設(shè)計:</b></p><p> 交互設(shè)計是面向最終用戶的設(shè)計,是軟件的外部設(shè)
23、計,交互設(shè)計要求在研究軟</p><p><b> 5</b></p><p> 件技術(shù)問題的同時對人加以研究。用戶是什么樣的人?用戶怎樣與新的計算機系統(tǒng)進行交互?用戶怎樣解釋系統(tǒng)產(chǎn)生的信息?用戶對系統(tǒng)有哪些期望?這些問題僅僅是需要在用戶交互設(shè)計時必須詢問和回答的問題。</p><p> 作為點對點的聊天系統(tǒng),作為服務(wù)使用者得用戶和提供服
24、務(wù)的聊天系統(tǒng)有著互動和交換信息的過程,用戶有請求,系統(tǒng)就必須有應(yīng)答,需要雙方參與。</p><p> ?。?)當(dāng)用戶選擇好友向其發(fā)送消息時,點擊好友,向服務(wù)器發(fā)送請求,如果好友在線,服務(wù)器自動獲取好友IP并建立雙方的連接,進行聊天。否則應(yīng)該提示好友不在,不能聊天或發(fā)送離線信息。</p><p> (2)用戶查詢聊天信息時,向服務(wù)器發(fā)送查詢請求,服務(wù)器作出響應(yīng)并將相應(yīng)記錄發(fā)送到此用戶界面。
25、</p><p> 通過對產(chǎn)品的界面和行為進行交互設(shè)計,讓產(chǎn)品和它的使用者之間建立一種有機關(guān)系,從而可以有效的達到使用者的目標(biāo),而好的交互設(shè)計會使系統(tǒng)和使用者之間更好的交互,達到“愉悅地合作”,這是交互設(shè)計的最終目的。</p><p> 3.4抽象數(shù)據(jù)類定義</p><p> 此系統(tǒng)主要定義3個抽象數(shù)據(jù)類型:(1)消息(messages);(2記錄(notes
26、); </p><p><b> 4 詳細設(shè)計</b></p><p> 4.1 數(shù)據(jù)類型定義</p><p> 此系統(tǒng)主要定義3個抽象數(shù)據(jù)類型:消息(messages);記錄(notes);設(shè)置信息。</p><p> ?。?)消息(messages):</p><p> ADT mes
27、sages{</p><p> 數(shù)據(jù)對象:D={發(fā)送的信息U1..Un,|U1..Un∈CHAR}</p><p> 數(shù)據(jù)關(guān)系:R={<U1,U2>,<U2,U3>,..,<Un-1,Un>}</p><p><b> 基本操作:</b></p><p> Receive me
28、ssages(&T,InetAddress,t)</p><p> 操作結(jié)果:將端口為InetAddress的信息包t的內(nèi)容傳給T,用T返回。</p><p><b> 6</b></p><p> Send messages(t,InetAddress)</p><p> 操作結(jié)果:將信息包發(fā)送到端口I
29、netAddress;</p><p> }ADT messages</p><p> ?。?)記錄(notes):</p><p> ADT notes{</p><p> 數(shù)據(jù)對象:D={記錄表中的信息U1..Un,|U1..Un∈CHAR}</p><p> 數(shù)據(jù)關(guān)系:R={<U1,U2>,&
30、lt;U2,U3>,..,<Un-1,Un>}</p><p><b> 基本操作:</b></p><p> Check notes(&T,InetAddress,t)</p><p> 操作結(jié)果:將信息記錄表中的信息發(fā)送到端口InetAddress,并用T返回。</p><p> D
31、elete notes(&t,i)</p><p> 操作結(jié)果:如果i=1,將信息記錄表中的信息刪除。</p><p> Memory notes(&t,InetAddress,T)</p><p> 操作結(jié)果:將端口InetAddress發(fā)來的信息包T的內(nèi)容記錄到消息記錄表中。</p><p> }ADT notes
32、</p><p> 4.2 主要模塊內(nèi)部設(shè)計</p><p> 此點對點聊天系統(tǒng)主要包括以下模塊:(1)發(fā)送消息;(2)接收消息;(3)查詢消息記錄。每個模塊的主要執(zhí)行功能函數(shù)及算法如下。</p><p> 4.2.1模塊1設(shè)計</p><p> 4.2.1.1 模塊算法</p><p><b>
33、模塊一:發(fā)送消息:</b></p><p> 發(fā)送消息函數(shù):send messages(char *p,InetAdrress);</p><p> 發(fā)送消息后自動執(zhí)行儲存函數(shù):memory messages(InetAdrress,char *p);</p><p> 4.2.1.2 流程圖</p><p><b&g
34、t; 7</b></p><p><b> 模塊2設(shè)計</b></p><p> 4.2.2.1 模塊算法</p><p><b> 模塊二:接收消息:</b></p><p> 接收消息消息函數(shù): *receive messages(InetAdrress,char *p);
35、</p><p> 接收消息后自動執(zhí)行儲存消息函數(shù):memory messages(InetAdrress,char *p);</p><p> 4.2.2.2 流程圖:</p><p><b> 8</b></p><p><b> 模塊3設(shè)計</b></p><p&g
36、t; 4.2.3.1 模塊算法</p><p> 模塊三:消息記錄查詢:</p><p> 執(zhí)行發(fā)送請求函數(shù):*check notes(InetAdrress,char *p);</p><p> 刪除記錄函數(shù):delete notes(InetAdrress);</p><p> 自動執(zhí)行接收消息函數(shù):*receive messa
37、ges(InetAdrress,char *p);</p><p><b> 4.2.3.2 </b></p><p><b> 流程圖:</b></p><p><b> 9</b></p><p><b> 實現(xiàn)與調(diào)試分析</b></p&
38、gt;<p><b> 5.1 實現(xiàn)環(huán)境</b></p><p> 硬件:本系統(tǒng)選擇在windows操作系統(tǒng)上實現(xiàn),使用于windows操作之間的用戶。</p><p> 軟件:VC++平臺;</p><p><b> 5.2 語言選擇</b></p><p> 本系統(tǒng)采用C
39、++實現(xiàn)。</p><p><b> 5.3 調(diào)試分析</b></p><p> 首先應(yīng)該明確的是本系統(tǒng)的目的是什么。調(diào)試是在程序運行成功后進行的排除錯誤過程。常用的調(diào)試方法有回溯法、蠻干法和原因排除法。本系統(tǒng)采用回溯法和</p><p><b> 10</b></p><p> 原因排除法
40、比較合適。</p><p> 本系統(tǒng)中每個模塊實現(xiàn)一個功能,當(dāng)主函數(shù)調(diào)用這些函數(shù)時,就會從接口輸入一些信息,如果程序算法正確,則預(yù)期可以得到結(jié)果,通過功能函數(shù)的處理,應(yīng)該輸出處理結(jié)果,和預(yù)期結(jié)果比較,如果不能實現(xiàn)預(yù)期的功能,則說明程序中存在隱藏的問題。</p><p> 當(dāng)選擇好友聊天時,如果輸入聊天信息,,如果好友在線,則好友可以收到此消息,而且在服務(wù)器的記錄表中應(yīng)該記錄此消息的相關(guān)
41、記錄,當(dāng)用戶發(fā)送查詢請求時可以返回其聊天記錄。</p><p> 當(dāng)發(fā)生錯誤時,那一功能不能實現(xiàn),就去從新審查實現(xiàn)此功能函數(shù)的代碼,注意實現(xiàn)功能的關(guān)鍵代碼部分,為什么不能得到預(yù)期的結(jié)果。</p><p> 不管采用什么辦法,調(diào)試的任務(wù)就是找到此系統(tǒng)錯誤的原因并改正。</p><p><b> 6 測試分析</b></p>&
42、lt;p> 在實現(xiàn)本系統(tǒng)的同時每設(shè)計一個模塊,就實現(xiàn)模塊測試,使其能實現(xiàn)該函數(shù)需要實現(xiàn)的功能,此階段為白盒測試。此階段將此模塊作為單獨的一個實體來測試,而且比較容易實際檢驗?zāi)K正確性的測試方案,保證每個模塊單元的正確運行,來確定編碼和詳細設(shè)計的錯誤。</p><p> 然后集成測試。集成測試階段,先將單元測試成功的模塊放在一起形成一個子系統(tǒng)來測試,以解決模塊間的協(xié)調(diào)和通信問題。然后將子系統(tǒng)測試通過的模塊
43、放在一起形成一個完整的系統(tǒng)測試,檢驗功能,來發(fā)現(xiàn)需求報告中的錯誤。</p><p><b> 6.1 測試用例</b></p><p> 為了檢驗此系統(tǒng)的正確性,設(shè)計了以下的一些測試用例:</p><p><b> ?。?)發(fā)送消息</b></p><p> 選擇好友輸入信息:“你好!”<
44、;/p><p> 然后選擇“查詢消息記錄”</p><p><b> (2)接收消息</b></p><p> 好友發(fā)來消息選擇接收。</p><p> 然后恢復(fù)消息:“你好!”</p><p> 然后選擇“查詢消息記錄”</p><p><b> 11&
45、lt;/b></p><p><b> ?。?)查詢消息記錄</b></p><p> 選擇“查詢消息記錄”</p><p> 通過以上此時用例,看此系統(tǒng)能否實現(xiàn)其聊天功能。當(dāng)發(fā)送消息時,檢測好友端是否輸出“你好!”,當(dāng)點擊“查詢消息記錄”時,檢測用戶端是否有“你好!”輸出。</p><p> 不同的測試數(shù)據(jù)
46、發(fā)現(xiàn)程序錯誤的能力差別很大,為了提高測試效率低測試成本,應(yīng)該選擇高效的測試用例,數(shù)據(jù)盡量少,做到盡可能完備的測試就可以了。</p><p><b> 6.2 測試結(jié)果</b></p><p> 此系統(tǒng)測試結(jié)果如下列圖:</p><p> (1)發(fā)送消息測試結(jié)果如下:</p><p><b> 12<
47、;/b></p><p> ?。?)返回選擇另一好友聊天測試如下:</p><p> ?。?)退出重復(fù)好友聊天測試結(jié)果:</p><p> (4)查詢消息記錄測試結(jié)果:</p><p><b> 6.3 性能分析</b></p><p><b> 13</b>&l
48、t;/p><p> 下面從時間性能和空間性能分析此系統(tǒng):</p><p> 時間性能:本系統(tǒng)采用文件保存方式對用戶的信息進行保存并處理,方便了信息的網(wǎng)絡(luò)拷貝,傳輸和下載,縮短了系統(tǒng)對用戶請求的響應(yīng)時間,而且,文件保存方便了文件打包壓縮處理,為系統(tǒng)處理,傳輸節(jié)約時間。</p><p> 空間性能:本系統(tǒng)在用戶輸入數(shù)據(jù)時采用數(shù)據(jù)緩沖區(qū),解決了高速運行的 CPU工作分配
49、,解放CPU,大大提高了系統(tǒng)的運行速度。</p><p><b> 7用戶手冊</b></p><p> 此系統(tǒng)的用戶手冊包括:此系統(tǒng)的功能,安裝文檔,使用手冊。</p><p> ?。?)系統(tǒng)功能:此系統(tǒng)的功能為實現(xiàn)用戶的聊天信息交互。并能對聊天記錄進行查詢。</p><p> ?。?)安裝手冊:在使用此系統(tǒng)之前需
50、要對此系統(tǒng)的安裝,通過VC++平臺將代碼輸入,然后編譯,連接,運行,出現(xiàn)應(yīng)用控制臺進行聊天。需要說明的是在編譯之前需要設(shè)置服務(wù)器的IP設(shè)置,將代碼中的服務(wù)器IP地址輸入正確后才可以連接到服務(wù)器進行聊天。</p><p> (3)使用手冊:當(dāng)進入聊天界面后,選擇在線好友,選擇聊天,輸入信息,然后選擇發(fā)送,服務(wù)器將信息儲存后送給好友,等待好友回復(fù)信息。當(dāng)好友回復(fù)后,用戶可以繼續(xù)聊天。</p><
51、p> 當(dāng)需要查詢消息記錄時,選擇“消息記錄查詢”,將在界面顯示聊天信息。當(dāng)聊天結(jié)束時,選擇“下線”,用戶可以斷開與服務(wù)器的連接,實現(xiàn)下線功能。</p><p><b> 總 結(jié) </b></p><p> 軟件開發(fā)過程是一個復(fù)雜的過程,這就要求將其分成若干個階段,若干個部分。</p><p> 把此系統(tǒng)劃分為若干個階段,每個階段的
52、任務(wù)獨立,而且比較簡單,便于管理,從而降低了軟件開發(fā)的難道,在每個階段采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,而且在每個階段結(jié)束之前都從技術(shù)和管理兩個角度進行嚴格的審查,合格后才進行下一步的工作,這就使開發(fā)工程的全過程以一種有條不紊的方式進行,保證了系統(tǒng)的質(zhì)量,提高了系統(tǒng)的可維護性。</p><p> 總之采用生命周期方法學(xué)可以大大提高此系統(tǒng)的開發(fā)成功率。其次,維護占軟件投資的很大比例,所以在開發(fā)時應(yīng)該提高系統(tǒng)的可
53、維護性。</p><p><b> 14</b></p><p><b> 參考文獻 </b></p><p> [1] 張海藩. 軟件工程導(dǎo)論,清華大學(xué)出版社,2004</p><p> [2] 陳明. 實用軟件工程基礎(chǔ),清華大學(xué)出版社,2003</p><p>
54、 [3] 殷人昆.實用軟件工程,清華大學(xué)出版社,2003</p><p> [4] 宋波.UML面向?qū)ο蠹夹g(shù)與實踐,科學(xué)出版社,2004 </p><p> #include<iostream.h></p><p> #include<string.h></p><p> #include<fstream
55、.h></p><p> void chat();</p><p> void checkmessage();</p><p> void menu();</p><p> void main()</p><p> { int k;</p><p><b> m
56、enu();</b></p><p> while(k!=3)</p><p><b> {cin>>k;</b></p><p><b> switch(k)</b></p><p> { case 1:chat();menu();break;</p&g
57、t;<p> case 2:checkmessage();menu</p><p> ();break;}</p><p><b> }</b></p><p><b> }</b></p><p> void chat()</p><p> {
58、 int m;</p><p><b> char *p;</b></p><p> p=new char[200];</p><p> ofstream file1;</p><p> file1.open</p><p> ("D:\\file1.txt"
59、;,ios::ate);</p><p> ofstream file2;</p><p> file2.open</p><p> ("D:\\file2.txt",ios::ate);</p><p> ofstream file3;</p><p> file3.open<
60、/p><p> ("D:\\file3.txt",ios::ate);</p><p> while(m!=4){ </p><p> cout<<"請選擇好友:"<<endl;</p><p> cout<<"1.張明"<<en
61、dl;</p><p> cout<<"2.王林"<<endl;</p><p> cout<<"3.李強"<<endl;</p><p> cout<<"4.返回"<<endl;</p><p><
62、b> cin>>m;</b></p><p><b> switch(m)</b></p><p><b> {</b></p><p><b> case 1:{</b></p><p> cout<<"請輸入消息
63、:</p><p><b> \n";</b></p><p> cout<<"李林:";</p><p> char v[]="李林:";</p><p><b> cin>>p;</b></p>&
64、lt;p> cout<<"張明:你好!你</p><p> 叫什么名字?"<<endl;</p><p> char q[]="張明:你好!</p><p><b> 你叫什么名字?";</b></p><p> //file1.seek
65、p</p><p> (0,ios::end);</p><p> file1.write(v,strlen</p><p><b> (v));</b></p><p> file1.write(p,strlen</p><p><b> (p));</b>
66、</p><p> file1.write(q,strlen</p><p><b> (q));</b></p><p> cout<<"李林:";</p><p><b> cin>>p;</b></p><p>
67、cout<<"張明:我叫張明</p><p> ,在四川大學(xué)讀書!今年20歲,你</p><p> 呢?"<<endl;</p><p> char s[]="張明:我叫</p><p> 張明,在四川大學(xué)讀書,今年20歲,你呢?";</p><
68、p> file1.write(v,strlen</p><p><b> (v));</b></p><p> file1.write(p,strlen</p><p><b> (p));</b></p><p> file1.write(s,strlen</p>
69、<p><b> (s));</b></p><p> cout<<"李林:";</p><p><b> cin>>p;</b></p><p> cout<<"張明:好,再見</p><p><b&g
70、t; !"<<endl;</b></p><p> char t[]="張明:好,再見! </p><p><b> ";</b></p><p> file1.write(v,strlen</p><p><b> (v));</b&g
71、t;</p><p> file1.write(p,strlen</p><p><b> (p));</b></p><p> file1.write(t,strlen</p><p> (t));file1.close();}</p><p><b> break;&l
72、t;/b></p><p><b> case 2:</b></p><p> { cout<<"請輸入消息:</p><p><b> \n";</b></p><p> cout<<"李林:";</p>
73、<p> char v[]="李林:";</p><p> cin>>p; </p><p> cout<<"王林:你好!你</p><p> 叫什么名字!"<<endl;</p><p> char q[]="王林:你好!
74、</p><p><b> 你叫什么名字!";</b></p><p> // file2.seekp</p><p> (0,ios::end);</p><p> file2.write(v,strlen</p><p><b> (v));</b>
75、;</p><p> file2.write(p,strlen</p><p><b> (p));</b></p><p> file2.write(q,strlen</p><p><b> (q));</b></p><p> cout<<&q
76、uot;李林:";</p><p><b> cin>>p;</b></p><p> cout<<"王林:我叫王林</p><p> ,在北京大學(xué)讀書!今年21歲,你呢!"<<endl;</p><p> char s[]="王林:我
77、叫</p><p> 王林,在北京大學(xué)讀書,今年21歲,你呢!";</p><p> file2.write(v,strlen</p><p><b> (v));</b></p><p> file2.write(p,strlen</p><p><b> (
78、p));</b></p><p> file2.write(s,strlen</p><p><b> (s));</b></p><p> cout<<"李林:";</p><p><b> cin>>p;</b></p>
79、;<p> cout<<"王林:好,拜拜</p><p><b> !"<<endl;</b></p><p> char t[]="王林:好,拜拜! </p><p><b> "; </b></p><p>
80、; file2.write(v,strlen</p><p><b> (v));</b></p><p> file2.write(p,strlen</p><p><b> (p));</b></p><p> file2.write(t,strlen</p>&l
81、t;p> (t));file2.close();}break;</p><p><b> case 3:{</b></p><p> cout<<"請輸入消息:</p><p><b> \n";</b></p><p> cout<<&
82、quot;李林:";</p><p> char v[]="李林:";</p><p> cin>>p; </p><p> cout<<"李強:你好!你</p><p> 叫什么名字!"<<endl;</p><p>
83、; char q[]="李強:你好!</p><p><b> 你叫什么名字?";</b></p><p> // file3.seekp</p><p> (0,ios::end);</p><p> file3.write(v,strlen</p><p>
84、<b> (v));</b></p><p> file3.write(p,strlen</p><p><b> (p));</b></p><p> file3.write(q,strlen</p><p><b> (q));</b></p>
85、<p> cout<<"李林:";</p><p><b> cin>>p;</b></p><p> cout<<"李強:我叫李強</p><p> ,在上海大學(xué)讀書!今年22歲,你呢?"<<endl;</p><p
86、> char s[]="李強:我叫</p><p> 李強,在上海大學(xué)讀書,今年22歲,你呢?";</p><p> file3.write(v,strlen</p><p><b> (v));</b></p><p> file3.write(p,strlen</p&g
87、t;<p><b> (p));</b></p><p> file3.write(s,strlen</p><p><b> (s));</b></p><p> cout<<"李林:";</p><p><b> cin>
88、>p;</b></p><p> cout<<"李強:好,拜拜</p><p><b> !"<<endl;</b></p><p> char t[]="李強:好,拜拜! </p><p><b> "; </
89、b></p><p> file3.write(v,strlen</p><p><b> (v));</b></p><p> file3.write(p,strlen</p><p><b> (p));</b></p><p> file3.writ
90、e(t,strlen</p><p> (t)); file3.close();}break;</p><p> //case 4: break;</p><p><b> }</b></p><p><b> }</b></p><p> file1.close
91、();</p><p> file2.close();</p><p> file3.close();</p><p><b> }</b></p><p> void checkmessage()</p><p> { int t;</p><p> ch
92、ar str[1000]="";</p><p> ifstream file1("D:\\file1.txt");</p><p> ifstream file2("D:\\file2.txt");</p><p> ifstream file3("D:\\file3.txt")
93、;</p><p> while(t!=4){</p><p> cout<<"\n請輸入要查詢和哪位好友</p><p> 的消息記錄:\n";</p><p> cout<<"1.張明"<<endl;</p><p> cout
94、<<"2.王林"<<endl;</p><p> cout<<"3.李強"<<endl;</p><p> cout<<"4.返回"<<endl;</p><p><b> cin>>t;</b>
95、</p><p><b> switch(t)</b></p><p><b> {case 1:</b></p><p> file1.read(str,1000);</p><p> cout<<str;file1.close();break;</p><
96、p><b> case 2:</b></p><p> file2.read(str,1000);</p><p> cout<<str;file2.close();break;</p><p><b> case 3:</b></p><p> file3.read(s
97、tr,1000);</p><p> cout<<str;file3.close();break;</p><p><b> }}</b></p><p> file1.close();</p><p> file2.close();</p><p> file3.close
98、();</p><p><b> }</b></p><p> void menu(){</p><p> cout<<" </p><p> **********************"<<endl;</p>
99、;<p> cout<<" </p><p> **********************"<<endl;</p><p> cout<<" </p><p> ***歡迎進入聊天系
100、統(tǒng)***"<<endl;</p><p> cout<<" </p><p> **********************"<<endl;</p><p> cout<<" &
101、lt;/p><p> ***1. 聊天 ***"<<endl;</p><p> cout<<" </p><p> ***2. 消息記錄查詢 ***"<<endl;</p><p> cout<<
102、" </p><p> ***3. 下線 ***"<<endl;</p><p> cout<<" </p><p> **********************"<<en
103、dl;</p><p> cout<<" </p><p> **********************"<<endl;</p><p> cout<<" </p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程-課程設(shè)計-socket聊天系統(tǒng)
- 軟件工程課程設(shè)計socket聊天系統(tǒng)
- 軟件工程系課程設(shè)計---患者就診信息管理
- 軟件工程課程設(shè)計--- 文本聊天室
- 軟件工程課程設(shè)計報告
- 軟件工程課程設(shè)計報告
- 軟件工程課程設(shè)計---學(xué)生考勤系
- 軟件工程課程設(shè)計報告--學(xué)生選課系統(tǒng)
- 酒店管理系統(tǒng)--軟件工程課程設(shè)計報告
- 軟件工程課程設(shè)計(酒店管理系統(tǒng)) (2)
- 軟件工程課程設(shè)計報告模板
- 軟件工程課程設(shè)計個人報告
- [封面] 《軟件工程》課程設(shè)計報告
- 軟件工程課程設(shè)計--銀行儲蓄系統(tǒng)系統(tǒng)設(shè)計報告
- 軟件工程課程設(shè)計—選課系統(tǒng)
- 軟件工程課程設(shè)計管理系統(tǒng)
- 軟件工程課程設(shè)計
- 軟件工程課程設(shè)計
- 軟件工程課程設(shè)計
- 車站售票管理系統(tǒng)—軟件工程課程設(shè)計報告
評論
0/150
提交評論