为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

毕业设计-基于VB和XML的个人资料编辑器的实现—论文

2017-09-21 50页 doc 210KB 6阅读

用户头像

is_842972

暂无简介

举报
毕业设计-基于VB和XML的个人资料编辑器的实现—论文毕业设计-基于VB和XML的个人资料编辑器的实现—论文 毕业设计(论文) 基于VB和XML的个人资料编辑器的实现 论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名,职称,: 论文提交日期: 基于VB和XML的个人资料编辑器的实现 摘 要 随着计算机技术的普及应用,整个人类社会已经成为一个信息化的学习型社会。信息作为生产力中的最活跃因素,在生活中发挥着巨大的作用,几乎每天都产生大量的文档资料,而对于这些资料的分类管理和利用,将直接影响到个人学习个工作的效率,资料管理也已经成为人们普遍关注的课题。 ...
毕业设计-基于VB和XML的个人资料编辑器的实现—论文
毕业设计-基于VB和XML的个人资料编辑器的实现—论文 毕业设计(论文) 基于VB和XML的个人资料编辑器的实现 论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名,职称,: 论文提交日期: 基于VB和XML的个人资料编辑器的实现 摘 要 随着计算机技术的普及应用,整个人类社会已经成为一个信息化的学习型社会。信息作为生产力中的最活跃因素,在生活中发挥着巨大的作用,几乎每天都产生大量的文档资料,而对于这些资料的分类管理和利用,将直接影响到个人学习个工作的效率,资料管理也已经成为人们普遍关注的课题。 为了更加便于人们对于收集到的信息资料的管理利用,笔者由此设计了基于VB和XML的个人资料编辑器,以VB作为开发语言,数据使用XML格式存储,实现了类似WINDOWS资源管理器的树状目录文档管理,文档信息按自己的分类节点显示,并具有搜索和编辑功能等。文中详细阐述了系统的开发背景,研究意义,理论依据和各模块的具体实现。 关键词:VB;XML;树型结构;节点 The Implementation of a Personal Material Editor Based on VB and XML Abstract With the popularization and application of the computer technology, the whole human society has already become an informational study type society. Information is playing a great role in life as the most active factor in productivity, producing a large number of file materials every day. As for the classification of management and use of information will directly affect individuals’ efficiency of work and study, information management has become a universal concern. To make it easier for people to make use of the gathered information, the author designed the Personal Material Editor based on VB and XML. Is development takes the VB language as the script, XML as the database, realized WINDOWS explore-like user interface which manages the document with tree structure and the information was demonstrated according to its own class node, and the search and the edition function are implemented too. The article elaborated in detail the development background of the system, the research significance, the theory basis and the concrete realization of various modules. Key words:VB; XML; Tree structure; Node 目 录 论文总页数:25页 1 引言 ........................................................................ 1 1.1 课题背景 ............................................................... 1 1.2 本课题研究的意义........................................................ 1 1.3 本课题的研究方法........................................................ 1 2 相关技术 .................................................................... 1 2.1 XML语言 ................................................................ 1 2.1.1 标识语言 ........................................................... 1 2.1.2 XML ................................................................ 2 2.1.3 XML文档及其分类 .................................................... 3 2.1.4 XML文档的解析 ...................................................... 4 2.1.5 文档对象模型 ....................................................... 5 2.2 XML与数据库 ........................................................... 10 2.2.1 技术比较 .......................................................... 10 2.2.2 XML数据库的发展趋势 .............................................. 11 3 需求 ................................................................... 12 3.1 系统概述 .............................................................. 12 3.2 功能需求分析 .......................................................... 12 4 主要模块编码实现 ........................................................... 14 4.1 程序主窗体界面 ........................................................ 14 4.2 文档管理模块程序....................................................... 16 4.3 通讯记录模块 .......................................................... 17 4.4 收入支出记录模块程序................................................... 19 4.5 备忘录模块 ............................................................ 20 5 软件测试 ................................................................... 21 结 论 ....................................................................... 22 参考文献 ....................................................................... 23 致 谢 ....................................................................... 24 声 明 ....................................................................... 25 1 引言 1.1 课题背景 现代社会是个知识信息爆炸的社会,每个人都十分注重不断的学习和充实,以求获取更多的信息量,从而产生大量的电子文档,为了提高办事效率和准确性,开发了这款个人资料编辑器,相信对于每个爱好需要“充电”和喜好搜集资料的人,使用起来都将有一定的帮助。 1.2 本课题研究的意义 本系统着力于解决日常生活或办公中个人资料的搜集,保存和管理问题。当下是数字化时代,PC机普及到了家庭,人们生活中都离不开电脑,大量对于个人相对宝贵的资料,都习惯于保存在个人电脑中,而对于这些文档的管理都相对不太重视,查找时费时费力,基于这种需要,设计出这个个人资料编辑系统,对于个人信息的管理更加细化和系统,使身边多一个智能化的“管家”。 除去软件本身的实用价值以外,在做系统的过程中,由于是采用XML来管理数据,对XML与数据库的优缺点做了一定的比较,他们的发展前景做了些初步探索:随着XML的逐步成熟,是否有一天将用XML替代数据库呢,有了数据库技术,还需要XML吗,在文中也进行了一定的探讨。 1.3 本课题的研究方法 通过对国内外文档资料管理类似课题的比较研究,透过网络与图书馆查阅相关资料后首先做出分析报告,根据社会现阶段实际情况,然后以WINDOWS系统下VB6.0做平台,通过Visual Basic语言和XML来进行开发。在设计中以需求分析为基础,写出系统开发、详细设计摘要及相关问题的实现方法,然后以此为指导进行编码开发。 2 相关技术 2.1 XML语言 2.1.1 标识语言 XML(Extensible Markup Language,开扩展的标识语言)是W3C(world Wide Web Consortium)工作组制定的可扩展标识语言。这是一重通过专门格式描述文本信息特征(例如格式或者逻辑结构)的方法。通常需要标记(由“<”和“>”符扩起来)来分隔文本片段,标记的内容提供位于标记之间的文本信息。 要理解发明XML的原因,必须从另外的两种标识语言谈起。HTML(超文本标识语言,Hyper Text Markup Language)通常用来编写网页,如果需要一种功能更丰富的语言,则可以用SGML(通用标识语言,Standard Generalized Markup Language),HTML就是从这一语言派生出来的。为什么又开发新语言,原因两点:一是HTML太不灵活,二是SGML对大多数用户来说又太复杂。前者只提供了用于 第 1 页 共 25 页 修饰浏览器画面的相对较小的标识工具集,而后者则几乎提供了无穷选择,使得开发一个文档也需要经过相当艰难的学习过程。 2.1.2 XML XML(Extensible Markup Language)语言是一种结构化描述语言,包含许多SGML语言的要素,但比SGML语言简单,是SGML语言的一个简化子集。它能使SGML语言像HTML语言那样,在互联络里得到广泛应用。如果说HTML是SGML衍生的一种文件格式那么XML则是SGML的简化版,所有XML文件也是合乎的SGML文件。所以XML也是一种元语言,可以用来定义其它新的标记语言。1996年底,万维网协会W3C推出了XML标准。XML的制定是为了弥补HTML的不足,使得在互联网络上可以传输、处理和共享各种结构复杂的文档。在继承SGML的同时,它又去除了SGML的复杂性,让使用者可以很容易地定义和使用属于自己的文档类型。 (1)设计目标: 在XML的正式规范中阐述了如下10个XML的设计目标。 1)XML应该可以直接应用于Internet网络。 2)XML应该支持大量的各种各样的应用口。 3)XML应该与SGML兼容。 4)处理XML文档的程序应该很容易编写。 5)XML中的可选项的数目应该尽可能地少,理想情况是一个也没有。 6)XML文档应该可读性强,条理清晰。 7)XML的设计应该迅速完成。 8)XML的设计应该正规且简洁。 9)XML文档应该易于生成。 10)XML的标记必须有明确的含义,不必过于简洁精炼以防含义模糊不清。 (2)主要特点: 1)简单性。XML语言有严格的定义,其语法包含一个比较小的规则集,使开发者很容易学会并能很快开始工作,而且人和机器都能很容易地阅读。由于XML文档是建立在一个基本嵌套结构的核心集的基础之上的,当一层又一层的文档内容被增加,从而使结构变得越来越复杂时,开发者只需要为内部结构的复杂性做出非常少的工作就可以满足复杂应用的需要。这些基本嵌套结构可以很容易地描述复杂的信息集合,而不需要改变结构自身。而且XML语言为程序员和文档开发者提供了一个友好的开发环境,其语法分析器也非常容易创建。 2)可扩展性。XML语言至少在两方面是可扩展的。首先,它允许开发者使用他们自己的标签和DTD,有效地创建可被用于特定应用的专业化的标记集。其次, 第 2 页 共 25 页 许多附加的标准对XML的能力进行了扩展。这些附加标准可以向核心的功能集增加样式、链接和引用能力。而且作为一个核心标准,XML为可能产生的其它标准提供了一个坚实的基础。 3)跨平台。XML语言是独立于特定平台的,而且支持世界上所有主要语言编写的混合文本,从而可在世界上各种平台的不同计算环境中使用。 4)开放性。XML标准是完全开放的,并且可以免费获得。XML文档本身也很开放,任何人都可以对一个结构良好的XML文档进行语法分析,如果提供了文档的DTD,还可以校验这个XML文档。 (3)基本概念。 1)标记是通过名叫分隔符(Delimiter)的专用字符与字符数据区别开来的XML文本。不太严格地讲,小于号(<)与大于号(>)之间的文本,以小于号开始和大于号结束的标记叫标注(tag)。 2)元素(Element)是组成XML文档的基本单元。一个元素包含一个起始标记和一个结束标记,在两个标记之间可以有数据内容。任何一个格式良好的XML文档都包含一个或多个元素,而且仅有一个称作根元素的顶级元素。元素之间可以存在树型的嵌套包含关系。被包含的元素叫子元素,相应地,包含子元素的元素称为这个子元素的父元素。 3)属性是元素包含的附加信息,用来描述元素的特征。 4)文档类型定义。文档类型定义(DTD)用来定义XML文档的合法语法。它通过列出可以在文档中使用的元素名字、指明元素之间的组合和嵌套关系、每个元素类型的可用属性等来定义XML文档的合法语法。 5)良好构的和有效的文档。每一种语言都具有说明语言用法正确与否的规则,在XML语言中也不例外。包含可以理解的标记的文档称为良构的文档,在这类文档中可以使用除了元素和属性的定义之外几乎全部的XML项,即没有DTD。有效的文档符合关于良构的文档的所有规则,但具有一个相关的定义文档的元素和属性的DTD。 2.1.3 XML文档及其分类 用XML语言书写的文档就是XML文档,它由元素、属性、实体引用、注释、CDATA和处理指令等部分组成。一个XML文档可以选择具有一个文档类型定义(DTD),它用来定义一个XML文档的结构。XML文档具有类似HTML的基于文本的格式,是一种标准化的可以在网络上表示数据的文档。XML文档通常以一个XML声明开始,通过XML元素组织XML数据。根据XML文档的内容、结构和用途的不同,可以将它分为如下三类: (1) 以数据为中心的文档(Data Centric Documents)是将XML用作数据的传 第 3 页 共 25 页 输载体,着重于文档中的数据,而非文档格式,通常是给机器用的,方便机器进行数据处理。例如销售订单、航班时刻表、科学计算结果及股市汇率。这类文档的特点是结构相当严谨,数据粒度精细(即最小的独立数据单位只存在于PCDATA元素或属性这一级别),很少或没有混合内容。除非在对文档进行验证的时候,同级元素或PCDATA的出现次序一般来说并不重要,交换两个同级元素并不会破坏文档的可读性。主要应用在电子商务、ERP, EAT等领域,集成不同数据源的数据,交换信息。 (2) 以文档为中心的文档(Document Centric Documents)将XML用作文本的传播载体,通常是给人阅读的。例如书籍、email、用户手册等。其特点是半结构化或非结构化的数据、数据粒度大,混合内容多。同级元素或PCDATA出现的次序一般来说非常重要。 (3) 混合型XML文档。在实际应用中,以数据为中心和以文档为中心的文档之间的差别不一定很明显。例如,一种以数据为中心的文档比如发票,可能含有大粒度的、结构不规则的数据比如零件说明;另一种以文档为中心的文档如用户手册,可能包含细粒度的结构规则的数据,比如作者和修订日期。其它例子包括法律和医学文书,虽然以松散的形式写成,但是却包含离散的数据块,例如日期、名称和操作程序,出于法规的原因通常要以完整的文件形式存储。此类文档同时具有面向数据和面向文档两种类型特征,称为混合型MXL文档。在混合型XML文档中,有结构化数据,也有非结构化数据。 2.1.4 XML文档的解析 对于一个现成的XML 文档,应用程序是不能直接使用或进行处理的,必须通过XML文档的解析器(XML Parser)把文档解析成可操作的形式。XML文档解析器实际上是一些程序,用来读取文档并分析文档的结构。解析XML文档是处理XML文档的第一步。一般来说 ,处理XML文档还要对XML文档中的数据进行处理,比如对文档进行添加、删除、修改等操作,这都要通过XML的解析器。解析器读取XML文档并检查文档的有效性。在多数情况下,会生成一棵解析树。目前,对于XML文档的解析主要有DOM解析和SAX解析两种方法,如图1所示。 第 4 页 共 25 页 图1 XML文档的解析 2.1.5 文档对象模型 1)DOM简介 ( W3C文档对象模型(Document Object Model简称为:DOM)规范是一组基于树模型的平台和语言中立的应用程序编程接口(API),它能够描述如何访问和操纵存储在XML和HTML等文档中的信息。它是由万维网联盟(W3C)发布并维护的一个标准。DOM提供了文档的结构化视图,以及一个标准的可互操作的类和方法的集合,可以用于XML文档元素的添加、修改、删除和检索,以及文档内容的定位。DOM解析器读取整个文档,并通过在内存中构造一个对象树,提供文档的一个视图。文档的主要结构是通过对象树中的节点来表达的,并通过使用DOM接口来访问和处理对象树。目前DOM是处理XML文档时最常用的应用程序接口。依照W3C DOM规范,选用Document Object Model这个术语是因为DOM在传统的面向对象编程的意义上来看是一个对象模型。文档利用对象被模型化,模型用来描述文档的结构以及文档的行为和文档对象的行为。DOM规范是结构化文档处理技术的一次巨大的飞跃。这个规范为处理存储在XML,HTML和其它包含结构化信息的文档中的信息提供了一组标准编程接口。 DOM设计的基本原理规定,在DOM中“每个事物都是节点”,节点是DOM的一个基本概念,这是DOM的最大特点。除此之外,DOM还具有如下特点: ? 语言和平台的中立。DOM一开始就被设计成独立于各种平台和语言的。目前,几乎可以在每一种流行的平台上,使用任何一种常用的编程语言来使用DOM。如Java,JavaScript,Perl,C++等等。 第 5 页 共 25 页 ? 开放的并且是可扩展的。也就是说,一个供应商可以向DOM规范添加规范中没有定义的方法和属性,并且只要我们认为这些方法和属性是符合DOM基本规范的。比如Microsoft公司,它为了给开发人员带来便利,在不违反DOM规范的基础上,向DOMAPI提供了多个特定于Internet Explorer的扩展。 2)DOM树型结构 ( DOM在逻辑上用一棵树来表示文档。下面是一个XML文档的例子,DOM树表示其结构如图2所示。 例2.1一个典型的XML文档 chen 33 在图2中,双椭圆代表根节点,椭圆代表元素节点,菱形代表属性节点,矩形代表文本节点,箭头代表父子关系。在DOM术语中,图2中的每个椭圆或方框都称为一个“节点”。节点就是文档内容中的一个特定元素、属性和文本等等的对象表示。依据在文档树中的位置的不同,节点有特定的名称。所有的文档都有一个节点称为根节点,它是位于树型结构最顶部的节点。如图2所示,根节点就是表示标记的那个双椭圆。如果一个节点下面有一个或者多个节点,那么就把下面的节点称为这个节点的子节点,也就是说每个子节点都是其“父”节点的一个孩子节点。图中表示标记的节点就是节点的一个子节点,而它同时又是表示标记的节点的父节点。节点之间的这种父子关系在DOM中被广泛地使用。那些没有子节点的节点称为叶节点,它们是位于树的最远端的节点。把父子关系的比喻加以延伸,具有相同父节点的节点称为“兄弟”节点。如果两个节点都是从树型结构某处的同一个节点派生出来的,就说它们具有一个共同的祖先节点。 第 6 页 共 25 页 图2 文档树 节点的概念不仅限于元素,文档中的每个事物都可以表示为一个节点,包括注释、元素的属性、文本内容、XML处理指令、文档类型声明等等。只要是文档中的事物,就可以将它表示为一个节点。 (3)DOM的层 DOM被组织为分离的层,每一层都提供了自己的方法和定义。这些层可以定义本层用户所希望有的性能和服务。有时候您可能会忍不住把不同的DOM层看作不同“版本”的DOM,然而它们并不是真正意义上的版本。它们是专门定义的一个功能层,应用程序可以把这个特定的功能层提供给需要它的用户。比起DOM的Leve12层,正在用Level1层的开发人员可以期望更少的功能和特性。目前,有两个正式的DOM层:Level1和Levdl2。这两个层都是W3C所推荐的。最近出现的还是一个工作草案的层是Level3,也就是说,它目前还没有被W3C采纳为一个正式推荐的规范。另外还有第4个层,据说被认定为是Level0,它不是一个正式的DOM规范,也不是工作草案,它涉及了在DOMWorking Group成立之前,由早期的WEB浏览器(比如Netscape 3和Explorer3)所提供的DOM实现。随着时间的推移和技术的发展,这些层也在不断地完善之中。当然它的改进是以一般用户和DOM成员公司的需求为基础的。 在DOM规范中通常每个层都会被划分为两个或更多的模块,其中的Core模块是每个层都有的。Core模块具有处理结构化文档和对象所需要的核心方法。其余的模块则主要用来处理特定层的具体特性。DOM应用程序可以遵守一个特定DOM层的规范,也可以遵守一个DOM层中的一个特定模块的规范。 第 7 页 共 25 页 在1998年l0月,DOM的Level1层被采纳为W3C推荐标准(在2000年9月,发布了第2个版本的工作草案。它被划分为两个模块:Core模块和HTML模块。Core模块提供了一个标准的方法集合,用来访问和操纵任何结构化文档中的各种对象,并且还提供了一个扩展接口的集合,用来处理XML文档中的内容。在HTML模块中,设计了一个高级接口,这个接口可以和Core模块中的接口一起处理HTML文档中的内容。 DOM的Level2层是在2000年11月被采纳为W3C的推荐标准的。Level2层被划分为14个截然不同的模块,它们是Core,XML,HTML,Range,Traversal,CSS,CSS2,Views,Stylesheets,Events,User Interface Events,Mouse Events,MutationEvents和HTML Events。而且这14个模块被组织在Core,Views,Events,Style和Traversal/Range这5个部分中。 DOM的Level2层更新了由DOM的Level1层提供的Core模块中的附加命名空间支持,以及Level1层没有明确地支持的用于处理某些特定情况的方法。例如,DOM的Leve1层并没有包括创建空文档的方法,而DOM的Leve12层现在己经指定了处理这种常见问题的方法。除了提供处理结构化文档的基础接口外,DOM的Leve12层还增加了用于文档处理的其它功能,其中常用的如下所述: ? 范围(Range):为处理DOM中的范围操作指定方法。 ? 遍历(Traversal):为选择性遍历和过滤文档的内容而提供的编程接口。 ? 样式(CSS):为支持各种类型的样式表提供基础接口。 ? 视图:提供了允许文档具有多个视图的接口。 ? 事件:描述应用程序中的事件流,并为注册事件处理程序指定了一个统一的事件机制。除此之外还为每个事件的上下文提供了特定于事件的信息。 (4)DOM的数据类型 基本的、原子性的数据类型是编程接口内部工作方式所必需的,而DOM也不例外。DOM Working Group定义了一些基本的数据类型用来表示存储在文档中的信息,而且这些文档是可以通过多种语言和平台来使用和实现的。通常情况下可以从其它语言中借用现有的数据类型,但是对于更复杂的信息,DOMWorking Group创造了属于DOM自己的数据类型。从Leve12层起,DOM规范使用的基本数据类型是DOMString和DOMTimeStamp两种。 DOMString类型用来描述一个字符序列,其中的每个字符都用双字节的单元来表示。它在DOM规范中的定义方式如下: valuetype DOMString sequence; 根据DOM规范,DOMString使用UTF-16(在Unicode规范中有详细的定义)进行编码。选择UTF-16编码是因为这种编码方法支持世界各地的多种语言,并 第 8 页 共 25 页 且在高科技行业中的应用十分广泛。 在所有的DOM规范中,无论哪里需要字符串,都会使用DOMString类型来表示。但在具体的使用过程中,经常需要把DOMString类型转换为一个本地平台支持的字符串类型。所以在某些DOM实现(比如Xerces)中,专门提供了把DOMString类型转换为本地字符串类型的方法。这样做完全是具体的DOM实现为编程提供的方便,但并不要求每一个DOM实现也提供类似的方法,而且在DOM规范中也没有定义这样的方法。 DOMTimeStamp数据类型在DOM规范中是按如下方式定义: Typedef unsigned long long DOMTimeStamp; 根据DOM规范,DOMTimeStamp类型是用来表示毫秒值的,但并没有指出对应0毫秒的基础日期。除了基本数据类型以外,DOM也有自己的节点类型。DOM本质上是节点的集合。由于一个文档中可能包含不同类型的信息,因此也要定义不同类型的节点。DOM规范定义了12种包含在文档中的节点类型。每种节点类型都有一组相同的属性和与之相关的方法。表1中列出了从DOM的Leve12层开始支持的各种节点类型,并且针对每种节点类型进行了简要的说明。 表1 DOM节点类型 HTML或者XML等文档中表示一个元素。如图2Element 所示, "" Then If Not fos.FileExists(CommonDialog1.fileName) Then MsgBox ("指定的文件不存在") Else absolutePathName=CommonDialog1.fileName extensionName=fos.GetExtensionName(absolutePathName) fileName=fos.GetBaseName(absolutePathName)&"."&extensionName Select Case extensionName Case"bmp","dib","gif","jpg","wmf","emf","ico","cur": ImageWd.Picture=LoadPicture(absolutePathName) Case Else: ImageWd.Picture=Nothing 第 16 页 共 25 页 End Select End If End If Set fos=Nothing End Sub 4.3 通讯记录模块 TxForm.frm生成新建通讯录功能界面如下图6: 图6 新建通讯录窗口 通讯录查找代码: Private Sub CmdTxCz_Click() Dim list As Collection '数据集 Dim else As IXMLDOMElement '当前结点 Dim count, i, j, length As Integer Dim query As String '查询条件 Dim name, group As String On Error GoTo Handle Me.MousePointer=11 Name=Trim(CmbTxXm.Text) group=Trim(CmbTxQz.Text) query = "" If name <> "" Then query = "contains(name’"+name+"')" 第 17 页 共 25 页 If group <> "" Then Query = query + "and group='" + group + "'" End If ElseIf group <> "" Then query = "group='" + group + "'" End If dbObj.openDatabase Set list = dbObj.query(TBL_ADDRESSLIST, query, True, False, "name") length = list.count If Op30Tx.value And length > DISPLAY_LENTGH Then length = DISPLAY_LENTGH End If MSFlexGrid_tx.Rows = 1 MSFlexGrid_tx.Rows = length + 1 MSFlexGrid_tx.TextMatrix(0, 0) = length & " " If length > 0 Then CmdTxSc.Enabled = True CmdTxXg.Enabled = True Else CmdTxSc.Enabled = False CmdTxXg.Enabled = False End If For count = 1 To length Set ele = list(count) MSFlexGrid_tx.RowData(count) = CLng(dbObj.GetAttribute(ele, "id").nodeValue) MSFlexGrid_tx.TextMatrix(count,1) = dbObj.GetNode(ele, "name").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,2) = dbObj.GetNode(ele, "mobile").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,3) = dbObj.GetNode(ele, "telphone").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,4) = dbObj.GetNode(ele, "oicq").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,5) = dbObj.GetNode(ele, "msn").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,6) = dbObj.GetNode(ele, 第 18 页 共 25 页 "address").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,7) = dbObj.GetNode(ele, "desc").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,8) = dbObj.GetNode(ele, "group").nodeTypedValue MSFlexGrid_tx.TextMatrix(count,9) = dbObj.GetNode(ele, "logindate").nodeTypedValue Next dbObj.closeDatabase For i = 1 To MSFlexGrid_tx.Rows - 1 MSFlexGrid_tx.TextMatrix(i,0) = CStr(i) Next Me.MousePointer = 0 Exit Sub Handle: Me.MousePointer = 0 Call MsgBox(Err.Description, vbCritical) End Sub 4.4 收入支出记录模块程序 SzForm.frm生成修改功能界面如下图7: 图7 收入/支出文档修改窗口 修改收入开支记录段代码: Private Sub MSFlexGrid_sz_DblClick() Dim list As Collection Dim ele As IXMLDOMElement '当前结点 Dim query On Error GoTo Handle If MSFlexGrid_sz.Row <> 0 Then 第 19 页 共 25 页 dbObj.openDatabase query = "@id=" & MSFlexGrid_sz.RowData(MSFlexGrid_sz.Row) Set list = dbObj.query(TBL_SALARY, query) If list.count > 0 Then Set ele = list.Item(1) SzForm.TxtDl.Text = dbObj.GetNode(ele,"date").nodeTypedValue SzForm.TxtJe.Text = dbObj.GetNode(ele,"money").nodeTypedValue SzForm.CmbLq.Text = dbObj.GetNode(ele,"where").nodeTypedValue SzForm.RichTextBoxBz.Text = dbObj.GetNode(ele, "desc").nodeTypedValue SzForm.id = CLng(dbObj.GetAttribute(ele,"id").nodeValue) '设置更新模式 SzForm.updateFlag = False '排他模式显示窗口 SzForm.Show vbModal End If dbObj.closeDatabase End If Exit Sub Handle: Call MsgBox(Err.Description, vbCritical) End Sub 4.5 备忘录模块 BwForm.frm生成主界面如下图8: 图8 备忘录主窗口 删除备忘录功能页面代码: Private Sub CmdTxSc_Click() On Error GoTo Handle Dim ret If MSFlexGrid_tx.Row <> 0 Then 第 20 页 共 25 页 ret = MsgBox("确定要删除记录(ID=" & MSFlexGrid_tx.Row & ")?", vbYesNo) If (ret = vbYes) Then dbObj.openDatabase Call dbObj.deleteRecord(TBL_ADDRESSLIST, "@id=" & MSFlexGrid_tx.RowData(MSFlexGrid_tx.Row)) dbObj.closeDatabase '刷新备忘数据页面 Call CmdTxCz_Click End If Else MsgBox ("请选择要删除的记录") End If Exit Sub Handle: Call MsgBox(Err.Description, vbCritical) End Sub 5 软件测试 模块编程完结之后,编写测试文档,对界面外观和功能等进行检测。首先针对一个模块测试。模块测试时,检验模块每个功能是否都能正常使用,包括界面的按钮、线条、等的形状、大小、颜色是否符合规范;还有检测程序是否都能按预定要求正常工作,能按要求正确存入或者输出。测试过程中,发现BUG及时进行了修正。 模块测试完后,把各个模块整合成一个系统后,这过程中还可能会出现很多问题,由此继续进行集成测试。把模块按照设计要求组装起来的同时进行测试,主要目标是发现与类模块有关的问题,测试每个功能是否都能正常工作。这是一个“测试——修改——再测试——再修改”的过程,直到整个系统能正常运行,所有功能都能正常实现。 在测试过程中,出现过一些不符合标准和达不到功能要求的情况,经过修改及以后的调试,现在已已经基本能够完成正常的功能。 由于经验欠缺或其它某些原因,本次完成的软件不可能是完美无缺的。测试只能尽量避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度,减少错误的引入,但是不可能完全杜绝软件中的错误。经过测试,这款个人资料编辑软件基本能符合要求,也能实现各预期功能。 第 21 页 共 25 页 结 论 经过几个月时间的努力,通过图书馆查阅以及网上搜集相关资料,在导师的细心指导下,以VB为设计脚本语言,XML做小型数据库的个人资料编辑器的设计任务终于完成。本次毕业设计完成了系统的基本功能,能够通过本系统实现对文档信息的编辑、检索、保存、修改等文档管理功能;可以对生活中的收入支出的流水帐目做相关记录;完成了对学习或工作日程计划的备忘管理;实现了个人通讯录中联系人详细关信息的建立,可以对通讯录条目进行删除,查找等操作;同时还设计了初始管理员对系统用户的一个管理,让系统更加符合“个性化”。这款编辑器操作简单,性能良好,能够满足一般个体用户对资料管理的基本需求。 本次毕业设计由于时间和能力有限,系统功能上不够完善,查询时没有能用视图来优化速度便是其中之一,在以后的开发过程中,会可根据具体需要扩展系统功能,使系统更加具有实用性。 但总体说来,通过这次毕业设计,系统化了很多学过的知识,又把所学理论与实际应用联系了起来,为我今后走向社会打下了坚实的专业基础;其次,这几个月来,通过做毕业设计,也让自己初尝了去挑战一件事情的滋味,虽然有压力,但更多的是自我鼓励与导师督促,完成任务是美好的~四个字:受益匪浅~ 第 22 页 共 25 页 参考文献 [1]James Britt & Teun Duynstee著,高波 王琰 等译,VISUAL BASIC 6 XML专业技术[M].北京:人民邮电出版社,2000 [2]鲁荣江,王立丰编著,VISUALBASIC项目案例导航[M].北京:科学出版社,2002 [3]林锦雀编著,最新XML入门与应用[M].北京:中国铁道出版社,2001 [4] Elliotte Rusty Harold 著,徐罡 黄涛 译,Effective XML:有效使用XML的50种方法[M].北京:电子工业出版社,2006 [5]卢毅 编著,Visual Basic 实例教程[M].北京:科学出版社2005 [6]Chuck White, Liam Quin, Linam Burman 著,周生炳,宋浩,肖伟 等译,XML从入门到精通[M].北京:电子工业出版社,2005 [7]赛奎春 主编,Visual Basic信息系统开发实例精选[M].北京:机械工业出版社,2005 第 23 页 共 25 页 致 谢 本文是在王燚教授的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢~ 在论文完成过程中,本人还得到了其他老师和同学的热心帮助,本人向他们表示深深的谢意~ 最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢~ 作者简介: 姓 名:陈宝献 性别: 男 出生年月:1983.5 民族: 汉 E-mail:chen_baoxian@126.com 第 24 页 共 25 页 声 明 本论文的工作是 2007年2月至2007年7月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。 关于学位论文使用权和研究成果知识产权的说明: 本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括: (1)学校有权保管并向有关部门递交学位论文的原件与复印件。 (2)学校可以采用影印、缩印或其他复制方式保存学位论文。 (3)学校可以学术交流为目的复制、赠送和交换学位论文。 (4)学校可允许学位论文被查阅或借阅。 (5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。 除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。 特此声明~ 作者签名: 年 月 日 第 25 页 共 25 页 Anyway, I was here in Amber some years ago. Not doing much of anything. Just visiting and being a nuisance. Dad was still around, and when I noticed that he was getting into one of his grumpy moods, I decided it was time to take a walk. A long one. I had often noticed that his fondness for me tended to increase as an inverse function of my proximity. He gave me a fancy riding crop for a going-away present-to hasten the process of affection, I suppose. Still, it was a very nice crop-silver-chased, beautifully tooled-and I made good use of it. I had decided to go looking for an assemblage of all my simple pleasures in one small nook of Shadow. It was a long ride-I will not bore you with the details-and it was pretty far from Amber, as such things go. This time, I was not looking for a place where I would be especially important. That can get either boring or difficult fairly quickly, depending on how responsible you want to be. I wanted to be an irresponsible nonentity and just enjoy myself. Texorami was a wide open port city, with sultry days and long nights, lots of good music, gambling around the clock, duels every morning and in-between mayhem for those who couldn't wait. And the air currents were fabulous. I had a little red sail plane I used to go sky surfing in, every couple of days. It was the good life. I played drums till all hours in a basement spot up the river where the walls sweated almost as much as the customers and the smoke used to wash around the lights like streams of milk. When I was done playing I'd go find some action, women, or cards, usually. And that was it for the rest of the night. Damn Eric, anywayl That reminds me again . . . He once accused me of cheating at cards, did you know that? And that's about the only thing I wouldn't cheat at. I take my card playing seriously. I'm good and I'm also lucky. Eric was neither. The trouble with him was that he was good at so many things he wouldn't admit even to himself that there were some things other people could do better. If you kept beating him at anything you had to be cheating. He started a nasty argument over it one night-could have gotten serious-but Gerard and Caine broke it up. Give Caine that. He took my part that time. Poor guy . . . Hell of a way to go, you know? His throat . . . Well, anyhow, there I was in Texorami, making music and women, winning at cards and jockeying around the sky. Palm trees and night-blooming wallflowers. Lots of good port smells-spices, coffee, tar, salt-you know. Gentlefolk, merchants, and peons-the same straights as in most other places. Sailors and assorted travelers passing in and out. Guys like me living around the edges of things. I spent a little over two years in Texorami, happy. Really. Not much contact with the others. Sort of postcard like hellos via the Trumps every now and then, and that was about it. Amber was pretty much off my mind. All this changed one night when I was sitting there with a full house and the guy across from me was trying to make up his mind whether or not I was bluffing. The Jack of Diamonds began talking to me. Yes, that is how it started. I was in a weird frame of mind anyway. I had just finished a couple very hot sets and was still kind of high. Also, I was physically strung out from a long day's gliding and not much sleep the night before. I decided later that it must be our mental quirk associated with the Trumps that made me see it that way when someone was trying to reach me and I had cards in my hand-any cards. Ordinarily, of course, we get the message empty-handed, unless we are doing the calling. It could have been that my subconscious-which was kind of footloose at the time-just seized on the available props out of habit Later, though, I had cause to wonder. Really, I just don't know. The Jack said, "Random." Then its face blurred and it said, "Help me." I began getting a feel of the personality by then, but it was weak. The whole thing was very weak. Then the face rearranged itself and I saw that I was right. It was Brand. He looked like hell, and he seemed to be chained or tied to something. "Help me," he said again. "I'm here," I said. "What's the matter?" ". . . prisoner," he said, and something else that I couldn't make out. "Where?" I asked. He shook his head at that. "Can't bring you through," he said. "No Trumps, and I am too weak. You will have to come the long way around...." I did not ask him how he was managing it without my Trump. Finding out where he was seemed of first importance. I asked him how I could locate him. "Look very closely," he said. "Remember every feature. I may only be able to show you once. Come armed, too. . . ." Then I saw the landscape-over his shoulder, out a window, over a battlement, I can't be sure. It was far from Amber, somewhere where the shadows go mad. Farther than I like to go. Stark, with shifting colors. Fiery. Day without a sun in the sky. Rocks that glided like sailboats across the land. Brand there in some sort of tower-a small point of stability in that flowing scene. I remembered it, all right. And I remembered the presence coiled about the base of that tower. Brilliant. Prismatic. Some sort of watch-thing, it seemed-too bright for me to make out its outline, to guess its proper size. Then it all just went away. Instant off. And there I was, staring at the Jack of Diamonds again, with the guy across from me not knowing whether to be mad at my long distraction or concerned that I might be having some sort of sick spell. I closed up shop with that hand and went home. I lay stretched out on my bed, smoking and thinking. Brand had still been in Amber when I had departed. Later, though, when I had asked after him, no one had any idea as to his whereabouts. He had been having one of his melancholy spells, had snapped out of it one day and ridden off. And that was that. No messages either-either way. He wasn't answering, he wasn't talking. I tried to figure every angle. He was smart, damn smart. Possibly the best mind in the family. He was in trouble and he had called me. Eric and Gerard were more the heroic types and would probably have welcomed the adventure. Caine would have gone out of curiosity, I think. Julian, to look better than the rest of us and to score points with Dad. Or, easiest of all, Brand could have called Dad himself. Dad would have done something about it. But he had called me. Why? It occurred to me then that maybe one or more of the others had been responsible for his circumstances. If, say, Dad was beginning to favor him . . . Well. You know. Eliminate the positive. And if he did call Dad, he would look like a weakling. So I suppressed my impulse to yell for reinforcements. He had called me, and it was quite possible that I would be cutting his throat by letting anyone back in Amber in on the fact that he had gotten the message out. Okay. What was in it for me? 第 26 页 共 25 页 If it involved the succession and he had truly become fair-haired, I figured that I could do a lot worse than give him this to remember me by. And if it did not . . . There were all sorts of other possibilities. Perhaps he had stumbled onto something going on back home, something it would be useful to know about. I was even curious as to the means he had employed for bypassing the Trumps. So it was curiosity, I'd say, that made me decide to go it alone and try to rescue him. I dusted off my own Trumps and tried reaching him again. As you might expect, there was no response. I got a good night's sleep then and tried one more time in the morning. Again, nothing. Okay, no sense waiting any longer. I cleaned up my blade, ate a big meal, and got into some rugged clothes. I also picked up a pair of dark, polaroid goggles. Didn't know how they would work there, but that warden-thing had been awfully bright-and it never hurts to try anything extra you can think of. For that matter, I also took a gun. I had a feeling it would be worthless, and I was right. But, like I said, you never know till you try. The only person I said good-bye to was another drummer, because I stopped to give him my set before I left. I knew he'd take good care of them. Then I went on down to the hangar, got the sail plane ready, went aloft, and caught a proper current. It seemed a neat way to do it. I don't know whether you've ever glided through Shadow, but-No? Well, I headed out over the sea till the land was only a dim line to the north. Then I had the waters go cobalt beneath me, rear up and shake sparkly beards. The wind shifted. I turned. I raced the waves shoreward beneath a darkening sky. Texorami was gone when I returned to the rivermouth, replaced by miles of swamp. I rode the currents inward, crossing and recrossing the river at new twists and kinks it had acquired. Gone were the piers, the trails, the traffic. The trees were high. Clouds massed in the west, pink and pearl and yellow. The sun phased from orange through red to yellow. You shake your head? The sun was the price of the cities, you see. In a hurry, I depopulate-or, rather, go the elemental route. At that altitude artifacts would have been distracting. Shading and texture becomes everything for me. That's what I meant about gliding it being a bit different. So, I bore to the west till the woods gave way to surface green, which quickly faded, dispersed, broke to brown, tan, yellow. Light and crumbly then, splotched. The price of that was a storm. I rode it out as much as I could, till the lightnings forked nearby and I feared that the gusts were getting to be too much for the little glider. I toned it down fast then, but got more green below as a result. Still, I pulled it out of the storm with a yellow sun firm and bright at my back. After a time, I got it to go desert beneath me again, stark and rolling. Then the sun shrank and strands of cloud whipped past its face, erasing it bit by bit. That was the shortcut that took me farther from Amber than I had been in a long while. No sun then, but the light remained, just as bright but eerie now, directionless. It tricked my eyes, it screwed up perspective. I dropped lower, limiting my range of vision. Soon large rocks came into view, and I fought for the shapes I remembered. Gradually, these occurred. The buckling, flowing effect was easier to achieve under these conditions, but its production was physically disconcerting. It made it even more difficult to judge my effectiveness in guiding the glider. I got lower than I thought I was and almost collided with one of the rocks. Finally, though, the smokes rose and flames danced about as I remembered them-conforming to no particular pattern, just emerging here and there from crevasses, holes, cave mouths. Colors began to misbehave as I recalled from my brief view. Then came the actual motion of the rocks-drifting, sailing, like rudderless boats in a place where they wring out rainbows. By then, the air currents had gone crazy. One updraft after another, like fountains, I fought them as best I could, but knew I could not hold things together much longer at that altitude. I rose a considerable distance, forgetting everything for a time while trying to stabilize the craft. When I looked down again, it was like viewing a free-form regatta of black icebergs. The rocks were racing around, clashing together, backing off, colliding again, spinning, arcing across the open spaces, passing among one another. Then I was slammed about, forced down, forced up-and I saw a strut give way. I gave the shadows their final nudge, then looked again. The tower had appeared in the distance, something brighter than ice or aluminum stationed at its base. That final push had done it. I realized that just as I felt the winds start a particularly nasty piece of business. Then several cables snapped and I was on my way down-like riding a waterfall. I got the nose up, brought it in low and wild, saw where we were headed, and jumped at the last moment. The poor glider was pulverized by one of those peripatetic monoliths. I felt worse about that than I did about the scrapes, rips, and lumps I collected. Then I had to move quickly, because a hill was racing toward me. We both veered, fortunately in different directions. I hadn't the faintest notion as to their motive force, and at first I could see no pattern to their movements. The ground varied from warm to extremely hot underfoot, and along with the smoke and occasional jets of flame, nasty-smelling gases were escaping from numerous openings in the ground. I hurried toward the tower, following a necessarily irregular course. It took a long while to cover the distance. Just how long, I was uncertain, as I had no way of keeping track of the time. By then, though, I was beginning to notice some interesting regularities. First, the larger stones moved at a greater velocity than the smaller ones. Second, they seemed to be orbiting one another-cycles within cycles within cycles, larger about smaller, none of them ever still. Perhaps the prime mover was a dust mote or a single molecule-somewhere. I had neither time nor desire to indulge in any attempt to determine the center of the affair. Keeping this in mind, I did manage to observe as I went, though, enough so that I was able to anticipate a number of their collisions well in advance. So Childe Random to the dark tower came, yeah, gun in one hand, blade in the other. The goggles hung about my neck. With all the smoke and confused lighting, I wasn't about to don them until it became absolutely necessary. Now, whatever the reason, the rocks avoided the tower. While it seemed to stand on a hill, I realized as I approached that it would be more correct to say that the rocks had scooped out an enormous basin just short of it. I could not tell from my side, however, whether the effect was that of an island or a peninsula. I dashed through the smoke and rubble, avoiding the jets of flame that leaped from the cracks and holes. Finally I scrambled up the slope, removing myself from the courseway. Then for several moments I clung at a spot just below any line of sight from the tower. I checked my weapons, controlled my breathing, and put on the goggles. Everything set, I went over the top and came up into a crouch. Yes, the shades worked. And yes, the beast was waiting. 第 27 页 共 25 页 It was a fright all right, because in some ways it was kind of beautiful. It had a snake body as big around as a barrel, with a head sort of like a massive claw hammer, but kind of tapered to the snout end. Eyes of a very pale green. And it was clear as glass, with very faint, fine lines seeming to indicate scales. Whatever flowed in its veins was reasonably clear, also. You could look right into it and see its organs-opaque or cloudy as the case might be. You could almost be distracted by watching the thing function. And it had a dense mane, like bristles of glass, about the head and collaring its gullet. Its movement when it saw me, raised that head and slivered forward, was like flowing water-living water, it seemed, a bedless river without banks. What almost froze me, though, was that I could see into its stomach. There was a partly digested man in it I raised the gun, aimed at the nearest eye, and squeezed the trigger. I already told you it didn't work. So I threw the gun, leaped to my left, and sprang in on its right side, going for its eye with my blade. You know how hard it can be to kill things built along reptilian lines. I decided immediately to try to blind the thing and hack off its tongue as the first order of business. Then, being more than a little fast on my feet, I might have any number of chances to lay in some good ones about the head until I decapitated it. Then let it tie itself in knots till it stopped. I was hoping, too, that it might be sluggish because it was still digesting someone. If it was sluggish then, I was glad that I hadn't stopped by earlier. It drew its head out of the path of my blade and snapped down over it while I was still off balance. That snout glanced across my chest, and it did feel as if I had been hit by a massive hammer. It knocked me sprawling. I kept on rolling to get out of range, coming up short near the edge of the embankment. I recovered my footing there while it unwound itself, dragged a lot of weight in my direction, and then reared up and cocked its head again, about fifteen feet above me. I know damn well that Gerard would have chosen that moment to attack. The big bastard would have strode forward with that monster blade of his and cut the thing in half. Then it probably would have fallen on him and writhed all over him, and he'd have come away with a few bruises. Maybe a bloody nose. Benedict would not have missed the eve. He would have had one in each pocket by then and be playing football with the head while composing a footnote to Clausewitz. But they are genuine hero types. Me, I just stood there holding the blade point upward, both hands on the hilt, my elbows on my hips, my head as far back out of the way as possible. I would much rather have run and called it a day. Only I knew that if I tried it, that head would drop down and smear me. Cries from within the tower indicated that I had been spotted, but I was not about to look away to see what was going on. Then I began cursing the thing. I wanted it to strike and get it over with, one way or the other. When it finally did, I shuffled my feet, twisted my body, and swung the point into line with my target. My left side was partly numbed by the blow, and I felt as if I had been driven a foot into the ground. Somehow I managed to remain upright. Yes, I had done everything perfectly. The maneuver had gone exactly as I had hoped and planned. Except for the beast's part. It wasn't cooperating by producing the appropriate death throes. In fact, it was beginning to rise. It took my blade with it, too. The hilt protruded from its left eye socket, the point emerged like another bristle amid the mane on the back of its head. I had a feeling that the offensive team had had it. At that moment, figures began to emerge-slowly, cautiously-from an opening at the base of the tower. They were armed and ugly-looking, and I had a feeling that they were not on my side of the disagreement. Okay. I know when it is time to fold and hope for a better hand another day. "Brand!" I shouted. "It's Random! I can't get through! Sorry!" Then I turned, ran, and leaped back over the edge, down into the place where the rocks did their unsettling things. I wondered whether I had chosen the best time to descend. Like so many things, the answer was yes and no. It was not the sort of jump I would make for many reasons other than those which prevailed. I came down alive, but that seemed the most that could be said for it. I was stunned, and for a long while I thought I had broken my ankle. The thing that got me moving again was a rustling sound from above and the rattle of gravel about me. When I readjusted the goggles and looked up, I saw that the beast had decided to come down and finish the job. It was winding its phantom way down the slope, the area about its head having darkened and opaqued since I had skewered it upstairs. I sat up. I got to my knees. I tried my ankle, couldn't use it. Nothing around to serve as a crutch, either. Okay. I crawled then. Away. What else was there to do? Gain as much ground as I could and think hard while I was about it. Salvation was a rock-one of the smaller, slower ones, only about the size of a moving van. When I saw it approaching, it occurred to me that here was transportation if I could make it aboard. Maybe some safety, too. The faster, really massive ones appeared to get the most abuse. This in mind, I watched the big ones that accompanied my own, estimated their paths and velocities, tried to gauge the movement of the entire system, readied myself for the moment, the effort. I also listened to the approach of the beast, heard the cries of the troops from the edge of the bluff, wondered whether anyone up there was giving odds on me and what they might be if they were. When the time came, I went. I got past the first big one without any trouble, but had to wait for the next one to go by. I took a chance in crossing the path of the final one. Had to, to make it in time. I made it to the right spot at the right moment caught on to the holds I had been eyeing, and was dragged maybe twenty feet before I could pull myself up off the ground. Then I hauled my way to its uncomfortable top, sprawled there, and looked back. It had been close. Still was, for that matter, as the beast was pacing me, its one good eye following the spinning big ones. From overhead I heard a disappointed wail. Then the guys started down the slope, shouting what I took to be encouragement to the creature. I commenced massaging my ankle. I tried to relax. The brute 第 28 页 共 25 页 crossed over, passing behind the first big rock as it completed another orbit. How far could I shift through Shadow before it reached me? I wondered. True, there was constant movement, a changing of textures.. . The thing waited for the second rock, slithered by behind it, paced me again, drew nearer. Shadow, Shadow, on the wing- The men were almost to the base of the slope by then. The beast was waiting for its opening-the next time around-past the inner satellite. I knew that it was capable of rearing high enough to snatch me from my perch. -Come alive and smear that thing? As I spun and glided I caught hold of the stuff of Shadow, sank into the feel of it, worked with the textures, possible to probable to actual, felt it coming with the finest twist, gave it that necessary flip at the appropriate moment... It came following me! They had even gained some. Naturally, I got angry. To hell with flight! They were asking for it, and it was time they got it one came up and joined them. They were not all that good, but it was getting crowded and there were a lot of points and sharp edges straying about me. I kept parrying and moving, trying to get them to block one another, get in each other's way. I was partly successful, and when I had the best lineup I thought I was going to get, I rushed them, taking a couple of cuts-I had to lay myself open a bit to do it-but splitting one skull for my pains. He went over the edge and took the second one with him in a tangle of limbs and gear. Unfortunately, the inconsiderate lout had carried off my blade, snagged in some bony cleft or other he had chosen to interpose when I swung. It was obviously my day for losing blades, and I wondered if my horoscope would have mentioned it if I had thought to look before I'd set out. Anyhow, I moved quickly to avoid the final guy's swing. In doing so, I slipped on some blood and went skidding toward the front of the rock. If I went down that way, it would plow right over me, leaving a very flat Random there, like an exotic rug, to puzzle and delight future wayfarers. I clawed for handholds as I slid, and the guy took a couple of quick steps toward me, raising his blade to do unto me as I had his buddy. I caught hold of his ankle, though, and it did the trick of braking me very nicely-and damned if someone shouldn't choose that moment to try to get hold of me via the Trumps. "I'm busyl" I shouted. "Call back later!" and my own motion was arrested as the guy toppled, clattered, and went sliding by. I tried to reach him before he fell to rugdom, but I was not quite quick enough. I had wanted to save him for questioning. Still, my ? unegged beer was more than satisfactory. I headed back top and center to observe and muse. The survivors were still following me, but I had a sufficient lead. I did not at the moment have to worry about another boarding party. Good enough. I was headed toward the mountains once again. The sun I had conjured was beginning to bake me. I was soaked with sweat and blood. My wounds were giving me trouble. I was thirsty. Soon, soon, I decided, it would have to rain. Take care of that before anything else. So I began the preliminaries to a shift in that direction: clouds massing, building, darkening. . . . I drifted off somewhere along the line, had a disjointed dream of someone trying to reach me again but not making it. Sweet darkness.. . . . . . . . . 第 29 页 共 25 页
/
本文档为【毕业设计-基于VB和XML的个人资料编辑器的实现—论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索