RationalRose-详细介绍和例子详细操作-22页文档资料.doc

上传人:1595****071 文档编号:33868180 上传时间:2022-08-12 格式:DOC 页数:22 大小:935.50KB
返回 下载 相关 举报
RationalRose-详细介绍和例子详细操作-22页文档资料.doc_第1页
第1页 / 共22页
RationalRose-详细介绍和例子详细操作-22页文档资料.doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《RationalRose-详细介绍和例子详细操作-22页文档资料.doc》由会员分享,可在线阅读,更多相关《RationalRose-详细介绍和例子详细操作-22页文档资料.doc(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流RationalRose-详细介绍和例子详细操作【精品文档】第 22 页使用Rational Rose 进行UML可视化建模 本课程以某所大学的在线选修课程管理系统为例来介绍怎样使用Rational Rose 进行UML可视化建模。最终递交三个文件:regist.mdl, regist.sql, VB的代码或Java的代码。内容:一、系统描述2二、用例图(Use Case View)2三、活动图(Activity Diagram)(建立选修课程目录表)5四、相关的包和类以及简单类图11五、用例实现图(Use Case Realization Diagra

2、m)13六、顺序图(Sequence Diagram)与合作图(Collaboration Diagram)15七、类图中的关系(Relationships)18八、类图中的操作与属性20九、类图中的泛化22十、状态图(Statechart Diagram)26十一、构件图(Component Diagram)31十二、部署图(Deployment Diagram)34十三、生成程序代码35十四、创建数据库设计40十五、附件1:转换后的Visual Basic程序44十六、附件2:转换后的Java程序45十七、附件3:生成的SQL语句46一、 系统描述1 大学教师选择本学期要教授的课程,每位教

3、师最多只能上报4门课程。2 教师选课结束后,教务管理人员进行协调和确认教师的课程,并创建本学期的课程目录表,向学生公布。2学生填写课程选修表,每个学生最多选修4门课程;每门选修课程的学生数最多为10人,最少为3人。人数达到10人时,停止学生登记注册此门课程;3 学生选课结束后,系统自动取消人数少于三人的课程。4 学生按最终的课程表到财务处办理收费手续(billing system)。5 教师可查询所教课程的学生花名册(roster)。6 教务管理人员维护学生、教师和课程的信息。二、 用例图(Use Case View) 1在线选修课程管理系统中的执行者(Actors)l 注册选修课程的学生;l

4、 教授选修课程的教师;l 教务管理人员必须汇总选修课程情况,制作课程表;l 教务管理人员必须维护关于课程、教师和学生的所有信息; l 财务管理系统从本系统中取出收费信息。2使用Rational Rose 创建执行者(Actors)图11) 右击browser框中的Use Case View包,弹出快捷菜单;2) 选择NewActor项;3) 输入执行者的名字;(如出错,可用Rename命令更改)4) 如果文档窗口不可见,选择屏幕上方的ViewDocumentation菜单;5) 在browser框中选中所需执行者;6) 将光标置于文档框中,输入相应文档。3在线选修课程管理系统中的用例(Use

5、Case)l 注册选修课程(学生);l 选择教授的选修课程(教师);l 索取课程花名册(Roster)(教师);l 维护课程信息(教务管理人员);l 维护教师信息(教务管理人员);l 维护学生信息(教务管理人员);l 创建课程目录(教务管理人员);4使用Rational Rose 创建用例(Use Case)图21) 右击browser框中的Use Case View包,弹出快捷菜单;2) 选择NewUse Case项;3) 输入用例的名字;(如出错,可用Rename命令更改)4) 如果文档窗口不可见,选择屏幕上方的View Documentation菜单;5) 在browser框中选中所需用

6、例;6) 将光标置于文档框中,输入相应文档。5使用Rational Rose 创建主用例图(Main Use Case Diagram)1) 双击browser框中的Use Case View包中的Main条目,打开主用例图;2) 单击选中browser框中的执行者,并将其拖到主用例图中;3) 重复第2)步,直到完成所需的工作为止;4) 单击选中browser框中的用例,并将其拖到主用例图中;5) 重复第4)步,直到完成所需的工作为止;6) 在工具条中选择单向关联(Unidirectional Association)图标;7) 单击一个执行者,并拖到相应的用例上;或单击一个用例,并拖到相应的

7、执行者上。图3三、 活动图(Activity Diagram)(建立选修课程目录表)图41使用Rational Rose 创建活动图(Activity Diagram)1) 右击browser框中的Use Case View包,弹出快捷菜单;2) 选择NewActivity Diagram项;3) 输入活动图的名字;(如出错,可用Rename命令更改)4) 双击browser框中的Activity Diagram名称,打开该图。2使用Rational Rose 创建活动(Activity)1) 在工具条中选择Activity图标;2) 在活动图(Activity Diagram)中单击要放置活

8、动(Activity)的位置;3) 输入活动名字;(如出错,可用Rename命令更改)4) 在工具条中选择State Transition图标;5) 单击一个活动,并将其拖到相应的活动上。图53使用Rational Rose 创建决策点(Decision Points)1) 在工具条中选择Decision图标;2) 在活动图(Activity Diagram)中单击要放置决策点的位置;3) 输入决策的名字;(如出错,可用Rename命令更改)4) 在工具条中选择State Transition图标;5) 单击一个活动,并将其拖到相应的决策点上;6) 在工具条中选择State Transitio

9、n图标;7) 单击一个决策点,拖至拐角处单击左键,再将其拖到相应的活动上;8) 双击此条转换线,打开规格设定框;9) 选择Detail 标签页;10) 在Guard Condition框中输入条件No;11) 点按OK按扭,关闭规格设定框;12) 在此条转换线上单击左键,选中此条转换线;13) 点按屏幕上方的Format:Line Style:Rectilinear菜单;14) 调整这条线,使其美观。图64使用Rational Rose 创建同步条(Synchronization Bar)1) 在工具条中选择Horizontal Synchronization图标;2) 在活动图(Activi

10、ty Diagram)中单击要放置同步条的位置;3) 在工具条中选择State Transition图标;4) 完成下图。图75使用Rational Rose 创建泳道(Swim lanes)1) 在工具条中选择Swim lanes图标;2) 在活动图(Activity Diagram)中单击要放置泳道的位置;3) 双击泳道,打开规格说明框;4) 在Name框中输入泳道的名字;5) 点按OK按扭,关闭规格设定框;6) 对泳道的大小位置进行调整;7) 将所需的活动和变换线拖至新泳道中。图86使用Rational Rose 创建起始活动和终止活动1) 在工具条中选择起始活动或终止活动图标;2) 在

11、活动图(Activity Diagram)中单击要放置起始活动或终止活动的位置;3) 在工具条中选择State Transition图标;4) 单击起始活动,拖到相应的活动上,或者单击一个活动,拖至终止活动上。图9四、 相关的包和类以及简单类图1在Rational Rose的Browser框中创建类(Class)图101) 右击browser框中的Logica View,弹出快捷菜单;2) 选择NewClass项;3) 输入类的名字;(如出错,可用Rename命令更改)4) 在所建类上单击右键,弹出快捷菜单;5) 选择Open Specification项,选择General标签页;6) 在S

12、tereotype框中选择entity类;7) 单击OK按扭关闭规格说明框。边界类Boundary Classes:l 可用来塑造操作者与系统之间的交互;l 可用来理清用户在系统边界上的需求;l 可设计抽象的用户界面对象。控制类Control Classes:l 可协调对象之间的交易;l 可将使用案例的细节部分封装起来;l 可将复杂的计算或商务逻辑封装起来。实体类Entity Classes:l 代表永久保存的信息;l 代表E-R模型之中人、事、时、地、物或概念的信息及行为。2在Rational Rose的Browser框中创建包(Packages)1) 右击browser框中的Logica

13、View,弹出快捷菜单;2) 选择New Package项;3) 输入包的名字;(PeopleInfo包用来存放与人员有关的内容;Interfaces包用来存放与界面有关的内容;UniversityArtifacts用来存放与学校工件有关的内容。)4) 新建图中的相关类,并设置其相应的类别;5) 单击Browser框中的类,将其拖至相应的包中。图113Rational Rose中的主类图(Main Class Diagram)1) 双击browser框Logica View中的Main类图以打开之;2) 单击Browser框中的包,将其拖到Main类图上;3) 重复第2)步,完成下图。图124

14、在Rational Rose中创建包中的主类图(Package Main Class Diagram)1) 双击Main类图中的University Artifacts包,rose将打开这个包,并创建这个包的主类图(Package Main Class Diagram);2) 单击Browser框中的类,将其拖到类图上;3) 重复第2)步,完成下图。图13五、 用例实现图(Use Case Realization Diagram)1使用Rational Rose 创建逻辑视图中的用例图(Use Case Diagram)图141) 右击browser框中的Logica View,弹出快捷菜单;

15、2) 选择NewUse Case Diagram项;3) 输入用例图的名字“Realizations”;(如出错,可用Rename命令更改)4) 右击browser框中的Logica View,弹出快捷菜单;5) 选择New Use Case项;6) 输入用例的名字;(如出错,可用Rename命令更改)7) 双击新建的用例,打开用例的规格设定框;8) 单击Stereotype框,选择use case realization选项;9) 关闭用例的规格设定框;10) 重复49步,双击“Realizations”,打开实现用例图;11) 将新建的实现用例拖入图中,如下图。图15六、 顺序图(Sequ

16、ence Diagram)与合作图(Collaboration Diagram)1使用Rational Rose 创建顺序图(Sequence Diagram)图161) 右击browser框中的Logica View中的“Maintain course information”实现用例,弹出快捷菜单;2) 选择New Sequence Diagram项;3) 输入顺序图的名字“Creat a course”;2在顺序图中创建对象和信息1) 双击顺序图名称,打开顺序图;2) 将browser框Use CaseView包中的执行者“Registrar”拖入图中;3) 选择工具条中的“Object

17、”图标;4) 单击图中放置对象的位置,并输入相应的名字;5) 重复34步;6) 选择工具条中的“Object Message”图标;7) 从信息发出者拖至信息接收者;8) 输入信息的名字;9) 重复68步。图173给顺序图中的对象分配类1) 单击选中Browser框中所需的类;2) 将此类拖至顺序图相应的对象上。图183将顺序图转换为合作图图191) 双击顺序图名称,打开顺序图;2) 选择屏幕上方的菜单BrowserCreate Collaboration Diagram,或者点按F5键;3) 调整图中的对象和信息,使其美观。七、 类图中的关系(Relationships)1使用Rationa

18、l Rose 创建关系(Relationship)图201) 打开University Artifacts包中的Main类图;2) 选择工具条中的“Association”图标(若此图标不存在,则右击工具条,选择Customize项将其加入);3) 点按类图中的一个类,拖至另一个类,输入关系的名称;4) 选择工具条中的“Aggregation”图标(若此图标不存在,则右击工具条,选择Customize项将其加入);5) 点按类图中的一个整体类,拖至另一个部分类,输入关系的名称。2使用Rational Rose 创建角色(Role)图211) 新建一个People Info包的Main类图;2)

19、 右击关系线(靠近需要创建角色的类的一端),弹出快捷菜单;3) 选择Role Name项,输入角色的名字。3增加多重度图221) 双击关系线,使其弹出规格设定框;2) 选择Detail标签页(Role A Detail 或者 Role B Detail);3) 在Multiplicity框中输入或选择相应的多重度;4) 点按OK按扭,关闭规格设定框。4创建包之间的关系图231) 打开Logica View中的Main类图;2) 选择工具条中的“dependency”图标;3) 点按类图中的一个客户包,拖至另一个供应包。八、 类图中的操作与属性图241使用Rational Rose 创建属性和方

20、法1) 右击browser框Logica View中UniversityArtifacts包中的类,弹出快捷菜单;2) 选择NewAttribute项,输入相应的名字;3) 重复12步,完成添加属性;4) 右击browser框Logica View中UniversityArtifacts包中的类,弹出快捷菜单;5) 选择NewOperation项,输入相应的名字;6) 重复45步,完成添加操作;2在类中增加了属性和操作后对类图的影响1) 打开University Artifacts包中的Main类图;2) 将图中相关类的显示改为label(右击每一个类,选择Options: Stereotyp

21、e Display: Label菜单);3) 类图中相应的属性与操作自动变化为下图。图25九、 类图中的泛化1使用Rational Rose 创建一个有泛化关系的类图1) 在People Info包中创建一个空类图Generalization;2) 创建类图中相关的类,并将相关的类拖入图中;3) 选择工具条中的“Generalization”图标;4) 点按类图中的一个子类,拖至一个父类;5) 重复第4步完成下图;图266) 将左边的泛化箭头拖至右边的泛化线上;7) 调整图形。图272将有泛化关系的类图进行扩展1) 将Course Offering类拖入图中,并创建对应的关联线、角色、多重度;

22、2) 为相关的类创建属性。图283将有泛化关系的类图进行优化1) 在Browser框中将子类中的公共属性拖入父类中;2) 将子类中多余的属性删去。图294将有泛化关系的类图进行多层泛化1) 在People Info包中创建相关的类,并拖入图中;2) 创建关系线、泛化线和多重度。图30十、 状态图(Statechart Diagram)1使用Rational Rose 创建状态图(Statechart Diagrams)图311) 右击browser框中的CourseOffering类,弹出快捷菜单;2) 选择NewStatechart Diagrams项;3) 输入状态图的名字“CourseO

23、ffering States”。2使用Rational Rose 创建状态(States)图321) 在工具条中选择State图标;2) 在状态图中单击要放置状态的位置;3) 输入状态的名字。(如出错,可用Rename命令更改)3使用Rational Rose 创建状态转换(State Transitions)图331) 在工具条中选择State Transitions图标;2) 单击起始状态,并拖至下一个状态;3) 输入状态转换的名字。(如出错,可用Rename命令更改)4使用Rational Rose 创建起始状态1) 在工具条中选择Start图标;2) 在状态图中单击要放置起始状态的位置

24、;3) 用状态转换线进行连接。图345使用Rational Rose 创建结束状态图351) 在工具条中选择Stop图标;2) 在状态图中单击要放置结束状态的位置;3) 用状态转换线进行连接。6使用Rational Rose 增加状态转换的细节部分1) 双击某条转换线,打开规格设定框;2) 选择Detail 标签页;3) 在相应的框中输入action(/后的内容)、guard condition( 里的内容)以及发出的send(后的内容);4) 点按OK按扭,关闭规格设定框。图367使用Rational Rose 增加状态的Actions部分1) 双击某个状态,打开规格设定框;2) 选择Act

25、ions标签页;3) 右击Actions框中的任一位置,弹出快捷菜单;4) 选择Insert项,将创建一个类型为entry的action;5) 双击这个action,弹出action的规格设定框;图376) 在when框中设定相应的类型;7) 在type框中设定:action或者send event(用表示);8) 输入action的名字,或event的信息;9) 点按OK按扭,关闭Action规格设定框。10) 点按OK按扭,关闭状态规格设定框。图38十一、 构件图(Component Diagram)1 使用Rational Rose 创建Main构件图(Component Diagram

26、)1) 在Browser框中的Component View中创建图中的各个构件包;2) 双击Browser框中的Component View中的Main构件图;3) 将Browser框中的Component View中的构件包拖入图中;4) 创建包之间的依赖线。图392创建University构件包中的构件1) 双击Main构件图中的University包,打开图形;2) 在工具条中选择Component图标;3) 单击图中某一位置,放置构件;4) 输入构件名称。图403将类映射到构件上图411) 右击Browser框中的CourseOffering构件,弹出快捷菜单;2) 选择Open Sp

27、ecification项;3) 选择Realizes标签;4) 右击所需的类,弹出快捷菜单;5) 选择Assign项;(分配)6) 点按OK按扭,关闭规格设定框。十二、 部署图(Deployment Diagram)1使用Rational Rose 创建部署图(Deployment Diagram)1) 双击Browser框中的部署图(Deployment Diagram);2) 选择工具条中的Processor图标,并单击图中某一位置;3) 输入结点的名字;4) 选择工具条中的Connection图标;5) 点击某一结点,拖至另一结点;6) 选择工具条中的Text图标;7) 在相应结点下写上

28、文字。图42十三、 生成程序代码 1使用Rational Rose为构件设定程序设计语言图431) 右击Browser框Component View中University包中的CourseOffering构件,弹出快捷菜单;2) 选择Open Specification项,打开构件Course Offering的规格设定框;3) 在Language框中选择相应的语言;4) 点按OK按扭关闭对话框。2建模辅助工具(如需要设定,则可进入,一般情况下可省略) 1) 右击Browser框Logica View中University包中的Course Offering类,弹出快捷菜单,选择Model A

29、ssistant项;2) 如需要设定,则可更改选项,一般情况下可省略此步操作;3) 编程语言为Visual Basic时,见图44,前提是系统必须安装了VB;编程语言为Java时,见图45,前提是系统必须安装了JDK。图44:编程语言为Visual Basic时图45:编程语言为Java时3生成代码 1) 右击Browser框Component View中University包中的CourseOffering构件,弹出快捷菜单;2) 选择Update Code项;图463) 选中相应的check框,点击Next按扭;图474) 点击Finish按扭;图485) 如有错误,则显示相应错误;6)

30、点按Close按扭,关闭窗口。十四、 创建数据库设计1将实体类的persistence属性设为persistent本系统有四个实体类:Student、Professor、Course、CourseOffering,分别将它们的persistence属性设为persistent。以Course为例,双击Browser框Logical View中UniversityArtifacts中Course类,弹出class specification对话框,选择detail tab,将persistence属性设为persistent。图492生成数据模型 将UniversityArtifacts包和Pe

31、opleInfo包转成数据库的数据模型。以UniversityArtifacts为例。右击Browser框Logical View中UniversityArtifacts包,弹出快捷菜单,选择Data Modeler/ Transform to Data Model。弹出对话框,在Destination Schema中键入”db”,点击”OK”。在Browser框Logical View中将生成”Schemas”包和“db”子包。子包中生成了T_Course和T_CourseOffering两个table。对PeopleInfo包进行相同操作,生成T_Student, T_Professor,

32、 T_RegistrationUser三个table.图503创建Data Model Diagram右击Browser框中Logical View/”Schemas”/“db”,弹出快捷菜单,选择Data Modeler/ New/ Data Model Diagram,生成一个Data Model Diagram, 取名为Main。图51双击Main,打开进行编辑,将五个table拖进diagram,生成ER图。图524生成SQL语句右击Browser框中Logical View/”Schemas”/“db”,弹出快捷菜单,选择Data Modeler/ Forward Engineer,

33、跟wizard进行操作,将生成的SQL语句保存在文件中。参见附件3。你可以选择生成表格create或drop的SQL语句。图53十五、 附件1:转换后的Visual Basic程序Option Explicit#ModelId=3E2A1E9D0148Implements Course#ModelId=3E2E13980177Private mCourseObject As New UniversityArtifacts.Course /*由Course 泛化而来*/#ModelId=3E2A980002EEPublic Teacher As Professor /*由设置角色而来*/#Mod

34、elId=3E2A9DAE0261Public NewProperty2(3 To 10) As Student/*由限定条件而来*/#ModelId=3E2A7BEB035DPublic NewProperty As Course#ModelId=3E2A826C0109Public Sub getOffering()/*由getOffering操作而来*/End Sub#ModelId=3E2A827B0280Public Sub addProfessor()/*由addProfessor操作而来*/End Sub#ModelId=3E2E139801F4Private Sub Cours

35、e_getOfferings()/*由泛化继承而来*/End Sub#ModelId=3E2E13980203Private Sub Course_setProfessor()/*由泛化继承而来*/End Sub#ModelId=3E2E13980213Private Property Set Course_(ByVal RHS As CourseOffering)End Property#ModelId=3E2E13980261Private Property Get Course_() As CourseOfferingEnd Property#ModelId=3E2E1F55030DPu

36、blic Sub CourseOffering()End Sub#ModelId=3E2E3247038APrivate Property Set Course_theProfessorCourseManager(ByVal RHS As ProfessorCourseManager)End Property#ModelId=3E2E32480000Private Property Get Course_theProfessorCourseManager() As ProfessorCourseManagerEnd Property#ModelId=3E2E3248003EPrivate Pr

37、operty Set Course_theCourseOffering(ByVal RHS As CourseOffering)End Property#ModelId=3E2E3248009CPrivate Property Get Course_theCourseOffering() As CourseOfferingEnd Property十六、 附件2:转换后的Java程序/Source file: C:Program FilesRationalRUPBuilderUniversityCourseOffering.javapackage University;public class

38、CourseOffering extends Course /*由Course 泛化而来*/ private Course mCourseObject; public Professor Teacher; /*由设置角色而来*/ public Student NewProperty2; public Course NewProperty; /* roseuid 3E2E1F55030D */ public CourseOffering() * roseuid 3E2A826C0109 public void getOffering()/*由getOffering操作而来*/ * roseuid

39、 3E2A827B0280 public void addProfessor()/*由addProfessor操作而来*/ * roseuid 3E2E139801F4 private void Course_getOfferings()/*由泛化继承而来*/ * roseuid 3E2E13980203 private void Course_setProfessor()/*由泛化继承而来*/ * param RHS * roseuid 3E2E13980213 private void Course_(CourseOffering RHS) * return CourseOffering

40、* roseuid 3E2E13980261 private CourseOffering Course_() return null;十七、 附件3:生成的SQL语句CREATE TABLE T_Course (name SMALLINT NOT NULL,description SMALLINT NOT NULL,creditHours SMALLINT NOT NULL,T_Course_ID INTEGER NOT NULL,CONSTRAINT PK_T_Course7 PRIMARY KEY (T_Course_ID)CREATE TABLE T_CourseOffering (T

41、_CourseOffering_ID INTEGER NOT NULL,T_Course_ID INTEGER,T_RegistrationUser_ID INTEGER NOT NULL,COL_2 INTEGER NOT NULL,CONSTRAINT PK_T_CourseOffering8 PRIMARY KEY (T_CourseOffering_ID)CREATE TABLE T_RegistrationUser (realname VARCHAR ( 255 ) NOT NULL,username VARCHAR ( 255 ) NOT NULL,password VARCHAR

42、 ( 255 ) NOT NULL,birthday DATE NOT NULL,gender SMALLINT NOT NULL,T_RegistrationUser_ID INTEGER NOT NULL,department INTEGER NOT NULL,CONSTRAINT PK_T_RegistrationUser11 PRIMARY KEY (T_RegistrationUser_ID)CREATE TABLE T_Professor (T_RegistrationUser_ID INTEGER NOT NULL,CONSTRAINT PK_T_Professor12 PRIM

43、ARY KEY (T_RegistrationUser_ID)CREATE TABLE T_Student (T_RegistrationUser_ID INTEGER NOT NULL,CONSTRAINT PK_T_Student13 PRIMARY KEY (T_RegistrationUser_ID)CREATE INDEX TC_T_CourseOffering35 ON T_CourseOffering (COL_2);CREATE INDEX TC_T_CourseOffering28 ON T_CourseOffering (T_Course_ID);ALTER TABLE T

44、_CourseOffering ADD CONSTRAINT FK_T_CourseOffering13 FOREIGN KEY (COL_2) REFERENCES T_Professor (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;ALTER TABLE T_CourseOffering ADD CONSTRAINT FK_T_CourseOffering8 FOREIGN KEY (T_Course_ID) REFERENCES T_Course (T_Course_ID) ON DELETE NO AC

45、TION ON UPDATE NO ACTION;ALTER TABLE T_CourseOffering ADD CONSTRAINT FK_T_CourseOffering10 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_Professor (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;ALTER TABLE T_Professor ADD CONSTRAINT FK_T_Professor11 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_RegistrationUser (T_RegistrationUser_ID) ON DELETE NO ACTION ON UPDATE NO ACTION;ALTER TABLE T_Student ADD CONSTRAINT FK_T_Student12 FOREIGN KEY (T_RegistrationUser_ID) REFERENCES T_Re

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com