汉诺塔面向对象程序课程设计_第1页
汉诺塔面向对象程序课程设计_第2页
汉诺塔面向对象程序课程设计_第3页
汉诺塔面向对象程序课程设计_第4页
汉诺塔面向对象程序课程设计_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、«面向对象程序设计课程设计报告题 目:Hannoi塔游戏院(系):信息科学与工程学院专业班级:计算机科学与技术 1003班学生姓名:梁晓明学 号:学101183107指导教师:殳奕20 13年6 月8 日至20 13年6 月2日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目Hannoi塔游戏二、设计(调查报告/论文)主要内容内容:设计GUI界面的Hannoi塔。汉诺塔中有三个座,名字分别为 A, B, C。初始状态时 A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在 A座上。 用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子

2、。释放鼠标来放置该盘子。基本功能与要求:1程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户 最终要完成的是把A座上的全部盘子移动到B座或C座上。2用户可以通过Hannoi塔界面的提供的改变盘子数目功能来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。3用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子 全部移动到C座上。4用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。三、原始资料1 .面向对象程序设计课程设计指导书2 .耿祥义.JAVA大学实用教程.北京:清华大

3、学出版社,2009.四、要求的设计(调查/论文)成果1 .课程设计报告2 .课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.2耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.3耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.4邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.5邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名)20

4、1需求与总体设计 11.1设计目标 11.2主体功能11.3流程图21. 4类图22详细设计 31.1 总体功能设计 31.2 HannoiWindow 类 32. 3 Tower 类 32. 4 Di sc 类52.1 TowerPoint 类 52.2 HandleMouse 类 62.3 AutoMoveDisc 类 63编码实现 73.1 HannoiWindow.java 73.2 Tower.java 93.3 Disc.java 133.4 TowerPoint.java143.5 HandleMouse.java153.6 AutoMoveDisc.java 204系统测试 2

5、64.1 测试方案 264.2 测试结果 265总结 281 需求与总体设计1.1 设计目的可以正常运行程序,并且按照设计目的预想的完成具体功能能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序 。掌握JAVA程序设计的基本技能和面向对象的概念和方法了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。 JAVA 程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设

6、计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 主体功能( 1)设计GUI界面的Hannoi塔。汉诺塔中有三个座,名字分别为 A, B, C。初始 状态时A 塔上有3 个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该 盘子。( 2)程序要求用户在移动盘子的过程中,不允许吧大盘子放置在小盘子的上面,用户最终要完成的是把 A座上的全部盘子移动到B座或C座上。( 3)用户可以通过Hannoi 塔界面的提供的改变盘子数目功能

7、来改变盘子的数目,同时可以改变盘子的大小以及改变盘子和界面的背景颜色,而且还可以选择控制背景音乐的播放。( 4)用户可以通过单击Hannoi 塔界面上提供的按钮,让程序自动完成把 A 座上的盘子全部移动到C座上。( 5)用户在移动盘子的过程中,可以随时单击Hannoi 塔界面上提供的按钮,重新开始。271.3流程图IB uttont1.4类图Hannoi Window*M 任口 L-rrn + -二 mdlqzoLIKfU口T 二 wgtP znlt2详细设计2.1 总体功能设计在设计 hannoi 塔时,需编写 6 个 java 源文件:HannoiWindow.java、Tower.jav

8、a、 TowerPoint.java 、Disc.java 、 HandleMouse.java 和 AutoMoveDisc.java 。Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一 些重要的类,如 JMenuBaK JMenu JMenuItem和JButton。Hannoi塔所用到的一些重 要的类以及之间的组合关系。2.2 HannoiWindow 类Tower-ToweraiHDinitOfDisc mttc-erNa-diarVwT8v«P8TraA/rterbaiJMemBaimenuGTaderJA laiu&neCh a

9、dLdtnkt wcGiad et ail thre eGr adet air endt e m'hAAAJ- 7-2、-乜3renew autoBiltanzBui onHam fliwindmvQ:无类型X lainf String): voi d.x;tiohPxfbiiiKdan ciiE 野三皿菖'而d2.3 Tower 类1、成员变量(1)amountOfDisc是int型数据。amountOfDisc值用来确定tower对象中盘子的数 目,即确定tower对象中Disc类型数组disc的长度。(2)disc是Disc型数组,该数组的长度由amountOfDisc值

10、来确定。Disc数组的每 个单元中存放一个Disc对象,依次表明tower对象中有怎样多的盘子。(3)towerName是char型数组,长度为3,其三个单元的默认取值依次是 A、B和C。towerName是数组的单元白值用来确定tower中三个座的名字。(4)maxDiscWidth和minDiscWidth的值分别用来确定最大盘子的宽度和最小盘子 的宽度,discHeight的值确定每个盘子的高度。(5)pointA、pointB和pointC都是TowerPoint型数组,三个数组的长度与盘子数 目相同,即都是 amountOfDisc。pointA、pointB 和 pointC 单元

11、都是 TowerPoint 创建 对象,分别用来表示Hannoi塔中三个座上的塔点。A座、B座和C座上的三个塔点分别 由pointA、pointB和pointC中的单元来确定。每个座上的三个塔点都是从座顶依次对 应数组的相应单元中的TowerPoint对象。例如,A座最上面的塔点是pointA0,中间 的塔点是pointA1,最下面的塔点是pointA2。(6)handleMouse是HandleMouse类创建的鼠标事件监视器,用来监视disc数组的Disc对象上触发的鼠标事件。autoMoveDisc是AutoMoveDisc创建的对话框。通过该对话框可以实现程序自动 移动盘子。2、方法T

12、ower(char口)是构造方法,负责完成tower容器的初始化。(2)tower 容器调用 setAmountOfDisc(int)方法可以设置 amountOfDisc 的值。(3)tower容器调用setMaxDiscWidth(int) 方法可以设置最大的盘子的大小。(4) tower 容器调用setMinDiscWidth(int)方法可以设置最小的盘子的大小。(5) tower容器调用setDiscHeight(int)方法可以设置盘子的高度。(6)tower容器调用putDiscOnTower()方法可以将盘子放置在 Hannoi塔的A座上, 即在pointA指定的塔点上放置di

13、sc数组的成员。tower 容器调用 getAutoMoveDisc()方法返回其中的AutoMoveDisc对象:autoMoveDisco tower 是 HannoiWindow窗口中的成员,当用户单击 HannoiWindowW口 中的autoButton按钮时,窗口中的 actionPerformed(ActionEvent)方法将被执行,该方法所进行的操作是让tower对象返回其中的AutoMoveDisc对象,该对象是一个对话 框,用户可以通过该对话框让程序自动地移动盘子。(8) tower容器调用removeDisk ()方法可以移调tower容器中的盘子。(9) tower

14、容器调用paintComponent (Graphics) 方法绘制出塔点的位置和必要的 视图。Tower创建的容器效果如图所示。B座2.4 Disc 类TButtOUH' wwvwww蛔:DtscD+J戚城:期出痂(05£彳感嬲/(圜:预如联助jffigl): *录就现成嫂默加。g<mtO:勰然泳十2.5 TowerPoint 类TowerM抑haveDix: booleain-TrlrYTpnrTTFr TrTTFirTTTrTTTTr飒r 陛Jt朝喊:胴目炖巾 出血比岫献嬲工皿直设固闻Linfl:无类型,加瞰瞰嘿融坨:风赈映1qli 渡 L加nerH 皿无类型,

15、vol” R如g voidU*JU Contamer2.6 HandleMouse 类Jfe吨忠岫熙(Cont疝ier): 助政m网北R宜时ijjjID: 案甲a?曲加/耳外射期): sctp.5>imCi 方那弁£muD 二磁煤需gjpR需JEVU: voidEd-由息与黑班1弱区3g口猫E三黑©: void,-12.7 AutoMoveDisc 类3 编码实现3.1HannoiWindow.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class HannoiWi

16、ndow extends JFrame implements ActionListener Tower tower=null;int amountOfDisc=3;char towerName='A','B','C'JMenuBar bar;JMenu menuGrade;JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;JButton renew=null;JButton autoButton=null;JPanel center=new JPanel();HannoiWindow()towe

17、r=new Tower(towerName);tower.setAmountOfDisc(amountOfDisc);tower.setMaxDiscWidth(120);tower.setMinDiscWidth(50);tower.setDiscHeight(16);tower.putDiscOnTower();add(tower,BorderLayout.CENTER);bar=new JMenuBar();menuGrade=new JMenu(" 选择级别 ");oneGradeItem=new JMenuItem("初级 ");twoGrad

18、eItem=new JMenuItem("中级 ");threeGradeItem=new JMenuItem(" 高级 ");menuGrade.add(oneGradeItem);menuGrade.add(twoGradeItem);menuGrade.add(threeGradeItem);bar.add(menuGrade);setJMenuBar(bar);oneGradeItem.addActionListener(this);twoGradeItem.addActionListener(this);threeGradeItem.addAc

19、tionListener(this);renew=new JButton(" 重新开始 ");renew.addActionListener(this);autoButton=new JButton(" 自动演示 ");autoButton.addActionListener(this);JPanel north=new JPanel();north.add(renew);north.add(autoButton);String mess=" 将全部盘子从"+towerName0+" 座搬运到 "+towerNam

20、e1+"座或 "+towerName2+" 座"JLabel hintMess=new JLabel(mess,JLabel.CENTER);north.add(hintMess);add(north,BorderLayout.NORTH);setResizable(false);setVisible(true);setBounds(60,60,460,410);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerformed(ActionEvent

21、 e)if(e.getSource()=oneGradeItem)amountOfDisc=3;tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();else if(e.getSource()=twoGradeItem)amountOfDisc=4;tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();else if(e.getSource()=threeGradeItem)amountOfDisc=5;tower.setAmountOfDisc(amountOfDi

22、sc);tower.putDiscOnTower();else if(e.getSource()=renew)tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();else if(e.getSource()=autoButton)tower.setAmountOfDisc(amountOfDisc);tower.putDiscOnTower();int x=this.getBounds().x+this.getBounds().width;int y=this.getBounds().y;tower.getAutoMoveDisc

23、().setLocation(x,y);tower.getAutoMoveDisc().setSize(280,this.getBounds().height);tower.getAutoMoveDisc().setVisible(true);validate();public static void main(String args)new HannoiWindow();3.2 Tower.javaimport javax.swing.*;import java.awt.*;public class Tower extends JPanelint amountOfDisc=3;Disc di

24、sc;int maxDiscWidth,minDiscWidth,discHeight;char towerName;TowerPoint pointA,pointB,pointC;HandleMouse handleMouse;AutoMoveDisc autoMoveDisc;Tower(char towerName)handleMouse=new HandleMouse(this);this.towerName=towerName;setLayout(null);setBackground(new Color(200,226,226);public void setAmountOfDis

25、c(int number) if(number<=1)amountOfDisc=1;elseamountOfDisc=number;public void setMaxDiscWidth(int m) maxDiscWidth=m;public void setMinDiscWidth(int m) minDiscWidth=m;public void setDiscHeight(int h) discHeight=h;public AutoMoveDisc getAutoMoveDisc() return autoMoveDisc;public void putDiscOnTower(

26、) removeDisk();int n=(maxDiscWidth-minDiscWidth)/amountOfDisc;disc=new DiscamountOfDisc;for(int i=0;i<disc.length;i+)disci=new Disc();disci.setNumber(i);int diskwidth=minDiscWidth+i*n;disci.setSize(diskwidth,discHeight);disci.addMouseListener(handleMouse);disci.addMouseMotionListener(handleMouse)

27、;pointA=new TowerPointamountOfDisc;pointB=new TowerPointamountOfDisc;pointC=new TowerPointamountOfDisc;int vertialDistance=discHeight;for(int i=0;i<pointA.length;i+)pointAi=new TowerPoint(maxDiscWidth,100+vertialDistance);vertialDistance=vertialDistance+discHeight;vertialDistance=discHeight;for(i

28、nt i=0;i<pointB.length;i+)pointBi=new TowerPoint(2*maxDiscWidth,100+vertialDistance);vertialDistance=vertialDistance+discHeight;vertialDistance=discHeight;for(int i=0;i<pointC.length;i+)pointCi=new TowerPoint(3*maxDiscWidth,100+vertialDistance);vertialDistance=vertialDistance+discHeight;for(in

29、t i=0;i<pointA.length;i+)pointAi.putDisc(disci,this);handleMouse.setPointA(pointA);handleMouse.setPointB(pointB);handleMouse.setPointC(pointC);autoMoveDisc=new AutoMoveDisc(this);autoMoveDisc.setTowerName(towerName);autoMoveDisc.setAmountOfDisc(amountOfDisc);autoMoveDisc.setPointA(pointA);autoMov

30、eDisc.setPointB(pointB);autoMoveDisc.setPointC(pointC);validate();repaint();public void removeDisk()if(pointA!=null)for(int i=0;i<pointA.length;i+)pointAi.removeDisc(pointAi.getDiscOnPoint(),this);pointBi.removeDisc(pointBi.getDiscOnPoint(),this);pointCi.removeDisc(pointCi.getDiscOnPoint(),this);

31、public void paintComponent(Graphics g)super.paintComponent(g);int x1,y1,x2,y2;x1=pointA0.getX();y1=pointA0.getY()-discHeight/2;x2=pointAamountOfDisc-1.getX();y2=pointAamountOfDisc-1.getY()+discHeight/2;g.drawLine(x1,y1,x2,y2);x1=pointB0.getX();y1=pointB0.getY()-discHeight/2;x2=pointBamountOfDisc-1.g

32、etX();y2=pointBamountOfDisc-1.getY()+discHeight/2;g.drawLine(x1,y1,x2,y2);x1=pointC0.getX();y1=pointC0.getY()-discHeight/2;x2=pointCamountOfDisc-1.getX();y2=pointCamountOfDisc-1.getY()+discHeight/2;g.drawLine(x1,y1,x2,y2);g.setColor(Color.blue);x1=pointAamountOfDisc-1.getX()-maxDiscWidth/2;y1=pointA

33、amountOfDisc-1.getY()+discHeight/2;x2=pointCamountOfDisc-1.getX()+maxDiscWidth/2;y2=pointCamountOfDisc-1.getY()+discHeight/2;int length=x2-x1,height=6;g.fillRect(x1,y1,length,height);int size=5;for(int i=0;i<pointA.length;i+)g.fillOval(pointAi.getX()-size/2,pointAi.getY()-size/2,size,size);g.fill

34、Oval(pointBi.getX()-size/2,pointBi.getY()-size/2,size,size);g.fillOval(pointCi.getX()-size/2,pointCi.getY()-size/2,size,size);g.drawString(towerName0+"座",pointAamountOfDisc-1.getX(),pointAamountOfDisc-1.getY()+50);g.drawString(towerName1+"座",pointBamountOfDisc-1.getX(),pointBamou

35、ntOfDisc-1.getY()+50);g.drawString(towerName2+"座",pointCamountOfDisc-1.getX(),pointCamountOfDisc-1.getY()+50); 3.3 Disc.javaimport javax.swing.*;import java.awt.*;public class Disc extends JButtonint number;TowerPoint point;Disc()setBackground(Color.cyan);public void setNumber(int n) numbe

36、r=n;public int getNumber() return number;public void setPoint(TowerPoint p) point=p;public TowerPoint getPoint() return point;3.4 TowerPoint.javaimport java.awt.*;public class TowerPointint x,y;boolean haveDisc;Disc disc=null;public TowerPoint(int x,int y)this.x=x;this.y=y;public boolean isHaveDisc(

37、)return haveDisc;public void setHaveDisc(boolean boo) haveDisc=boo;public int getX() return x;public int getY() return y;public boolean equals(TowerPoint p)if(p.getX()=this.getX()&&p.getY()=this.getY() return true;elsereturn false;public void putDisc(Component com,Container con)disc=(Disc)co

38、m;con.setLayout(null);con.add(disc);int w=disc.getBounds().width;int h=disc.getBounds().height;disc.setBounds(x-w/2,y-h/2,w,h);haveDisc=true;disc.setPoint(this);con.validate();public Disc getDiscOnPoint() return disc;public void removeDisc(Component com,Container con) if(com!=null)con.remove(com);co

39、n.validate();3.5 HandleMouse.javaimport java.awt.event.*;import java.awt.*;public class HandleMouse implements MouseListener,MouseMotionListener TowerPoint pointA,pointB,pointC;TowerPoint startPoint=null,endPoint=null;int leftX,leftY,x0,y0;boolean move=false,countTime=false;Container con;HandleMouse

40、(Container con) this.con=con;public void setPointA(TowerPoint pointA) this.pointA=pointA;public void setPointB(TowerPoint pointB)this.pointB=pointB;public void setPointC(TowerPoint pointC) this.pointC=pointC;public void mousePressed(MouseEvent e) move=false;Disc disc=null;disc=(Disc)e.getSource();st

41、artPoint=disc.getPoint();x0=e.getX();y0=e.getY();int m=0;for(int i=0;i<pointA.length;i+)if(pointAi.equals(startPoint)m=i;if(m>0&&(pointAm-1.isHaveDisc()=false) move=true;break;else if(m=0) move=true;break;for(int i=0;i<pointB.length;i+) if(pointBi.equals(startPoint)m=i;if(m>0&

42、;&(pointBm-1.isHaveDisc()=false) move=true;break;else if(m=0)move=true;break;for(int i=0;i<pointC.length;i+)if(pointCi.equals(startPoint)m=i;if(m>0&&(pointCm-1.isHaveDisc()=false) move=true;break;else if(m=0) move=true;break;public void mouseMoved(MouseEvent e)public void mouseDrag

43、ged(MouseEvent e)Disc disc=null;disc=(Disc)e.getSource();leftX=disc.getBounds().x;leftY=disc.getBounds().y;int x=e.getX();int y=e.getY();leftX=leftX+x;leftY=leftY+y;if(move=true)disc.setLocation(leftX-x0,leftY-y0);public void mouseReleased(MouseEvent e)Disc disc=null;disc=(Disc)e.getSource();Rectang

44、le rect=disc.getBounds();boolean location=false;int x=-1,y=-1;for(int i=0;i<pointA.length;i+)x=pointAi.getX();y=pointAi.getY();if(rect.contains(x,y)endPoint=pointAi;if(i=pointA.length-1&&endPoint.isHaveDisc()=false)location=true;break;else if(i<pointA.length-1&&pointAi+1.isHave

45、Disc()=true&&endPoint.isHaveDisc()=false&&pointAi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;for(int i=0;i<pointB.length;i+)x=pointBi.getX();y=pointBi.getY();if(rect.contains(x,y)endPoint=pointBi;if(i=pointB.length-1&&endPoint.isHaveDisc()=false)

46、location=true;break;elseif(i<pointB.length-1&&pointBi+1.isHaveDisc()=true&&endPoint.isHaveDisc()=false&&pointBi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;for(int i=0;i<pointC.length;i+)x=pointCi.getX();y=pointCi.getY();if(rect.contains(x,y)en

47、dPoint=pointCi;if(i=pointC.length-1&&endPoint.isHaveDisc()=false) location=true;break;else if(i<pointC.length-1&&pointCi+1.isHaveDisc()=true &&endPoint.isHaveDisc()=false &&pointCi+1.getDiscOnPoint().getNumber()>disc.getNumber()location=true;break;if(endPoint!=n

48、ull&&location=true)endPoint.putDisc(disc,con);startPoint.setHaveDisc(false);elsestartPoint.putDisc(disc,con);public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)3.6 AutoMoveDisc.javaimport java.awt.*;import java.awt.event.*;import

49、javax.swing.*;public class AutoMoveDisc extends JDialog implements ActionListener int amountOfDisc=3;TowerPoint pointA,pointB,pointC;char towerName;Container con;StringBuffer moveStep;JTextArea showStep;JButton bStart,bStop,bContinue,bClose;Timer time;int i=0,number=0;AutoMoveDisc(Container con)setM

50、odal(true);setTitle(" 自动演示搬盘子过程");this.con=con;moveStep=new StringBuffer();time=new Timer(1000,this);time.setInitialDelay(10);showStep=new JTextArea(10,12);bStart=new JButton(" 演示 ");bStop=new JButton(" 暂停 ");bContinue=new JButton(" 继续 ");bClose=new JButton(&q

51、uot; 关闭 ");bStart.addActionListener(this);bStop.addActionListener(this);bContinue.addActionListener(this);bClose.addActionListener(this);JPanel south=new JPanel();south.setLayout(new FlowLayout();south.add(bStart);south.add(bStop);south.add(bContinue);south.add(bClose);add(new JScrollPane(showS

52、tep),BorderLayout.CENTER);add(south,BorderLayout.SOUTH);setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);towerName=new char3;addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)time.stop();setVisible(false););public void setPointA(TowerPoint pointA) this.pointA=pointA;pu

53、blic void setPointB(TowerPoint pointB) this.pointB=pointB;public void setPointC(TowerPoint pointC) this.pointC=pointC;public void setTowerName(char name)if(name0=name1|name0=name2|name1=name2)towerName0='A'towerName1='B'towerName2='C'elsetowerName=name;public void setAmountOf

54、Disc(int n) amountOfDisc=n;public void actionPerformed(ActionEvent e) if(e.getSource()=time)number+;char cStart,cEnd;if(i<=moveStep.length()-2)cStart=moveStep.charAt(i);cEnd=moveStep.charAt(i+1);showStep.append("("+number+")从"+cStart+”座搬一个盘子到"+cEnd+"座n");autoMoveDisc(cStart,cEnd);i=i+2;if(i>=moveStep.length()-1)time.stop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论