




已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA課程設(shè)計(jì)報(bào)告 學(xué)院:國(guó)際教育學(xué)院 專業(yè):電子商務(wù) 姓名:馬沖 陳月月 指導(dǎo)老師:程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告書局域網(wǎng)聊天系統(tǒng)一開發(fā)背景:當(dāng)今很多單位都組建了自己的局域網(wǎng),有些單位不允許員工上班時(shí)網(wǎng)上聊天,故在局域網(wǎng)的出口網(wǎng)關(guān)上只開通80端口,這給一些工作時(shí)需要交流信息或傳輸文件的工作人員帶來(lái)不便,他們很需要一個(gè)能在局域網(wǎng)內(nèi)交流信息的聊天軟件。還有現(xiàn)在大學(xué)生宿舍電腦的普及率很高,他們中有不少只接上了學(xué)校的局域網(wǎng),而沒(méi)有繳費(fèi)上Internet網(wǎng),因此他們也很需要一個(gè)局域網(wǎng)內(nèi)的聊天件來(lái)交流信息。二開發(fā)目的:插上網(wǎng)線即可與同一局域網(wǎng)內(nèi)用戶聊天功能要求:i.打開程序自動(dòng)搜索好友無(wú)需登錄ii.能夠?qū)崿F(xiàn)點(diǎn)對(duì)點(diǎn)單聊iii.能夠?qū)崿F(xiàn)文件傳輸iv.能動(dòng)態(tài)更新在線用戶列表三、系統(tǒng)設(shè)計(jì)3.1設(shè)計(jì)思想整個(gè)系統(tǒng)分為服務(wù)器和客戶端,服務(wù)器端維護(hù)各個(gè)客戶端的信息??蛻舳说乃行畔l(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行消息的分析處理并做出相應(yīng)的控制,服務(wù)器端是所有信息的中心。服務(wù)器端可以查看所有用戶的聊天記錄,監(jiān)控所有用戶的狀態(tài),發(fā)出用戶上線、離線提示等公告,客戶端則提供接收公告的功能。本課程設(shè)計(jì)按照系統(tǒng)的具體功能要求,首先應(yīng)用Socket編程創(chuàng)建客戶端和服務(wù)器端,每多個(gè)客戶端服務(wù)器端就會(huì)相因的創(chuàng)建一個(gè)線程,它們之間通過(guò)這個(gè)連接來(lái)實(shí)現(xiàn)數(shù)據(jù)通信;然后在客戶端設(shè)置一個(gè)監(jiān)聽(tīng)器,用于監(jiān)聽(tīng)服務(wù)器發(fā)來(lái)的消息。并根據(jù)消息做出不同的動(dòng)作。3.2系統(tǒng)功能該系統(tǒng)實(shí)現(xiàn)了用戶之間的點(diǎn)對(duì)點(diǎn)單人聊天,在線用戶之間的群聊。為了加強(qiáng)之間的信息交流,還實(shí)現(xiàn)了用戶之間文件傳輸、語(yǔ)音聊天。在客戶端和服務(wù)器端都可以查看歷史消息、保存消息、清空消息。為了監(jiān)控用戶之間的狀態(tài),服務(wù)器還可以實(shí)現(xiàn)踢掉用戶的功能,同時(shí)用局域網(wǎng)聊天系統(tǒng)-2-戶時(shí)間文件傳輸?shù)男畔⒍紩?huì)在服務(wù)器上顯示。3.3系統(tǒng)架構(gòu)1) 選擇傳輸控制協(xié)議TCP使Java的Socket編程機(jī)制,分別建立客戶端與服務(wù)器端、語(yǔ)音傳輸使用的是UDP控制協(xié)議;2) 分別設(shè)計(jì)客戶端與服務(wù)器端的界面,并使用Java應(yīng)用程序用戶界面的開發(fā)工具包Swing進(jìn)行窗體界面的布局,以及實(shí)現(xiàn)部分窗口事件的相應(yīng)。3.4模塊設(shè)計(jì)3.4.1服務(wù)器端:主要實(shí)現(xiàn)向各個(gè)客戶端發(fā)布系統(tǒng)消息,接受來(lái)自客戶端的各種信息并分別處理。具體功能如下:連接控制:包括啟動(dòng)服務(wù)器、斷開服務(wù)器以及斷開某個(gè)客戶端的連接;管理作用:包括對(duì)參與聊天者的昵稱進(jìn)行修改以及向所有或某個(gè)客戶端發(fā)送消息,維護(hù)一個(gè)IP地址和昵稱所對(duì)應(yīng)的哈希表,以便定位到正確的客戶端,且有權(quán)強(qiáng)制修改用戶昵稱;刷新列表:在有用戶登陸或離開的時(shí)候?qū)崟r(shí)更新列表,并將信息反饋到各個(gè)客戶端;登陸信息:檢查用戶是否已登陸,如登錄,發(fā)消息通知所有用戶。同時(shí)刷新在線用戶列表;聊天記錄:能保存聊天記錄,實(shí)現(xiàn)消息的保存、清空以及查看等功能;消息處理:解析客戶端與服務(wù)器端的消息交互類型,做出相應(yīng)處理,能夠找到消息所對(duì)應(yīng)的接收端。3.4.2客戶端:主要實(shí)現(xiàn)向服務(wù)器端發(fā)布消息,并且對(duì)來(lái)自服務(wù)器的消息做出相應(yīng)的響應(yīng)。具體功能如下:連接功能:輸入服務(wù)器地址,實(shí)現(xiàn)登錄及斷開功能登錄設(shè)置:登錄時(shí),發(fā)送消息使服務(wù)器端獲得相關(guān)登錄信息,昵稱及IP地址記錄到服務(wù)器端維持的哈希表,斷開后發(fā)送消息使IP地址及昵稱從哈希表中刪除;監(jiān)聽(tīng)作用:實(shí)現(xiàn)對(duì)服務(wù)器發(fā)送過(guò)來(lái)的消息進(jìn)行監(jiān)聽(tīng)的功能;消息處理:接收由服務(wù)器端發(fā)送來(lái)的信息,并做出相應(yīng)的響應(yīng);聊天記錄:實(shí)現(xiàn)聊天記錄的保存、清空以及查看等功能;消息處理:相應(yīng)從服務(wù)器端接收到的消息交互類型,實(shí)現(xiàn)用戶與用戶之間的信息交互和文件交互;傳輸進(jìn)度:使用進(jìn)度條直觀地表示用戶與用戶間文件交互的進(jìn)度。文件傳輸:實(shí)現(xiàn)客戶端之間的文件發(fā)送與文件的接收功能。語(yǔ)音聊天:實(shí)現(xiàn)客戶端之間的語(yǔ)音聊天功能。局域網(wǎng)聊天系統(tǒng)四、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)4.1服務(wù)器端4.1.1服務(wù)器該段功能由Server.java文件中的Server類實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程下:?jiǎn)?dòng)服務(wù)并接收連接:服務(wù)器的任務(wù)首先是建立一個(gè)由IP地址到昵稱的映射的哈希表,用于存放用戶的基本信息;啟動(dòng)服務(wù)器后,等候建立一個(gè)連接,然后用這個(gè)連接產(chǎn)生的Socket創(chuàng)建一個(gè)Client,同時(shí)檢查該用戶是否已存在哈希表中,若以存在,則提示該次連接請(qǐng)求失敗,從而實(shí)現(xiàn)限制IP的目的;若不存在,則將該IP地址及其昵稱或默認(rèn)昵稱的映射添加到哈希表中,接著服務(wù)器端向所有的用戶發(fā)送管理信息,提示有新的用戶登錄,并且將刷新后的用戶列表同時(shí)發(fā)送到各個(gè)客戶端。關(guān)閉服務(wù):服務(wù)器端遍歷哈希表,關(guān)掉每一個(gè)用戶對(duì)應(yīng)的Socket,之后,關(guān)閉服務(wù)Server。管理作用之發(fā)送消息:服務(wù)器端解析由客戶端發(fā)送的請(qǐng)求,若控制字以“SPECIAL開頭,則通過(guò)控制字后的昵稱從哈希表中找到對(duì)應(yīng)的用戶,實(shí)現(xiàn)服務(wù)器端到客戶端的點(diǎn)對(duì)點(diǎn)消息交互;若不是以“SPECIAL”開頭,則實(shí)現(xiàn)消息的廣播發(fā)布。管理作用之修改昵稱:首先判斷新的昵稱是否在哈希表中存在,若已存在則給出錯(cuò)誤提示,否則通過(guò)該用戶的舊昵稱在哈希表中查找到該用戶,并用欲修改的昵稱替換掉原昵稱;接著刷新服務(wù)器端的用戶列表顯示,最后刷新客戶端的用戶列表顯示。管理作用之?dāng)嚅_連接:若要斷開某個(gè)客戶端與服務(wù)器的連接,首先向該用戶發(fā)送被管理員請(qǐng)出系統(tǒng)的信息,然后通過(guò)該用戶的昵稱從哈希表中找到對(duì)應(yīng)socket、service及IP地址等信息,再?gòu)拿恳豁?xiàng)信息對(duì)應(yīng)的列表里刪除該用戶的信息,最后關(guān)閉該用戶的socket,同時(shí)刷新服務(wù)器端以及各個(gè)客戶端的用戶列表顯示。在服務(wù)其中,需要同時(shí)處理多個(gè)客戶端的請(qǐng)求,因此此處用到了多線程處理機(jī)制。在服務(wù)器程序里創(chuàng)建單個(gè)ServerSocket,并調(diào)用accept()來(lái)等候一個(gè)新連接,一旦accept()返回,就取得結(jié)果獲得的socket,并用它新建一個(gè)線程,令其只為那個(gè)特定的客戶端服務(wù),然后再調(diào)用accept(),等候下一次新的連接請(qǐng)求。4.1.2界面設(shè)計(jì)該段功能由ServerFrame.java文件中的ServerFrame類實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程如下:窗口布局:服務(wù)器端窗口使用了BorderLayout事務(wù)管理器,把整個(gè)容器分成了五個(gè)區(qū)域:North、South、East、West和Center,每個(gè)區(qū)域放置一個(gè)面板,每個(gè)面板又分別使用不同的事務(wù)管理器放置其他組件,如按鈕、標(biāo)簽、文本框等,各個(gè)組將構(gòu)成了一個(gè)完整的服務(wù)器端界面。事件處理:通過(guò)Java的授權(quán)事件模型,針對(duì)組件send、Button1Button8,通過(guò)addXXXListener(主要運(yùn)用了addActionListener)方法注冊(cè)監(jiān)聽(tīng)器,并且實(shí)現(xiàn)ActionListener接口中的actionPerformed方法,這樣,當(dāng)組件觸發(fā)了相應(yīng)類型的事件后,此事件就會(huì)被傳送給已注冊(cè)的監(jiān)聽(tīng)器,事件監(jiān)聽(tīng)器負(fù)責(zé)處理事件。至此,局域網(wǎng)聊天系統(tǒng)實(shí)現(xiàn)了窗口對(duì)以下幾個(gè)事件的響應(yīng):發(fā)送消息、保存消息清空消息、查看歷史消息、啟動(dòng)服務(wù)、關(guān)閉服務(wù)、斷開連接、修改昵稱。4.1.3功能函數(shù)該段功能由ChatTookit.java文件中的ChatTookit類實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程如下:函數(shù)getAllNickname:該函數(shù)實(shí)現(xiàn)從IP地址昵稱對(duì)照哈希表中得到所有的昵稱的功能,函數(shù)原型如下publicstaticStringgetAllNickname(Hashtableip2nickname)函數(shù)sendInfoToAll:該函數(shù)實(shí)現(xiàn)遍歷所有已連接的客戶端,并且發(fā)送輸入的信息的功能,函數(shù)原型如下:publicstaticvoidsendInfoToAll(ArrayListonLineUsers,Stringinfo)throwsIOException函數(shù)sendInfo:該函數(shù)實(shí)現(xiàn)給某個(gè)特定用戶發(fā)送一條信息的功能,函數(shù)原型如下:publicstaticvoidsendInfo(Socketclient,Stringinfo)throwsIOException函數(shù)getIP:該函數(shù)實(shí)現(xiàn)從socket中得到用戶的ip地址的功能,函數(shù)原型如下:publicstaticStringgetIP(Socketsocket)函數(shù)getIP:該函數(shù)實(shí)現(xiàn)從一個(gè)hashtable中根據(jù)value得到key的功能,函數(shù)原型如publicstaticStringgetIP(Hashtableip2nickname,Stringnickname)函數(shù)getNickname:該函數(shù)實(shí)現(xiàn)從socket和IP地址昵稱對(duì)照hashtable中得到用戶的昵稱的功能,函數(shù)原型如下:publicstaticStringgetNickname(Socketsocket,Hashtableip2nickname)函數(shù)updateOnLineUsersList:該函數(shù)實(shí)現(xiàn)將在線用戶列表的顯示清空,并用最新的用戶列表更新客戶端的用戶列表,只顯示昵稱,函數(shù)原型如下:publicstaticvoidupdateOnLineUsersList(ListonLineUsersList,StringallNickname)函數(shù)updateOnLineUsersList:該函數(shù)實(shí)現(xiàn)將在線用戶列表的顯示清空,并用最新的用戶列表更新服務(wù)器端的用戶列表:顯示的是ip:昵稱,函數(shù)原型如下:publicstaticvoidupdateOnLineUsersList(ListonLineUsersList,Hashtableip2nickname)函數(shù)getSocketByIP:該函數(shù)實(shí)現(xiàn)根據(jù)用戶ip地址得到該用戶所在的socket功能,函數(shù)原型如下:publicstaticSocketgetSocketByIP(ArrayListonLineUsers,Stringip)函數(shù)getServiceByIP,該函數(shù)實(shí)現(xiàn)根據(jù)用戶ip地址得到該用戶所在的service功能,函數(shù)原型如下:publicstaticServicegetServiceByIP(ArrayListallService,Stringip)4.1.4信息處理客戶端幾乎所有信息都是交給服務(wù)器的Service負(fù)責(zé)接受這些信息,并且做出相應(yīng)的處局域網(wǎng)聊天系統(tǒng)理。該段功能由Service.java文件中的Service類實(shí)現(xiàn),實(shí)現(xiàn)過(guò)程如下:該類仍然是使用了Java的多線程處理機(jī)制,對(duì)為每一個(gè)登錄的用戶初始化一個(gè)Service,接著服務(wù)器端接收信息,將用戶發(fā)過(guò)來(lái)的信息顯示在服務(wù)器端面板上,并遍歷發(fā)送給所有的客戶端。此時(shí),進(jìn)行消息類型的判斷:若控制字以“NICKNAME:”開始,則表示該用戶發(fā)出了一個(gè)修改昵稱的請(qǐng)求,服務(wù)器端需要判斷該昵稱是否在哈希表中存在,如若存在,則提示用戶不能修改為此名字,否則更新該用戶的資料,并且刷新服務(wù)器端和客戶端的用戶列表。若控制字以“SPECIAL:”開頭,則表示該用戶發(fā)出了一個(gè)需要同某一用戶私聊的請(qǐng)求,此時(shí)服務(wù)器端通過(guò)控制字頭的后的昵稱,找到接收端用戶的信息,并對(duì)其發(fā)出私聊的信息,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的消息交互。若控制字以“FILE:”開始,則表示該用戶發(fā)出了一個(gè)對(duì)某一客戶端發(fā)送文件的請(qǐng)求,此時(shí),服務(wù)器端同樣通過(guò)控制字頭后的昵稱,查找到對(duì)應(yīng)的接收端用戶的信息,并將該用戶的IP地址傳遞給發(fā)送端,并在服務(wù)器端顯示發(fā)送端想要對(duì)接收端傳輸文件的信息。若控制字以“FILEFINISH:”開始,則表示文件傳輸完畢,此時(shí)服務(wù)器端發(fā)出文件傳輸完畢的信息。若控制字以“FILELENFGTH:”開始,則表示傳遞的是文件的長(zhǎng)度。若控制字以“VOICE:”開始,則說(shuō)明是語(yǔ)音聊天的請(qǐng)求。后面的信息解析和文件傳輸請(qǐng)求是一樣的原理。若控制字以“VOICEEND:”開始,則說(shuō)明語(yǔ)音聊天結(jié)束,此時(shí)客戶端的語(yǔ)音聊天兩個(gè)相關(guān)的進(jìn)程結(jié)束。當(dāng)該用戶注銷時(shí),服務(wù)器端更新在線用戶列表以及IP地址昵稱的哈希映照表,并且刷新服務(wù)器端同客戶端的用戶列表顯示,同時(shí)發(fā)出該用戶離開的消息。4.2客戶端設(shè)計(jì)與編碼由于服務(wù)器端需要一次處理多個(gè)客戶端的請(qǐng)求,所以客戶端的設(shè)計(jì)均使用了Java的多線程處理機(jī)制實(shí)現(xiàn)。4.2.1客戶端程序該段功能由Client.java文件中的Client類實(shí)現(xiàn),具體實(shí)現(xiàn)過(guò)程如下:新建客戶端:初始化該客戶端的監(jiān)聽(tīng)器、套接字、在線用戶列表以及發(fā)送消息的String流,并且將客戶端連接狀態(tài)設(shè)置為真。初始化一個(gè)客戶端時(shí),需要用到該客戶端的IP地址、端口號(hào)、在線用戶列表以及聊天內(nèi)容列表等信息。建立監(jiān)聽(tīng):創(chuàng)建一個(gè)BufferedReader以及一個(gè)PrintStream之后,再通過(guò)多線程機(jī)制建立對(duì)服務(wù)器發(fā)來(lái)消息進(jìn)行監(jiān)聽(tīng)的監(jiān)聽(tīng)器Listener。發(fā)送消息:客戶端循環(huán)發(fā)送消息給服務(wù)器,直到發(fā)送的String流遇到結(jié)尾字符。4.2.2界面設(shè)計(jì)局域網(wǎng)聊天系統(tǒng)該段功能由ClientFrame.java文件中的ClientFrame類實(shí)現(xiàn)(程序代碼請(qǐng)見(jiàn)附錄),具體實(shí)現(xiàn)過(guò)程如下:窗口布局:服務(wù)器端窗口使用了BorderLayout事務(wù)管理器,把整個(gè)容器成了五個(gè)區(qū)域:North、South、East、West和Center,每個(gè)區(qū)域放置一個(gè)面板,每個(gè)面板又分別使用不同的事務(wù)管理器放置其他組件,如按鈕、標(biāo)簽、文本框、進(jìn)度條等,其中文件傳輸進(jìn)度條初始化為不可見(jiàn),各個(gè)組將構(gòu)成了一個(gè)完整的客戶端界面。事件處理:通過(guò)Java的授權(quán)事件模型,針對(duì)組件TextField、Button1Button6,Button8-Button12,通過(guò)addXXXListener(主要運(yùn)用了addActionListener)方法注冊(cè)監(jiān)聽(tīng)器,并且實(shí)現(xiàn)ActionListener接口中的actionPerformed方法,這樣,當(dāng)組件觸發(fā)了相應(yīng)類型的事件后,此事件就會(huì)被傳送給已注冊(cè)的監(jiān)聽(tīng)器,事件監(jiān)聽(tīng)器負(fù)責(zé)處理事件。至此,實(shí)現(xiàn)了窗口對(duì)以下幾個(gè)事件的響應(yīng):用戶登錄、退出、保存消息、清空消息、查看歷史消息、文件發(fā)送、文件接收、文件開始傳輸、修改昵稱、語(yǔ)音聊天、拒絕語(yǔ)音、結(jié)束語(yǔ)音以及消息發(fā)送。4.2.3文件發(fā)送該段功能主要實(shí)現(xiàn)文件發(fā)送,默認(rèn)端口為9900,由FileSender.java文件中的FileSender類實(shí)現(xiàn)4.2.5消息監(jiān)聽(tīng)該類主要實(shí)現(xiàn)對(duì)服務(wù)器發(fā)送的消息進(jìn)行監(jiān)聽(tīng)的功能,由Listener.java文件中的Listener類實(shí)現(xiàn)(程序代碼請(qǐng)見(jiàn)附錄),具體實(shí)現(xiàn)過(guò)程如下:使用緩沖輸入流、在線用戶列表以及聊天記錄列表初始化Listener對(duì)象的相關(guān)屬性,并啟動(dòng)多線程。循環(huán)接收從服務(wù)器發(fā)送來(lái)的信息,直到輸入流讀到了String流的末尾,接著開始判斷消息的類型。若控制字以“NICKNAME”開始,則證明需要更新用戶列表,此時(shí)客戶端進(jìn)行相關(guān)操作。如控制字以“FILEECFO”開始,則客戶端需要通過(guò)控制字以后的字符獲得目的端的IP地址。若控制字以“FLENGHTH”開頭,則客戶端可以獲得需要傳輸?shù)奈募L(zhǎng)度。若控制字以“FILELENFGTH:”開始,則表示傳遞的是文件的長(zhǎng)度。若控制字以“VOICE:”開始,則說(shuō)明是語(yǔ)音聊天的請(qǐng)求。后面的信息解析和文件傳五、結(jié)論與總結(jié)5.1課程設(shè)計(jì)結(jié)論通過(guò)4.3運(yùn)行結(jié)果,可以看出,該課程設(shè)計(jì)利用Java應(yīng)用程序Socket編程實(shí)現(xiàn)了以下功能:使用Java的多線程處理機(jī)制建立兩個(gè)套接字分別作為服務(wù)器端和客戶端。局域網(wǎng)聊天系統(tǒng)在服務(wù)器端實(shí)現(xiàn)了向各個(gè)客戶端發(fā)布系統(tǒng)消息,接受來(lái)自客戶端的各種信息并分別處理的功能,可以控制客戶端的連接以及對(duì)用戶的管理作用,并且能夠適時(shí)檢測(cè)已登錄用戶的連接狀態(tài)且刷新在線用戶列表,更能夠解析客戶端與服務(wù)器端的消息交互并做出相應(yīng)處理。在客戶端實(shí)現(xiàn)了向服務(wù)器端發(fā)布消息,并且對(duì)來(lái)自服務(wù)器的消息做出相應(yīng)的響應(yīng),可以連接到特定的服務(wù)器,設(shè)置自己的昵稱,并且能夠監(jiān)聽(tīng)服務(wù)器端發(fā)送過(guò)來(lái)的消息并做出相應(yīng)的響應(yīng),更加能夠與其他用戶進(jìn)行廣播或私聊,以及實(shí)現(xiàn)文件傳輸,語(yǔ)音聊天等功能。由此,可見(jiàn),本次課程設(shè)計(jì)完成了最初的設(shè)計(jì)要求,即實(shí)現(xiàn)了類似P2P的QQ聊天系統(tǒng),有相應(yīng)的客戶端和服務(wù)器端;服務(wù)器端可以記錄當(dāng)前在線客戶列表,把客戶列表發(fā)送給每一個(gè)在線客戶,并實(shí)時(shí)刷新;任何一個(gè)用戶都可以和任意其它的用戶進(jìn)行交互,即從在線客
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國(guó)天然嬰兒護(hù)膚品市場(chǎng)銷售模式與發(fā)展趨勢(shì)研究報(bào)告
- 2025至2030中國(guó)醫(yī)療服務(wù)站行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評(píng)估報(bào)告
- 2025至2030中國(guó)醫(yī)用級(jí)空氣消毒機(jī)市場(chǎng)風(fēng)險(xiǎn)評(píng)估與需求潛力研究報(bào)告
- 2025至2030中國(guó)制動(dòng)軟管行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 常職院環(huán)境監(jiān)測(cè)技術(shù)課件05大氣污染源監(jiān)測(cè)
- 湖南湘潭消防招聘宣傳講解員考試真題2024
- 包裝工程師培訓(xùn)內(nèi)容
- 陜西西安電子科技大學(xué)招聘考試真題2024
- 車輛改裝設(shè)計(jì)及安裝服務(wù)協(xié)議
- 城市基礎(chǔ)設(shè)施拆遷補(bǔ)償協(xié)議范本
- 九師聯(lián)盟2024-2025學(xué)年高二下學(xué)期6月摸底聯(lián)考英語(yǔ)試題(含答案)
- 老年共病管理中國(guó)專家共識(shí)(2023)課件
- 中醫(yī)優(yōu)才考試試題及答案
- 桌游店創(chuàng)業(yè)初期計(jì)劃書
- 智能垃圾分類中轉(zhuǎn)站建設(shè)與環(huán)保技術(shù)升級(jí)合同
- 小學(xué)數(shù)學(xué)單元整體教學(xué)問(wèn)題與對(duì)策
- 獄政管理業(yè)務(wù)培訓(xùn)體系構(gòu)建
- 核電質(zhì)量保證體系培訓(xùn)
- 部編版三年級(jí)下冊(cè)語(yǔ)文同步作文(全冊(cè))
- 芒硝散外敷治療水腫
- 光伏電站運(yùn)維安全操作規(guī)程
評(píng)論
0/150
提交評(píng)論