订餐系统javaee课程设计_第1页
订餐系统javaee课程设计_第2页
订餐系统javaee课程设计_第3页
订餐系统javaee课程设计_第4页
订餐系统javaee课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

网上订餐系统课程设计的目的当计算机与互联网飞速的发展和使用,越来越多的公司、单位和个人通过网站提供服务、公布信息、交流知识等使互联网越来越方便我们的生活。在Web开发中,Java语言以其可扩展性、灵活性、可靠性和跨平台等特点,成为进行web编程的首选。更重要的是,开源社区提供了一大批功能强大的框架技术,Structs、Spring、Hibernate等,利用这些技术使我们更高效的维护和建立我们自己的网站同时也让网站的开发更加方便和快捷。在这学期课堂上所学到的Java知识,能够为我们解决一些实际问题的能力。利用一周时间,使用Java框架技术完成网上订餐系统的分析设计和开发。有了网上订餐系统,人们可以在家随意挑选自己喜爱的食物。现在正是经济全球化的时代,利用网络,我们可以浏览不同地区甚至不同国家的商品,这也改变着人们的消费观,网上订餐系统正是符合了这一趋势的发展,越来越多的人能够不出门就能吃上美味可口的饭菜。设计方案论证2.1需求分析随着科技的进步、计算机技术的发展,越来越多的人选择用网络来满足自己的需求,网上订餐的出现,正是体现了这一点。不少商家都把眼观放在了网上销售这一方面,把实体销售渐渐转变为网上销售。现在人们越来越重视节省时间,提高效率,不管是消费者还是商家都如此,有了网上订餐系统,可以让订餐者与餐厅进行互动,足不出户,选择自己喜爱的菜品,对与商家而言,这样做节省了成本,不需要为实体店的地址而烦恼,这样做对于商家和消费者来说无疑是双赢的。2.2系统总体设计本系统为了便于各种操作,采用多页面的模式。用户可在不同网页进行相应操作:⑴在管理员信息表中,包括的数据项:帐号,密码,权限,注册时间。⑵在订餐客户信息表中,包括的数据项:用户编号,用户名,密码,姓名,电话,身份证,注册时间等。⑶在菜品信息表中,包括的数据项:菜品编号,菜品名称,菜品价格,内容,类别:添加时间等,每道菜都有它的菜名、介绍、价格等信息,为了让菜品的这些信息在页面有个很好的呈现,我们把这些信息存入菜品信息表中进行维护。。⑷在定单列表中,包括的数据项:定单列表编号,用户名,菜品编号,下单时间等。⑸在购物车信息,包括的数据项:购物车信息唯一标识,食品id,订餐用户名,添加时间等。当顾客选购菜品放入购物车时,我们会把这些菜品的id、数量、价格记录存入订单关联表中,通过订单关联表中的信息算出会员将要支付的金额,再通过菜品id这个主健把相应的信息存入个人订单这张表中进行维护。⑹为了有效地管理菜品,在新增菜品时加了一个分类属性,在此需要建张分类表进行维护,系统总体功能图如图1所示。图1系统功能框图2.3系统流程设计课程设计信息管理系统,包括用户注册、管理员登录、菜品查询、菜品详单等。任务执行的流程如图2所示。

图2系统流程图2.4数据库设计该系统是借助MySQL数据库对数据进行统一管理的。在网上订餐系统中需MySQL创建数据库“订餐管理系统”,MySQL数据库中数据的操作可以分为四种不同的类型,分别是添加、删除、查询和修改。该数据库包含的表有菜品信息表、管理员表、订单表等。2.4.1菜品信息表菜品信息表,记录系统中的菜品信息。把汉字转化为汉语拼音,作为字段名。把ID设为主键,且不为空,bianhao、mingcheng、leibie、tupian、jianjie、jiage、faburen、addtime与之相关联,如表1所示。

表1菜品信息表字段名类型长度是否为主键是否为空说明idint11是否菜品编号bianhaovarchar20否是菜品编码mingchengvarchar50否是菜品名称leibievarchar20否是菜品类别tupianvarchar50否是菜品图片jianjievarchar50否是菜品简介faburenvarchar30否是发布人2.4.2管理员信息表管理员信息表,存储系统中的管理员信息。把汉字转化为汉语拼音,作为字段名。其中,ID设置为int型,并设为主键,且不能为空;username、pwd设置为varchar型,如表2所示。表2管理员信息表字段名类型长度是否为主键是否为空说明IdInt10是否用户编号usernameVarchar30否是用户姓名PwdVarchar30否是用户密码2.4.3用户注册信息表用户注册信息表,记录系统中的注册用户信息。把汉字转化为汉语拼音,作为字段名。把ID设为主键,且不为空,zhanghao、mima、ximgming、diqu、zhaopian、issh与之相关联。表3用户注册信息表字段名类型长度是否为主键是否为空说明idint11是否编号Zhanghaovarchar30否是账号mimavarchar20否是密码Xingmingvarchar30否是姓名Diquvarchar50否是地区Zhaopianvarchar50否是照片Isshvarchar10否是备注2.5主要功能用struts框架中的异常处理机制,本系统自定义了异常类SystemException和异常处理类SystemExceptionHandler。在MessageRperties中定义需要在Dao中抛出异常时声明的内容。在struts-config.xml中配置公共异常处理文件<global-exceptions>,加入资源文件<message-resourcesparameter="MessageResources"/>在Dao中抛出自定义异常。并在公共异常处理页面中使用struts标签<html:errors/>进行异常信息显示。顾客模块为封装的异常跳转页面如下图3所示:美美健厅发情提示德:此功能正在增护中….由近回一和诱讹解“m-r-LiH^iiaut而戛,-、虹丁图3在struts-config.xml文件中的配置信息如下:<global-exceptions><exceptionkey="errors.detail”type="com.hhq.util.SystemException”handler="com.hhq.util.SystemExceptionHandler”path="/jsp/clientError.jsp"/></global-exceptions>在配置文件中可见,异常是以键值对的方式在struts1.1中存放,type属性是指异常类,handler属性是指异常的处理类,path属性是指出现异常后跳转的错误页面。设计结果与分析3.1订餐系统登录界面设计该系统通过输入用户名和密码进行登录,登录界面如图4所示。

美釜容上IT曾系婚i-ianiwirjpffftK*4is耐曲ifcja容Sfltsi卜旁业m\Hm千ci督厅管理一.员晶统图4登录界面督厅管理一.员晶统功能描述:顾客登陆管理,包括登陆时管理员需要输入用户名、密码、验证码、也可已选择是否记录用户名和密码以便以后登录。如果管理员选择记住用户名和密码则下一次登陆的时候只需要输入验证码,即可直接登录。登录页面控制模块Login相关代码如下:login.jsp:<%@pagelanguage="java”import="java.util.*,com.actions.*”pageEncoding="gbk”%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@taglibprefix="s"uri="/struts-tags"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>登录页面</title><styletype="text/css"></style>/head><body><divalign="center"><br><spanclass="STYLE2">订餐系统</span></div><divalign="center"><s:formaction="login"><s:textfieldname="userName"label="用户名”value=""></s:textfield><s:passwordname="password"label="密码”value=""></s:password><divalign="center"><s:submitvalue="登录"/><s:propertyvalue="resultMSG"/></div></s:form></div></body></html>publicclassALogin(publicvoiddoLogin(HashtableinputData,HashtableoutputData,HttpSessionmySession)throwsException{〃获取输入信息StringsUsername=(String)inputData.get("username");StringsPassword=(String)inputData.get("password");//校验用户输入信息LUserlUser=(LUser)GlobalObjectProvider.getLogicService(CommonConst.LOGIC_KEY_USER);〃如果对应的类没有的话,报错并返回login页面if(lUser==null){thrownewException("用户名或密码错误请重新输入!");}〃获取用户信息Useruserinfo=lUser.getUserInfo(sUsername,sPassword);if(userinfo==null){outputData.put("pageid",CommonConst.VIEWID_LOGIN);outputData.put("errMsg”,”用户名密码检杳失败!请重新输入。”);outputData.put("username",sUsername);return;}Else{outputData.put("pageid”,CommonConst.VIEWID_MENU);//往session中设置用户信息mySession.setAttribute("loginUser”,userInfo);return;}}}

3.2订餐系统主页面模块设计M煤目旬*.M煤目旬*.用户可以通过订餐系统主页面进行订餐如图5所示。1美美餐厅网上订餐管理系统建母it居&4£:Oi的房,拆咛哈蜀怕格:同味ft*四巨523回恂酵.AmmJr功能描述:顾客登陆管理,包括登陆时可以以游客或者会员的两种方式进行订餐操作,如果是会员登陆,先前需要录入用户名、密码、验证码,以便系统确认登陆成功。会员个人信息管理,会员可以修改个人资料(如:电话,地址等),也可以查看订餐信息,了解当前订餐的动态(详见会员登录流程图)。选购美食,作为顾客,在挑选美食的过程中,可以直接将称心的美食选进购物车中也可通过一系列查询,进一步了解后,再选择美食(详见选购美食流程图)。选购美食部分代码如下://得到在Spring中动态注入的Service层对象//得到日志对象logpublicActionForwardqueryForAll(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)(Stringforward="first";

if(request.getParameter("user").equals("manager")){forward="queryDishes";}Foodfood=newFood();List<Food>foodList=null;List<Food>topList=null;intallRecorders=foodService.queryForAllRecorders(food);〃当不是第一次登陆页面时if(request.getParameter("cp")!=null&&request.getParameter("ls")!=null){intcurrentPage=Integer.parseInt(request.getParameter("cp"));intlineSize=Integer.parseInt(request.getParameter("ls"));if(currentPage>1&&lineSize>allRecorders){currentPage=1;}food.setCurrentPage(currentPage);food.setLineSize(lineSize);foodList=foodService.queryForFood(food);}else{//第一次来到页面,top5和食品图片等信息foodList=foodService.queryForFood();}intpageSize=(allRecorders+food.getLineSize()-1)/food.getLineSize();request.setAttribute("pageSize",pageSize);request.setAttribute("allRecorders",allRecorders);topList=foodService.queryForTop();〃下拉列表中的信息List<FoodAttribute>foodAttributeList=foodService.querySelectInfo();〃传给top10的listrequest.setAttribute("topList",topList);〃传给视频图片等信息的listrequest.setAttribute("foodList",foodList);〃传给下拉列表的listrequest.setAttribute("foodAttributeList",foodAttributeList);returnmapping.findForward(forward);}首先判断是从哪个页面跳到到这里来调用这一方法,随着调用者的不同,方法也会将最后的传输到不同的页面中去。然后查询出所有美食的记录数,再对是否是第一次登录到此页面进行判断,以为,第一次登录时当前页数和每页显示行数是默认的,而此后登录到此页面时有可能发生改变,最后再用Spring中动态注入的服务层中食品类的对象调用查询食品信息的方法,再将结果通过request对象传输到对应的页面中去。publicStringgetFoodInfo(Stringsrc)(〃图片绝对路径Stringpicsrc=null;StringfoodInfo=null;〃只保留相对路径,将绝对路径去掉Stringtemp[]=src.split("/");for(inti=0;i<temp.length;i++)(//得到图片的相对路径picsrc=temp[temp.length-1];}Foodfd=foodDAO.query(picsrc);foodInfo=fd.getFoodDescription();returnfoodInfo;}此方法要在jsp页面中有DWR的对象调用,其中得到的路径是图片在服务器上的绝对路径,首先用String类中的split方法将其截成数据库中所存入得图片路径形式,然后再作为查询条件在数据库中查询,查询出美食的信息。然后DWR对象会将查询出来的信息作为jsp页面中回调函数的参数传回页面端。3.3美食信息添加功能模块功能描述:对菜品信息进行维护,包括:⑴添加菜品,添加菜品图品,价格,是否是推荐菜品等。⑵菜品过季下架,用于菜品原料缺少或菜品过季等情况,进行逻辑删除。⑶菜品的查询,可以按菜品的名称、价格、销售量、是否是推荐菜品进行查询,默认是推荐菜品查询。⑷修改维护菜品信息,主要针对菜品原料的价格更变菜品的价格及菜品是打折时的价格更变,如图6所示。图6美食添加中图片上传功能代码如下:/**图片上传**/……/定义局部变量try{IPTimeStampits=newIPTimeStamp(request.getRemoteAddr());〃自动为上传图片命名,以确定图片的唯一性,以防覆盖foodPictureAddr=its.getIPTimeStampRand()+".”+its.getLastName(file.getFileName());stream=file.getInputStream();filePath=this.getServlet().getServletContext().getRealPath("/images/food")+"/"+foodPictureAddr;bos=newFileOutputStream(filePath);intbytesRead=0;byte[]buffer=newbyte[8192];while((bytesRead=stream.read(buffer,0,8192))!=-1)(bos.write(buffer,0,bytesRead);}}catch(Exceptione)(e.printStackTrace();}finally(try{bos.close();stream.close();}catch(IOExceptione){e.printStackTrace();}catch(Exceptione){}}file.destroy();/**图片上传结束**/首先,有系统自动未上传图片命名,防止覆盖,然后通过字符串拼接的方式作为图片的地址存入数据库(例如:图片名称叫aaa,扩展名为jpg,在存入数据库中的地址就是相对地址系统自动生成的名字.jpg),在通过输入输出流的方式将图片上传到服务器上。即由从form中得到的图片路径以流的方式服务器上的一本系统自动并命好的文件上,最后关闭输入流和输入流,并将文件损毁。另附图片自动命名类的部分代码如下〃为了得到不重复的图片名称(首先用数字零给本机IP地址的点补位,然后再加上当前时间(精确到毫秒),最后再加上三个随机数)……/定义局部变量publicStringgetIPTimeStampRand()(StringBufferbuf=newStringBuffer();if(ip!=null)(Stringstr[]=this.ip.split("\\.”);for(inti=0;i<str.length;i++)(buf.append(this.addZero(str[i],3));}}buf.append(this.getTimeStamp());Randomrand=newRandom();for(inti=0;i<3;i++)(buf.append(rand.nextInt(10));}returnbuf.toString();}ip已经在实例化自动命名类对象是赋值,即是本机的ip地址,将ip地址通过“.”字符来分开有字符串数组接收,再将每部分未满三位的进行补零操作,再加上时间戳,最后加上三位随机数,再将StringBuffer转换成String对象最后得到的内容既是系统为图片自动赋好的名字。另附美食类别处理代码如下:if((!attributeId.trim().equals("0"))&&!(attributeId.trim().equals(""))){food.setFoodTypeId(attributeId);}else{//新类别foodAttributeValue=foodService.queryFoodAttributeId();foodAttributeId=foodAttributeValue.getAttributeId();try{〃调用bean中的changeAttributeId方法将foodAttributeId转换成foodattribute表中的格式attributeid=foodAttributeValue.changeAttributeId(foodAttributeId);}catch(Exceptione){//超过3位,提示减少不必要的食品类型,或者联系hhqe.printStackTrace();log.error("系统添加食品类别信息过多!”,e);thrownewSystemException("foodattributelargenum.error”,e);}foodattribute=newFoodAttribute();foodattribute.setAttributeId(attributeid);foodattribute.setAttributeName(newAttributeName);//将新类别向属性表中插值try{isAdd=foodService.addFoodAttribute(foodattribute);}catch(Exceptione){e.printStackTrace();log.error("系统添加食品类别信息时错误!”,e);thrownewSystemException("foodattributeadd.error”,e);}if(isAdd==true){food.setFoodTypeId(attributeid);}}基于美食的类别操作的可添加性,则需要判断是在文本框中填写的美食内容(即:新类别),还是在下拉菜单中选择的内容(即:老类别),如果是老类别则可以利用原有的类别编号直接填入数据库中。而如果是新类别则需要生成新的类别编号,再将类别编号填入到数据库中。3.4订单查询功能描述:对顾客的购物车所下的订单进行管理,包括:⑴查看订单,可按订单号、用户姓名进行查询管理员可以查看到当前餐厅的订单,并可以进行打印订单以确认发货。⑵修改订单,管理员对不在自己店范围内的订单可进行手动或者可以在订单状态为等待中时为顾客修改菜品的数量及品种,若订单状态为以下单则不能为顾客修改。⑶打印订单,若打印订单表示以确认发货,并自动修改订单状态为已发送。⑷取消订单,若顾客不方便上网打电话要取消订餐的话,管理员查看订单状态若为已下单则不能为顾客取消订单,若订单状态在等待中,则可以为顾客取消订单,如图7

所示。管理员null:您好感谢翰使用,安全退出订单查询待址理订旦己诵,打里已无变订单E有打单美除曾理会H&S冒理豆信且蹴曹已摇点订单订单号订单总所示。管理员null:您好感谢翰使用,安全退出订单查询待址理订旦己诵,打里已无变订单E有打单美除曾理会H&S冒理豆信且蹴曹已摇点订单订单号订单总价U卷阿同废条电诂订单状番正揉作241大乐区as。302010-04-2809:292812已完成asd查看订单详置z&l大乐区hh2010-04-2814;54J022已弄成sdt查看订单洋231犬乐区岌大水4412010-04-3011:50:49121312313己完成岌大水查看订单详:首页J[上一页|[予一页]尾页第1知共项图7订单信息查询页面查询订单部分代码如下:<selectid="getOrderBySAndUsBefore”parameterClass="com.hhq.domain.Order"resultClass="com.hhq.domain.Order">SELECTtemp.*FROM(selecto.orderidasorderId,to_char(o.ordertime,'yyyy-MM-ddHH24:mi:ss')asorderTime,o.receivernameasreceiverName,o.receiveraddrasreceiverAddr,o.receivertelasreceiverTel,o.orderallpriceasorderAllPrice,a.attributenameasorderStatus,o.nodesasnodes,rownumasrnfromordertableo,attributetablea

whereo.orderstatusid=a.attributeid

ando.orderstatusidnotin('06001','06002')

ando.memberusernamelike#memberUserName#

and<![CDATA[rownum<=#currentPage#*#pageSize#]]>)tempWHERE<![CDATA[temp.rn>(#currentPage#-1)*#pageSize#]]></select>由于iBatis框架多持久层进行封装,所以SQL语句在写法上会有些不同,针对物理分页这一要求,采用由rownum来控制输出的列数,在查询结果上,也用到了oracle自己的函数to-char来对日期类型进行处理。其中,在select标签中,id属性对应在DAO的实现类中对象smctemplate所调用的queryForList方法的第一个参数,借此找到此SQL,来进行查询操作。resultClass与parameterClass分别表示,结果类的类型和参数类的类型,其中还有标签<![CDATA]>MiBatis中使用rownum来进行分页操作所必须应用到的。而如果在页面上点击“查看订单详情”则会弹出一个模态对话框,该对话框由两部分组成,上半部分是美食的信息,有美食名称、美食份数、美食单价、美食总价四个属性,而其中有“沿着此处剪开”的字样,下半部分则是顾客的信息有订单号、订单状态、收货人、地址、联系电话、总价、支付方式、订单时间、备注信息几项组成。设计体会经过一段时间的设计和开发,网上订餐系统基本开发完毕。其功能基本符合大众需求,能够完成菜肴的更新,菜肴的查询,菜肴的下单,后台的管理等各种功能但是由于课程设计时间较短和本人水平所限,虽然谢老师给予了我很多的指导,但是该系统还有许多不尽如人意的地方,对于Java的框架技术我还需要深入的进行学习。如今信息化的普及,要想使该系统能在海量的网上订餐系统中脱颖而出,以我们的编写能力,及我们对需求的分析和了解以及业务上的熟练程度都显得远远的不够。还有一些后续工作需要完成,下一步的改进一定做到层次更清晰,功能划分更明确,以实现更好的扩展性和重用性。参考文献[1]严璋鹏.基于B-S的学生学籍管理系统的设计与实现[J].价值工程.2013.19:33-41⑵李刚.轻量级J2EE企业应用实战一Struts+Spring+Hibernate整合开发[M].北京:电子工业出版社,2011.3:46-75贾素玲,王强.JSP应用开发技术[M].北京:清华大学出版社,2011.7:35-76王海涛,贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011,37(9):113.沈应逵.JavaWeb数据库系统应用开发与实例M].北京:人民邮电出版社,2009.9:102-134.胡涛涛.基于MVC模式的课程管理系统的功能设计[J].山西煤炭管理干部学院学报,2013,04:140-142.任广财.基于JSP的高校学生工作管理系统的设计与开发[J].科技经济市场,2013,12:119-120.施阳,张海燕,戴德伟.基于JavaEE的毕业设计管理系统设计与实现[J].软件导刊,2015,02:86-88.赵春生.浅谈JavaEE程序设计课程教学改革[J].科教导刊(中旬刊),2014,08:119-120.刘晓华,张健,周慧贞.JSP应用开发详解(第三版)[M].北京:电子工业出版社,2007.16.附录:publicclassCommonServletextendsHttpServlet{〃保存各页面Id对应的action类的对象privateHashtablehPageHandler=newHashtable();〃配置文件的存放位置privateJXPathContextconfigContext=null;publicvoidinit(){〃取得配置文件,并获得其中的dom元素StringfilePath=getInitParameter("configXML");StringfileRealPath=getServletContext().getRealPath(filePath);〃尝试建立配置文件的DOMtry{org.jdom.input.SAXBuilderbuilder=newSAXBuilder();org.jdom.DocumentpDoc=builder.build(fileRealPath);configContext=JXPathContext.newContext(pDoc);GlobalObjectProvider.init(configContext);}catch(Exceptione){System.out.println("Servlet初始化失败!");}〃初始化共通类以获取页面信息CommonConst.init();}〃每一种动作第一次执行的时候,初始化对应的类publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{〃设置提交表单的中文编码request.setCharacterEncoding("GBK");HttpSessionmySession=request.getSession(true);〃得到用户输入信息StringsPageId=request.getParameter("pageId");StringsActionId=request.getParameter("actionId");if(sPageId==null||sPageId.equals("")||sActionId==null||sActionId.equals("")){//非法进入页面,跳转到首页mySession.invalidate();response.sendRedirect("../login.jsp");return;}〃如果非法进入页面(登录页面除外)if(!sPageId.equals("S001")&&mySession.getAttribute("loginUser")==null){//非法进入页面,跳转到首页mySession.invalidate();response.sendRedirect("../login.jsp");return;}try{〃根据pageId获得处理对象,如果没有则创建一个对象ObjectoActionObject=hPageHandler.get(sPageId);if(oActionObject==null){〃根据配置文件创建一个新对象StringsClassName=(String)configContext.getValue("ch08-config/page[@id="'+sPageId+"']/@className");oActionObject=Class.forName(sClassName).newInstance();hPageHandler.put(sPageId,oActionObject);}〃取得方法名StringsMethodName=(String)configContext.getValue(ch08-config/page[@id='n+sPageId+n']/action[@id='n+sActionId+n']/@methodNamen);〃生成对应的参数,并调用对应对象的对应方法//inputData是根据传入的参数做成的HashtableinputData=newHashtable();Enumerationparams=request.getParameterNames();while(params.hasMoreElements()){StringsParaName=(String)params.nextElement();inputData.put(sParaName,request.getParameter(sParaName));}//outputData是下一个页面的值域,在此只是被初始化HashtableoutputData=newHashtable();〃生成参数列表Class[]paraType={Class.forName("java.util.Hashtable"),Class.forName("java.util.Hashtable"),Class.forName("javax.servlet.http.HttpSession")};Object[]paraObj={i

温馨提示

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

评论

0/150

提交评论