基于java的医药管理系统的设计与实现毕业论文设计_第1页
基于java的医药管理系统的设计与实现毕业论文设计_第2页
基于java的医药管理系统的设计与实现毕业论文设计_第3页
基于java的医药管理系统的设计与实现毕业论文设计_第4页
基于java的医药管理系统的设计与实现毕业论文设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

系统分析1.1需求分析在当今社会飞速发展的时代,各行各业都在面对着大量的数据信息,医院也不例外,对医药的进销存管理也构成了医院各项管理中比较重要的一部分。面对着每日大量药品的输入和输出,以及众多拥有不同需求的客户,如果采用传统的、非智能化的手工方式来处理所带来的这些数据信息,不仅效率提高不上去,而且还会动用大量的人力物力,增加了医院的开销和资金投入,但却得不到较大的利益。如何解决以上这些问题,那就需要一个比较成熟的、科学的方法。所以,一个完善的医药管理系统不仅可以带来管理人员对药品的快速管理,而且还能在一定程度上也满足了消费者的需求。它应具有以下优点[3][3][3]江义华.JAVA完美经典.中国铁道出版社,2004操作界面更加人性化,处理上更加高效。采用高端的软件技术研发和较长的使用寿命。可简化工作人员的操作,从而提高工作效率。1.2可行性分析任何一款软件研发出来,并不是凭空捏造,它应具有社会效益以及可行性。针对医药管理系统来说,它应具有以下可行性[4][4][4]史济民、顾春华、郑红.软件工程.高等教育出版社,2009经济方面:从经济的角度进行评估,该系统的创建和日后的维护,不会耗费大量的资金。不仅如此,该系统设计理念就是节省人力,完善管理水平,提高管理质量,屏蔽管理漏洞,因而此系统所带来的社会经济效益将远远大于开发中的投入。技术方面:从技术的角度进行评估,该系统依托于java技术。该语言通熟易懂,技术上可实现跨平台。与此同时,采用Struts和Hibernate框架,分别完成逻辑操作和数据操作,运行效率高,处理速度快[5][5][5]耿祥义、张跃平.JAVA2实用教程.清华大学出版社,2004实施方面:从实施的角度进行评估,该系统对硬件配置要求不高,部署又相对简单,操作起来难度不大,普通操作人员很容易应用此系统,不必接受过多的专业知识的培训。2系统设计2.1系统开发环境及目标系统开发环境不同的开发环境,将在一定程度上影响到系统的正常运行。所以有必要给出该系统的开发环境,避免出现不必要的麻烦。运行环境选择如下[6][6][6]周惠英.JAVA入门、进阶与应用实例.人民邮电出版社,2007开发环境:Window7操作系统开发工具:MyEclipse9.0开发软件Web服务器:apache-tomcat-6.0.36容器系统目标针对当前医院管理的要求,以及从用户体验的角度出发,该系统的制定应具备以下目标[7][7][7]张桂珠、陈爱国.JAVA面向对象程序设计.北京邮电大学出版社,2006系统安全系数高,运行相对稳定。界面简单但不失美观,操作方便快捷。完成药品基础信息和用户账号的管理。能及时的预知药品的销售状况及库存信息。2.2系统功能结构通过查阅相关书籍和上网搜索资料,从医院管理状况出发,将该管理系统定义为四大功能模块,它们分别是主系统管理、基本信息管理、药品销售管理和进货与需求管理[8][8][8]李钟蔚.JAVA开发实战宝典.清华大学出版社,2010医药管理系统医药管理系统进货/需求管理药品销售管理基础信息管理主系统管理进货/需求管理药品销售管理基础信息管理主系统管理销售排行统计药品销售明细药品进货管理药品需求管理库存信息查看药品类别管理药品信息管理系统初始化用户账号管理销售排行统计药品销售明细药品进货管理药品需求管理库存信息查看药品类别管理药品信息管理系统初始化用户账号管理图2-1功能结构图2.3系统流程图所谓流程图,就是以一种特定的图形符号加上必要的说明来解释某一个工艺过程或管理过程。为了能更直观的说明该系统的管理功能,快速地掌握和了解系统的处理任务,所以,给出该系统各个功能模块的流程图,主流程如图2-2所示。医药管理系统基本信息管理医药管理系统基本信息管理主系统管理管理员主系统管理管理员管理员登录管理员登录药品销售管理药品销售管理进货/需求管理进货/需求管理图2-2系统主流程图以下给出了各个功能模块的流程图,如图2-3所示。添加药品添加药品药品信息管理查询药品药品信息管理查询药品修改药品修改药品删除药品删除药品基本信息管理基本信息管理添加类别添加类别查询类别药品类别管理查询类别药品类别管理修改类别修改类别添加需求添加管理员添加需求添加管理员查询进货查询管理员查询进货查询管理员进货/需求管理主系统管理进货/需求管理主系统管理删除进货密码修改删除进货密码修改库存修改库存修改系统初始化系统初始化查询销售明细查询销售明细药品销售管理当日销售明细药品销售管理当日销售明细销售排行统计销售排行统计图2-3各功能模块流程图2.4逻辑分层结构设计在分析该结构设计的之前,首先有必要了解一下MVC框架的设计思想。MVC主要包括三层结构,及M层、V层和C层。M层是模型层,也就是数据层,其中包括持久层和数据库层,用于对数据的储存和操作,主要涉及到的技术有JDBC技术和Hibernate框架技术;V层是视图层,是用来显示软件页面,接受用户请求和以某种形式呈现数据,注重数据的显示效果,主要涉及到的技术有Html技术和Jsp技术,还有Javascript及相应脚本框架;C层是控制层,是用来对M层和V层的耦合,主要起到逻辑处理作用,捕获用户的请求,并对用户请求进行处理,将所得到的处理结果返回给视图层,并在页面中显示数据[9][9][9](美)珍兆科.JavaEE5权威指南.机械工程出版社,2008MVC架构的请求流程:用户访问Web页面,发送请求,请求到达控制器处理,控制器通过DAO技术访问数据层,将数据取出并将处理结果反馈给用户,更新用户界面。通过以上功能结构的介绍及对MVC框架的了解,可发现该系统是由4层组成,并且严格遵循了MVC架构思想。该4层分别是视图层、控制层、持久层和数据库层。视图层也就是用户所能涉及到的操作界面,主要采用JSP技术实现,整个页面可添加Struts框架当中的标签库或jstl标签库。控制层的作用就是协调视图层和数据层,起到中间桥梁的作用,主要采用Struts框架技术实现,通过servlet组件过滤请求,调用相应的Action组件处理请求,通过forwrad对象将结果输出到界面。数据库层用来储存数据,本系统采用Mysql数据库来实现。持久层是用来操纵数据的,采用Hibernate技术将数据从数据库中提取出来,并做相应的操作,如对数据的增删查改。2.5文件夹组织结构本系统主要运用MyEclipse软件编程,采用java技术实现。所以,对于文件夹的命名应该按照规范的命名法来实施。在真实的企业开发过程中,编写代码之前,都要系统的制定好一个比较完善的文件夹组织结构,使得整个项目开发思路比较清晰,让编程人员能很快地定位到每一个模块的设计。开发中,文件夹命名的规范化发挥着十分重要的作用。在MyEclipse软件中,该系统的文件夹组织结构如下所示[10][10][10]郎波.JAVA语言程序设计.清华大学出版社,2005src目录:是一种可执行文件夹,可存放类包,类包中存放源代码文件,即后缀为java格式的文件。com.peng.pojo包:每一层都是文件夹,采用将域名倒写的方式定义包名。该文件下存放实体类,也就是java中常说的pojo类。com.peng.mapping包:用于存放实体关系映射文件(ORM文件),将实体类通过该配置文件和数据库中的表一一对应起来,找到它们之间的联系。com.peng.util包:存放自己编写好的工具类,该工具类可以在不同的包中重复使用,起到某些相应的功能,如给密码加密或者读取某文件内容。com.peng.action包:存放业务处理的类,即Action组件。erceptor包:用于存放interceptor拦截器,主要作用是对用户请求进行再次拦截,执行时机是在Action组件之前执行。com.peng.config包:用于存放配置文件,如后缀为properties的文件。可通过java中IO流进行读取文件内容。com.peng.service包:用于存放一些服务类,常和dao类联合使用。WebRoot目录:是不可执行的文件夹,用于储存jsp页面,即浏览网页。3数据库设计3.1数据库分析数据库,顾名思义就是一个大型仓库,用来存储大量的数据。它包含所有涉及到的信息,主要囊括用户信息、药品基本信息和类别信息、以及销售明细信息。通过某种对应关系,间接的将所有信息数据联系起来。在真实的企业开发中,数据库往往单独安装在某个特定的服务器上。这样做的目的就是防止大量用户过度频繁的访问数据库,从而造成服务器的瘫痪。不仅如此,这样做还可以提高查询速度,降低服务器的负担。因此,不同的硬件要求,可能会影响到数据库的性能,以下给出了数据库运行环境的要求:硬件要求:CPU:要求在2.8GHz以上。内存:要求在2GB以上。硬盘储存空间:150GB或者更高。软件要求:操作系统:Windows7操作系统。数据库版本:MySQL5.0版本。3.2数据库设计通过以上对该系统的功能结构的分析,将每一个模块所涉及到的信息抽象成一个数据实体对象,将这些对象通过数据表的形式储存在数据库中。为了能更好的对数据库中的结构,下面简单介绍一下数据库的相关知识。数据库中的数据类型主要包括整型(int)、浮点型(double)、字符型(varchar)、日期类型(datetime)。定义类型时含有数字,说明是数据的精确度或字符的长度。数据库中的约束条件是用来给数据表中的某些列添加限制,主要包括有五种,分别为主键约束(Primarykey)、外键约束(Foreignkey)、唯一约束(Unique)、非空约束(notnull)和检查约束(Check)[11][11](美)范德兰斯.MySQL开发者SQL权威指南.机械工程出版社,2008PRI[11](美)范德兰斯.MySQL开发者SQL权威指南.机械工程出版社,2008主键约束:主键是用来区分一个数据表中的每一行数据,主键的特点是唯一性和不能为空值,因而不同的行具有不同的主键。主键的生成方式往往采用数据库自增的方式auto_increment,随数据的添加自增序列号。外键约束:外键是定义在两张表的不同列或同一张表中的不同列,用于联系两个列之间的关系,起到关联作用,保证数据的一致性,往往将一张表的主键作为另一张表的外键。含有外键的表是主表,不含外键的表是子表。唯一约束:此约束是说明该列的每一个数值都是唯一的,不能重复。定义唯一约束的主要目的是,在没有主键所定义的其他列中不能重复输入相同列值。以下给出了几种实体对象的表结构:用户对象所对应的表结构,如表3-1所示:表3-1用户对象数据表属性数据类型是否可为空键值默认值额外信息idint(11)NOPRINULLauto_incrementusernamevarchar(50)NOUNINULLpasswordvarchar(50)NONULLcreate_timedatetimeYESNULL药品对象所对应的表结构,如表3-2所示:表3-2药品对象数据表属性数据类型是否可为空键值默认值额外信息idint(11)NOPRINULLauto_incrementmed_novarchar(100)NOUNINULLnamevarchar(100)NONULLfactory_addvarchar(100)YESNULLdescriptiontextYESNULLpricedoubleNONULLmed_countint(11)YESNULLreq_countint(11)YESNULLphoto_pathvarchar(255)YESNULLcategory_idint(11)YESMULNULL销售明细对象所对应的表结构,如表3-3所示:表3-3销售明细对象数据表属性数据类型是否可为空键值默认值额外信息idint(11)NOPRINULLauto_incrementsell_namevarchar(200)NONULLsell_pricedoubleNONULLsell_countint(11)NONULLsell_timedatatimeNONULLmed_idint(11)YESMULNULLuser_idint(11)YESMULNULL药品类别对象所对应的表结构,如表3-4所示:表3-4药品类别对象数据表属性数据类型是否可为空键值默认值额外信息idint(11)NOPRINULLauto_incrementnamevarchar(100)NONULLdescriptiontextYESNULLcreate_timedatetimeYESNULL在数据库中创建以上各表的时候,应该明确定义以上每个字段,缺少其中的某个字段都有可能提示创建失败等信息。同时,应注意数据的类型和精确度,以及约束条件和附加信息。3.3数据库创建利用SQL语言(结构化查询语言)将所需的数据库和数据表以语言脚本的形式生成,在MySQL软件客户端的命令行界面输入指令即可完成创建过程。如:在E盘下创建了一个“E:\medicine.sql”的数据库脚本,在命令行界面执行指令“sourceE:\medicine.sql”后,即可完成创建过程。另外一种创建方式,可将SQL脚本添加到MyEclipes软件的项目中,通过软件自带的“数据库连接插件”完成数据库的创建,一般不采用这种形式。4配置文件4.1配置web.xml文件web.xml文件又叫做部署描述文件,它的主要作用就是初始化配置信息。在该文件中可定义过滤器对请求过滤;可定义监听器对事件进行监听;也可定义servlet组件实现逻辑处理等等一些信息[12][12][12](美)埃克尔.JAVA编程思想.机械工程出版社,2007可以定义某个首选页面:<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>当你访问某个网站的时候,首次浏览到的页面就是index.jsp页面。为Struts组件Servlet命名:<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class> </servlet>这里由Struts框架的底层原理来实现,该组件由Struts框架提供的jar包中的类ActionServlet来完成,命名为action。为servlet定制统一资源定位器(URL):<filter-mapping><filter-name>action</filter-name><url-pattern>*.do</url-pattern></filter-mapping>“/*”代表对所有的请求字符串进行过滤,“*.do”代表对请求以“.do”结尾的请求过滤。通过servlet的名字找到以上命名之后的组件,例如:通过action名字找到ActionServlet类。4.2配置struts-config.xml文件struts-config.xml文件是Struts框架的核心配置文件。通过该文件中的配置信息,可调用与请求资源相对应的Action组件,并返回所需的执行结果,实现页面的跳转。由于struts-config.xml文件当中的配置相对较多,所以不再一一列举其中的配置信息,只对其中最为常用的重点标签和属性做详细介绍,如下:<data-sources>标签:该标签的作用是用来配置web应用所需的数据源,最多含有一个,该标签中可定义多个子标签<data-source>。<data-source>标签:该标签的作用是用来定义具体的数据源。可以有任意个,含有两个重要属性key和type,key的作用是区分不同的数据源,type的作用是为数据源的使用提供实现类,如连接池、JDBC技术的类库。<set-property>标签:该标签作用在<data-source>下,主要作用是设置数据源的属性,如数据源用户、数据源密码和数据源url等等。<form-beans>标签:该标签的作用是用来配置FromBean的,FromBean实际上就是一个javaBean,是对表单的封装,struts会通过setter方法将表单中输入框的值设置到FromBean中同名的属性上。含有两个重要的属性name和type,分别用来定义FromBean的名字和实现类。<global-forward>标签:该标签的主要作用是用来定义全局的forward的,所谓的forward就是实现页面的跳转,即分发页面的作用。<action-mappings>标签:该标签的作用是用来定义Action组件的。在配置文件中最多含有一个,其中可含有多个子标签<action>。<action>标签:该标签含有path、type和name三个重要属性。path的作用是用来指定访问的路径,以“/”开头;type用来指定处理逻辑的Action组件;name是用来指明与之关联的FromBean的名字。<forward>标签:该标签定义在<action>标签中,作用就是实现页面的跳转。含有name和path属性,作用分别为接受处理结果和指定要跳转的页面。4.3配置hibernate.cfg.xml文件hibernate.cfg.xml文件是Hibernate框架中的核心配置文件,用于连接数据库,文件内容一般采用工具自动生成。该配置文件中一般提供如下信息:<session-factory>标签:提供session工厂,用于生产session对象,需要通过property标签注入数据源信息。<property>标签:定义数据库的连接信息,如driver_class、url、username、password和dialect。dialect叫做方言,Hibernate框架可以通过dialect属性匹配任意类型的数据库,如Oracle、Mysql或者DB2等数据库。<mapping>标签:该标签的作用是加载ORM映射文件,以便通过映射文件将java中的实体类和数据库中的数据表对应起来。5系统模块设计5.1主系统管理模块主系统管理模块主要包括管理员账号管理和系统初始化,如果细分的话,可分为添加和删除管理员,修改管理员密码和查看所有管理员。由于业务需求,任何管理员登录成功后,都可以进行添加和删除管理员的操作,所以操作时请谨慎操作,以免造成不必要的麻烦。修改管理员密码时,只能对当前用户密码做更改,不可更改其他管理员信息。前台浏览器端采用到的技术主要包括Jsp页面技术和javaScript技术,后台服务器端采用两大框架处理业务逻辑和数据逻辑。以下给出添加管理员的页面,如图5-1所示。图5-1添加管理员在页面代码中,用户名采用username,密码采用password,这样即可以和java逻辑处理代码中的User类属性相对应,又保证代码信息的一致性,减少开发难度系数。其中,定义用户对象的主要代码如下:publicclassUser{ privateint; //id号 privateStringusername; //用户名 privateStringpassword; //密码 privateDatecreateTime; //创建日期 publicDategetCreateTime(){//获取创建日期 returncreateTime; } publicvoidsetCreateTime(DatecreateTime){//设置创建日期 this.createTime=createTime; } publicintgetId(){//获取id returnid; } publicvoidsetId(intid){//设置id this.id=id; } publicStringgetUsername(){//获取用户名 returnusername; } publicvoidsetUsername(Stringusername){//设置用户名 this.username=username; } publicStringgetPassword(){//获取用户密码 returnpassword; } publicvoidsetPassword(Stringpassword){//设置用户密码 this.password=password; }}从代码中可以看出,User类含有四个私有属性,并为每个属性提供公有的get和set方法,这样可以通过方法来访问类的属性。这种定义类的方式符合javaBean规范。所谓的javaBean是一种软件开发中常常遵守的规范,它要求类的属性尽量私有化,方法尽量公有化,并提供属性的get和set方法。所谓退出系统,就是返回到该系统的登录界面,在此界面中用户可进行登录操作,如图5-2所示。图5-2用户登录界面用户登录处理,是从页面中获取用户名以及密码信息,将该信息传递给后台处理,通过Hibernate框架技术访问数据库中的用户信息,并进行比对,正确则可登入系统,否则提示密码或用户名错误,其主要代码如下:publicUserlogin(StringuserName,Stringpassword){ Useruser=null; try{ session=HibernateFilter.getSession(); //获取Session对象 session.beginTransaction(); //开启事物 //HQL查询语句 Stringhql="fromUseruwhereu.username=?andu.password=?"; Queryquery=session.createQuery(hql) //创建Query对象 .setParameter(0,userName)//动态赋值 .setParameter(1,password);//动态赋值 user=(User)query.uniqueResult(); //返回User对象 session.getTransaction().commit(); //提交事务 }catch(Exceptione){ e.printStackTrace(); //打印异常信息 session.getTransaction().rollback(); //回滚事务 } returnuser; }凡是能登录成功的用户,都能成功修改个人的密码,根据原密码和新密码即可完成操作,操作页面如图5-3所示。图5-3修改当前用户密码此修改密码操作的代码相对来说编写有一定的难度,代码如下所示://修改密码 publicActionForwardmodifyPassword(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ UserFormuf=(UserForm)form; if(uf!=null){ //从session之中获取User对象 Useruser=(User)request.getSession().getAttribute("user"); //确认两次密码是否一致 if(user!=null&&uf.getOldPassword().equals(user.getPassword())){ if(uf.getPassword().equals(uf.getRePassword())){ UserDaodao=newUserDao(); user.setPassword(uf.getPassword()); dao.saveOrUpdate(user); } }else{ //密码错误 ActionMessageserrors=newActionMessages(); errors.add("",newActionMessage("user.oldpassword.error")); this.saveErrors(request,errors); returnmapping.findForward("error"); } } returnmapping.findForward("userFind"); }5.2基础信息管理模块基础信息管理模块主要包括药品信息管理和药品类别管理。其中,药品信息管理主要包括药品的添加,药品的查询以及药品的删除等基本操作,每一位管理员可对药品信息做相应更改。技术上和主系统管理模块一致,采用Struts框架和Hibernate框架的集成。由于页面信息量比较大,涉及到的页面数量较多,所以,只能给出部分页显示。以下给出查看所有药品的页面显示效果图,点击左栏选中多个药品,可做批量删除,点击右边栏中的选项可进行其他操作,如图5-4所示。图5-4查看所有药品点击药品名称可查看该药品的详细信息,如图5-5所示。图5-5药品详细信息点击右栏中的“进货”操作可进入进货页面,在此页面可更改进货需求数量,如点击编号为“abc001”的药品的进货链接,可以看到该药品的当前数量,更改数量为100,则此药品所对应的需求数量由原来的0更改为现在的100,如图5-6所示。图5-6更改药品的需求数量药品类别管理主要包括类别的添加、类别的删除以及类别的查询。点击查看类别,可列出所有的药品类别,如图5-7所示。图5-7查看所有药品类别以下是类别添加的效果图,按照名称和描述来添加类别。输入类别名称点击提交即可完成操作,如图5-8所示。图5-8添加药品类别类别添加的相应代码如下所示。//添加或修改类别 publicActionForwardadd(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) throwsException{ //获取类别信息 CategoryFormcf=(CategoryForm)form; //创建Category对象 Categoryc=newCategory(); c.setName(cf.getName()); c.setDescription(cf.getDescription()); c.setCreateTime(newDate()); if(cf.getId()!=0){ c.setId(cf.getId()); } CategoryDaodao=newCategoryDao(); dao.saveOrUpdate(c);//添加类别 returnmapping.findForward("paging"); }5.3药品销售管理模块药品销售管理模块主要包括购买药品和销售管理。选购药品运用到了一种购物车的模式,也就是说,用户可查看购物车里面所选购的药品,也可继续进行其他药品的选购,购物车里面的药品并不随之改变,方便用户操作,这就是购物车的机制。购物车是一种软件开发中的设计理念,绝大多数的软件中都会采用这种机制。以下给出购买药品的页面显示,如图5-9所示。图5-9购买药品点击购买药品ID为1的药品,将购买数量更改为2,则进入结账页面,在此界面中可进行继续购买或立即结账等操作,自动计算出所支付的购买金额。如果继续购买其他药品,这时就运用到了购物车的原理,不会将之前的操作清空。页面如图5-10所示。图5-10结账界面点击以上删除按钮,可将该药品删除。如果点击清除,可将该购物车里的所有购买的药品全部清除。如图5-11所示。图5-11清空购物车结账成功后,会出现结账完成页面,给出该药品的销售时间以及购买人员,如图5-12所示。图5-12结账完成界面结账代码的编写是一个相对复杂的过程,这其中包含了对异常信息的处理,例如药品库储量数量不够,则提示购买错误请重新购买,这些都必须在系统设计上体现出来。销售管理主要包括销售明细和销售排行,可对产品按照给定的日期格式查询销售,如图5-13所示。图5-13销售管理界面5.4进货/需求管理模块进货/需求管理模块主要是按照药品的需求量进行添加药品库存量的操作。根据医药管理模块下的药品查看,进行相应药品数量的添加。如果已经存在该药品的信息,可通过搜索直接更改药品数量,提高效率。技术上同其他几个功能模块一样,均采用两大框架的集成。以下给出按药品编号更新需求的效果图,输入编号,更新药品数量为20,如图5-14所示。图5-14更新药品需求药品进货成功后,会显示该进货状态,点击完成即可添加库存数量,效果图如图5-15所示。图5-15药品进货界面6总结针

温馨提示

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

评论

0/150

提交评论