




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
URL的分析与跟踪摘要关键词:URL分析,URL 跟踪,正则表达式,XML目录目录21绪论41.1 本文的目的和意义41.2 国内外相关研究概述51.3 本文研究内容和采用的方法51.4 本文所取得的成果及意义的概述62 相关知识介绍72.1 .NET简介272.2 Visual C#.NET简介82.2.1 Visual C#.NET语言的产生背景82.2.2 Visual C#.NET特点92.3 正则表达式92.4 URL5102.4 XML相关知识6112.4.1 XML基础112.4.2 XML 文件处理123 系统需求分析133.1 项目的背景、现状133.2 需求概述133.2.1 功能需求133.2.2 非功能需求133.3系统数据流图(或用例图、类图)144 系统设计154.1 设计的要求和目标154.1.1 系统设计的原则154.1.2 系统设计的目标154.2系统体系结构设计164.3 模块设计164.3.1 响应用户输入模块164.3.2 响应用户输入模块流程图174.3.3 URL分析模块174.3.4 URL分析模块流程图184.3.5 URL地址树模块194.3.6 URL跟踪模块194.3.7 URL跟踪模块流程图204.4 数据库设计214.5 用户界面设计214.6 核心算法设计214.6.1 保存树中的内容到文件214.6.2 从文件中读取内容到书中225 系统实现与应用245.1 系统实现的软硬件平台245.2系统实现之关键代码分析245.2.1保存树中的内容到XML文件245.2.2读取XML的文件,显示到树中245.3 系统实现之截图255.3.1 系统界面图255.3.2 软件功能简介265.3.3 与我联系265.3.4 是否退出应用程序275.3.5 输入提示275.3.6 对有效URL的分析285.3.7 对URL的跟踪285.3.8 对html文件的分析295.3.9 保存为.XML文件295.3.10 成功保存为.XML文件305.3.11 插入节点315.3.12 成功插入节点315.3.13 选中节点,以高亮显示325.3.14 成功删除所选中的节点325.3.15 清空URL树335.3.16 读取URL树335.3.17 成功读取XML文件345.4 系统应用346 结论35致谢36参考文献37附录381保存TreeView中的内容到指定的XML文件382 从指定的XML文件读取内容填充到XML文件401绪论1.1 本文的目的和意义21世纪是网络时代,网络已经离我们的生活越来越近,网上购物、视频点播、电子邮件等等,都已经成了许多人生活的一部分。而说起互联网,最容易看见的就是一张一张的网页了,大大小小的网站举不胜举,特别是在web2.0新起之后,互联网越来越平民化,不需要太多技术知识,甚至只需简单点几下鼠标,就可以通过blog,空间等形式在互联网上建立属于自己的网页。而且,这些网页还在以每天几何数级的速度增长着。那么用户是怎么访问这许许多多的网页的?这些网页又是靠什么联系在一起的呢?说到网页,最常见的就是WWW(World Wide Web)环球信息网,即万维网。简而言之,WWW是一个以Internet为基础的计算机网络,它允许用户在一台计算机通过Internet存取另一台计算机上的信息。之所以称其为信息网,是因为它的资源可以互相连接的缘故,全世界目前大概有数万个Web站,每个Web 站都可以通过超链接(Hyper link)与其它Web 站连接,任何人都可以设计自己的Home Page,放上Web 站,然后在你的Home Page上面产生链结,与其他人的Home Page 连接,或是连到其他的Web 站;别人也一样可以连到你的Home Page或是你的Web 站,整个信息网就这样编织了起来,形成一个巨大的环球信息网。WWW服务器使用的主要协议是HTTP(Hyper Text Transport Protocol)协议,即超文体传输协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议基于客户/服务器模式,在服务器端,运行Server,当接到客户请求时,将客户所请求的对象以html(Hyper Text Mark-up Language),即超文本标记语言形式发送给用户;在客户端,用户通过Browser浏览器将html文件解析成可视的网页,显示出来。HTTP使用了统一资源定位器URL(Uniform Resource Locator)这一概念。简单地说,URL就是文档在环球信息网上的地址。URL用于标识Internet或者与Internet相连的主机上的任何可用的数据对象。通过在浏览器中的地址栏中输入URL,可以获取该URL所指向的html文件,而每个html文件中又包含多个URL,这样,就可以通过一个网页跳转到另一个网页。但是,面对着这数不清的网站,我们如何可以快速找到所需要的网页,了解他们的层次结构,使我们能更加快速,高效的使用Internet网。同时,网页中夹杂着恶意链接的情况也越来越多,如何能找出这些恶意的链接,也是让很多人头疼的问题。而本系统的任务,就是分析出一个html文件内所有的URL链接,并对这些URL链接进行跟踪。这样,我们就能过对整个网站的结构一目了然,同时,方便我们判断哪些是恶意链接,哪些是对我们有用的链接,方便我们能更安全地在Internet网中漫游。1.2 国内外相关研究概述目前,国内对URL相关研究主要是以下几个方面:1. 基于URL的网页过滤器的设计与实现,通过对Linux系统内核模块的分析,设计通过网络包截获、网络包过滤两个步骤进行包过滤的实习。在设计过程中,探讨并实现了URL阻挡数模型、上下层通信的技术(上下层大规模数据传输和内核主动发信号给进程的技术)和包的截获技术7。2. 基于URL过滤与内容过滤的网络净化模型,在信息时代里,信息爆炸似地增长着,而为数众多的不良信息充斥其中。针对这种状况,许多的公司与研究机构都提出了自己的过滤模型。该模型在运用WCCP协议的前提下,结合了URL过滤和内容过滤这两种方法多网络信息进行过滤,该经了传统的URL过滤算法8。3. 基于URL聚类的新型web筛选机制研究,由于传统的筛选方法在执行效率和准确率上都不能满足网页信息提取的需要,我们提出了一种新的基于领域知识的筛选方法。这种方法不仅通过网页的内容进行筛选,而且利用网页特点,通过URL聚类的方法进行筛选9。4. 面向Web应用的前置URL控制机制研究,针对反向代理应用中存在着的网页内嵌URL问题,提出了前置URL控制机制,构建了该机制的总体模型,包括URL定向模型、预分析器、HTML/XML解析器、URL修改模块和COOKIE修改模块各部件。论述了模型的核心技术动态脚本的HTML解析和XSL/XML联合解析,提出了异地代理的解决方案。在Apache/Linux下实现了该模型原型,对其功能进行了完整测试,包括性能负载测试10。5. 针对URL的哈希函数,在Web学习处理的研究中,不少情况下需要对很大的URL序列进行散列(hashing)操作,本文提出了一个针对URL数据集合的均匀哈希函数,它是ELFhash函数的变型11。1.3 本文研究内容和采用的方法考虑到本系统涉及到很多网络方面的技术,而C# 语言中,封装了很多类来支持有关网络系统的开发,因此,本系统将采用C#语言来进行开发。C#是一种面向对象的、独立于平台的安全语言,它比C+更容易学习,而且比C和C+更能避免被误用。C#像VB一样具有快速开发能力,像C+一样强大、更像Java一样优美,它就是C#1。面向对象编程(OOP)是一种软件开发方法,它将程序视为一组协同工作的对象。文【1】指出:面向对象技术代表了一种全新的程序设计思路和观察、表达、 处理问题的方法。与传统的面向过程的开发方法不同,面向对象的程序设计和问题求解符合人们日常自然的思维习惯,降低、分解问题的难度和复杂度,提高整个求解过程的可控制性、可监测性和可维护性,从而达到以较小的代价和较高的效率获得较满意效果的目的。面向对象技术中所指的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。比如,我们日常所看的电视机就是一个具有实在功能的实体,在面向对象的程序设计中,电视就可以表达成一个计算机可理解、可操纵、具有一定属性和行为的对象。C#是唯一没有在设计思路中加入了前辈语言某种特征的新事物,并且它在设计时考虑了多数实际应用的需要。因此,C#对于开发人员来说比C+等更加简单。C#是彻底的面向对象的语言,将面向对象提高了另一个层次。即简单的数据类型都可以被当作对象来处理。C#是类型安全的(type-safe),这意味着很多事情。首先,C#是强类型语言,声明变量时一定要指定变量的类型,赋值时如果类型与变量类型不符,编译时将出错。其次,代码只能访问被授权可以访问的内存位置。最后,C#是自动管理内存的,不允许使用指针直接操作内存。C#不允许使用指针是出于类型安全考虑的,但是并不意味着绝对不能使用指针。如果有人对指针有所偏好,就可以使用unsafe这个关键字来标示某段代码,使其跳过.NET框架的类型安全检查,在这段代码中就可以使用指针直接操纵内存了。这让C#难以置信地强大。由此,我们对C#语言的信心更加坚定,尽管.NET框架没有限定使用某种特定的语言,但C#无可置疑是.NET环境下进行开发的首选语言。1.4 本文所取得的成果及意义的概述本文所取得的成果之一是本系统实现了以下的功能:1. 以本地htm文件为输入,分析其中URL地址,得到一棵URL地址树。2. 以URL地址为输入,获取该URL地址所指向的htm文件,分析其中的URL地址,得到一棵URL地址树。3. 将URL地址树存入XML文件中。4. 从XML文件中取出URL数据,以树的形式显示给用户,用户可对该URL树进行管理,如保存树,清空数,删除树中节点,插入树中节点,等等。5. 对URL进行跟踪,当用户鼠标双击URL树上的URL叶子节点时,取得该叶子节点存放的URL,以该URL做为输入,调用功能2),得到一棵新的URL树,分析得到的URL地址做为子节点重新插入原URL树中。本系统的主要任务,就是分析出一个html文件内所有的URL链接,并对这些URL链接进行跟踪。这样,我们就能过对整个网站的结构一目了然,同时,方便我们判断哪些是恶意链接,哪些是对我们有用的链接,方便我们能更安全地在Internet网中漫游,即对网络冲浪提供便捷。2 相关知识介绍本系统主要的开发环境是.NET开发平台,采用与.NET平台量身定做的C#语言实现代码的编写工作。在URL数据存储方面,使用XML文件来进行数据的存储。2.1 .NET简介2.NET技术是微软公司推出的一个全新概念,它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。.NET的目的就是将互联网作为新一代操作系统的基础,对互连网的设计思想进行扩展,用户在任何地方、任何时间,以及利用任何设备都能访问所需的信息、文件和程序。用户不需要知道这些文件放在什么 地方,只需要发出请求,然后就可以接受处理的结果,后台的复杂处理过程对用户而言是透明的。.NET的开发平台如图 所示。.NET开发平台包括.NET框架和.NET开发工具组成部分,.NET框架(Framework)是整个开发平台的基础,包括公共语言运行库和框架类库,.NET开发工具包括Visual Studio.NET集成开发环境和.NET编程语言。其中,Visual Studio.NET集成开发环境用来开发和测试应用程序。.NET编程语言包括Visual Basic、Visual C+和新的Visual C#等用来创建运行在公共语言运行库(Common Language Run,CLR)上的应用程序。.NET框架的组成如图 所示。.NET框架包括公共语言运行库和.NET类库。公共语言运行库是.NET的基础,用户可以将公共语言运行库看作是一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程管理),而且还强制实施严格的类型安全检查,以确保代码运行的安全性和可靠性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NET框架的另一个主要部件是类库,它是一个综合性的面向对象的可重用类型集合,用户使用它不仅可以开发传统的命令行或图形用户界面(GUI)应用程序,而且还可以开发ASP.NET所提供的创新应用程序(如Web窗体和XML Web服务)。图 .NET开发平台图 .NET框架2.2 Visual C#.NET简介2.2.1 Visual C#.NET语言的产生背景1995年,Sun公司正式推出面向对象的开发语言Java,并提出跨平台、跨语言的个概念,之后,Java就逐渐成为企业级应用系统开发的首选工具。为支持Java语言,微软开发出基于Java语言的编译器Visual J+,并在很短的时间里由1.1版本升级到6.0版本,其中Visual J+ 6.0版集成在Visual Studio 6.0 中。该语言开发的程序不但在Java虚拟机上(Java Virtual Machine,JVM)的运行速度大大加快,而且增加了许多新特性,同时还支持调用Windows API,这些特性使得Visual J+成为强有力的Windows应用开发平台,并成为业界公认的优秀Java编译器。由于Visual J+主要应用在Windows平台的系统开发中,因此Sun公司认为Visual J+违法了Java的许可协议,违反了Java开发平台的中立性,并对微软提出了诉讼,这使得微软处于极为被动的局面。为了改变这种局面,微软决定推出其进军互联网领域的.NET计划,C#就是该计划中所要开发的一门重要的开发语言。.NET计划将是微软今后几年发展的战略核心,其内容非常庞大。它的技术开发平台是Visual Studio.NET,而C#作为Visual J+的替代语言,也集成在该平台中。C#语言的开发成功,对微软未来的发展有着非常重要的意义。微软在2000年6月份举行的“职业开发人员技术大会”上正式发布了C#语言。微软公司对C#的定义是:“C#是一种类型安全的、现代的、简单的、由C和C+衍生出来的面向对象的编程语言,它是牢牢根基于C和C+语言之上的,并可立即被C和C+开发人员所熟悉。C#的目的就是综合Visual Basic的高生产率和C+的行动力。”2.2.2 Visual C#.NET特点与C和C+相比,C#具有以下特点:1) 语法更简单;2) 保留了C+的强大功能;3) 快速应用开发功能;4) 语言的自由性;5) 强大的Web服务器控件;6) 支持跨平台;7) 与XML相融合。2.3 正则表达式该系统的核心是与html文件的内容中的关键字进行匹配,来找出该html文件中所有的URL链接。字符串的匹配有很多方法,在C#中,字符串的匹配有一个很强大而又简单的方式,就是利用正则表达式的模式匹配。正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。 使用正则表达式,就可以: 1).测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 2).替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。 3).根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。一个正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配3。当前,所有的文本编辑器都有一些搜索的功能。通常可以打开一个对话框,在其中的一个文本框中键入要定位的字符串,如果还要同时进行替换操作,可以键入一个替换字符串。这种搜索最简单的方式,是可以请求用Microsoft替换文档中所有的MS,这类问题很容易用string类的string.Replace()方法来解决。但如果需要在文档中识别某个重复的,该怎么办?编写一个例程,从一个string类中选择重复的字是比较复杂的。此时使用语言就很合适4。2.4 URL5在公路上驾驶汽车如果看不懂交通标志,我们将无法到达我们所希望去的地方。同样我们在Internet海洋中遨游时,如果不了解什么是统一资源定位器(URL),我们也不能在Internet海洋中寻找资源获取信息以及用E-mail通信,可见统一资源定位器对上网用户来说是多么重要,一个完整的URL应由下面几个部分组成:资源类型+主机名+子目录(可选)+文件名(可选)。下面举例来说明统一资源定位器的组成,例如下面的URL:/dongqiang/index.html,表面上看去,有这么多的字符排成一行,确实很难记忆,但我们如果把它分解开来,就发现它并不复杂。HTTP为该URL的第一项,用来定义所要查找资源的类型。资源的类型有以下几种:1) HTTP 定义访问Internet中的WWW页面;2) HTTPS 定义访问具有安全性WWW服务器上的页面;3) FTP 定义远程传送主机上的文件或目录;4) FILE 定义访问本地主机上的文件或目录;5) TELNET 定义去登陆一台远程主机;6) NEWS 定义访问一个USENET的讨论组;7) SNEWS 定义访问具有安全性NEWS服务器上的讨论组;8) ABOUT 定义程序的信息和一些特殊的资源。URL的第二项就是我们想访问的Internet站点名,也叫Internet主机名,这里的就是江苏省盐城市信息网络中心的一台小型机的名字,该计算机上存储有我们的WWW页面。有了这个计算机名字,Internet通过域名系统,找到与这台计算机的英文名相对应的数字地址,也叫IP地址,就能够在全世界范围找到这台计算机。计算机的名字是由用小数点分隔开的一连串字符组成的,中间不能有空格,且计算机名字前必须加上“/”这一符合。在计算机名字后面,紧跟着的就是URL的第三项,它是用来定义信息保存在这台计算机的什么地方,也就是放在哪一个子目录中,每一个子目录前面有一个斜杠。当然子目录是可选的,并不是所有URL都要用到子目录,在这里,我们所要找的信息位于“”下的“dongqiang”子目录中。URL的最后一项定义了我们要想访问的某个具体信息的文件名,我们这里的文件名是index.html。2.4 XML相关知识62.4.1 XML基础当前,因特网只是文本和图片的访问媒体,并没有智能搜索、数据交换、自适应表现和个人化的标准。因特网需要超出设置信息访问和显示标准的限制,因特网需要设置信息理解准备标准(尽管数据的通用方式),以便软件能够更好地搜索、移动、显示和处理上下文中隐藏的信息。当前的HTML并不表示数据。尽管HTML提供了显示的丰富的工具,但HTML并没有提供任何基于标准的管理数据的方式,于是XML应运而生。可扩展标记语言(XML)是一种提供数据描述格式的标记语言。该语言使跨越多个平台进行更准确的内容声明和获得更有意义的搜索结果变得更加容易。此外,XML实现了表示与数据的分离。例如,在HTML中使用标记语言在告诉浏览器将数据显示为粗体或斜体;而在XML中,标记只用于描述数据,例如城市名、湿度和大气压。在XML中,使用样式表(如可扩展样式表语言(XSL)和层叠式样表(CSS)在浏览器中显示数据。XML使数据与表示及处理分离出来,通过应用不同的样式表和应用程序,能够根据需要显示和处理数据。XML是为在Web上传送而进行优化了的SGML的子集。它是由WWW联合会(3C)定义的。该标准化确保了结构化数据的统一性和相对于应用或供应商的独立性。XML是Visual Studio.NET和.NET框架的很多功能的核心。它大大丰富了HTML的描述功能,可以描述非常复杂的Web页面,如复杂的数学表达式,化学方程式等。简单地讲,XML的功能可以分为四个方面:结构化、自描述、可扩展和浏览器自适应。下面分别介绍这几种特性:1) 结构化XML是一种极端标准化的语言规范。同SGML一样,XML文件利用了一个DTD(document type definition,文件类型定义)规范,DTD规范是一个用来定义XML文件的语法、句法和数据结构的标准。2) 自描述尽管并不要求XML文件必须是可以自描述的(只要求是结构化的),但带有自描述可以增强Web的检索功能。这些描述被称作“元数据”(metedata),它们可以包括有关一个文件的信息如安全(谁可以阅读它)、阅读范围、文件内容、文件是用什么语言写的、作者是谁以及关于这个文件的其他任何信息。3) 可扩展可扩展性一直是HTML的弱点,由于HTML被定义成一套固定的标签集,人们不可能增加新的标签而又不破坏HTML标准。由于现在Web页面需要表达的内容越来越丰富、越来越复杂,标准HTML规定的标签远远不能满足页面设计的需要。为了解决标准HTML 目前的限制并且考虑到未来Web页面发展的需要,就要求新的页面标签具有可扩展性:能够创建新的标签。在XML中,标签是由DTD定义的,正是它来定义在要给文件的机构中允许与什么样的应用(如风格条、浏览器、检索数据库、打印引擎等)。4) 浏览器自适应如果一个XML文件是结构化的,那么这样的一个文件应该能够适应各种不同的浏览模式。XML提供的软件功能还能够对用户输入的数据进行动态的计算和显示。2.4.2 XML 文件处理由于XML的易共享性等优点,所以XML技术越来越多地应用于企业级数据处理等领域,如应用于企业生产报表。新产品分布和年度数据汇总等。XML逐步成为从中间层传送数据到桌面的工具,由于XML的数据可以通过中间层代理与多层后台数据库源集成,目前绝大多数数据库制造商已全面支持XML技术,提供了各种强大的功能来处理XML数据。C#在XML编程方面具有强大的开发效率,为处理XML数据提供了许多相关类,如处理stream的类有XmlReader和XmlWriter;DOM类的有XmlNode,XmlDocument和XmlElement等;Xpath的类有XmlNavigator;XSLT的类有XmlTransform。3 系统需求分析3.1 项目的背景、现状随着网络时代的到来,网络已成为很多人生活的一部分,Internet网上的站点越来越多,如何帮助用户在众多的网页中快速找到所要的URL链接,同时尽量避免网页中可能的恶意链接的影响,这就需要一个能够分析和跟踪URL的工具。本系统正是为了解决这些问题而诞生的。3.2 需求概述3.2.1 功能需求本系统即URL的实现与分析,主要完成以下功能:1. 以本地htm文件为输入,分析其中URL地址,得到一棵URL地址树。2. 以URL地址为输入,获取该URL地址所指向的htm文件,分析其中的URL地址,得到一棵URL地址树。3. 将URL地址树存入XML文件中。4. 从XML文件中取出URL数据,以树的形式显示给用户,用户可对该URL树进行管理,如保存树,清空数,删除树中节点,插入树中节点,等等。5. 对URL进行跟踪,当用户鼠标双击URL树上的URL叶子节点时,取得该叶子节点存放的URL,以该URL做为输入,调用功能2),得到一棵新的URL树,分析得到的URL地址做为子节点重新插入原URL树中。3.2.2 非功能需求在系统的实现过程中,以下几个方面也是必须考虑的:1. 实时性:能够对某些处理过程进行相应的跟踪,尽量以较快的时间展现给用户对应的操作结果。如果时间相对延时,那么软件的质量也不能得到保证。所以必须考虑系统的实时性。2. 易用性:本系统不仅供计算机相关人士使用,而且希望非专业人士能够熟练对该软件的使用,不用记忆复杂的命令,因此采用图形化界面实现本系开发。提供对软件的相应的介绍和操作提示,使得此软件更加人性化。便于用户使用。3. 鲁棒性:主要是对用户操作异常的处理,在不影响系统性能的前提下对异常操作给出相应提示信息。对异常能够进行正确分析、判断与处理,也是衡量软件质量的一个有效手段。所以,在系统的设计中,鲁棒性也必须考虑在内。3.3 系统数据流图(或用例图、类图)本系统的数据流图如下图所示:4 系统设计4.1 设计的要求和目标4.1.1 系统设计的原则在该系统的体系架构设计、开发和编码的实现中,遵循了以下原则:1. 系统各个功能模块的设计遵循以下规则:单一职责(SOP)和开放封闭原则(OCP)12,在软件工程中所论述低耦合、高内聚的指导原则下,展开对系统设计和开发。如此以来,各个功能模块就可以独立地扩展演化。每个模块独立地完成一定的功能,当系统的需求发生变化时,只要对相关模块进行适当的升级,就可以实现对整个系统功能的完善。无论对于该软件的维护还是系统的升级都带来一定的便利。2. 采用面向对象程序设计的基本理念,增强代码的重用性,为系统功能的完善奠定基础。3. 为提高软件的可操作性,使得不具备计算机相关知识的工作人员也可以使用本软件,采用图形界面的设计方式、界面简洁、直观、流畅,充分体现了人性化设计要求,增强人机交互,提高系统运行效率。4.1.2 系统设计的目标本系统的代码实现是采用C#语言;采用图形界面的方式,方便用户使用。该系统的实现有以下特点:1. 开发语言选择C#,C#是面向对象的程序设计语言,封装性号,易于代码的重用和功能的扩展,进而给软件的维护工作带来了便利。开发平台选择.NET,该平台提供了良好的编程界面,这一性能使得开发软件对非计算机专业人员来书,使用非常便利。此外,该平台所提供的开发工具,对软件开发者来说,也大大加速了软件开发的过程,提高了软件开发的效率和质量。2. 在对软件的设计和开发中,应共实时性、可靠性和鲁棒性等方面来考虑。本系统的实现过程中,给用户提供了友好的界面,对相应的操作提供了对应的提示信息,以及对异常进行了处理。充分体现了上述原则。是对上述原则的最好诠释。3. 在对数据的访问和操作时,采用了文件这一方式。这相对于数据库的设计来说,更加简单与实用。4. 在本系统的设计与实现中,各个功能模块既有一定的独立性,能够完成一定的功能;又与其他模块有机地联系在一起,以完成整个系统的功能。4.2 系统体系结构设计本系统的体系结构设计如下图所示:4.3 模块设计4.3.1 响应用户输入模块对于输入模块而言,很重要的一点是对用户的输入进行判断,将错误的输入都提示给用户。本系统提供一个文本框,供用户进行输入地址,当用户输入后,按下键盘上的回车键,或者鼠标点击程序界面上的跟踪按钮,就会触发动作监听事件。首先,判断用户输入是否为空,若为空,则说明用户未输入任何数据,就弹出对话框,提示用户进行数据的输入。若不为空,则将用户的输入放入字符串中,调用字符串的startsWith()方法,判断用户输入的字符串是否以http:/开头,若是,则说明用户输入的是URL地址;判断用户输入的字符串是否以.htm结尾,若是,则说明用户输入的是本地硬盘上文件的htm文件名。判断用户输入的字符串是否以.xml结尾,若是说明用户输入的是本地硬盘上的xml文件名。对于URL地址,应调用读取URL模块,以用户输入为URL地址,获取该地址所指向的internet网络上的文件的内容,若读取成功,则将读取到的文件的内容存入一个字符串中,并将该字符串返回,如果读取失败,可能是因为用户输入的URL地址错误,或者网络不通,弹出错误信息对话框,并返回程序主界面。对于本地硬盘上的文件名,则先判断该输入是否是以.htm结尾或.xml结尾,即是不是html文件或xml文件,若不是,则弹出错误信息对话框,提示用户本地文件应是html文件或xml文件。若输入是以.htm结尾,则调用文件读取模块,以用户的输入做为本地硬盘上文件的文件名,读取该文件的内容,若读取成功,则将读取到的文件的内容存入一个字符串中,并返回该字符串,如果读取失败,则说明用户输入的文件不存在,弹出错误信息对话框,并返回程序主界面。对于html文件,调用html文件处理模块,找出该文件所有的URL地址,形成URL树并显示给用户。此外允许用户对该树进行相关的操作,如增加节点、删除节点、保存树、清空树等操作。当用户双击该树中有效的URL节点,实现对该节点的跟踪。对于xml文件,调用xml文件处理模块。即读取该文件的内容,以树的形式显示给用户并允许用户对该树进行上述的有关树的操作,以及对URL节点的跟踪。4.3.2 响应用户输入模块流程图图 响应用户输入模块流程4.3.3 URL分析模块通过响应用户输入模块,我们得到了用户输入所指定的文件其内容,该内容存放在一个字符串中,所以URL分析模块的输入,就是该字符串。另外,该模块还需要一个输入,就是用户直接输入的字符串。用户输入的字符串直接做为URL树的节点插入到树中,之后插入的节点都是这个节点的子节点。Html是一种标记语言,其基本特点是通过不同的标记来进行不同的操作,这样,就为实现对URL的跟踪提供了可能,在html文件中,URL地址基本都出现在之间。这样,只需匹配html文件中的tag,当匹配到a href=时,取出之后”之间的字符串,就是所要找的URL地址。这当然是其中的一个方法。但本系统所采用的实现方式更加间接、方法。直接匹配http:/的内容。关于字符串的匹配有很多种方法,在本系统中,采用的是正则表达式,这是一种用于表示一行或大量文本中可能出现的文本模式的标准方法,正则表达式由一系列的字符和标点组成,用于描述文本中可能找到的文本模式。在本系统中,需要用来匹配的文字模式就是将网页中URL地址写成正则表达式所规定的标准模式。经过正则表达式的模式匹配,得到的URL直接作为子节点插入URL树中。在URL树中,可以进一步对URL进行分析而得到该地址的主机名,用?分隔的AbsolutePath和Query属性和端口号。当分析完成后,将整棵URL树返回。4.3.4 URL分析模块流程图图 URL分析流程图图3 URL分析模块流程4.3.5 URL地址树模块该模块定义了URL树,包括树的生成,显示,存放,以及树的一些相关的操作。首先,利用根节点建立一棵树。树与XML文件的存储通过C#提供的库函数来实现。C#在XML编程方面具有强大的开发效率,为处理XML数据提供了许多相关类,如处理stream的类有XmlReader和XmlWriter;DOM类的有XmlNode,XmlDocument和XmlElement等;Xpath的类有XmlNavigator;XSLT的类有XmlTransform。用户对该URL树可以进行如下的操作:增加节点。用户可直接在URL树中增加新的URL节点,手动实现对URL的跟踪。增加节点时,先取得增加处位置的父节点,然后取得该父节点孩子的个数,利用treeView的add方法,将节点插入树中。删除节点。当某些URL链接不存在之后,用户可手动从URL树中删除该节点,不必重新分析页面。取得选中位置处的节点,利用treeView的Remove方法将该节点删除。清空树。将URL树中的所有节点删除。即对根节点进行删除节点操作,利用treeView的Clear方法。保存树。将整棵URL树以些文件的方式保存到指定的XML文件当中。读取树。把指定的XML文件当中的内容读取出来,存放到URL树中。此外,还设置了对树的鼠标触发器监听,当用户双击某个节点是,触发URL跟踪模块。4.3.6 URL跟踪模块在URL地址树模块中,对显示给用户的树中设置了鼠标双击触发器监听,当用户对树中的某个节点双击时,就触发了URL跟踪模块。实现对URL的跟踪,先要取得需要进行跟踪的URL地址,通过用户鼠标双击,触发了监听,先判断用户双击时是否选中某个URL节点,若用户当前选择的节点为空,则触发后不进行任何处理。若用户双击的是树中的某个节点,则取得该节点中的URL地址,之后,调用响应用户输入模块,将该URL地址作为用户的输入,完成后,再调用URL分析模块,分析得到该节点所包含的URL子树,以该节点为父节点,将此子树插入到URL总树中,这样,就实现了对URL节点的跟踪。4.3.7 URL跟踪模块流程图图 URL跟踪模块流程图4.4 数据库设计本系统实现所需的数据存放在.xml文件和.html文件中。以文件的方式实现数据的存储和操作。4.5 用户界面设计4.6 核心算法设计本系统的核心算法主要有以下两个:1. 把所建立的URL树中的内容存放到.XML文件中2. 读取.XML文件中的内容显示到URL树中4.6.1 保存树中的内容到文件该方法的流程图如下图所示:图 保存TreeView中的内容到指定文件流程图4.6.2 从文件中读取内容到书中当 XmlTextReader 解析 XML 文件时,适当的动作依赖于节点类型(NodeType) 做出。如果 节点类型(NodeType) 为 (元素)Element, 则建立一个新的 TreeNode ,并且使用 XML 的节点属性设置它的属性。在非空元素的情况下,父节点(ParentNode) 设置为新的 TreeNode, 以便于它的子节点能被载入。如果遇到一个 末尾元素标记(EndElement), 父节点(ParentNode) 设置为当前父节点的父节点,以标识当前节点的所有子节点都已经被载入。该方法的流程图如下图所示:图 读取指定文件中的内容保存到TreeView流程图5 系统实现与应用5.1 系统实现的软硬件平台系统实现的软硬件平台如表所示:软件平台Windows XP、C#、.NET 硬件平台PC 机(内存512M,CPU AMD 2000+ 1.67 GHz ) 5.2 系统实现之关键代码分析5.2.1 保存树中的内容到XML文件把TreeView中的内容保存到指定的XML文件中,该任务由SerializeTreeView 方法完成。该方法主要完成以下任务,关于该方法的详情请参见附录:1. 创建 XmlTextWriter 类的实例,传递提供的文件名参数. 2. XML 声明 () 被写入到流中. 3. TreeView 标记被写入流中. 4. SaveNodes 方法被调用。把 TreeView 控件中的 TreeNode 集合传递给此方法,此方法递归调用自身,以保存 TreeView 中的所有节点到流中。此方法的定义请参见附录。 5. TreeView 的结束标记被写入. 6. 最后关闭流.5.2.2 读取XML的文件,显示到树中从 XML 文件载入内容到 TreeView 中,载入任务由 DeserializeTreeView 方法实现,该方法使用了 XmlTextReader 类来解析 XML 文档,并填充到 TreeView 对象中。关于 DeserializeTreeView 方法的定义,详情请参见附录:当 XmlTextReader 解析 XML 文件时,适当的动作依赖于 节点类型(NodeType) 做出。如果 节点类型(NodeType) 为 (元素)Element, 则建立一个新的 TreeNode ,并且使用 XML 的节点属性设置它的属性。在非空元素的情况下,父节点(ParentNode) 设置为新的 TreeNode, 以便于它的子节点能被载入。如果遇到一个 末尾元素标记(EndElement), 父节点(ParentNode) 设置为当前父节点的父节点,以标识当前节点的所有子节点都已经被载入。为了设置 TreeNode 的 Text, Tag 和 ImageIndex 属性,调用了 SetAttributeValue 方法,详情请参见附录。5.3 系统实现之截图5.3.1 系统界面图图6 系统界面5.3.2 软件功能简介5.3.3 与我联系5.3.4 是否退出应用程序5.3.5 输入提示5.3.6 对有效URL的分析5.3.7 对URL的跟踪5.3.8 对html文件的分析5.3.9 保存为.XML文件5.3.10 成功保存为.XML文件5.3.11 插入节点5.3.12 成功插入节点5.3.13 选中节点,以高亮显示5.3.14 成功删除所选中的节点5.3.15 清空URL树5.3.16 读取URL树5.3.17 成功读取XML文件5.4 系统应用系统应用(讲应用效果,未应用的讲应用前景)6 结论这是本人第一次学习使用面向对象的C#语言来进行系统的开发。对于之前接触过的面向过程的程序开发语言而言,C#的优势是很明显的,特别是面对一些复杂的问题,C#封装了大量的包,需要用到的时候可以直接拿过来用,这样,可以大大减少软件开发的周期和成本,使开发人员不必要花费太多的精力在一些常用而又繁琐的功能之中。通过此次毕业设计工作,自己的动手能力得到极大的提高,各方面的水平得到不同程度的加强。以前学习的主要是理论方面的知识,亲自动手的机会不多。在此次毕业设计工作中,遇到了许多问题,要求将以前学习的各种知识综合起来,对自己来说是一次考验,也是一次难得的锻炼机会。从系统的分析到设计,再到系统的实现,通过自己的不断努力,终于顺利完成了本次毕业设计工作。在毕业设计工作中,自己重新将很多以前学习过,但是很久没用到的知识复习了一遍,同时学会了将网络知识和应用到软件开发之中。更重要的是,毕业设计工作使自己具备了一定的独立解决生活中实际工程问题的能力,而不象以前只是将知识停留在书本中,不用到实际生活去。面对毕业设计工作中的各种困难,要求自己勇敢去面对,去解决,锻炼了自己的毅力,提高了自己的修养。可以说,此次毕业设计工作是我们进入社会、进入工作岗位前对自己综合能力的一次考验。而毕业设计工作的顺利完成,标志着自己通过四年的大学学习,已经成长为一名合格的大学本科毕业生,能够进入社会中,为祖国的发展添砖加瓦。同时,毕业设计工作的顺利完成,大大增强了自己的信心,使自己能充满信心的进入工作岗位,为祖国的发展贡献自己力量。此外,通过这次毕业设计,更加使我了解了.NET的强大功能。目前,在业界.NET炙手可热,也从一方面反映出了其强大的影响力。Web程序设计,也有很广阔的发展空间。目前,基于Web的应用在在迅速增长中,而.NET恰使为其量身定做的。不仅能够加快其程序设计,更提供了许多便利的功能。使得整个程序设计更好快捷和优美。我将继续深入学习.NET,在对.NET了解更多的同时,提升自己。致谢时间飞逝!转眼间,大学生活即将结束,我也将步入社会,为社会贡献自己的力量。回想大学期间的生活,老师们的淳淳教导还在耳边萦绕。感谢在我大学期间,为我辛勤忙碌的软件学院的各位领导、各位老师!在这次的毕业设计过程中,曾遇到不少问题,在此,感谢王世普老师!在毕业设计的设计与实现过程中,王老师对我的毕业设计悉心的指导,从开题到系统设计,从程序开发到论文的写作,纠正了我的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物联网工程技术高级考试模拟试题及复习策略指导
- 2025年煤气安全操作规范学习笔记与考试重点梳理
- 甲醇安全知识培训资料课件
- 优翼数学高中教学课件
- 甩头试验课件
- 湖北省黄石市两区联考2024-2025学年八年级下学期期末历史试题
- 2024-2025学年河北省邯郸市七年级(下)期末数学试卷(含答案)
- 用电安全知识培训班课件
- 生鲜食品安全知识培训课件
- 生物类基础知识培训课件
- 股权代持协议终止协议书
- 捡土豆装车合同协议书
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
- 海天对客户分级管理
- 薪资抵扣协议书模板
- 血管内导管相关性血流感染预防与诊治指南(2025)解读课件
- 人力资源培训:招聘与面试技巧
- aigc培训课件教学课件
- 术前讨论制度
- 光缆线路工程验收标准
- 《小麦产业在国民经济中的地位与贡献》论文
评论
0/150
提交评论