设计模式在猫科动物信息管理系统开发中的应用.docVIP

  • 2
  • 0
  • 约4.73千字
  • 约 10页
  • 2018-07-22 发布于江苏
  • 举报

设计模式在猫科动物信息管理系统开发中的应用.doc

设计模式在猫科动物信息管理系统开发中的应用

设计模式在猫科动物信息管理系统开发中的应用王文为200系统设计系统目标设计系统设计系统目标设计提供一个易操作的可视化界面,使用户能够通过简单操作来浏览数据库中的猫科动物信息,使管理员能够对该数据库进行简单的维护。系统功能分析对系统的操作有两种:普通用户的浏览、管理员的编辑。图1、2分别给出了普通用户和管理员的操作示意图。图1 普通用户操作图的UML描述图2 管理员操作图的UML描述具体来讲如下。普通用户可以执行的操作:1.通过选择某个节点来查看该节点的详细信息;2.将某个节点信息导出到XML文档;3.将某个节点及其所有子节点信息导出到XML文档;4.将系统所有信息导出到XML文档。管理员可以执行的操作:1.添加子节点;2.编辑节点信息;3.删除节点,同时删除其所有子节点;4.普通用户可以执行的所有操作。辅助功能:1.后退、向前:回到上一个、下一个选中的节点,并显示节点信息;2.撤销:撤销管理员进行的上一步操作(添加、删除、编辑)。系统功能模块设计图3 系统功能模块系统的UML描述主要类间关系图4 主要类之间的关系如图4所示,系统运行过程中,CDataIni起着重要作用,它是系统的数据中心;CManage,CManageMemento,CManageContainer负责处理管理员进行的一系列编辑操作,记录下编辑事件以及事件发生前后系统的状态,并在管理员要求撤销时恢复到事件发生前的状态;CMemento负责记录浏览过的节点,对后退和向前命令提供数据支持;CmyXML,CSaveUserData用来响应导出数据的命令;CLeftView,CmytryView除了在界面中显示相关信息,还对各种菜单及按钮命令进行响应。主要功能的实现数据加载图5 加载数据CDataIni通过实例化CSetInformation,得到记录集;从这些记录集中读取数据填充自己的数据结构。CSetInformation通过SetConnect( )和SetSQL( )设置连接参数,可以连接到具有相同字段的多个表。该程序中,分别连接了两个数据库中的Subfamily、Genus、Species这三个表。CSetCreator通过工厂方法创建并返回CSetInformation的指针。数据保存到Access Database图6 将数据保存到数据库这是管理员才能够进行的操作。管理员对系统数据进行编辑之后,可将数据库保存到用户数据区。CSaveUserData完成写数据库的操作。编辑功能的实现图7 编辑管理员登录后可以对数据进行编辑。编辑包括增加某个节点的子节点,编辑节点信息以及删除节点。每一次的编辑动作,都会被保存,以备撤销编辑时使用。增加节点时,给这个新增的节点创建一个CElementInfo指针,并将其放入CDataIni的map中,同时放入它的父节点信息中维护的子节点列表中。在创建指针前,要检查新增的节点是不是与现存的其它节点的信息重复。这时要保存的信息是动作Behavior和新元素的指针pElement。相应的要改变树型视图的节点。撤销增加节点的操作时,只需执行删除该节点的操作即可。删除节点时,同时删除它所有的子元素。所谓的删除,不是删除指针而是将信息从map中移除。将该节点信息从它的父节点维持的子节点列表中删除;将删除的节点和它所有的子节点信息均从map中移除;维持该节点的子节点列表不变。这时要保存的信息是动作Behavior和被删除的元素的指针pElement。相应的要改变树型视图的节点。撤销删除节点的操作时,除了执行相应的增加该节点的操作外,还要增加它所有的子节点。编辑节点信息时,只改变元素中所含的本节点信息即可。此时要检查,输入的节点的中文学名、拉丁文学名是否与其它节点的信息重复;当节点的中文学名改变时,相应的要修改map中的键值。这时要保存的信息是动作Behavior,编辑之后的元素的指针pElement以及编辑前的旧信息info。撤销编辑节点的操作时,只需执行将现在的节点编辑成旧信息的操作即可。如果节点的中文学名改变了,还要修改map的键值。后退\向前功能的实现图8 实现后退和向前CLeftView响应后退或向前命令,并从CMemento的实例中获取数据。CMemento保存用户选中的节点,在CLeftView索取数据时,返回可显示的节点信息。撤销功能的实现图9 实现撤销CmytryView响应各种编辑命令,CManage则进行实际处理。CManageState将CManage传给它的信息打包成ManageState的实例,并将这个数据包交给CManageContainer保管;当CManage执行Undo操作时,CManageState从CManageContainer中取出数据包,交给CManage处理。CManageContainer只负

文档评论(0)

1亿VIP精品文档

相关文档