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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科生畢業(yè)設計(論文)</p><p>  基于Java的網(wǎng)絡通信系統(tǒng)設計與實現(xiàn)</p><p><b>  2009年6 月</b></p><p> 學 院、系:計算機與通信學院 </p><p> 專

2、 業(yè):通信工程 </p><p> 學 生 姓 名:</p><p> 班 級:學號 </p><p> 指導教師姓名:職稱 </p><p> 最終評定成績</p><p><b&g

3、t;  摘 要</b></p><p>  在網(wǎng)絡越來越發(fā)達的今天,人們對網(wǎng)絡的依賴越來越多,越來越離不開網(wǎng)絡,由此而產(chǎn)生的聊天工具越來越多,例如,國外的ICQ、國內(nèi)騰訊公司開發(fā)的OICQ。隨著網(wǎng)絡聊天一類的聊天系統(tǒng)的發(fā)展日新月異,因此產(chǎn)生了制作一個類似QQ的網(wǎng)絡聊天工具。Java是一種程序設計語言,它具有簡單的、完全面向?qū)ο笠约芭c平臺無關的結(jié)構(gòu),也具有可移植性、高性能和安全性,并提供了多線程的功能

4、,而Java語言最大的成功之處在于它的平臺無關性和具有強大的網(wǎng)絡編程功能,基于Java網(wǎng)絡編程的強大功能,本人將用Java編寫一個網(wǎng)絡聊天系統(tǒng)。</p><p>  論文首先論述了系統(tǒng)的開發(fā)背景,并對所用到的開發(fā)工具與關鍵技術做了簡單的介紹。接著對系統(tǒng)的研究意義,研究現(xiàn)狀及設計目標進行分析,通過對系統(tǒng)需求和可行性進行分析,確定了系統(tǒng)的功能模塊,并畫出相應的功能結(jié)構(gòu)圖、模塊圖和數(shù)據(jù)流圖。其次按系統(tǒng)總體設計的結(jié)果,對

5、系統(tǒng)中的數(shù)據(jù)庫進行結(jié)構(gòu)設計。</p><p>  一般來說,聊天工具大多數(shù)由客戶端程序和服務器程序,外加服務器端用于存放客戶數(shù)據(jù)的數(shù)據(jù)庫組成,本系統(tǒng)采用客戶機/服務器架構(gòu)模式,通過Java提供的Socket類來連接客戶機和服務器并使客戶機和服務器之間相互通信,由于聊天是多點對多點的,而Java提供的多線程功能,用多線程可完成多點對多點的聊天。數(shù)據(jù)庫管理系統(tǒng)用SQL Server2000,完成并通過JDBC-ODB

6、C橋訪問數(shù)據(jù)庫。聊天系統(tǒng)完成后將可進行多人對多人的聊天,對好友進行添加、刪除,對新用戶的注冊,發(fā)送消息、接受消息,傳輸文件等功能。界面設計細分化,方便使用者操作和理解。服務器實現(xiàn)了查詢和修改等功能,程序邏輯聯(lián)系較緊密。</p><p>  關鍵詞:JAVA,C/S,SQL Server 2000, 多線程, 數(shù)據(jù)庫管理系統(tǒng)</p><p><b>  ABSTRACT</b

7、></p><p>  More and more developed in the network today, people rely on more and more networks, and can not leave with out it. This caused the chat materials become more numerous, as the overseas ICQ syst

8、em, the OICQ system that invented by Tencent Co., and so on. So we create a network chat medium just like the QQ.Java is a programming language with the simple construction which is completely object-oriented 。Java also

9、possess the portability, high performance and security, and provide the multi – thread </p><p>  Generally speaking, most chat medium consist the client program, server program and the server which is use to

10、 content the database. This system adopt client/server pattern and the Socket class provide by Java to communicate the client and server. Because of chat is many to many, the multithreading function can implement the man

11、y-many chat, database management system use SQL Server2000 and JDBC-ODBC bridge to visit the database. When chat system is achieved, it can possess functions like chat i</p><p>  Keyword: Java, Multithreadi

12、ng, Client/Server, SQL Server2000,</p><p>  Database Management System</p><p><b>  目 錄</b></p><p><b>  第1章 緒論1</b></p><p>  1.1 課題選擇的背景1</

13、p><p>  1.2 課題選擇意義1</p><p>  1.3 系統(tǒng)開發(fā)技術簡介2</p><p>  1.3.1 Java簡介2</p><p>  1.3.2 JDBC技術簡介2</p><p>  1.3.3 數(shù)據(jù)庫Microsoft SQL-Server 2000 簡介4</p>&l

14、t;p>  1.3.4 多線程介紹4</p><p>  第2章 系統(tǒng)分析6</p><p>  2.1 系統(tǒng)需求6</p><p>  2.1.1 系統(tǒng)的特點分析6</p><p>  2.1.2 網(wǎng)絡聊天系統(tǒng)需要解決的問題6</p><p>  2.2 系統(tǒng)設計思想6</p><

15、;p>  2.3 系統(tǒng)實現(xiàn)功能分析7</p><p>  2.4 系統(tǒng)開發(fā)及運行環(huán)境7</p><p>  第3章 系統(tǒng)總體設計8</p><p>  3.1 總體構(gòu)架8</p><p>  3.2 系統(tǒng)整體功能8</p><p>  3.3 系統(tǒng)模塊功能設計9</p><p>

16、;  第4章 數(shù)據(jù)庫設計12</p><p>  4.1 系統(tǒng)E-R圖12</p><p>  4.2 數(shù)據(jù)字典12</p><p>  4.3 各個數(shù)據(jù)表的創(chuàng)建12</p><p>  4.4 數(shù)據(jù)庫的連接13</p><p>  第5章 系統(tǒng)實現(xiàn)與編碼15</p><p>  5

17、.1 服務器功能模塊的設計15</p><p>  5.1.1 Socket和ServerSocket介紹15</p><p>  5.2 服務器功能模塊的實現(xiàn)16</p><p>  5.2.1 多線程服務器模塊實現(xiàn)16</p><p>  5.2.2 在線用戶管理模塊實現(xiàn)18</p><p>  5.2.

18、3 部門管理模塊實現(xiàn)20</p><p>  5.2.4 用戶管理模塊實現(xiàn)21</p><p>  5.2.5日志管理模塊實現(xiàn)22</p><p>  5.3協(xié)議設計與實現(xiàn)23</p><p>  5.3.1 協(xié)議規(guī)則23</p><p>  5.3.2 協(xié)議實現(xiàn)24</p><p>

19、;  5.4客戶端功能模塊的設計與實現(xiàn)27</p><p>  5.4.1 登陸認證模塊27</p><p>  5.4.2 主界面模塊27</p><p>  5.4.3 聊天模塊28</p><p>  5.4.4 文件傳輸模塊29</p><p>  第6章 系統(tǒng)測試33</p><

20、;p>  6.1 系統(tǒng)測試概述33</p><p>  6.1.1 測試目標33</p><p>  6.1.2 測試實例研究與選擇33</p><p>  6.1.3 系統(tǒng)測試環(huán)境33</p><p>  6.2 測試內(nèi)容34</p><p>  6.2.1 服務器模塊測試34</p>

21、<p>  6.2.2 客戶端模塊測試34</p><p>  6.2.3 平臺兼容性測試35</p><p>  6.3 測試結(jié)果分析評價35</p><p><b>  結(jié) 論36</b></p><p><b>  參考文獻37</b></p><p

22、><b>  致 謝38</b></p><p><b>  第1章 緒論</b></p><p>  1.1 課題選擇的背景</p><p>  信息時代的到來引發(fā)了一場知識和信息革命,計算機和現(xiàn)代網(wǎng)絡技術的廣泛應用極大地促進了社會經(jīng)濟的發(fā)展,同時也帶來了一些新興產(chǎn)業(yè)的發(fā)展,比如聊天軟件。隨著計算機網(wǎng)絡日新月異的

23、發(fā)展,人們的交流方式越來越多,傳統(tǒng)的交流方式已經(jīng)難以滿足人們的交流的需求了,網(wǎng)絡聊天已經(jīng)慢慢成為人們生活的一部分,呈現(xiàn)出良好的勢頭和廣闊的發(fā)展前景。在互聯(lián)網(wǎng)上即時的和好友取得聯(lián)系,已經(jīng)成為當今社會人們主流的聯(lián)系方式。同時,即時通信系統(tǒng)對現(xiàn)代企業(yè)也有著重大意義,它能實現(xiàn)快速人際交流、數(shù)據(jù)共享,從而提高效率和生產(chǎn)力。實時通信為諸多企業(yè)開拓了網(wǎng)絡應用的新領域。自從它誕生以來,以實時交互、資費低廉等優(yōu)點,受到廣大個人用戶的喜愛,已經(jīng)成為網(wǎng)絡生活

24、中不可或缺的一部分。越來越多的企業(yè)已開始認識到即時通信工具能夠帶來極高的生產(chǎn)力,并借助它的應用,來提高業(yè)務協(xié)同性及反饋的敏感度和快捷度。網(wǎng)上聊天系統(tǒng)是為人們之間進行交流和聯(lián)系提供的一個平臺。通過提供完善的網(wǎng)上聊天系統(tǒng)服務,可以達到增進彼此之間的了解,增進人與人之間的感情交流。因此,兩臺計算機之間進行即時通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。于是出現(xiàn)了QQ、UC 等聊天工具,然而QQ、U</p><p>  1

25、.2 課題選擇意義</p><p>  計算機越來越成為我們生活中的重要工具,自從1968年世界上第一個計算機網(wǎng)絡--ARPA網(wǎng)(美國國防部高級研究計劃網(wǎng))投入運行以來,計算機網(wǎng)絡技術在全世界范圍內(nèi)迅速發(fā)展,猶如雨后春筍,各種網(wǎng)絡紛紛涌現(xiàn)。不同國家的計算機網(wǎng)絡相互連接,形成跨國計算機網(wǎng)絡,促進了世界各國之間的科技、文化和經(jīng)濟交流。在電子商務的應用中,計算機網(wǎng)絡作為基礎設施,將分散在各地的計算機系統(tǒng)連接起來,使得計

26、算機之間的通訊在商務活動中發(fā)揮了重要的作用,從此計算機的作用不再那么單調(diào),現(xiàn)在Internet把幾乎全球的服務器相互連接起來,這樣不僅使網(wǎng)絡上的計算機之間進行相互訪問并下載對自己有用的資源,還可以用來寫信、聽音樂、看電視、通過可視電話進行通信,通過Internet網(wǎng)進行信息查詢、網(wǎng)上購物等。計算機正在改變我們的通信、工作和娛樂的方式。</p><p>  1.3 系統(tǒng)開發(fā)技術簡介</p><p

27、>  1.3.1 Java簡介</p><p>  Java是由Sun Microsystems公司于1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平臺的總稱。它以C++為基礎,但是卻是一個全新的軟件開發(fā)語言。Java是一個簡單,面象對象,分布式,解釋性,強壯,安全,與系統(tǒng)無關,可移植,高性能,多線程和動態(tài)的語言-------這是 Sun給Java的定義。</p>

28、<p>  Java平臺由Java虛擬機(Java Virtual Machine)和Java 應用編程接口(Application Programming Interface、簡稱API)構(gòu)成。Java 應用編程接口為Java應用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java應用程序就可運行。現(xiàn)在Java平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。</p

29、><p>  Java是一種簡單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動態(tài)語言。Java 對開發(fā)者具有不可估量的價值,使他們可以: </p><p>  在一個平臺上編寫軟件,然后即可在幾乎所有其他平臺上運行 </p><p>  創(chuàng)建可在 Web 瀏覽器和 Web 服務中運行的程序 </p><p&

30、gt;  開發(fā)適用于在線論壇、存儲、投票、HTML 格式處理以及其他用途的服務器端應用程序 </p><p>  將采用 Java 語言的應用程序或服務組合在一起,形成高度定制的應用程序或服務 </p><p>  為移動電話、遠程處理器、低成本的消費產(chǎn)品以及其他任何具有數(shù)字核心的設備編寫強大而高效的應用程序 </p><p>  Sun公司的口號就是"網(wǎng)

31、絡就是計算機",Java能使所有東西從桌面計算平穩(wěn)的轉(zhuǎn)變?yōu)榛诰W(wǎng)絡的計算,它是專門為此而建立的,并顯然是為了完成這個任務而來的。使用Java,我們可以相對輕松的一天編寫一個有條理的網(wǎng)絡程序。今天,Java的網(wǎng)絡功能正在飛躍發(fā)展,不斷有新的特性增加到這個有價值的基礎上,JavaSoft實驗室正在不斷努力使Java更加完善。</p><p>  1.3.2 JDBC技術簡介</p><p

32、>  JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,JDBC是Java的開發(fā)者Sun的Javasoft公司制定的。它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標準的API,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應用程序。</

33、p><p>  有了JDBC,向各種關系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問Informix數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用JDBC API寫一個程序就夠了,它可向相應數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時,將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程

34、序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優(yōu)勢。</p><p>  Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于Java應用程序連接數(shù)據(jù)庫的標準方法。JDBC對Java程序員而言是API,對實現(xiàn)與數(shù)據(jù)庫連接的服務提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標準的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實現(xiàn)與數(shù)據(jù)庫的連接提供了標準方法。JDBC使用已有的SQL標準并支持與其它數(shù)據(jù)庫連接

35、標準,如ODBC之間的橋接。JDBC實現(xiàn)了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現(xiàn)的接口。 </p><p>  Java 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡上自動下載等特性,是編寫數(shù)據(jù)庫應用程序的杰出語言。所需要的只是 Java應用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。ODBC在Windows系列平臺應用程序中和JDBC在Web和Inter

36、net應用程序中的作用的作用類似。ODBC(OpenData Base Connectivity),稱為開放式數(shù)據(jù)庫互聯(lián)技術,是由Microsoft公司倡導并得到業(yè)界普遍響應的一門數(shù)據(jù)庫連接技術。 JDBC現(xiàn)在可以連接的數(shù)據(jù)庫包括:xbase、Oracle、Sybase、Aceess以及Paradox等。</p><p>  JDBC的工作機制 :JDBC定義了Java語言同SQL數(shù)據(jù)之間的程序設計接口。JDBC

37、有一個非常獨特的動態(tài)連接結(jié)構(gòu),它使得系統(tǒng)模塊化。使用JDBC來完成對數(shù)據(jù)庫的訪問包括以下四個主要組件:Java的應用程序、JDBC驅(qū)動器管理器、驅(qū)動器和數(shù)據(jù)源。 JavaSoft公司開發(fā)了JDBC API,JDBC API是一個標準統(tǒng)一的SQL數(shù)據(jù)存取接口。 JDBC在Internet中的作用與ODBC在Windows系列中的作用類似。它為Java程序提供了一個統(tǒng)一縫地操作各種數(shù)據(jù)庫的接口,程序員編程時,可以不關心它所要操作的數(shù)據(jù)庫是

38、哪個廠家的產(chǎn)品,從而提高了軟件的通用性,而且在Internet上確實無法預料你的用戶想訪問什么類型的數(shù)據(jù)庫。只要系統(tǒng)上安裝了正確的驅(qū)動器組,JDBC應用程序就可以訪問其相關的數(shù)據(jù)庫。</p><p>  1.3.3 數(shù)據(jù)庫Microsoft SQL-Server 2000 簡介</p><p>  Microsoft SQL-Server(簡稱 SQL-Server)是微軟公司推出的一個高

39、性能的關系型數(shù)據(jù)庫管理系統(tǒng),隨著其產(chǎn)品性能的不斷提高,使之在數(shù)據(jù)庫系統(tǒng)領域中占有重要地位。Microsoft SQL-Server 2000是繼SQL-Server 6.5和SQL-Server 7.0以后,推出的又一改進的關系型數(shù)據(jù)庫管理系統(tǒng),它能使用戶快捷地管理數(shù)據(jù)庫和開發(fā)應用程序。SQL-Server 2000使用了最先進的數(shù)據(jù)庫結(jié)構(gòu),與Windows DNA緊密集成,具有強大的Web功能,它可以利用高端硬件平臺以及最新網(wǎng)絡和存儲

40、技術,可以為最大的Web站點和企業(yè)應用提供優(yōu)良的擴展性和可靠性,使用戶能夠在Internet領域快速建立服務系統(tǒng),為占領市場贏得寶貴的時間。同時,SQL-Server 2000還為用戶提供了重要的安全性功能的增強,為用戶的數(shù)據(jù)安全提供了可靠的保證。另外,SQL-Server 2000在數(shù)據(jù)庫服務器自動管理技術方面處于數(shù)據(jù)庫領域的領先地位,它可以使用戶免去繁瑣復雜的工作量,從而又精于處理更重要的問題,使系統(tǒng)在商業(yè)戰(zhàn)略上占得先機。SQL-S

41、erver 數(shù)據(jù)庫系統(tǒng)特點:</p><p>  存儲過程是存儲在服務器上的預先編譯好的SQL語句,可以在服務器上的SQL Server環(huán)境下運行[12]。使用存儲過程有如下的好處:執(zhí)行時間短;客戶/服務器開發(fā)分離;安全性高。SQL-Server 2000工具界面與標準Windows 界面非常類似,具有菜單欄、圖標、樹狀視圖控件、單選按鈕等。這些熟悉的界面使以前即使從沒有見到過這些應用程序的人也能夠很快地了解一些

42、基本的功能。</p><p>  1.3.4 多線程介紹</p><p>  Java 支持內(nèi)置多線程編程。多線程程序包括兩條或兩條以上并發(fā)運行的部分。程序中每個這樣的部分都叫一個線程,每個線程都是獨立的執(zhí)行路徑。因此,多線程是多任務處理的一種特殊形式。 </p><p>  多任務處理有兩種截然不同的類型:基于進程的和基于線程的。進程本質(zhì)上一個正在執(zhí)行的程序。因此

43、,基于進程的多任務處理的特點是允許你的計算機同時運行兩個或更多的程序。舉例來說,基于進程的讀任務處理使你在運行文本編輯器的時候可以同時運行Java 編譯器。在基于進程的多任務處理中,程序是調(diào)度程序多分派的最小代碼。也就是說,進程是資源申請、調(diào)度和獨立運行的單位,因此,它使用系統(tǒng)中的運行資源。</p><p>  在基于線程的多任務處理環(huán)境中,線程是最小的執(zhí)行單位。線程是進程中的一個單一的連續(xù)控制流程。一個進程可以

44、擁有多個線程。這意味著一個程序可以同時執(zhí)行兩個或多個任務的功能。例如,一個文本編輯器可以在打印的同時格式化文本。所以,多進程程序處理大局問題,而多線程程序處理細節(jié)問題。 </p><p>  多線程程序比多進程程序需要更少的管理開銷。進程是重量級的任務,需要分配它們自己獨立的地址空間。進程間通信是昂貴和受限的。進程間的轉(zhuǎn)換也是很需要花費的。另一方面,線程是輕量級的選手,它和進程一樣擁有獨立的執(zhí)行控制,由操作系統(tǒng)負

45、責調(diào)度。區(qū)別在于線程沒有獨立的存儲空間,而是和所屬進程的其他線程共享一個存儲空間,因此,線程間通信是容易的,線程間的轉(zhuǎn)換也是低開銷的。當Java 程序使用多進程的任務處理環(huán)境時,多進程的程序不受Java 的控制,而多線程則受控于Java。 </p><p>  多線程可以幫會你寫出CPU 最大利用率的高效程序,因為空閑時間保持最低。這對Java 運行的交互式的網(wǎng)絡互聯(lián)環(huán)境至關重要,因為空閑時間是公共的,舉個例子來

46、說,網(wǎng)絡的數(shù)據(jù)處理傳輸速率遠低于計算機處理能力,本地文件系統(tǒng)資源的讀寫速度遠低于CPU 的處理能力,當然,用戶輸入也比計算機慢的多。在傳統(tǒng)的單線程環(huán)境中,你的程序必須等待每一個這樣的任務完成以后才能執(zhí)行下一步—盡管CPU 有很多空閑時間。多線程是你能夠獲得并充分利用這些空閑時間。 </p><p>  ·多線程編程簡單,效率高(能直接共享數(shù)據(jù)和資源,而多進程卻不能) </p><p&

47、gt;  ·適合于開發(fā)多種交互接口的程序 </p><p>  ·減輕編寫交互頻繁,涉及面多的程序的困難 </p><p>  在本系統(tǒng)中,設置后臺線程處理服務器和客戶程序的通信。服務器資源以輕量級的線程提供,和多個客戶線程并發(fā)連接通信。這樣可以減輕服務器端的開銷,同時保證了多個用戶端連接能夠得到快速而高效的服務。 </p><p><b&

48、gt;  第2章 系統(tǒng)分析</b></p><p><b>  2.1 系統(tǒng)需求</b></p><p>  隨著網(wǎng)絡的迅速發(fā)展,通過即時通訊工具進行相互交流,溝通會對用戶帶來很多的方便,像現(xiàn)在很流行的QQ、MSN、UC等,它們?yōu)橛脩魝冎g的溝通帶來很多的方便的,但是這些即時工具在企業(yè)或者學校禁止用戶訪問外網(wǎng)的時候,這些即時的通信工具就不能使用了,用戶之間

49、就不能很方便的溝通交流了,可以通過自己設計一個即時通訊工具,自己建立服務器,放在內(nèi)部網(wǎng)絡,在用戶不能訪問外部網(wǎng)絡的時候,可以很方便用戶之間進行溝通交流。</p><p>  2.1.1 系統(tǒng)的特點分析</p><p>  基于JAVA的網(wǎng)絡聊天系統(tǒng)基于C/S 模式實現(xiàn),采用Java 語言編寫。所有用戶都通過服務器端中轉(zhuǎn)消息,這也是現(xiàn)有大多數(shù)聊天系統(tǒng)所采用的模式。本系統(tǒng)真正地實現(xiàn)了多點聊天的

50、功能,可以在多點間快速傳遞信息。同時,它體積小,功能單一,界面簡潔美觀,容易上手,只要簡單閱讀服務器端和客戶端的幫助文檔即可完全掌握它的使用方法,同時該系統(tǒng)是網(wǎng)絡聊天,特別是局域網(wǎng)聊天不可多得的好幫手。</p><p>  2.1.2 網(wǎng)絡聊天系統(tǒng)需要解決的問題</p><p>  首先,網(wǎng)絡聊天系統(tǒng)是一個比較復雜的系統(tǒng),良好的架構(gòu)設計非常的重要:C/S 模式是較為成熟的軟件運行模式,基于

51、局域網(wǎng)設計,運行速度快,安全性高,為當今主要的軟件所采用的模式。不好的架構(gòu)會在系統(tǒng)實現(xiàn)或者維護階段系統(tǒng)的擴展帶來很多麻煩。</p><p>  其次,服務器的承載能力,如何處理多個用戶的同時登錄和請求,好的設計會使系統(tǒng)在很多并發(fā)用戶登錄的時候不至于系統(tǒng)崩潰。</p><p>  最后,服務器和客戶端的通信協(xié)議制定比較困難,如何制定一套簡單,并且易于客戶端和服務器之間理解的通信規(guī)則非常重要,

52、否則會在服務器和客戶端通信設計的時候帶來很多的問題。</p><p>  2.2 系統(tǒng)設計思想</p><p>  本系統(tǒng)的設計思路如下:</p><p>  (1) 系統(tǒng)采用模塊化設計,針對不同的應用設計不同的模塊,并對這些模塊都進行集中式管理,作為應用程序有較強的可操作性和擴展性。</p><p>  (2) 合理的數(shù)據(jù)流設計,在應用系統(tǒng)

53、設計中,相對獨立的模塊間以數(shù)據(jù)流相互連接,使各模塊間的耦合性較低,方便系統(tǒng)運行,提高系統(tǒng)安全性,盡量保證低耦合,高內(nèi)聚。</p><p>  (3) 采用封裝的思想,根據(jù)模塊的不同情況進行類的封裝,并重用各個模塊,并合理利用各種設計模式,為以后維護帶來方便。</p><p>  2.3 系統(tǒng)實現(xiàn)功能分析</p><p>  本次設計主要實現(xiàn)了以下幾個功能:</

54、p><p>  ● 客戶端功能設計如下:</p><p>  (1)身份認證,該模塊主要實現(xiàn)用戶的登陸認證,以及服務器代理IP和端口的設置,并檢查數(shù)據(jù)的合法性。</p><p>  (2)聊天功能,該模塊主要用Socket實現(xiàn)不同用戶之間消息的的發(fā)送,并且不僅僅傳文本格式的數(shù)據(jù),也可以傳輸圖片,需要自己封裝并自定義消息流,并能夠識別顯示。</p><

55、;p>  (3)文件傳輸,該模塊主要實現(xiàn)不同用戶之間進行文件的傳輸。</p><p>  ● 服務器端功能設計如下:</p><p>  (1)在線用戶統(tǒng)計,該模塊主要實現(xiàn)在線用戶的查看顯示,并可以控制其在線狀態(tài),強迫特定用戶下線。</p><p>  (2)日志記錄,該模塊主要記錄客戶端用戶上線、下線情況,并存儲下來。</p><p&g

56、t;  (3)發(fā)布信息,該模塊主要服務器可以發(fā)布系統(tǒng)信息,使客戶端可以接收。</p><p>  2.4 系統(tǒng)開發(fā)及運行環(huán)境</p><p>  (1) 系統(tǒng)開發(fā)平臺:本系統(tǒng)采用eclipse 及WINDOWS XP設計。</p><p><b>  (2) 硬件環(huán)境:</b></p><p>  運行本系統(tǒng)的硬件基本要

57、求如下:</p><p>  CPU:Intel P3及以上;</p><p>  內(nèi)存:256MB及以上;</p><p>  硬盤:40GB及以上。</p><p>  (3) 數(shù)據(jù)庫管理系統(tǒng)軟件:SQL Server 2000。</p><p>  第3章 系統(tǒng)總體設計</p><p>

58、<b>  3.1 總體構(gòu)架</b></p><p>  基于Java的網(wǎng)絡聊天系統(tǒng)設計與實現(xiàn)主要考慮三個個方面的設計,即服務器模塊設計,服務器客與客戶端通信規(guī)則設計和客戶端模塊設計,本系統(tǒng)整體構(gòu)架如圖3.1所示。</p><p>  圖3.1 系統(tǒng)整體構(gòu)架圖</p><p>  3.2 系統(tǒng)整體功能</p><p>

59、  基于JAVA的網(wǎng)絡聊天系統(tǒng)分為服務器端和客服端,其中:</p><p>  服務器端包括:在線用戶管理模塊,用戶管理模塊,部門管理模塊,日志管理模塊;</p><p>  客服端包括:用戶認證模塊,主界面模塊,聊天模塊,文件傳輸模塊。</p><p>  系統(tǒng)整體功能設計如下圖2.2所示</p><p>  圖3.2 系統(tǒng)整體功能設計圖

60、</p><p>  3.3 系統(tǒng)模塊功能設計</p><p>  整個系統(tǒng)分為3個模塊,其中主要功能如下:</p><p><b>  (一)服務器端模塊</b></p><p>  服務器端模塊首先設計多線程來處理客戶端的連接,當受到客戶端請求的時候,建立一個新的線程來處理客戶端的連接。并且在一個注冊中心中登記該線程

61、,并存儲客戶端用戶的一些信息,方便服務器統(tǒng)計在線用戶,以便與這些在線用戶進行通信。除此之外,為了方便用戶更好的操作和掌握服務器端,系統(tǒng)還設計四個管理服務器的模塊,分別是在線用戶管理模塊,用戶管理模塊塊,部門管理管理模塊和日志管理模塊。各個模塊功能設計如下:</p><p><b>  在線用戶管理模塊</b></p><p>  該模塊主要實現(xiàn)在線用戶管理,查看當前登

62、陸賬號的所有用戶信息(在線用戶的)。并且管理員有權限設置用戶的在線狀態(tài),可以強制用戶下線。同時添加一些輔助的功能,比如服務器發(fā)送一些系統(tǒng)公告信息等,這樣有利于系統(tǒng)消息的及時發(fā)送。</p><p><b>  用戶管理模塊</b></p><p>  該模塊主要實現(xiàn)新用戶的添加、注冊用戶的刪除、修改和查看的功能,管理數(shù)據(jù)庫中存儲的用戶信息。該模塊可以對注冊用戶的信息(注

63、冊用戶的編號,姓名,性別,頭像,年齡,家庭住址,聯(lián)系電話,注冊時間愛你)進行修改以及查看,并且保證客戶端使用這些用戶信息登陸服務器。</p><p><b>  部門管理模塊</b></p><p>  該模塊主要實現(xiàn)部門的添加、注冊部門的刪除、修改和查看的功能,管理數(shù)據(jù)庫中存儲的部門信息。該模塊可以對注冊部門的信息(部門名稱,部門描述)進行修改以及查看。</p

64、><p><b>  日志管理模塊</b></p><p>  日志管理模塊主要實現(xiàn)服務器運行狀態(tài)信息,以及注冊用戶登陸的一些信息進行記錄,管理員可以在需要的時候查看日志,監(jiān)控服務器的一些狀態(tài),以及客戶端一些用戶的狀態(tài)。</p><p><b>  (二)協(xié)議規(guī)則模塊</b></p><p>  該模塊

65、主要實現(xiàn)服務器與客戶端之間通信規(guī)則的制定。其具體思路是:在服務器使用Socket通信的時候,把服務器與客戶端通信的信息封裝為一個類對象,然后通過自己手動將這些類對象轉(zhuǎn)化為輸入流,并在另一端輸出流,根據(jù)自己制定的規(guī)則逆序解析流,把流轉(zhuǎn)化為類對象。實現(xiàn)服務器與客戶端之間的通信。其中具體的表示信息要自己制定,比如登陸成功標示,失敗標示,修改密碼標示,聊天標示等,這些都需要自己通過一些數(shù)字標記。</p><p><

66、b>  (三)客戶端模塊</b></p><p>  客戶端模塊主要實現(xiàn),用戶賬號到服務器的認證,以及登陸之后與其他用戶通信或者部門通信,除了簡單文本聊天之外,也考慮用戶之間文件傳輸?shù)墓δ堋F渲锌蛻舳酥g的通信,是在客戶端之間搭建服務器,也即客戶端自己建立SocketServer,并用多線程來處理對不同用戶的聊天。用戶之間文件傳輸也是通過搭建客戶端之間的服務器來實現(xiàn)文件出傳的,不需要通過服務器來

67、實現(xiàn)信息的傳輸,可以減少延遲,也減少了服務器端的流量損失。但是在客戶之間搭建連接的時候仍然需要通過服務器來實現(xiàn)一些簡單的通知操作,實現(xiàn)客戶端與客戶端之間搭建其連接。因此客戶端大體分四個模塊,分別是用戶認證模塊,主界面模塊,聊天模塊和文件傳輸模塊。各個功能模塊設計如下:</p><p><b>  用戶認證模塊</b></p><p>  可以模仿QQ登陸界面,輸入用戶

68、名和密碼,以及服務器IP和端口,實現(xiàn)賬號和密碼到服務器的認證,判斷用戶是否有權限登錄主界面進行信息溝通。</p><p><b>  主界面模塊</b></p><p>  該模塊主要實現(xiàn)類似QQ友好的界面,查看自己的信息,修改密碼,顯示好友列表組列表信息。使用Swing現(xiàn)有組建擴展制作合適的界面設計,并搭配后臺功能。</p><p><

69、b>  聊天模塊</b></p><p>  該模塊主要實現(xiàn)不同用戶之間信息的發(fā)送,如何實現(xiàn)點對點用戶通信,多點用戶通信,要考慮多線程的設計才可以實現(xiàn)。同時信息發(fā)送除了文本之外還要考慮其他信息格式比如圖片之類。</p><p><b>  文件傳輸模塊</b></p><p>  實現(xiàn)不同用戶之間多線程的文件傳輸。</p

70、><p><b>  第4章 數(shù)據(jù)庫設計</b></p><p>  4.1 系統(tǒng)E-R圖</p><p><b>  (1) E-R模型</b></p><p>  基于網(wǎng)絡聊天系統(tǒng)數(shù)據(jù)庫E-R模型,如圖 所示:</p><p>  圖4.1 聊天系統(tǒng)E-R圖</p>

71、;<p><b>  4.2 數(shù)據(jù)字典</b></p><p>  (1) 用戶表 (用戶ID(主鍵),用戶名,密碼,用戶密碼,性別,頭像ID,部門ID,年齡,電話號碼,地址,注冊時間,狀態(tài))。</p><p>  (2) 分組信息表(分組ID(主鍵),分組名字,標記)。 </p><p>  4.3 各個數(shù)據(jù)表的創(chuàng)建</

72、p><p>  基于網(wǎng)絡聊天系統(tǒng)數(shù)據(jù)庫包括部門信息以及用戶信息,部門信息表格和用戶信息表格的設計結(jié)果如表4.1,表4.2所示:每個表格表示在數(shù)據(jù)庫中的一個表。</p><p>  表4.1部門信息表(T_DEPARTMENT)</p><p>  表4.2 用戶表(T_USER)</p><p>  4.4 數(shù)據(jù)庫的連接</p>

73、<p>  打開控制面板,找到管理工具,在選中數(shù)據(jù)源配置,進行ODBC數(shù)據(jù)源的配置其中主要的配置流程如下面圖所示:</p><p>  圖4.2 配置QQ數(shù)據(jù)源界面</p><p>  圖4.3 配置QQ數(shù)據(jù)庫界面</p><p>  圖4.4 測試數(shù)據(jù)源連接 </p><p>  第5章 系統(tǒng)實現(xiàn)與編碼</p>&

74、lt;p>  5.1 服務器功能模塊的設計</p><p>  5.1.1 Socket和ServerSocket介紹</p><p>  Socket,簡稱套接字,用于實現(xiàn)網(wǎng)絡上客戶和服務器之間的連接。也就是說網(wǎng)絡上兩個或兩個以上雙工方式通信的進程之間總有一個連接,這個連接的端點成為套接字,套接字是在比較低的層次上通信的。</p><p>  具體的說:一個

75、服務器應用程序一般偵聽一個特定的端口等待客戶端的連接請求,當一個連接請求到達時,客戶端和服武器端建立一個通信連接,在連接過程中,客戶端被分配一個本地端口與一個socket建立連接,客戶端通過寫socket來通知服務器,以讀socket中的信息,類似的服務器也獲得一個本地端口,它需要一個新的端口號來偵聽原始端口上的其他連接請求。服務器也通過它的本地端口連接一個socket,通過讀寫和客戶端通信。</p><p> 

76、 Socket程序的工作過程:</p><p>  1、建立Socket連接:在通信開始之前由通信雙方確認身份,建立一條專用的虛擬連接通道。</p><p>  2、數(shù)據(jù)通信:利用虛擬連接通道傳送數(shù)據(jù)信息進行通道。</p><p>  3、關閉:通信結(jié)束時,再將所建的虛擬連接拆除。</p><p>  實現(xiàn)套接字的服務端,需要使用Server

77、Socket 類。ServerSocket類是服務器程序的運行基礎,它允許程序綁定一個端口號來監(jiān)聽客戶端的請求,一旦產(chǎn)生客戶端請求,它將接受這一請求,同時產(chǎn)生一個完整的Socket 連接對象。服務器綁定的端口必須公開,以便讓客戶端程序知道如何連接這個服務器。同時,作為服務器,它必須能夠接收多個客戶的請求,這就需要為服務器設置一個請求隊列,如果服務器不能馬上響應客戶端的請求,要將這個請求放進請求隊列中,等服務器將當前的請求處理完,會自動到

78、請求隊列中按照先后順序取出請求進行處理。服務器的資源是有限的,這就導致它的最大連接數(shù)是有限的,通過ServerSocket 的構(gòu)造函數(shù)可以指定這個最大連接數(shù)。如果不明</p><p>  確指定這個連接數(shù),默認最大連接數(shù)為50,也就是說,客戶端的請求隊列最大可以容納50 個請求,當超過這個最大連接數(shù)時,用戶的請求將不再會被響應。 利用SocketServer 也提供了一些方法,它們主要有: </p>

79、<p>  accept() 返回一個“已連接”的Socket 對象</p><p>  getInetAddress() 得到該服務器的IP 地址</p><p>  getLocalPort() 得到服務器所偵聽的端口號</p><p>  setSoTimeout() 設置服務器超時時間</p><

80、p>  getSoTimeout() 得到服務器超時時間</p><p>  服務器和客戶端通過Socket簡單通信框架下圖所示。</p><p>  圖 5.1 服務器和客戶端通過Socket簡單通信框架</p><p>  5.2 服務器功能模塊的實現(xiàn)</p><p>  5.2.1 多線程服務器模塊實現(xiàn)</p

81、><p>  服務器模塊核心功能是使用Socket Server實現(xiàn)多線程的服務器,針對每一個客戶建立一個單獨的線程處理客戶端的請求。其具體思路是,首先建立Socket Server,并綁定服務器IP和某個未使用的端口。然后監(jiān)聽該端口,如果有客戶端的Socket連接則建立一個客戶端線程ClientThread類對象,有該對象處理該客戶的一些請求,并在ClientThread中保存User Bean對象,該對象保存了用

82、戶的一些基本信息,比如賬號、密碼、年齡、是否在線等。如果服務器沒有關閉Socket Server則服務器則一直處理客戶端連接。其核心代碼如下。</p><p>  public class MessageServer extends Thread {</p><p>  //服務器端SocketServer</p><p>  private ServerSocke

83、t server;</p><p>  private boolean isStop = false;</p><p>  public MessageServer(int port) throws IOException {</p><p>  server = new ServerSocket(port);</p><p><b&g

84、t;  }</b></p><p><b>  /**</b></p><p><b>  * 消息服務</b></p><p><b>  */</b></p><p>  public void run() {</p><p>  Soc

85、ket client;</p><p><b>  try {</b></p><p>  while (!isStop) {</p><p>  //建立處理客戶端連接的線程</p><p>  client = server.accept();</p><p>  (new ClientThr

86、ead(client)).start();</p><p><b>  }</b></p><p>  } catch (IOException e) {</p><p>  e.printStackTrace();</p><p>  } finally {</p><p>  if (serv

87、er != null) {</p><p><b>  try {</b></p><p>  server.close();</p><p>  } catch (IOException e1) {</p><p>  // e1.printStackTrace();</p><p><b

88、>  }</b></p><p><b>  }</b></p><p>  isStop = true;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

89、/b></p><p>  5.2.2 在線用戶管理模塊實現(xiàn)</p><p>  該模塊主要實現(xiàn)在線用戶統(tǒng)計、多線程服務器的啟動關閉、以及服務器發(fā)送系統(tǒng)公告等功能。其中在線用戶統(tǒng)計是在客戶端每次連接的時候服務器建立了ClientThread來單獨處理某個客戶請求,如果該客戶登陸成功的話則在工具類PubValue中一個HashMap添加該用戶信息,查看在線用戶信息的時候,可以通過工具類

90、PubValue來的HashMap讀取在線用戶列表。系統(tǒng)公告則是通過服務器根據(jù)在線用戶列表,廣播系統(tǒng)公告到每個客戶端,實現(xiàn)信息的公布。其實核心代碼如下:</p><p>  private void login(Message message) throws IOException {</p><p>  if (message.getType().equals(PackOper.LOGI

91、N)) {</p><p>  User user = (User) message;</p><p>  List list = UserDaoFactory.getUserDao().selectId(user.getId());</p><p>  if (list.size() > 0) {</p><p>  User t

92、empUser = (User) list.get(0);</p><p>  if (tempUser.getPassword().equals(user.getPassword())) {</p><p>  if (tempUser.getIsOnline() == Parameter.ONLINE) {

93、 message.setType(PackOper.LOGIN_ONLINED);</p><p>  myObjectOut.writeMessage(message);</p><p>  this.setStop();</p><p><b>  return;</b></p><p><b> 

94、 }</b></p><p>  ServerUI.getInstance().getLogUI().addLog(</p><p>  LogOper.getInstance().insertOnLineLog(tempUser));</p><p><b>  //登錄成功后</b></p><p>&l

95、t;b>  //先通知所有人</b></p><p><b>  //再通知此用戶</b></p><p>  //再把自己加到線程組中</p><p><b>  //接著更新數(shù)據(jù)庫</b></p><p><b>  //下載樹給此用戶</b></p

96、><p>  tempUser.setType(PackOper.LOGIN_SUCCEED);</p><p>  tempUser.setIsOnline(pub.Parameter.ONLINE);</p><p>  this.chatCompany(tempUser);</p><p>  this.user = tempUser;&l

97、t;/p><p>  this.myObjectOut.writeMessage(tempUser);</p><p>  PubValue.addUserThread(this.user.getId(), this);</p><p>  UserDaoFactory.getUserDao().setOnline(tempUser.getId(),</p>

98、<p>  Parameter.ONLINE);</p><p>  ServerUI.getInstance().getOnLineUI().updateOnLine();</p><p><b>  try {</b></p><p>  Thread.sleep(10);</p><p>  } ca

99、tch (InterruptedException e1) {</p><p>  // e1.printStackTrace();</p><p><b>  }</b></p><p>  // 登錄成功后發(fā)送樹</p><p>  PubValue.company.setType(PackOper.ADD_COMP

100、ANY);</p><p>  myObjectOut.writeMessage(PubValue.company);</p><p>  list = DepartmentDaoFactory.</p><p>  getDepartmentDao().select(null);</p><p>  Iterator it = list.i

101、terator();</p><p>  while (it.hasNext()) {</p><p>  message = (Message) it.next();</p><p>  message.setType(PackOper.ADD_DEPARTMENT);</p><p>  myObjectOut.writeMessage(

102、message);</p><p><b>  }</b></p><p>  list = UserDaoFactory.getUserDao().select(null);</p><p>  it = list.iterator();</p><p>  while (it.hasNext()) {</p&g

103、t;<p>  message = (Message) it.next();</p><p>  message.setType(PackOper.ADD_USER);</p><p>  myObjectOut.writeMessage(message);</p><p><b>  }</b></p><p

104、><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  message.setType(PackOper.LOGIN_DEFEATED);</p><p>  myObjectOut.wri

105、teMessage(message);</p><p>  this.setStop();</p><p><b>  }</b></p><p><b>  }</b></p><p>  其實現(xiàn)效果如圖所示:</p><p>  圖5.2 聊天服務器端界面</p&g

106、t;<p>  5.2.3 部門管理模塊實現(xiàn)</p><p>  該模塊主要實現(xiàn)對部門進行管理,根據(jù)情況添加,刪除或者修改部門等。其設計主要是通過SQL語句來操作數(shù)據(jù)庫數(shù)據(jù)的。跟普通的管理系統(tǒng)設計思路一樣。沒有太多的算法,主要是SQL語句的構(gòu)造,以及數(shù)據(jù)庫操作的API函數(shù)的使用。其實現(xiàn)效果如圖所示.</p><p>  圖5.3 部門管理模塊界面</p>&

107、lt;p>  5.2.4 用戶管理模塊實現(xiàn)</p><p>  該模塊類似于部門管理模塊的設計,主要是針對用戶的一些信息進行管理,根據(jù)需要添加、刪除或者修改用戶信息。其實現(xiàn)主要也是SQL語句的構(gòu)造以及JDBC驅(qū)動提供函數(shù)的使用。比較復雜的部分設計主要體現(xiàn)界面的設計,如何使用Swing構(gòu)造友好并且易于交互的界面需要花費一些時間。以及實現(xiàn)組合條件的用戶查詢,可以根據(jù)用戶賬號查詢,或者所在部門查詢,或者編號查詢,

108、或者根據(jù)這三個條件組合查詢,這一功能比較復雜,如何根據(jù)不同的情況構(gòu)造合適的SQL語句進行數(shù)據(jù)查詢,顯得很重要,否則粗略的設計會增加很多冗余代碼。其整體實現(xiàn)效果如下圖5.4所示。</p><p>  圖5.4 用戶管理界面</p><p>  5.2.5日志管理模塊實現(xiàn)</p><p>  日志管理模塊主要是監(jiān)控服務器的一些狀態(tài),以及客戶端用戶登陸的情況。這些日志信息

109、記錄是通過工具類LogOper實現(xiàn)日志的記錄。該類使用了設計模式中單例模式,保證服務器端在進行日志操作的時候只有一個實例在內(nèi)存中進行日志的記錄。其日志的存放路徑主要是在系統(tǒng)目錄下,其文件名為server.log。通過服務器UI界面查詢?nèi)罩拘畔⒁彩峭ㄟ^讀取該文件來查詢?nèi)罩居涗浀?。其實現(xiàn)效果如下圖5.5:</p><p>  圖5.5 日志管理模塊界面</p><p>  5.3協(xié)議設計與實現(xiàn)

110、</p><p>  5.3.1 協(xié)議規(guī)則</p><p>  協(xié)議規(guī)則里主要用一些整數(shù)來表示服務器與客戶端通信的時候包的類型。服務器可以按照這個規(guī)則來解析包,并根據(jù)包中的信息做出相應的操作。其標示的具體含義和定義規(guī)則下表5.1所示。</p><p>  表5.1 協(xié)議規(guī)則表</p><p>  5.3.2 協(xié)議實現(xiàn)</p>

111、<p>  協(xié)議的指定主要是考慮在進行通信的過程中,保證服務器和客戶端的通信消息能夠被雙方正確的理解,并作出相應的處理,比如登陸失敗消息,登陸成功消息,文件傳輸消息,聊天消息等,服務器和客戶端必須要按照指定的規(guī)則去打包和解析消息。其中協(xié)議的設計是通過對Socket流進行自定義的封裝,把已經(jīng)定義好的對象的每一個屬性按照unicode編碼中的一些特殊的編碼\u0000(空格)進行分隔封裝,并發(fā)送輸入和輸出流,另一端安裝封裝的逆序把

112、輸出流封裝為對象,并識別該對象隨對應是什么樣的消息,客戶端或者服務器作出相應的處理。而通過繼承輸入輸出流實現(xiàn)了服務器器信息的發(fā)送,但是具體的包類型是什么樣的消息是通過標示來標記。通過標示來解析這些包是什么樣類型的包,實現(xiàn)服務器和客戶端之間可理解的通信。其核心類PackOper類主要代碼如下:</p><p><b>  /**</b></p><p><b>

113、;  * 解包類 </b></p><p>  * @author Administrator </p><p><b>  */</b></p><p>  public class PackOper implements PackInterface {/**</p><p>  * 創(chuàng)建一個包,根據(jù)ob

114、ject類型</p><p>  * @param object</p><p><b>  * @return</b></p><p><b>  */</b></p><p>  public byte[] createPackage(Object object) {</p>&l

115、t;p>  if (object == null) {</p><p>  return null;</p><p><b>  }</b></p><p>  if (object instanceof MessagePack) {</p><p>  return createMessagePack((Mess

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論