《软件工程学实验》PPT课件.ppt_第1页
《软件工程学实验》PPT课件.ppt_第2页
《软件工程学实验》PPT课件.ppt_第3页
《软件工程学实验》PPT课件.ppt_第4页
《软件工程学实验》PPT课件.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

软件工程学实验,马丽,1,实验4,4.1 PowerDesigner入门 4.2 PowerDesigner业务处理模型 4.3 PowerDesigner概念数据模型 4.4 PowerDesigner物理数据模型 4.5 PowerDesigner面向对象模型,2,实验4.1 软件工程的计算环境,PowerDesigner (/powerdesigner) 最初由Powersoft公司开发,后为Sybase公司并购。从1989年到2003年的十几年间,PowerDesigner经历了巨大的变化,从一个单一数据库设计工具发展为一个全面的数据库设计和应用开发的建模软件,3,实验4.1 软件工程的计算环境,PowerDesigner面向数据分析、设计和实现,集成了UML (统建模语言) 和数据建模的CASE工具。它不仅可以用于系统设计和开发的不同阶段 (即系统需求分析、对象分析、对象设计以及数据库设计和程序框架设计) ,绘制系统的数据流程图DFD和E-R图,以及生成物理的建表程序、存储过程与触发器框架等,也可以满足管理、系统设计、开发等相关人员的使用,4,实验4.1 软件工程的计算环境,PowerDesigner包含4个模型,覆盖了软件开发生命周期的各个阶段 业务处理模型 (BPM) 概念数据模型 (CDM) 物理数据模型 (PDM) 面向对象模型 (OOM),5,PowerDesigner模型 的相互关系和作用,6,实验4.1 软件工程的计算环境,在软件开发周期中 首先进行的是需求分析,并完成系统的概要设计 系统分析员利用BPM画出业务流程图,利用OOM和CDM设计出系统的逻辑模型 然后进行系统的详细设计,利用OOM完成系统的设计模型,并利用PDM完成数据库的详细设计 最后,根据OOM生成的源代码框架进入编码阶段,7,实验4.1 软件工程的计算环境,1. PowerDesigner的特性 建模工具的重点曾经完全放在数据建模这一个方面,而随着需求的不断提高,商业流程建模和UML已经成为软件开发不可缺少的部分 从PowerDesigner的变化,可以看出它正在努力发展成为UML建模工具,但同时又不放弃自己的特长,即提供更好、更方便的数据建模能力,8,实验4.1 软件工程的计算环境,PowerDesigner支持UML,包括新的业务处理建模能力,改善了的基于UML的对象模型,而且可以在一个丰富的图表环境中,支持传统的和新增的建模技术。因此,对于那些需要跨平台作业和使用多种类型编码的项目,可以大大地缩短开发时间,降低复杂度 PowerDesigner还具备一个完整的版本资料库 (repository) ,用来贮存和管理所有建模和设计过程中的信息,并将最大限度地减少其中不一致的部分,从而极大地提高了开发者的效率,9,实验4.1 软件工程的计算环境,市场上有很多工具提供数据建模,包括数据仓库建模、对象建模、业务流程建模以及UML建模等,但PowerDesigner将所有的功能集于一体 PowerDesigner可通过一套完整的工具来集合三种建模技术业务流程建模、数据建模和UML建模,从而使商业和IT部门能够更容易进行项目合作,帮助客户实施更多连贯的、成功的项目,10,实验4.1 软件工程的计算环境,PowerDesigner主要特性包括: 业务过程建模,允许非IT专业用户用一个简单的图示模型,进行实际业务过程的设计或建模 数据建模,利用基于可靠方法、真正的两级 (概念上和物理上) 关系数据库建模,设计并生成数据库模型。同时还支持数据仓库建模技术,11,实验4.1 软件工程的计算环境,对象建模,使用标准的UML技术 (所有UML图) 完成设计和分析,并且利用定制的生成器,自动地生成源代码,如Java、XML、Web Services、C+、PowerBuiler、Visual Basic和Microsoft .Net等 企业版本库,PowerDesigner的企业版中加入了企业级版本库。可以查阅井共享工作组里所有成员的模型和信息。版本库可升级支持角色安全设置、版本控制、并具备搜索及报告能力,12,实验4.1 软件工程的计算环境,2. 业务处理模型 业务处理模型 (BPM) 主要用在需求分析阶段。这个阶段的主要任务是理清系统的功能,系统分析员在与用户充分交流后,应得出系统的逻辑模型。BPM用于从业务人员的角度对业务逻辑和规则进行详细描述,并使用流程图来表示从个或多个起点到终点间的处理过程、流程、消息和协作协议,13,实验4.1 软件工程的计算环境,3. 概念数据模型 概念数据模型 (CDM) 主要用在系统开发的数据库设计阶段,是按用户的观点来对数据和信息进行建模,并具体用实体-联系图 (E-R图) 来体现。CDM静态地描述系统中的各个实体以及相关实体之间的关系,系统分析员通过E-R图来表达对系统静态特征的理解。E-R图实际上相当于对系统的初步理解所形成的一个数据字典,系统的进一步开发将以此为基础,14,实验4.1 软件工程的计算环境,概念数据模型的主要功能包括: 以图形化 (E-R图) 的形式组织数据 检验数据设计的有效性和合理性 生成物理数据模型 (PDM) 生成面向对象模型 (OOM) 生成可定制的模型报告,15,实验4.1 软件工程的计算环境,4. 物理数据模型 物理数据模型 (PDM) 提供了系统初始设计所需要的基础元素,以及相关元素之间的关系。但是,在数据库的物理设计阶段,必须在此基础上进行详细的后台设计,包括数据库存储过程、触发器、视图和索引等 物理数据模型以常用的DBMS理论为基础,将CDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本,利用该SQL脚本在数据库中产生现实世界信息的存储结构 (表、约束等) ,并保证数据在数据库中的完整性和致性,16,实验4.1 软件工程的计算环境,物理数据模型的主要功能包括: 将数据库物理设计结果从一种数据库移植到另一种数据库 利用逆向工程把已经存在的数据库物理结构更新生成物理模型或概念模型 生成可定制的模型报告 转换为OOM 完成多种数据库详细物理设计,生成各种DBMS物理模型,生成数据库对象 (如表、主键、外部键等) SQL语句脚本,17,实验4.1 软件工程的计算环境,5. 面向对象模型 面向对象模型 (OOM) 是利用UML (统一建模语言) 的图形来描述系统结构的模型,它从不同角度表现系统的工作状态。这些图形有助于用户、管理人员、系统分析员、开发人员、测试人员和其他人员之间进行信息交流,18,实验4.1 软件工程的计算环境,面向对象模型的主要功能包括: 利用UML的用例图、时序图、类图、构件图和活动图等来建立面向对象模型OOM,从而完成系统的分析和设计 利用类图生成不同语言的源文件 (如Java、PowerBuilder、XML等) ,或利用逆向工程将不同类型的源文件转换成相应的类图 利用逆向工程将面向对象模型 (OOM) 生成概念数据模型 (CDM) 和物理数据模型 (PDM),19,实验4.1 软件工程的计算环境,6. 模型文档编辑器 PowerDesigner还提供了模型文档编辑器 (multi-model report) ,用来为所建立的模型生成详细文档,根据各种模型生成相关的RTF或HTML格式的文档,开发人员可以通过这些文档来了解各个模型中的相关信息,20,21,实验4.2 PowerDesigner业务处理模型,在软件工程的需求分析阶段,系统分析员在与用户充分交流后,应得出系统的逻辑模型。 PowerDesigner的业务处理模型 (BPM) 以业务需求为出发点,用图形方式描述系统的任务和业务流程,是对业务逻辑和规则进行详细描述的概念模型,22,实验4.2 PowerDesigner业务处理模型,BPM使用图形符号来表示业务逻辑中从一个或多个起点到终点间的处理过程、流程、消息、协作及其相互关系。通过BPM可以描述系统的行为和需求,使用图形表示对象的概念组织结构,然后生成所需要的文档 作为一个概念层次的模块,BPM适用于应用系统的系统分析阶段,用来完成系统需求分析和逻辑设计,23,BPM与其他模块之间的关系,24,实验4.2 PowerDesigner业务处理模型,BPM用系统提供的各种对象来描述系统需求,这些对象介绍如表4-1所示,25,对象 说明 Package 将元素组合为组 Process 处理过程 Flow / Resource Flow 连接过程、起点、终点的流程 / 连接资源的流程 Start 流程中的起点 End 流程中的终点 Decision 当流程中存在多个路径时的选项 Synchronization 允许多个并发动作的流程同步 Resource 资源 Oraganizaion Unit 组织单元:过程的执行者或资源的所有者 Message Format 定义过程间数据的交互 Composite Process 分解为详细过程的复合过程,BPM的对象,26,实验4.2 PowerDesigner业务处理模型,在需求分析过程中,BPM只表达业务人员对软件的功能要求和软件的功能过程,而不考虑其具体实现,软件人员通过BPM理解业务流程并对其进行必要的改进,27,28,实验4.3 PowerDesigner概念数据模型,在软件工程实践中,数据库设计通常都是从概念结构设计开始的。在这个层次上,不需要考虑实际物理实现细节,而只需要考虑实体和实体之间的联系 PowerDesigner的概念数据模型 (CDM) 用于完成数据库的逻辑结构设计 (概要设计) ,而与任何数据库平台 (例如Oracle或SQL Server) 的具体数据存储结构和工具 (例如PowerBuilder) 无关,29,实验4.3 PowerDesigner概念数据模型,CDM表达的是数据库的整体逻辑结构,它是系统分析人员、应用程序设计人员、维护人员和用户之间相互理解的共同语言。CDM所包含的对象通常并没有在物理数据库中实现。它仅仅给出了商业或业务活动中所需要的数据的形式化表示,30,实验4.3 PowerDesigner概念数据模型,通过建立CDM可以完成以下工作: 数据图形化、形象化 数据表设计的合法性校验 转化为PDM (物理数据模型) 生成OOM (面向对象模型) 的类图,31,实验4.3 PowerDesigner概念数据模型,通常,CDM采用实体-联系图 (E-R图) 来表示。例如,学生选课实例的E-R图,32,学生选课的E-R图与CDM,33,实验4.3 PowerDesigner概念数据模型,CDM实例中设计了两个实体: Student:学生。属性包括:student_id (学号) ,student_ name (姓名) ,student_sex (性别) ,student_birthday (出生日期) Class:课程。属性包括:class_id (课程号) ,class_name (课程名),34,实验4.3 PowerDesigner概念数据模型,Student和Class建立了名为选课 (Study) 的多对多联系: 一个学生可以选择多门课程,每一门课程都可以由多名学生选修 每一个学生都必须选课,每一门课程都必须有学生选修,35,实验4.3 PowerDesigner概念数据模型,通过CDM,可以简单、形象、清晰地表达事物本身及事物之间的相互关系。在CDM设计过程中,要涉及到一些基本概念,主要包括实体、属性、联系、域和业务规则等,36,实验4.3 PowerDesigner概念数据模型,1. 实体及属性 实体是现实世界中可区别于其他对象的“物体”,它可能是有形或无形的,具体或抽象的,有生命或无生命的。例如,公司中的每个员工是一个实体,商店中的每个产品也是一个实体 每个实体有一组特征,称为实体属性,用来描述实体状态和特征。例如,某个员工:姓名、性别、员工号、出生日期等,这一组具体指标表示了该员工实体各项属性,37,实验4.3 PowerDesigner概念数据模型,实体集 (entity set) 是相同类型及相同性质实体的集合。例如,社保中心所有客户的集合可定义为实体集“客户”,“客户”实体集中的每个实体具有社保号、户名、密码等性质 实体型 (entity type) 是实体集中每个实体所具有的共同性质的集合,例如,“员工”实体型为;员工编号、部门、姓名、性别、年龄等。实体是实体型的个实例,在含义明确的情况下,实体、实体型通常互换使用,38,实验4.3 PowerDesigner概念数据模型,2. 联系 实体可以通过联系 (relationship) 相互关联。按照实体之间的数量对应关系,通常可将联系分为:一对一联系 (one to one) 、一对多联系 (one to many) 、多对多联系 (many to many) 、递归联系 (recursive relationship) 以及依赖关系 (identify Relationship,也称标识关系) 等,39,实验4.3 PowerDesigner概念数据模型,3. 域 域 (domain) 是某个或某些属性的取值范围,域在定义之后,可以被多个实体的属性共享使用。域的定义在模型设计中具有重要意义,它使得不同实体中的属性标准化更加容易 例如,定义Address域,使它的数据类型为VarChar(40) ,在模型设计中,记载“地址”的属性可能包含在多个实体中,使用了Address域的所有“地址”属性,一旦修改Address的定义,使用该域的所有“地址”的定义也会随之改变,40,实验4.3 PowerDesigner概念数据模型,4. 业务规则 业务规则反映了信息系统所描述对象的特殊的数据完整性约束。一个业务规则可以是一个行业标准,个客户需求或者一本软件开发规范手册。当实体中包含的信息发生变化时,系统都会检查这些信息是否违反了特定的业务规则 在创建业务规则之前,必须首先明确数据之间存在的约束关系。业务规则可以在建立CDM时初步定义,在生成PDM或OOM的过程中,被直接传递到PDM或OOM中,41,实验4.3 PowerDesigner概念数据模型,5. CDM中对象的检查 CDM中检查的对象包括:Package (包) 、Entity (实体) 、Data Item (数据项) 、Relationship (联系) 、Domain (域) 、Entity Attribute (实体属性) 、Entity Identifier (实体标识符) 、Associaton (关联) 、Inheritance (继承) 和File Object (文件对象) 等。对检查模型时发现的错误,可以在结果列表窗口中查看出现的错误或警告及其原因,还可以采用手工或自动更正的方法对问题进行修改,42,关联连接,43,实验4.3 PowerDesigner概念数据模型,6. CDM的数据类型、长度和精度 长度和精度并不适用于CDM的所有数据类型。而且,有些数据类型的长度还可以指定最大或固定长度的字符数。表4-4列出了可以使用的数据类型及其长度与精度,44,45,实验4.4 PowerDesigner物理数据模型,在设计好数据库的逻辑结构之后,就需要完成其物理设计。物理数据模型 (PDM) 就是以DBMS理论为基础,根据CDM建立的现实世界模型生成相应的DBMS的SQL语言脚本。利用该SQL脚本在数据库中产生现实世界信息的存储结构 (例如表、约束等) ,并保证数据在数据库中的完整性和一致性,46,PDM与DBMS的关系,47,实验4.4 PowerDesigner物理数据模型,PDM以PowerDesigner为各种数据库提供的数据定义文件 (扩展名为 .xdb) 作为语法模板来生成SQL语言脚本 由PDM生成SQL脚本,再通过SQL脚本在数据库中建立相应的数据存储结构,称为正向工程 反之,如果通过数据库中已经存在的数据存储结构来导出对应的PDM,则称为逆向工程,48,实验4.4 PowerDesigner物理数据模型,PDM中涉及到一些基本概念,包括:表、列、视图、主键、候选键、外部键;存储过程、触发器;索引、完整性检查约束等内容,49,实验4.4 PowerDesigner物理数据模型,1. 表、列、视图、主键、候选键、外部键 表 (table) :是数据库中用来保存信息的一种数据结构。在PDM中,建立表的过程,就是产生建表的SQL语句的过程。PDM的表可以由CDM的实体转换生成 列 (column) :是组成表的基本单元,一个表由多个列组成,每个列都有一个数据类型。CDM的实体属性通过模型内部生成,可以转换成PDM表的列,50,实验4.4 PowerDesigner物理数据模型,视图 (view) :是从一个或多个基本表或其他视图中导出的表,可以把它形象地看做是一个活动窗口,在数据库中通过它可以看到自己感兴趣的内容。但是视图和基本表不同,它是一个虚表,即其对应的数据并不独立地存放在数据库中,存储的只是视图的定义。正因为如此,虽然视图创建后类似于基本表,可以被查询、删除或用来定义新的视图,但通过它修改数据却有很多限制,51,实验4.4 PowerDesigner物理数据模型,主键 (primary key) :是用来唯一标识表中一条记录的一个或多个列的集合,它可以由CDM的主标识符转换产生,也是CREM TABLE语句的重要组成部分 候选键 (alternate key) :也是用来唯一标识表中一条记录的一个或多个列的集合,它与主键具有同样的作用,它可以由CDM的次标识符转换产生 外键 (foreign key) :是与其他表连接的公共列,这个列通常是其他表的主键,52,实验4.4 PowerDesigner物理数据模型,2. 存储过程 存储过程是由SQL语句和控制流语句构成的集合。存储过程的建立大大提高了SQL的效率和灵活性 存储过程与原始SQL语句的最大区别在于它是预编译好的。当第一次运行一个过程时,数据库服务器的查询处理器对它进行分析,并准备好一个执行计划,最后把这个计划存储在系统表中,以后过程的每次执行都可以依据这个计划。由于大部分查询处理工作已经做好,不需要再花费时间进行编译,因此存储过程的执行速度快,53,实验4.4 PowerDesigner物理数据模型,在客户/服务器环境下,存储过程经过编译和优化后,存储在服务器端,这样,在网络上传输的只是一个远程调用和最终的执行结果,而不是一系列的SQL语句和返回结果,从而大大减少了网络上的传输量,提高了整个系统的性能 如果本地和远程数据库服务器都允许远程登录,那么本地就可以执行其他数据库服务器上的存储过程,54,实验4.4 PowerDesigner物理数据模型,存储过程简化了安全机制,它可以简化对某些操作的授权。例如,假设一个用户不希望别人在他的表上使用SELECT语句,他可以写一个仅查询这个表某些行或列的存储过程,然后将调用该存储过程的权限授给特定的用户,这样其他用户就可以通过该存储过程访问他的表,55,实验4.4 PowerDesigner物理数据模型,存储过程把用户和应用程序与数据源、网络和存取路径细节隔离开来,使得非专业人员对数据库服务器上的数据访问变得更加方便。例如,数据库管理员可以预先定义一些包括复杂数据查询和操作的存储过程,一般用户无须了解数据存储细节,不必了解存储过程,甚至可以不懂SQL语句,通过简单的远程过程调用就能完成特定的任务,这无疑大大简化了应用开发的过程,提高了应用开发的效率,56,实验4.4 PowerDesigner物理数据模型,触发器的主要用途是: 能够对数据库多个有关表的内容进行级联修改,即删除父表中的某些记录时,可以将子表中相应的记录删除。当违反参照完整性时,触发器能撤回试图进行数据修改的事务 触发器能够实施比规则复杂得多的限制 触发器能比较数据修改前后某表的状态,并采取相应行动,57,实验4.4 PowerDesigner物理数据模型,4. 默认与规则 当用户没有为某一列赋值时,数据库服务器为该列自动插入的值即为默认 (default) 值。规则 (rule) 就是在数据库的管理中指定允许或不允许哪些值插入某些列 默认和规则共同帮助系统维护数据的完整性,可以与列和用户定义的数据类型联系在一起 规则和默认同样可由有效性业务规则来完成,但是有效性业务规则只适用于特定的表,而无法将其与其他的表或用户定义的数据类型联系起来,58,实验4.4 PowerDesigner物理数据模型,5. 完整性检查约束 完整性是指数据库中数据的正确性和一致性。通过对数据库中插入、删除和修改数据值的操作进行限制和约束,来实现数据的完整性,数据库提供两种保持数据完整性的方法:一是在定义表时定义完整性约束;二是定义规则、约束、索引和触发器,59,实验4.4 PowerDesigner物理数据模型,数据库服务器上能够创建3种类型的完整性约束: 唯一性和主键 (unique和primary key) 约束。该约束要求同一表中的任意两行在某一或某些指定列上不能具有相同的值,另外,主键约束还要求在指定的列上不允许空值。参照完整性约束要求插入某个或某些指定列的数据必须已存在于被指定表的列中 检查约束 (check) 。该约束限制了能够插入列中的数值,60,实验4.4 PowerDesigner物理数据模型,通过限制空值的使用和提供列的默认值,也可以进行数据完整性控制。表级和列级的完整性约束只是在声明时语法上略有不同:列级约束应放在当作分隔符的逗号之前,即列名和数据类型之后;而表级约束则应作为独立的由逗号分割的语句。数据库服务器以同样的方式处理表级和列级约束,涉及到多列的约束必须作为表级约束处理,61,实验4.4 PowerDesigner物理数据模型,6. 索引 数据列和数据类型定义了包括在表中的数据的类型,索引则描述了数据在表中是如何组织的。可以创建个或多个索引来加快数据库的查询速度。索引对用户是透明的,数据库自动确定何时使用表的索引,62,实验4.4 PowerDesigner物理数据模型,一般情况下,数据库系统都支持3种索引类型: 组合索引,这类索引牵涉到多个数据列 唯一索引,这类索引不允许在索引列上有重复值,数据库服务器在索引产生和数据插入时自动检查是否有重复值,63,实验4.4 PowerDesigner物理数据模型,聚簇索引和非聚簇索引。聚簇索引要求数据库服务器按索引列对数据进行排序,使得数据行的物理顺序和其逻辑顺序一致,因此,每个表上只允许一个聚簇索引;非聚簇索引不要求逻辑顺序和物理顺序一致,每一非聚簇索引可以为用户提供不同的数据访问顺序。在列上建立索引是为了加快数据库的查询速度,表的所有者可以在其表上为bit、text或image类型之外的其他列创建和删除索引,64,实验4.4 PowerDesigner物理数据模型,7. 检查PDM的对象 PDM中可供检查的对象包括:Package (包) 、Table (表) 、Column (列) 、Index (索引) 、Key (键) 、Domain (域) 、View (视图) 、Reference (参照) 、Trigger (触发器) 、Procedure (存储过程) 、User (用户) 和File (文件) 等。对检查模型时发现的错误,可以在结果列表窗口查看出现错误或警告的原因,并可以采用手工或自动更正的方法对问题进行修改,65,66,实验4.5 PowerDesigner面向对象模型,PowerDesigner的面向对象模型 (OOM) 是利用UML (统一建模语言) 的图形来描述系统结构的模型,它从不同的角度来表现系统的工作状态。在OOM中可以设计UML的所有图形,这些UML图形有助于系统分析人员、开发人员、测试人员、管理人员、用户以及其他人员之间进行信息交流。其中,用例图、时序图和类图等共同组成了OOM的核心,67,实验4.5 PowerDesigner面向对象模型,本实验以Java语言为例,说明使用PowerDesigner建立OOM的过程。将重点讨论用例图、时序图和类图 UML中包含的其他图形,读者可根据需要自行创建,68,实验4.5 PowerDesigner面向对象模型,1. 用例图 用例图 (use case) 主要用于需求分析阶段,通常用来定义系统的高层次草图,进行系统需求分析和功能设计,它从用户的角度出发来描述应用系统的功能,指出了各个功能的外部操作者。用例图中包含执行者、用例两个要素。执行者是指用户在系统中的角色;用例是用户与计算机的一次交互。用例图描述了每个用例将有哪些执行者参与,69,网上售书系统用例图,70,实验4.5 PowerDesigner面向对象模型,在系统中,顾客首先连接到Web系统并填写所需要的检索条件;然后,Web系统开始检索数据库中提供的书目,并以列表形式提供给顾客;如果顾客确认,则发送相应的电子邮件;最后,系统处理顾客的电子邮件,销售人员通过销售系统完成销售活动,71,实验4.5 PowerDesigner面向对象模型,(1) 定义用例 用例是外部可见的一个系统功能单元,这些功能由系统单元提供,并通过一系列系统单元与一个或多个参与者之间交换的消息来表达。用例的用途是在不涉及系统内部构造的情况下定义连贯的行为。用例的定义包含用例所必需的所有行为、执行用例功能的主线次序、标准行为的不同变形、一般行为下的所有异常情况及其预期反应等。例如在网上售书系统中,可以定义的用例包括:目录、查询、发送电子邮件和

温馨提示

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

评论

0/150

提交评论