java课程设计人机对弈五子棋_第1页
java课程设计人机对弈五子棋_第2页
java课程设计人机对弈五子棋_第3页
java课程设计人机对弈五子棋_第4页
java课程设计人机对弈五子棋_第5页
免费预览已结束,剩余23页可下载查看

付费下载

下载本文档

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

文档简介

1、Java程序设计课程设计报告学 院:理学院班 级:姓 名:学 #:指导教师:课设时间:2015-06-23 至 2015-06-25二0五年六月二十五日课程设计(论文)任务书理学院信息与计算科学专业2012-2班_、课程设计(论文)题目:人机对弈五子棋游戏二、课程设计(论文)工作:自 2015年6月23日起至2015年6月25日止三、课程设计(论文)地点:5Z205四、课程设计(论文)内容要求:1. 本课程设计的目的(1)使学生掌握软件开发的基本工作流程;(2)巩固JAVA程序设计课程所学的内容;(3)培养学生的计算机思维能力以及合作的精神;(4)培养学生分析、解决问题的能力;(5)提高学生的

2、科技论文写作能力。2. 课程设计的任务及要求1)基本要求:(1)研究课程设计任务,并进行系统需求分析;(2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码;(4)系统组装,测试、完善系统。2)创新要求:在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。3)课程设计论文编写要求(1)要按照书稿的规格打印眷写课程设计论文(2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成4)参考文献:(1)丁振凡,JAVA语言程序设计,清华大学出版社(2)丁振凡,JAVA语言程序设计实验指导与习

3、题解答,清华大学出版社(3)http:/cai. ecjtu. 5)课程设计进度安排内容天数地点系统总体设计1实验室软件设计及调试1实验室答辩及撰写报告1实验室、图书馆学生签名:2015年6月25日课程设计(论文)评审意见(1)课程设计过程(20分):优()、良()、中()、一般()、差():(2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差();(3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差();(5)格式规范性及考勤是否降等级:是()、否()评阅人:职称:教授2015年6月

4、25日人机对弈五子棋游戏设计摘要:近些年来五子棋游戏成为了人们的最爱,游戏的下载量很高可以说一直 排在前几位,也是人们日常生活中放松娱乐的最爱,特别是最近IT行业的发 展,人工智能的实现,移动客户端的发展和普及为我们五子棋游戏的发展带来 了新的生机,新的高潮,人工智能与五子棋的完美结合是五子棋的又一项重要 发展,而我们现在开发的人机对弈更是掀起了五子棋发展的新篇章,为五子棋 的发展与传播提供了新的机会,但是机会与挑战并存,我们相信通过我们对五 子棋程序的不断优化和完善,五子棋一定会越来越受到大家的欢迎。本次课程设计要求利用Java语言设计出一个人机对弈五子棋游 戏,能实现人机对弈五子棋。了解五

5、子棋对弈规则后,利用本学期所学 的Java高级图形界面编程方法的知识,并通过穷举法,考虑八个方向 连成五子的几率高低,让计算机具有人工智能,成功设计岀人机对弈五 子棋的游戏。除了人机对弈的功能,我们还增加了人人对战的功能。这 项功能使得人与人之间能够互下五子棋,不仅仅是人与计算机对弈。除 此之外,还增加了再来一局、认输、悔棋、退出游戏的功能,为了让游 戏功能更加丰富,还增加了棋盘、模式、外观三个菜单栏供用户选择相 应功能的菜单项。目录1、课程设计的目的及目标111课程设计的目的112课程设计的目标12、概要设计12.1开发工具及环境122任务及需求分析12.3工作原理13、具体实现23.1类设

6、计24、运行调试与分析讨论35、设计体会与小结106、参考文献10附录:(源程序)101、课程设计的目的及目标1.1课程设计的目的:本次课程设计的口的是为了让学生使用九眩语言编程的知识,通过编写一个简单的五子棋游戏,检验一个学期以来学习java语言的收获成果,以及检查自己在学习java语言的过程中的漏洞来弥补不足,以便以后更好、更熟练地使用java语言来编写方便、娱乐生活的程序。1.2课程设计的目标:本次课程设计所要求的五子棋游戏应达到以下儿方面的要求:1. 运行程序后即刻出现棋盘并可以开始下棋;2. 先手为黑棋,后手为白棋;人为先手,计算机为后手;3. 程序能响应鼠标点击并在相应位置画出棋子

7、;4. 计算机具有一定的智能,能够与人进行五子棋对弈;5. 程序可以正确判断岀局面的胜负情况并及时报出结果,终止棋局;6. 尽可能实现人人对战功能。2、概要设计2.1开发工具及环境文本编辑器:记事本:运行环境:命令提示符(DOS环境)。2. 2任务及需求分析设计人机对弈五子棋程序,实现人与计算机进行五子棋对弈,具体任务如下:(1)棋盘布局设计;(2)计算机下子的算法分析:(3)编程实现棋子的绘制以及具体的再来一局、认输、悔棋、退出游戏等功能;(4)运行测试程序,调试纠正运行错误。2. 3工作原理(1)工作过程运行程序后,首先岀现五子棋游戏窗体,用户点击游戏菜单项,出现相关子菜单,选择模 式子菜

8、单中的人机对弈便可进入人机对弈模式。然后移动鼠标,在窗体的棋盘上点击鼠标下子, 即可在棋盘中相应位苣显示下的对应棋子。接下来计算机会根据用戸下的棋,采取穷举法选择 八个方向上赢面最大的位置下子,用戸与il算机谁先达到五子连成一线,谁便是获胜方。若选 择模式子菜单中的人人对战便可进入人人对战模式。两个用户可同时玩游戏,同样谁先达到五 子连成一线,谁便是获胜方。若下棋过程中,双方中有一方要认输,便可选择游戏菜单项中的 认输按钮,认输的一方显然失败,另外一方获胜。若双方中有一方要悔棋,便可选择游戏菜单 项中的悔棋按钮,经过对方的同意后,才能够重新翻盘,再来一局。若双方势均力敌,可选择 游戏菜单项中的

9、棋盘子菜单,点击大号棋盘或超大号棋盘,以便避免棋盘空间不足造成无法分 出胜负的情况。若觉得窗体外观不太美观,可选择外观菜单中的三个选项进行选择。为了显示 程序的相关制作信息,程序提供了版本菜单进行显示。具体功能实现见第四章节图。(2) 工作原理利用图形界而编程实现,利用到的知识点包括:窗体的创建和应用界而布局:事件处理,包括按钮的动作事件处理,鼠标事件,窗体事件;接口知识:事件处理中通过接口约朿事件监听者必须实现相应接口中左义的方法;流程控制语句:通过条件判断区分不同事件源,作不同操作处理。3、具体实现3.1类设计(1)类名:ChessFrame作用:创建五子棋游戏主窗体和菜单。该类继承JFr

10、ame类,实现ActionListener接口。类中含有的方法介绍: ChessFrame ()构造方法:构造五子棋游戏的主窗体; makeMenu ()方法:构造五子棋游戏的主菜单: makeMenuItemO方法:构造五子棋游戏的菜单项; makeRadioButtonMenuItem()方法:构造五子棋游戏的单选按钮式菜单项。类名:ChessModel作用:规左棋盘的宽度、高度、棋盘的模式;规左棋盘方格的横向、纵向坐标、棋盘方格的横 向、纵向坐标所对应的棋子颜色:并且规左了记录棋盘棋子信息数组arrMapShow只有4个值:1, 2, 3, -1,英中1代表该棋盘方格上下的棋子为黑子,2

11、代表该棋盘方格上下的棋子为白子,3代 表为该棋盘方格上没有棋子,-1代表该棋盘方格不能够下棋子:泄义了交换棋手的标识符isOdd, 棋盘方格上是否有棋子的标识符isExist0类中含有的主要方法介绍: ChessModel()构造方法:根据不同的棋盘模式(modeChess)来构建对应大小的棋盘: badxyO方法:判断下子的横向、纵向坐标是否越界: readyplay0方法:判断该坐标位置是否可下棋子; play0方法:在该坐标位置下棋子: computerDo()方法:用穷举法判断每一个坐标点的八个方向的的最大棋子数,最后得 出棋子数最大值的坐标,计算机再下子(这八个方向分别是:左、右、上

12、、下、左上、 左下、右上、右下): checkMax()方法:计算棋盘上某一方格上八个方向棋子的最大值: showSuccess ()方法:赢棋后的提示: showDefeat0方法:输棋后的提示。(3) 类名:MoinPanel作用:1、构建一个而板,在该面板上画上棋盘;2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等):该类继承 JPanel 类,实现 MouseListener、MouseMotionListener 接口。类中含有的主要方法介绍: paintComponent0方法:根据坐标计算出棋盘方格棋子的信息(如白子还是黑子), 然后调用draw方法在棋盘上

13、画出相应的棋子: mousePressed ()方法:响应鼠标的点击事件,根据鼠标的点击来下棋,根据下棋判断 胜负等: mouseMovedO方法:响应鼠标的拖动事件。类名:FiveChessAppletDemo作用:显示五子棋游戏窗体。类中含有的方法介绍: mainO方法:程序运行的入口,创建了 ChessFrame类的一个实例对彖(cf ),并启动 屏幕显示显示该实例对象。类名:ChessWindowEvent作用:响应退出窗口。类中含有的方法介绍: windowClosing0方法:处理窗口关闭; ChessWindowEvent ()构造方法:提供无参构造方法。4、运行调试与分析讨论&

14、#163;五子棋艇 I 口丨IfciSW图人机对弈模式选择界面ffi五子棋碾I I游戒外观版本图4-2人机对弈界面图4-3结果信息显示界面|>| 五子棋艇 L_L_lte&fil游我夕卜观版本再来一局棋盘檯式人机对弈认输O人人对战悔棋遍出图卜4人人对战模式选择界血旦五子棋碾图4-6悔棋提示界面五子棋碾o回|右i游我外观版本五子棋碾消慝心 讯方同意悔棋决定,棋盘清空!请维续“确定图4-7悔棋后棋盘淸空提示界血回五子棋濒LJ_MM游戒外观版本国五子棋槻 1=回L羽J游戒外观版本图1-10认输提示界而ffi五子棋碾I I游戒外观版本|人| 小AAI 小游戒结束,黒方认输,白方我胜!确定

15、图11认输后结果信息界面12五子棋槻_gjifcfiw图4-12棋盘选择界面ffi五子棋槻1 = 图仆13外观类型选择界iftiHl五子棋濒LJ图4-14版本选择界面i IS_I游戒外观版本制作者:黄甜,態隔 谨孰宝,汤素臥 那娉 制作时间二2045年6月25日确定图4-15版木信息介绍界面5、设计体会与小结通过独立完成五子棋对弈系统的后,发现自己在进行软件开发方面提高不少,同时积极利 用所学到的新技术用于自己的设计开发过程。另外,在整个开发的过程中,时间也比较仓促。 因此,该系统必然会存在一些缺陷和不足。如:没有讨论五子棋禁手的问题。另一个就是电脑 按即左的算法去与玩家下子。这种算法有“固怎

16、” O不太会变,玩家若是仔细观察,可以掌握 其规律。还有就是界面不是很华丽有待改进。尽管本系统存任着很多不足,但其实现了最重要 的功能就是有人工智能。这也让我对计算机中的人工智能领域有一上的了解:另一个就在做系 统的过程中,我学到了 Java的一些基本结构,还有就是对于Java有更深一步的认识。6、参考文献11 丁振凡,JAVA语言程序设计,淸华大学出版社. 丁振凡,JAVA语言程序设讣实验指导与习题解答,淸华大学出版社.3 Charles Petzold. Windows程序设计.北京大学岀版社,2002.4 陈明,Java语言程序设计,淸华大学岀版社.附录:(源程序)import java

17、awt*;import javaawt.event*;import javax swing *;class ChessFrame extends JFrame implements ActionListener private String strsize="标准棋盘","大号棋盘","超大号棋盘" private String strmode= C"人机对弈","人人对战"public static boolean iscomputer=true, checkcomputer=true: pr

18、ivate int width, height;private ChessModel cm;private MainPanel mp;public ChessFrame0 this. setTitle("五子棋游戏");cm=new ChessModel (1);mp=new MainPanel(cm);Container con=this getContentPane 0;con add(mp, "Center");this setResizable(false);this addWindowListener(new ChessWindowEvent

19、0);MapSize(14,14);JMenuBar mbar = new JMenuBar0;this setJMenuBar(mbar);JMenu gameMenu = new JMenuC游戏”);mbaradd(makeMenu(gameMenu, new Objectj "再来一局",null,"棋盘", null,"模式", null,"认输", null,"悔棋", null,"退岀", this);JMenu lookMenu =new JMenu (&qu

20、ot;外观");mbar. add(makeMenu(lookMenu, new Object"类型一"、"类型二:"类型三this);JMenu helpMenu = new JMenu 版本”);mbar add(makeMenu(helpMenu, new Object J "关于this);public JMenu makeMenu(Object parent, Object items, Object target) JMenu m = null;if(parent instanceof JMenu)m = (JMenu)p

21、arent;else if(parent instanceof String)m = new JMenu(String)parent);elsereturn null;for(int i = 0; i < items length; i+)if(itemsti = null)m. addSeparator 0;else if (itemsti="棋盘")JMenu jm = new JMenu ("棋盘");ButtonGroup group=new ButtonGroupO;JRadioButtonMenuItem rmenu;for (int

22、j=0;j<strsize1ength;j+)rmenu=makeRadioButtonMenuItem(strsize Ljl, target);if (j=0)rmenu setSelected(true);jm. add (rmenu);group add(rmenu);m add( jm);else if (itemsEi="模式")JMenu jm = new JMenu C模式”);ButtonGroup group=new ButtonGroupO;JRadioButtonMenuItem rmenu;for (int h=0;h<strmode

23、length;h+) rmenu=makeRadioButtonMenuItem(strmode"h, target);if(h=0)rmenu setSelected(true);jm. add (rmenu);group add(rmenu);m add( jm);elsem. add(makeMenuItem(iternsi, target);return m;public JMenuItem makeMenuItem(Object item, Object target) JMenuItem r = null;if(item instanceof String)r = new

24、 JMenuItem(String)item);else if(item instanceof JMenuItem)r = (JMenuItem)item;elsereturn null;if(target instanceof ActionListener)r. addActionListener(ActionListener)target);return r;public JRadioBu11onMenuItem makeRadioBu11onNIenu11em(Object item, Object target)JRadioBu11onMenuItem r = null;if(item

25、 instanceof String)r = new JRadioButtonMenuItem(String)item);else if(item instanceof JRadioBu11onMenu11em)r = (JRadioButtonMenuItem)item;elsereturn null;if(target instanceof ActionListener)r. addActionListener(ActionListener)target);return r;public void MapSize(int w, int h)setSize(w * 24, h * 27);i

26、f(this checkcomputer)this iscomputer二true;elsethis iscomputer二false;mp.setModel(cm);mp.repaint 0;public boolean getiscomputer() return this iscomputer;public void restart()int modeChess = cm. getModeChess 0;if(modeChess <= 3 && modeChess >= 0)cm = new ChessModel(modeChess);MapSize(cm g

27、etWidth0, cm. getHeight 0);public void actionPerformed(ActionEvent e)String arg=e getActionCommand0;tryif (arg. equals ("类型三")UIManager setLookAndFeel("com sun java swing plaf windows WindowsLookAndFee 1?/);else if (arg. equals (*类型二")UIManager setLookAndFeel (com sun. java swing

28、 plaf motif MotifLookAndFee 1;elseUIManager setLookAndFeel (/z javax swing plaf meta 1 MetalLookAndFeel'');SwingUtilities updateComponentTreeUI (this);catch(Exception ee)if (arg. equals (*标准棋盘")this width二14;this height=14;cm=new ChessModel(1);MapSize(this width, this height);SwingUtili

29、ties updateComponentTreeUI(this);if (arg. equals C大号棋盘")this width=18;this height=18;cm=new ChessModel(2);MapSize (this width, this height);SwingUtilities updateComponentTreeUI(this);if (arg. equals (”超大号棋盘")this width=22;this height二22;cm=new ChessModel(3);MapSize(this width, this height)

30、;SwingUtilities updateComponentTreeUI (this);if (arg. equals (” 人机对弈")this checkcomputer=true;this iscomputer二true;cm=new ChessModel(cm getModeChess 0);MapSize (cm getWidthO , cm getHeight ();SwingUtilities updateComponentTreeUI(this);if (arg. equals C 人人对战")this checkcomputer二false;this i

31、scomputer二fdlse;cm=new ChessModel(cm getModeChess0);MapSize (cm getWidthO , cm. getHeight ();SwingUtilities updateComponentTreeUI (this);if (arg. equals 再来一局")restart 0;if (arg. equals 悔棋")if(!checkcomputer) intresult=JOptionPane showConfirmDialog (this,(FiveChessAppletDemo. isBlack二二false

32、?"白方悔棋,黑方是否同意?":"黑方悔棋,白方是否 同意?");if (result = 0) JOptionPane. showMessageDialog(this,"双方同意悔棋决泄,棋盘淸空!请继 续");restart 0;if (arg. equals ("认输")int result = JOptionPane showConfirmDialog(this,"是否认输? “);if (result = 0) JOptionPane. showMessageDialog(this,/z游戏结朿

33、,"+(FiveChessAppletDemo. isBlack二二true?"黑方认输,白方获胜!":"白方认输,黑方获胜!");if (arg equals ("关于")JOptionPane. showMessageDialog(null,制作者:黄甜,熊婷婷,谭飘宝,汤素娟,邓婷n制作时间:2015年6月25日,"课程设计制作介绍 JOptionPane. PUIN.MESSAGE );if (arg. equals ("退出")System exit(0);class ChessMod

34、el private int width, height, modeChess;private int x=0, y=0;private int Fj arrMapShow;private boolean isOdd, isExist;public ChessModel0 public ChessModel(int modeChess)this isOdd二true;if(modeChess = 1)Panellnit(14, 14, modeChess);if(modeChess = 2)Panellnit(18, 18, modeChess):if(modeChess = 3)Panell

35、nit(22, 22, modeChess):private void Panellnit(int width, int height, int modeChess) this .width = width;this .height = height;thismodeChess = modeChess;arrMapShow = new intwidth+1height+1;for(int i = 0; i <= width; i+)for(int j = 0; j <= height; j+)arrMapShowli j = T;public boolean getisOddO r

36、eturn this isOdd; public void setisOdd(boolean isodd)if(isodd)this isOdd二true;elsethis isOdd二false;public boolean getisExist 0 return thisisExist; public int getWidthO return thiswidth; public int getHeight ()return this .height; public int getModeChessO return this.modeChess; public intLgetarrMapSh

37、owO return arrMapShow; private boolean badxy(int x, int y) if(x >= width+20 x < 0)return true;return y >= height+20 y < 0;public boolean chessExist(int i, int j)if (this arrMapShowi j=lthis arrMapShow il j=2)return true;return false;public void readyplay(int x,int y) if (badxy (x, y)retu

38、rn;if (chessExist(x, y)return;this arrMapShowLx.y二3;public void play(int x, int y)if (badxy (x, y)return;if(chessExist(x, y)this isExist二true;return;elsethis isExist二false;if (getisOddO) setisOdd(false);this arrMapShowFx.y=l;elsesetisOdd(true);this arrMapShow Lxy=2;public void computerDo(int width,

39、int height)int maxblack, max_white, max_temp, max=0:setisOdd(true);System, out. print In (讣算机走棋");for(int i = 0; i <= width; i+) for(int j = 0; j <= height; j+)if (!chessExist(i, j) max_white=checkMax(i, j,2);max_black=checkMax(i, j, 1);max_temp二Math. max(max_white, max_black);if(max_temp

40、>max)max=max_temp;this x=i;this. y=j;setX(this x);setY(this y);this arrMapShowthis xthis y=2;public void setX(int x) thisx二x;public void setY(int y) thisy二y;public int getXO return thisx;public int getY()return thisy;public int checkMax(int x, int y,int black_or_white)int num=0, max_num, maxempO;

41、int x_temp=x, y_temp=y;int x_templ=x_temp, y_templ=y_temp;for(int i=l;i<5;i+)x_templ+=l;if(x_templ>this width)break;if (this arrMapShowx_temp 1 y_temp 1 =b 1 ack_or_white) num+;elsebreak;x_templ=x_temp;for(int i=l;i<5;i+)x_templ-=l;if(x_templ<0)break;if (this arrMapShowx_temp 1 y_temp 1

42、=b 1 ack_or_white) num-H-;elsebreak;if(num<5)max_temp=num;x_templ=x_temp;y_templ=y_temp;num=0;for(int i=l;i<5;i+)y_templ-=l;if(y_templ<0)break;if (this arrMapShowx_temp 1 y_temp 1 =b 1 ack_or_white) num 卄;elsebreak;y_temp1=y_temp;for(int i=l;i<5;i+)y_templ+=l;if(y_templ>this height)br

43、eak;if(this arrMapShowx_temp1y_temp1=b1ack_or_white) num-H-;elsebreak;if(num>max_temp&&num<5)max_temp=num;x_templ=x_temp;y_templ=y_temp;num=O;for(int i=l;i<5;i+)x_templ-=l;y_templ-=l;if(3r_templ<0 x_templ<0)break;if(this arrMapShowx_temply_temp1=b1ack_or_white) num 卄;elsebreak

44、;x_t emp1二x_t emp;y_templ=y_temp;for(int i=l;i<5;i+)x_templ+=l;y_templ+=l;if(y_templ>this heightx_templ>this width)break;if(this arrMapShowx_temply_temp1=b1ack_or_white) num+;elsebreak;if(num>max_temp&&num<5)max_temp=num;x_templ=x_temp;y_templ=y_temp;num=0;for(int i=l;i<5;i

45、+)x_templ+=l;y_templ-=l;if(3r_templ<0 x_templ>this width)break;if(this arrMapShowLx_temply_temp1=b1ack_or_white) num 卄;elsebreak;x_templ=x_temp;y_templ=y_temp;for(int i=l;i<5;i+)x_templ-=l;y_templ+=l;if(y_templ>this height x_templ<0)break;if(this arrMapShowx_temp1y_temp1=b1ack_or_whit

46、e) num-H-;elsebreak;if(num>max_temp&&num<5)max_temp=num;max_num=niax_t emp;return max_num;public boolean judgeSuccess(int x, int y,boolean isodd) int num=l;int arrvalue;int x_temp=x, y_temp=y;if(isodd)arrvalue=2;elsearrvalue=l;int x_templ=x_temp, y_templ=y_temp;for(int i=l;i<6;i+) x

47、_templ+=l;if (x_templ>this width)break;if(this arrMapShowLx_temp1y_temp1=arrvalue)num 卄;elsebreak;x_temp1=x_temp;for(int i=l;i<6;i+)x_templ-=l;if(x_templ<0)break;if(this arrMapShowx_temply_temp1=arrva1ue)num 卄;elsebreak;if(num=5)return true;x_templ=x_temp;y_temp1二y_t emp;num=l;for(int i=l;i

48、<6;i+)y_templ-=l;if(y_templ<0)break;if(this arrMapShowx_temp1y_temp1=arrva1ue) num-H-;elsebreak;y_temp1=y_temp;for(int i=l;i<6;i+)y_templ+=l;if(y_templ>this height)break;if(this arrMapShowx_temp1Ey_templ=arrvalue) num 卄;elsebreak;if(num=5)return true;x_templ=x_temp;y_temp1=y_temp;num=l;f

49、or(int i=l;i<6;i+)x_templ-=l;y_templ-=l;if(3r_templ<0 x_templ<0)break;if(this arrMapShowx_temp1y_temp1=arrva1ue)num-H-;elsebreak;x_templ=x_temp;y_t emp1=y_temp;for(int i=l;i<6;i+)x_templ+=l;y_templ+=l;if(y_templ>this heightx_templ>this width)break;if(this arrMapShowx_temp1Ey_templ=arrvalue) num-H-;elsebreak;if(num=5)return true;x_templ=x_temp;y_templ=y_temp;num=l;for(int i=l;i<6;i+)x_templ+=l;y_templ-=l;if(3r_templ<0 x_templ>this width)break;if(this arrMapShowx_tem

温馨提示

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

评论

0/150

提交评论