2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  基于JAVA的聊天室的設(shè)計(jì)與實(shí)現(xiàn)—客戶端</p><p><b>  摘要</b></p><p>  隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)聊天工具作為一種交流工具,已

2、經(jīng)受到網(wǎng)民的青睞。目前,出現(xiàn)了很多功能強(qiáng)大的聊天工具,其中應(yīng)用比較廣泛的有騰訊QQ、MSN-Messager等等。</p><p>  這個項(xiàng)目是用Java技術(shù)制作的,其中Java是一種程序設(shè)計(jì)語言,它具有簡單的、面向?qū)ο蟆⒎植际?、健壯性、安全性、可移植性等特點(diǎn),并且提供了多線程的功能,使得在一個程序里可同時執(zhí)行多個小任務(wù),開發(fā)中利用了計(jì)算機(jī)網(wǎng)絡(luò)編程的基本理論知識,如TCP/IP協(xié)議、客戶端/服務(wù)器端模式(Cli

3、ent/Server模式)、網(wǎng)絡(luò)編程的設(shè)計(jì)方法等。在網(wǎng)絡(luò)編程中對信息的讀取、發(fā)送,是利用流來實(shí)現(xiàn)信息的交換,其中介紹了對實(shí)現(xiàn)一個系統(tǒng)的信息流的分析,包含了一些基本的軟件工程的方法。經(jīng)過分析這些情況,該局域網(wǎng)聊天工具采用Eclipse為基本開發(fā)環(huán)境和Java語言進(jìn)行編寫,首先可在短時間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進(jìn)行不斷修正和改進(jìn),同時,采用多線程、多任務(wù)的設(shè)計(jì)思想,開發(fā)出性能穩(wěn)定,功能全面的服務(wù)器。完整的實(shí)現(xiàn)系統(tǒng)的功能。通過

4、本次畢業(yè)設(shè)計(jì)可以學(xué)到如何應(yīng)用和實(shí)現(xiàn)面向?qū)ο蟮母鞣N方法,如何使用Eclipse集成開發(fā)環(huán)境來創(chuàng)建和開發(fā)項(xiàng)目,從而完整的實(shí)現(xiàn)整個系統(tǒng)的功能。</p><p>  該系統(tǒng)主要包括了服務(wù)器端和客戶端界面使用兩部分,其中服務(wù)器端用來接收新用戶的注冊和注冊用戶的登錄驗(yàn)證以及進(jìn)行服務(wù)器信息和用戶信息的管理,其中用到了Socket套接字建立服務(wù)器,服務(wù)器能讀取、轉(zhuǎn)發(fā)客戶端發(fā)來的信息。客戶端通過注冊界面讓新用戶進(jìn)行注冊;通過登錄界

5、面使用已注冊的用戶名和密碼登錄到聊天服務(wù)器;用戶通過登錄驗(yàn)證后即可進(jìn)行在線聊天。多用戶的即時聊天功能必須使用Thread類來建立多線程。本聊天系統(tǒng)采用Eclipse為基本的開發(fā)環(huán)境,用java語言進(jìn)行程序的編寫的。</p><p>  關(guān)鍵詞:客戶端/服務(wù)器,多線程,聊天,socket</p><p><b>  ABSTRACT</b></p><

6、;p>  With the development of the Internet, the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ,MSN - Messager

7、 are much more prevalent.</p><p>  This project is with Java technology produced of, which Java is a programming language, it has simple of, and-oriented object, and distributed, and robust sexual, and secur

8、ity, and portability, features, and provides has multithreaded of features, makes in a program in can while implementation multiple small task, development in the using has computer network programming of basic theory kn

9、owledge, as TCP/IP agreement, and client/server end mode (Client/Server mode), and network programming of de</p><p>  The system includes both server-side and client-side interface uses two main parts, which

10、 server to use for new user registrations and registered user login authentication, and server information and user information management, which was used to establish Server Socket , the server can read the message, for

11、warded to the client. Registered by the client interfaces to register new users through login with a registered username and password to log on to the chat server; after user login authentica</p><p>  Key wo

12、rds: Client / server, multiple threads, chat, socket</p><p><b>  目錄</b></p><p><b>  1.緒論1</b></p><p><b>  1.1課題背景1</b></p><p>  1

13、.2課題研究的目的和意義1</p><p>  1.3國內(nèi)外概況2</p><p>  1.4課題的主要研究工作2</p><p>  2. 系統(tǒng)開發(fā)環(huán)境與實(shí)用技術(shù)2</p><p>  2.1 本課題開發(fā)環(huán)境的選擇2</p><p>  2.2本課題開發(fā)工具的選擇3</p><p>

14、;  2.3 Socket技術(shù)4</p><p>  2.4 多線程技術(shù)4</p><p>  3. 系統(tǒng)的分析與設(shè)計(jì)5</p><p>  3.1系統(tǒng)的總體需求5</p><p>  3.2客戶端的功能6</p><p><b>  3.3流程設(shè)計(jì)7</b></p>&

15、lt;p>  3.4分析Socket在客戶端的開發(fā)流程8</p><p>  3.5系統(tǒng)的設(shè)計(jì)方案8</p><p>  3.6 性能需求分析10</p><p>  4. 系統(tǒng)的實(shí)現(xiàn)10</p><p>  4.1系統(tǒng)的模塊分析10</p><p>  4.2主要引入的包10</p>

16、<p>  4.3主要代碼11</p><p>  4.4界面設(shè)計(jì)14</p><p><b>  5. 總結(jié)17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  致謝18</b></p><p>

17、;<b>  緒論</b></p><p>  隨著信息科學(xué)的進(jìn)步與互聯(lián)網(wǎng)絡(luò)的發(fā)展,雖然通過網(wǎng)絡(luò)的聊天軟件很多,但針對于內(nèi)部系統(tǒng)的、局域網(wǎng)內(nèi)的聊天和公司內(nèi)部的上下級溝通的聊天通訊軟件卻很少。所以開發(fā)一個此類型的即時通訊系統(tǒng)就變得非常有意義了。而在技術(shù)選擇上Java技術(shù)自然成為實(shí)現(xiàn)此系統(tǒng)的首選。本文所介紹的網(wǎng)絡(luò)聊天系統(tǒng)是基于JAVA編程語言開發(fā)設(shè)計(jì)的,其主要特性是能動態(tài)、實(shí)時的完成消息的傳遞,

18、且具有高效的交互性,能更有效的處理客戶請求,其運(yùn)行時所需環(huán)境及工作流程和各模塊的工作原理將在本文依次介紹,并且文中提供了部分程序源代碼。</p><p><b>  1.1課題背景</b></p><p>  在這個信息極其發(fā)達(dá)的時代,我們目前可以用來進(jìn)行信息交流的方法也非常多,比如電報(bào)、電話、電子郵件等通訊手段,但是這些或者不方便或者有局限性或者有費(fèi)用的問題,比如電

19、話就是屬于費(fèi)用比較高的一種方式,電子郵件則不是一種及時聯(lián)系的手段,需要一定時間才能到達(dá),只能作為一種輔助交流的手段。但是,聊天室這個就能很好的解決這個問題,大家可以各自在不同的地點(diǎn)就可以在聊天室中發(fā)言,大家互相討論,而且好的聊天室還有各種表情符號等可以加強(qiáng)我們的表達(dá),并且費(fèi)用低廉,信息交流速度快,只有這樣,才能在這個涌動的社會中加強(qiáng)聯(lián)系,創(chuàng)造出更多的財(cái)富。</p><p>  1.2課題研究的目的和意義</

20、p><p>  近年來,隨著Internet的迅速崛起,互聯(lián)網(wǎng)已日益成為收集提供信息的最佳渠道并逐步進(jìn)入傳統(tǒng)的流通領(lǐng)域。于是網(wǎng)絡(luò)聊天室開始流行起來,越來越多的用戶通過網(wǎng)絡(luò)聊天暢談自己的心扉。</p><p>  隨著越來越多的應(yīng)用人群,開發(fā)一個網(wǎng)絡(luò)聊天室是極其有意義的。本課題主要介紹的是基于JAVA的網(wǎng)絡(luò)聊天室的開發(fā)設(shè)計(jì),其主要功能是能夠動態(tài)、實(shí)時的完成信息的傳遞,并且具有高效的交互性和有效的

21、處理用戶請求,易于維護(hù)和更新。</p><p>  為了更好的充實(shí)人們的生活,我特做此系統(tǒng)更滿足人們在日常生活的需要和需求,也為了滿足人們在信息流通方面的方便,使得人們更能分享互聯(lián)網(wǎng)上的資源,使得的網(wǎng)絡(luò)的意義更能充分的體現(xiàn)。</p><p>  交流是系統(tǒng)的關(guān)鍵也是目的,它能讓你在簡單的對話中了解復(fù)雜的社會,多彩的世界,使得人與人之間的距離徹底拉近,就像是面對面的交談,彼此之間沒有界限,沒

22、有差別,只有心與心的共振。</p><p><b>  1.3國內(nèi)外概況</b></p><p>  目前國內(nèi)外做聊天系統(tǒng)的公司很多,產(chǎn)品也琳瑯滿目,國內(nèi)有諸如騰訊QQ、新浪UC、網(wǎng)易泡泡等,國外有著名的MSN以及跨平臺Gaim等。本人取最具代表性的QQ和MSN進(jìn)行了一些研究,作為我開發(fā)聊天系統(tǒng)的準(zhǔn)備。騰訊無疑是國內(nèi)即時通訊市場的霸主,自從99年進(jìn)入即時通訊領(lǐng)域并迅速

23、占市場之后,其在國內(nèi)用戶數(shù)量始終高居榜首,即使近幾年面對微軟MSN的強(qiáng)大攻勢,騰訊QQ的時常占有率依然穩(wěn)步增長。騰訊的成功與其對QQ的不斷創(chuàng)新和完善是分不開的。參考了許多網(wǎng)絡(luò)上的資料,以及自己通過觀察騰訊QQ運(yùn)行時的各種細(xì)節(jié)??梢源_定騰訊QQ是以多服務(wù)器提供服務(wù)、服務(wù)器總控客戶端、客戶端之間UDP直連通信的。并且在兩個客戶端之間不能建立直連的情況下,才由服務(wù)器進(jìn)行中轉(zhuǎn)通信。</p><p>  1.4課題的主要研

24、究工作</p><p>  本系統(tǒng)是一個典型的聊天系統(tǒng)。該程序分兩大部分來編寫,服務(wù)器端和客戶端。服務(wù)器端用來響應(yīng)客戶端所發(fā)出的請求,并把接受到客戶端的響應(yīng)分別作出響應(yīng)的處理。客戶端用來接收用戶的請求,然后做出相應(yīng)的操作。</p><p>  其中網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)和多線程技術(shù)是此聊天系統(tǒng)的核心部分,而Java提供的API函數(shù)中針對網(wǎng)絡(luò)編程的Socket類正是針對網(wǎng)絡(luò)編程的,Java語言是一種

25、支持多線程的語言,多線程在服務(wù)器端主要是要滿足支持多個用戶的同時登陸,在客戶端主要滿足一對多的同時聊天。</p><p>  2. 系統(tǒng)開發(fā)環(huán)境與實(shí)用技術(shù)</p><p>  2.1 本課題開發(fā)環(huán)境的選擇</p><p>  在進(jìn)行開發(fā)之前,首先決定的第一個問題就是該使用什么開發(fā)環(huán)境來編寫,以目前常用的開發(fā)語言來講有C/C++、NET技術(shù)、JAVA、VB幾種。還有E

26、clipse、JBuilder等,這些并不是語言,而是程序在構(gòu)建程序時的“集成開發(fā)工具”,不過它們在開發(fā)設(shè)計(jì)的過程中也占有相應(yīng)重要的角色,因?yàn)檫x用正確的集成開發(fā)工具,可以加速程序設(shè)計(jì)的進(jìn)行、測試與排錯,因而對整體進(jìn)度具有決定性的影響。</p><p>  1、就執(zhí)行平臺而言,必須考慮的問題之一是用戶可能使用的操作系統(tǒng)。用戶可能使用的是Windows和Linux。JAVA語言具有平臺無關(guān)性,可以不需要任何修改就可以

27、運(yùn)行在支持JAVA的任何計(jì)算機(jī)上。</p><p>  2、JAVA的Swing組件開發(fā)技術(shù)可以開發(fā)豐富的圖形界面,并且Swing API類提供了豐富的外部接口和方法,可以方便實(shí)現(xiàn)系統(tǒng)功能。</p><p>  3、就項(xiàng)目開發(fā)而言,純粹的面向?qū)ο?,加上?shù)量巨大的類所提供的方法庫的支持,使得利用JAVA開發(fā)各種應(yīng)用程序,可以說是易如反掌。此外,在程序除錯、修改、升級和增加新功能等方面,因其面

28、向?qū)ο蟮奶匦?,使得這些維護(hù)也變得非常容易。</p><p>  4、JAVA支持內(nèi)在的多線程運(yùn)行,提供分布式的并發(fā)機(jī)制,運(yùn)行效率高。</p><p>  5、異常處理,為了使Java程序更穩(wěn)定、更安全,Java引入了異常處理機(jī)制。能夠在程序中產(chǎn)生異常情況的地方,執(zhí)行相應(yīng)的處理,不至于因突發(fā)或意外的錯誤造成執(zhí)行中斷或是死機(jī)。通過這種異常處理,不僅能夠清晰地掌握整個程序執(zhí)行的流程,也使得程序的

29、設(shè)計(jì)更為嚴(yán)謹(jǐn)。</p><p>  6、高性能,Java可以在運(yùn)行時直接將目標(biāo)代碼翻譯成機(jī)器指令。Sun用直接解釋器一秒鐘內(nèi)可調(diào)用300,000個過程。翻譯目標(biāo)代碼的速度與C/C++的性能沒什么區(qū)別。</p><p>  7、網(wǎng)絡(luò)功能,Java可以說是借助因特網(wǎng)而重獲新生的,自然具備編寫網(wǎng)絡(luò)功能的程序。不論是一般因特網(wǎng)/局域網(wǎng)的程序,如Socket、Email、基于Web服務(wù)器的Servl

30、et、JSP程序,甚至連分布式網(wǎng)絡(luò)程序,如CORBA、RMI等的支持也是非常豐富的,使用起來也很方便。</p><p>  8、源回收處理,Garbage Collection是由JVM對內(nèi)存實(shí)行動態(tài)管理的。程序需要多少內(nèi)存、哪些程序的內(nèi)存已經(jīng)不使用了,需要釋放歸還給系統(tǒng),這些煩瑣且危險的操作全部交由JVM去管理。讓我們能夠更專心地編寫程序,而不需要擔(dān)心內(nèi)存的問題。內(nèi)存的統(tǒng)一管理,對于跨平臺也有相當(dāng)大的幫助。&l

31、t;/p><p>  2.2本課題開發(fā)工具的選擇</p><p>  Java的開發(fā)工具有很多,而且各有優(yōu)缺點(diǎn),Eclipse是一個開放可擴(kuò)展的集成開發(fā)環(huán)境(IDE)。它不僅可以用于Java的開發(fā),通過開發(fā)插件,它可以構(gòu)建其他的開發(fā)工具。Eclipse是開放源代碼的項(xiàng)目,并可以免費(fèi)下載。支持最新的Java標(biāo)準(zhǔn),并且縮短了開發(fā)周期。一直以其友好的集成開發(fā)環(huán)境在業(yè)界受到廣泛的贊譽(yù),這也是Eclip

32、se一直是廣大程序員最喜愛的Java開發(fā)工具的原因之一。</p><p>  Eclipse的可視化集成開發(fā)環(huán)境包括文本編輯、工程創(chuàng)建工具、對象瀏覽器和調(diào)試器等。用戶可以在集成開發(fā)環(huán)境中創(chuàng)建工程和打開功能,建立、打開和編輯文件,并可以編譯、運(yùn)行和調(diào)試應(yīng)用程序。可以說在Eclipse集成開發(fā)環(huán)境中開發(fā)Java程序,快速而且高效。其主要特點(diǎn)如下:</p><p><b>  開放的可

33、擴(kuò)展IDE</b></p><p>  成功的底層圖形界面API</p><p><b>  強(qiáng)大的插件加載功能</b></p><p>  可以通過導(dǎo)入一些CVS相關(guān)的插件來實(shí)現(xiàn)版本管理的便易性</p><p>  2.3 Socket技術(shù)</p><p><b>  So

34、cket概述</b></p><p>  套接字(Socket)技術(shù)用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶端程序和服務(wù)器端程序之間的連接,即網(wǎng)絡(luò)上兩個以雙工方式通信的進(jìn)程之間的連接端點(diǎn)稱為套接字。套接字相對URL而言是在較低層次上進(jìn)行通信。</p><p>  套接字是TCP/IP中的基本概念,它的作用類似于日常使用的插座,主要用來實(shí)現(xiàn)將TCP/IP包發(fā)送到指定的IP地址。通過TCP/IP Soc

35、ket可以實(shí)現(xiàn)可靠、雙向、一致、點(diǎn)對點(diǎn)、基于流的主機(jī)和Internet之間的連接。使用Socket可以用來連接Java的I/O系統(tǒng)到其他程序,這些程序可以在本地計(jì)算機(jī)上,也可以在Internet的遠(yuǎn)程計(jì)算機(jī)上。</p><p>  利用Socket實(shí)現(xiàn)數(shù)據(jù)傳送的基本原理</p><p>  服務(wù)器程序啟動后,服務(wù)器應(yīng)用程序偵聽特定端口,等待客戶的連接請求,當(dāng)一個連接請求到達(dá)時,客戶和服務(wù)器

36、之間建立一個通信連接,在連接過程中,客戶被分配一個本地端口號與一個Socket連接,客戶通過寫Socket來通知服務(wù)器,服務(wù)器通過讀Socket來獲取信息。類似地,服務(wù)器也獲取一個本地端口號,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務(wù)器也給它的本地端口連接一個Socket并讀寫它,以便與客戶通信。</p><p>  應(yīng)用程序一般僅在同一類的套接字之間通訊。不過只要底層的通信協(xié)議允許,不同類型的套接

37、字之間也可以通信。</p><p>  套接字(Socket)的類型</p><p>  Java中套接字一般有兩種類型:TCP套接字和UDP套接字。</p><p>  TCP 和 UDP 扮演相同角色,但做法不同。兩者都接收傳輸協(xié)議數(shù)據(jù)包并將其內(nèi)容向前傳送到表示層。</p><p>  TCP 把消息分解成數(shù)據(jù)包(數(shù)據(jù)報(bào),datagram

38、s)并在接收端以正確的順序把它們重新裝配起來。TCP 還處理對遺失數(shù)據(jù)包的重傳請求。有了 TCP,位于上層的層要擔(dān)心的事情就少多了。</p><p>  UDP 不提供裝配和重傳請求這些功能。它只是向前傳送信息包。位于上層的層必須確保消息是完整的并且是以正確的順序裝配的。</p><p>  一般而言,UDP 強(qiáng)加給您的應(yīng)用程序的性能開銷更小,但只在應(yīng)用程序不會突然交換大量數(shù)據(jù)并且不必裝配

39、大量數(shù)據(jù)報(bào)以完成一條消息的時候。否則,TCP 才是最簡單或許也是最高效的選擇。</p><p><b>  2.4 多線程技術(shù)</b></p><p>  多線程,是指從軟件或者硬件上實(shí)現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時間運(yùn)行多于一個線程,進(jìn)而提升整體處理效能。具有這種能力的系統(tǒng)包括對稱多處理機(jī)、多內(nèi)核處理器以及芯片級多處理(C

40、hip-level multithreading)或同時多線程(Simultaneous multithreading)處理器。</p><p><b>  多線程概述</b></p><p>  多線程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個指令流,每個指令流都稱為一個線程,彼此間互相獨(dú)立。</p><p>  線程又稱為輕量級進(jìn)程,它和進(jìn)

41、程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒有獨(dú)立的存儲空間,而是和所屬進(jìn)程中的其它線程共享一個存儲空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡單。</p><p>  多個線程的執(zhí)行是并發(fā)的,也就是在邏輯上“同時”,而不管是否是物理上的“同時”。如果系統(tǒng)只有一個CPU,那么真正的“同時”是不可能的,但是由于CPU的速度非???,用戶感覺不到其中的區(qū)別,因此我們也不用關(guān)心它,只需要設(shè)想各個線程是同時執(zhí)行即可。

42、</p><p>  多線程和傳統(tǒng)的單線程在程序設(shè)計(jì)上最大的區(qū)別在于,由于各個線程的控制流彼此獨(dú)立,使得各個線程之間的代碼是亂序執(zhí)行的。</p><p>  在Java中實(shí)現(xiàn)多線程</p><p>  Java提供了類java.lang.Thread來方便多線程編程,這個類提供了大量的方法來方便我們控制自己的各個線程,我們以后的討論都將圍繞這個類進(jìn)行。</p&

43、gt;<p>  那么如何提供給 Java 我們要線程執(zhí)行的代碼呢?讓我們來看一看 Thread 類。Thread 類最重要的方法是run(),它為Thread類的方法start()所調(diào)用,提供我們的線程所要執(zhí)行的代碼。為了指定我們自己的代碼,只需要覆蓋它!</p><p>  方法:繼承 Thread 類,覆蓋方法 run(),我們在創(chuàng)建的 Thread 類的子類中重寫 run() ,加入線程所要

44、執(zhí)行的代碼即可。</p><p>  3. 系統(tǒng)的分析與設(shè)計(jì)</p><p>  3.1系統(tǒng)的總體需求</p><p>  人們?nèi)粘I钪性絹碓蕉嗟厥褂眯录夹g(shù)來為自己的工作和學(xué)習(xí)服務(wù)。一個操作簡單、界面友好、運(yùn)行穩(wěn)定的網(wǎng)絡(luò)聊天室對于小型局域網(wǎng)內(nèi)的用戶可以起到很好的交流作用。本聊天系統(tǒng)就是一個用于局域網(wǎng)的聊天系統(tǒng),雖然聊天的基本功能和許多大型的聊天室相比該聊天系統(tǒng)比較

45、簡單,但能實(shí)現(xiàn)聊天的基本功能,可以公聊和私聊等,基于時間和技術(shù)的原因,很遺憾傳送文件的功能尚未實(shí)現(xiàn)。</p><p>  服務(wù)器端主要完成兩個功能:服務(wù)器信息管理和用戶信息管理。服務(wù)器端啟動服務(wù)器與客戶端進(jìn)行連接。</p><p>  客戶端主要實(shí)現(xiàn)三個方面的功能:用戶注冊、用戶登錄和用戶聊天??蛻舳松暾埮c服務(wù)器端建立連接,當(dāng)客戶斷與服務(wù)器端建立連接通道后就可以向服務(wù)器端發(fā)送登陸信息,然后

46、客戶端完成信息的編輯、發(fā)送和接受功能。</p><p>  圖3.1系統(tǒng)的功能模塊</p><p><b>  3.2客戶端的功能</b></p><p>  服務(wù)器程序啟動后,服務(wù)器應(yīng)用程序偵聽特定端口,等待客戶的連接請求,當(dāng)一個連接請求到達(dá)時,客戶和服務(wù)器之間建立一個通信連接,連接成功后同時連接到服務(wù)器端的兩個已注冊用戶就可以在聊天室進(jìn)行聊

47、天。</p><p><b>  3.2.1用戶注冊</b></p><p>  用戶可以通過提供基本信息注冊成為本聊天系統(tǒng)的合法用戶。</p><p> ?。?)判斷用戶名、密碼、頭像、年齡等信息是否不為空。</p><p> ?。?)判斷輸入密碼與判斷密碼是否一致。</p><p> ?。?)

48、判斷電子郵件是否為合法電子郵件。</p><p><b>  3.2.2用戶登錄</b></p><p>  注冊用戶可以通過輸入用戶名和密碼登錄聊天系統(tǒng)以便與其他用戶聊天。</p><p> ?。?)判斷用戶名是否存在。</p><p> ?。?)判斷登錄的用戶名和密碼是否正確。</p><p>

49、; ?。?)退出登錄程序。</p><p> ?。?)進(jìn)入注冊程序。</p><p><b>  3.2.3用戶聊天</b></p><p>  登錄聊天系統(tǒng)的用戶可以進(jìn)行群聊或者私聊。</p><p> ?。?)可以向登錄聊天系統(tǒng)的個用戶發(fā)送聊天信息進(jìn)行群聊。</p><p>  (2)可以向指

50、定登錄聊天系統(tǒng)用戶發(fā)送信息進(jìn)行私聊。</p><p>  (3)可以查看時鐘。</p><p> ?。?)可以保存用戶聊天記錄。</p><p> ?。?)可以清除屏幕信息。</p><p><b>  3.3流程設(shè)計(jì)</b></p><p><b>  是</b></

51、p><p><b>  否</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p>

52、<p><b>  否 </b></p><p><b>  是</b></p><p>  圖3.2 聊天系統(tǒng)流程圖</p><p>  3.4分析Socket在客戶端的開發(fā)流程</p><p>  Socket(套接字)用于實(shí)現(xiàn)網(wǎng)絡(luò)上客戶端程序和服務(wù)器端程序之間的連接。</

53、p><p>  客戶端Socket應(yīng)用程序與服務(wù)器端Socket應(yīng)用程序的流程很相似,最大的差別在于:</p><p> ?。?) 服務(wù)器端Socket應(yīng)用程序主要用于偵聽及接收客戶端的連接,而客戶端Socket應(yīng)用程序則用于嘗試與服務(wù)器端建立連接。</p><p> ?。?) 客戶端Socket應(yīng)用程序發(fā)送信息指令至服務(wù)器端,并接收服務(wù)器端所返回的結(jié)果;而服務(wù)器端

54、Socket應(yīng)用程序則處理指令邏輯,并將結(jié)果或錯誤信息發(fā)送至客戶端。</p><p>  客戶端應(yīng)用程序首先通過socket函數(shù)建立客戶端的socket,其主要目的是與指令的服務(wù)器端(指定主機(jī)的IP地址及通信端口號)建立連接,此操作由connect來完成。當(dāng)服務(wù)器端收到connect的連接請求時,則由服務(wù)器端建立連接。</p><p>  建立客戶端Socket應(yīng)用程序的步驟大致如下:&l

55、t;/p><p> ?。?)建立客戶端的Socket,在建立時需指定欲連接服務(wù)器端的主機(jī)名稱(或IP地址)與Internet服務(wù)的通信端口。</p><p> ?。?)發(fā)送特定信息或指令至服務(wù)器端。</p><p> ?。?)接收服務(wù)器端返回的執(zhí)行結(jié)果或錯誤信息,并以特定格式顯示。</p><p> ?。?)當(dāng)客戶端不需要服務(wù)器端的處理時,便關(guān)閉

56、Socket通信連接。</p><p>  3.5系統(tǒng)的設(shè)計(jì)方案</p><p>  聊天系統(tǒng)的設(shè)計(jì)跟普通的網(wǎng)站設(shè)計(jì)有著許多不同的地方,普通網(wǎng)站設(shè)計(jì)所考慮的因素,例如,普通網(wǎng)站需要對布局進(jìn)入大量美化以及動畫設(shè)計(jì)等等,而聊天室只要提供滿足訪客雙方直接實(shí)時聊天即可。因此,在設(shè)計(jì)聊天系統(tǒng)的過程中,必須要考慮好以下幾個設(shè)計(jì)要點(diǎn):</p><p><b>  實(shí)現(xiàn)思

57、想</b></p><p><b>  3.5.1實(shí)現(xiàn)思想</b></p><p>  在Internet上的聊天程序一般都是以服務(wù)器提供服務(wù)端連接響應(yīng),使用者通過客戶端程序登錄到服務(wù)器,就可以與登錄在同一服務(wù)器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在TCP/IP環(huán)境下,實(shí)現(xiàn)服務(wù)器端和客戶端兩部分程序。</p><p&g

58、t;  3.5.2客戶端工作流程</p><p>  客戶端程序相對簡單,只需要建立一個Socket與服務(wù)器端連接,成功后通過這個Socket來發(fā)送和接收數(shù)據(jù)就可以了。</p><p>  系統(tǒng)采用客戶/服務(wù)器模式(如圖)</p><p>  圖3.3 客戶和服務(wù)器之間的傳輸</p><p>  在服務(wù)器端程序中,首先通過ServerUI啟動

59、服務(wù)器,然后通過QqServer等待客戶端的連接。當(dāng)收到來自客戶端的連接請求時,便通過QqServerThread線程建立與客戶端的連接。</p><p>  客戶端的應(yīng)用程序與服務(wù)器段Socket應(yīng)用程序的流程很相似,最大的區(qū)別在于:</p><p> ?。?) 服務(wù)器端Socket應(yīng)用程序主要用于偵聽及接收客戶端的連接,而客戶端Socket應(yīng)用程序則用于嘗試與服務(wù)器端建立連接。<

60、/p><p> ?。?) 客戶端Socket應(yīng)用程序發(fā)送信息指令至服務(wù)器端,并接收服務(wù)器端返回的結(jié)果;而服務(wù)器端Socket應(yīng)用程序則處理指令邏輯,并將結(jié)果或錯誤信息發(fā)送至客戶端。</p><p>  其中里面也用到了TCP傳輸協(xié)議,TCP協(xié)議是TCP/IP的傳輸層提供用于主機(jī)間傳輸數(shù)據(jù)的傳輸協(xié)議。</p><p>  TCP(Transmission Control

61、Protocol)為面向鏈接的通信協(xié)議,其主要目的是提供大量數(shù)據(jù)的傳輸并確保傳輸無誤,具有錯誤偵測、數(shù)據(jù)復(fù)原及數(shù)據(jù)重送等功能。</p><p>  TCP在傳輸數(shù)據(jù)之前,會先在主機(jī)間(例如服務(wù)器端和客戶端)建立通信鏈接,通過此通信鏈接,數(shù)據(jù)可在計(jì)算機(jī)間傳輸,如圖3.3所示。</p><p><b>  發(fā)送請求</b></p><p><

62、b>  確認(rèn)請求</b></p><p><b>  建立通信</b></p><p>  客戶端 服務(wù)器端</p><p>  圖3.4 TCP通信協(xié)議</p><p>  3.6 性能需求分析 </p><p> ?。?

63、)可靠性高,能在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應(yīng)處理,使程序具有較高的容錯性能。</p><p> ?。?)宜操作性,程序簡單易懂,容易上手使用。設(shè)計(jì)界面是簡化界面,模擬 QQ 等現(xiàn)有即時通訊工具的界面,使用戶能很容易看懂并使用。 </p><p>  (3)開發(fā)文檔易理解,保證以后自己二次開發(fā)或他人接手開發(fā)時,能夠清晰的理解整個系統(tǒng)的設(shè)計(jì)思路和實(shí)現(xiàn)細(xì)節(jié)。 </p>

64、<p> ?。?)模塊化設(shè)計(jì)此軟件的功能,不同的模塊實(shí)現(xiàn)不同的功能,使得軟件易于以后的維護(hù)與擴(kuò)展,方便于在工作中的應(yīng)用。 </p><p><b>  4. 系統(tǒng)的實(shí)現(xiàn)</b></p><p>  4.1系統(tǒng)的模塊分析</p><p>  本系統(tǒng)主要有系統(tǒng)的登錄(Login.java)、系統(tǒng)的注冊(Register.java)、聊

65、天室(ChatRoom.java)、服務(wù)器程序(AppServer.java)和服務(wù)器與客戶端的連接程序(Connection.java)、服務(wù)器的框架程序(FrameServer.java)。</p><p>  現(xiàn)在主要來介紹客戶端的幾個程序的實(shí)現(xiàn):</p><p>  Login.java是系統(tǒng)的登錄程序,主要用到了AWT的圖形用戶界面和Java的事件處理。其主要功能包括獲取用戶名和

66、密碼以及驗(yàn)證用戶名密碼是否正確等,同時可以進(jìn)入逐層界面。</p><p>  Register.java為用戶的注冊程序,用戶通過輸入相關(guān)信息注冊成聊天系統(tǒng)用戶的功能。用戶填寫完信息后點(diǎn)擊確定按鈕將進(jìn)行驗(yàn)證,如:用戶名不能為空,兩次密碼應(yīng)一致,年齡必須為合法年齡,電子郵件必須為合法的電子郵件格式。點(diǎn)擊返回按鈕則進(jìn)入用戶登錄界面,點(diǎn)擊清空可以將填寫信息清空恢復(fù)到初始狀態(tài)。</p><p> 

67、 ChatRoom.java是本系統(tǒng)的用戶聊天程序,主要提供用戶即時聊天的功能。用戶可以清除之前的聊天內(nèi)容、可以更改字體顏色字號、也可以將聊天記錄保存到記事本中。</p><p><b>  4.2主要引入的包</b></p><p>  1. import javax.swing.*</p><p>  提供一組“輕量級”(全部是Java語

68、言)組件,盡量讓這些組件在所有平臺上的工作方式都相同。</p><p>  2. import java.awt.*;</p><p>  包含Java語言用來構(gòu)建圖形用戶界面(GUI)的類庫,包括許多界面元素和資源。Java.awt包提供Java語言中的圖形類、組成類、容器類、排列類、幾何類、事件類、和工具類等。</p><p>  3.import java.a

69、wt.event.*;</p><p>  Java.awt.event包是對JDK1.0版本中原有的Event類的一個擴(kuò)充,它使得程序可以用不同的方式來處理不同類型的事件。該包中定義了許多不同類型的事件監(jiān)聽器類,使每個圖形界面元素本身可以處理它上面的事件。</p><p>  4.import java.net.*;</p><p>  提供用于網(wǎng)絡(luò)應(yīng)用程序的類。

70、這些類包括用于創(chuàng)建套接字的工廠。使用套接字工廠可以封裝套接字的創(chuàng)建和配置行為。</p><p>  5.import java.io.*;</p><p>  通過數(shù)據(jù)流、序列化和文件系統(tǒng)提供系統(tǒng)輸入和輸出。 除非另有說明,否則向此包的任何類或接口中的構(gòu)造方法或方法傳遞 null 參數(shù)時,都將拋出 NullPointerException。 </p><p>  6

71、. import java.util.*;</p><p>  包含collection框架、遺留的collection類、事件模型、日期和時間設(shè)施、國際化和各種實(shí)用工具類(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組)。</p><p><b>  4.3主要代碼</b></p><p>  聊天室ChatRoom.java中主要方法</p&

72、gt;<p>  // /////////監(jiān)聽按鈕響應(yīng)//////////////</p><p>  public void actionPerformed(ActionEvent ae) {</p><p>  Object source = (Object) ae.getSource();</p><p>  if (source.equals(

73、btnTimer)) {</p><p>  new Clock();</p><p><b>  }</b></p><p>  if (source.equals(btnCls)) {</p><p>  clearMessage();</p><p><b>  }</b&g

74、t;</p><p>  if (source.equals(btnExit)) {</p><p><b>  exit();</b></p><p><b>  }</b></p><p>  if (source.equals(btnSend)) {</p><p> 

75、 sendMessage();</p><p><b>  }</b></p><p>  if (source.equals(btnSave)) {</p><p>  saveMessage();</p><p><b>  }</b></p><p>  if (sou

76、rce.equals(lstUserList)) // 雙擊列表框</p><p><b>  {</b></p><p>  changeUser();</p><p><b>  }</b></p><p><b>  } </b></p><p>

77、  // /////////監(jiān)聽窗口關(guān)閉響應(yīng)//////////////</p><p>  class Windowclose extends WindowAdapter {</p><p>  public void windowClosing(WindowEvent e) {</p><p><b>  exit();</b></p

78、><p><b>  }</b></p><p><b>  }</b></p><p><b>  // "清屏"按鈕</b></p><p>  public void clearMessage() {</p><p>  taUse

79、rMessage.setText("");</p><p><b>  }</b></p><p><b>  // "退出"按鈕</b></p><p>  public void exit() {</p><p>  Exit exit = new Exi

80、t();</p><p>  exit.exitname = strLoginName;</p><p><b>  // 發(fā)送退出信息</b></p><p><b>  try {</b></p><p>  Socket toServer = new Socket(strServerIp, 1

81、001);</p><p>  // 向服務(wù)器發(fā)送信息</p><p>  ObjectOutputStream outObj = new ObjectOutputStream(toServer</p><p>  .getOutputStream());</p><p>  outObj.writeObject(exit);</p&g

82、t;<p>  outObj.close();</p><p>  toServer.close();</p><p>  frmChat.dispose();</p><p>  // this.destroy();</p><p>  } catch (Exception e) {</p><p>&

83、lt;b>  }</b></p><p>  } // exit()結(jié)束</p><p><b>  // "發(fā)送"按鈕</b></p><p>  public void sendMessage() {</p><p>  Chat chatobj = new Chat();<

84、;/p><p>  chatobj.chatUser = strLoginName;</p><p>  chatobj.chatMessage = txtMessage.getText();</p><p>  chatobj.chatToUser = String.valueOf(cmbUser.getSelectedItem());</p><

85、p>  chatobj.whisper = chPrivateChat.isSelected() ? true : false;</p><p>  chatobj.emote = emote.getSelectedItem().toString();</p><p>  // 向服務(wù)器發(fā)送信息</p><p><b>  try {</b&g

86、t;</p><p>  Socket toServer = new Socket(strServerIp, 1001);</p><p>  ObjectOutputStream outObj = new ObjectOutputStream(toServer</p><p>  .getOutputStream());</p><p> 

87、 outObj.writeObject(chatobj);</p><p>  txtMessage.setText(""); // 清空文本框</p><p>  outObj.close();</p><p>  toServer.close();</p><p>  } catch (Exception e) {&l

88、t;/p><p><b>  }</b></p><p>  } // sendMessage()結(jié)束</p><p><b>  // "保存"按鈕</b></p><p>  public void saveMessage() {</p><p><

89、b>  try {</b></p><p>  FileOutputStream fileoutput = new FileOutputStream(</p><p>  this.strLoginName + "_message.txt", true);</p><p>  String temp = taUserMessag

90、e.getText();</p><p>  fileoutput.write(temp.getBytes());</p><p>  fileoutput.close();</p><p>  JOptionPane.showMessageDialog(null, "聊天記錄保存在" + this.strLoginName</p>

91、<p>  + "_message.txt");</p><p>  } catch (Exception e) {</p><p>  System.out.println(e);</p><p><b>  }</b></p><p><b>  }</b><

92、;/p><p>  // 將所選用戶添加到cmbUser中</p><p>  public void changeUser() {</p><p>  boolean key = true;</p><p>  String selected = lstUserList.getSelectedItem();</p><p&g

93、t;  for (int i = 0; i < cmbUser.getItemCount(); i++) {</p><p>  if (selected.equals(cmbUser.getItemAt(i))) {</p><p>  key = false;</p><p><b>  break;</b></p>&

94、lt;p><b>  }</b></p><p><b>  }</b></p><p>  if (key == true) {</p><p>  cmbUser.insertItemAt(selected, 0);</p><p><b>  }</b></p

95、><p>  String head = getUserHead(lstUserList.getSelectedItem());</p><p>  // JOptionPane.showMessageDialog(null, head);</p><p>  cmbUser.setSelectedItem(selected);</p><p>

96、  headLabel.setIcon(new ImageIcon("face//" + head + ".JPG"));</p><p>  } // changeUser()結(jié)束</p><p>  protected void freshHead() {</p><p>  // TODO 自動生成方法存根</p&

97、gt;<p>  String head = getUserHead(cmbUser.getSelectedItem().toString());</p><p>  // JOptionPane.showMessageDialog(null, head);</p><p>  // cmbUser.setSelectedItem(selected);</p>

98、<p>  headLabel.setIcon(new ImageIcon("face//" + head + ".JPG"));</p><p><b>  }</b></p><p>  private String getUserHead(String selectedItem) {</p><

99、;p>  // TODO 自動生成方法存根</p><p>  String head = "oo";</p><p>  for (int i = 0; i < messobj.userOnLine.size(); i++) {</p><p>  String User = ((Customer) messobj.userOnLi

100、ne.elementAt(i)).custName;</p><p>  head = ((Customer) messobj.userOnLine.elementAt(i)).custHead;</p><p>  if (User.equals(selectedItem)) {</p><p><b>  break;</b></p&

101、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  public static void main(String args[]) {

102、</p><p>  new ChatRoom("測試用戶", "127.0.0.1");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.4界面設(shè)計(jì)</b></p&g

103、t;<p><b>  4.4.1登錄界面</b></p><p>  用戶進(jìn)入登錄頁面后首先輸入正確的用戶名密碼然后點(diǎn)擊登錄就可進(jìn)入登錄界面,若第一次登錄請先注冊。單擊注冊按鈕,則用戶進(jìn)入注冊界面,填入相應(yīng)的信息以注冊。點(diǎn)擊退出按鈕則直接退出聊天系統(tǒng)。</p><p>  圖4.1用戶登錄界面</p><p><b>

104、  4.4.2注冊界面</b></p><p>  未注冊用戶可以通過輸入合法的用戶名、密碼、確認(rèn)密碼、郵箱、性別、年齡等信息后點(diǎn)擊確定按鈕。若注冊成功,則可以點(diǎn)擊返回按鈕,進(jìn)入登錄界面進(jìn)行登錄。若注冊失敗則會有提示信息,根據(jù)提示信息進(jìn)行信息的更改。如果信息填寫錯誤想直接清除所有已填寫信息直接點(diǎn)擊清空按鈕。</p><p>  圖4.2用戶注冊界面</p><

105、;p><b>  4.4.3聊天界面</b></p><p>  用戶登錄到聊天系統(tǒng)后,進(jìn)入聊天界面可以進(jìn)行群聊也可以進(jìn)行私聊,默認(rèn)情況下,用戶輸入的聊天信息會發(fā)送到聊天室里的每一個人,只有用戶選擇了聊天對象,并且選擇了【私聊】復(fù)選框,就可以向指定的用戶發(fā)送聊天信息進(jìn)行私人聊天,這種情況下發(fā)送的聊天信息除了指定用戶外,其他用戶看不到該信息。</p><p>  

106、用戶可以在聊天過程中點(diǎn)擊【保存】按鈕,可以將當(dāng)前的聊天記錄保存到文件中。</p><p>  用戶可以在聊天過程中點(diǎn)擊【清屏】按鈕,可以將當(dāng)前顯示在屏幕上的聊天信息清除。</p><p>  用戶可以在聊天過程中點(diǎn)擊【時鐘】按鈕,聊天系統(tǒng)將以時鐘形式顯示當(dāng)前時間。</p><p>  除了以上功能外,用戶還可以更改聊天內(nèi)容的字體、字號、顏色等信息。</p>

107、;<p><b>  圖4.3聊天界面</b></p><p>  4.4.4 查看聊天記錄界面</p><p>  點(diǎn)擊【聊天記錄】按鈕,可以查看自己的聊天記錄,若聊天記錄為空,則彈出對話框顯示“對不起,您沒有保存任何記錄”。聊天記錄如圖4.4所示。</p><p>  圖4.4聊天記錄界面</p><p&g

108、t;<b>  4.4.5時鐘界面</b></p><p>  在聊天界面中點(diǎn)擊【時鐘】按鈕,則出現(xiàn)下圖的界面。</p><p><b>  圖4.5時鐘界面</b></p><p><b>  5. 總結(jié)</b></p><p>  本文討論了如何利用JAVA技術(shù)開發(fā)一個聊天

109、系統(tǒng),基本滿足了結(jié)構(gòu)化,界面友好、安全性及穩(wěn)定性等特點(diǎn)。</p><p>  在當(dāng)今網(wǎng)絡(luò)通信飛速發(fā)達(dá),電腦密布的世界當(dāng)中,一個簡單高效的聊天通信軟件是如此的具有實(shí)用性,它能方便的讓用戶相互快速的傳遞信息,溝通感情節(jié)省人力物力、經(jīng)濟(jì)又時效,所以我們應(yīng)當(dāng)重視對它的相關(guān)研究與開發(fā)。</p><p>  在這次得畢業(yè)設(shè)計(jì)中,我應(yīng)用了JAVA開發(fā)工具在Windows平臺上開發(fā)了一個聊天系統(tǒng),在這一重

110、要的領(lǐng)域進(jìn)行了相關(guān)的實(shí)踐,不管是對做這個聊天軟件的設(shè)計(jì),還是資料查閱的能力,都起了相當(dāng)大的益處。所以,我決定認(rèn)真總結(jié)這次畢業(yè)設(shè)計(jì)的經(jīng)驗(yàn),以及學(xué)習(xí)到的知識,來更加的充實(shí)自己的頭腦范圍和完善自己的知識結(jié)構(gòu)。</p><p>  系統(tǒng)著重為實(shí)現(xiàn)相互聊天的應(yīng)用部分。由于時間和自己的能力有限的原因,這個聊天系統(tǒng)的功能還不夠完善,最初打算加上資料上傳的功能可是最終沒能實(shí)現(xiàn)。不過在做這個畢業(yè)設(shè)計(jì)的過程中仍然學(xué)習(xí)到了很多東西。使

111、我對java的認(rèn)識了解更加的深入。雖然課程設(shè)計(jì)順利的完成了,但由于水平有限,還是有很多的欠缺跟不足之處,希望老師給予指正。</p><p>  課程設(shè)計(jì)的機(jī)會不是很多,由于所學(xué)的知識包含了太多的方面,所以實(shí)踐方面還是遠(yuǎn)遠(yuǎn)不夠。 雖然課程設(shè)計(jì)順利的完成了,但由于水平有限,還是有很多的欠缺跟不足之處,希望老師給予指正。</p><p><b>  參考文獻(xiàn)</b><

112、/p><p>  1、劉志成.Java程序設(shè)計(jì)案例教程.清華大學(xué)出版社.2008</p><p>  2、龐永慶,翟鵬.Java 完全自學(xué)寶典.清華大學(xué)出版社.2008</p><p>  3、印雯.Java 語言與面向?qū)ο蟪绦蛟O(shè)計(jì).清華大學(xué)出版編著</p><p>  4、劉永華,于春花.Java 網(wǎng)絡(luò)編程.清華大學(xué)出版社.2008 </

113、p><p>  5、李樹青.Java 通用范例開發(fā)金典.電子工業(yè)出版社.2009</p><p>  6、薛為民, 夏文紅, 解侖.Java 應(yīng)用教程 北京:北京交通大學(xué)出版社 2005</p><p>  7、孫一林,彭波.Java 網(wǎng)絡(luò)編程實(shí)例.清華大學(xué)出版社.2003(4)</p><p>  8、胡少峰、趙克、耿春霞.一種基于Java技術(shù)

114、的聊天室系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).</p><p>  [J].電腦與信息技術(shù) 2002年第04期</p><p>  9、清宏計(jì)算機(jī)工作室.《JAVA編程技巧》. 機(jī)械工業(yè)出版社</p><p>  10、耿祥義,張躍平.《JAVA實(shí)用教程》. 清華大學(xué)出版社,2003</p><p><b>  致謝</b></p&

115、gt;<p>  在本次畢業(yè)設(shè)計(jì)過程中,馬建斌老師認(rèn)真負(fù)責(zé)的工作態(tài)度,一次次不厭其煩地幫我分析相關(guān)技術(shù),解決技術(shù)難題,并教給我正確的研究方法,研究思路,以及嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我受益匪淺。無論在理論上還是在實(shí)踐中,多給予了我很大的幫助,使我得到很大的提高,這對于我以后的工作和學(xué)習(xí)都有很大的幫助,在此期間他給我的論文提出了大量有價值的建議,并從繁忙的工作中抽出時間給予指導(dǎo),在此向馬老師表示衷心的感謝。</

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論