連連看項(xiàng)目設(shè)計(jì)分析報(bào)告_第1頁(yè)
連連看項(xiàng)目設(shè)計(jì)分析報(bào)告_第2頁(yè)
連連看項(xiàng)目設(shè)計(jì)分析報(bào)告_第3頁(yè)
連連看項(xiàng)目設(shè)計(jì)分析報(bào)告_第4頁(yè)
連連看項(xiàng)目設(shè)計(jì)分析報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上蕪湖職業(yè)技術(shù)學(xué)院信息工程學(xué)院電子信息工程技術(shù)智能路徑檢索系統(tǒng)(2013/2014學(xué)年第一學(xué)期)小組成員 :組 長(zhǎng): 熊韓玉 組 員: 李明杰 任歡慶 潘賓賓 陶志超 歐俊杰 指導(dǎo)老師 :李長(zhǎng)波2013年11月20日目錄1、需求分析····························

2、3;············3 1.1、功能分析····································

3、·3 1.2、設(shè)計(jì)任務(wù)·····································32、設(shè)計(jì)正文·········&

4、#183;·······························3 2.1、設(shè)計(jì)分析················

5、83;····················3 2.1.1、連連看算法設(shè)計(jì)···························

6、·3 2.2、類的實(shí)現(xiàn)方法·································4 2.2.1、成員變量············

7、······················4 2.2.2、設(shè)計(jì)方法··························

8、········4 2.2.3、設(shè)計(jì)流程圖································53、測(cè)試分析······

9、3;··································5 3.1、程序運(yùn)行情況·············

10、3;···················5 3.2、測(cè)試計(jì)劃與分析····························

11、83;··8 3.2.1、路徑分析··································8 3.2.2、檢驗(yàn)的先后順序·········

12、···················83.2.3、程序代碼·····························&

13、#183;····84、課程設(shè)計(jì)總結(jié)·····································225、參考文獻(xiàn)·····&#

14、183;···································231.需求分析 1.1功能分析 每次用戶選擇兩個(gè)圖形,如果圖形滿足一定條件(兩個(gè)圖形一樣,且這兩個(gè)圖形之間存在轉(zhuǎn)彎少于3的路徑),則兩個(gè)圖形都能消掉。

15、給定任意具有相同圖形的兩個(gè)格子,我們需要尋找這兩個(gè)格子之間在轉(zhuǎn)彎最少的情況下,經(jīng)過格子數(shù)目最少的路徑。如果這個(gè)最優(yōu)路徑的轉(zhuǎn)彎數(shù)目少于3 ,則這兩個(gè)格子可以消去。將界面中相同的圖片消去,游戲限時(shí)1000秒,如果在規(guī)定的時(shí)間內(nèi)沒有完成,就會(huì)跳出對(duì)話框“時(shí)間耗盡了,你輸了:(”的字樣。如果玩家贏了這局,則彈出“非常棒,你贏了!” 在經(jīng)典的最短路問題中,我們需要求出經(jīng)過格子數(shù)目最少的路徑。而這里,要保證轉(zhuǎn)彎數(shù)目最少,需要把最短路問題的目標(biāo)函數(shù)修改為從一個(gè)點(diǎn)到另一個(gè)點(diǎn)的轉(zhuǎn)彎次數(shù)。雖然,目標(biāo)函數(shù)修改了,但算法的框架仍然可以保持不變。廣度優(yōu)先搜索是解決經(jīng)典最短路問題的一個(gè)思路。我們看看在

16、新的目標(biāo)函數(shù)(轉(zhuǎn)彎數(shù)目最少)下,如何用廣度優(yōu)先搜索來解決圖形A(x1,y1)和圖形B(x2,y2)之間的最短路問題。 1.2設(shè)計(jì)任務(wù)   1、明確軟件實(shí)用性,設(shè)計(jì)本次軟件;2、深入學(xué)習(xí)和理解android開發(fā)平臺(tái),掌握android軟件開發(fā)機(jī)制和方法;3、深入分析連連看軟件功能流程圖;4、應(yīng)用軟件工程思想,小組合作完成需求分析到代碼設(shè)計(jì)并完成測(cè)試;5、按照格式要求撰寫設(shè)計(jì)報(bào)告2.設(shè)計(jì)正文 2.1設(shè)計(jì)分析 2.1.1連連看算法設(shè)計(jì) 在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者配對(duì)并且連線成功。分

17、3種情況:(從下面的這三種情況,我們可以知道,需要三個(gè)檢測(cè),這三個(gè)檢測(cè)分別檢測(cè)一條直路經(jīng)。這樣就會(huì)有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線(兩個(gè)轉(zhuǎn)彎點(diǎn))把兩個(gè)按鈕連接起來了。 1) 相鄰   2) 若不相鄰的先在第一個(gè)按鈕的同行找一個(gè)空按鈕。1).找到后看第二個(gè)按鈕橫向到這個(gè)空按鈕所在的列是否有按鈕。2).沒有的話再看第一個(gè)按鈕到與它同行的那個(gè)空按鈕之間是否有按鈕。3).沒有的話,再?gòu)呐c第一個(gè)按鈕同行的那個(gè)空按鈕豎向到與第二個(gè)按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了,可以消了.3) 若2失敗后,再在第一個(gè)

18、按鈕的同列找一個(gè)空按鈕。1).找到后看第二個(gè)按鈕豎向到這個(gè)空按鈕所在的行是否有按鈕 2).沒有的話,再看第一個(gè)按鈕到與它同列的那個(gè)空按鈕之間是否有按鈕。沒有的話,再?gòu)呐c第一個(gè)按鈕同列的那個(gè)空按鈕橫向到與第二個(gè)按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。 4) 若以上三步都失敗,說明這兩個(gè)按鈕不可以消去。  2.2 類的實(shí)現(xiàn)方法 2.2.1 成員變量 成員變量也叫類的屬性,一般帶有訪問控制屬性的,而全局變量雖然也有類的屬性,但全局變量嚴(yán)重影響了封裝和模塊化,一般的全局變量前面要加上static和&#

19、160;fina屬性其中,static使該變量任何類都可用(方法 ClassName.全局變量名) ,而 fina則使得變量不可更改,基本上算是常量了,這也在一定程度上防止對(duì)變量的非法修改。  成員變量描述  變量類型  名稱 文件  File  File 文件區(qū)  Jtextarea  Textarea 菜單項(xiàng)  Jmenuitem  Menuitem_copy 菜單  Umenuitem  Umenui

20、tem 標(biāo)簽  Jlabel  Label_seek 文件名  String  Seel  圖一 成員變量 2.2.2 方法設(shè)計(jì) 方法名稱為任何合乎語法的識(shí)別字,返回值類型是方法執(zhí)行結(jié)果返回給調(diào)用者的數(shù)據(jù)類型,void表示沒有返回值,參數(shù)行(parameter list)是調(diào)用時(shí)給予的參數(shù)聲明,兩個(gè)以上的參數(shù)聲明以逗號(hào)隔開,若沒有參數(shù)則參數(shù)行為空白,調(diào)用時(shí)每一個(gè)參數(shù)對(duì)應(yīng)一個(gè)參數(shù)值(argument)大括號(hào)內(nèi)為方法本體,也稱為方法程序模塊(block),包含聲明(de

21、clarations)和語句(statements),聲明也可以摻雜在語句之間。一個(gè)方法不能聲明在另一個(gè)方法內(nèi)。方法名  功能   備注MyTextEditor  創(chuàng)建文本編輯器  構(gòu)造方法 Dialog  創(chuàng)建對(duì)話框  addMenu  添加菜單欄菜單項(xiàng)  writeToFile  向文本區(qū)寫文件  readFromFile  讀文件  openDialog  打開文件  saveDialog&

22、#160; 保存對(duì)話框  actionPerformed  事件處理 itemStateChanged  ItemListener事件處理 mouseClicked  鼠標(biāo)處理事件  接口方法 mouseEvent  鼠標(biāo)處理事件  接口方法mouseReleased  鼠標(biāo)處理事件  接口方法mouseEntered  鼠標(biāo)處理事件  接口方法 mouseExit  鼠標(biāo)處理事件  接口方法 mouseD

23、ragged  鼠標(biāo)處理事件  接口方法 圖二  方法定義2.2.3 設(shè)計(jì)流程圖N進(jìn)入主函數(shù)開始游戲接受用戶點(diǎn)擊兩張圖片是否相同兩張圖片是否可以相連程序是否還有圖片沒消除結(jié)束NYYYN3測(cè)試分析 3.1 程序運(yùn)行情況 連連看游戲規(guī)則很簡(jiǎn)單,就是點(diǎn)中兩個(gè)互相匹配并且可以通過不多于兩個(gè)折點(diǎn)的折線連在一起的方塊后,這兩個(gè)方塊就可以消掉。 3.2 測(cè)試計(jì)劃及分析 3.2.1 路徑分析  在檢測(cè)兩張圖片是否可以消除之前首先要判斷兩圖之間的路徑,因?yàn)閳D于圖之間可以有很多條路徑有些路徑是可

24、行的有些路徑是不可行的,在檢測(cè)中當(dāng)路徑不滿足游戲條件時(shí),則繼續(xù)檢測(cè),一直到檢測(cè)到一條滿足游戲條件的路徑時(shí),停止檢測(cè)并按此路徑進(jìn)行連接。 當(dāng)找到滿足游戲條件的路徑時(shí),立刻按檢測(cè)到的路徑進(jìn)行圖片的連接,之后便消除連接的兩張圖片。3.2.2 檢驗(yàn)的先后順序 在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者配對(duì)并且連線成功。所以,這里應(yīng)該先檢驗(yàn)配對(duì),如果該條件不成立的話,就不要再進(jìn)行連線檢查了,這樣可以避免很多不必要的復(fù)雜運(yùn)算。當(dāng)然,如果你在做這個(gè)游戲的時(shí)候,配對(duì)規(guī)則不夠如此簡(jiǎn)單的話,那么就看哪個(gè)算起來麻煩就把它放在后面。3.2.3 程序代碼a

25、ckage com.automan; /畫出網(wǎng)格,并對(duì)應(yīng)的畫上分不好的圖像import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random;  import com.automan.CtrlView.Point;  import android.content.Context; import a

26、ndroid.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import

27、0;android.util.Log; import android.view.View;public class GameView extends View public final int row=10;  public final int col=10;  public float width;  public float height;  

28、 private int selY;  private int selX; public boolean isLine=false;  public int grid=new introwcol;  private Rect selRect = new Rect();  public int lineType=0;  

29、public final int V_LINE=1;  public final int H_LINE=1;  public final int ONE_C_LINE=2;  public final int TWO_C_LINE=3;  public int much=0;  Point p; public int 

30、imageType=new intR.drawable.aa,   R.drawable.bb,   R.drawable.cc,   R.drawable.dd,   R.drawable.ee,   R.drawable.ff,      R.drawable.gg,   R.drawable.hh,   R.drawabl

31、e.ii,   R.drawable.jj,   R.drawable.kk,   R.drawable.ll,  R.drawable.mm, R.drawable.nn,   R.drawable.oo,   R.drawable.pp  Public Bitmap  image; Public List<Integer> type

32、=new ArrayList<Integer>();   Public GameView(Context context, AttributeSet attrs)           super(context, attrs);         this.setFocusable(true);&#

33、160;   this.setFocusableInTouchMode(true);  Public GameView(Context context, AttributeSet attars, int defStyle)        super(context, attrs, defStyle);       th

34、is.setFocusable(true);    this.setFocusableInTouchMode(true);   public void reset()        public void fillImage(Context context)     int lth=imageType.length;  

35、; image=new Bitmaplth;   for(int i=0;i<lth;i+)       Bitmap bitmap  =  Bitmap.createBitmap(int)width, (int)height, Bitmap.Config.ARGB_8888);     Drawable drw;    

36、 Canvas canvas = new Canvas(bitmap);    drw=context.getResources().getDrawable(imageTypei);       drw.setBounds(1,1, 30, 30);          drw.draw(canvas);    

37、;      imagei = bitmap;     public void initType()  Log.e("gametest","inittype");    int size=(row-2)*(col-2);   int count=size/imageType.length; 

38、0; for(int j=0;j<imageType.length;j+)       for(int i=0;i<count;i+)         type.add(imageTypej);           public void select(int x,int

39、60;y)     invalidate(selRect); selX =Math.min(Math.max(x,0),9);   selY=Math.min(Math.max(y,0),9);   getRect(selX,selY,selRect);   invalidate(selRect);  private void getRect(int x,int y,Rect&

40、#160;rect)     rect.set(int)(x*width),(int)( y*height), (int)(x*width+width),(int) (y*height+height);   Override protected void onDraw(Canvas canvas)   Paint background= new Paint();  &

41、#160;background.setColor(Color.WHITE); canvas.drawRect(0, 0,getWidth(),getHeight(),background);     Paint hilite= new Paint();   hilite.setColor(getResources().getColor(R.color.hilite);   Paint light= new 

42、Paint();   light.setColor(getResources().getColor(R.color.light);      for (int i=0;i<9;i+)       canvas.drawLine(0, i * height,getWidth(),i * height,light);    

43、canvas.drawLine(0,i * height+1,getWidth(),i * height+1,hilite);     canvas.drawLine(i * width,0,i * width,getHeight(),light);    canvas.drawLine(i * width+1,0,i * width+1,getHeight(),hilite); 

44、60;   if(CtrlView.CURRENT_CH)       Paint selected= new Paint();      selected.setColor(getResources().getColor(R.color.puzzle_selected);     canvas.drawRect(selRect, selected);   

45、  for (int i=0;i<9;i+)       for (int j=0;j<9;j+)         if(gridij!=0)           canvas.drawBitmap(imageArrays.binarySearch(imag

46、eType, gridij), i*width, j*height, null);                  if(isLine)    Paint lineColor= new Paint();    lineColor.setColor(Color.RED);  &#

47、160;   switch(lineType)         case V_LINE:   canvas.drawLine(p0.x*width+width/2,p0.y*height+height/2,p1.x*width+width/2,p1.y*height+height/2, lineColor); break;     case ONE_C_LI

48、NE:    canvas.drawLine(p0.x*width+width/2,iip0.y*height+height/2,p1.x*width+width/2,ip1.y*height+height/2, lineColor);   canvas.drawLine(p1.x*width+width/2i,p1.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);    &

49、#160; break; case TWO_C_LINE:canvas.drawLine(p0.x*width+width/2,p0.y*height+height/2,p1.x*width+width/2,p1.y*height+height/2, lineColor);   canvas.drawLine(p1.x*width+width/2,p1.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);  

50、 canvas.drawLine(p3.x*width+width/2,p3.y*height+height/2,p2.x*width+width/2,p2.y*height+height/2, lineColor);      break;     default:      break;          

51、; super.onDraw(canvas); Override protected void onSizeChanged(int w, int h, int oldw, int oldh)    Log.e("gametest","sizechanged");   width=w/row;   height=h/col; /getRec

52、t(1,1,selRect);   fillImage(this.getContext(); super.onSizeChanged(w, h, oldw, oldh);  public void initGrid()     Log.e("gametest","initGrid");   Random ad=new Random(); 

53、  for(int i=0;i<row;i+)       for(int j=0;j<col;j+)         if(i=0 | i=row-1 | j=0 | j=col-1)            grid

54、ij=0;         else         if(type!=null && type.size()>0)             int index=ad.nextInt(type.size();     

55、  gridij=type.get(index);       type.remove(index);                   第二部分package com.automan;  import java.util.ArrayList; import 

56、;java.util.LinkedList; import java.util.List; import java.util.Random;  import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.MotionEvent;&

57、#160;  public class CtrlView extends GameView  public final int GAMETIME=300;  public final int UPTIME=1;  public int PROCESS_VALUE=300;  public static boolean CURRENT_CH=fals

58、e;  public int CURRENT_TYPE=0;  private Point C_POINT;  private Point P_POINT;LinkedList<Line> li;  public CtrlView(Context context, AttributeSet attrs)   super(context, attrs);&#

59、160;        initType();   initGrid(); much=(row-2)*(col-2);      public CtrlView(Context context, AttributeSet attrs, int defStyle)   super(context, attrs, defS

60、tyle);      initType();   initGrid();  much=(row-2)*(col-2);       public boolean onTouchEvent(MotionEvent event)   if (event.getAction()!=MotionEvent.ACTION_DOWN)  

61、  return super.onTouchEvent(event);       int selX=(int)(event.getX()/width);   int selY=(int)(event.getY()/height);         if(gridselXselY=0)    return true; 

62、   else       if(CURRENT_CH=false)          select(selX,selY);     CURRENT_CH=true;      P_POINT =new Point(selX,selY);      

63、   else         C_POINT =new Point(selX,selY);     lineType=0;      if(checkLink(P_POINT,C_POINT)       isLine=true; much=much-2; if(0&

64、lt;PROCESS_VALUE && (PROCESS_VALUE+UPTIME)<GAMETIME)              PROCESS_VALUE=PROCESS_VALUE+UPTIME;  invalidate(); mRedrawHandler.sleep(300);  CURRENT_CH=false;    

65、60;    return true; public void reset()     CURRENT_CH=false;   CURRENT_TYPE=0;   C_POINT=null;   P_POINT=null;   lineType=0;   isLine=false;   P

66、oint p=null;   initType();   initGrid();    much=(row-2)*(col-2);   invalidate();  public void rearrange()     CURRENT_CH=false;   CURRENT_TYPE=0;   C_POINT=nul

67、l;   P_POINT=null;   lineType=0;   isLine=false;   Point p=null; List<Integer> temp=new ArrayList<Integer>();for(int i=0;i<row;i+)       for(int j=0;j<col;j+

68、)         if(gridij!=0)           temp.add(gridij);         type.clear(); Random ad=new Random();   for(int i=0;i<temp.siz

69、e();i+)       type.add(temp.get(i);     temp.clear();   temp=null;   for(int i=0;i<row;i+)       for(int j=0;j<col;j+)       

70、0; if(gridij!=0)           int index=ad.nextInt(type.size();      gridij=type.get(index);      type.remove(index);          &

71、#160;    invalidate();    private RefreshHandler mRedrawHandler = new RefreshHandler();   class RefreshHandler extends Handler       Override     publ

72、ic void handleMessage(Message msg)           isLine=false; gridP_POINT.xP_POINT.y=0;gridC_POINT.xC_POINT.y=0;          CtrlView.this.invalidate();   public 

73、;void sleep(long delayMillis)           this.removeMessages(0);/移除信息隊(duì)列中最頂部的信息(從頂部取出信息)sendMessageDelayed(obtainMessage(0), delayMillis);/獲得部信息并延遲發(fā)送 ;public class Point     public int x;

74、   public int y;   public Point(int newx,int newy)       this.x=newx;    this.y=newy;      public boolean equals(Point p)    

75、   if(p.x=x && p.y=y)     return true;    else     return false;     private boolean horizon(Point a, Point b)    

76、60;     if(a.x = b.x && a.y = b.y)             return false;      int x_start = a.y <= b.y ? a.y

77、60;: b.y;            int x_end = a.y <= b.y ? b.y : a.y;            for(int x = x_start + 1; x

78、60;< x_end; x+)            if(grida.xx != 0)                 return false;          

79、60;          p=new Pointa,b;         lineType=H_LINE;         return true;  private boolean vertical(Point a, Point b)&#

80、160;         if(a.x = b.x && a.y = b.y)            return false;      int y_start = a.x <= b.x

81、 ? a.x : b.x;        int y_end = a.x <= b.x ? b.x : a.x;        for(int y = y_start + 1; y < y_end; y+)&

82、#160;           if(gridya.y != 0)                return false;       p=new Pointa,b;    &#

83、160;lineType=V_LINE;     return true;    private boolean oneCorner(Point a, Point b)          Point c = new Point(a.x, b.y);    &#

84、160;   Point d = new Point(b.x, a.y);        if(gridc.xc.y = 0)               boolean method1 = horizon(a, c) 

85、&& vertical(b, c);       p=new Pointa,new Point(c.x,c.y),b;         lineType=ONE_C_LINE;         return method1;      

86、;        if(gridd.xd.y = 0)               boolean method2 = vertical(a, d) && horizon(b, d);      

87、0;p=new Pointa,new Point(d.x,d.y),b;         lineType=ONE_C_LINE;         return method2;         else        

88、        return false;               class Line            public Point a;     &#

89、160;      public Point b; public int direct;       public Line()                       

90、60;               public Line(int direct, Point a, Point b)              this.direct = direct;   

91、60;            this.a = a;                this.b = b;              

92、60;      private LinkedList<Line> scan(Point a, Point b)                 li = new LinkedList<Line>();      &

93、#160;    for(int y = a.y; y >= 0; y-)           if(grida.xy = 0 && gridb.xy = 0 && vertical(new Point(a.x, y), new&#

94、160;Point(b.x, y)                 li.add(new Line(0,new Point(a.x, y),new Point(b.x, y);         for(int y = a.y; y 

95、;< row; y+)           if(grida.xy =0 && gridb.xy =0 && vertical(new Point(a.x, y), new Point(b.x, y)          &

96、#160;         li.add(new Line(0,new Point(a.x, y),new Point(b.x, y);            for(int x = a.x; x >= 0; x-)    

97、       if(gridxa.y = 0 && gridxb.y =0 && horizon(new Point(x, a.y), new Point(x, b.y)                 &#

98、160;  li.add(new Line(1,new Point(x, a.y),new Point(x, b.y);            for(int x = a.x; x < col; x+)           

99、if(gridxa.y = 0 && gridxb.y = 0 && horizon(new Point(x, a.y), new Point(x, b.y)                   li.add(new Line(1,

100、60;new Point(x,a.y), new Point(x,b.y);            return li;         private boolean twoCorner(Point a, Point b)      &#

101、160; li = scan(a, b);        if(li.isEmpty()            return false;    for(int index = 0; index < li.size(); index+

102、)      Line line = (Line)li.get(index);            if(line.direct = 1)                 if(vertical(a

103、, line.a) && vertical(b, line.b)                            p=new Pointa,line.a,line.b,b;       &

104、#160;    lineType=TWO_C_LINE;       return true;                                

105、  else if(horizon(a, line.a) && horizon(b, line.b)                p=new Pointa,line.a,line.b,b;          lineType=TWO_C_LINE;&#

106、160;    return true;                        return false;      public boolean checkLink(Point a,Point

107、0;b)     if(grida.xa.y!=gridb.xb.y)/如果圖案不同,直接為false retum false;      if(a.x = b.x && horizon(a, b)               return true;  

108、;        if(a.y = b.y && vertical(a, b)               return true;           if(oneCorner(a,

109、 b)               return true;           else             return twoCorner(a, b);

110、0;        第三部分package com.automan;   import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import androi

111、d.view.MenuItem; import android.widget.ProgressBar; import android.widget.Toast;  public class ConnectGame extends Activity      /* Called when the activity is first created. */

112、60; private ProgressBar pb;  private CtrlView cv;  public static final int START_ID=Menu.FIRST;  public static final int REARRARY_ID=Menu.FIRST+1;  public static final int END_ID=REARRARY_ID+1;  Override  public void onCreate(Bundle savedInstanceState)          super.onCreate(savedInstanceState); 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論