




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 太原理工大學(xué)畢業(yè)設(shè)計(論文)用紙概述 聊天室系統(tǒng)的基本概念聊天室系統(tǒng)基于互聯(lián)網(wǎng),可進行多人通訊。本系統(tǒng)旨在讓用戶在進入該聊天室系統(tǒng)平臺的同時,可以借由網(wǎng)絡(luò)在線與相距較遠的其他一位或多位用戶進行通訊交互。通過利用計算機通訊原理,并且基于一定的網(wǎng)絡(luò)通訊技術(shù)及高級語言程序設(shè)計和JSP應(yīng)用程序設(shè)計的技術(shù)基礎(chǔ),以一個聊天室平臺形式,為用戶提供交互服務(wù)。 開發(fā)聊天室系統(tǒng)的意義上帝賦予人類說話的能力,而說話又創(chuàng)造了人類對宇宙的量度思想。1隨著信息科技的高速發(fā)展,我們用于進行信息交互的方式也日益豐富,創(chuàng)新。從早期的電報,有線電話,而后的傳真,移動電話,電子郵件,然而對于越來越快節(jié)奏,信息交流越來越頻繁的當(dāng)今
2、社會,如果需要與幾個人同時進行會談依然是一件需要費時費力進行安排的活動,尤其是對于以上的幾種交流方式,要么具有局限性,要么有費用的問題,其中電話就是屬于費用比較高的一種選擇,而且通常情況下不支持進行多人互動,限于單對單的通話。通常的選擇是把參與會談的人越好時間,聚集到同一個房間才能進行有效的交流。不但費時費力而且往往有諸多因素會影響大家的日程安排。電子郵件則是非即時的聯(lián)系方式,用于交互則需要一定的時間,只能作為一種輔助交流的選擇。在這種情況下,聊天室系統(tǒng)應(yīng)運而生,很好的滿足了多人會談的需求,在網(wǎng)絡(luò)上虛擬一個交流平臺,這樣在不同的地點也可以進行方便的交流。而且優(yōu)秀的聊天室還具備諸多表情符號供用戶
3、選擇用以加強思想感情的傳遞。而且基于廣泛應(yīng)用的互聯(lián)網(wǎng),費用低廉,信息即時交流,參與方便的優(yōu)點,在這個快節(jié)奏的社會中不僅加強聯(lián)系,同時節(jié)省交互的成本進而創(chuàng)造出更多的價值 目前的研究現(xiàn)狀隨著IT技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)以其日新月異的創(chuàng)新精神以及無處不在的便捷性,吸引了越來越多的人的注意并參與其中,信息資源的重要性以前所未有的形式擺在了社會的焦點位置,信息交互的經(jīng)濟效益直接體現(xiàn)在生產(chǎn)管理活動中。對于一個組織尤其是商業(yè)公司,必須能利用信息資源的及時性、準(zhǔn)確性,提高工作效率,取得更大的經(jīng)濟效益和社會影響。對于個人而言,也可以通過信息交互的便捷更好地實現(xiàn)個人價值。方方面面的實際需求表明,一個良好的交互通訊的方
4、式,能從一個較高的程度上提升工作效率,避免由于不必要的時間成本而承擔(dān)可能的種種損失。準(zhǔn)確的說一個良好的聊天室系統(tǒng)應(yīng)能全面的處理這個問題。在經(jīng)過了近些年來認(rèn)識及技術(shù)的發(fā)展,聊天室系統(tǒng)已然趨于成熟。 總體設(shè)計的基本思路針對所學(xué)知識以及對Web應(yīng)用系統(tǒng)的了解,根據(jù)用戶在實際聊天中的需求,確定開發(fā)以Java-Web技術(shù)為主的一個在線聊天室系統(tǒng)。主要滿足用戶對群聊,私聊等功能的需要?;贛yEclipse平臺,通過Java編程語言、Access數(shù)據(jù)庫技術(shù)進行開發(fā),初步涉及了框架的思想以及對Javabean的運用。本系統(tǒng)的開發(fā)工作分為以下幾個主要階段:系統(tǒng)需求分析。包括用戶需求分析,系統(tǒng)調(diào)查。系統(tǒng)的功能設(shè)
5、計。數(shù)據(jù)庫的設(shè)計。E-R圖、創(chuàng)建數(shù)據(jù)表。系統(tǒng)的功能模塊的劃分以及實現(xiàn)。根據(jù)系統(tǒng)所管理的數(shù)據(jù)的類別不同,對數(shù)據(jù)操作進行功能劃分,分別實現(xiàn)功能模塊。系統(tǒng)的測試。單元測試,以及將單個實現(xiàn)的功能整合為一體,進行整體性能測試。對存在的錯誤和不足,予以及時的修正。主要技術(shù) JSP技術(shù)本系統(tǒng)基于JSP技術(shù)。JSP的全稱是JavaServer Pages,它是在Sun Microsystems公司所發(fā)起、眾多公司共同參與建立的一種新的動態(tài)網(wǎng)頁技術(shù)的標(biāo)準(zhǔn)。將JAVA的代碼片段(Scriptlet)和JSP的標(biāo)記(tag)在靜態(tài)的網(wǎng)頁HTML文件(*.htm,*.html)中規(guī)范的加入,即構(gòu)成了動態(tài)的JSP網(wǎng)頁(
6、*.jsp)。JSP技術(shù)的特點如下:(1)將頁面內(nèi)容的生成同頁面內(nèi)容呈現(xiàn)予以人為分離 (2)生成了可復(fù)用的軟件組件 (3)應(yīng)用了標(biāo)記從而簡化了頁面的設(shè)計 JSP九中內(nèi)置對象:page對象:page對象代表JSP頁面本身,更準(zhǔn)確的說它代表JSP被翻譯后的Servlet。pageContext對象:-javax.servlet.jsp.pageContext接口,提供了對JSP頁面內(nèi)使用到的所有對象及名字空間的訪問,提供了幾種對頁面屬性的訪問,允許向其他應(yīng)用組件轉(zhuǎn)發(fā)。request對象:request對象是HttpServletRequest接口的實現(xiàn)類,封裝了客戶的請求信息,request的生命
7、周期由JSP容器控制,當(dāng)接收到一個客戶端請求,JSP容器創(chuàng)建并封裝request對象,當(dāng)請求處理完畢,request對象被銷毀。response:response對象封裝了服務(wù)器響應(yīng)客戶端請求的相關(guān)消息,主要功能:設(shè)置頭信息,實現(xiàn)了javax.servlet.http.HttpServletResponse接口,生命周期由容器來管理。session:處理客戶端與服務(wù)端的會話,從客戶端連接到服務(wù)端開始,session對象用來保存每個用戶的信息,以便跟蹤每個用戶的操作狀態(tài),其中,session信息保存在容器里,session的ID保存在客戶機的Cookie中,用戶首次登陸系統(tǒng)時容器會給用戶分配一個
8、唯一的session id標(biāo)識。用于區(qū)別其他的用戶。application:保存Web應(yīng)用程序中共有的數(shù)據(jù),可存放全局變量服務(wù)器啟動后自動創(chuàng)建application對象,該對象一直有效,直到服務(wù)器關(guān)閉。用戶對該對象屬性的操作將影響到其他用戶config:config對象是JSP頁面通過JSP容器進行初始化時被傳遞的對象,封裝了JSP配置參數(shù)的信息.可讀取web.xml中配置的初始化參數(shù)out: out對象用來向客戶端輸出內(nèi)容,并管理服務(wù)器上輸出緩沖區(qū).out對象被封裝成javax.servlet.jsp.JspWriter接口??梢允褂胮age指令來改變緩沖區(qū)大小exception:excep
9、tion對象實現(xiàn)了java.lang.Throwable接口,用來處理JSP在執(zhí)行時發(fā)生的。JSP的生命周期: 1) 翻譯階段當(dāng)容器接受到客戶端第一次對jsp的請求后,先判斷被請求的jsp是否存在,若不存在返回404錯誤,若存在,將該jsp先翻譯成一個Servlet。 2) 編譯階段將Servlet的源文件編譯成一個字節(jié)碼文件,然后由容器將其裝載進虛擬機并實例化(單例)。 3) 執(zhí)行階段調(diào)用Servlet的init()、service方法、destroy()。 JavaBean技術(shù)JavaBean是指一個可復(fù)用的軟件組件。從本質(zhì)上來說JavaBean是一種特殊的Java類,它經(jīng)過對相關(guān)某一邏輯
10、的屬性和方法的封裝使其成為具有實現(xiàn)某一特定的功能或者可執(zhí)行某一特別業(yè)務(wù)的對象,簡稱為bean。Javabean具有Java系列一貫的跨平臺的優(yōu)勢,以及以下特點:(1)實現(xiàn)了對代碼的可重復(fù)的利用;(2)容易編寫、方便使用、方便維護;(3)可以一次編譯后在任何安裝了Java運行環(huán)境的平臺上的使用。JavaBean存在下面四種應(yīng)用范圍:對話范圍、頁面范圍、請求范圍、應(yīng)用范圍。(1)對話范圍(session):對話范圍的JavaBean 主要用于跨多個頁面和時間段的信息的處理:如在表單中填寫的用戶信息等。 (2)頁面/請求范圍(page/request):頁面和請求范圍的JavaBean類似于記錄表單
11、信息的bean ,這是因為一般情況下它們用于對表單的處理。(3)應(yīng)用(application):應(yīng)用范圍一般主要是應(yīng)用在服務(wù)器的構(gòu)件上。例如 JDBC 連接池、應(yīng)用的監(jiān)視、某類用戶的計數(shù)和其他參與用戶行為的類。使用javaBean的目的 1)用來封裝數(shù)據(jù)信息,業(yè)務(wù),數(shù)據(jù)訪問,事務(wù)控制邏輯的代碼 2)用來封裝jsp中的一些腳本,便于重用,可以減少jsp中腳本的使用 3)作為一個可重用的組件來使用JavaBean按照位置分為:可視化JavaBean位于客戶端(eg: 在Swing中處理事件的JavaBean)和不可視化JavaBean位于服務(wù)端,用于封裝數(shù)據(jù)信息,業(yè)務(wù),數(shù)據(jù) Servlet技術(shù)Se
12、rvlet本質(zhì)是用Java語言編寫的程序,具有獨立于平臺和協(xié)議的特點,并且是在服務(wù)器端運行的Java應(yīng)用程序,借助于Servlet可以生成具有動態(tài)效果的Web頁面。Servlet負(fù)責(zé)Web瀏覽器或者其他的HTTP HYPERLINK /view/9472.htm t _blank 客戶程序發(fā)出的請求,是位于服務(wù)器的應(yīng)用程序 HYPERLINK /view/1088.htm t _blank 之間的或者應(yīng)用程序與數(shù)據(jù)庫之間的中間層。Servlet是供用戶擴展的組件,能夠運行在Servlet容器中。Servlet容器負(fù)責(zé)接收Web客戶的HTTP請求并且向Web客戶發(fā)送HTTP響應(yīng)。2Servlet
13、原先是指位于服務(wù)器上的運行的Java語言的小程序。它是創(chuàng)造于Java applet的環(huán)境下的一個詞。Applet是只在Web瀏覽器中運行的小程序。Applet是作為網(wǎng)頁的一部分被自動下載的(就像網(wǎng)頁中的圖片被自動下載一樣)。當(dāng)applet被激活時,它便開始執(zhí)行程序。這正是它的優(yōu)雅之處。3這里的想法很簡單:用戶從Internet下載Java字節(jié)碼,并在自己的機器上運行。在網(wǎng)頁中運行Java程序成為applet。為了使用applet,需要啟用Java的Web瀏覽器執(zhí)行字節(jié)碼。用戶下載一個applet就如同在網(wǎng)頁中嵌入一幅圖片。applet成為了頁面的一部分。4通常情況下,它為用戶提供運算服務(wù)或者根
14、據(jù)用戶交互作用定位圖形的服務(wù)等等。服務(wù)器上需要有一些具有特定功能的程序,通常的時候它們實現(xiàn)了根據(jù)用戶的輸入信息來訪問數(shù)據(jù)庫的功能。而實現(xiàn)這些功能一般是利用了公共網(wǎng)關(guān)接口(CGI)應(yīng)用程序。鑒于Java程序的優(yōu)勢,如果在服務(wù)器上運行的這類應(yīng)用程序使用Java編程語言實現(xiàn),會得到更好地響應(yīng)速度。尤其是在訪問量較大的服務(wù)器上,Java servlet由于把各個用戶訪問請求激活成了單獨的程序進程中的一個線程來響應(yīng),這使得各個訪問請求所占用的系統(tǒng)資源相對減少,從而在執(zhí)行的速度上超越了CGI程序的執(zhí)行速度。具有更好的用戶體驗。servlet的生命周期:1.裝載并實例化servlet(同一個servlet在
15、整個生命周期中只有一個實例)。分為兩種裝載方式: 1).延遲加載(tomcat默認(rèn)的加載方式) 當(dāng)客戶端發(fā)起第一個請求第一次訪問servlet時,容器會將Servlet裝載進虛擬機并實例化,第二次以后去訪問同一個servlet容器就不會再裝載并實例化。 2).預(yù)先加載當(dāng)web server啟動時,web容器加載web應(yīng)用時把servlet裝載進虛擬機并實例化。這種方式需要在web.xml中進行配置numnum=0:采用預(yù)先加載(值越小越先被加載)num0:采用延遲加載。 2.init方法的調(diào)用,用來初始化servlet。當(dāng)Servlet被裝載并實例化后,容器會調(diào)用init方法對Servlet進
16、行初始化,只有在init方法調(diào)用成功后,Servlet才處于service狀態(tài),能夠處理客戶端的請求。注意:1).在整個Servlet的生命周期中init方法僅被調(diào)用一次2).用戶自定義的servlet可以覆蓋無參或有參的init方法,如果覆蓋有參的init的方法,建議使用super.init(config)對config進行初始化,如果覆蓋的是無參init方法不需要對config進行初始化,直接使用,推薦使用無參。3).用戶可以不用去覆寫init方法,覆寫init方法只是為了使用方便(比如獲取web.xml中的配置信息)。3.service方法的調(diào)用,用來處理客戶請求。當(dāng)Servlet被裝載
17、實例化并初始化后,客戶端發(fā)起請求,容器就會調(diào)用Servlet實例的service方法對請求進行處理。 注意: service方法在生命周期中被調(diào)用多次,這跟請求的次數(shù)有關(guān)。4.destory方法的調(diào)用,用來銷毀servlet。當(dāng)容器在銷毀Servlet實例前會先去調(diào)用destroy(),在此方法中可以作下列工作:1) 恢復(fù)一些初始化的變量。2) 釋放資源。3) 控制所有運行在Servlet中的線程在Servlet實例被銷毀之前能正常運行結(jié)束。4) 記錄日志信息。注意: 1) destroy()在生命周期中僅被調(diào)用一次。 2) 用戶定義的Servlet中可以不覆蓋destroy()。 MyEcl
18、ipse開發(fā)工具MyEclipse即企業(yè)級工作平臺(MyEclipse Enterprise Workbench ,簡稱MyEclipse)。作為Eclipse的擴展開發(fā)的工具,MyEclipse在WEB程序開發(fā)方面具有更出色的表現(xiàn)。對于時下流行的框架技術(shù)集成一體化,大大方便了開發(fā)人員進行程序的一體化開發(fā)。它完整支持了HTML, SSH,JS, CSS,JSP, SQL等技術(shù),更是就一個功能豐富的J2EE集成開發(fā)環(huán)境,涵蓋了完整的編碼、調(diào)試、測試以及發(fā)布的功能。從組成結(jié)構(gòu)上來看,Eclipse中對于數(shù)據(jù)庫服務(wù)、開發(fā)幫助、EJB開發(fā)工具、應(yīng)用程序服務(wù)器的連接器、J2EE模型、WEB開發(fā)工具、J2
19、EE項目部署服務(wù)這七大類功能,每一種都有相應(yīng)的功能部件,并通過一系列的插件來實現(xiàn)這些功能。而MyEclipse對此則從結(jié)構(gòu)上分別進行了模塊化,使得對任一模塊進行單獨的擴展和升級都不會對其他的模塊的功能的實現(xiàn)產(chǎn)生影響。 Access數(shù)據(jù)庫技術(shù)該聊天室系統(tǒng)使用微軟Office系列應(yīng)用軟件之一的Access數(shù)據(jù)庫。Access 作為一款基于Windows的桌面關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它提供了表、查詢、窗體、報表、頁、宏、模塊7種用來建立數(shù)據(jù)庫系統(tǒng)的對象;同時它也提供了多種功能向?qū)?、生成器、模板,把?shù)據(jù)存儲、數(shù)據(jù)查詢、界面設(shè)計、報表生成等操作進一步規(guī)范化;為建立功能完善的數(shù)據(jù)庫管理系統(tǒng)提供了
20、方便,也使得普通用戶不必編寫代碼,就可以實現(xiàn)對大部分?jǐn)?shù)據(jù)的管理任務(wù)。由于Java SDK中已經(jīng)包括了相應(yīng)的驅(qū)動程序,并且許多開發(fā)人員都安裝有Acess,故而它是練習(xí)和實驗的絕佳選擇。然而,在正式的應(yīng)用中一般不太可能使用Microsoft Access,因為它的設(shè)計目標(biāo)就非針對處理大量的并發(fā)連接。5Access作為一種關(guān)系型的數(shù)據(jù)庫管理系統(tǒng)(關(guān)系數(shù)據(jù)庫應(yīng)用數(shù)學(xué)方法來處理數(shù)據(jù)庫的數(shù)據(jù)。關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。6)其主要特點如下: (1)存儲方式單一 (2)面向?qū)ο?(3)界面友好、易操作 (4)集成環(huán)境、處理多種數(shù)據(jù)
21、信息 (5)Access支持ODBC(開發(fā)數(shù)據(jù)庫互連,Open Data Base Connectivity)等。 Tomcat應(yīng)用服務(wù)器技術(shù)本聊天室系統(tǒng)選用Apache Tomcat Server應(yīng)用服務(wù)器為服務(wù)器,該應(yīng)用服務(wù)器是Apache Jakarta軟件組織下的子項目之一。Tomcat是一個JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基礎(chǔ)上逐漸的發(fā)展,擴充,完善起來的一個JSP和Servlet規(guī)范的標(biāo)準(zhǔn)實現(xiàn),借助于Tomcat可以體驗JSP和Servlet的最新規(guī)范。在開發(fā)JavaWeb應(yīng)用時,不需要從頭創(chuàng)
22、建Servlet容器,而只需要選擇第三方提供的Servlet容器,比如Tomact,它是一個開放源代碼的Servlet容器。開發(fā)人員的主要任務(wù)是擴展javax.servlet.http.HttpServlet接口,創(chuàng)建能提供特定服務(wù)的Servlet子類。把開發(fā)人員自定義的Servlet類發(fā)布到Servlet容器中,Servlet容器就能與這些Servlet協(xié)作,Servlet容器根據(jù)Web客戶的請求,調(diào)用相關(guān)Servlet對象的方法來實現(xiàn)響應(yīng)請求。7在Tomcat中,對于應(yīng)用程序的部署工作,只需要將你的WAR放到Tomcat的webapp目錄下,服務(wù)器的自動檢測功能會為你找到并且解壓該文件。當(dāng)
23、從瀏覽器中訪問該應(yīng)用的Jsp時,由于Tomcat需要把Jsp轉(zhuǎn)化為Servlet文件,然后編譯,所以第一次的響應(yīng)速度不會很快,但是一次編譯后,訪問的響應(yīng)速度將明顯提高。Servlet容器在第一次調(diào)用JSP時,會自動編譯,然后這個JSP就駐留內(nèi)存了。所以我們在調(diào)用JSP時,第一次總會有一定的延時,在接下來的調(diào)用中就不會再有延時了。8安裝Tomcat需要設(shè)定以下兩個系統(tǒng)環(huán)境變量: 9JAVA_HOME:JDK的安裝根目錄CATALINA_HOME:Tomcat的安裝根目錄系統(tǒng)分析 系統(tǒng)設(shè)計的目的和意義自計算機誕生半個多世紀(jì)以來,應(yīng)用領(lǐng)域幾乎涉及了社會的各個方面。它的便捷、實用、高效率,在社會諸多領(lǐng)
24、域發(fā)揮著巨大作用。從軍事到民生,從科研到生活。尤其是在網(wǎng)絡(luò)的出現(xiàn)之后,信息資源的廣泛傳播與共享成為了可能。隨著信息資源日益成為社會的焦點,一種新穎的,直接的交互方式隨之產(chǎn)生。當(dāng)然這種交互的內(nèi)容不僅限于指數(shù)據(jù)、信息之間的傳遞,同時包含著人與人之間的交流。應(yīng)運而生的各種聊天軟件和在線聊天室正是承載著這一交互功能的媒介。伴隨著互聯(lián)網(wǎng)時代的到來,人們的生活方式發(fā)生了顯著的變化。借助于便捷的網(wǎng)絡(luò)進行即時方便的交流,距離不再是思想交流的障礙。WEB聊天室為大家提供一個更好的交流平臺,人們不僅可以通過文字還可以選擇表情符號進行實時的交談、聊天。WEB聊天室面向因特網(wǎng)開放,是提供給眾多用戶的一個開發(fā)的娛樂平臺
25、,借助聊天室用戶完全可以自己主動選擇聊天的對象,創(chuàng)造私下交流的機會,從而建立眾多用戶之間相互交流、傳遞情感的綠色通道。巨大的市場需求催生了眾多的WEB聊天室,諸多主流網(wǎng)站都提供這一功能用以集聚人氣,吸引網(wǎng)民。本W(wǎng)eb聊天室主要利用JSP(JavaServer Pages)技術(shù)實現(xiàn)的。主要的功能有:查看當(dāng)前的在線用戶、多人參與的會話聊天、悄悄話聊天,以及修改用戶密碼、修改用戶個人資料、更換所在聊天房間,并提供多種表情動作選項。 系統(tǒng)功能(1)實現(xiàn)用戶的注冊與登錄功能,只有經(jīng)過身份驗證的用戶才能進入聊天室。(2)實現(xiàn)聊天室基本功能,用戶能正常發(fā)言。而發(fā)言的接收對象能接收到信息。聊天分為輸入?yún)^(qū)域和顯
26、示區(qū)域。通過勾選悄悄話與選擇對話對象可以說悄悄話;(3)通過查看相關(guān)聊天室人數(shù)情況,可以選擇房間并進入聊天室;(4)在線人員記錄區(qū),記錄在線聊友情況;修改自己的密碼及基本資料。(5)聊天輸入?yún)^(qū),讓聊友可以自行發(fā)表言論并且有相應(yīng)的個性化表情發(fā)表網(wǎng)友的觀點。(6)在聊天過程中用戶可以隨時更改房間。(7)用戶初始為普通權(quán)限,只有在積分超過1000分時才擁有高級權(quán)限即成為高級用戶,高級用戶有權(quán)利維護聊天室的正常環(huán)境秩序,將不遵守聊天室公共秩序的用戶踢出禁言。系統(tǒng)設(shè)計 系統(tǒng)總體設(shè)計設(shè)計模式是面向?qū)ο笤O(shè)計中常見問題的類級與方法級的解決方案。模式是做事的方法,是實現(xiàn)目標(biāo),研磨技術(shù)的方法。10本系統(tǒng)在主頁面使
27、用了框架,多數(shù)頁面均包含有首頁面(head.jsp)和尾頁面(foot.jsp), 一些用于判斷的頁面使用了servlet控制。本聊天室還擁有兩張圖片,即背景圖片和首頁面的圖片。圖4.1 系統(tǒng)總體模塊該聊天系統(tǒng)主要由用戶注冊、用戶登錄、主聊天室和一些修改功能組成,系統(tǒng)的總體流程圖如下所示:圖4.2 系統(tǒng)總體流程圖歡迎模塊即整個聊天室的首頁,作為歡迎頁面帶領(lǐng)用戶進入本聊天室。歡迎頁面上擁有用戶登錄以及用戶注冊兩個頁面鏈接。用戶模塊由用戶注冊單元以及登錄單元構(gòu)成,鏈接進行用戶注冊和登錄使用的兩個頁面。圖4.3 用戶模塊用戶注冊單元包含用戶名、密碼、性別、年齡、郵箱、以及用于密碼保護的問題和回答。對
28、用戶所填寫的信息以表單形式進行封裝,驗證機制通過JS來完成,主要內(nèi)容為:對用戶所填信息格式以及規(guī)范進行驗證。只有填寫的所有內(nèi)容都符合要求之后,才能提交表單信息。表單提交后交給servlet控制器轉(zhuǎn)發(fā)給相應(yīng)的頁面。在轉(zhuǎn)發(fā)之前通過javabean獲取請求中表單的內(nèi)容并進行處理并將結(jié)果返回給轉(zhuǎn)發(fā)器。轉(zhuǎn)發(fā)器根據(jù)返回的處理結(jié)果判斷轉(zhuǎn)發(fā)方向。如果用戶注冊的用戶名在數(shù)據(jù)庫中有記錄表示該用戶名已經(jīng)被注冊過。返回信息為錯誤,提示用戶名已經(jīng)被注冊。如果戶名在數(shù)據(jù)庫中沒有記錄,返回信息為成功。表單信息就會被插入到數(shù)據(jù)庫的user表中。整個過程的流程圖如下所示:圖4.4 用戶注冊流程圖用戶登錄使用先前注冊的身份,對登
29、錄信息進行驗證與數(shù)據(jù)庫中的記錄信息進行比對。其中js驗證信息規(guī)范是否符合要求,javabean提取請求中表單內(nèi)的信息與數(shù)據(jù)庫比對。最后由servlet根據(jù)返回信息決定請求的轉(zhuǎn)發(fā)。用戶每成功登錄一次其積分就自動增加加2分。對于積分累積超過1000分的提高權(quán)限為高級用戶,也即是具備管理員的功能??梢杂刑呷说臋?quán)限。用戶登錄的流程圖如下所示:圖4.5 用戶登錄流程圖登錄的實現(xiàn)通過提交用戶名和密碼與數(shù)據(jù)庫中的記錄驗證是否一致,即是否有該用戶名并且密碼是否正確。對于數(shù)據(jù)庫中不存在該用戶名的情況,顯示用戶名不存在的提示信息;反之,如果身份驗證通過,就將頁面轉(zhuǎn)到聊天室房間的選擇界面,查看聊天室人數(shù)情況并進行聊
30、天室的選擇。登錄的同時將用戶名記錄在session中。選擇并進入房間時從session中拿到用戶名并利用用戶名在user表中查詢當(dāng)前用戶的積分。對查詢出的用戶積分做保存操作記錄到到session中,在聊天主頁面中顯示出該用戶的積分。同時寫入該用戶的用戶名、所選房間和用戶積分到userlist表中。以便于在聊天主頁面中查看在線聊友的鏈接頁面里能被顯示出來。邏輯流程圖如下所示:圖4.6 用戶登錄驗證、保存流程圖聊天頁面包含有輸入單元,顯示單元,基本操作單元以及處理單元共四個單元。基本操作單元包括在線用戶列表的查看、用戶資料修改、用戶密碼修改;改換房間、用戶注銷。在這個模塊也顯示了用戶目前所在的聊天
31、房間。處理單元將從輸入單元輸入的信息處理后在顯示單元顯示出來,其本身是隱藏的。圖4.7 聊天模塊基本操作單元中,借助用戶列表(user)顯示當(dāng)前聊天室系統(tǒng)的在線用戶的用戶名、積分以及進入的聊天室名稱。查詢在線聊友數(shù)據(jù)表(user-list),顯示用戶的一些關(guān)于聊天的基本信息?;静僮鲉卧校梢愿鶕?jù)用戶名以及設(shè)置的問題和問題回答對用戶的基本資料中的年齡和郵箱進行修改。通過session中保存的請求的信息可以獲得用戶名。根據(jù)所輸入的用戶名和問題的答案與數(shù)據(jù)庫中的信息比對判斷的sql語句完成修改。用戶資料修改的流程圖如下所示:圖4.8 用戶資料修改流程圖基本操作單元中,對于用戶密碼的修改的實現(xiàn),s
32、ql語句首先拿session中保存的傳入的用戶名查詢在數(shù)據(jù)庫中所匹配的記錄,再拿數(shù)據(jù)庫中的舊密碼與輸入的舊密碼做相等判斷,只有匹配的情況才可以執(zhí)行修改操作。用戶密碼修改的流程圖如下所示:圖4.9 用戶密碼修改流程圖基本操作單元中,用戶注銷分為兩個步驟。首先是在線用戶表中當(dāng)前用戶信息的刪除,然后把session里的當(dāng)前用戶的信息清空,從而實現(xiàn)用戶的注銷操作。顯示模塊的功能實現(xiàn)即指用戶的發(fā)言區(qū),當(dāng)前用戶的所有談話記錄都會在這里顯示。顯示內(nèi)容可以是公告也可以是對所有人的聊天或者是與某人悄悄話的私聊話語。特別是在私聊的情況下,聊天內(nèi)容只會在自己與聊天對象的發(fā)言區(qū)顯示,其他的用戶的發(fā)言區(qū)是不顯示的。發(fā)言
33、區(qū)中消息的獲取或者是輸入?yún)^(qū)得到(當(dāng)前用戶的發(fā)言內(nèi)容),或者是聊天室系統(tǒng)信息的自動生成(有用戶進入或者有不遵守規(guī)范的用戶被踢出聊天室的提示信息)。聊天室允許用戶通過是否勾選悄悄話進行聊天對象的選擇,多人參與的會話或者是只與某人的私下的悄悄話聊天。鑒于聊天的內(nèi)容會很多,通過window.scroll()函數(shù)控制在顯示區(qū)的信息條數(shù),從而當(dāng)信息條數(shù)多于顯示頁面允許的條數(shù)時可以生成滾動條自動滾動顯示,讓最新消息顯示在當(dāng)前區(qū)域中。當(dāng)然也允許用戶查看過去的聊天記錄,通過顯示頁面來實現(xiàn)。默認(rèn)聊天內(nèi)容的記錄在信息未清除(一般情況下,聊天記錄內(nèi)容默認(rèn)設(shè)置為服務(wù)器重啟后或者當(dāng)前的用戶發(fā)言在超過200條時會自動清除,
34、以便節(jié)省資源提高效率)之前可以顯示在該頁面上。輸入單元是聊天室系統(tǒng)中主要單元,用于實現(xiàn)用戶的發(fā)言功能。通過輸入?yún)^(qū),可以實現(xiàn)用戶的發(fā)言操作,用戶選擇聊天對象,用戶發(fā)言時表情用語,以及退出私聊或者直接退出聊天室。輸入?yún)^(qū)作為用戶的主要操作界面,在這里用戶在文本區(qū)域內(nèi)輸入信息就可以給所有用戶發(fā)言(默認(rèn)是給所有人發(fā)送信息),在文本框內(nèi)輸入有意向的聊天對象并且勾選“悄悄話”選項,就可以建立私下的聊天,而當(dāng)前用戶的發(fā)言內(nèi)容被限制在他自己以及輸入的聊天的對象那里的顯示區(qū)可以顯示,其他人的顯示區(qū)域是不顯示的。如果只寫對象名而沒有勾選“悄悄話”(即退出私聊模式),則包括輸入聊天對象在內(nèi)的所有在線聊友都可以看到他的
35、發(fā)言以及所選擇的對象。為了更好的表達,有表情用語、字體、字體顏色、字體樣式等的輔助項,通過下拉式列表框可以直接選擇,所有這些組合的文字將作為用戶的發(fā)言內(nèi)容。注銷操作通過點擊離開按鈕,通過調(diào)用用戶登出頁面(logout.jsp),實現(xiàn)當(dāng)前用戶信息在當(dāng)前用戶列表的session中刪除,同時將在線用戶表中的相關(guān)信息予以刪除操作。如果有對本聊天室的使用上的疑問,可以點擊“聊天幫助”鏈接,調(diào)用相關(guān)頁面了解本聊天室的使用說明。對于積分大于1000的用戶可以通過點擊“高級功能”鏈接行駛管理權(quán)限即踢出其他違反聊天室聊天規(guī)范的在線用戶。高級功能,即用戶在積分大于1000分以后具有的管理員形式的功能。用戶只有在積
36、分大于1000分時,該功能才會被啟用。通過該功能可以便于聊天室的規(guī)范,高級功能開啟的用戶通過下拉框選擇踢出的對象,操作成功后顯示區(qū)域提示所選用戶被提出信息。其他用戶可以給被提出的用戶留言,但被踢出的用戶將不允許再聊天也就不能看到的留言。一旦用戶被提出,可以正常登錄聊天室,但正常的聊天只能在服務(wù)器重啟之后。用戶聊天功能流程圖主要情況如下所示:圖4.10 用戶聊天主要流程圖 系統(tǒng)數(shù)據(jù)庫設(shè)計 數(shù)據(jù)庫Java程序通過JDBC驅(qū)動程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等操作。Sun公司還開發(fā)了JDBC-ODBC Bridge,用此技術(shù)Java程序就可以訪問帶有ODBC驅(qū)動程序的數(shù)據(jù)庫。目前大多數(shù)數(shù)據(jù)庫系統(tǒng)
37、都帶有ODBC驅(qū)動程序,所以Java程序能訪問諸如Oracle、Sybase、MS Access等類型的數(shù)據(jù)庫。11聊天室系統(tǒng)出于方便的考慮,選擇Microsoft Office Access數(shù)據(jù)庫。數(shù)據(jù)庫共建有有兩張表user表,以及user_list表,數(shù)據(jù)庫所有表的截圖如下:圖4.11 數(shù)據(jù)庫所有表 基本表的設(shè)計數(shù)據(jù)庫系統(tǒng)中的E-R圖如下所示:圖4.12 注冊用戶E-R圖圖4.13 在線用戶E-R圖本數(shù)據(jù)庫系統(tǒng)中有注冊用戶信息表(user表)以及在線用戶信息表(user_list表)兩張表。表4.1注冊用戶信息表(user表)字段名稱數(shù)據(jù)類型字段大小是否主鍵說明username文本50是
38、用戶名Psw文本50否用戶密碼Sex文本50否性別Age文本50否年齡Mail文本50否電子郵箱question文本50否注冊問題Reply文本50否問題回答Integral文本50否用戶積分Datecompare文本50否登錄時間表4.2在線用戶信息表(user_list表)字段名稱數(shù)據(jù)類型字段大小是否主鍵說明username文本50是在線用戶名chatroom文本50否用戶所在聊天室integral文本50否用戶積分功能實現(xiàn) 用戶注冊與登錄功能 用戶注冊用戶注冊模塊由三部分構(gòu)成:JSP、JavaBean和Servlet。其中顯示部分由JSP實現(xiàn),在JSP頁面中通過使用Javascript進
39、行驗證,具體為對用戶所輸入的信息在以表單的形式發(fā)送請求之前進行基本規(guī)范的驗證。符合規(guī)范的表單會被封裝進請求中發(fā)送到Servlet中。Servlet中調(diào)用相應(yīng)的JavaBean與數(shù)據(jù)庫中的信息進行比對判斷,未被注冊的用戶才允許注冊成功。在這一過程中JavaBean封裝并處理表單中的信息,處理的結(jié)果返回為相應(yīng)的信息:失敗則返回注冊頁面,而成功可點擊登錄連接跳轉(zhuǎn)到登錄頁面。該部分功能實現(xiàn)如下所示:圖5.1用戶注冊頁面圖5. 2用戶注冊成功圖主要實現(xiàn)部分代碼為: private String username;public String getUsername() return username;pu
40、blic void setUsername(String username) this.username = username;boolean valid = false;String username = rtb.getUsername();RegisterBean rb = new RegisterBean();rb.setUsername(request.getParameter(username);RegisterCheckBean rcb = new RegisterCheckBean(rb);if (rcb.validate()out.println();out.println()
41、;out.println(該用戶已經(jīng)存在,請重新注冊!);out.println(); 用戶登錄用戶登錄功能,如同用戶注冊功能的實現(xiàn)借助了JSP,javabean以及servlet等技術(shù)的集合。在用戶注冊功能中,對于注冊成功的情況,立即將輸入的用戶信息記錄進數(shù)據(jù)庫內(nèi)。在用戶登錄功能中,對于輸入的用戶信息與數(shù)據(jù)庫中記錄的信息作匹配判斷,匹配結(jié)果為true的跳轉(zhuǎn)到登錄成功后選擇聊天室的頁面。其功能實現(xiàn)的代碼類似于用戶注冊功能的實現(xiàn)。具體實現(xiàn)如下圖所示:圖5.3用戶登錄頁面圖5.4用戶登錄成功頁面 用戶選擇聊天房間功能5.2.1 用戶登錄時選擇聊天室房間用戶登錄成功后頁面跳轉(zhuǎn)到選擇聊天室的房間的頁面
42、。頁面上顯示聊天室中的已有的房間,供用戶自主選擇喜歡的聊天房間。在用戶登錄成功并在聊天房間選擇頁面選擇聊天房間點擊進入聊天室后,用戶名、用戶的積分以及所選擇的聊天室房間信息自動添加進user_list表中,而表中的在線用戶的信息只有在用戶注銷或被高級用戶踢出后,相應(yīng)的用戶信息才會從user_list中刪除。該部分主要的功能實現(xiàn)圖如下所示:圖5.5 聊天室選擇頁面主要實現(xiàn)代碼為: private String chatroom;public String getChatroom()return chatroom;public void setChatroom(String chatroom)th
43、is.chatroom = chatroom;stmt.executeUpdate(insert into user_list values(+username+,+chatroom+,+integral+);valid = true;ChooseBean cb = new ChooseBean();cb.setUsername(request.getParameter(username);cb.setChatroom(request.getParameter(chatroom);ChooseCheckBean ccb = new ChooseCheckBean(cb);if(ccb.vali
44、date()goToPage(main.jsp, request, response);用戶的相關(guān)信息是在經(jīng)由JavaBean處理過程中被添進相應(yīng)的數(shù)據(jù)庫中表的。5.2.2 用戶聊天時更改聊天室房間用戶聊天時,主頁面右側(cè)有休閑娛樂一欄。該欄有一下拉框,供用戶自主選擇喜歡的聊天房間。在用戶選擇好聊天室房間后點擊換個房間后,用戶名、用戶的積分以及所選擇的聊天室房間信息自動更新進user_list表中。該部分主要的功能實現(xiàn)圖如下所示:圖5.6 更換聊天室房間之前圖圖5.7 更換聊天室房間之后圖 用戶聊天功能本系統(tǒng)的主頁面基于框架技術(shù)實現(xiàn)。需要支持框架的瀏覽器進行瀏覽訪問。在主頁面中,集成顯示的頁面(
45、show.jsp)、輸入的頁面(input.jsp)、處理的頁面(transact.jsp)以及用戶信息修改的頁面(right.jsp)。 顯示功能顯示頁面中實現(xiàn)了用戶發(fā)言的顯示功能,同時可以對過去一段一部分聊天記錄的查看,系統(tǒng)的相關(guān)提示信息也在這里顯示。其實現(xiàn)功能圖如下所示:圖5.8 顯示聊天內(nèi)容功能圖主要實現(xiàn)代碼為:function GetData(url) url = class_method.jsp?action=transact.jsp;try DataLoad.src = url; catch (e) return false;var timeoutid = setTimeout(
46、GetData(), 2000); 數(shù)據(jù)載入中 用戶信息修改功能首先將用戶所在的聊天室信息顯示在用戶信息修改頁面,用戶在聊天過程中就可以方便的對用戶資料、密碼等信息進行修改還可以更換聊天室的房間。這些功能的實現(xiàn)主要是通過對相關(guān)頁面的超鏈解來實現(xiàn)。更換房間操作的功能的實現(xiàn)是借助表單將更新后的信息封裝發(fā)送給相應(yīng)的javabean來處理的。修改用戶資料的功能的實現(xiàn)借助session保存用戶名將信息傳遞過去,達到修改年齡和郵箱的目的。在對用戶資料在修改時按照要求對輸入信息進行驗證,主要是通過javabean比對數(shù)據(jù)庫中的記錄信息,當(dāng)用戶名為指定用戶名且問題的答案正確時才進行修改即修改成功的提示,否則會
47、提示拒絕修改信息。用戶密碼修改功能的實現(xiàn)同樣借助session保存用戶名從而傳遞用戶名,在javabean中查看數(shù)據(jù)庫中輸入的用戶名的舊密碼是否匹配一致,若匹配無誤才會進行接下來的更新操作即更新舊密碼為輸入的新密碼。匹配不一致則拒絕修改操作,相應(yīng)的提示修改失敗的信息。相關(guān)的功能實現(xiàn)圖如下:圖5.9 用戶修改鏈接圖圖5.10 用戶資料修改圖圖5.11 用戶密碼修改圖 處理功能處理頁面為了獲得最新的用戶聊天的信息,設(shè)定為兩秒鐘就更新一次,及時地顯示聊天信息在顯示區(qū)域內(nèi),實現(xiàn)便捷的交流,使得用戶之間幾乎無阻礙的通暢交互,便于交談中的跟進與回復(fù)。主要實現(xiàn)代碼為:處理頁面通過創(chuàng)建一個Vector數(shù)組,在
48、數(shù)組中存放經(jīng)由輸入頁面而成功的存放進入application中的有關(guān)用戶輸入的和選擇的一些操作,根據(jù)這些元素構(gòu)建形成完整的發(fā)出的消息內(nèi)容(比如是一些表情的選擇或者用戶是對其他人發(fā)言還是其他人對用戶發(fā)言以及有沒有動作的添加或者建立“悄悄話“的私聊模式)。這里主要通過把相應(yīng)的字符串組合在一起從而得到結(jié)果。之后把最終的結(jié)果借助Javascript中的write方法將發(fā)言的內(nèi)容在顯示頁面中顯示出來。主要實現(xiàn)為:%synchronized (application) String alone = new String(yes);Vector DisplayMessage = null;DisplayMe
49、ssage = (Vector) application.getAttribute(Message);if (DisplayMessage != null) if (DisplayMessage.size() MessageIValue() MessageIndex = new Integer(DisplayMessage.size();if (MessageIValue() != DisplayMessage.size() for (int i=MessageIValue(); iparent.mainframe.document.write() 輸入功能輸入頁面中,借助于在sesison中
50、保存的請求中的用戶名。聊天對象的選擇,是指聊天對象以一個輸入文本框的形式,提供給用戶自主輸入選擇聊天對象的功能。通過聊天對象的選擇可給其他用戶(或者離開或者被踢出)留言,留言的內(nèi)容會被保存在application中。留言的內(nèi)容在留言對象下次登錄的時候會被顯示到顯示頁面,從而可以達到保持聯(lián)系的目的。默認(rèn)設(shè)置為在服務(wù)器重啟之后才會清空application中保存的留言信息。通過這樣的設(shè)置方便了用戶的聊天方式。對于聊天室中可以加入發(fā)言的一些動作,默認(rèn)是固定的,也就是說在聊天室被創(chuàng)建好之后就已然具有這些動作,對于用戶而言直接就可以選擇需要的用于發(fā)言所需要的相關(guān)的表達動作?!扒那脑挕边x框,一旦勾選了這個
51、選框意味著可以進入私下聊天的模式,也就是說自己的發(fā)言只有自己選擇的私聊的對象的顯示去也才可以顯示,而其他人的顯示去也是不顯示的。積分的概念,本系統(tǒng)中的積分是借助session保存的。發(fā)送的按鈕,通過點擊該按鈕,用戶所輸入的一系列的發(fā)言信息就會被系統(tǒng)自動添加到Message中傳遞給處理頁面進行處理。離開的按鈕,通過點擊該按鈕,用戶的保存在session的相關(guān)信息就會被清空,與此同時也會把user_list表中的與用戶相關(guān)的信息清空。這一功能的實現(xiàn)圖如下所示:圖5.12 用戶輸入功能圖該頁面的一些主要的功能的實現(xiàn)代碼為:if (first = null)talkMessage=系統(tǒng)公告:+user
52、name + 進入了+chatroom+聊天室,大家歡迎!;action = no;systemSpeak = yes;synchronized (application) Message = (Vector) application.getAttribute(Message);if (Message = null) Message = new Vector(30, 10);if (Message.size() 200) Message.removeAllElements();Message.addElement(aloneTalk);Message.addElement(username);
53、Message.addElement(talkwith);Message.addElement(talkMessage);Message.addElement(systemSpeak);Message.addElement(action2);application.setAttribute(Message, Message); 查看在線聊友功能用戶在聊天過程中,即可在右側(cè)的休閑娛樂一欄里,選擇查看在線聊友鏈接,查看當(dāng)前在線的聊友以及其所在的聊天室。相關(guān)的功能實現(xiàn)圖如下:圖5.13 用戶查看在線聊友圖該頁面的一些主要的功能的實現(xiàn)代碼為:String strSql = select * from
54、user_list;ResultSet rs = db.executeQuery(strSql);int i=0;while(rs.next()String str_ChatRoom = rs.getString(chatroom);String str_UserName = rs.getString(username);String str_Integral = rs.getString(integral);i+;if(xiuxian.equals(str_ChatRoom)out.println(休閑娛樂);else if(yuanfen.equals(str_ChatRoom)out.p
55、rintln(緣分天空);else if(tantian.equals(str_ChatRoom)out.println(談天說地);rs.close(); 私聊功能(悄悄話)用戶通過勾選輸入面板上的悄悄話選項,在前面的輸入文本中輸入私聊的對象就可以與感興趣的聊友進行私聊。相關(guān)的功能實現(xiàn)圖如下:圖5.14 用戶私聊圖該功能的實現(xiàn)代碼為:String aloneTalk = request.getParameter(alonetalk);if (aloneTalk = null) aloneTalk = no;if (no.equals(aloneTalk) Vector Message = n
56、ull;synchronized (application) Message = (Vector) application.getAttribute(Message);if (Message = null) Message = new Vector(30, 10);if (Message.size() 200) Message.removeAllElements();Message.addElement(aloneTalk);Message.addElement(username);Message.addElement(talkwith);Message.addElement(talkMess
57、age);Message.addElement(systemSpeak);Message.addElement(action2);application.setAttribute(Message, Message); 趣味聊天功能用戶通過選擇輸入頁面的動作下拉框,即可在發(fā)言時自動帶上相應(yīng)的表情式語言。借此可以豐富聊天是趣味性。相關(guān)功能的實現(xiàn)圖如下:圖5.15 用戶趣味聊天圖該功能的主要實現(xiàn)代碼為:input type=text name=talkwith value= size=8 style=font-size:9pt動作說話問好點頭嫵媚開朗壞笑苦笑白眼輕吻擁抱深情傷心害羞憤怒招手不滿興奮狂
58、吻委屈著急嚎啕撒嬌奸笑飛腳抽摑假笑String action2 = ;int i = action.indexOf(B);if (i != -1) action = action.substring(0, i) + talkwithaction.substring(i + 1);if (!action.equals(no) talkMessage = action + talkMessage;action2 = yes; else if (first != null) talkMessage = talkMessage;action2 = no;Message.addElement(actio
59、n2); 高級用戶管理功能5.4.1 高級功能(踢人禁言)用戶通過點擊在輸入頁面的超鏈接“高級功能“進入高級用戶踢人的界面,選擇當(dāng)前在線的一個用戶執(zhí)行踢人操作,該操作只有在當(dāng)前用戶積分超過1000分時才有效,并且會減少該用戶50分,被踢用戶將無法發(fā)言。該功能用于實現(xiàn)對用戶的管理功能,積分的累積按日計算,每天增加2分,同日多次重復(fù)登錄不予積分。被提出的用戶即使重新登錄也無法發(fā)言,只能看到別人對他的留言與公眾的交流發(fā)言。該功能的實現(xiàn)圖如下:圖5.16 用戶高級功能圖圖5.17 用戶高級功能成功圖圖5.18 用戶被踢圖圖5.19 被踢用戶禁言圖該功能的實現(xiàn)代碼為:if(rs.next() Strin
60、g integral= rs.getString(integral); int temp = Integer.parseInt(integral); if (temp1000) temp= temp - 50; s = +temp; sql=update user set integral = +s+ where username=+username+; db.executeUpdate(sql);synchronized (application) sql = delete from user_list where username=+kickname+;db.executeUpdate(s
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2022年北京市初三一模道德與法治試題匯編:做守法的公民
- 廣東省深圳市寶安區(qū)文匯學(xué)校2019-2020學(xué)年八年級第二學(xué)期(3月份)月考數(shù)學(xué)試卷-含解析
- 物理-陜西省安康市2025屆高三下學(xué)期第二次質(zhì)量聯(lián)考(安康二模)試題和答案
- 油漆噴涂施工方案
- 座椅安裝施工方案
- 職業(yè)西藥師知識培訓(xùn)課件
- 北京征地拆遷合同范例
- 勞務(wù)分包安全合同范例
- 農(nóng)業(yè)社團實踐與體驗安排計劃
- 人力資源部的內(nèi)部安全管理計劃
- 中國歷史七年級下1單元復(fù)習(xí)教案資料
- 數(shù)據(jù)庫系統(tǒng)管理與應(yīng)用 課件 知識點2.1 使用達夢數(shù)據(jù)庫
- 第二章 幼兒園的設(shè)置與規(guī)劃
- 小學(xué)信息技術(shù)五年級下冊《第2課 平面草圖手巧繪》說課稿
- 銀行業(yè)務(wù)技能比賽方案范文(2篇)
- 人教版九年級歷史復(fù)習(xí) 專題04 資本主義制度的初步確立(考點串講)
- 初級建(構(gòu))筑物消防員理論考試真題與答案
- 特種設(shè)備安全日管控-周排查-月調(diào)度制度-
- 司馬遷與《史記·管晏列傳》
- 口腔診所信息管理制度
- 內(nèi)科年終總結(jié)和工作計劃
評論
0/150
提交評論