計算機網(wǎng)絡課程設計報告書4542816318_第1頁
計算機網(wǎng)絡課程設計報告書4542816318_第2頁
計算機網(wǎng)絡課程設計報告書4542816318_第3頁
計算機網(wǎng)絡課程設計報告書4542816318_第4頁
計算機網(wǎng)絡課程設計報告書4542816318_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 學 號: 武漢理工大學華夏學院課 程 設 計    題 目計算機網(wǎng)絡課程設計系 別信息工程專 業(yè)軟件技術班 級姓 名成 績   2011年01月 13 日  課程設計任務書學生姓名: 專業(yè)班級: 題 目: 簡單的聊天軟件(c/s) 目錄一、設計目的3二、設計任務3三、時間安排3四、具體設計過程和步驟(以協(xié)議驗證編程為例)34.1 需求分析34.1.1項目描述34.1.2系統(tǒng)需求44.2套接字介紹與使用44.3 流程分析與設計44.4 項目基本步驟54.4.1創(chuàng)建項目以及基本的包54.4.2創(chuàng)建

2、項目的基本類54.5 編碼64.6 系統(tǒng)實施與運行184.6.1服務器啟動與關閉窗體視圖184.6.2客戶端產(chǎn)生視圖184.6.3服務器聊天窗口、客戶機聊天窗口184.6.4服務器與客戶機交互194.6.4 cmd模式telnet服務器進行和交互20五、設計心得體會21六、設計過程中的疑問21七、指導教師評語22一、 設計目的通過本課程設計,培養(yǎng)學生具有c/s或b/s式的網(wǎng)絡應用系統(tǒng)的設計和開發(fā)以及中小規(guī)模組網(wǎng)能力;掌握常用網(wǎng)絡開發(fā)工具(如vb、vc)的使用,或掌握web開發(fā)工具(如asp等)的方法與網(wǎng)絡規(guī)劃、設計、集成的步驟和方法;使同學們經(jīng)歷網(wǎng)絡應用系統(tǒng)開發(fā)及網(wǎng)絡集成的全過程和受到一次綜合

3、訓練,以便能較全面地理解、掌握和綜合運用所學的知識,在實踐中培養(yǎng)分析問題和解決問題的能力。并為畢業(yè)設計打下堅實的基礎。通過分析設計和實現(xiàn),可以使理論知識得到驗證并且能夠了解基本網(wǎng)絡開發(fā)的方法、步驟,細節(jié),提高動手能力。二、 設計任務1. 實現(xiàn)簡單的客戶端發(fā)送信息、服務器端收信息。2. 實現(xiàn)簡單的服務器端發(fā)送信息、客戶端收信息3. 實現(xiàn)客戶端請求關閉連接,服務器作出相應4. 編程模擬實現(xiàn)telnet5. 獲取主機名和ip地址三、 時間安排01月10日,查閱資料,確定設計題目;01月11日,分析題目,創(chuàng)建工程,準備程序;01月12日,封裝代碼,上機調(diào)試程序;01月13日,提交課程設計報告;四、 具

4、體設計過程和步驟(以協(xié)議驗證編程為例)4.1 需求分析4.1.1項目描述 在信息網(wǎng)絡高速發(fā)展的今天,網(wǎng)上聊天已成為了我們每天生活、工作必不可少的一部分,如qq、飛鴿、uc等聊天工具的普及。聊天工具為我們的生活和學習帶來了很多方便,在這里我做了一個簡單的網(wǎng)絡聊天軟件神話聊天室,實現(xiàn)了一些基本的服務器與客戶端的相互交流和請求,本項目編寫簡單,易于移植,交流方便。本項目主要實現(xiàn)的功能是利用網(wǎng)絡知識套接字(ip地址+端口號),實現(xiàn)服務器和客戶端的基本通信功能,并且服務器可以實現(xiàn)同時與多臺客戶端通信交流。本項目利用java知識、借助myeclipse開發(fā)平臺,寫了一個服務器端和一個客戶端,可以將這個客戶

5、端移植到別的機器上與本機實現(xiàn)多對一的交流,同時客戶端也可以在自己利用遠程登陸的方式(開始>運行>cmd>telnet 服務器ip 服務器端口號),與服務器進行交流。4.1.2系統(tǒng)需求1. 問題描述利用myeclipse平臺,設計出簡潔, 用戶友好的聊天界面及方便靈活的客戶端與服務器之間的交流,能完成基本的一對一用戶交流、一對多用戶交流,客戶端與服務器之間的相互請求關閉連接的操作。該系統(tǒng)主要包括服務器端和客戶端兩部分:服務器端:利用java知識serversocket類定義一個服務器端端口new serversocket(int iport),然后不但讓服務器端端口產(chǎn)生監(jiān)聽,利

6、用多線程知識定義一個線程類,讓每接受到一個監(jiān)聽就給服務器產(chǎn)生一個聊天窗口,直至聊天結束就關閉此窗口??蛻舳耍豪?java 知識socket類定義一個客戶端 端口new socket( string ip,int iport),此ip為服務器端主機的ip地址,端口號為服務器端服務器定義的端口號,然后讓客戶端啟動,這樣客戶端就會就請一次服務器,服務器接受到一個監(jiān)聽就給服務器產(chǎn)生一個與之對應的聊天窗口,兩者進行聊天,直至哪一方要求結束聊天就關閉窗體。2. 顯示服務器與客戶機的ip和主機名利用java中的getlocaladdress().gethostname()和getinetaddress()

7、;3. 項目視圖的建立 利用java se 知識采用java中swing包控件,創(chuàng)建一個啟動服務器的窗體(見圖4)、一個啟動客戶端的窗體(見圖6)、一個服務器端的聊天窗體(見圖8)、一個客戶端的聊天窗體(見圖8)。4.2套接字介紹與使用 多個tcp連接或多個應用程序進程可能需要通過同一個 tcp協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應用程序進程和連接,許多計算機操作系統(tǒng)為應用程序與tcpip協(xié)議交互提供了稱為套接字(socket)的接口。多個tcp連接或多個應用程序進程可能需要通過同一個 tcp協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應用程序進程和連接,許多計算機操作系統(tǒng)為應用程序與tcpip協(xié)議交互提供了

8、稱為套接字(socket)的接口。套接字簡介:套接字,是支持tcp/ip的網(wǎng)絡通信的基本操作單元,可以看做是不同主機的間的進程進行雙向通信的端面點,簡單的說就是通信的兩方的一種約定,用套接字中的相關函數(shù)來完成通信過程4.3 流程分析與設計啟動服務器serversocket ss產(chǎn)生服務器端聊天窗口產(chǎn)生監(jiān)聽socket s=ss.accept()啟動客戶端輸入服務器端主機ip+porttruefalsetruefalse產(chǎn)生客戶端聊天窗口進行相互交流圖1 主要流程圖4.4 項目基本步驟4.4.1創(chuàng)建項目以及基本的包打開myeclipse,新建java project工程,取名為chatroom,

9、圖2; 在src下新建包edu.huaxia.chatserver、edu.huaxia.chatclient,圖3; 圖2 圖3 4.4.2創(chuàng)建項目的基本類1. 創(chuàng)建啟動服務器視圖類tcpserveview.java,代碼見4.5編碼12. 創(chuàng)建線程服務器類tcpsession.java,代碼見4.5編碼23. 創(chuàng)建服務器端聊天窗口視圖類chatwindowserevrview.java,代碼見4.5編碼34. 創(chuàng)建啟動客戶端視圖類clientview.java,代碼見4.5編碼45. 創(chuàng)建客戶端聊天窗口視圖類tcpclient.java,代碼見4.5編碼54.5 編碼1. tcpserve

10、view.java代碼:package edu.huaxia.chatserver;import java.aw*;import java.io.ioexception;import .serversocket;import .socket;import javax.swing.*;/* * author thomas *服務器端窗體:開始和停止服務 */public class tcpserverview extends jframeprivate static final long serialversionuid = 1l;private serversocket ss;private

11、jbutton start,stop;public tcpserverview()super("服務器窗體");try ss = new serversocket(6666);/給服務器綁定一個端口 catch (ioexception e1) e1.printstacktrace();start = new jbutton("啟動服務器");/開始按鈕監(jiān)聽事件>啟動服務器start.addactionlistener(new actionlistener()public void actionperformed(actionevent e) st

12、art.setvisible(false);/啟動后設置開始按鈕不可見/如果停止按鈕是不可見時,啟動后設置停止按鈕可見if (stop.isvisible()=false) stop.setvisible(true);this.start();/調(diào)用內(nèi)部類的start方法/* * 內(nèi)部類方法,監(jiān)聽一個端口,并產(chǎn)生一個線程 */private void start() try socket socket=ss.accept();new tcpsession(socket).start();/讓線程開啟 this.start(); catch (ioexception e) / todo auto

13、-generated catch blocke.printstacktrace(););stop = new jbutton("關閉服務器");stop.setvisible(false);/最初時設置停止按鈕不見/停止按鈕監(jiān)聽事件>停止服務器stop.addactionlistener(new actionlistener()public void actionperformed(actionevent e) this.close();/調(diào)用內(nèi)部類的close方法/如果開始按鈕是不可見時,啟動后設置開始按鈕可見if (start.isvisible()=false)

14、 start.setvisible(true);/設置停止按鈕不可見stop.setvisible(false);/* * 內(nèi)部類方法,關閉端口 */private void close() try if(ss!=null)/如果端口不為空,就關閉該端口ss.close(); catch (ioexception e) / todo auto-generated catch blocke.printstacktrace(););this.add(start);this.add(stop);this.setlayout(null);this.setbackground(color.light_g

15、ray);this.setbounds(150, 150, 300, 300);this.setvisible(true);start.setbounds(100, 75, 100, 50);stop.setbounds(100, 155, 100, 50);public static void main(string args) /主方法,調(diào)用自己,產(chǎn)生圖形化用戶界面new tcpserverview();2. tcpsession.java代碼:package edu.huaxia.chatserver;import java.io.*;import .socket;import edu.

16、huaxia.chatview.chatwindowserverview;/* * author thomas *對服務器產(chǎn)生的線程進行處理 */public class tcpsession extends thread private socket socket;private bufferedreader br;private printstream ps;public tcpsession(socket s) this.socket = s;try /定義端口的輸入輸出流br=new bufferedreader(new inputstreamreader(socket.getinpu

17、tstream();ps=new printstream(socket.getoutputstream(); catch (ioexception e) e.printstacktrace();/* * 流的關閉方法 */public void close()try if(br!=null) br.close();if(ps!=null) ps.close();if(socket!=null) socket.close(); catch (ioexception e) / todo auto-generated catch blocke.printstacktrace();/* * 線程的啟動

18、方法 */public void run() /產(chǎn)生一個圖形化聊天界面chatwindowserverview cws = new chatwindowserverview(socket,br,ps);cws.dopost();/調(diào)用cws的dopost方法cws.close();/調(diào)用cws的close方法cws.dispose();/將這個聊天窗體摧毀this.close();/調(diào)用自己關閉流的方法close3. chatwindowserevrview.java代碼:package edu.huaxia.chatview;import java.io*;import .socket;im

19、port java.text.simpledateformat;import java.util.date;import javax.swing.*;/* * author thomas *用戶聊天窗體 */public class chatwindowserverview extends jframe implements actionlistenerprivate static final long serialversionuid = 1l;private jlabel l1,l2,l3,l4;private jpanel p1,p2,p3,p4,p5;private textarea

20、ta1,ta2;private jbutton send,quit;private bufferedreader br;private printstream ps;private boolean b=true;/* * 構造器對窗體屬性的基本定義 */public chatwindowserverview(socket socket,bufferedreader br,printstream ps)super("神話聊天室服務器");this.br=br;this.ps=ps;l1 = new jlabel("客戶ip:"+socket.getloca

21、laddress();l3 = new jlabel("客戶名字:"+socket.getlocaladdress().gethostname();l2 = new jlabel("主機ip:"+socket.getinetaddress();l4 = new jlabel("主機名字:"+socket.getinetaddress().gethostname();border b1 = borderfactory.createtitledborder("聊天信息顯示窗體");border b2 = borderf

22、actory.createtitledborder("發(fā)送信息窗體");border b3 = borderfactory.createtitledborder("對方基本信息");border b4 = borderfactory.createtitledborder("本人基本信息");p1 = new jpanel();p1.setborder(b1);p2 = new jpanel();p2.setborder(b2);p3 = new jpanel();p3.setborder(b3);p4 = new jpanel();p

23、4.setborder(b4);p5 = new jpanel();ta1 = new textarea(10,47);ta2 = new textarea(11,67);font f = new font("default",font.plain,18);ta1.setfont(f);ta1.setforeground(color.red);send = new jbutton("發(fā)送");send.addactionlistener(this);/產(chǎn)生監(jiān)聽quit = new jbutton("關閉");quit.addactio

24、nlistener(this);/產(chǎn)生監(jiān)聽this.setlayout(null);this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);p1.add(ta1);p2.add(ta2);p3.add(l1);p3.add(l3);p4.add(l2);p4.add(l4);p5.add(send);p5.add(quit);this.setbounds(100,100, 720, 600);p1.setbackground(color.gray);p1.setbounds(0, 0, 500, 280);p3.setb

25、ackground(color.white);p3.setbounds(505, 0, 190, 280);l1.setbounds(507, 5, 187, 30);l2.setbounds(507, 37, 187, 30);p2.setbackground(color.pink);p2.setbounds(0, 290, 500, 220);p4.setbackground(color.light_gray);p4.setbounds(505, 290, 190, 220);l2.setbounds(507, 295, 187, 30);l4.setbounds(507, 327, 18

26、7, 30);p5.setbounds(0, 520, 500, 40);this.setvisible(true);/* * 對監(jiān)聽事件的處理 */public void actionperformed(actionevent e) /發(fā)送按鈕事件。當發(fā)送文本框的值不為空時,就將信息發(fā)送為輸出流,同時在信息框中打印出來if(e.getsource().equals(send) string s1=null;s1=ta2.gettext().trim();if(!s1.equals("")ta2.settext("");/對時間對象的處理simpleda

27、teformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");date date = new date();/如果得到的是quit就返回方法 if("quit".equalsignorecase(s1) ta1.append("服務器"+sdf.format(date)+":"+"要求斷開連接"); ps.println(""+sdf.format(date)+":"+"要求斷開連接&quo

28、t;); return; ps.println(""+sdf.format(date)+":"+s1); ta1.append("服務器"+sdf.format(date)+":"+s1+"n"); ps.flush();else if(e.getsource()=quit)/發(fā)送按鈕事件。將“quit”信息發(fā)送為/輸出流,同時將b設置為falseps.println("quit");b=false;/* * 接受輸入流的信息 */public void dopost()tr

29、y string s=null;simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");date date = new date();ps.println(""+sdf.format(date)+":你好,歡迎光臨神話聊天室!");while(b)s=br.readline();if(s!=null|s!="")if("quit".equalsignorecase(s) /若得到的是'quit'就返回t

30、a1.append("客戶"+sdf.format(date)+"要求斷開連接!n");return;ta1.append("客戶"+s+"n"); catch (ioexception e) e.printstacktrace();/* * 流的關閉窗體 */public void close()try if(br!=null) br.close();if(ps!=null) ps.close(); catch (ioexception e) / todo auto-generated catch blocke.

31、printstacktrace();4. clientview.java代碼:package edu.huaxia.chatclient;import java.awt.*;import java.io.ioexception;import .socket;import .unknownhostexception; /* * author thomas *啟動客戶端的窗體 */public class clientview extends jframe private static final long serialversionuid = 1l;private jlabel l0,l1,l2

32、;private jtextfield ip,port;private jbutton start;public clientview()super("客戶端啟動");l0 = new jlabel("套接字信息");l1 = new jlabel("服務器ip:");l2 = new jlabel("服務器port:");ip = new jtextfield();port = new jtextfield();start = new jbutton("產(chǎn)生客戶端");/產(chǎn)生監(jiān)聽,實例化內(nèi)部類

33、start.addactionlistener(new actionlistener()public void actionperformed(actionevent e) string ip1 = ip.gettext();int port1 = integer.parseint(port.gettext();socket socket = null;try /定義套接字:ip+端口號socket = new socket(ip1,port1);tcpclient tc = new tcpclient(socket);tc.post();tc.close();tc.dispose(); ca

34、tch (unknownhostexception e1) joptionpane.showmessagedialog(null, "套接字錯誤!"); catch (ioexception e3) joptionpane.showmessagedialog(null, "套接字錯誤!");try socket.close(); catch (ioexception e1) / todo auto-generated catch blocke1.printstacktrace(););font font = new font("華文楷體&quo

35、t;,font.plain,18);l0.setfont(font);l0.setforeground(color.red);this.add(start);this.add(l0);this.add(l1);this.add(l2);this.add(ip);this.add(port);this.setlayout(null);this.setbackground(color.light_gray);this.setbounds(150, 150, 300, 300);this.setvisible(true);l0.setbounds(100, 15, 100, 30);l1.setbo

36、unds(55, 55, 60, 30);ip.setbounds(135, 55, 100, 30);l2.setbounds(55, 105, 70, 30);port.setbounds(135, 105, 100, 30);start.setbounds(100, 155, 100, 30);public static void main(string args) new clientview();5. tcpclient.java代碼:package edu.huaxia.chatclient;import java.awt.*;import java.io*import .sock

37、et;import .unknownhostexception;import java.text.simpledateformat;import java.util.date;import javax.swing.*;/* * author thomas * 客戶端窗體 */public class tcpclient extends jframe implements actionlistenerprivate static final long serialversionuid = 1l;private jlabel l1,l2,l3,l4;private jpanel p1,p2,p3,

38、p4,p5;private textarea ta1,ta2;private jbutton send,quit;private bufferedreader br;private printstream ps;private socket socket;private boolean b=true;/* * 客戶端窗體的基本屬性 */public tcpclient(socket socket)super("神話聊天室客戶端");this.socket = socket;try /定義套接字輸入輸出流br = new bufferedreader(new inputstr

39、eamreader(socket.getinputstream();ps = new printstream(socket.getoutputstream();catch (ioexception e) e.printstacktrace();l2 = new jlabel("客戶ip:"+socket.getlocaladdress();l4 = new jlabel("客戶名字:"+socket.getlocaladdress().gethostname();l1 = new jlabel("主機ip:"+socket.getin

40、etaddress();l3 = new jlabel("主機名字:"+socket.getinetaddress().gethostname();border b1 = borderfactory.createtitledborder("聊天信息顯示窗體");border b2 = borderfactory.createtitledborder("發(fā)送信息窗體");border b3 = borderfactory.createtitledborder("對方基本信息");border b4 = borderf

41、actory.createtitledborder("本人基本信息");p1 = new jpanel();p1.setborder(b1);p2 = new jpanel();p2.setborder(b2);p3 = new jpanel();p3.setborder(b3);p4 = new jpanel();p4.setborder(b4);p5 = new jpanel();ta1 = new textarea(10,47);ta2 = new textarea(11,67);font f = new font("default",font.p

42、lain,18);ta1.setfont(f);ta1.setforeground(color.red);send = new jbutton("發(fā)送");send.addactionlistener(this);/產(chǎn)生監(jiān)聽quit = new jbutton("關閉");quit.addactionlistener(this);/產(chǎn)生監(jiān)聽this.setlayout(null);this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);p1.add(ta1);p2.add(ta2)

43、;p3.add(l1);p3.add(l3);p4.add(l2);p4.add(l4);p5.add(send);p5.add(quit);this.setbounds(100,100, 720, 600);p1.setbackground(color.orange);p1.setbounds(0, 0, 500, 280);p3.setbackground(color.pink);p3.setbounds(505, 0, 190, 280);l1.setbounds(507, 5, 187, 30);l2.setbounds(507, 37, 187, 30);p2.setbackgrou

44、nd(color.darkgray);p2.setbounds(0, 290, 500, 220);p4.setbackground(color.light_gray);p4.setbounds(505, 290, 190, 220);l2.setbounds(507, 295, 187, 30);l4.setbounds(507, 327, 187, 30);p5.setbounds(0, 520, 500, 40);this.setvisible(true);/* * 接受輸入流的信息 */public void post() try string s=null;while(b)/對時間對

45、象的處理simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");date date = new date();s=br.readline();if(s!=null|s!="")/如果得到的是quit就返回方法if("quit".equalsignorecase(s) ta1.append("服務器"+sdf.format(date)+"要求斷開連接!n");return;ta1.append("服務器&quo

46、t;+s+"n"); catch (unknownhostexception e) / todo auto-generated catch blocke.printstacktrace(); catch (ioexception e) / todo auto-generated catch blocke.printstacktrace();/* * 流的關閉 */public void close()try if(br!=null) br.close();if(ps!=null) ps.close();if(socket!=null) socket.close(); cat

47、ch (ioexception e) / todo auto-generated catch blocke.printstacktrace();public static void main(string args) socket socket;try socket = new socket("localhost",6666);tcpclient tc = new tcpclient(socket);tc.post();tc.close();tc.dispose(); catch (unknownhostexception e) / todo auto-generated

48、catch blocke.printstacktrace(); catch (ioexception e) / todo auto-generated catch blocke.printstacktrace();/* * 對事件的處理方法 */public void actionperformed(actionevent e) /發(fā)送按鈕事件。當發(fā)送文本框的值不為空時,就將信息發(fā)送為輸出流,同時在信息框中打印出來if(e.getsource().equals(send) string s1=null;s1=ta2.gettext().trim();if(!s1.equals("&q

49、uot;)ta2.settext("");simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");date date = new date(); if("quit".equalsignorecase(s1) ta1.append("自己"+sdf.format(date)+":"+"要求斷開連接"); ps.println(""+sdf.format(date)+":&

50、quot;+"要求斷開連接");return; ps.println(""+sdf.format(date)+":"+s1); ta1.append("自己"+sdf.format(date)+":"+s1+"n"); ps.flush();else if(e.getsource().equals(quit)/發(fā)送按鈕事件。將“quit”信息發(fā)送為輸出流,同時將b設置為falseb=false;ps.println("quit");this.dispose

51、();4.6 系統(tǒng)實施與運行4.6.1服務器啟動與關閉窗體視圖見圖4,圖5,源代碼見4.5編碼1 圖4 圖54.6.2客戶端產(chǎn)生視圖,見圖6、7,源代碼見4.5.編碼4 圖6 圖74.6.3服務器聊天窗口、客戶機聊天窗口大體相似,見圖8圖84.6.4服務器與客戶機交互見圖9、10、11圖9圖10圖11客戶要求關閉窗體見圖12、 13、 14,最后客戶端點擊關閉,聊天窗口關閉了。圖12圖13圖144.6.4 cmd模式telnet服務器進行和交互,見圖15、16、17、18圖15圖16圖17圖18圖19圖20客戶輸入quit,要求斷開連接圖21斷開連接后客戶端窗體為:圖22五、設計心得體會 課程

52、設計是對我們平時學習的一種考察,我們要正確地對待。不斷地鍛煉自己動手動腦的能力、把知識賦予實踐就是我們學習的目標! 既然學校給我們這么好的機會,讓我們自己在實驗室作操作,我們應該好好抓住機會,把我們平時學習的東西用自己的作品展現(xiàn)出來。這次,我做的是簡單c/s模式聊天系統(tǒng)的設計,這給了我充分鍛煉的機會。我會用自己學到的東西的設計出一副好的作品。 通過四天的制作,我以基本完成了自己的作品。從中我明白:計算機網(wǎng)絡是一門非常有趣味的學科,只要你學得好再加上你的編程能力,你就可以開發(fā)出很好的軟件作品。同時我覺得要學好網(wǎng)絡編程,首先要有一顆堅毅的心,有恒心,有信心,在學習過程中,坎坷是避免不了的,但千萬不要灰心,不要氣餒,要繼續(xù)努力,剛開始是會感到很無助的,也許會產(chǎn)生放棄的念頭,千萬頂住,只要克服了開始的難關,以后的路才會充滿陽光,充滿快樂。 而且,在程序設計過程中我也遇到了很多問題。但是在老

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論