操作系統(tǒng)課程設(shè)計(jì)--簡(jiǎn)單的聊天程序_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  操作系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)</p><p> 學(xué) 院計(jì)算機(jī)與信息工程學(xué)院專(zhuān) 業(yè)網(wǎng)絡(luò)工程</p><p> 課程名稱(chēng)操作系統(tǒng)題 目進(jìn)程通信</p><p> 完成期限2013年6月3日-2013年6月30日共4周</p><p> 內(nèi)容及任務(wù)項(xiàng)目的目的實(shí)現(xiàn)一個(gè)簡(jiǎn)單的聊天程序項(xiàng)目任務(wù)的主要內(nèi)容和要求(1)根據(jù)進(jìn)程

2、通信的方式和類(lèi)型,以及進(jìn)程通信的實(shí)現(xiàn)方法,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的聊天程序,聊天程序包括客戶(hù)端與服務(wù)器兩部分。(2)按照要求撰寫(xiě)課程設(shè)計(jì)報(bào)告。三、項(xiàng)目設(shè)計(jì)(研究)思路分析課題要求、了解進(jìn)程通信原理、設(shè)計(jì)通信界面、編寫(xiě)代碼。四、具體成果形式和要求可以在一個(gè)計(jì)算機(jī)上通信,也可以在兩個(gè)計(jì)算機(jī)上通信。</p><p> 進(jìn)度安排起止日期工作內(nèi)容</p><p> 2013.6.3-2013.6.5分析課題要

3、求,找出解決方案</p><p> 2013.6.6-2013.6.25根據(jù)方案了解通信原理,對(duì)課題進(jìn)行設(shè)計(jì)</p><p> 2013.6.25-2013.6.30根據(jù)設(shè)計(jì)分析,進(jìn)行代碼編寫(xiě)和測(cè)試</p><p> 主要參考資料[1]趙生慧. Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第二版)[M].北京:中國(guó)水利水電出版社,2010.[2](美)卡爾弗特,多納霍,周恒民譯. J

4、ava TCP\IP Socket編程(原書(shū)第2版)[M].北京:機(jī)械工業(yè)出版社,2011.</p><p> 指導(dǎo)教師意見(jiàn)(簽字): 年 月 日</p><p> 系(教研室)主任意見(jiàn)(簽字): 年 月 日</p><p>

5、;<b>  第一部分:正文部分</b></p><p><b>  一、選題背景</b></p><p>  為了提高計(jì)算機(jī)系統(tǒng)的效率。增強(qiáng)計(jì)算機(jī)系統(tǒng)內(nèi)各種硬件的并行操作能力。操作系統(tǒng)要求程序結(jié)構(gòu)必須適應(yīng)并發(fā)處理的需要,為此引入了進(jìn)程的概念。進(jìn)程是操作系統(tǒng)的核心,所有基于多道程序設(shè)計(jì)的操作系統(tǒng)都建立在進(jìn)程的概念之上。目前的計(jì)算機(jī)系統(tǒng)均提供了多任

6、務(wù)并行環(huán)境。無(wú)論是應(yīng)用程序還是系統(tǒng)程序,都需要針對(duì)每一個(gè)任務(wù)創(chuàng)建相應(yīng)的進(jìn)程。進(jìn)程是設(shè)計(jì)和分析操作系統(tǒng)的有力工具。然而不同的進(jìn)程之間,即使是具有家族聯(lián)系的父子進(jìn)程,都具有各自不同的進(jìn)程映像。由于不同的進(jìn)程運(yùn)行在各自不同的內(nèi)存空間中,一方對(duì)于變量的修改另一方是無(wú)法感知的。因此,進(jìn)程之間的信息傳遞不可能通過(guò)變量或其它數(shù)據(jù)結(jié)構(gòu)直接進(jìn)行,只能通過(guò)進(jìn)程間通信來(lái)完成。要實(shí)現(xiàn)實(shí)現(xiàn)進(jìn)程通信有多種方法,在課程設(shè)計(jì)中,使用Socket通信方式進(jìn)行通信,實(shí)現(xiàn)兩

7、臺(tái)計(jì)算機(jī)之間的進(jìn)程通信。 </p><p><b>  二、設(shè)計(jì)理念</b></p><p>  課程設(shè)計(jì)要求根據(jù)進(jìn)程通信的方式和類(lèi)型,以及進(jìn)程通信的實(shí)現(xiàn)方法,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的聊天程序,聊天程序包括客戶(hù)端與服務(wù)器兩部分。首先要滿(mǎn)足在同一個(gè)計(jì)算機(jī)上可以進(jìn)行通信,在這個(gè)基礎(chǔ)上可以實(shí)現(xiàn)一對(duì)一兩臺(tái)計(jì)算機(jī)之間的通信。</p><p>  2.1整體設(shè)計(jì)需求

8、分析</p><p>  根據(jù)課題要求:根據(jù)進(jìn)程通信的方式和類(lèi)型,以及進(jìn)程通信的實(shí)現(xiàn)方法,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的聊天程序,聊天程序包括客戶(hù)端與服務(wù)器兩部分。</p><p>  要選擇合適的通信方式能夠使客戶(hù)端和器端斷建立連接,聊天就需要有聊天界面,使用戶(hù)可以通過(guò)界面進(jìn)行通信。</p><p>  2.2服務(wù)器端需求分析</p><p>  服務(wù)器端

9、需要建立一個(gè)端口提供給客戶(hù)端監(jiān)聽(tīng),在建立端口后不斷進(jìn)行監(jiān)聽(tīng)是否有客戶(hù)端連接或者斷開(kāi)連接,若有客戶(hù)端監(jiān)聽(tīng)其端口,便建立連接進(jìn)行通信。要使用Java設(shè)計(jì)編程實(shí)現(xiàn)聊天界面,當(dāng)有客戶(hù)端進(jìn)行連接之后,顯示是哪一臺(tái)計(jì)算機(jī)與服務(wù)器端進(jìn)行連接通信。</p><p>  2.3客戶(hù)端需求分析</p><p>  客戶(hù)端應(yīng)該完成的工作包括:</p><p>  ⑴ 與服務(wù)器端建立通信通

10、道,向服務(wù)器端發(fā)送信息。</p><p> ?、?接收來(lái)自服務(wù)器的信息。</p><p>  2.4聊天界面需求分析</p><p>  聊天界面首先顯示是服務(wù)器端還是客戶(hù)端,聊天界面中要有輸入文本域,在文本域中可以顯示當(dāng)前輸入端聊天內(nèi)容,在文本域下端有文本框,可以顯示服務(wù)器與客戶(hù)只見(jiàn)到聊天記錄。</p><p><b>  三、過(guò)

11、程論述</b></p><p>  3.1進(jìn)程通信方式及Socket通信原理</p><p>  進(jìn)程通信的方進(jìn)程通信的管道、消息、Socket 、共享內(nèi)存、文件、信號(hào)等。本次課程設(shè)計(jì)使用的Socket通信方式。</p><p>  Socket用于在兩個(gè)基于TCP/IP協(xié)議的應(yīng)用程序之間相互通信。最早出現(xiàn)在UNIX系統(tǒng)中,是UNIX系統(tǒng)主要的信息傳遞方

12、式。在Windows系統(tǒng)中,Socket稱(chēng)為winsock。其有兩個(gè)基本概念:客戶(hù)端和服務(wù)端。當(dāng)兩個(gè)應(yīng)用之間需要采用Socket通信時(shí),首先需要在兩個(gè)應(yīng)用之間(可能位于同一臺(tái)機(jī)器,也可能位于不同的機(jī)器)建立Socket連接,發(fā)起呼叫連接請(qǐng)求的一方為客戶(hù)端,接受呼叫連接請(qǐng)求的一方成為服務(wù)端。客戶(hù)端和服務(wù)端是相對(duì)的,同一個(gè)應(yīng)用可以是客戶(hù)端,也可以是服務(wù)端。在客戶(hù)端呼叫連接請(qǐng)求之前,它必須知道服務(wù)端在哪里。所以需要知道服務(wù)端所在機(jī)器的IP地址

13、或機(jī)器名稱(chēng),如果客戶(hù)端和服務(wù)端事前有一個(gè)約定就好了,這個(gè)約定就是PORT(端口號(hào))。也就是說(shuō),客戶(hù)端可以通過(guò)服務(wù)端所在機(jī)器的IP地址或機(jī)器名稱(chēng)和端口號(hào)唯一的確定方式來(lái)呼叫服務(wù)端。在客戶(hù)端呼叫之前,服務(wù)端必須處于偵聽(tīng)狀態(tài),偵聽(tīng)是否有客戶(hù)要求建立連接。一旦接到連接請(qǐng)求,服務(wù)端可以根據(jù)情況建立或拒絕連接。連接方式有兩種,同步方式(Blocking)和(noBlocking).</p><p>  客戶(hù)端發(fā)送的消息可以是

14、文本,也可以是二進(jìn)制信息流。當(dāng)客戶(hù)方的消息到達(dá)服務(wù)方端口時(shí),會(huì)自動(dòng)觸發(fā)一個(gè)事件(event),服務(wù)端只要接管該事件,就可以接受來(lái)自客戶(hù)端的消息了。</p><p>  3.2 Socket通信流程</p><p>  Socket通信首先在服務(wù)器端產(chǎn)生server Socket(同時(shí)客戶(hù)端產(chǎn)生Socket),等待客戶(hù)端連接服務(wù)器端端口號(hào),若進(jìn)行連接之后,客戶(hù)端與服務(wù)器端便可進(jìn)行聊天,形成數(shù)

15、據(jù)流讀在緩沖區(qū)形成數(shù)組,最終顯示在文本域中,當(dāng)客戶(hù)端與服務(wù)器端斷開(kāi)連接之后,立即退出,服務(wù)器端繼續(xù)監(jiān)、等待。</p><p>  圖3-1 Socket通信活動(dòng)圖</p><p>  3.3 服務(wù)器端設(shè)計(jì)</p><p>  由需求分析可知,在服務(wù)器端進(jìn)行程序設(shè)計(jì)時(shí),首先要實(shí)現(xiàn)服務(wù)器端設(shè)置socket,允許客戶(hù)端訪(fǎng)問(wèn),在編程設(shè)計(jì)時(shí)要實(shí)現(xiàn)圖形化界面設(shè)計(jì)</p&g

16、t;<p> ?、?設(shè)置socket語(yǔ)句</p><p>  ServerSocket server;//生成服務(wù)器套接字</p><p>  server = new ServerSocket(5000);//實(shí)例化套接字端口為5000 </p><p>  client = server.accept();//等待客戶(hù)機(jī)連接</p>

17、<p>  ta.append("客戶(hù)機(jī)是" + client.getInetAddress().getHostName() + "\n\n") //獲得本機(jī)地址</p><p>  //獲得指定的IP地址</p><p>  ta.append("客戶(hù)機(jī)是:" +"192.168.97. 8

18、5 "+"\n\n");</p><p>  //獲得請(qǐng)求連接服務(wù)器的客戶(hù)機(jī)的IP地址</p><p>  ta.append("客戶(hù)機(jī)是:" +" "+"\n\n");</p><p>  ⑵ 服務(wù)器端程序設(shè)計(jì)</p><p>  L

19、abel label=new Label("交談內(nèi)容");</p><p>  TextField tf= new TextField(20);//實(shí)例化文本框</p><p>  TextArea ta=new TextArea( );//實(shí)例化文本域</p><p>  Panel panel=new Panel( );//創(chuàng)建面板對(duì)象<

20、;/p><p>  ServerSocket server;//創(chuàng)建服務(wù)器套接字</p><p>  Socket Client;//創(chuàng)建客戶(hù)機(jī)套接字</p><p>  InputStream DataIn;//定義輸入流</p><p>  OutputStream DataOut;//定義輸出流</p><p>  

21、public Server( )</p><p>  { super("服務(wù)器");</p><p>  setSize(300,180);//設(shè)置窗體大小</p><p>  panel.add(label);//在面板上添加標(biāo)簽</p><p>  panel.add(tf);//在面板上添加文本框</p&g

22、t;<p>  tf.addActionListener(this);//注冊(cè)</p><p>  add("North",panel);//在窗體上添加面板</p><p>  add("Center",ta);//在窗體上添加文本區(qū)</p><p>  addWindowListener(new Window

23、Adapter( )</p><p>  { public void windowClosing(WindowEvent e)</p><p>  { System.exit(0);}});</p><p>  show( ); //可以提示</p><p><b>  try</b></p><

24、;p>  { server =new ServerSocket(5000);</p><p>  Client=server.accept( );//等待客戶(hù)機(jī)連接ServerSocket(5000);</p><p>  //獲得指定的IP地址</p><p>  //ta.append("客戶(hù)機(jī)是:" +"192.168.97

25、. 85 "+"\n\n");</p><p>  //獲得請(qǐng)求連接服務(wù)器的地址</p><p>  ta.append("客戶(hù)機(jī)是:" +" "+"\n\n");</p><p>  DataIn=Client.getInputStream( );//實(shí)例化

26、輸入流</p><p>  DataOut=Client.getOutputStream( );//實(shí)例化輸出流</p><p><b>  }</b></p><p>  catch(IOException ioe){ }//捕獲異常</p><p>  while(true)</p><p>

27、<b>  {</b></p><p><b>  try{</b></p><p>  byte buff[ ]=new byte[512];//緩沖數(shù)組</p><p>  DataIn.read(buff);//讀出數(shù)組數(shù)據(jù)</p><p>  String str=new String(bu

28、ff);//接受客戶(hù)端發(fā)送的數(shù)據(jù)包</p><p>  ta.append("客戶(hù)機(jī)說(shuō):"+str+"\n");</p><p><b>  }</b></p><p>  catch(IOException ioe){ }</p><p><b>  }</b&g

29、t;</p><p><b>  }</b></p><p>  public static void main(String args[ ])</p><p><b>  {</b></p><p>  new Server( );//實(shí)例化Sever對(duì)象</p><p>

30、<b>  }</b></p><p>  public void actionPerformed(ActionEvent e)//事件監(jiān)聽(tīng)處理程序</p><p><b>  {</b></p><p><b>  try</b></p><p><b>  { &

31、lt;/b></p><p>  String str=new String(tf.getText());//實(shí)例化字符串</p><p>  byte buf[ ]=str.getBytes( );//讀出數(shù)組</p><p>  tf.setText(" ");</p><p>  DataOut.write(b

32、uf);</p><p>  ta.append("服務(wù)器說(shuō):"+str+"\n");</p><p><b>  }</b></p><p>  catch(IOException ioe){ } </p><p><b>  }</b></p>

33、<p><b>  3.4客戶(hù)端設(shè)計(jì)</b></p><p>  由需求分析可知,在客戶(hù)端進(jìn)行程序設(shè)計(jì)時(shí),首先要實(shí)現(xiàn)客戶(hù)端設(shè)置socket,輸入客戶(hù)端IP地址,請(qǐng)求連接,在編程設(shè)計(jì)時(shí)要實(shí)現(xiàn)圖形化界面設(shè)計(jì)。</p><p> ?、?設(shè)置socket語(yǔ)句</p><p>  Socket client;//生成客戶(hù)端套接字</p

34、><p>  client = new Socket("192.168.97.85",4000);//實(shí)例化客戶(hù)端</p><p><b> ?、?客戶(hù)端程序設(shè)計(jì)</b></p><p>  Label label=new Label("交談內(nèi)容");</p><p>  TextFi

35、eld tf= new TextField(20);//實(shí)例化文本框</p><p>  TextArea ta=new TextArea( );//實(shí)例化文本域</p><p>  Panel panel=new Panel( );//創(chuàng)建面板對(duì)象</p><p>  ServerSocket server;//創(chuàng)建服務(wù)器套接字</p><p&

36、gt;  Socket Client;//創(chuàng)建客戶(hù)機(jī)套接字</p><p>  InputStream DataIn;//定義輸入流</p><p>  OutputStream DataOut;//定義輸出流</p><p>  public Client( )</p><p>  { super("客戶(hù)機(jī)");<

37、/p><p>  setSize(300,180);</p><p>  panel.add(label);//在面板上添加標(biāo)簽</p><p>  panel.add(tf);//在面板上添加文本框</p><p>  tf.addActionListener(this);//注冊(cè)</p><p>  add("

38、;North",panel);//在窗體上添加面板</p><p>  add("Center",ta);//在窗體上添加文本區(qū)</p><p>  addWindowListener(new WindowAdapter( )</p><p>  { public void windowClosing(WindowEvent e)<

39、;/p><p>  { System.exit(0);}});</p><p><b>  show( );</b></p><p><b>  try</b></p><p>  { Client=new Socket(InetAddress.getLocalHost( ),5000);</p&

40、gt;<p>  ta.append(Client.getInetAddress( ).getHostName( )+"\n\n"); </p><p>  //ta.append("客戶(hù)機(jī)是:" +"192.168.97.84"+"\n\n"); </p><p>  DataIn=Cl

41、ient.getInputStream( );//實(shí)例化輸入流</p><p>  DataOut=Client.getOutputStream( );//實(shí)例化輸出流</p><p><b>  }</b></p><p>  catch(IOException ioe){ }</p><p>  while(true

42、)</p><p><b>  {</b></p><p><b>  try{</b></p><p>  byte buff[ ]=new byte[512];//緩沖數(shù)組</p><p>  DataIn.read(buff);//讀出數(shù)組數(shù)據(jù)</p><p>  St

43、ring str=new String(buff);//接受客戶(hù)端發(fā)送的數(shù)據(jù)包</p><p>  ta.append("服務(wù)器說(shuō):"+str+"\n");</p><p><b>  }</b></p><p>  catch(IOException ioe){ }</p><p&g

44、t;<b>  }</b></p><p><b>  }</b></p><p>  public static void main(String args[ ])</p><p><b>  {</b></p><p>  new Client( );</p>

45、<p><b>  }</b></p><p>  public void actionPerformed(ActionEvent e)//事件處理程序</p><p><b>  {</b></p><p><b>  try</b></p><p><b&

46、gt;  {</b></p><p>  String str=new String(tf.getText());//實(shí)例化字符串</p><p>  byte buf[ ]=str.getBytes( );//字符串轉(zhuǎn)換為數(shù)組存儲(chǔ)</p><p>  tf.setText(" ");</p><p>  Da

47、taOut.write(buf);//在客戶(hù)機(jī)中寫(xiě)出輸出流里的數(shù)組</p><p>  ta.append("客戶(hù)機(jī)說(shuō):"+str+"\n");//寫(xiě)入文本域</p><p><b>  }</b></p><p>  catch(IOException ioe){ } //捕獲異常</p>

48、<p><b>  四、結(jié)果分析</b></p><p>  本設(shè)計(jì)通過(guò)套接字來(lái)實(shí)現(xiàn)進(jìn)程間的通信。在TCP/IP網(wǎng)絡(luò)應(yīng)用中,通信的兩個(gè)進(jìn)程間相互作用的主要模式是客戶(hù)機(jī)/服務(wù)器模式,即客戶(hù)向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器收到請(qǐng)求后,提供相應(yīng)的服務(wù)。由此原理,便可實(shí)現(xiàn)進(jìn)程通信功能。其中,在進(jìn)程通信前,只有設(shè)置好所要進(jìn)行通信的IP地址,并且要保證在服務(wù)器成功運(yùn)行之后,再運(yùn)行客戶(hù)機(jī),才可進(jìn)行

49、正常通信。</p><p><b>  4.1未通信時(shí)狀態(tài)</b></p><p>  只運(yùn)行服務(wù)器程序模塊或者客戶(hù)端程序模塊時(shí),由于服務(wù)器并未與任何客戶(hù)機(jī)之間建立聯(lián)系,故無(wú)法完成通信(如圖4-1)。</p><p>  圖 4-1未連接時(shí)狀態(tài)圖</p><p><b>  4.2 單機(jī)測(cè)試</b>

50、</p><p>  當(dāng)服務(wù)器端和客戶(hù)端在同一臺(tái)計(jì)算機(jī)上運(yùn)行時(shí),socket分別得到的都是本機(jī)IP地址,也可以進(jìn)行通信(如圖4-2)。</p><p>  圖 4-2單機(jī)通信狀態(tài)圖</p><p>  4.3 兩臺(tái)計(jì)算機(jī)間通信測(cè)試</p><p>  當(dāng)服務(wù)器端和客戶(hù)端在不同的兩臺(tái)計(jì)算機(jī)上運(yùn)行時(shí),先給定客戶(hù)端服務(wù)器的IP地址,但服務(wù)器端運(yùn)行后

51、,在運(yùn)行客戶(hù)端便可以進(jìn)行通信(如圖4-3,圖4-4)。</p><p>  圖 4-3 兩臺(tái)計(jì)算機(jī)通信服務(wù)器端狀態(tài)圖</p><p>  圖 4-4 兩臺(tái)計(jì)算機(jī)通信服務(wù)器端狀態(tài)圖</p><p><b>  4.4錯(cuò)誤操作</b></p><p>  在運(yùn)行程序時(shí),若先運(yùn)行客戶(hù)端,則無(wú)法進(jìn)行通信(如圖4-5)。</

52、p><p>  圖4-5 運(yùn)行出錯(cuò)時(shí)狀態(tài)圖</p><p><b>  4.5 分析</b></p><p>  客戶(hù)機(jī)請(qǐng)求連接服務(wù)器,必須在服務(wù)器端建立套接字之后。對(duì)于4.3的錯(cuò)誤操作,會(huì)使通信無(wú)法進(jìn)行。在正常運(yùn)行時(shí)無(wú)特殊要求,在客戶(hù)機(jī)退出程序之后,其他計(jì)算機(jī)要想與服務(wù)器鏈接,必須先退出服務(wù)器,再重新登錄之后才能連接。</p>&l

53、t;p><b>  五、結(jié)論</b></p><p>  通過(guò)連續(xù)四周的課程設(shè)計(jì),完成了設(shè)計(jì)要求進(jìn)程通信。在設(shè)計(jì)過(guò)程中,通過(guò)小組的共同努力,對(duì)進(jìn)程通信的學(xué)習(xí)和摸索,設(shè)計(jì)出簡(jiǎn)單的兩臺(tái)計(jì)算機(jī)之間的聊天。在整個(gè)設(shè)計(jì)過(guò)程中,由于對(duì)于socket的不了解,遇到了一些小小的問(wèn)題,我們通過(guò)不斷摸索與嘗試,學(xué)會(huì)了很多知識(shí)。在課程設(shè)計(jì)過(guò)程中,認(rèn)識(shí)到自己學(xué)習(xí)上的不足,在日常生活中還需增強(qiáng)自身的實(shí)際操作能力

54、,把理論運(yùn)用到實(shí)踐中;在設(shè)計(jì)過(guò)程中,隊(duì)員之間相互合作,使我們認(rèn)識(shí)了合作是必要性與重要性。伴隨著課程設(shè)計(jì)的結(jié)束,我們鍛煉了自身的能力,也收獲到了實(shí)現(xiàn)設(shè)計(jì)功能的喜悅。</p><p>  對(duì)于本組設(shè)計(jì)的結(jié)果,還有很對(duì)不足。例如,要進(jìn)行聊天首先客戶(hù)端必須知道服務(wù)器端的IP地址,還不能進(jìn)行多對(duì)多通信,這是我們知識(shí)量不足,能力有限,設(shè)計(jì)的時(shí)間太短,也無(wú)法在短時(shí)間內(nèi)學(xué)習(xí)其他知識(shí)來(lái)補(bǔ)充不足。通過(guò)課程設(shè)計(jì),知道在哪些知識(shí)點(diǎn)上比較

55、薄弱,在以后的時(shí)間里,可以自己去學(xué)習(xí)相關(guān)知識(shí)加強(qiáng)自身能力。</p><p>  在課程設(shè)計(jì)過(guò)程中,遇到不懂的和不會(huì)的,老師給了我們很多幫助,真心的感謝老師。</p><p><b>  第二部分:參考文獻(xiàn)</b></p><p>  [1]趙生慧. Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第二版)[M].北京:中國(guó)水利水電出版社,2010.</p>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論