- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
猫科动物信息管理系统
设计模式在猫科动物信息管理系统开发中的应用 作者 王文为 2006.1.4 系统功能模块 主要类之间的关系 数据结构 数据加载——Builder模式 数据加载——Factory Method模式 数据保存——Factory Method模式 数据保存——Strategy模式 后退/前进——Memento模式 后退/向前——Iterator模式 撤销——Memento模式 撤销——Prototype模式 结束 谢谢 * class CElementInfo { … … public: Info* m_pInfo; VecEle m_VecChild; }; 存储数据的基本单位是CElementInfo* pElement。 将每个元素的指针与它的中文学名建立映射,放在CDataIni中的map中,便于查找。 std::mapCString, ElementInfo* CDataIni::CDataIni(void) { CreateSubfamily(); CreateGenus(); CreateSpecies(); } CSetInfo* CSetCreator::Create(int ConnectType,int SQLType) { CSetInfo* pset=new CSetInfo; pset-SetConnect(DefaultConnect[ConnectType]); pset-SetSQL(DefaultSQL[SQLType]); return pset; } BOOL CmyXML::Output(int type,CString CName) { if(type==ALLITEMS) …… } void CMemento::SetState(HTREEITEM hItem) { …… m_statelist-push_back(hItem); …… } class CMemento { private: CMyList* m_statelist; …… } ManageState::ManageState(int ManageBehavior, CElementInfo* pElement, Info* pInfo) {//删除,被删除的元素指针 //添加,添加的元素指针 //修改,修改后的元素指针,修改前的信息 m_ManageBehavior=ManageBehavior; m_pElement=pElement; m_pInfo=new Info; m_pInfo-CName=pInfo-CName; m_pInfo-LName=pInfo-LName; m_pInfo-P_name=pInfo-P_name; } CInverseIterator具有针对性,只能用于ListState类型的list。 CMyList继承了ListState,使用CInverseIterator的实例对数据进行封装,使外部调用更方便。 CManageState将CManage传给它的信息打包成ManageState的实例,并将这个数据包交给CManageContainer保管;当CManage执行Undo操作时,CManageState从CManageContainer中取出数据包,交给CManage处理。 CManageContainer只负责保存状态数据,不对数据进行解析。 两种权限,演示 CDataIni是系统运行时的数据中心,系统开始运行时,从数据库中加载数据;运行过程中显示节点信息、编辑节点信息以及导出数据,都需要对CDataIni提供的数据进行访问。 右侧四个类只有在管理员登录后,才会被实例化。 虚线框中的CManage类,负责接收视图中传来的命令,进行下一步的处理;编辑工作都是在这个类里完成。 CManageMemento,CManageContainer与之协作,保存下每次编辑的相关信息。 CMemento在选中某个节点时,保存节点信息,实现后退/向前功能。 CmyXML导出数据到XML文档;CSaveUserData导出数据到用户数据库。 这是左视图中显示的节点,实际建立的数据结构模型与之相似。显示的每个节点,对应着一个元素指针; 存储数据的基本单位是CElementInfo型的指针; 在每个元素中用一个vector记住所有子元素指针 数据加载过程分三步,从高级分类到低级分类,分别加载亚科、属、种的数据; 在CDataIni的构造函数中,规定了这三个步骤地执行顺序,所以CDataIni同时也充当了Direct
文档评论(0)