免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书基于dijkstra算法的最短路径搜索仿真学 院: 专 业: 学生姓名: 学 号: 指导教师: 2012 年 6 月摘要摘 要gis地理网络分析功能中的一个最重要问题就是最短路径分析。最短路径问题中最经典的算法便是dijkstra算法,该理论是很大一部分工程项目解决最短路径问题的基础。传统的dijkstra算法在求解节点之间的最短路径时,对已经标识的节点以外的很多节点进行了计算,因此算法的速度受到了影响。在传统dijkstra算法分析的基础上,进行改进和优化,最短路径上节点的邻接点被进行了处理,从而得到了算法优化,但其余的节点不受到波及。因此,在优化算法中计算的节点数量大幅减少,使算法的运算在速度上得到了大量的提升。关键词:最短路径,dijkstra算法,仿真英文摘要abstractshortest path analysis is the key problem of network analyses, dijkstra algorithm is a classic arithmetic for the shortest path. it is the academic foundation that many engineerings were solved in the shortest path issue. when a shortest path between nodes is searched with dijkstra algorithm,a lot of nodes away from lagged nodes are involved,so that the efficiency of dijkstra algorithm is lowan optimization algorithm is presented in this paper based on analysis of dijkstra algorithmonly these nodes that the neighbor of nodes in the shortest path are processed,and other nodes are not processed. therefore,the number of processed nodes is largely reduced in the optimization algorithm,and efficiency of the optimization algorithm is improvedkeywords: the shortest path,dijkstra algorithm,simulationi目录目 录摘 要iabstractii目 录iii第一章 引言41.1 课题的目的意义41.2 dijkstra算法的资料调研分析51.3 国内外主流算法及其简要展开61.4 设计方案的可行性分析和预期目标91.5 本文主要研究内容10第二章dijkstra经典算法的研究112.1 dijkstra算法原理112.2 dijkstra算法的仿真实现12第三章 软件开发、设计工具简介163.1 c#语言开发工具163.2 access数据库设计工具19第四章 系统设计224.1 图形界面224.2 功能实现244.3 数据库设计254.4 系统测试28总结30参考文献31致 谢32引言第一章 引言1.1 课题的目的意义最短路径问题是图论、网络分析研究的重要课题,它被广泛用于网络优化,交通运输,物流配送,电子导航等领域。最短路径问题不单单是“纯距离”的最短路径,也可以被扩展来衡量其他的意义,如经济成本,时间和吞吐量。例如,城市交通,旅客选择旅游的最佳路径,最可靠的路径运输网络,的最大容量,最少的成本问题,和统筹方法关的键路径问题,全部可以转化为最短路径问题。最短路径问题要解决的就是加权图g=两给定定点之间的最短路径。求单源点最短路径的一个著名算法是dijkstra算法。最短路径要解决的问题是一个加权图g =到两个给出的定点之间的最短路径。寻求一个单源最短路径算法就是众所周知的dijkstra算法。dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算任意节点到其它所有节点的最短路径。以最初始的点为中心,向外层拓展,直到拓展到终点为止,是其最重要的特点。dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用open, close表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。dijkstra算法(迪杰斯特拉)算法是一个典型的单源最短路径算法,用于计算节点到所有其他节点的最短路径。其主要特点是起点为中心向外扩张,直到终点到为止的扩展。 dijkstra算法的是非常典型的最短路径算法,在很多专业中都是被作为基础的内容来进行详细的介绍,如数据结构,图论,运筹学等许多专业课程,是非常代表。 dijkstra算法的表达方式一般有两种方式,一个为永久的和临时的标号方法,另一个用open,close表方法,这里是永久和临时标号的方式。请注意,该算法要求,负权边不准许存在图中。1.2 dijkstra算法的资料调研分析最短路径问题一直是计算机科学、运筹学、地理信息科学等学科的一个研究四是采用拓扑层次编码路径视图,对最短路径进行部分实例化编码存储;五是采用并行算法,为并行计算服务。最短路径问题一直是计算机科学,运筹学,地理信息科学与其他学科的研究热点。大量的国内外专家和学者对这一问题进行深入研究。经典图论和计算机数据结构和算法的不断发展,有效地结合起来,使新的最短路径算法不断涌现。在空间的复杂性,时间复杂度和易于实施和应用领域,各有独特的地方。目前的研究重点,一为实际应用网络的特征优化运行结构。尽可能以统一的时间复杂度的基础上的提高算法的工作效率;二是限制网络的特征,如要求网络边缘具有证书权值,这样的方便使用基数据结构设计算法的运行结构;三是使用有损的算法,如限制搜索范围,以限制搜索的方向和限制的几何图层次第归序搜索;四为使用拓扑层次编码路径视图,一些实例化编码存储用来对最短路径进行实施;五是利用并行算法,并行计算服务。在提高时间效率方面有较好的应用性。其中图增长论是tqq算法的根本,用两个fifo队列直线了一个双端队列结构来支持搜索过程,较适合于计算单源的点到另外的所有点的之间的最短距离。后两种算法则是基于dijkstra算法,采用桶结构明显提高了永久标记点的搜索速度。现在公认的最好的方法解决最短路径问题,是由e.w.dijkstra,1959年提出的,也就是俗称的dijkstra算法,他的名字命名的标记方法。该算法是基于这样一种想法,一种解释的几十种不同的优化算法更好的算法tqq(graph growth with two queues),dka(the dijkstraalgorithm implemented with approximate buckets),dkd(the dijkstras algorithm implemented with double buckets),排序的优化算法,前面的三种算法中,空间储存的问题是非常重要的,牺牲适当的时间效率,来节省空间,排序优化算法放在了一个重要的位置上,可以更好地提高时间效率。其中tqq算法依靠的是图增长理论,直线了两个fifo队列与一个双端队列结构来支持搜索过程,更适合于计算单源点到所有其他点的最短距离。后两种算法在dijkstra算法的基础上,使用桶结构,大大提高了对永久标记点的搜索速度。1.3国内外主流算法及其简要展开1.3.1a*算法 a*(a-star)算法是最短路最有效的方式来解决一个静态的路网。计算公式为:f(n)= g(n)+h(n)f(n)是节点n从初始点到目标点的估价函数,g(n)是实际成本从最初的节点到n个节点,在状态空间里,h(n)是从n到目标节点的路径的估计成本。保证找到最短路径(最优解)的条件下,关键是要选择的评估函数h(n):h的估计值(n)= n到目标节点的距离实际价值,在这种情况下,搜索点多,搜索范围变大,就会得到更低得效率。但可以获得最佳的解决方案。如果估计值大于实际值,搜索点少,搜索范围小,效率高,但不能保证最佳的解决方案。估计值和实际值接近,就能获得更好的评估函数。a *算法是一个典型的人工智能启发式搜索算法,该算法的创新,是选择下一个节点,探索引进一个已知的道路网络和目标点和当前点的距离年底评估选择下一个路径节点的基础上。一般的a *算法可以用四个方向,八个方向,矢量网络连接,可以用来遍历路径方法的路径探讨。城镇土地定级和评价,而不考虑道路网络,可以是一个网格八个方向法国。 a *算法可以找到任何一个因素的因素与其他各点之间的最短路径。它不遍历整个搜索空间,但根据选定的启发式函数对最有前途的方向前进。虽然它的搜索速度更快,理论上能够找到最佳的解决方案,但在实际应用过程中,往往由于选择不当启发式功能,往往不能找到最短路径,搜索成功率不是很高。1.3.2遗传算法 是用来解决优化问题的搜索算法,是一种进化算法。自然进化的生物学现象,包括基因突变,自然选择和杂交都被进化算法用来参考。遗传算法通常作为计算机模拟实施。为优化问题,一些数量的候选解(称为个体)抽象(所谓染色体)的种群进化为一个更好的解。传统的二进制表示(即0和1的字符串),但也可以使用其他方法来陈述。进化从完全随机个体的种群开始,代代发生。在每一代,种群的适应度被评估,通过自然选择和突变产生新的生命种群,随机从目前的种群选择多个个体(根据其自身的适应度),这个种群在第一次迭代算法中,生成为当前的种群。在遗传算法,优化问题的解被称为个人,它代表一个变量序列,称为染色体或基因的字符串。染色体一般被表达为一个简单的字符串或数字字符串,但也适用于于特殊问题的表达方法,这个过程称为编码。首先,算法随机生成一定数量的个体,有时操作者可以在随机生成的过程中进行干预,以提高初始种群的质量。每一个体在每一代,都被评估并通过适应度函数的计算来得到一个适应度的数值。个体按照适应排度序,在前面的通常是适应度高的。 “高”是指对初始群的低适应度来讲的。 下一步是产生下一代的个体组成种群。这个过程是通过选择和繁殖,包括复制,包括交配(crossover,算法在该领域的研究,就是我们所说的交叉操作)和突变(mutation)。选择是根据的新的个体的适应程度来执行,但在同一时间并不意味着彻底的用适应度的高低来作为标准参考,因为只是选择适应度高的个体将可能导致,算法快速收敛到局部最优解最佳的解决方案但不是全局的最有解决方案,我们称之为早熟。作为一种妥协,根据遗传算法的原则基础上:适应度越高,被选中的机会越高,适应低被选中的机会越低。通过对初始数据的选择,可组成一个相对最优的群体。然后,被选择后的个体进入交配过程。遗传算法有交配的概率(也称为交叉概率),通常的范围是0.6至1,这个交配的概率反映了两个选定的个体交配的概率。例如,交配概率为0.8,80“夫妇”可以生育后代。通过交配,每两个人产生两个新个体,而原来的“老”的个体将会被替代。交配父母的染色体交换,导致了两个新的染色体产生,第一个个体前一半是父亲的染色体,母亲的则是后半段,第二个人则刚好相反。这里位置被称为是随机生成的交叉点,所指的半段并不是真正意义以上的一半。交叉点可以是任何染色体上的位置。下一步是突变基因突变产生新的“孩子”个体。一般遗传算法有一个固定的突变常数(又称突变率)一般为0.1或更小,这代表了基因突变的概率。根据这个概率,新个体的染色体随机突变通常是改变一个字节(0到1,或0的变化)的染色体。通过(选择,交叉和变异)这一系列的过程之后,新一代的个体,从最初的一代是不同的,而且一代又一代的朝着提高适应度的方向发展,最好的人总是更要被选择产生下一代,适应度低的会逐渐被淘汰。这个过程不断重复:每个个体都被评估,计算每一个个体的适应度,两个个体交配和突变,产生第三代。一遍又一遍,直到满足终止条件。一般的终止条件有以下几种:进化次数限制;计算消耗的资源约束(如计算时间,计算所占用的内存);个体满足的最优值的条件,即已经找到最佳值;适应已经达到饱和,继续进化不会有适应度更好的个体;人为干预;超过两个或两个以上的组合。图1.3.1 遗传算法的工作原理示意图1.3.3dijkstra算法dijkstra算法的基本思路是:设置一个顶点集合s,从一个源点s到集合中定点最终最短路径的权重已经确定。算法反复选择最短路径估计顶点ivs,将i并入s,i所有的出边松弛原始的dijkstra算法在图形数据存储和节点之间的关系和距离的计算时,基于网络的权重矩阵,形成关联矩阵,邻接矩阵和距离矩阵,需要定义nn数组进行储存数据,其中n为网络节点,网络节点太多时,将占用大量的计算机内存。(2)原始的dijkstra算法的运行时一般把网络节点分为没有被标记节点,临时标记节点,永久标记节点。网络中的所有节点初始化为未标记的节点,在搜索的过程中与最短路径的节点连接的节点为临时标记的节点,每循环从临时标记节点的路径长度最短的节点的节作为永久性标志的节点,直到找到目标节点或所有节点搜索算法结束前都将被永久标记节点。影响了该算法的执行效率是根据算法的描述,阅历全部临时标记节点是dijkstra算法的瓶颈。1.4设计方案的可行性分析和预期目标预期目标:1. 广泛收集相关资料,研究经典dijkstra算法的主要思想及其实现2对目前应用于dijkstra算法的数据结构和搜索技术进行学习研究3. 采用图的邻接矩阵或邻接表实现最短路径问题中图的存储4采用dijkstra算法求从某个源点到其余各顶点的最短路径5将上述功能作为类的成员函数实现,编写主函数测试上述功能6. 以c#作为开发工具实现改进最短路径算法的代码编制,完成算法的实现 可行性分析:1.技术可行性个人能力方面:有一定的专业知识,技术能力,了解行业背景,有相应的资料个人环境方面:又上网条件,有充足的相关资料和书籍,可以获得充分的研究资源软件方面:c#,它具有简单,面向过程,稳定,与平台无关,解释型,多线程,动态等特点,因此将其作为首选工具。由于所需要的硬件配置要求不高,对于代码编制,和算法的实现都是非常合适的。所以完全具备设计方案所需要的软件条件。2.经济可行性 无经济方面问题3.法律可行性 相关软件都是正版,独立自主开发1.5本文主要研究内容根据dijkstra算法,用c#语言进行编译,使软件可以实现查询最短路径的功能。主要研究并实现以下内容功能:1 加载、更换地图,并可以在地图上标注大量节点,使之连接成各个路线,提供大量路线选择方案2选择任意起点和终点,只需要查询起点和终点间的最短路径,便可快速计算出之间的最短距离,挑选最短的路线3添加数据库,实现储存、加载数据的功能,使先前的操作得到保留并可以随时调用27dijkstra 经典算法的研究第二章dijkstra经典算法的研究2.1 dijkstra算法原理 ew 提出的dijkstra算法图表理论,一个众所周知的最短路径算法dijkstra算法是在1959年设计的,使用的数字点到其他顶点的最短路径可以得到。原始dijkstra算法的网络节点分为三个部分:未标记节点,临时标记的节点和永久标记的节点。网络中的所有节点启动的第一个节点未标记的节点,在搜索的过程当中,与最短路径中的结点相互连通的结点为临时标记结点,每个周期的循环全部是从临时标记节点的最短的路径长度作为永久纪节点,直到找到目标节点或所有节点成为永久标记节点算法结束。 假设每个人都有一个标签(wj,pj),其中wj是最短路径长度s从起源点到j点(从顶点的最短路径本身是零路(没有弧的道路),其长度等于零); pj jj是从s到前一个点的最短路径。求解从起源点到j点的小号的基本过程,最短路径算法如下:1)初始化。原点设置:ws= 0,ps是空的;其他点:wi =,pi=?(3)标记的起源点s,设= s,所有其他点设置未标记2)标记的点k到其直接连接的测试未标记点j的距离,并设置:wj= minwj周dkj的类型,dkj点k的直接连接距离j.3)选择下一个点。从所有未标记的节点,选择wj最小的一个i:wi=min wj,i点选择为的最短路径点,并设置为已标记.4)找到i的第一点。从标记点中,找到点i直接连接的点j*,作为前点,设:i= j *。5)标记点i。如果所有点已标记,该算法将彻底计算出来,否则,记为k =i,转到2)继续。dijkstra算法最短路径应用演示图2.1.1 dijkstra算法最短路径应用演示图 图2.1.2 从0节点到4节点的最短路径2.2 dijkstra算法的仿真实现根据上面的理论与思想,本文使用microsoft公司的visual studio2008软件,visual c#语言,access数据库编写,制作以dijkstra算法为基础的可以查询最短路径的软件,使最短路径搜索查询的功能得到了实现。以下是用到的一段dijkstra算法的关键的代码: private void shortestdist(int s) for (int i = 0; i num; i+) /dist和path数组初始化 disti = da.edge1s, i; /邻接矩阵第s行元素赋值到dist中 si = 0; /已求出最短路径的顶点集合初始化 if (i != s & disti da.uplimit) pathi = s; else pathi = -1; /路径存放数组初始化 ss=1; /顶点s加入顶点集合 dists = 0; /* 循环计算该场所与邻接场所之间的最短距离 */ for (int i = 0; i num - 1; i+) /从顶点s确定n-1条路径 double min = da.uplimit; int u = s; for (int j = 0; j num; j+) /选择当前不在集合s中具有最短路径的顶点u /* 如果有路径比目前的最小值还小,则替换这个最小值 */ if (sj = 0 & distj min) u = j; min = distj; su = 1; /将顶点u加入集合s,表示它已在最短路径上 for (int w = 0; w num; w+) /修改 if (sw = 0 & da.edge1u, w da.uplimit & distu + da.edge1u, w = 2) length = length + da.edge1lstline.count - 1, lstline.count - 2; else /没有路径 this.refresh(); 软件开发、设计工具简介第3章 软件开发、设计工具简介3.1 c#语言开发软件工具3.1.1简介c sharp(音标 a:p )(又被简称为c#)是微软公司在2000年6月发布的一种新的编程语言,并定于在微软职业开发者论坛(pdc)上登台亮相。c#是微软公司研究员anders hejlsberg的最新成果。c#看起来与java有着惊人的相似;它包括了诸如单一继承、界面、与java几乎同样的语法,和编译成中间代码再运行的过程。但是c#与java有着明显的不同,它借鉴了delphi的一个特点,与com(组件对象模型)是直接集成的,而且它是微软公司.net windows网络框架的主角。在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了c#的出现,然后我将介绍c#和它与java、c、c+的相似之处。其次我将讨论一些存在于java和c#之间的高层次的和基础的差别。我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.net和c#的一个主要战略。目前,c#和.net还只能以c#语言规则,以及windows 2000的一个“d预览版本”,还有msdn上迅速增多的文档集子的形式获得(还没有最终定型)。3.1.2定义微软c#语言定义主要是从c和c+继承而来的,而且语言中的许多元素也反映了这一点。c#在设计者从c+继承的可选选项方面比java要广泛一些(比如说struts),它还增加了自己新的特点(比方说源代码版本定义)。但它还太不成熟,目前不可能挤垮java。c#还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是:“这是对java的反击”。c#更像java一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,因为java近来很成功而使用java的公司都报告说它们在生产效率上比c+获得了提高。java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用java)。由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的java电话)。c#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由ssi公司的ceo和主席kalpathi s. suresh指出来的那样:“我发现所有这些都是渐进的。如果c#不存在,我们总能回到java或c和c+。这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对it工业有什么影响。”c# (c sharp)是微软对这一问题的解决方案。c#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于microsoft .net平台的应用程序,microsoft .net提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。正是由于c#面向对象的卓越设计,使它成为构建各类组件的理想之选无论是高级的商业对象还是系统级的应用程序。使用简单的c#语言结构,这些组件可以方便的转化为xml网络服务,从而使它们可以由任何语言在任何操作系统上通过internet进行调用。最重要的是,c#使得c+程序员可以高效的开发程序,而绝不损失c/c+原有的强大的功能。因为这种继承关系,c#与c/c+具有极大的相似性,熟悉类似语言的开发者可以很快的转向c#。3.1.3从java继承而来的特点结构形式类:在c#中类的声明与java很相似,这是合理的,因为经验告诉我们java模型工作得很好。java的关键字import已经被替换成using,它起到了同样的作用。一个类开始执行的起点是静态main()方法下面的hello world程序展示了程序基本结构形式:using system;class hellostatic void main()console.writeline(hello,world);console.readline();在这个例子中,system这个名字指向一个包括了基本c#实用类集合的命名空间(namespace),这个命名空间包括了console类,它在这个例子中被用来输出一个字符串。类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化,它只能被用做一个基类,c#关键字lock就象java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类界面:就象在java中一样,一个界面是一组方法集合的抽象定义。当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法。一个单一的类可以实现几个界面,也许以后会出现一些微妙的差别,但是这个特点看起来与java相比没有变化。布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型,从布尔类型到其他类型没有直接的转换过程,布尔常量true和false是c#中的关键字。错误处理:如java中那样,通过抛出和捕捉异常对象来管理错误处理过程。内存管理:由底层.net框架进行自动内存垃圾回收。一个基本的c#类中包含数据成员、属性、构造器和方法。属性可以是静态或实例成员。强类型c#是一个强类型的语言,它的数值类型有一些可以进行隐式转换,其他的必须显式转换,隐式转换的类型只能是长度短的类型转换成长的类型,例如int可以转换成long、float、double、decimal,反之必须显式的转换。例:int a=7;float b=a; /隐式转换long c= 12l ; /和c+一样必须加上后缀l才能定义为long型不然就为int型了a=(int)c; /显式转换使用上面的显示转换不能用在bool和string类型上。3.1.4c#从c和c+继承的特点编译:程序直接编译成标准的二进制可执行形式.如果前面的hello world程序被保存成一个文本文件并被命名为hello.cs,它将被编译成命名hello.exe的可执行程序。结构体:一个c#的结构体与c+的结构体是相似的,因为它能够包含数据声明和方法.但是,不象c+,c#结构体与类是不同的而且不支持继承.但是,与java相同的是,一个结构体可以实现接口(interface)。预编译:c#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:#define#undef#if#elif#else#endif#warning#error#line 没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念-这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名。命名空间命名空间提供了一种方法来唯一标识一个类型以及进行类型的逻辑组织。命名空间可以嵌套使用并可以跨程序集使用。一个类型的完全限定名包括所有命名空间。在一个命名空间中,所有的类型必须有一个唯一的名称。基本类型库(base class library)是.net framework的所有语言可下可用的命名空间集。命名空间是组织和重用代码的编译单元。命名空间和文件的结构关系不像java,命名空间与文件的结构之间没有关系。using语句是用来在使用类型时不需要用全限定名的类型,全限定名也可以被使用。命名空间中的声明,c#与c+有所不同,是c#独有的特点。操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被重载的单目操作符是:+ - ! + - true false能够被重载的二元运算符是:+ - * / % & | = != = =3.1.5c#独有的特点c#最引人入胜的地方是它和java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了c#实现的和java不同的地方或者java根本没有的特点.动态查阅c# 4.0 新增 dynamic关键字,提供动态编程(dynamic programming)把既有的静态对象标记为动态对象,类似javascript,python或 ruby。dynamic calc = getcalculator();int sum = calc.add(10,20);具名参数与可选参数public streamreader openfile(string path,int buffersize =1024).调用 openfile 时,顺序可以完全颠倒:openfile(buffersize:4096,path:foo.txt); 3.2 access数据库设计工具3.2.1软件简介access 是微软公司推出的基于windows的桌面关系数据库管理系统(rdbms,即relational database management system),是office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。access能够存取 access/jet、microsoft sql server、oracle(甲骨文软件公司),或者任何 odbc 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的进阶用户则能使用它来开发简单的应用软件。虽然它支援部分面向对象(oop)技术,但是未能成为一种完整的面向对象开发工具。 3.2.2主要用途microsoft access在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的web应用程序这些应用程序都利用asp技术在internet information services运行比较复杂的web应用程序则使用php/mysql或者asp/microsoft sql server它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。一些专业的应用程序开发人员使用 access 用作 快速应用开发,特别是给街道上的推销员制作一个初型或独立应用程序的工具。可是如果是透过网络存取数据的话,access 的可扩放性并不高因此当程序被较多使用者使用时,他们的选择多会是倾向于一些客户端-服务器为本的方案,例如 oracle、db2、microsoft sql server、windows sharepoint services、postgresql、mysql、alpha five、maxdb,或者filemaker。无论如何,不少 access 的功能(表单,报告,序列和vb代码)可以用作其他数据库的后期应用,包括 jet(档案为主的数据库引擎,access 缺省使用)、microsoft sql server、oracle和任何其他跟odbc兼容的产品。这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。很多microsoft access的开发者使用leszynski命名约定,虽然这不普遍;它是一次编程大会,并非一个dbms实施的规章。3.2.3特性与一般的rdbms完全不同,它缺乏数据库触发和预存程序。自从ms access 2000 (jet 4.0),开发人员可以在查询中设定参数,这跟预存程序很相似的,但这些“预存程序”只能处理一个程序当资料表内数据发生变化时,它确实允许形式包含被引发的代码,使用是普通的透过查询和其他技术在进入营运储存的程序在方面rdbms支援这些的。进入可提供的编程语言,当时在另一个内产品microsoft office家具,微软公司应用的visual basic。两个数据库进入讯息库com组成部分被提供:这笔遗产数据存取物体(dao),用进入和新只可提供activex数据对象(忙乱)。microsoftaccess容易被应用于小的工程,但是如果设计的不好对大工程是无用的。全部数据库质问,形式和报告被储存在数据库里,并且与相关的模型的理想协调,没有与他们做一个身体上组织的阶层的可能性。一种设计技术是把进入应用在数据和计划之间进行分发。一数据库应该只包含表和关系,当另一个将有全部计划时,形式,报告和质问和对第一个数据库表的连接。令人遗憾,当连结时,进入允许没有有关的道路,因此那些发展环境作为这种生产环境有相同的道路应该(虽然你写你们自己的能动态连接程序常规在里vba那搜出能一定背面结束档案以透过这个目录树搜寻,如果它发现这条电流通路它不能)。这种技术也允许开发者在不同的档案中分申请,因此一些架构是可能的。3.2.4优缺辨析access的优点(1) 存储方式简单,易于维护管理access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或.accdb)的数据库文件中,便于用户的操作和管理。(2)面向对象 access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。(3)界面友好、易操作access是一个可视化工具,是风格与windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。(4)集成环境、处理多种数据信息access基于windows操作系统下的集成开发环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(5)access支持odbc(开发数据库互连,open data base connectivity),利用access强大的dde(动态数据交换)和ole(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、excel表格、word文档,还可以建立动态的数据库报表和窗体等。access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成html文件,轻松构建internet/intranet的应用。(6)支持广泛,易于扩展,弹性较大能够将通过链接表的方式来打开excel文件、格式化文本文件等,这样就可以利用数据库的高效率对其中的数据进行查询、处理。还可以通过以access作为前台客户端,以sql server作为后台数据库的方式(如adp)开发大型数据库应用系统。总之,access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。 access的缺点access是小型数据库,既然是小型就有它的局限性(下面关于性能方面的缺点仅指用access作为数据库的情况下,不包括用access作为客户端前台,用sql server作为后台数据库的情况):1.数据库过大,一般百m以上(纯数据,不系统设计包括窗体、报表等客户端对象)性能会变差。2.虽然理论上支持255个并发用户,但实际上根本支持不了那么多,如果以只读方式访问大概在100个用户左右,而如果是并发编辑,则大概在10-20个用户。3.记录数过多,单表记录数过百万性能就会变得较差,如果加上设计不良,这个限度还要降低。4.不能编译成可执行文件(.exe),必须要安装access运行环境才能使用。 第四章 系统设计4.1 图形界面4.1.1 登陆界面执行程序,出现登陆界面,此时出现两个按钮选项,一个是“开始导航”,另一个是“添加路段”。图3.1.1 登陆界面4.1.2 路段编辑界面图,4.1.2 路段编辑界面 点击“添加路段”,就会出现路段编辑界面。其中出现有四个选项,一个是“节点名称”,一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年老师护理考试题及答案大全
- 学前儿童发展心理学期末模拟试题及参考答案
- 物业工程考试试卷含答案
- 影像考试真题及答案
- 高级月嫂试题及答案
- 教师资格证考试语文学科知识与教学能力真题(高级中学)含答案解析
- 海员考试题库及答案
- 达标测试人教版八年级物理上册第5章透镜及其应用-透镜专题攻克试卷(解析版含答案)
- 综合解析人教版九年级物理《电流和电路》专题训练试卷(解析版含答案)
- 绿色生活倡导者
- 2025广东东莞市寮步镇人民政府招聘专职安全员10人考前自测高频考点模拟试题及答案详解一套
- 2024石家庄市国企招聘考试真题及答案
- 远程机器人手术操作指南(2025版)
- 2025天津宏达投资控股有限公司及所属企业招聘工作人员笔试模拟试题及答案解析
- 高考英语必背688个高频词汇清单
- 第四单元《逻辑的力量》单元教学设计
- 《书籍设计》第三章-书籍的开本与装订
- 【基于PLC的抢答器控制系统设计8800字(论文)】
- 液压油缸计算器
- 护理质量督导记录
- 三丁基氯化锡安全技术说明书MSDS
评论
0/150
提交评论