欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于Dijkstra算法的最短路径搜索仿真毕业设计说明书.doc

    • 资源ID:3938310       资源大小:4.17MB        全文页数:33页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Dijkstra算法的最短路径搜索仿真毕业设计说明书.doc

    毕业设计说明书基于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,Simulation目 录摘 要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=<V,E,w>两给定定点之间的最短路径。求单源点最短路径的一个著名算法是Dijkstra算法。最短路径要解决的问题是一个加权图G =<V,E,w>到两个给出的定点之间的最短路径。寻求一个单源最短路径算法就是众所周知的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算法在图形数据存储和节点之间的关系和距离的计算时,基于网络的权重矩阵,形成关联矩阵,邻接矩阵和距离矩阵,需要定义n×n数组进行储存数据,其中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添加数据库,实现储存、加载数据的功能,使先前的操作得到保留并可以随时调用第二章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 < distw) distw = distu + Da.Edge1u, w; pathw = u; public void getdata(int s, int e) D0 = e; int k; for (k = 0; Dk != s; k+) if (Dk = -1) MessageBox.Show("抱歉,没有找到通路"); return; Dk + 1 = pathDk; if (Se != 0) for (; k != -1; k-) listline = listline + Da.Tb.RowsDk"nname".ToString() + "-" lstLine.Add(Dk); if (lstLine.Count >= 2) length = length + Da.Edge1LstLine.Count - 1, LstLine.Count - 2; else /没有路径 this.Refresh(); 第三章 软件开发、设计工具简介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 用作 快速应用开发,特别是给街道上的推

    注意事项

    本文(基于Dijkstra算法的最短路径搜索仿真毕业设计说明书.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开