文档资料管理系统的设计与实现毕业设计论文.doc_第1页
文档资料管理系统的设计与实现毕业设计论文.doc_第2页
文档资料管理系统的设计与实现毕业设计论文.doc_第3页
文档资料管理系统的设计与实现毕业设计论文.doc_第4页
文档资料管理系统的设计与实现毕业设计论文.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)文档资料管理系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:文档资料管理系统的设计与实现摘 要本系统使用mfc提供的文档视图结构为主体框架,用xml文挡进行数据的储存,实现对各种资料的管理。第一部分是实现对用户界面操作的响应,这部分主要是使用mfc提供的不同的窗口类,即框架窗口,视图窗口,对话窗口以及控件来实现用户操作界面的主体框架的实现。第二部分为处理具体事务的模块,实现用户对资料的管理和使用。第三部分是用xml编写储存结构,这部分主要是设计xml树和对其存储和读取的具体实现。利用本系统可以管理自己的各种资料(文本的和电子的), 对每一份资料均有命名,对所有的资料进行归类,指明各资料的存放位置,可以给每一份资料指明关键字,便于用户查找资料。若是电子资料(如电脑上的文件),可以通过鼠标点击直接打开文件。整个系统实现了最初设计的各种功能,并能够快速方便的帮助用户查找到需要的资料信息,整个操作界面简洁和实用。关键词: mfc;xml;框架;窗口the design and implementation of the documents management systemabstractthe documents management system can manage various materials. it is implemented by the document-view framework provided by the mfc. in order to hold the materials data, a xml document is used. the system is composed by the user interface、the logic processing and the xml operation. the first part responds to the operation of the user. this part is implemented by the various kinds of windows in the mfc, such as a frame window, a view window, the dialog windows, and many control windows. the second part is design to process material management operation such as adding a material, deleting materials, browsing and searching materials. the last part is the serialization module. it uses a xml tree structure to organize the data in the memory and holds the data by a xml text document in the disk.users can manage their own materials conveniently by this system. in the system, every material has many attributes such as a name what we can call it, a path indicates where it is, an author who writes it, a catalogs field specifies how many catalogs it belongs to, and some keywords for searching it. if the material is a document in the computer, users can view it directly by double clicking the document. the system is enabled all the functions at design and quickly and conveniently search the users need. the document is concise and pragmatic.key words: mfc;xml;frame;window目 录 论文总页数:20页1引 言12 设计理论依据12.1 mfc简介12.2 xml介绍23文档资料管理系统简介43.1 系统开发背景43.2系统开发环境53.2.1 系统软件环境53.2.2工具简介53.3系统概述54文档资料管理系统的设计64.1系统需求分析及功能设计64.2 xml存储结构的设计74.3用户界面和事物处理124.3.1用户界面124.3.2事务处理135软件测试15结 论18参考文献18致 谢19声 明201引 言当今世界是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛用于管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。但是在众多的资料中,如何规范,准确,快速,全面的管理自己的资料,如书籍,电子资料等,并且方便自己查阅。使用计算机进行信息管理控制,不仅提高了工作效率,而且大大提高了其安全性。本系统就是为了管理好自己的各种有用资料信息而设计的。面对各种繁多的资料,很多人是没有进行合理的分类整理和建立一个资料管理系统来管理它们,有时候在手头研究需要一些资料的时候往往是靠记忆来寻找,但是这样做会浪费很多时间和精力。由于数据繁多容易丢失,且不易查找。总的来说缺乏系统,规范的信息处理手段。尽管我们有计算机,但是尚未用于信息管理,没有发挥它的效益,资料闲置比较突出,就是管理信息开发的基本环境。基于此类问题,我认为有必要建立一个资料管理系统,使资料管理工作规范化,程序化,避免资料管理随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改资料情况。本次毕业设计是在老师指导下自己独立完整的进行软件的设计,程序编写,调试等工作。通过自己对整个流程的设计和实现,能够完成最初提出的要求,也对一些功能进行了扩展和加深。利用文档资料管理系统能够比较完善的管理自己的资料,也能比较快速的找到自己以前看过或是记录下的资料,使用起来也很方便,快速。2 设计理论依据2.1 mfc简介mfc微软基础类(microsoft foundation classes),实际上是微软提供的,用于在c+环境下编写应用程序的一个框架和引擎。mfc就是挂在它之上的一个输助软件开发包,mfc作为与vc+血肉相连的部分(注意c+和vc+的区别:c+是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而vc+只是一个编译器,或者说是一种编译器+源程序编辑器的ide,ws,platform),mfc同bc+集成的vcl一样是一个非外挂式的软件包,类库,只不过mfc类是微软为vc+专配的. mfc是win api与c+的结合,api,即微软提供的winos下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身。mfc不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁)mfc中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立windows下的应用程序。mfc框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。microsoft visual c+提供了相应的工具来完成这个工作:appwizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;class wizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。2.2 xml介绍xml是extensible markup language的缩写,即可扩展标记语言是一种您可以用来创建自己标记的标记语言。它由万维网协会(w3c)创建,用来克服 html(即超文本标记语言(hypertext markup language),它是所有网页的基础)的局限。和 html 一样;xml 基于 sgml 标准通用标记语言(standard generalized markup language)xml实际上是web上表示结构化信息的一种标准文本格式,它没有复杂的语法和包罗万象的数据定义。xml同html一样,都来自sgml(标准通用标记语言)。sgml是一种在web发明之前就早已存在的用标记来描述文档资料的通用语言。但sgml十分庞大且难于学习和使用。鉴于此,人们提出了html语言。但近年来,随着web应用的不断深入,html在需求广泛的应用中已显得捉襟见肘,有人建议直接使用sgml作为web语言。但sgml太庞大了,学用两难尚且不说,就是全面实现sgml的浏览器也非常困难。于是web标准化组织w3c建议使用一种精简的sgml版本xml。xml与sgml一样,是一个用来定义其他语言的元语言。与sgml相比,xml规范不到sgml规范的1/10,简单易懂,是一门既无标签集也无语法的新一代标记语言。 可以说,xml的出现给数据交换带来了一场革命;xml的出现是至今为止最聪明的一种符号化语言;xml成为下一代网络发展的基石。 xml作为引人注目的核心技术应用于btob、web服务、.net等许多系统中。xml可以作为电子数据交换的统一格式,用xml可以对数据关系进行定义形成特有的标准,因此各行各业都在建立自己的行业化标准,以应用于网络上处理电子商务,把后台系统通过web站点表现出来。xml还可以作为数据仓储,一个xml文件就是一个小的数据库,通过对数据关系的定义形成各种关系、属性的数据,实现数据交换、上下文检索、多媒体传输。xml具有其他方法所不具备的数据描述特点xml是以文本形式来描述的一种文件格式 由于xml是以文本形式描述的,所以适合于各种平台环境的数据交换。同样由于使用文本来描述内容,可以越过不同平台的障碍进行正常的数据交换。但是,文本形式也会因为文字代码的不同造成不能阅读的问题,在这一点上xml有着非常完美的解决方案。 xml使用有意义的标记(tag) 在xml中文件是由一个个称之为元素(element)的部件构成。使用标记(tag)来描述元素。由于使用了标记的描述方法,可以保持原数据的意思和构造在互联网上进行数据交换,进而可以保持不同系统之间数据交换的灵活性。 可以说,xml是“定义语言的语言”,也即是一种元语言。由于xml具有元语言的功能,所以可以成为描述电子商务数据、多媒体演示数据、数学公式等各种各样数据应用语言的基础语言。下面提供几个以xml为基础生成的数据描述语言(本文亦称为xml应用语言)的应用例子,即出版媒体:open ebook(电子书籍)、newsml(新闻媒体);科学:mathml(数学表达式)、cml(化学);电子商务:cxml(电子商务)、fpml(金融);多媒体:smil(多媒体演示)、bml(卫星数据传送)。 xml是描述内容的数据格式,在使用xml数据时,还需要xml数据的显示、打印、数据结构的变更等许多相关技术。如果这些相关技术也都标准化的话,即使在不同平台开发应用程序也都可以用相同的方法,使开发难度降低。 处理xml数据时,一定要使用xml processor(也就是xml parser),把xml数据结构的检查等交给xml parser去做。应用程序对接收到xmlprocessor传递来的xml树进行处理,向用户提供服务。此时,不管是电子商务,还是知识管理,都是定义xml数据结构的技术、显示打印xml数据的技术、xml数据结构变更技术、xml数据联接整合技术、用程序操作xml树的api和其它应用技术的组合。在xml中用户可以自由的定义标记名以及与标记相关的元素及元素层次,这是xml的主要特征。但是,如果定义的都是只有自己才能理解的标记,就无法与其他人进行交换数据。为了在企业团体之间进行xml格式的数据的交换,xml数据的结构、元素的名称、元素的数据类型以及元素的亲子关系都需要仔细考虑,一定要设计成人和系统能够理解的语言。这样设计的xml数据结构在xml领域称为schema,描述schema的语言称为schema语言。dtd是最普通xml的schema语言是dtd(document type definition:文档类型定义)。dtd是远在sgml时期就一直使用的schema语言,1998年制订xml语法时,沿用了描述schema的dtd。xml schema中有下述dtd中不具备的特征:多个schema复合使用xml名字空间;用xml语法描述;可以详细定义元素的内容及属性值的数据类型。由于在xml schema中的数据结构也都是用xml数据来表现的,与dtd相比数据量增大很多。但是,xml schema的表现力要远比dtd强得多,不仅支持字符串、10进制数、浮动小数点、日期等,还支持m回以上和n回以下出现的元素(m、n为整数)的指定。例如“邮编xxxxxx”(x是字符)是邮政编码元素的格式指定等都是dtd所不能表现的内容。xml schema于2001年5月成为w3c的推荐规范,对xml的利用产生了重要的影响。 xml作为数据描述语言是非常优秀的,但是并不是所有的电子数据都是转换到xml是最有效的。例如xml的文本表现手法、标记的符号化等会导致xml数据比二进制表现方法数据量增加,尤其当数据量很大时,会成为很大的问题。也就是说,xml的导入要根据具体需求,比较其优缺点,在充分发挥xml优点的领域进行。尽管xml具备了作为通用数据描述语言的优秀特征,但是xml不是编程语言,说到底它是一种数据描述的技术。因此xml文件的显示、文件结构的变更、应用程序的操作等xml相关技术也是非常重要的。随着计算机和网络技术的不断发展深入xml技术的应用也将不断扩大。该技术不仅在传统的银行之间数据交换、证券公司对上市公司情况的数据统计、图书馆对图书的查询检索、企事业文件档案管理等领域的应用更加迫切,在电子商务、搜索引擎软件、自动智能翻译、文档发声软件等领域也将得到更大的发展,特别是近期发展起来的移动通讯网络服务的发展,将使各种各样的信息经过格式转换到达pda、甚至到达手持电话机,将来我们可以通过网络数据格式转换服务使小小的手机可以阅读到大千世界的丰富信息。3文档资料管理系统简介3.1 系统开发背景本文档资料管理系统是为个人管理自己的各种资料的一个基于windows xp系统的一个应用软件.现在也有很多的资料管理系统,其中都是一个运用界面和逻辑接口嵌入一个数据库,这样在编写软件的时候也很方便和快速。但是对于编程人员来说,利用别的工具来实现自己的东西总是不好的事,尤其对于我们这种经验不足的人来说,尤其是不好的事情。因此我就想自己编写一个储存结构来代替数据库。因为在以前学习过xml知道用它可以实现数据的存储功能,于是决定利用它编写文件存储结构来实现本系统的数据存储。现在人们有了电脑,对于存储自己需要的资料有了一个好的地方,但是如何能够有效的把日益增多的这些各种资料管理起来,能够方便需要的时候取出来,这是一个难题;对于一些以前看过的书,如何在以后突然需要的时候,快速的找到它的摆放位子?这些都是开发本资料管理系统的一个原因。为了管理个人的资料例如:电子资料,纸版资料等不同的资料并对所有的资料进行归类,如划分为vc+资料,windows类资料,健康类资料等。当这些资料经过科学的分类,并把各种不同属性的资料各类管理起来,这样就实现了对资料的有效管理,也方便了用户在需要的时候很快能够找到想要的资料,节约了很多人力物力和精力。3.2系统开发环境3.2.1 系统软件环境本系统采用的软件工具有: 操作系统: windows xp 开发环境:vc+6.03.2.2工具简介 vc+6.0在提供可视化的编程方法的同时,也适用于编写直接对系统进行底层操作的程序,其生成代码的质量要优于很多其他的开发工具。vc+6.0所提供的基本类库mfc,对windows所用的win32应用程序接口进行了十分彻底的封装,这使得开发人员可以使用完全面向对象的方法来进行windows编程,从而大大节省了应用程序的开发周期,降低了开发成本。而且,其强大的调试功能也为大型复杂软件的开发提供了有效的排错手段。随着多媒体技术和图形图像技术的不断发展,可视化技术得到了广泛的重视,愈来愈多的人开始研究并应用可视化技术。所谓可视化技术,一般是指软件开发阶段的可视化和对计算机图形技术和方法的应用。vc+是一个很好的可视化编程工具,使用vc+环境来开发基于windows的应用程序,其界面更友好,便于程序员操作。开发环境是程序员同vc+的交互界面,通过它程序员可以访问c+源代码编辑器、资源编辑器,使用内部调试器,还可以创建项目文件3.3系统概述软件主要提供的功能包括:资源管理方面添加资源,删除资源;资源浏览按照目录,按照搜索。因此把软件大体分成三个部分进行实现:第一部分: 用户界面。包括整个程序的框架,以及用户操作的接口设计等即就是实现用户界面的部分.第二部分:用于处理事务的模块.包括用户添加,删除,修改资源,用户通过目录浏览,通过搜索找寻,通过自己的收藏夹进行资源管理等业务逻辑的实现。第三部分: 用于进行数据物理存储的模块。使用xml文档进行数据的存储,所以在实现的过程中,xml的操作成为了这个模块的主要工作。文档资料管理系统是为个人管理自己的各种资料的软件,首先将资料分为电子资料和非电子资料;电子资料主要包括自己电脑上面储存的例如:电子文档,电子书籍,影像资料等各种电子资料。非电子资料包括书籍,影碟,光碟等实物资料;对每一份资料均有命名,可以使用书名来指代这本书,也对每一份资料加了关键字和注释,便于后面需要时候准确的找到需要的资料。对所有的资料进行归类,如划分为vc+资料,windows类资料,影像类资料等;指明资料的存放位置,若是电子资料(如电脑上的文件),可以通过鼠标点击直接打开文件,对于非电子资料和非本机子上的资料,在注释内注明其放置的位子,便于快速找到自己需要的资料;系统也有增加,删除,修改等工具条:增加是在有新资料需要用本系统管理的时候,可以通过它来增加。删除是对无用的资料进行删除。修改是需要对已有的资料增加一些说明的。另外也有目录,搜索和收藏夹等功能。系统也在最下面的窗口有一个对选中的资料有一个类似统计的显示,便于使用者,更加方便的使用本系统。4文档资料管理系统的设计4.1系统需求分析及功能设计随着信息时代的来临,电脑用户的资料日益增多,而这些资料可能有着不同的特点。比如,它可能是一本书,也可能是一张光碟,也可能是个电子文档。如果稍有疏忽,资料的存放位置失去了某些特征,例如,某些电子文档你可能放到了一个目录下,而另外一个文档你却放到了其它的目录下。当你需要的时候,将难于准确迅速的找到,更谈不上有效的查询和管理了。总之,资料属性的多元化和数量的增多给管理这些资料带来了很多不便。文档资料管理系统的设计目标正是为了解决这些问题。它将满足用户对资源的管理:增加,删除,修改,搜索及查看资源。具体说来,该系统将具备下面的功能:(1)增加资源用户能够添加一个资源,该资源可以是电子资源(比如pc上某个目录下的一张图片)或者是非电子资源(例如书桌上的本书)。添加该资源后,用户将可以通过该系统直接管理和使用该资源。(2)删除资源用户能够将系统中的某个资源删除掉,从而放弃系统对该资源的管理。(3)修改资源当某个资源的属性发生变化的时候(例如存放位置发生变化),用户能够选中某个资源,对其属性进行修改,以反映这种变化。(4)搜索资源用户能够通过提供资源的某个特征属性进行查找,获得相关的资源。(5)查看资源如果所选择资源为电子文档,用户将能在系统中直接查看该资源。图1 整体框架设计图资源应该具有以下属性:资源的作者,资源名称,资源的位置(若是电子资源,则是资源在电脑上的文件位置),资源添加日期,资源所属目录情况(一个资源可以属于多个目录),关键字(用于搜索), 资源的注释等。 下面就系统中对以上属性的定义:struct resitemint id; / 资源在文档中的唯一标志string name; /资源名称string author; /资源的作者string path; /资源的位置(若是电子资源,则是资源在电脑上的文件位置) bool bebook;/是否是电子资源string date; /资源添加日期string keywords; /关键字,用于搜索int catalogs; /资源所属目录情况(一个资源可以属于多个目录)double bytes; /资源大小(只对电子资源有效) string note; /资源的注释;4.2 xml存储结构的设计 本系统的用xml编写存储结构,参照一般的xml编写方法包含以下几个类:xmlcontainer(xmltree),xmlfile,xmlleaf,xmlnode,xmlparser。表1 xmlfile设计表类名:xmlfile设计用途:用于将一个磁盘上的xml文档以字符串的方式读入到内存中,或者将以字符串方式存于内存中的xml文档输出到磁盘。方法/属性作用string _doc保存xml字符串的内部成员变量。bool load(const char* file)将参数file指定的文件载入类的成员变量doc中。bool save(const char* file)将成员变量doc的值保存到file指定的文件中。const string& getdoc()返回doc的值。bool setdoc(const string& _doc)以_doc设置doc的值。表2 xmlparser设计表类名:xmlparser设计用途:用于实现xmltree和字符串化的xml文档的相互转换。方法/属性作用static xmltree* doc2tree(const string& doc)将doc转换成一个xmltree。static string tree2doc(xmltree* pxmltree)将一个xmltree转换为字符串。static int gettoken(string strdoc, string& token)从strdoc中获取第一个标记(或者值)说明:正是通过这两个类的协作,实现了xml文档的读写和转换。例如:xmlfile file;if(!file.load(settingsitems.xml)afxmessagebox(打开数据文件items.xml失败);return;xmltree* ptree = xmlparser:doc2tree(file.getdoc();if(!ptree)afxmessagebox(转换数据文件items.xml失败);return;上面的代码段首先使用xmlfile的实例load了一个xml文档,然后使用xmlparser:doc2tree创建了一个xmltree,从而为内存中使用xml提供了基础。下面说明一下对xml的处理方案。使用树型结构表达xml文档,可以比较方便的进行相应的读写删改操作。因为xml本身就是一个数型的结构。例如:tttttt13dxx7xx以上是一段程序中用到的xml文档结构。注意到整个文档以开始,以结尾,表示之间的都是存储的数据(实际上就是资源的属性数据)。中间共有两个item,而每个item又各有几个属性(如,等)。所以可以用一颗树来表示:图2 xml树型结构图注意到上面的树中有些节点只有name没有value,而有些却都有。虽然它们都是节点,但类型上还是有区别的。故,采用三个类表达这种信息:xmlnode,xmlleaf,xmlcontainer。首先定义一个接口类xmlnode,该类表达抽象的xml节点。然后使用xmlleaf类和xmlcontainer类来实现xmlnode,xmlleaf表示叶节点(有name和value双重属性的节点,但自己没有子节点),xmlcontainer表示容器节点(只有name属性的节点,而且自己可以有子节点)。下面是它们的定义:class xmlnodepublic:xmlnode()name = node;parent = null;virtual xmlnode();virtual bool isleaf()=0; /是否叶节点virtual bool iscontainer()=0;/是否容器节点virtual xmlnode* getparent()return parent; /返回父节点virtual bool setparent(xmlnode* _parent) parent=_parent; return true; /设置父节点virtual const string& getname()return name; /返回节点名称virtual bool setname(const string& _name)name=_name; return true; /设置节点名称protected:xmlnode* parent;string name; class xmlcontainer : public xmlnodepublic:xmlcontainer()pos = -1; name=container;xmlcontainer(const string& _name)name=_name; pos = -1;xmlcontainer()release();bool isleaf() return false;bool iscontainer()return true;bool addchild(xmlnode* _node); /新增一个子节点bool remove(xmlnode* pnode); /删除一个子节点xmlnode* firstchild(); /返回第一个子节点xmlnode* nextchild(); /返回下一个字节点xmlnode* getchild(int nindex); /返回第nindex个子节点xmlnode* search(const string& name); /找到第一个以name为名的子孙节点xmlnode* search(const string& name, const string& value); /找到第一个以name为名,以value为值的叶节点void trav(ostream& out); /遍历并输出到out中void print(int lev);protected:void release();int pos;vector children;typedef xmlcontainer xmltree;class xmlleaf : public xmlnodepublic:xmlleaf()name=leaf;xmlleaf(const string& _name) name=_name;xmlleaf(const string& _name, const string& _value) name=_name; value=_value;xmlleaf();bool isleaf() return true; /是叶节点,返回truebool iscontainer()return false; /不是容器节点,返回falseconst string& getvalue()return value; /获取值bool setvalue(const string& _value)value=_value; return true;/设置值protected:string value;下图为数据流的转化图:图3 xml 数据流转换图在读取文件数据的时候使用xmlfile从磁盘读取文件数据,并转化为一个string 对象,然后使用xmlparser转化为一个xmltree对象,这样就可以很方便的操作数据。当存储数据的时候,使用xmlparser把一个xmltree对象转化为一个string 对象,然后通过xmlfile类将这个string 对象保存到磁盘文件中。上述过程就实现了系统数据流的转化,也在次基础上变于整个系统调用xml来实现具体的功能。4.3用户界面和事物处理4.3.1用户界面本系统的用户界面是一个,类似vc的界面,左边、底下有两个可浮动、可变大小的控制窗口。具体实现的为:首先创建窗口的定义如下:先为cmainframe增加成员变量:class cmainframe : public cframewndprotected:cmainframe();declare_dyncreate(cmainframe)public:cdlginfo m_dlginfo; /用于显示信息,位于程序最下方ccooltabctrl m_tabctrl;ccoolbarm_wndmybar1; /我们将它作为左边的窗口ccoolbarm_wndmybar2;/我们将它作为右边的窗口创建controlbar即控制条和“删除”,“修改”,“修改”按钮: if (!m_wndmybar1.create(_t(我的控制条), this, csize(230,260),true,123);if (!m_wndmybar2.create(_t(我的控制条2), this,csize(200,100),true,124)m_wndtoolbar.setbuttontext(0, 增加 );m_wndtoolbar.setbuttontext(1, 删除 );m_wndtoolbar.setbuttontext(2, 修改 );创建tab control,并把它加入到controlbar中。需要注意的是:同一个controlbar只能加入一个一级子窗口m_tabctrl.create(tcs_down|ws_child|ws_visible,crect(0,0,0,0),&m_wndmybar1,125);m_tabctrl.addpage(runtime_class(ccatalogdlg),idd_dlg_catalog, 目 录, idi_icon_catalog);m_tabctrl.addpage(runtime_class(csearchdlg),idd_dlg_search, 搜 索, idi_icon_search);m_tabctrl.addpage(runtime_class(cfavdlg), idd_dlg_fav, 收藏夹, idi_icon_fac);停靠控制:m_wndmybar1.setbarstyle(m_wndmybar1.getbarstyle() |cbrs_tooltips | cbrs_flyby| cbrs_size_dynamic);m_wndmybar2.setbarstyle(m_wndmybar2.getbarstyle() |cbrs_tooltips | cbrs_flyby | cbrs_size_dynamic);m_wndtoolbar.enabledocking(cbrs_align_any);m_wndmybar1.enabledocking(cbrs_align_any);m_wndmybar2.enabledocking(cbrs_align_any);enabledocking(cbrs_align_any);dockcontrolbar(&m_wndtoolbar);dockcontrolbar(&m_wndmybar1, afx_idw_dockbar_left);/停靠左边dockcontrolbar(&m_wndmybar2, afx_idw_dockbar_bottom);/停靠右边m_wndtoolbar.enabledocking(cbrs_align_any);enabledocking(cbrs_align_any);dockcontrolbar(&m_wndtoolbar);此时我们已经生成了两个控制条窗口,但窗口中还没有任何东西。在创建这些控件时将控制条窗口指针作为父窗口指针赋值给这些控件。在上面叙诉中,创建了“添加”“删除”,“修改”按钮。其他按钮,控件在class ccooltabctrl : public cwnd类中声明和定义,在使用中调用。由于它们涉及到对具体事件的处理,在下面部分分类说明。其中对于风格的使用,论文中没有特别说明,在使用中可以看出来。4.3.2事务处理事务处理这个模块就是对具体的按钮,控件的设置和响应,通过对它们函数的定义和调用实现具体的功能,主要实现的就是添加,删除,搜索,和一些具体功能的实现。下面就是对具体事务的介绍。添加资源:通过点击工具条的增加按钮弹出添加资源对话框,用户对资源属性进行逐一设置,并在点击确定后保存。该功能的流程图如下图所示:图4 添加功能流程图响应添加功能的类为class caddresdlg,其中具体实现为:void cresmanview:onbtnaddres()响应点击添加按钮,用户在弹出窗口按照具体资源添加其具体属性,填写完毕,点击“确定”按钮,void caddresdlg:onok()是确定按钮的响应函数,然后bool caddresdlg:validitem()判定资源的属性填写是否合法,合法就添加该资源即调用xmlfile file实现把数据写入文件中,从而实现添加功能。在添加中也用了int caddresdlg:getcatalogs()来获取资源的所属目录,这只是针对本机上的电子文档。通过上述过程和具体函数实现了添加的功能。在列表视图中选中某个资源的时候,在下面的窗口中会有关于该资源的具性的信息显示出来,class cdlginfo : public cdialog。在列表视图中双击某个资源的时候,若该资源是电子资源,那么它将被打开。void cresmanview:ondblclk(nmhdr* pnmhdr, lresult* presult)删除资源:在视图列表中选中要删除的项目,点击工具条中的删除,就会弹出一个询问对话框,若点击“确定”,将删除所选择的项目。并且支持同时删除多个资源。删除功能的流程图如下图所示图5 删除功能流程图实现删除的具体过程为:当用户想要删除一个或是多个资源的时候,首先选定要删除的项,然后点击“删除”按钮,响应该按钮的函数为void cresmanview:onupdatebtndelres(ccmdui* pcmdui).实现删除的具体函数voidcresmanview:onbtndelres(),最后调用xmlfile file实现在xml文件存储结构中删除该资源,从而实现了删除的功能。 搜索功能:图6 搜索功能流程图该功能实现的过程:按照搜索浏览资源:通过使用关键字,用户可以搜索出自己感兴趣的资源。如果使用高级选项,还可以指定资源的添加日期的范围,也可以在资源作者和资源注释等属性中进行查找。实现的函数为:void csearchdlg:onbtnsearch()5软件测试整个测试过程是一个,“测试修改再测试再修改”的过程,直到整个系统能正常运行,所有功能都能正常实现。在测试过程中,出现过一些不符合标准的情况,经过修改,都基本与设计书的标准符合,能够完成正常的功能。下面就是对本系统的各种功能的测试:增加功能的测试:图7 添加功能测试显示图用户点击增加按钮,弹出上图的对话框,用户输入资源的信息,点击确定按钮,如果添加成功在系统文件的settings文件夹的items.xml文件中会有如下记录:item13vc资料教程110e:vc资料教程vc 教程-12007-05-31 17:05:04vc资料教程 光碟这就说明添加成功。删除功能的测试:如下图所示:图8 删除功能测试截图实现删除的具体过程为:当用户想要删除一个或是多个资源的时候,首先选定要删除的项,然后点击“删除”按钮,响应该按钮的函数为void cresmanview:onupdatebtndelres(ccmdui* pcmdui).实现删除的具体函数voidcresmanview:onbtndelres(),最后调用xmlfile file实现在xml文件存储结构中删除该资源,从而实现了删除的功能。删除成功的话在系统文件的settings文件夹的items.xml文件中就没有该资源的记录。搜索功能的测试:如下图所示:图9 搜索功能测试截图该功能实现的过程:按照搜索浏览资源:通过使用关键字,用户可以搜索出自己感兴趣的资源。如果使用高级选项,还可以指定资源的添加日期的范围,也可以在资源作者和资源注释等属性中进行查找。按照搜索条件可以实现快速寻找自己需要的资料,成功后会在右边的显示框中显示符合搜索条件的资料资源,并在下面有一个统计的显示。由于经验欠缺或其它某些原因,本次完成的软件不可能是完美无缺的。测试只能尽量避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度,减少错误的引入,但是不可能完全杜绝软件中的错误。经过测试,能实现各功能。结 论 完成了系统的基本功能,基本满足用户需求,能够通过本系统能够比较方便的管理自己的资料,也可以快速准确的找到需要的资料。自己编写了xml文件存储结构,并利用它作为本系统的数据转化工具。本系统操作方便,系统性能良好,具有快速,可扩展性。当然,由于我们经验欠缺或者是其他方面的一些原因,这次的项目开发也存在一些不足,如程序员逻辑比较混乱,一些简单的问题要通过一堆无用代码才能实现,不能以简洁有效的方式解决。由于是一个人独立的完成一个项目。从设计到开发,再到调试都是自己的思路,其中不免有考虑不周,实现不完善之处。修改和收藏夹功能还没有实现。另外xml编写的时候也没有使用标准的xml编写方法,虽然其能够完成本系统的要求,但是也不免有些瑕疵。由于是用xml文件存储结构,不是用单独的数据库,因此在使用系统的时候,数据都在内存中,因此对于内存消耗比较大,但是在存入文件后,此问题消失。我想,在以后的项目开发过程中,我们会逐渐解决这些不足之处。 参考文献1 郑阿奇,丁有和,郑进.visual c+实用教程m.北京:电子工业出版社,2000. 2 美david simon,周瑜萍.visual c+6编程宝典m.北京:电子工业出版社,2005. 3 姚领田.精通mfc程序设计m.北京:人民邮电出版社,2006. 4 sandra,e.eddy.xml精要:语法详解

温馨提示

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

评论

0/150

提交评论