毕业设计(论文)-美佳家居进销存论文.doc_第1页
毕业设计(论文)-美佳家居进销存论文.doc_第2页
毕业设计(论文)-美佳家居进销存论文.doc_第3页
毕业设计(论文)-美佳家居进销存论文.doc_第4页
毕业设计(论文)-美佳家居进销存论文.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

天津大学2015届本科生毕业设计第一章 绪论1.1 课题意义伴随着计算机的蓬勃发展,各种电子管理系统作为一种新的管理形式正以其高效、低成本的优势,逐步取代大量的重复人力劳动而成为新兴的管理模式和理念。随着商品的多样化和超市的大型化,电子进销存管理系统已经是各种企业必不可少的工具之一。进、销、存是企业财务管理工作中十分重要的三个方面,但很多企业因经营思想不能与时俱进,使进销存管理流于繁琐的形式,变成了简单的记账过程,不能实现应有的效能7。目前,进销存管理系统基本已经普及,功能也已经多样化和智能化,可以说几乎以往传统的纸质加人工记录的功能都可以在电子进销存管理系统上实现高效、准确的操作。进销存管理系统的应用,有助于促进企业管理不断完善,同时可以扩大了企业的规模,而且还可以减少经营成本,提高工作效率。对于整个市场来说,这种进销存管理系统可在线上和线下以非常高的效率和准确率来对货物进行管理。1.2 设计工具该系统开发使用MVC设计思想和SSH(Spring+Struts2+Hibernate)技术,在MVC模式中,分层可以实现低耦合,有助于管理复杂的应用程序。而在SSH技术中,Spring是一个管理容器,Struts2负责调用业务逻辑Service层,Hibernate用来做持久层9。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是Eclipse开源社区的领导者Genuitec发布的一个十分优秀的用于开发Java, J2EE的Eclipse插件集合。MyEclipse是对Eclipse IDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts2, JSP, CSS, Javascript和Hibernate等。Tomcat是Apache软件基金会的Jakarta项目组的一个核心项目,是一个免费的开源代码的Web应用服务器,属于轻量级应用服务器。它可以为HTML页面服务,是JSP和Servlet容器,在中小型系统和并发访问用户不是很多的场合下被普遍使用。1.3 可行性分析在项目的分析工作开始之前,要先进行可行性分析和研究。可行性是指“可能性”和“必要性”,是在对任何工程项目投入力量之前必须进行的工作。“可能性”指在现有条件下,企业开发系统是否可以实现,是否具备必要条件。“必要性”是指企业开发系统是否有必要。进行可行性研究的目的是以最小的代价在短时间内确定软件项目是否值得开发,是否可以实现14。下面简单地从技术可行性和经济可行性两方面进行分析。技术可行性分析: Java语言作为目前应用广泛的程序开发语言之一,以其良好的跨平台性、面向对象特性受到越来越多开发人员的青睐1。特别是在Web开发方面,各种Java Web开发技术层出不穷。例如Struts、Hibernate、Spring等开源框架的出现。不断丰富着Java的世界8 15。该系统使用SSH技术进行实现,其安全性、跨平台等特性都非常的强大。使用Myeclipse编写代码,后台数据库使用MySQL数据库,以保证数据的安全和执行高效。经济可行性分析:从投入的人力,财力与物力来讲是非常之小的。但是从企业的长远发展来讲此系统是很必要的,它扩大了商家的市场影响力,而且可以减少经营成本,提高工作效率。由此可见,美佳家居进销存管理系统的设计具有可行性。1.4 需求分析可行性研究完成后,就要进行需求分析。需求分析的任务是对系统的业务内容进行进一步的调查和分析,确定企业的需求并把得到的明确需求反映到开发的系统中4。需要由上而下、从粗到细、由表及里地对现行业务进行详细调查。并在此基础上进行分析,为系统设计阶段提供依据。根据需求分析阶段的结果,美家家居进销存管理系统业务处理上应满足以下需求:(1)系统架构清晰、界面友好美观,系统操作灵活、简便,实用性强2 3;(2)对数据进行自动处理,尽量减少人工干预;(3)货物信息管理灵活、方便、快捷、准确;(4)权限划分严格,不会出现越界操作;(5)基础模块的管理。1.5 系统功能介绍通过对一些典型的企业级系统管理软件的考察、分析,并结合企业要求,本系统应具有以下功能:(1)统一友好的界面,保证系统的易用性;(2)数据库设置合理安全。防止出现用户信息泄露,账号被盗现象;(3)提供多种查询方式,使信息查询灵活、方便、准确; (4)严格的权限划分和校验,不同角色的员工可以操作的资源不同。(5)实现商品的进销存管理。(6)实现仓库的操作明细和日志明细。(7)实现对供应商的客户关系管理。 第二章 系统设计系统设计是根据系统分析阶段所提出的新系统的逻辑模型,建立起新系统的模块结构。一般包括总体设计、详细设计、数据库设计。总体设计要确定计算机系统的模块组成;数据库设计包括对数据库数据结构的设计以及数据编码设计。系统设计阶段是开发系统的关键环节,因此系统设计要满足系统逻辑模型的功能要求,并以尽可能提高系统的性能为目标。2.1 项目规划美佳家居进销存管理系统是ERP中的一个子模块,同时还有一些数据需要CRM模块的配合,单独的美家家居进销存系统实现了中小型企业的人员、部门等基础信息的管理。该系统分为入库和出库两条主线流程。入库流程包括采购管理模块、商品运输模块以及商品入库模块。出库流程包括商品出库模块、库存查询模块以及出入库操作明细模块。(1)采购管理模块采购管理模块又分为新建采购订单和采购订单审批两个功能。当采购专员按照需求生成采购订单之后,采购部主管级人员可以审核订单(订单的新建和审核必须为不同角色),分为驳回和通过两个状态。被驳回的订单永久作废,通过的订单则进入商品运输流程。(2)商品运输模块商品运输模块又分为运输任务指派和运输任务查询两个功能。运输部主管级人员可以将通过的订单指派给某个运输专员负责(也可以指派给自己),当指派完成后订单状态修改为采购中。运输专员或运输部主管级人员可以查看自己当前的任务。运输完成的订单则进入商品入库流程。(3)商品入库模块商品入库模块实现了商品的分阶段分库房的入库。每个库房存放专门的商品类别,并且有最大的入库数量。(4)商品出库模块商品出库模块可以按照具体的商品按照库房存储量出库。(5) 库存查询模块库存查询模块可以查询每个库房存放的商品以及存货量。(6) 出入库操作明细模块出入库操作明细模块可以查询入库和出库的每一次具体操作,包括时间、操作人、商品、数量等。2.2 功能框图图2-1 系统基础模块框架图图2-2 系统核心模块框架图2.3 设计目标对于典型的企业级管理系统,必须要满足使用方便、权限分明、数据准确等设计需求6。本系统在设计时应该满足以下几个要求:(1)界面设计简洁友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。(2)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。(3)简便的操作流程。流程粒度尽可能小。2.4 开发及运行环境Web服务器:Tomcat 7.0 操作系统:Windows XP/7/8开发工具:MyEclipse 10数据库:MySQL 5.6CPU:600MHz以上的处理器内存:256MB以上浏览器:火狐浏览器及IE6.0以上版本显示器屏幕分辨率:最佳效果1366*768像素2.5 数据库设计 本系统采用MySQL数据库5,系统数据库名为erpdb,数据库erpdb中包括17张数据表。下面分别给出数据表概要说明、数据表关系概要说明及主要数据表的结构。1.数据表概要说明数据表树型结构图如图2-3所示,该数据表树型结构图包含系统所有数据表。图2-3 数据表树形结构图2.主要数据表的结构(1)tbl_dep(部门信息表)部门信息表主要用来保存部门信息,其结构如表2-1所示。表2-1 表tbl_dep的结构字段名字段类型字段宽度小数位数能否为NULLUuidBigint20否nameVarchar30否teleVarchar30否(2)tbl_emp(员工信息表)员工信息表主要用来保存员工的相关信息,其结构如表2-2所示。表2-2 表tbl_emp的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否userNameVarchar15否pwdVarchar32否nameVarchar28否emailVarchar255否teleVarchar30否genderInt1否addressVarchar255否birthdayBigint20否depUuidBigint20否lastLoginTimeBigint20否lastLoginIpVarchar255否loginTimesint11否(3)tbl_emp_role(员工-角色关联表)员工-角色信息表用来保存员工和角色的关联关系信息,其结构如表2-3所示。表2-3 表tbl_emp_role的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否empUuidBigint20否roleUuidBigint20否(4)tbl_goods(商品信息表)商品信息表主要用来存储商品信息,其结构如表2-4所示。表2-4 表tbl_goods的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否nameVarchar30否originVarchar30否producerVarchar30否unitVarchar30否inPriceDouble102否outPriceDouble102是goodsTypeUuidBigint20否(5)tbl_goodstype(商品类别信息表)商品类别信息表用来保存商品类别信息,其结构如表2-5所示。表2-5 表tbl_goodstype的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否nameVarchar30否supplierUuidBigint20否(6)tbl_menu(菜单信息表)菜单信息表用来保存操作菜单的详细信息。其结构如表2-6所示。表2-6 表tbl_menu的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否nameVarchar30否urlVarchar255否parentUuidBigint20否(7)tbl_order(订单信息表)订单信息表主要用来保存订单信息,其结构如表2-7所示。表2-7 表tbl_order的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否orderNumVarchar30否createrBigint20否createTimeBigint20否checkTimeBigint20是endTimeBigint20是orderTypeInt1否TypeInt3否CheckerBigint20是completerBigint20是supplierUuidBigint20否totalNumInt11否totalPriceDouble102否(8)tbl_orderdetail(订单明细表)订单明细表主要用来保存订单明细信息,其结构如表2-8所示。表2-8 表tbl_orderdetail的结构字段名字段类型字段宽度小数位数能否为NULLUuidBigint20否orderUuidBigint20否goodsUuidBigint20否numInt11否PriceDouble102否surplusInt11否(9)tbl_res(资源信息表)资源信息表主要用来保存资源信息,其结构如表2-9所示。表2-9 表tbl_res的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否nameVarchar30否urlVarchar255否(10)tbl_role(角色信息表)角色信息表主要用来保存角色信息,其结构如表2-10所示。表2-10 表tbl_role的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否NameVarchar30否codeVarchar30否(11)tbl_role_menu(角色-资源关联表)角色-资源关联表用来保存角色和资源关联关系信息,其结构如表2-11所示。表2-11 表tbl_role_menu的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否roleUuidBigint20否menuUuidBigint20否(12)tbl_role_res(角色-资源关联表)角色-资源关联表用来保存角色和资源关联关系信息,其结构如表2-12所示。表2-12 表tbl_role_res的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否resUuidBigint20否roleUuidBigint20否(13)tbl_stock(库存表)库存表用来保存商品的存库信息,其结构如表2-13所示。表2-13 表tbl_stock的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否goodsUuidBigint20否supplierUuidBigint20否goodsTypeUuidBigint20否numInt11否(14)tbl_store(仓库信息表)仓库信息表用来保存仓库的信息,其结构如表2-14所示。表2-14 表tbl_store的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否empUuidBigint20否goodsTypeUuidBigint20否nameVarchar30否addressVarchar255否numInt11否inNumInt11否(15)tbl_storedetail(入库明细表)入库明细表用来保存商品的入库相关信息,其结构如表2-15所示。表2-15 表tbl_storedetail的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否goodsUuidBigint20否supplierUuidBigint20否goodsTypeUuidBigint20否empUuidBigint20否numInt11否operTimeBigint20否inPriceDouble102否typeInt1否(16)tbl_storeoper(仓库操作表)仓库操作表用来保存出入库的操作信息,其结构如表2-16所示。表2-16 表tbl_storeoper的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否goodsUuidBigint20否supplierUuidBigint20否goodsTypeUuidBigint20否empUuidBigint20否numInt11否operTimeBigint20否inPriceDouble102否typeInt1否outPriceDouble102是emrVarchar30是telVarchar30是(17)tbl_supplier(供应商信息表)供应商信息表用来保存供应商的信息,其结构如表2-17所示。表2-17 表tbl_supplier的结构字段名字段类型字段宽度小数位数能否为NULLuuidBigint20否nameVarchar30否addressVarchar30否contactVarchar30否telVarchar30否needsInt1否第三章 系统实现3.1 编写JavaBean本系统采用MVC设计思想,SSH(Spring+Struts+Hibernate)技术。JavaBean与DAO在整个系统开发中处于数据库与页面之间,负责数据的处理。当一个系统的分析工作已经结束,接下来的首要任务是根据系统的需求编写需要的JavaBean。本系统中所需要的JavaBean如表3-1所示。表3-1 系统中的JavaBean名称说明所属包DepModel.java部门JavaBeancn.tju.invoice.auth.dep.voEmpModel.java员工JavaBeancn.tju.invoice.auth.dep.vo MenuModel.java菜单JavaBeancn.tju.invoice.auth.dep.voResModel.java资源JavaBeancn.tju.invoice.auth.dep.voRoleModel.java角色JavaBeancn.tju.invoice.auth.dep.voGoodsModel.java商品JavaBeancn.tju.invoice.invoice.goods.voStoreModel.java仓库JavaBeancn.tju.invoice.invoice.store.voGoodsTypeModel.java类别JavaBeancn.tju.invoice.invoice.goodstype.voSupplierModel.java供应商JavaBeancn.tju.invoice.invoice.supplier.voOrderModel.java订单JavaBeancn.tju.invoice.invoice.order.voOrderDetailModel.java订单详请JavaBeancn.tju.invoice.invoice.orderdetail.voStockModel.java库存JavaBeancn.tju.invoice.invoice.stock.voStoreOperModel.java入库明细JavaBeancn.tju.invoice.invoice.storeoper.voStoreDetailModel.java仓库操作JavaBeancn.tju.invoice.invoice.storedetail.vo1基础模块的JavaBean的编写基础模块的JavaBean是一个系统的基础,包括系统所用的一些数据字典以及基础信息的管理。是对实体对象,比如部门、员工、菜单、资源和角色等的一种抽象和封装,主要包括以下五个JavaBean。(1)DepModel.java;(2)EmpModel.java;(3)MenuModel.java;(4)ResModel.java;(5)RoleModel.java;2进销存模块的JavaBean的编写进销存模块的JavaBean主要用于实现整个系统的主要功能,是对实体对象,比如商品、仓库、订单、商品类别、供应商、订单详情等的一种抽象和封装,主要包括以下九个JAVABean。(1)GoodsModel.java;(2)StoreModel.java;(3)GoodsType.java;(4)OrderModel.java;(5)OrderDetail.java;(6)SupplierModel.java;(7)StockModel.java;(8)StoreOperModel.java;(9)StoreDetailModel.java;3.2 系统设计3.2.1 系统登陆设计在本系统的登陆页中,用户需要输入用户名和密码进行登陆验证,因为是企业级系统,所以对密码进行了MD5加密,而不需要增加验证码验证。不仅可以增强系统的安全性,还可以减少很多繁琐的操作等。在网站登陆页有登陆和取消两个按钮,简洁方便。系统登陆页的运行结果如图3-1所示。图3-1 系统登录页面系统登陆页面的各部分说明如表3-2所示。表3-2 系统登陆页面说明名称说明用户名用户输入用户名密码用户输入密码登陆用户登陆系统并进行权限校验取消用户重置输入1. 登录设计主要实现方法(1) 由于是企业级系统,所以对于一切操作和数据都很敏感,所以不仅需要记录登陆人帐号密码,还需要记录登录IP、登录次数等等。关键代码如下:public String login() HttpServletRequest request = ServletActionContext.getRequest();String loginIp = request.getHeader(x-forwarded-for);if (loginIp = null | loginIp.length() = 0| unknown.equalsIgnoreCase(loginIp) loginIp = request.getHeader(Proxy-Client-IP);if (loginIp = null| loginIp.length() = 0| unknown.equalsIgnoreCase(loginIp) loginIp = request.getHeader(WL-Proxy-Client-IP);if (loginIp = null | loginIp.length() = 0| unknown.equalsIgnoreCase(loginIp) loginIp = request.getRemoteAddr();EmpModel loginEm = empEbi.login(em.getUserName(), em.getPwd(), loginIp);if (loginEm = null) this.addActionError(用户名或密码错误,请重新登录!);return loginFail; else List resList = resEbi.getAllResByEmp(loginEm.getUuid();StringBuilder resStr = new StringBuilder();for (ResModel rm : resList) resStr.append(rm.getUrl();resStr.append(;);loginEm.setResAll(resStr.toString();ActionContext.getContext().getSession().put(loginEm, loginEm);return loginSuccess;public EmpModel login(String userName, String pwd, String loginIp) pwd = MD5Utils.md5(pwd);EmpModel loginEm = empDao.getByUsernameAndPwd(userName, pwd);if (loginEm != null) loginEm.setLastLoginIp(loginIp);loginEm.setLastLoginTime(System.currentTimeMillis();loginEm.setLoginTimes(loginEm.getLoginTimes() + 1);return loginEm;return loginEm;3.2.2 系统权限校验设计系统权限校验主要用于区别不同角色可以使用的资源。如图3-2所示。图3-2 资源列表1权限校验设计步骤(1)表tbl_res存放系统中所有可操作资源,利用Spring的监听器,在Tomcat启动时加载所有可操作资源,放入值栈中,不必每次进行操作去获取资源列表进行对比,节省服务器资源,降低数据库压力。关键代码如下:public class AllResLoadListener implements ServletContextListener Overridepublic void contextInitialized(ServletContextEvent event) ServletContext sc = event.getServletContext();WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sc);ResEbi resEbi = (ResEbi) ctx.getBean(resEbi);List allResList = resEbi.getAllRes();StringBuilder resStr = new StringBuilder();for (ResModel rm : allResList) resStr.append(rm.getUrl();resStr.append(;);sc.setAttribute(ResModel.RES_ALL, resStr.toString();Overridepublic void contextDestroyed(ServletContextEvent event) public class AuthInterceptor extends AbstractInterceptor private static final long serialVersionUID = 1L;public String intercept(ActionInvocation invocation) throws ExceptionString actionName = invocation.getProxy().getAction().getClass().getName();String methodName = invocation.getProxy().getMethod();String allName = actionName + . + methodName;String allRes = ServletActionContext.getServletContext().getAttribute(ResModel.RES_ALL).toString();if (!allRes.contains(allName) return invocation.invoke();EmpModel loginEm = (EmpModel) ActionContext.getContext().getSession().get(loginEm);String resAll = loginEm.getResAll();if (resAll.contains(allName) return invocation.invoke();throw new AppException(对不起,您没有访问权限!);(2)用户登录成功时,系统获取登陆账号的ID,查询该账号所有可操作资源,连同登陆人信息放入Session中,用户每一次操作直接从缓存中获取资源进一步减轻服务器压力。关键代码如下:List resList = resEbi.getAllResByEmp(loginEm.getUuid();StringBuilder resStr = new StringBuilder();for (ResModel rm : resList) resStr.append(rm.getUrl();resStr.append(;);loginEm.setResAll(resStr.toString();ActionContext.getContext().getSession().put(loginEm, loginEm);3.2.3 系统基础模块设计系统基础模块设计思路与方法一直,均含有CRUD操作,基础模块页面效果如图3-3所示。图3-3 基础模块页面设计效果1页面设计主要实现方法(1)展示数据在列表页面。在系统中展示列表的关键代码如下:$emp.userName$$emp.lastLoginTimeView 修改 (2)模糊查询数据部分。模糊查询功能可以很方便的实现信息管理与维护。页面关键代码如下: 用 户 名出生日期性    别 2后台设计实现关键代码如下:DetachedCriteria dc = DetachedCriteria.forClass(EmpModel.class);if (eqm.getUserName() != null & eqm.getUserName().trim().length() 0) dc.add(Restrictions.like(userName,% + eqm.getUserName() + %);if (eqm.getGender() != null & eqm.getGender() != -1) dc.add(Restrictions.eq(gender, eqm.getGender();Long birthday = eqm.getBirthday();Long birthdayMax = eqm.getBirthdayMax();if(birthday != null & birthdayMax != null & birthdayMax birthday) Long temp = 0L;temp = birthday;birthday = birthdayMax;birthdayMax = temp;if (birthday != null) dc.add(Restrictions.ge(birthday, birthday);if (birthdayMax != null) dc.add(Restrictions.le(birthday, birthdayMax + 1000 * 60* 60 * 24 - 1);return this.getHibernateTemplate().findByCriteria(dc, (pageNum - 1) * pageCount, pageCount);3.2.4 系统核心模块设计系统核心模块中的所有CRUD设计思路和方法和基础模块一致,在此不进行赘述。本节主要介绍订单管理和库存管理两个模块。新建订单设计效果如图3-4所示。图3-4 新建订单设计效果1页面设计主要实现方法(1)新建订单页面会初始化供应商、类别和商品信息的等信息,并且该页面有很多特殊的效果,而这些效果都是通过JQuery和AJAX异步请求进行控制和实现的11 13。关键代码如下:$(.supplier).live(change,function() var supplierUuid = $(this).val();$(.goodsType).empty();$(.goods).empty();$.post(order_ajaxGetGoodsTypeAndGoodsBySupplier,supplierUuid : supplierUuid,function(data) var goodsTypeList = data.goodsTypeList;var goodsList = data.goodsList;var price = data.gm.inPriceView;for ( var i = 0; i goodsTypeList.length; i+) var goodsType = goodsTypeListi;var$option=$( + goodsT + );$(.goodsType).append($option);for ( var i = 0; i goodsList.length; i+) var goods = goodsListi;var $option = $( + + );$(.goods).append($option);$(.num).val(1);$(.price).val(price);$(.total).html(price + 元);allPrice();););$(function()var flag=true;$(#add).click(function()$(.supplier).attr(disabled,true);$(.goodsType).attr(disabled,true);$(.goods).attr(disabled,true);$(.num).attr(disabled,true);$(.price).attr(disabled,true);if(flag=false)return;flag=false;var supplierUuid=$(#supplier).val();var goodsArr=$(.goods);var usedUuid=;for(var i=0;igoodsArr.length;i+) usedUuid=usedUuid+goodsArri.value+,;$(.deleteBtn).live(click,function()$(#add).css(display,inline);

温馨提示

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

评论

0/150

提交评论