• 286.53 KB
  • 2022-05-11 18:33:44 发布

合肥公交线路设计最短路径论文

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
安徽新华学院数据结构课程设计报告题目:合肥公交路线设计学院:信息工程学院专业:信息与计算科学班级:12信科(一)班姓名:学号:指导教师:设计时间: 课程设计任务书一:设计任务城市公交是专门服务于市民出行的客运企业。它是城市社会和经济活动的重要组成部分。伴随着国民经济和城市建设的快速发展,城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体。但是随着公交系统的庞大,人们很难得到准确的公交信息,这样给一些人的出行就带来了不便。因此,急需一个方便、快捷的公交信息查询方式,本系统通过浏览器查询,实现中心控制、自动更新、更多的查询方式等等更多更强大的功能。二:设计要求为了保证系统能够长期、安全、稳定、可靠、高效的运行,城市公交查询系统应该满足以下的性能需求:(1)系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。由于公交查询系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票数量和时间又影响企业的决策活动,其准确性很大程度上决定了公交查询系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。(2)系统的开放性和系统的可扩充性公交查询系统在开发过程中,应该充分考虑以后的可扩充性。例如网上查询的用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。(3)系统的易用性和易维护性公交查询系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。公交查询系统中涉及到的数据是公交公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。 (4)系统的标准性系统在设计开发使51用aspx过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。(5)系统的先进性目前计算系统的技术发展相当快,做为公交查询系统工程,应该保证系统在下个世纪仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。(6)系统的响应速度公交查询系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。三:设计期限数据结构课程设计是在两周之内完成的一次完整性实践活动。首先,其设计的时间长度是固定的,必须在两周之内完成,但同时也必须是完整的。即在两周时间内完成课程设计的所有工作:从题目分析到结构设计,以及在此基础上的物理实现,然后撰写报告并答辩。 前言城市公交是专门服务于市民出行的客运企业。它是城市社会和经济活动的重要组成部分。伴随着国民经济和城市建设的快速发展,城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体。但是随着公交系统的庞大,人们很难得到准确的公交信息,这样给一些人的出行就带来了不便。因此,急需一个方便、快捷的公交信息查询方式,本系统通过浏览器查询,实现中心控制、自动更新、更多的查询方式等等更多更强大的功能。随着城市经济的发展、规模的扩大以及人口的增长,城市交通问题日益突出。降低出行时间将使所有的公交利用者产生效益,快速的交通、更好的信息及更好的市场可以提高公交的形象,能够增加公交乘坐者。城市公共交通运输以其覆盖面广、经济、快捷的特点,成为绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。本地市民特别是外来旅游、出差、就医等急需了解本地道路情况的人可以利用本系统方便快捷的查询出所有符合他们要求的公交路线,对他们的出行和生活提供帮助。我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。出于这个目的,在老师的指导下,我设计了这个城市公交线路查询系统。在对公交乘客出行心理特征进行分析的基础上,考虑乘客选择公交线路决策的因素,进行程序关键部分的框架设计。现阶段,人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次及相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。 目录第1章需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码61.1系统需求分析•••••‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码61.2数据库需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码61.3性能需求··········································页码7第2章总体设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码92.1概述•••••••‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码92.2功能模块划分•••••••‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码102.3数据库设计•‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码11第3章详细设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码173.1建立数据库········································页码173.2线路的生成·····································页码24第4章编码与调试‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码254.1前台功能的实施·································页码254.2后台功能的实施······································页码26 第5章总结‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥页码28第一章需求分析1.1系统需求分析随着我国经济的高速发展,人们生活水平的提高,越来越多的人开始热衷于到外地旅游。那么对于这些外来旅游者,首先搞清这个城市的公交路线显的很重要!我的家乡沈阳,作为一个旅游城市,每年都要吸引大量的游客,为了满足这些游客熟悉公交路线的需求,特以公交查询系统为设计课题。本软件不仅能给游客带来方便,也能给广大市民提供方便。我认为这样的系统应该具有很好的实用性!开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规范公交管理,提高服务质量,方便乘客查询,并为此设计该系统。人们生活水平的提高,越来越多人喜欢旅游,但是第一次来一个陌生的城市,肯定对公交路线不熟悉,所以必定需要一个能查看具体公交线路的公交系统。有些只知道一个站的某几个字或一个车次的某几个数字,所以本系统将给出站点的模糊查询,方便用户的查询,有些只知道车次或某个站点,本系统也给出了公交线路查询、公交站点查询、公交换乘查询,进一步方便大家的出行,但也有用户什么都查不到,想留言问问人,所以再搞个留言板很有必要,方便大家交流以及解答各种疑难问题!本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及和数据库的联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能前台主要有3个模块,线路查询、站点查询、公交换乘模块和后台管理模块功能名称:线路查询功能概述:可以获得要查询公交所通过的各个站点。功能名称:站点查询功能概述:通过输入的指定站点查询经过该站点的公交。功能名称:公交换乘查询功能概述:分为公交直达、公交一次换乘,主要体现那些不可直达需要转车的路线的所有换法。(如果用户输入的起始点和终点,有一条及一条以上的公交线可以直达的,则为公交直达;如果输入的起始点和终点,没有一条公交线可以直接到的,系统将会给出一次换乘的方案,则为公交一次换乘) 功能名称:后台管理功能概述:用于管理员登陆,添加、修改、删除公交线路,修改信息资料、安全密码,回复留言板等功能。本系统提供了的车次查询功能、路5线1查A询S功P能X。乘客可以方便的进行查询,以防乘错车次。当然有些功能的智能化不是很强,系统有待进一步来完善。1.2数据库需求分析数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。数据库技术是由传统的文件系统发展而来的,从层次模型、网状模型发展到关系模型。数据库技术是数据管理的最新技术,是计算机科学的一个重要分支,它能指导我们正确地设计数据库系统,它的出现极大地促进了计算机应用的发展。采用数据库技术的原理和方法可以有效地设计实用的数据库系统。一个完整的数据库系统包括数据库管理系统(DBMS),数据库管理员(DBA)、数据库(DB)、应用程序和相应的硬件设施。目前许多数据库管理系统都基于关系模型,关系模型的主要特点是用表格结构表达实体,用键表示实体与实体之间的联系。与层次模型和网状模型相比,关系模型比较简单,容易为初学者接受。关系模型是由若干个关系模式组成的集合,关系模式相当于记录类型,它的实例称为关系。每个关系是一张表格。表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行数据操作,并不涉及到存储结构,访问技术等细节。关系模型是数学化的模型,要用到集合论,离散数学等知识。SQL语言是关系数据库的代表性语言,已经得到广泛应用。在设计数据库时,应注意数据的安全性,保证数据的安全,防止非法用户访问数据库,以免泄露重要信息,同时也能51防A止s非px法用户的蓄意破坏,有许多保护数据的方法,如采用用户标识,口令和密码或访问控制等方法。一个成功的数据库应用系统应具有用户标识,每一个合法用户具有一个用户名和相应的口令,进入数据库应用系统前必须输入正确的口令,否则无法进入系统,这就保证了只有合法的用户才能操作数据库系统。为了保证数据的合法语义,必须对数据库的数据进行完整性约束,即防止用户输入不合语义的数据。在设计应用软件时,应严格按照软件工程学的方法进行设计,传统的方法采用瀑布模型,从问题定义、可行性分析、需求分析、概念设计、总体设计、系统实现、编码和软件测试、运行和维护等软件生命周期内,每一阶段均在前一阶段的基础上进行设计,并在每一阶段有相应的文档资料。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需要分析,数据库概念结构设计,数据库逻辑结构设计。1.3性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行,城市公交查询系统应该满足以下的性能需求:1.3.1系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。由于公交查询系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票数量和时间又影响企业的决策活动,其准确性很大程度上决定了公交查询系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。1.3.2系统的开放性和系统的可扩充性公交查询系统在开发过程中,应该充分考虑以后的可扩充性。例如网上查询的用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。1.3.3系统的易用性和易维护性公交查询系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。公交查询系统中涉及到的数据是公交公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。1.3.4系统的标准性系统在设计开发使51用aspx过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。1.3.5系统的先进性目前计算系统的技术发展相当快,做为公交查询系统工程,应该保证系统在下个世纪仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。 1.3.6系统的响应速度公交查询系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。第二章总体设计2.1概述本阶段设计的基本目标是解决系统如何实现问题,也叫做概要设计,本阶段主要任务是划分出系统的物理元素及设计软件的结构,完成软件定义时期的任务之后就应该对系统进行总体设计,即根据系统分析产生的分5析1结果AS来PX确定这个系统由哪些系统和模块组成,这些系统和模块又如何有机的结合在一起,每个模块的功能如何实现。系统设计的目标是使系统实现拥有所要求的功能,同时,力争达到高效率、高可靠性、可修改性,并且容易掌握和使用。模块化的依据是:把复杂问题分解成许多容易解决的小问题。原来的问题也就变得容易解决。模块化设计是把大型软件按照一定的原则划分成一个较小的相对功能独立又相关联的模块。每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。完成指定的功能,满足问题的要求。采用模块化原理的优点在于可以使软件结构清晰,容易测试和调试。从而提高软件的可靠性,可修改性。有助于软件开发的组织管理。一个大型软件可分别编写不同的模块。模块化理论的几个重要概念如下:抽象。抽象就是抽象出事物的本质特性而暂时不考虑它们的细节。处理复杂系统唯一有效的方法是用层次的方式构造和分析它。一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的理解,直到最低层次的具体元素。信息隐蔽和局部化。信息隐蔽是指在设计和确定模块时,应使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问。局部化是指把一些关系密切的软件元素物理的放得彼此靠近。局部化有助于实现信息隐蔽。信息隐蔽原理和局部化有助于在测试期间以及软件维护期间修改软件。因为绝大多数数据和过程对于软件的其它部分而言是隐蔽的,从而由疏忽引入的错误就很少可能传播到软件的其它部分。逐步求精的模块化概念。逐步求精和模块化的抽象是密切相关的。软件结构每一层中模块表示对软件抽象层次的次细化。用自顶向下,逐步求精的方法由抽象到具体的方式分配控制,简化了软件设计和实施,提高了软件的可理解性和可测试性,并使得软件更容易维护。模块独立性。模块的划分要使模块间尽可能的相互独立,独立模块较易维护。度量模块的独立程度有两个标准:内聚和耦合。耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数。 在软件的设计中应追求尽可能松散的耦合。内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展,理想内聚的模块只做一件事情。在设计时应力求做到高内聚。2.2功能模块划分查询系统模块该模块实现公交查询功能。可实现按线路查询、站点查询和起点—终点查询三种查询方式。录入系统模块该模块实现数据的新增、修改、删除功能。城市公交查询系统查询后台管理按线路查询按站点查询两站点间换乘查询新增修改删除线路车辆参数发车时间表车次站名图4-1系统模块图系统模块图如图4-1所示:2.3数据库设计数据库技术是在文件系统的基础上发展起来的一种高效的数据管理技术,它能保持系统数据的整体性,完整性和共享性。在数据库系统中提供了对数据的访问机制,能有组织的存储相关的数据,具有合理的存储方式,快速的查询效率和最小的数据冗余等特性。另外数据的存储和应用程序彼此独立,不仅便于数据的管理与控制而且有利于应用程序的编写与调试。数据库类似于一个数据的大仓库,能很好地实现数据共享,能维护数据的一致性。数据库设计是系统设计的一个重要内容,其设计质量的好坏直接影响系统开发的成败,系统的质量,系统效率及可维护性。在本系统的设计中,充分考虑到了管理系统数据繁杂,重复性很大,数据使用频繁。因此本系统采用了一种能正确反映用户实现环境,能被现行系统接受,易于维护、效率高的数据管理方法--数据库系统。 数据模型是指数据库中记录与记录之间联系的数据结构形成的。不同的数据管理系统有不同的数据模型,数据库设计的核心问题是设计好的数据模型。在目前的数据库管理系统中有层次模型,网状模型、关系模型三种数据模型。其中,关系模型具有较高的数据独立性,使用也较为方便。本设计采用关系数据库。该数据库实行增、删、编辑、统计。显示和打印都极为方便。其中的排序和索引功能,对数据快速定位,查询提供了有利条件。交流互动对于本系统的数据库设计有以下几点说明:数据库设计兼顾前面设计的数据流程图,管理信息系统的设计并不是以数据库为核心的数据库应用设计,本系统的数据库设计尽量满足3NF(第三范式)的要求,本系统的数据库设计以提高系统运行效率为前提。2.3.1数据库概念结构设计在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但它只是数据库设计的第一步。E-R图是直观表示概念模型的工具,它有三个基本成分:(1)矩形框,表示实体类型(考虑问题的对象)。(2)菱形框,表示联系类型(实体间的联系)。(3)椭圆形框,表示实体的属性。实体和属性的定义如下:管理员表(登陆ID,登录姓名,登录密码)站名表(站名编号,站名)车辆线路编号表(车次,车线类型)线路表(线路编号,车次,站名,次序)车辆表(车辆编号,车次,车辆类型,服务类型,票价,IC卡类型,运行区间)冬季发车时间表(车次,编号,首班时间,末班时间)夏季发车时间表(车次,编号,首班时间,末班时间)各实体属性图如图4-2所示。 站名站名编号站名车辆线路编号车次车辆类型线路线路编号次序车次站名车辆服务类型运行区间车辆编号票价车辆类型车次IC卡类型发车时间车次末班时间编号首班时间管理员登录ID登录姓名登录密码图2-2实体属性关系图本系统的总体E-R图如图4-3所示。 时刻站名图2-3E-R模型图车辆线路拥有包含属于M1M1MN2.3.2数据库逻辑结构设计本系统采用的数据库管理系统是Microsoft公司的SQLServer2005。该管理系统由一系列产品组成,不仅能够满足最大的数据处理系统和商业Web站点存储数据的需要,还能为个人或小企业提供易于使用的数据存储服务。MicrosoftSQLServer2005的特性包括:(1)企业数据管理在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全。有了SQLServer2005,组织内的用户和信息技术(IT)专家将从减少的应用程序停机时间、提高的可伸缩性及性能、更紧密而灵活的安全控制中获益。SQLServer2005也包括了许多新的和改进的功能来帮助IT工作人员更有效率地工作。SQLServer2005包含几个在企业数据管理中关键的增强:易管理性、可用性、可伸缩性、安全性。SQLServer2005使部署、管理和优化企业数据以及分析应用程序变得更简单、更容易。作为一个企业数据管理平台,它提供单一管理控制台,使数据管理员能够在任何地方监视、管理和调谐企业中所有的数据库和相关的服务。它还提供了一个可以使用SQL管理对象轻松编程的可扩展的管理基础结构,使得用户可以定制和扩展他们的管理环境,同时使独立软件供应商(ISV)也能够创建附加的工具和功能来更好地扩展打开即得的能力。(2)SQLServerManagementStudioSQLServer2005通过提供一个集成的管理控制台来监视和管理SQLServer关系数据库、IntegrationServices、AnalysisServices、ReportingServices、NotificationServices以及在数量众多的分布式服务器和数据库上的SQLServerMobileEdition,从而简化了管理工作。数据库管理员能够同时执行多个任务,例如,编写和执行查询,查看服务器对象,管理对象,监视系统活动和查看联机帮助。SQLServerManagementStudio提供了一个开发环境,可在其中使用Transact-SQL 、多维表达式、XMLforAnalysis和SQLServerMobileEdition来编写、编辑和管理脚本和存储过程。ManagementStudio可以很容易地与源代码控制集成在一起。ManagementStudio还包括一些工具可用来调度SQLServer代理作业和管理维护计划,以自动执行日常维护和操作任务。管理和脚本编写集成在单一工具中,同时,该工具具有管理所有类型的服务器的能力,为数据库管理员们提供了更强的生产效率。SQLServer2005开放了70多个新的内部数据库性能和资源使用的度量值,涵盖了从内存、锁定到对事务、网络和磁盘I/O的调度等。这些动态管理视图(DMV)提供了对数据库和强大的基础结构的更大的透明度和可见性,可以主动监视数据库的状况和性能。(3)SQL管理对象SQL管理对象(SMO)是一个新的可编程对象集,它可实现所有SQLServer数据库的管理功能。事实上,ManagementStudio就是构建在SQL管理对象之上的。SMO是作为Microsoft.NETFramework程序集实现的。您可以使用SMO自动执行常见的SQLServer管理任务,例如,用编程方式检索配置设置,创建新数据库,应用Transact-SQL脚本,创建SQLServer代理作业以及调度备份等。SMO对象模型替代了包含在SQLServer早期版本中的分布式管理对象(DMO),因为它更安全可靠并具有更高的可伸缩性。(4)可用性在高可用性技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用程序。在高可用性上的创新有:数据库镜像、故障转移群集、数据库快照和增强的联机操作,这有助于最小化停机时间,并确保可以访问关键的企业系统。本节将详细介绍这些增强特性。(5)数据库镜像数据库镜像允许事务日志以连续的方式从源服务器传递到单台目标服务器上。当主系统出现故障时,应用程序可以立即重新连接到辅助服务器上的数据库。辅助实例几秒钟内即可检测到主服务器发生了故障,并能立即接受数据库连接。数据库镜像工作在标准服务器硬件下,不需要特定的存储或控制器。本系统创建的SQL数据库名称为城市公交查询系统。并将数据文件和日志文件保存在公交查询系统APP_DATA文件夹中。此数据库包含7个表:①管理员表(LoginTable)管理员表存放登陆系统所需要的用户名和密码,登录后台时需要访问此表。表2-1管理员表字段名数据类型长度是否为空是否为主键说明LoginIdint4否是登陆IDLoginPwdvarchar50否否登陆密码Loginnamevarchar50否否登陆姓名②站名表 站名表存放站名等数据,修改站名需要访问此表。表2-2站名表字段名数据类型长度是否为空是否为主键说明站名编号int4否是站名编号站名varchar50否否站名③车辆线路编号表车辆线路编号表存放线路编号等数据,修改车辆线路编号将要访问此表。表2-3车辆线路编号表字段名数据类型长度是否为空是否为主键说明车次int4否是车次车线类型varchar50否否车线类型④线路表线路表存放公交车线路的数据,修改车辆线路需要访问此表。表2-4线路表字段名数据类型长度是否为空是否为主键说明线路编号int4否是线路编号车次int4否是车次站名varchar50否否站名次序int4否否次序⑤车辆表车辆表存放车辆的相关信息,修改车辆等相关信息需要访问此表。表2-5车辆表字段名数据类型长度是否为空是否为主键说明车辆编号int4否是车辆编号车次int4否是车次车辆类型varchar50否否车辆类型服务类型varchar50否否服务类型票价varchar50否否票价IC卡类型varchar50否否IC卡类型运行区间varchar50否否运行区间⑥夏季发车时刻表 夏季发车时刻表存放夏季发车的时间,修改夏季发车时间需要访问此表。表2-6夏季发车时刻表字段名数据类型长度是否为空是否为主键说明编号int4否是编号车次int4否否车次首班时间varchar50否否首班时间末班时间varchar50否否末班时间⑦冬季发车时刻表冬季发车时刻表存放冬季发车的时间,修改冬季发车时间需要访问此表。表2-7冬季发车时刻表字段名数据类型长度是否为空是否为主键说明编号int4否是编号车次int4否否车次首班时间varchar50否否首班时间末班时间varchar50否否末班时间 第三章详细设计3.1建立数据库MGraphInitGraph(void){MGraphG;inti,j;G.vexnum=10;G.arcnum=14;for(i=0;iG->vexnum||j<0||j>G->vexnum){printf("站点编号不存在!请重新输入出发点和目的地的编号:");scanf("%d%d",&k,&j);}if(k>=0&&kvexnum&&j>=0&&jvexnum)flag=0;}printf("%s",G->vexs[k].name);for(u=0;uvexnum;u++)if(p[k][j][u]&&k!=u&&j!=u)printf("-->%s",G->vexs[u].name);printf("-->%s",G->vexs[j].name);printf("总路线长%dmn",D[k][j]);}//FloydendvoidSearch(MGraph*G){intk,flag=1;while(flag){printf("请输入要查询的站点编号:");scanf("%d",&k);if(k<0||k>G->vexnum){printf("站点编号不存在!请重新输入站点编号:");scanf("%d",&k);}if(k>=0&&kvexnum)flag=0;}printf("编号地点名称简介┃n");printf("%-4d%-16s%-56sn",G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);}//SearchendintLocateVex(MGraph*G,char*v){ intc=-1,i;for(i=0;ivexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;break;}returnc;}MGraph*CreatUDN(MGraph*G)//初始化图形,接受用户输入{inti,j,k,w;charv1[20],v2[20];printf("请输入图的顶点数,弧数:");scanf("%d%d",&G->vexnum,&G->arcnum);printf("请输入站点的编号:、名称、简介:n");for(i=0;ivexnum;i++){printf("站点编号:");scanf("%d",&G->vexs->num);printf("站点名称:");scanf("%s",G->vexs[i].name);printf("站点简介:");scanf("%s",G->vexs->introduction);}第四章编码与调试4.1前台功能的实施4.1.1连接数据库的包含文件在动态网站中,调用数据库中的数据是十分频繁的,为了避免编写重复的代码。编写一个数据库连接文件是非常重要的。DB.cs文件中包含了本系统中的数据库的连接代码。本系统的数库的连接代码如下:publicstaticSqlConnectioncreateConnection(){SqlConnectioncon=newSqlConnection("server=.;database=城市公交查询系统;uid=sa;pwd=;");returncon;}4.1.2按线路查询 线路查询模块:用户进入系统后,在线路查询模块的输入框中输入要查询的线路,点击查询按钮,系统首先检查用户所查询的线路是否存在,如果不存在给出出错提示,如果存在给出这条线路的相关信息.。4.1.3按站点查询站点查询模块:用户进入系统后,在站点查询模块中有二种选择,第一个是按站点的确切信息也就是完全匹配查询,此时用户要给出站点的全称,当点击查询按钮后,系统会在数据库中检测该站点是否存在,如果存在,系统显示这个站点的相关信息。比如:经过这个站点共有哪些线路,这些线路又各经过哪些站点,第二个选择是站点的模糊查询,也就是不完全匹配,用户只需输入站点名称和部分字符信息,系统便会给出与此相关的所有站点信息。4.1.4按两站点查询两站点查询模块:用户进入系统后,在主页面的换乘查询模块中有两种选择,第一是直达,第二个是一次换乘。用户可以在起点站输入框中输入自已的出发点,然后在终点站输入框输入出行的终点,如果选择直达,系统便会检测这两个站点间是否有直达车,如果没有直达车,系统会给出相关提示,那么用户便可以选择一次换乘,系统会检测是否有一次换乘方案,如果有系统会给出所换乘方案。主要实现代码如下:if(cixuS"+alNum[k].ToString()+"";str+="路(总共经过"+zhanmNum.ToString()+"个站)";4.2后台管理功能的实现4.2.1新增车次线路此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有新的站点加入,管理员可以登陆此表,及时添加线路和站点的信息,以保证车次线路的及时更新,方便用户查询。主要实现代码如下:if(Check()){intmaxChelNo=GetMaxChelNo();SqlConnectioncon=DB.createConnection();con.Open();SqlCommandcmd=newSqlCommand("INSERTINTO车辆线路编号表(车次,车线类型)VALUES(@车次,@车线类型)",con);SqlParameterpara=newSqlParameter("@车次",SqlDbType.Int,4);para.Value=Convert.ToInt32(this.txtCheci.Text.Trim()); cmd.Parameters.Add(para);para=newSqlParameter("@车线类型",SqlDbType.NVarChar,50);para.Value=this.ddlLineType.SelectedValue;cmd.Parameters.Add(para);cmd.ExecuteNonQuery();cmd.CommandText="INSERTINTO车辆表(车辆编号,车次,车辆类型,服务类型,IC卡类型,票价,运行区间)VALUES(@车辆编号,@车次,@车辆类型,@服务类型,@IC卡类型,@票价,@运行区间)";intMaxNoS=GetMaxNoS();cmd.CommandText="INSERTINTO夏季发车时间表(编号,车次,首班时间,末班时间)VALUES(@编号,@车次,@首班时间,@末班时间)";cmd.Parameters.Add(para);cmd.ExecuteNonQuery();Response.Redirect("AddCheciDts.aspx?str="+this.txtCheci.Text.Trim());}else{Response.Write("");}4.2.2删除车次以及无效站点此模块同样为管理员操作,如当地哪个公交线路已经被废除,或原有公交车线路有哪个站点被删除,管理员可以登陆此表,及时删除线路和站点的信息,以保证车次线路的及时更新,方便用户查询。主要实现代码如下:(1)删除车次:SqlConnectioncon=DB.createConnection();SqlCommandcmd=newSqlCommand("DELETEFROM车辆表WHERE车次="+ddlCheci.SelectedValue,con);cmd.ExecuteNonQuery();cmd.CommandText="DELETEFROM公交车线路表WHERE车次="+ddlCheci.SelectedValue;cmd.ExecuteNonQuery();cmd.CommandText="DELETEFROM夏发车时间表WHERE车次="+ddlCheci.SelectedValue;cmd.ExecuteNonQuery();cmd.CommandText="DELETEFROM冬发车时间表WHERE车次="+ddlCheci.SelectedValue;cmd.ExecuteNonQuery();cmd.CommandText="DELETEFROM车辆线路编号表WHERE车次数="+this.ddlCheci.SelectedValue;cmd.ExecuteNonQuery();BindGrid();Response.Write(""); (2)删除无效站点:if(JudgeZhanm()){if(!JudgeDelZh()){SqlConnectioncon=DB.createConnection();con.Open();SqlCommandcmd=newSqlCommand("DELETEFROM站名表WHERE站名="+txtZhanm.Text.Trim(),con);cmd.ExecuteNonQuery();Response.Write("");}else{Response.Write("");}}else{Response.Redirect("./error/error7.aspx?ZhanMing="+txtZhanm.Text.Trim());}第五章总结本系统的特色是方便、快速!系统的不足与改进方案:在数据库设计方面,还有待改进,数据库设计也可采用别的形式,比如:我可以用一个字段作为站点字段,另一个字段作为经过该站点的车次字段,我只要找到经过某个站点最多的车次,就可以设计该字段的类型以及长度。那么就可以避免因数据过长而被截断的问题了。系统的智能化程度不高,改进方案是根据起点站、终点站来确定那条路线,给出几种乘车方案。这需要算法的设计!本次设计的心得体会与收获:历经半个月的毕业设计将近尾声,在这半个月内,体会颇深。从资料查找到课题的设计、分析、数据库的设计、界面的设计、代码的编写、程序的调试等让我深感编写出一个令人满意的系统是那么不容易!也深感自己的知识还很欠缺。应当继续努力,多动手动脑,把ASP.NET弄通。系统在调试过程中经过了无数次的修改,才最终定型的。感到最大的收获就是平时的努力,终于有了收获。内心当中有一种充实感。在设计过程中遇到了不少的麻烦,也烦恼过,也想放弃,但最终还是走下来了。虽然其中有一些困难现在还没有得到解决,但是我却总结了一个比解决这些困难更重要的东西,那就是:遇到困难,我们要做的不是去怕它,而是想法去找寻解决困难的方法。致谢时光飞逝,一转眼我的大学生活就要过了一半了。这两年我学到了很多很多的知识,是我人生的一个转折。我之所以能取得这些成绩,除了有自己的努力外,在我的学习,生活中还得到了很多人的关心和帮助。在此我要对他们表示衷心的感谢。首先,我要感谢我的指导老师,李明萍老师。在连续数月的毕业设计中,她不遗余力地指导和帮助我。在她孜孜不倦的教诲下,我顺利地完成了毕业设计。李老师对工作认真负责的态度,对学生无私的关怀,使我受益良多。我衷心地感谢她。 在这里我还要感谢所有指导过我的老师们,没有你们的培养我无法完成两年的大学学业。还有,我能有今天,是与我父母的辛勤培养分不开的,他们为我付出了一切。我将在以后的学习、工作中再接再厉,尽我最大的努力做到最好来报答父母的养育之恩。参考文献[1]谭浩强C++面向对象程序设计[M].北京:清华大学出版社.2007.[2]谭浩强C程序设计[M].北京:清华大学出版社.2005.[3]田丽华编码理论[M].西安:西安电子科技大学出版社,2007.附录:源程序:#defineINFINITY10000/*无穷大*/#defineMAX_VERTEX_NUM400#defineMAX400#include#include#include#includetypedefstructArCell{intadj;//路径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedefstruct//图中顶点表示主要站点,存放站点的编号、名称、等信息,{charname[300];intnum;charintroduction[1000];}infotype;typedefstruct{infotypevexs[MAX_VERTEX_NUM]; AdjMatrixarcs;intvexnum,arcnum;}MGraph;MGraphb;voidcmd(void);MGraphInitGraph(void);voidMenu(void);voidBrowser(MGraph*G);voidShortestPath_DIJ(MGraph*G);voidFloyd(MGraph*G);voidSearch(MGraph*G);intLocateVex(MGraph*G,char*v);MGraph*CreatUDN(MGraph*G);voidprint(MGraph*G);intmain(void){system("color1f");system("modecon:cols=140lines=130");cmd();getchar();return0;}voidcmd(void){inti;b=InitGraph();Menu(); scanf("%d",&i);while(i!=3){switch(i){case1:system("cls");ShortestPath_DIJ(&b);Menu();break;case2:system("cls");Floyd(&b);Menu();break;case3:exit(1);break;default:break;}scanf("%d",&i);}}MGraphInitGraph(void){MGraphG;inti,j;G.vexnum=10;G.arcnum=14;for(i=0;ivexnum;v++)printf("%-4d%-16s%-56sn",G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);}//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点voidShortestPath_DIJ(MGraph*G){intv,w,i,min,t=0,x,flag=1,v0; intfinal[20],D[20],p[20][20];while(flag){printf("请输入一个起始站点编号:");scanf("%d",&v0);if(v0<0||v0>G->vexnum){printf("站点编号不存在!请重新输入站点编号:");scanf("%d",&v0);}if(v0>=0&&v0vexnum)flag=0;}for(v=0;vvexnum;v++){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;wvexnum;w++)p[v][w]=0;if(D[v]vexnum;i++){min=INFINITY;for(w=0;wvexnum;w++) if(!final[w])if(D[w]vexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adjarcs[v][w].adj;for(x=0;xvexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;vvexnum;v++){if(v0!=v)printf("%s",G->vexs[v0].name);for(w=0;wvexnum;w++){if(p[v][w]&&w!=v0)printf("-->%s",G->vexs[w].name);t++;}if(t>G->vexnum-1&&v0!=v)printf("总路线长%dkmnn",D[v]);}}//ShortestPath_DIJendvoidFloyd(MGraph*G){intv,u,i,w,k,j,flag=1,p[10][10][10],D[10][10];for(v=0;vvexnum;v++)for(w=0;wvexnum;w++){ D[v][w]=G->arcs[v][w].adj;for(u=0;uvexnum;u++)p[v][w][u]=0;if(D[v][w]vexnum;u++)for(v=0;vvexnum;v++)for(w=0;wvexnum;w++)if(D[v][u]+D[u][w]vexnum;i++)p[v][w][i]=p[v][u][i]||p[u][w][i];}while(flag){printf("请输入出发点和目的地的编号:");scanf("%d%d",&k,&j);if(k<0||k>G->vexnum||j<0||j>G->vexnum){printf("站点编号不存在!请重新输入出发点和目的地的编号:");scanf("%d%d",&k,&j);}if(k>=0&&kvexnum&&j>=0&&jvexnum)flag=0;} printf("%s",G->vexs[k].name);for(u=0;uvexnum;u++)if(p[k][j][u]&&k!=u&&j!=u)printf("-->%s",G->vexs[u].name);printf("-->%s",G->vexs[j].name);printf("总路线长%dmn",D[k][j]);}//FloydendvoidSearch(MGraph*G){intk,flag=1;while(flag){printf("请输入要查询的站点编号:");scanf("%d",&k);if(k<0||k>G->vexnum){printf("站点编号不存在!请重新输入站点编号:");scanf("%d",&k);}if(k>=0&&kvexnum)flag=0;}printf("编号地点名称简介┃n");printf("%-4d%-16s%-56sn",G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);}//SearchendintLocateVex(MGraph*G,char*v) {intc=-1,i;for(i=0;ivexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;break;}returnc;}MGraph*CreatUDN(MGraph*G)//初始化图形,接受用户输入{inti,j,k,w;charv1[20],v2[20];printf("请输入图的顶点数,弧数:");scanf("%d%d",&G->vexnum,&G->arcnum);printf("请输入站点的编号:、名称、简介:n");for(i=0;ivexnum;i++){printf("站点编号:");scanf("%d",&G->vexs->num);printf("站点名称:");scanf("%s",G->vexs[i].name);printf("站点简介:");scanf("%s",G->vexs->introduction);}for(i=0;ivexnum;i++)for(j=0;jvexnum;j++)G->arcs[i][j].adj=INFINITY;printf("请输入路径长度:n");for(k=0;karcnum;k++){printf("第%d条边:n",k+1); printf("景点对(x,y):");scanf("%s",v1);scanf("%s",v2);printf("路径长度:");scanf("%d",&w);i=LocateVex(G,v1);j=LocateVex(G,v2);if(i>=0&&j>=0){G->arcs[i][j].adj=w;G->arcs[j][i]=G->arcs[i][j];}}returnG;}voidprint(MGraph*G){intv,w,t=0;for(v=0;vvexnum;v++)for(w=0;wvexnum;w++){if(G->arcs[v][w].adj==INFINITY)printf("∞");elseprintf("%-7d",G->arcs[v][w].adj);t++;if(t%G->vexnum==0)printf("n");}} 课题名称数据结构院系信息工程学院年级专业12级信息与计算科学学号姓名成绩课题设计目的与设计意义1、课题设计目的:(1).帮助人们到一个陌生的城市可以不为交通而烦恼。(2)城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体2、课题设计意义:人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次及相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。指导教师:2013年12月30日安徽新华学院课程设计成绩评定表(本科)袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈