基于Java web 航空订票系统的设计与实现──用户信息,用户订票_第1页
基于Java web 航空订票系统的设计与实现──用户信息,用户订票_第2页
基于Java web 航空订票系统的设计与实现──用户信息,用户订票_第3页
基于Java web 航空订票系统的设计与实现──用户信息,用户订票_第4页
基于Java web 航空订票系统的设计与实现──用户信息,用户订票_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

题目基于Javaweb航空订票系统的设计与实现系别数学与信息工程系专业年级2012级计算机科学与技术(移动互联网方向)ii基于Javaweb航空订票系统的设计与实现──用户信息,用户订票摘要:随着社会发展的不断进步,民航事业的壮大,飞机票预定查询系统在各机票预定网点中的作用也越显重要。机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.基于JAVAWEB的航空订票系统采用MySQL来设计数据库,并使常用的开发工具Myeclipse,采用技术jsp、ajax、easyui以及主流J2EE架构-SSH来实现系统。关键词:机票订购系统;JavaWeb系统;管理系统;jsp;ajaxAbstract:Alongwiththeadvanceofsocialdevelopment,civilaviation,airticketreservationquerysystemintheroleoftheticketbookingoutletsaremoreimportant.Ticketreservationsystemisfortheairportstaffandcustomersbookingticketandticketrelatedcontentsandmanagementsystem,suchasithasopenarchitecture,easyexpansion,easymaintenance,andpossessestheadvantagesofgoodman-machineinterface.TheairlinereservationsystembasedonJAVAWEBuseMySQLtodesigndatabase,AndmakecommondevelopmenttoolsMyeclipse,JSP,AJAX,thetechniquesusedbyeasyUIandJ2EE-SSHtorealizethesystemarchitectureofthemainstream.Keywords:Ticketorderingsystem;JavaWebsystem;Managementsystem;JSP;AJAX目录第1章概论 页(共33页)概论1.1JavaWeb简介我们所谓的JavaWeb其实就是用Java的技术来解决一些web上的需要。Web是由web服务器和web客户两个部分组成。JavaWeb有很多的框架,但基本路数都是使用Servlet或者Filter拦截请求,然后根据通过了的请求做其相应的事物。然后实现系统的完整性和和谐性。JavaWeb层框架的优缺点:JSP优点:客户端的接口没有那么复杂,对于各种应用易于维护和修改;上手快速并且相对容易;有大量可用的组件库。JSP缺点:大量的JSP标签;对REST和安全支持不好;没有一个统一的实现。既有SUN的实现,又有Apache的实现——MyFaces。SpringMVC优点:对SpringMVC覆盖绑定(overridingbinding)、验证(validation)等提供生命周期管理;便于测试——归功于IoC。SpringMVC缺点:大量的XML配置文件;运用着太过灵活,没有公共的父控制器;没有内置的Ajax支持。Stripes优点:不需要书写XML配置文件;良好的学习文档;社区成员很热心。Stripes缺点:社区比较小;不如其他的项目活跃;ActionBean里面的URL是硬编码的。Struts2优点:架构简单——易于扩展;标记库很简单的通过FreeMarker或者Velocity来定制;基于控制器或者基于页面的导航。Struts2缺点:文档组织得很差;对新特征过分关注。Tapestry优点:它能提高生产率;HTML模板让页面设计师能更好的设计页面;每更新一个版本,就会有很多的创新。Tapestry缺点:文档太概念化,不怎么实用;学习曲线陡峭;发行周期也比较长,每年都会有升级。Wicket优点:有利于Java开发者;页面和显示绑定紧密;社区活跃——有来自创建者的支持。Wicket缺点:HTML模板和Java代码紧挨着;需要对OO有较好的理解;Wicket逻辑——什么都用Java搞定。1.2JavaWeb常用框架使用MVC的思想设计架构,使用约定,XML或Annotation来配置,JavaWeb四大常用框架如下:1.2.1Struts框架Struts是一个MVC框架,它主要是采用Servlet和JSP技术来实现的。Struts框架可分为以下四个主要部分,其中三个都和MVC模式相关:模型

(Model)、视图(View)、控制器(Controller)和一堆用来做XML文件解析的工具包。Struts框架为程序员节省了很多的工作量,让程序员能把更多的时间放到代码的逻辑上面。1.2.2Spring框架Spring是轻量级的Java

EE应用程序框架。它的核心是个轻量级容器(container),实现了IoC模式的容器,Spring的目的是实现一个全方位的整合框架,在Spring框架下实现多个独立的子框架组合,也可以用其它的框架来代替其功能,Spring希望提供one-stop

shop的框架整合方案

。Spring在没有提出的更好的框架下,是不会特別去提出其它的子框架来与现有的OpenSource框架竞争,Spring的框架性能有效地对你的中间层对象进行组织,而且Spring会关注很多遗留下的问题。它会消除在很多系统中对Singleton的过多使用。1.2.3Hibernate框架Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心类和接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。Hibernate版本更新快,现已有多个版本:Hibernate3,Hibernate4和Hibernate5,这一点程序员从其Jar文件名便可以看出来。目前最新发布的版本是HibernateORM5.0.1.FinalReleased。Hibernate2系列的最高版本是Hibernate2.1.8,Hibernate3系列的最高版本是hibernate-distribution-3.6.10.Final-dist版,但使用较多且较稳定的版本是Hibernate3.1.3或Hibernate3.1.2。1.2.4Swing框架图形用户接口(GUI)库最初的设计目的是让程序员构建一个通用的GUI,使其在所有的平台上都能够正常的显示。Swing是第二代GUI开发工具集,AWT采用了与特定平台相关的实现,而绝大部分Swing组件却不是。Swing是构筑在AWT上层的一组GUI组件的集合,为了保证可移植性,它完全用Java语言编写,与AWT比较,Swing提供了更完整的组件,引入了许多新的特性和能力。Swing提供了更多的组件库,如:JTable,JTree,Jcombox。Swing也增强了AWT中组件的功能。就因为Swing的这些优势,所以很多程序员在开发的时候都选择Swing。JComponent类是Swing组件的基类,而JComponent继承自Container类,因此,所有的Swing组件都是AWT的容器。Swing采用了MVC设计模式。1.3JavaWeb的优势与特点JavaWeb的优势在于:1、Java语言是一门不会“死掉”的语言。世界上有很多的Java开发者,由某软件开发者去年的调查显示,Java背后的开发者都占有很高的比例;2、对于公司来说,很高比例的开发者就意味着能很快的找到一个程序员来对现有的程序进行维护和升级;3、JAVA/J2EE体系的强大能够构建出一个很好的系统;4、很多的工具都是免费提供给开发者使用的,例如Apache/Tomcat/JBoss,这些都是一个网站系统必不可少的开发工具;5、能够很容易的引用第三方库快快速的构建一个系统,这些第三方库为开发人员提供了优秀的支持;JavaWeb的特点:用Java技术对Web领域的发展注入了强大的动力。使得从事Web系统编写的开发人员能够利用第三方库和其它免费的开发工具,让其工作变得十分的轻松,第2章开发环境和工具2.1数据库开发环境本系统用到的开发数据库是MySQL数据库。MySQL是一个由瑞典MySQLAB公司开发关系型数据库管理系统,目前属于Oracle旗下公司。MySQL因为其成本小,体积小,速度太等优点,受到了很多人的青睐。所以很多小型的网站所选的数据库都是它,程序员可以利用SQL语句或者第三方工具对数据库进行管理,实现其增、删、改、查等功能。在WEB中用MySQL也是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)一款软件。一个良好的开发环境可以利用MySQL搭配PHP和Apache组成。2.2开发环境系统的开发,我们选用MyEclipse进行开发,因为MyEclipse可以支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。在开发方面可以通过MyEclipse对第三方框架进行利用,实现系统的完整性和功能多样性。方便了我们对系统的管理,和对代码的编写。MyEclipse作为一款编程软件,对程序员的帮助也是很大的,让我们脱离了纯代码的枯燥,更关注系统的逻辑层。2.3JDK安装与环境变量配置1、安装JDK中。首先jdk,然后安装jre。建议在安装过程中把他们放到同一个java文件夹中不同的位置。(jdk和jre不能安装在一起,会有错)。2、安装完JDK后要对其环境变量进行配置,顺序:计算机→属性→高级系统设置→高级→环境变量。3、两个都安装并且配置完毕以后,可以在cmd下输入java-version来检测是否安装成功,如果显示了它的版本信息就说明安装和配置都是成功的。2.4tomcat安装1、下载apache-tomcat的安装包,双击运行一直点击next即可安装完毕,其中也可以配置一下安装路径,我这保持默认路径,端口也是默认8080。2、验证安装:打开浏览器,键入http://localhost:8080/,如果出现一下页面即安装成功:图2-1验证tomcat安装2.5运行环境1、系统:WindowsXP及其以上版本。2、Web服务器:Tomcat6及其以上版本。3、数据库服务器:MySql。4、浏览器:IE7,8,9、火狐、Chrome。第3章需求分析和技术设计3.1可行性分析网站的建立,从销售方面来讲,不仅给航空公司增加了一个新的销售渠道,而且方便了客户购买与了解航空订票的大致方向。从产品企业宣传方面来讲,不仅扩大了公司知名度,还更直观地展示出公司的运行效率。拥有一个航空订票系统,已经成为销售机票进程中的一个重要环节。所以设计一个网上机票订购系统是什么的必要的,随着大数据的来临,对客户来讲,足不出户就能买到自己所需要的机票是十分的贴心和趋势的。3.2技术可行性对于航空订票系统的实现在技术上来已经十分的成熟了,我们利用客户和管理员两个角色来对系统进行设计,就像做购物网站一样,只是将物品换成了机票,这在技术上是可行的。

3.3拟采取的研究方法:主要采用调研法、文献研究法、比较法、经验总结法等方法。采用调研方法,通过对收集到的、与调查航空订票相关的各种信息和情报资料等,分析、研究完成需求分析;采用文献研究法研究Mysql数据库,ORM(ObjectRelationMapping对象关系映射)框架,Javaweb和JSP的书籍,从中学习先进的编程知识和结构设计理念,对相关外文网站的最新动态进行跟踪;采用比较法,通过对其它现有的航空订票系统的观察和比较分析,找出相同点和不同点,分析其结构和特点,总结其优缺点,在本系统的设计中加以运用;采用经验总结法,在完成系统设计后,对其进行大量测试、总结,然后找出错误并加以修正,提高它的容错能力。3.4系统基本功能需求系统中涉及系统普通用户和管理员两种角色权限,其两种权限功能结构如下;3.4.1系统结构主要功能有:普通用户:用户注册;用户登录;查询机票信息;购买机票;个人信息管理;订购管理(退票,改签);系统管理员:管理员登录;用户管理;客机管理;航班管理;机票管理;系统管理(修改密码,安全推出);实现的模块有:1.用户信息(1)注册与注销;(2)登陆;(3)修改个人密码;2.用户订票(1)航班显示信息;(2)航班搜索与根据出发地和目的地搜索航班;(3)座位的余量查询;(4)订单查询;3.4.2系统业务流程图普通用户:图3-1普通用户业务流程图(1)图3-2普通用户业务流程图(2)管理员:图3-3管理员业务流程图(1)图3-4管理员业务流程图(2)3.4.3数据库需求分析由上述业务流程图所需要的数据,我们需要设计的数据库表有:用户表,管理员表,客机表,航班表,机票订单表。3.5系统目标本系统的设计,是为了实现以下的目标:人性化设计:系统界面友好,操作简单;前台实现用户登录,用户注册,航班查询,机票订购,个人信息管理,机票订购管理;后台实现管理员登录,用户管理,客机管理,航班管理,订购管理,系统管理;第4章系统总体设计4.1总体设计4.1.1处理流程一,普通用户(1).可任意不登陆,查看所的航班和最近航班的动态;(2).用后登录,可以选择所需的机票;(3).用户进入个人中心,可以修改个人信息以及对机票进行退票和改签;(4).退出系统。二,管理员(1).打开系统,进入系统登录界面;(2).通过验证后,进入系统管理主界面,对航班和用户进行管理;(3).用户操作,执行相应的功能;(4).退出系统。4.1.2系统的数据流图图4-1系统的数据流图4.2系统结构图图4-2系统结构图针对该系统的数据需求,我们设计出如下所示的数据项和数据结构:用户表:编号,用户名,密码,真实姓名,性别,身份证,联系电话;管理员表:编号,用户名,密码,真实姓名,联系电话;客机表:编号,客机名称,购买日期,服役日期,备注;航班表:编号,航班名称,航班类型,出发城市,目的城市,出发时间,到点时间,使用客机,经济舱票价以及座位数,头等舱票价以及座位数;订单表:编号,订单号,订购时间,票价,座舱类别,航班,用户,订购数量,总价;4.3系统结构图.用户信息E-R图图4-3用户信息E-R图.客机信息E-R图图4-4客机信息E-R图.航班信息E-R图图4-5航班信息E-R图.订单信息E-R图图4-6订单信息E-R图.实体之间的关系图图4-7实体之间的关系图4.4逻辑结构设计1,航班和客机实体的关系是多对一;2,订单实体和航班实体的关系是多对一;3,用户和订单是一对多;4.5数据库表的设计表一4.1用户信息表字段名数据类型长度约束描述idInt11NOTNULLAUTO_INCREMENT自动编号Usernamevarchar20DEFAULTNULL用户名Passwordvarchar20DEFAULTNULL密码trueNameVarchar20DEFAULTNULL用户姓名sexVarchar5DEFAULTNULL性别sfzVarchar20DEFAULTNULL身份证emailVarchar20DEFAULTNULL邮件phoneVarchar20DEFAULTNULL联系电话表4.2航班表字段名数据类型长度约束描述idInt11NOTNULLAUTO_INCREMENT自动编号ecPriceintNOTNULL经济舱票价ecTicketRemainintNOTNULL经济舱剩余票ecTicketTotalintNOTNULL经济舱总票数fcPriceintNOTNULL头等舱票价fcTicketRemainintNOTNULL头等舱剩余票fcTicketTotalintNOTNULL头等舱总票数flightTypevarchar20DEFAULTNULL航班类型fromCityvarchar20DEFAULTNULL出发地点fromTimedatetimeDEFAULTNULL出发时间NamevarcharDEFAULTNULL航班名称toCityvarcharDEFAULTNULL到达城市toTimedatetimeDEFAULTNULL到达时间aircraftIdintDEFAULTNULL使用飞机表4.3订单表字段名数据类型长度约束描述idInt11NOTNULLAUTO_INCREMENT自动编号orderNovarchar30DEFAULTNULL订单号orderTimeDatetimeDEFAULTNULL订购时间priceintNOTNULL价格spaceTypevarchar20DEFAULTNULL座位类型flightIdintDEFAULTNULL航班IDuserIdintDEFAULTNULL用户IDnumintNOTNULL购买数量totalPriceintNOTNULL总价第5章系统详细设计与实现5.1前台系统设计实现为实现本系统功能,我们采用了struts2、spring和hibernate三大框架,自主设计,将系统分成了多个模块,让各个模块实现它自己的功能,然后各个模块一起共同完成程序的运行。5.1.1用户注册功能实现在首页可通过“注册”按钮,触发注册功能,在弹出的小窗口中实现用户注册;如图:图5-1用户注册窗相关说明:用户在弹窗内填写自己注册的用户名,密码,确认密码和邮件。填写完毕后点击“注册”按钮,即可完成用户注册;关键代码: publicStringregister()throwsException{ JSONObjectresult=newJSONObject(); if(userService.existUserWithUserName(user.getUserName())){ result.put("error","用户名已存在,请更换!"); }else{ userService.saveUser(user); result.put("success",true); } ResponseUtil.write(ServletActionContext.getResponse(),result); returnnull; }5.1.2用户登录和退出login()方法登录post方法传值UserAction.java的login方法 functionlogin(){ varuserName=$("#userName").val(); varpassword=$("#password").val(); //此处由于代码比较多且重复率较高,所以省略,省略的为判断用户//名和密码是否为空的代码 $.post("${pageContext.request.contextPath}/user_login.action",{'user.userName':userName,'user.password':password}, function(result){ varresult=eval('('+result+')'); if(result.success){ window.location.href="${pageContext.request.contextPath}/flight_indexList.action"; }else{ document.getElementById("error").innerHTML="用户名或密码错误!"; } } ); }UserAction.java的login方法 /** *用户登录 *@return *@throwsException */ publicStringlogin()throwsException{ HttpSessionsession=request.getSession(); UsercurrentUser=userService.login(user); booleanflag=false; if(currentUser==null){ flag=false; }else{ session.setAttribute("currentUser",currentUser); flag=true; } JSONObjectresult=newJSONObject(); result.put("success",flag); ResponseUtil.write(ServletActionContext.getResponse(),result); returnnull; }用户登录成功,完成了他所需要的操作后,可以点击退出按钮,即可退出本次的登录,退出的关键代码如下:安全退出方法logout()方法post传值UserAction.java的logout()方法//安全退出 functionlogout(){ if(confirm("您确认要退出系统吗?")){ $.post("${pageContext.request.contextPath}/user_logout.action",{}, function(result){ varresult=eval('('+result+')'); if(result.success){ window.location.href="${pageContext.request.contextPath}/flight_indexList.action";}});}}UserAction.java的logout()方法/** *安全退出 */ publicStringlogout()throwsException{ request.getSession().invalidate(); JSONObjectresult=newJSONObject(); result.put("success",true); ResponseUtil.write(ServletActionContext.getResponse(),result); returnnull; }5.1.3用户个人信息显示和修改用户通过进入个人中心,然后在个人信息里面即可查看和修改自己的信息,如图:图5-2用户信息修改关键代码: menu.jsp页面<ahref="${pageContext.request.contextPath}/user_showUserInfo.action"class="list-group-item">个人信息</a>到UserAction.java的showUserInfo方法/** *显示用户信息 */ publicStringshowUserInfo()throwsException{ mainPage="userCenter/userInfo.jsp"; return"userCenter"; }跳到userInfo.jsp用户信息修改save()方法post方法传值UserAction.java的save方法functionsave(){ varuserName=$("#userName").val(); //省略信息赋值 if(userName==null||userName==""){ document.getElementById("error2").innerHTML="用户名不能为空!"; return; } if(sex==null||sex==""){ document.getElementById("error2").innerHTML="请选择性别!"; return; } //省略判断所输入的其它信息不能为空 } $.post("${pageContext.request.contextPath}/user_save.action",{'user.id':'${currentUser.id}','user.userName':userName,'user.password':password,'user.trueName':trueName,'user.sex':sex,'user.sfz':sfz,'user.email':email,'user.phone':phone}, function(result){ varresult=eval('('+result+')'); if(result.error){ document.getElementById("error2").innerHTML=result.error; }else{ alert("修改成功!"); window.location.href="${pageContext.request.contextPath}/user_showUserInfo.action";}});}UserAction.java的save方法/** *用户修改 */ publicStringsave()throwsException{ HttpSessionsession=request.getSession(); JSONObjectresult=newJSONObject(); userService.saveUser(user); result.put("success",true); session.setAttribute("currentUser",user); ResponseUtil.write(ServletActionContext.getResponse(),result); returnnull; }5.1.4航班显示和余票显示用户根据自己的旅程搜索对应的机票,并显示出来,如图:图5-3航班显示相关说明:index.jsp中<%response.sendRedirect("flight_indexList.action");%>FlightAction.java的indexList方法查询航班,显示航班信息的方法<%@tagliburi="/jsp/jstl/core"prefix="c"%><c:forEachvar="f1"items="${flightList1}"><td>${f1.fromCity}-${f1.toCity}</td>5.1.5订单查询用户购买成功后,可进入个人中心对相应的订单进行查看,如图:图5-4订单显示相关说明:menu.jsp页面点击预定管理,调用后台TicketAction.java的list方法,进行数据的查询。5.2后台系统设计实现5.2.1后台修改密码管理员进入后台系统设置然后点击修改密码,对密码进行修改。如图:图5-5密码修改相关说明:modifyPassword()方法修改密码/** *修改密码 */ publicStringmodifyPassword()throwsException{ Managerm=managerService.getManagerById(manager.getId()); m.setPassword(manager.getPassword()); managerService.saveManager(m); JSONObjectresult=newJSONObject(); result.put("success",true); ResponseUtil.write(ServletActionContext.getResponse(),result); returnnull; }modifyPassword()方法提交信息到ManagerAction.java的modifyPassword()方法进行密码修改。点击“退出”,如图:图5-6用户退出说明:点击“确定”,即可完成系统的退出;关键代码实现:/***注销用户*/publicStringlogout()throwsException{ request.getSession().invalidate(); return"logout";}5.2.2用户管理在后台点击“用户管理”按钮,显示:说明:用户管理模块包括用户信息的查询,用户添加,用户修改,用户删除;图5-7用户管理进入添加用户界面,输入用户信息,点击“保存”按钮。即可完成保存功能;关键代码实现:分页查询获取所有用户信息:publicList<User>findUserList(Users_user,PageBeanpageBean){ List<Object>param=newLinkedList<Object>(); StringBufferhql=newStringBuffer("fromUser"); if(s_user!=null){ if(StringUtil.isNotEmpty(s_user.getUserName())){ hql.append("anduserNamelike?"); param.add("%"+s_user.getUserName()+"%"); } } if(pageBean!=null){ returnbaseDAO.find(hql.toString().replaceFirst("and","where"),param,pageBean); }else{ returnnull; } }添加或者修改用户信息:publicvoidsaveUser(Useruser){ baseDAO.merge(user); }删除用户信息:publicvoiddelete(Useruser){ baseDAO.delete(user); }第6章系统的调试与测试6.1系统调试步骤和一般方法6.1.1调试步骤:1、程序调试程序调试的内容包括语法调试和逻辑检查。逻辑检查之前需要进行数据正确性检测,也就是需要编造一些测试数据。这些数据包括了有能正常运行的和一些错误的有缺陷的数据,以此来考验此程序的可靠性和正确性,确保基本技能的实现。功能调试系统的功能会根据需要分成很多个模块,一个或多个程序段组成一个处理功能模块。所以,在调试完单个程序段后。还需要对整个功能模块进行调试,看每个模块中的程序段是否都能正常运行,如果单个程序段未能运行成功,我们再需要对其进行修改。3、总调在对系统中的各个小模块小功能进行调试完毕之后,我们需要对整个系统进行一次完整的总调,以此来检测程序中各个模块之间是否能正常运行。6.1.2调试的一般方法:1、使用断点在本系统中的逻辑中作标记,设置断点后可让程序在需要的地方自动停止执行。在断点调试完毕过后,要将所设置的断点清除,不然会影响程序最终的运行。2、使用stop语句在程序代码中写入stop语句,写入stop语句和设置断点差不多。但是stop语句要在调试完毕后手动删除。不然stop语句不会消失,也会影响程序的最终运行。3、控制程序的运行调试的很重要的部分那就是控制程序的运行。让程序只运行一条语句,就能很快的确定到底是那一部分出了问题。为此。我设计了如下响应步骤:每个语句执行、绕过部分没问题的代码、设置下一条需要调试的语句。4、直接查看变量的值调试程序时,会经常去看有些变量的值是否传送和所传送的值是否正确。所以我们可以把鼠标放到我们需要查看的变量上。小停留一会儿就会弹出一个小方框。然后通过弹出的小方框来了解所需要查看的变量的值。6.2测试环境Apache所提供的Web服务器Tomcat6.0可以让用户在Windows2007以上操作系统下展示自己所设计的动态网页作品。所以说系统的调试是在Tomcat6.0这个大环境下进行并且完成的。我们可

温馨提示

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

评论

0/150

提交评论