第3章RationalRose概述实例

上传人:抢*** 文档编号:240707010 上传时间:2024-05-01 格式:PPT 页数:66 大小:1.16MB
返回 下载 相关 举报
第3章RationalRose概述实例_第1页
第1页 / 共66页
第3章RationalRose概述实例_第2页
第2页 / 共66页
第3章RationalRose概述实例_第3页
第3页 / 共66页
点击查看更多>>
资源描述
RationalRose概述实例 1使用使用Rational Rose 进行进行UML可视化建模可视化建模 以某所大学的在线选修课程管理系统为例来介绍怎样使用RationalRose进行UML可视化建模。最终递交三个文件:regist.mdl,regist.sql,VB的代码或Java的代码。2一、系统描述一、系统描述大学教师选择本学期要教授的课程,每位教师最多只能上报4门课程。教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。学生填写课程选修表,每个学生最多选修4门课程;每门选修课程的学生数最多为10人,最少为3人。人数达到10人时,停止学生登记注册此门课程;学生选课结束后,系统自动取消人数少于三人的课程。学生按最终的课程表到财务处办理收费手续(billingsystem)。教师可查询所教课程的学生花名册(roster)。教务管理人员维护学生、教师和课程的信息。3二、用例图二、用例图(Use Case Diagram)1在线选修课程管理系统中的执行者(Actors)注册选修课程的学生;教授选修课程的教师;教务管理人员必须汇总选修课程情况,制作课程表;教务管理人员必须维护关于课程、教师和学生的所有信息;财务管理系统从本系统中取出收费信息。4二、用例图二、用例图(Use Case Diagram)2使用RationalRose创建执行者(Actors)右击browser框中的UseCaseView包,弹出快捷菜单;选择NewActor项;输入执行者的名字;(如出错,可用Rename命令更改)如果文档窗口不可见,选择屏幕上方的ViewDocumentation菜单;在browser框中选中所需执行者;将光标置于文档框中,输入相应文档。建立的Actor5二、用例图二、用例图(Use Case Diagram)3在线选修课程管理系统中的用例(UseCase)注册选修课程(学生);选择教授的选修课程(教师);索取课程花名册(Roster)(教师);维护课程信息(教务管理人员);维护教师信息(教务管理人员);维护学生信息(教务管理人员);创建课程目录(教务管理人员);6二、用例图二、用例图(Use Case Diagram)4使用RationalRose创建用例(UseCase)右击browser框中的UseCaseView包,弹出快捷菜单;选择NewUseCase项;输入用例的名字;(如出错,可用Rename命令更改)如果文档窗口不可见,选择屏幕上方的ViewDocumentation菜单;在browser框中选中所需用例;将光标置于文档框中,输入相应文档。新建立的用例7二、用例图二、用例图(Use Case Diagram)5使用RationalRose创建主用例图(MainUseCaseDiagram)双击browser框中的UseCaseView包中的Main条目,打开主用例图;单击选中browser框中的执行者,并将其拖到主用例图中;重复第2)步,直到完成所需的工作为止;单击选中browser框中的用例,并将其拖到主用例图中;重复第4)步,直到完成所需的工作为止;在工具条中选择单向关联(UnidirectionalAssociation)图标;单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的执行者上。8二、用例图二、用例图(Use Case Diagram)主用例图(MainUseCaseDiagram)9三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)1使用RationalRose创建活动图(ActivityDiagram)右击browser框中的UseCaseView包,弹出快捷菜单;选择NewActivityDiagram项;输入活动图的名字;(如出错,可用Rename命令更改)双击browser框中的ActivityDiagram名称,打开该图。建立选修课程目录表建立选修课程目录表10三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)2使用RationalRose创建活动(Activity)在工具条中选择Activity图标;在活动图(ActivityDiagram)中单击要放置活动(Activity)的位置;输入活动名字;(如出错,可用Rename命令更改)在工具条中选择StateTransition图标;单击一个活动,并将其拖到相应的活动上。11三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)3使用RationalRose创建决策点(DecisionPoints)在工具条中选择Decision图标;在活动图(ActivityDiagram)中单击要放置决策点的位置;输入决策的名字;(如出错,可用Rename命令更改)在工具条中选择StateTransition图标;单击一个活动,并将其拖到相应的决策点上;在工具条中选择StateTransition图标;单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;双击此条转换线,打开规格设定框;选择Detail标签页;在GuardCondition框中输入条件No;k点按OK按扭,关闭规格设定框;l在此条转换线上单击左键,选中此条转换线;m点按屏幕上方的Format:LineStyle:Rectilinear菜单;n调整这条线,使其美观。12三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)决策点决策点13三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)4使用RationalRose创建同步条(SynchronizationBar)在工具条中选择HorizontalSynchronization图标;在活动图(ActivityDiagram)中单击要放置同步条的位置;在工具条中选择StateTransition图标;完成下图。14三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)5使用RationalRose创建泳道(Swimlanes)在工具条中选择Swimlanes图标;在活动图(ActivityDiagram)中单击要放置泳道的位置;双击泳道,打开规格说明框;在Name框中输入泳道的名字;点按OK按扭,关闭规格设定框;对泳道的大小位置进行调整;将所需的活动和变换线拖至新泳道中。15三、活动图三、活动图(Activity Diagram)(建立选修课程目录表建立选修课程目录表)6使用Rational Rose 创建起始活动和终止活动在工具条中选择起始活动或终止活动图标;在活动图(Activity Diagram)中单击要放置起始活动或终止活动的位置;在工具条中选择State Transition图标;单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动上。16四、相关的包和类以及简单类图四、相关的包和类以及简单类图 1在RationalRose的Browser框中创建类(Class)右击browser框中的LogicalView,弹出快捷菜单;选择NewClass项;输入类的名字;(如出错,可用Rename命令更改)在所建类上单击右键,弹出快捷菜单;选择OpenSpecification项,选择General标签页;在Stereotype框中选择entity类;单击OK按扭关闭规格说明框。创建类创建类17四、相关的包和类以及简单类图四、相关的包和类以及简单类图 边界类边界类Boundary Classes:可用来塑造操作者与系统之间的交互;可用来理清用户在系统边界上的需求;可设计抽象的用户界面对象。控制类控制类Control Classes:可协调对象之间的交易;可将使用案例的细节部分封装起来;可将复杂的计算或商务逻辑封装起来。实体类实体类Entity Classes:代表永久保存的信息;代表E-R模型之中人、事、时、地、物或概念的信息及行为。18四、相关的包和类以及简单类图四、相关的包和类以及简单类图 2在RationalRose的Browser框中创建包(Packages)右击browser框中的LogicaView,弹出快捷菜单;选择NewPackage项;输入包的名字;(PeopleInfo包用来存放与人员有关的内容;Interfaces包用来存放与界面有关的内容;UniversityArtifacts用来存放与学校工作有关的内容。)新建图中的相关类,并设置其相应的类别;单击Browser框中的类,将其拖至相应的包中。包与类的关系图19四、相关的包和类以及简单类图四、相关的包和类以及简单类图 3Rational Rose中的主类图(Main Class Diagram)双击browser框Logica View中的Main类图以打开之;单击Browser框中的包,将其拖到Main类图上;重复第2)步,完成下图。主逻辑视图主逻辑视图20四、相关的包和类以及简单类图四、相关的包和类以及简单类图 4在RationalRose中创建包中的主类图(PackageMainClassDiagram)双击Main类图中的UniversityArtifacts包,rose将打开这个包,并创建这个包的主类图(PackageMainClassDiagram);单击Browser框中的类,将其拖到类图上;重复第2)步,完成下图。21五、用例实现图五、用例实现图(Use Case Realization Diagram)1使用RationalRose创建逻辑视图中的用例图(UseCaseDiagram)22五、用例实现图五、用例实现图(Use Case Realization Diagram)右击browser框中的Logica View,弹出快捷菜单;选择NewUse Case Diagram项;输入用例图的名字“Realizations”;(如出错,可用Rename命令更改)右击browser框中的Logica View,弹出快捷菜单;选择New Use Case项;输入用例的名字;(如出错,可用Rename命令更改)双击新建的用例,打开用例的规格设定框;单击Stereotype框,选择use case realization选项;关闭用例的规格设定框;重复49步,双击“Realizations”,打开实现用例图;k将新建的实现用例拖入图中,如下图。23五、用例实现图五、用例实现图(Use Case Realization Diagram)24六、顺序图六、顺序图(Sequence Diagram)与协作图与协作图(Collaboration Diagram)1使用RationalRose创建顺序图(SequenceDiagram)右击browser框中的LogicaView中的“Maintaincourseinformation”实现用例,弹出快捷菜单;选择NewSequenceDiagram项;输入顺序图的名字“Creatacourse”;25六、顺序图六、顺序图(Sequence Diagram)与协作图与协作图(Collaboration Diagram)2在顺序图中创建对象和信息双击顺序图名称,打开顺序图;将browser框UseCaseView包中的执行者“Registrar”拖入图中;选择工具条中的“Object”图标;单击图中放置对象的位置,并输入相应的名字;重复34步;选择工具条中的“ObjectMessage”图标;从信息发出者拖至信息接收者;输入信息的名字;重复68步。26六、顺序图六、顺序图(Sequence Diagram)与协作图与协作图(Collaboration Diagram)3给顺序图中的对象分配类单击选中Browser框中所需的类;将此类拖至顺序图相应的对象上。27六、顺序图六、顺序图(Sequence Diagram)与协作图与协作图(Collaboration Diagram)4将顺序图转换为合作图双击顺序图名称,打开顺序图;选择屏幕上方的菜单BrowserCreateCollaborationDiagram,或者点按F5键;调整图中的对象和信息,使其美观。28七、类图中的关系七、类图中的关系(Relationships)1使用RationalRose创建关系(Relationship)打开UniversityArtifacts包中的Main类图;选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择Customize项将其加入);点按类图中的一个类,拖至另一个类,输入关系的名称;选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择Customize项将其加入);点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。29七、类图中的关系七、类图中的关系(Relationships)2使用RationalRose创建角色(Role)新建一个PeopleInfo包的Main类图;右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;选择RoleName项,输入角色的名字。30七、类图中的关系七、类图中的关系(Relationships)3增加多重度双击关系线,使其弹出规格设定框;选择Detail标签页(RoleADetail或者RoleBDetail);在Multiplicity框中输入或选择相应的多重度;点按OK按扭,关闭规格设定框。31七、类图中的关系七、类图中的关系(Relationships)4创建包之间的关系打开LogicaView中的Main类图;选择工具条中的“dependency”图标;点按类图中的一个客户包,拖至另一个供应包。32八、类图中的操作与属性八、类图中的操作与属性 1使用RationalRose创建属性和方法右击browser框LogicaView中UniversityArtifacts包中的类,弹出快捷菜单;选择NewAttribute项,输入相应的名字;重复12步,完成添加属性;右击browser框LogicaView中UniversityArtifacts包中的类,弹出快捷菜单;选择NewOperation项,输入相应的名字;重复45步,完成添加操作;33八、类图中的操作与属性八、类图中的操作与属性 2在类中增加了属性和操作后对类图的影响打开UniversityArtifacts包中的Main类图;将图中相关类的显示改为label(右击每一个类,选择Options:StereotypeDisplay:Label菜单);类图中相应的属性与操作自动变化为下图。34九、类图中的泛化九、类图中的泛化 1使用RationalRose创建一个有泛化关系的类图在PeopleInfo包中创建一个空类图Generalization;创建类图中相关的类,并将相关的类拖入图中;选择工具条中的“Generalization”图标;点按类图中的一个子类,拖至一个父类;重复第4步完成下图;将左边的泛化箭头拖至右边的泛化线上;调整图形。35九、类图中的泛化九、类图中的泛化 2将有泛化关系的类图进行扩展将CourseOffering类拖入图中,并创建对应的关联线、角色、多重度;为相关的类创建属性。36九、类图中的泛化九、类图中的泛化 3将有泛化关系的类图进行优化在Browser框中将子类中的公共属性拖入父类中;将子类中多余的属性删去。37九、类图中的泛化九、类图中的泛化 4将有泛化关系的类图进行多层泛化在PeopleInfo包中创建相关的类,并拖入图中;创建关系线、泛化线和多重度。38十、状态图十、状态图(Statechart Diagram)1使用RationalRose创建状态图(StatechartDiagrams)右击browser框中的CourseOffering类,弹出快捷菜单;选择NewStatechartDiagrams项;输入状态图的名字“CourseOfferingStates”。39十、状态图十、状态图(Statechart Diagram)2使用RationalRose创建状态(States)在工具条中选择State图标;在状态图中单击要放置状态的位置;输入状态的名字。(如出错,可用Rename命令更改)40十、状态图十、状态图(Statechart Diagram)3使用RationalRose创建状态转换(StateTransitions)在工具条中选择StateTransitions图标;单击起始状态,并拖至下一个状态;输入状态转换的名字。(如出错,可用Rename命令更改)41十、状态图十、状态图(Statechart Diagram)4使用RationalRose创建起始状态在工具条中选择Start图标;在状态图中单击要放置起始状态的位置;用状态转换线进行连接。42十、状态图十、状态图(Statechart Diagram)5使用RationalRose创建结束状态在工具条中选择Stop图标;在状态图中单击要放置结束状态的位置;用状态转换线进行连接。43十、状态图十、状态图(Statechart Diagram)6使用RationalRose增加状态转换的细节部分双击某条转换线,打开规格设定框;选择Detail标签页;在相应的框中输入action(/后的内容)、guardcondition(里的内容)以及发出的send(后的内容);点按OK按扭,关闭规格设定框。44十、状态图十、状态图(Statechart Diagram)7使用RationalRose增加状态的Actions部分双击某个状态,打开规格设定框;选择Actions标签页;右击Actions框中的任一位置,弹出快捷菜单;选择Insert项,将创建一个类型为entry的action;双击这个action,弹出action的规格设定框;在when框中设定相应的类型;在type框中设定:action或者sendevent(用表示);输入action的名字,或event的信息;点按OK按扭,关闭Action规格设定框。点按OK按扭,关闭状态规格设定框。45十、状态图十、状态图(Statechart Diagram)设置action后的状态图46十一、构件图十一、构件图(Component Diagram)1.使用RationalRose创建Main构件图(ComponentDiagram)在Browser框中的ComponentView中创建图中的各个构件包;双击Browser框中的ComponentView中的Main构件图;将Browser框中的ComponentView中的构件包拖入图中;创建包之间的依赖线。47十一、构件图十一、构件图(Component Diagram)2创建University构件包中的构件双击Main构件图中的University包,打开图形;在工具条中选择Component图标;单击图中某一位置,放置构件;输入构件名称。48十一、构件图十一、构件图(Component Diagram)3将类映射到构件上右击Browser框中的CourseOffering构件,弹出快捷菜单;选择OpenSpecification项;选择Realizes标签;右击所需的类,弹出快捷菜单;选择Assign项;(分配)点按OK按扭,关闭规格设定框。49十二、部署图十二、部署图(Deployment Diagram)1使用RationalRose创建部署图(DeploymentDiagram)双击Browser框中的部署图(DeploymentDiagram);选择工具条中的Processor图标,并单击图中某一位置;输入结点的名字;选择工具条中的Connection图标;点击某一结点,拖至另一结点;选择工具条中的Text图标;在相应结点下写上文字。50十三、生成程序代码十三、生成程序代码 1使用RationalRose为构件设定程序设计语言右击Browser框ComponentView中University包中的CourseOffering构件,弹出快捷菜单;选择OpenSpecification项,打开构件CourseOffering的规格设定框;在Language框中选择相应的语言;点按OK按扭关闭对话框。51十三、生成程序代码十三、生成程序代码2建模辅助工具(如需要设定,则可进入,一般情况下可省略)右击Browser框LogicaView中University包中的CourseOffering类,弹出快捷菜单,选择ModelAssistant项;如需要设定,则可更改选项,一般情况下可省略此步操作;编程语言为VisualBasic时,见图44,前提是系统必须安装了VB;编程语言为Java时,见图45,前提是系统必须安装了JDK。52十三、生成程序代码十三、生成程序代码图44:编程语言为VisualBasic时53十三、生成程序代码十三、生成程序代码图45:编程语言为Java时54十三、生成程序代码十三、生成程序代码3生成代码1)右击Browser框ComponentView中University包中的CourseOffering构件,弹出快捷菜单;2)选择UpdateCode项;55十三、生成程序代码十三、生成程序代码3)选中相应的check框,点击Next按扭;56十三、生成程序代码十三、生成程序代码4)点击Finish按扭;5)如有错误,则显示相应错误;6)点按Close按扭,关闭窗口。57十四、创建数据库设计十四、创建数据库设计 1将实体类的persistence属性设为persistent本系统有四个实体类:Student、Professor、Course、CourseOffering,分别将它们的persistence属性设为persistent。以Course为例,双击Browser框LogicalView中UniversityArtifacts中Course类,弹出classspecification对话框,选择detailtab,将persistence属性设为persistent。58十四、创建数据库设计十四、创建数据库设计 2生成数据模型将UniversityArtifacts包和PeopleInfo包转成数据库的数据模型。以UniversityArtifacts为例。右击Browser框LogicalView中UniversityArtifacts包,弹出快捷菜单,选择DataModeler/TransformtoDataModel。弹出对话框,在DestinationSchema中键入”db”,点击”OK”。在Browser框LogicalView中将生成”Schemas”包和“db”子包。子包中生成了T_Course和T_CourseOffering两个table。对PeopleInfo包进行相同操作,生成T_Student,T_Professor,T_RegistrationUser三个table.59十四、创建数据库设计十四、创建数据库设计 3创建DataModelDiagram右击Browser框中LogicalView/”Schemas”/“db”,弹出快捷菜单,选择DataModeler/New/DataModelDiagram,生成一个DataModelDiagram,取名为Main。60十四、创建数据库设计十四、创建数据库设计 双击Main,打开进行编辑,将五个table拖进diagram,生成ER图。61十四、创建数据库设计十四、创建数据库设计 4生成SQL语句右击Browser框中LogicalView/”Schemas”/“db”,弹出快捷菜单,选择DataModeler/ForwardEngineer,跟wizard进行操作,将生成的SQL语句保存在文件中。62十五、转换后的十五、转换后的Visual Basic程序程序 OptionExplicit#ModelId=3E2A1E9D0148ImplementsCourse#ModelId=3E2E13980177PrivatemCourseObjectAsNewUniversityArtifacts.Course/*由Course泛化而来*/#ModelId=3E2A980002EEPublicTeacherAsProfessor/*由设置角色而来*/#ModelId=3E2A9DAE0261PublicNewProperty2(3To10)AsStudent/*由限定条件而来*/#ModelId=3E2A7BEB035DPublicNewPropertyAsCourse#ModelId=3E2A826C0109PublicSubgetOffering()/*由getOffering操作而来*/EndSub#ModelId=3E2A827B0280PublicSubaddProfessor()/*由addProfessor操作而来*/EndSub#ModelId=3E2E139801F4PrivateSubCourse_getOfferings()/*由泛化继承而来*/EndSub#ModelId=3E2E13980203PrivateSubCourse_setProfessor()/*由泛化继承而来*/EndSub#ModelId=3E2E13980213PrivatePropertySetCourse_(ByValRHSAsCourseOffering)EndProperty#ModelId=3E2E13980261PrivatePropertyGetCourse_()AsCourseOfferingEndProperty#ModelId=3E2E1F55030DPublicSubCourseOffering()EndSub#ModelId=3E2E3247038APrivatePropertySetCourse_theProfessorCourseManager(ByValRHSAsProfessorCourseManager)EndProperty#ModelId=3E2E32480000PrivatePropertyGetCourse_theProfessorCourseManager()AsProfessorCourseManagerEndProperty#ModelId=3E2E3248003EPrivatePropertySetCourse_theCourseOffering(ByValRHSAsCourseOffering)EndProperty#ModelId=3E2E3248009CPrivatePropertyGetCourse_theCourseOffering()AsCourseOfferingEndProperty63十六、转换后的十六、转换后的java程序程序/Sourcefile:C:ProgramFilesRationalRUPBuilderUniversityCourseOffering.javapackageUniversity;publicclassCourseOfferingextendsCourse/*由Course泛化而来*/privateCoursemCourseObject;publicProfessorTeacher;/*由设置角色而来*/publicStudentNewProperty2;publicCourseNewProperty;/*roseuid3E2E1F55030D*/publicCourseOffering()/*roseuid3E2A826C0109*/publicvoidgetOffering()/*由getOffering操作而来*/*roseuid3E2A827B0280*/publicvoidaddProfessor()/*由addProfessor操作而来*/*roseuid3E2E139801F4*/privatevoidCourse_getOfferings()/*由泛化继承而来*/*roseuid3E2E13980203*/privatevoidCourse_setProfessor()/*由泛化继承而来*/*paramRHS*roseuid3E2E13980213*/privatevoidCourse_(CourseOfferingRHS)/*returnCourseOffering*roseuid3E2E13980261*/privateCourseOfferingCourse_()returnnull;64十七、生成的十七、生成的SQL语句语句 CREATETABLET_Course(nameSMALLINTNOTNULL,descriptionSMALLINTNOTNULL,creditHoursSMALLINTNOTNULL,T_Course_IDINTEGERNOTNULL,CONSTRAINTPK_T_Course7PRIMARYKEY(T_Course_ID);CREATETABLET_CourseOffering(T_CourseOffering_IDINTEGERNOTNULL,T_Course_IDINTEGER,T_RegistrationUser_IDINTEGERNOTNULL,COL_2INTEGERNOTNULL,CONSTRAINTPK_T_CourseOffering8PRIMARYKEY(T_CourseOffering_ID);CREATETABLET_RegistrationUser(realnameVARCHAR(255)NOTNULL,usernameVARCHAR(255)NOTNULL,passwordVARCHAR(255)NOTNULL,birthdayDATENOTNULL,genderSMALLINTNOTNULL,T_RegistrationUser_IDINTEGERNOTNULL,departmentINTEGERNOTNULL,CONSTRAINTPK_T_RegistrationUser11PRIMARYKEY(T_RegistrationUser_ID);CREATETABLET_Professor(T_RegistrationUser_IDINTEGERNOTNULL,CONSTRAINTPK_T_Professor12PRIMARYKEY(T_RegistrationUser_ID);CREATETABLET_Student(T_RegistrationUser_IDINTEGERNOTNULL,CONSTRAINTPK_T_Student13PRIMARYKEY(T_RegistrationUser_ID);CREATEINDEXTC_T_CourseOffering35ONT_CourseOffering(COL_2);CREATEINDEXTC_T_CourseOffering28ONT_CourseOffering(T_Course_ID);ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering13FOREIGNKEY(COL_2)REFERENCEST_Professor(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENOACTION;ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering8FOREIGNKEY(T_Course_ID)REFERENCEST_Course(T_Course_ID)ONDELETENOACTIONONUPDATENOACTION;ALTERTABLET_CourseOfferingADDCONSTRAINTFK_T_CourseOffering10FOREIGNKEY(T_RegistrationUser_ID)REFERENCEST_Professor(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENOACTION;ALTERTABLET_ProfessorADDCONSTRAINTFK_T_Professor11FOREIGNKEY(T_RegistrationUser_ID)REFERENCEST_RegistrationUser(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENOACTION;ALTERTABLET_StudentADDCONSTRAINTFK_T_Student12FOREIGNKEY(T_RegistrationUser_ID)REFERENCEST_RegistrationUser(T_RegistrationUser_ID)ONDELETENOACTIONONUPDATENOACTION;65本章结束66
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


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

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


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