课程设计基于J2EE的网上拍卖系统

上传人:阳*** 文档编号:48478911 上传时间:2022-01-08 格式:DOC 页数:34 大小:306KB
收藏 版权申诉 举报 下载
课程设计基于J2EE的网上拍卖系统_第1页
第1页 / 共34页
课程设计基于J2EE的网上拍卖系统_第2页
第2页 / 共34页
课程设计基于J2EE的网上拍卖系统_第3页
第3页 / 共34页
资源描述:

《课程设计基于J2EE的网上拍卖系统》由会员分享,可在线阅读,更多相关《课程设计基于J2EE的网上拍卖系统(34页珍藏版)》请在装配图网上搜索。

1、目 录一 设计题目1二 设计目的1三 总体设计13.1需求分析13.2 系统设计33.2.1 开发技术与工具33.3 概要设计43.4 数据库设计53.4.1 数据库逻辑设计53.5 详细设计73.5.1 设计视图层73.5.2 设计控制层93.5.3 设计对象模型103.5.4 设计数据访问层11四 算法描述与实现144.1 实现浏览拍卖物品种类页面144.2 实现查看物品详细信息及出价界面174.3 实现查看竞得的商品界面18五 结论20附录:源代码21一 设计题目网上拍卖系统二 设计目的随着信息化技术在生活中的应用越来越广泛,网上购物也逐渐成为人们的一种生活方式。本系统正是基于这样一种环

2、境下应运而生。计机网络为商务活动开辟了新的空间,提供了新的手段,同时为公司业务发展赋予了更多的机会,成为现代商务的潮流。网上拍卖是建立在电子网络技术上的一种全新的电子商务模式。它具有成本低廉,方式灵活,运行快捷等特点,通过Internet将拍卖活动变成每一位网民都可以加入其中的交易方式。但它在给人们带来便利的同时也带来了很多的问题。它的公平、公正、公开性受到大家的关注。其可靠性和安全性更是大家关心的问题。这就要求不仅要在系统的设计上做到公平合理,也要在信息的传输上做到安全可靠,以构建一个公平又安全的交易平台。三 总体设计3.1需求分析需求分析是介于系统分析和软件设计阶段之间的重要桥梁。一方面,

3、需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。需求分析框图如图3-1。网上拍卖系统注册登录管理商品参加商品竞拍查看自己的竞标管理商品种类浏览物品查看物品添加商品添加商品分类查看竞得物品浏览流拍物品浏览拍卖物品发送邮件图3-1 网上拍卖系统需求框图3.2 系统设计本系统是基于B/S模式开发的JAVA EE多层体系结构WEB应用。系统开发主要分为以下几层:表示层、业务层、DAO层、持久层。业务层和

4、DAO层都通过接口与其它层进行连接从而减小了各层之间的耦合度,实现高内聚、低耦的思想。3.2.1 开发技术与工具主要开发工具为:MyEclipse8.6、Mysql6.0、Tomcat6.0。主要技术包括:JavaEE轻量级框架S2SH、Log4j、Ajax。S2SH集成框架是Struts、Spring 和Hibernate 三种技术的有机融合, 是目前应用最广泛的Java EE 架构。在S2SH集成框架中,Struts 的作用是提供MVC 模型, 将界面、业务逻辑和数据分离, 并提供一个高可扩展的架构。Spring作为核心,向上整合MVC框架,向下整合ORM框架,使用Spring的IoC容器

5、来管理各组件之间之间的依赖关系,Spring的声明事务将负责逻辑层组件的事务管理。而Hibernate 提供了一个抽象的数据服务视图,将用户对数据库的访问进行高度抽象。 Struts 是目前创建Web 应用最常用的表现层MVC 框架实现,是Jakarta Apache 的一个开源项目。基于Model2 的Struts 框架利用控制器和定制标签库将应用中的模型和视图分离,达到了层间松散耦合的效果,同时提高系统的灵活性、重用性和维护性。作为开源项目,Struts 经受了大量实践的检验,功能越来越强大,体系也日臻完善,并且对其他技术和框架显示出良好的融合性。Spring 由Rod Johnson 创

6、建,它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean 来完成以前只可能由EJB 完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从Spring 中受益。简单来说,Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合, 既可以在Java 的客户端程序

7、使用, 也可以在Servlet/JSP 的Web 应用中使用。AJAX是Asynchronout JavaScript and XML的缩写,它并不是一门新的语言或技术,实际上是几项技术按一定的方式组合在一起,在共同的协作中发挥各自的作用,它包括:使用XHTML和CSS标准化呈现;使用DOM实现动态显示和交互;使用XML和XSLT进行数据交换和处理;使用XMLHttpRequest进行异步数据读取;最后用JavaScript绑定和处理所有数据。AJAX的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新页面),这一特点要得益于XMLHTTP组件XMLHttpRequest对象。

8、这样就可以像再发桌面应用程序只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。3.3 概要设计系统分为前台和后台两个模块,前台主要用来提供给系统注册用户或者游客浏览、查看商品,并提供注册的模块,系统注册用户通过登录后还能管理自己的信息和对指定的商品参与竞拍。后台是系统管理员对拍卖系统设置、管理用户和管理商品的地方。系统的系统层次概框划分如图3-2所示。网上拍卖系统查看竞得物品浏览拍卖物品浏览流拍物品管理商品种类查看自己的竞标管理商品登录注册查看物品详细信息添加商品分类添加商品参加商品竞拍

9、图3-2系统层次概框图3.4 数据库设计根据系统的需求,数据库中需要创建以下数据表。(1)用户信息表:用于存放注册用户的资料以及用户登录情况。(2)商品分类信息表:商品的主要分类,和分类信息的描述。(3)商品信息表:记录用户发布的商品的信息。(4)用户出价信息表:用于记录用户对相关商品的出价信息。(5)商品状态信息表:用于存放商品状态信息。3.4.1 数据库逻辑设计数据库需求分析设计完毕后,现在可以将上面的需求分析转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构,可以作出各表。网上拍卖系统数据库中各个表的设计结果如下面的表格所示。每个表格表示在数据库中的一个表。如表3-1所示为用户

10、信息表,记录了系统中所有用户的详细信息。表中user_id为主键并被设置为IDENTITY (1, 1),这样当插入一条记录且user_id字段的数据为空(null)时,新记录的user_id值将由系统自动给出,且给出的值将比表中曾经曾在的最大的user_id值在1(若是一张新表,则从1开始)。这样可以保证整个表中的user_id字段在其数据类型允许的范围之内没有重复的值。表3-1 auction_user用户信息表FieldTypeNullKeyDefaultCommentuser_idintPRI用户标识usernamevarchar用户名passwordvarchar用户密码emailv

11、archar用户邮箱如表3-2所示为商品分类信息表,记录了所有商品分类的信息。表3-2 kind商品子分类信息表FieldTypeNullKeyDefaultCommentkind_idintPRI分类的标识kind_namevarchar分类的名称kind_descintYes分类的描述如表3-3所示为记录用户所发布的商品的详细信息的表。表中item_id为主键设为自动增长。owner_id为auction_user表中user_id的外键,kind_id为kind表中kind_id的外键,csub为subsort表中ssid的外键,这些外键能保证商品的完整性。cend表示商品的拍卖是否已经

12、结束。表3-3 item商品信息表FieldTypeNullKeyDefaultCommentitem_idintPRI主键,递增owner_idintFK发布者的标识item_namevarchar商品名称kind_idintFK商品分类item_picvarcharYes商品图片地址item_descvarcharYes商品描述winer_idintYesFK拍买者的标识addtimedate开始日期endtimedate结束日期init_pricedouble0初始价钱max_pricedouble0最高价钱state_idint商品状态如表3-4所示为记录用户对商品出价情况的信息表。表

13、中bid_id为主键设为自动增长。item_id为商品表item中item_id的外键,这样可以保证用户的出价都是针对已经发布的商品发出的。user_id为出价的用标识。howmuch代表用户对此商品出了多少钱。表3-4bid用户出价信息表FieldTypeNullKeyDefaultCommentbidintPRI出价的标识item_idintFK对就的商品标识user_idint出价的用户名bid_datedate出价的时间bid_pricedouble出了多少钱如表3-5所示为记录用户发布的商品的状态的信息表。表中state_id为主键设为自动增长。表3-5state用户出价信息表Fie

14、ldTypeNullKeyDefaultCommentstate_idintPRI商品状态的标识state_namevarchar商品状态的名称3.5 详细设计3.5.1 设计视图层系统的视图层是一组JSP页面,他们通过Struts结合JSTL EL表达式语言将数据暴露给用户,供用户操作。本系统在界面设计上采用了模块化处理的思想,把很多页面共有的部分集成一个模块,例如页面的头、尾,这样在开发的时候遇到这类相似的页面部分就不再需要重新编写,而只要以一句:就可以重用这部分的内容,大大提高了系统的开发效率。根据系统的功能,JSP的主要页面如下。主页(main.jsp):主页是系统的入口。效果如图3-

15、3。图3-3 主页效果图登录页(login.jsp):系统为注册的用户提供一个进入系统并使用系统功能的入口。登出页(logout.jsp):用户离开系统时显示的页面。注册新用户页(newuser.jsp):系统提供给普通用户的注册功能。只有注册用户才可以参加竞拍并管理自己的物品。效果如图3-4。图3-4 注册页面效果图管理商品页(mrgitem.jsp):系统为注册用户提供商品管理功能。管理分类页(mrgkind.jsp):系统为注册用户提供商品分类管理功能。查看竞得商品页(viewItemSu.jsp):系统为注册用户提供查看用户自己成功竞得的商品的功能。查看自己的竞标(viewBid.js

16、p):系统为注册用户提供查看用户自己正在参与竞价的商品。浏览流拍商品(viewFailItem.jsp):所有用户都可以浏览处于流拍状态的商品。浏览拍卖商品(viewKind.jsp):所有用户都可以浏览正在拍卖的商品。查看商品详细信息(viewDetail.jsp):所有用户都可以查看正在拍卖物品的详细信息。但要参与竞拍必须是注册用户。提示错误信息页面(error.jsp):所有操作错误的提示信息页面。3.5.2 设计控制层根据系统要实现的功能,构成此网上拍卖系统的各个控制层动作类如表3-5-1所示。通过此表,可以从宏观上了解各个控制层动作类的功能。表3-5-1 控制层的动作类ActionF

17、ormAction功能描述MyActionServlet重载ActionServlet,以实现中文编码正确显示,需要在web.xml中重新配置loginFormLoginAction处理会员登陆的动作类refistyFormNewUserAction处理会员注册的动作类bidFormAddBidAction处理添加竞拍成功记录的动作类itemFormAddItemAction处理添加商品的动作类kindFormAddKindAction处理添加商品种类的动作类MgrItemAction处理管理商品的动作类MgrKindAction处理管理商品种类的动作类ViewBidAction处理查看竞拍记

18、录的动作类ViewDetailAction处理查看商品细节的动作类ViewFailAction处理查看流拍商品的动作类ViewItemAction处理查看某一种商品的动作类ViewSuAction处理查看竞拍成功商品的动作类ViewKindAction处理查看商品种类的动作类此表列出了本系统中主要的动作类和Form Bean及其功能描述。为了使各个表单中的数据能正确显示,本系统重载了ActionServlet类,使其正确处理中文参数并显示。设置步骤如下:(1)重载ActionServlet,代码如下:package org.yeeku.struts;import org.apache.stru

19、ts.action.ActionServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyActionServlet extends org.apache.struts.action.ActionServletprotected void process(HttpServletRequest request, HttpServletResponse response)throws java.io.IOException, ja

20、vax.servlet.ServletException /设置编码方式为GB2312,正确处理中文。request.setCharacterEncoding(GB2312); /将控制权交给父类继续处理super.process(request, response);(2)在web.xml配置文件中应用此重载的MyActionServlet作为前端控制器,部分代码如下:actionorg.yeeku.struts.MyActionServletconfig/WEB-INF/struts-config.xml2应用此设置后,程序将首先通过MyActionServlet预处理所有发送至此控制器设

21、置中文编码,然后使用super.process()方法将控制权交给ActionSerlet处理完成其功能。3.5.3 设计对象模型MyEclipse,可以自动生成这些对象模型,以及数据访问层的相关类。在org.yeeku.model包中有五个对象模型各个类的作用如下。(1)Bid类:用户出价相关的信息。(2)Item类:商品类。(3)AcutionUser类:用户信息类。(4)Kind类:商品种类类。(5)State类:商品状态。在org.yeeku.model.base包中有五个抽象类分别是org.yeeku.model包中类的父类。每一个抽象类都对应了数据库中的一张表。3.5.4 设计数据

22、访问层数据访问层使用Hibernate来实现,根据数据库表和对象模型之间的对应关系,使用MyEclipse可以自动生成数据访问层的DAO类和XXX.hbm.xml文件。此处给出与AuctionUser类相关的AuctionUserDao类及其实现类AuctionUserDaoHirbernet和auctionuser.hbm.xml文件,并对其分析。AuctionUserDaoHirbernet类实现代码如下:package org.yeeku.dao;import java.util.List;import java.util.ArrayList;import java.util.Itera

23、tor;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import org.yeeku.model.*;import org.yeeku.business.*;public class AuctionUserDaoHibernate extends HibernateDaoSupport implements AuctionUserDao /* * 根据id查找用户 * param id 需要查找的用户id */ public AuctionUser get(Integer id) return (A

24、uctionUser)getHibernateTemplate().get(AuctionUser.class , id); /* * 增加用户 * param user 需要增加的用户 */ public void save(AuctionUser user) getHibernateTemplate().save(user); /* * 修改用户 * param user 需要修改的用户 */ public void update(AuctionUser user) getHibernateTemplate().saveOrUpdate(user); /* * 删除用户 * param i

25、d 需要删除的用户id */ public void delete(Integer id) getHibernateTemplate().delete(getHibernateTemplate().get(AuctionUser.class , id); /* * 删除用户 * param kind 需要删除的用户 */ public void delete(AuctionUser user) getHibernateTemplate().delete(user); /* * 查询全部用户 * return 获得全部用户 */ public List findAll() return getH

26、ibernateTemplate().find(from AuctionUser); /* * 根据用户名,密码查找用户 * param username 查询所需的用户名 * param pass 查询所需的密码 * return 用户名,密码对应的用户的id */ public Integer findUserByNameAndPass(String username , String pass) String args = username , pass; List ul = getHibernateTemplate().find(from AuctionUser au where au

27、.username = ? and au.userpass = ? , args); if (ul.size() = 1) AuctionUser au = (AuctionUser)ul.get(0); return (Integer)au.getId(); return null; 动作类将会根据此类中的方法进行数据的增、删、改及查等操作。其他数据访问层的xml文件和Dao类如下表:表3-5-2 对象模型与xml文件对应表对象模型数据库访问接口接口实现类配置文件BidBidDaoBidDaoHirbernateBid.hbm.xmlItemItemDaoItemDaoHirbernateI

28、tem.hbm.xmlKindKindDaoKindDaoHirbernatKind.hbm.xmlStateStateDaoStateDaoHirbernateState.hbm.xml在org.yeeku.service包中包含两个类,分别是接口AuctionManager及其实现类AuctionManagerImpl。此类的作用完成了系统的所有的逻辑功能。四 算法描述与实现4.1 实现浏览拍卖物品种类页面 (1)表示层实现通过查看商品种类界面,点击某一种类链接时,就直接将请求转发给动作viewItem.do处理。最后转向实际的主页面(页面名称为“viewItem.jsp”)即可。在str

29、uts-config.xml文件中的设置如下: 点击主页导航栏上浏览拍卖物品链接即可进入浏览物品种类页面。如图4-1所示。图4-1 浏览某类所有物品界面(2)实现业务逻辑浏览某一种类拍卖物品页面的显示涉及到得业务逻辑为org.yeeku.struts包下的ViewItemAction类,他用于从数据库中调出数据供页面显示。其中涉及商品类别的分类显示代码如下:import java.util.List;import org.yeeku.service.AuctionManager;import org.yeeku.exception.AuctionException;import org.yee

30、ku.struts.base.BaseAction;import org.yeeku.model.*;/* * author shm * version 1.0 * 处理商品显示动作 */public class ViewItemAction extends BaseAction public ViewItemAction() public ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.

31、HttpServletResponse response) throws AuctionException String id = request.getParameter(kindId);if (id = null | id.trim().equals() )request.setAttribute(errMsg , 您必须选择有效的种类);return mapping.findForward(input);elseString kind = mgr.getKind(Integer.parseInt(id) );List items = mgr.getItemsByKind(Integer.

32、parseInt(id) );request.setAttribute(kind , kind); request.setAttribute(items , items);return mapping.findForward(success);(3)实现数据访问层涉及到显示商品种类的数据访问层方法AuctionManager的getAllItem()方法,并在该方法中调用为ItemDao的findItemByKind(Integer kindId)方法,实现代码如下:public List getItemsByKind(int kindId) throws AuctionException t

33、ry List result = new ArrayList();List items = itemDao.findItemByKind(new Integer(kindId); for (Iterator it = items.iterator() ; it.hasNext() ; ) Item item = (Item)it.next(); ItemBean ib = new ItemBean(); initItem(ib,item); result.add(ib); return result; catch (Exception e) log.debug(e.getMessage();

34、throw new AuctionException(底层业务异常,请重新试); public List findItemByKind(Integer kindId) return getHibernateTemplate().find(from Item as i where i.kind.id = ? and i.itemState.id = 1 , kindId); 其中使用的HQL语句为“from Item as i where i.kind.id = ? and i.itemState.id = 1 , kindId”,即从kind数据表中取出所有记录。4.2 实现查看物品详细信息及

35、出价界面在显示同一种类所有物品的界面(viewItem.jsp),通过点击商品名称进入显示商品详细信息界面(ItemDetail.jsp)。此时可以对自己喜欢的商品进行出价。如图4-2所示。图4-2 商品详细信息界面此页面结合表达式语言及struts的标签库。处理此表单的动作为bid.do。它由Struts的Action类的子类addBidAction实现,在其中加入业务逻辑并将主页实际所需要的数据从数据库中提取出来保存到request对象或其他对象中,竞价成功后页面会通过viewBid.do跳转到查看自己竞标页面(页面名称为“viewBid.jsp”)。在struts-config.xml文

36、件中的设置如下: 4.3 实现查看竞得的商品界面(1)表示层实现点击查看竞得的物品链接时,就直接将请求转发给动作viewItemSu.do处理。最后转向实际的主页面(页面名称“viewItemSu.jsp”)。(2)实现业务逻辑在org.yeeku.schdule包下CheckWinner类继承了TimerTask,实现每一天自动检查竞拍获胜者,主要代码如下:package org.yeeku.schedule;import java.util.TimerTask;import org.yeeku.service.AuctionManager;import org.yeeku.exceptio

37、n.AuctionException;public class CheckWiner extends TimerTaskprivate AuctionManager mgr;public void setMgr(AuctionManager mgr)this.mgr = mgr;public void run()System.out.println(-);trymgr.updateWiner();catch (AuctionException ae)ae.printStackTrace();(3)实现数据访问层涉及到获得赢取者的数据访问层方法AuctionManager的updateWiner

38、()方法,并在该方法中调用为ItemDao的findItemByState (Integer stateId)方法,实现代码如下: /根据时间来修改物品的赢取者public void updateWiner()throws AuctionExceptionList itemList = itemDao.findItemByState(new Integer(1);for (int i = 0 ; i itemList.size() ; i+ )Item item = (Item)itemList.get(i);if (!item.getEndtime().after(new Date()Auc

39、tionUser au= bidDao.findUserByItemAndPrice(item.getId() , item.getMaxPrice();if (au != null)item.setWiner(au);item.setItemState(stateDao.get(new Integer(2);itemDao.save(item);elseitem.setItemState(stateDao.get(new Integer(3);itemDao.save(item);五 结论 整个设计主要使用了SSH技术。在设计网上拍卖系统时,需要对功能需求考虑完善。要求运用SSH技术对系统做

40、好整体构架,这对我来说是一个不小的难题。随着设计程度的不断深入,又遇到了一些早期没有想到的问题。特别是一些细节问题。为了解决这些问题,有时还要对几个模块进行大幅度的修改。在设计中,还需要进行细致的测试工作,以发现程序的错误和功能上的不足。由于时间和个人技术关系,本系统还有一些不足和值得改进的地方,比如说可以在系统中使用数据库缓冲池技术,这样可以减少了数据库的连接时间并减轻服务器的负担。再比如说查询功能,可以进行按关键字查询,这样系统的灵活性就会有明显的提高。通过这次课程设计,提高了我在系统整体设计上的能力,增长了分析、解决问题的经验,对一些知识有了更深一步的掌握。可以说,这次课程设计既锻炼了我

41、动脑分析问题的能力,又锻炼了我动手解决实际问题的能力,这将对我以后的学习起到不可估量的作用。通过课程设计这次磨砺,我的能力也提高了。所以它对于我们来说有着十分重要的意义。我会运用从中得到的宝贵经验来指导我今后的学习和工作,不断的实践,不断地学习,让自己变得更加充实自己,更适合于软件行业发展的需要。附录:源代码商品分类区动态实现代码如下: 种类名 a href=viewItem.do kindId= 种类描述 查看某种类所有商品界面主要代码如下: 当前种类是: 物品名 起拍时间 最高价格 所有者 物品备注 ahref=viewDetail.do?itemId= 商品类别的分类显示代码如下:imp

42、ort java.util.List;import org.yeeku.service.AuctionManager;import org.yeeku.exception.AuctionException;import org.yeeku.struts.base.BaseAction;import org.yeeku.model.*;/* * author shm * version 1.0 * 处理商品显示动作 */public class ViewItemAction extends BaseAction public ViewItemAction() public ActionForwa

43、rd execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws AuctionException String id = request.getParameter(kindId);if (id = null | id.trim().equals() )request.setAttribute(errMsg , 您必须选择有效的种类);return map

44、ping.findForward(input);elseString kind = mgr.getKind(Integer.parseInt(id) );List items = mgr.getItemsByKind(Integer.parseInt(id) );request.setAttribute(kind , kind); request.setAttribute(items , items);return mapping.findForward(success); 商品竞拍界面代码如下: 竞拍价:input type=hidden name=itemId value=/input type=hidden name=maxPrice value=/ 验证码: 验证码: td bgcolor=#FFFFFF

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!