资源描述
. 新华学院数据结构课程设计报告题目: 公交路线设计 学院: 信息工程学院 专业: 信息与计算科学 班级: 12信科(一)班 :学号:指导教师:设计时间:课程设计任务书一:设计任务城市公交是专门服务于市民出行的客运企业。它是城市社会和经济活动的重要组成部分。伴随着国民经济和城市建设的快速发展,城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体。但是随着公交系统的庞大,人们很难得到准确的公交信息,这样给一些人的出行就带来了不便。因此,急需一个方便、快捷的公交信息查询方式,本系统通过浏览器查询,实现中心控制、自动更新、更多的查询方式等等更多更强大的功能。二:设计要求为了保证系统能够长期、安全、稳定、可靠、高效的运行,城市公交查询系统应该满足以下的性能需求:(1) 系统处理的准确性和与时性系统处理的准确性和与时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。由于公交查询系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票数量和时间又影响企业的决策活动,其准确性很大程度上决定了公交查询系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。(2) 系统的开放性和系统的可扩充性公交查询系统在开发过程中,应该充分考虑以后的可扩充性。例如网上查询的用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。(3) 系统的易用性和易维护性公交查询系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。公交查询系统中涉与到的数据是公交公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。(4) 系统的标准性系统在设计开发使51用aspx过程中都要涉与到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规的数据库操纵界面、作为业界标准的TCP/IP网络协议与ISO9002标准所要求的质量规等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规,保证代码的易读性、可操作性和可移植性。(5) 系统的先进性目前计算系统的技术发展相当快,做为公交查询系统工程,应该保证系统在下个世纪仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。(6) 系统的响应速度公交查询系统在日常处理中的响应速度为秒级,达到实时要求,以与时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。三:设计期限数据结构课程设计是在两周之完成的一次完整性实践活动。首先,其设计的时间长度是固定的,必须在两周之完成,但同时也必须是完整的。即在两周时间完成课程设计的所有工作:从题目分析到结构设计,以与在此基础上的物理实现,然后撰写报告并答辩。前言 城市公交是专门服务于市民出行的客运企业。它是城市社会和经济活动的重要组成部分。伴随着国民经济和城市建设的快速发展,城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体。但是随着公交系统的庞大,人们很难得到准确的公交信息,这样给一些人的出行就带来了不便。因此,急需一个方便、快捷的公交信息查询方式,本系统通过浏览器查询,实现中心控制、自动更新、更多的查询方式等等更多更强大的功能。随着城市经济的发展、规模的扩大以与人口的增长,城市交通问题日益突出。降低出行时间将使所有的公交利用者产生效益,快速的交通、更好的信息与更好的市场可以提高公交的形象,能够增加公交乘坐者。城市公共交通运输以其覆盖面广、经济、快捷的特点,成为绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。本地市民特别是外来旅游、出差、就医等急需了解本地道路情况的人可以利用本系统方便快捷的查询出所有符合他们要求的公交路线,对他们的出行和生活提供帮助。 我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。出于这个目的,在老师的指导下,我设计了这个城市公交线路查询系统。在对公交乘客出行心理特征进行分析的基础上,考虑乘客选择公交线路决策的因素,进行程序关键部分的框架设计。现阶段,人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次与相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。45 / 45目录第1章 需求分析页码6 1.1 系统需求分析页码61.2 数据库需求分析 页码61.3性能需求页码7第2章 总体设计 页码9 2.1 概述页码9 2.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登录XX登录密码图2-2 实体属性关系图本系统的总体E-R图如图4-3所示。时 刻站 名图2-3 E-R模型图车 辆线 路拥有包含属于M1M1MN2.3.2数据库逻辑结构设计本系统采用的数据库管理系统是Microsoft公司的SQL Server 2005。该管理系统由一系列产品组成,不仅能够满足最大的数据处理系统和商业 Web 站点存储数据的需要,还能为个人或小企业提供易于使用的数据存储服务。Microsoft SQL Server 2005 的特性包括:(1)企业数据管理在当今的互联世界中,数据和管理数据的系统必须始终为用户可用且能够确保安全。有了 SQL Server 2005,组织的用户和信息技术 (IT) 专家将从减少的应用程序停机时间、提高的可伸缩性与性能、更紧密而灵活的安全控制中获益。SQL Server 2005 也包括了许多新的和改进的功能来帮助 IT 工作人员更有效率地工作。SQL Server 2005 包含几个在企业数据管理中关键的增强:易管理性、可用性、可伸缩性、安全性。SQL Server 2005 使部署、管理和优化企业数据以与分析应用程序变得更简单、更容易。作为一个企业数据管理平台,它提供单一管理控制台,使数据管理员能够在任何地方监视、管理和调谐企业中所有的数据库和相关的服务。它还提供了一个可以使用 SQL 管理对象轻松编程的可扩展的管理基础结构,使得用户可以定制和扩展他们的管理环境,同时使独立软件供应商 (ISV) 也能够创建附加的工具和功能来更好地扩展打开即得的能力。(2)SQL Server Management StudioSQL Server 2005 通过提供一个集成的管理控制台来监视和管理 SQL Server 关系数据库、Integration Services、Analysis Services、Reporting Services、Notification Services 以与在数量众多的分布式服务器和数据库上的 SQL Server Mobile Edition,从而简化了管理工作。数据库管理员能够同时执行多个任务,例如,编写和执行查询,查看服务器对象,管理对象,监视系统活动和查看联机帮助。SQL Server Management Studio 提供了一个开发环境,可在其中使用 Transact-SQL、多维表达式、XML for Analysis 和 SQL Server Mobile Edition 来编写、编辑和管理脚本和存储过程。Management Studio 可以很容易地与源代码控制集成在一起。ManagementStudio 还包括一些工具可用来调度 SQL Server 代理作业和管理维护计划,以自动执行日常维护和操作任务。管理和脚本编写集成在单一工具中,同时,该工具具有管理所有类型的服务器的能力,为数据库管理员们提供了更强的生产效率。SQL Server 2005 开放了 70 多个新的部数据库性能和资源使用的度量值,涵盖了从存、锁定到对事务、网络和磁盘 I/O 的调度等。这些动态管理视图 (DMV) 提供了对数据库和强大的基础结构的更大的透明度和可见性,可以主动监视数据库的状况和性能。(3)SQL 管理对象SQL 管理对象 (SMO) 是一个新的可编程对象集,它可实现所有 SQL Server 数据库的管理功能。事实上,Management Studio 就是构建在 SQL 管理对象之上的。SMO 是作为 Microsoft .NET Framework 程序集实现的。您可以使用 SMO 自动执行常见的 SQL Server 管理任务,例如,用编程方式检索配置设置,创建新数据库,应用 Transact-SQL 脚本,创建 SQL Server 代理作业以与调度备份等。SMO 对象模型替代了包含在 SQL Server 早期版本中的分布式管理对象 (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 建立数据库MGraph InitGraph(void) MGraph G; int i,j; G.vexnum=10; G.arcnum=14; for(i=0;i G.vexnum;i+) G.vexsi.num=i; strcpy(G.vexs0.name,公交1号线); strcpy(G.vexs0.introduction,起始站:市府广场(枢纽站) - 终点站:师附小); strcpy(G.vexs1.name,快速公交2号线); strcpy(G.vexs1.introduction,起始站:芙蓉路公交站-终点站:博物馆-); strcpy(G.vexs2.name,公交3号线); strcpy(G.vexs2.introduction,起始站:市府广场枢纽站街(BRT岛式- 终点站:汽车客运西站-); strcpy(G.vexs3.name,公交4号线); strcpy(G.vexs3.introduction,起始站:市府广场(枢纽站) -终点站:汽车客运西站 ); strcpy(G.vexs4.name,公交5号线); strcpy(G.vexs4.introduction,起始站:市二院新区 - 终点站:市府广场(枢纽站) ); strcpy(G.vexs5.name,公交6号线); strcpy(G.vexs5.introduction,起始站:建设学校-终点站:大兴镇); strcpy(G.vexs6.name,公交801号路线); strcpy(G.vexs6.introduction,起始站:火车站 - 终点站:野生动物园 ); strcpy(G.vexs7.name,公交48号线); strcpy(G.vexs7.introduction,起始站:野生动物园 -终点站:路 ); strcpy(G.vexs8.name, 市府广场(枢纽站);strcpy(G.vexs9.name,东岗(BRT侧式站台) );strcpy(G.vexs10.name,卫岗(BRT侧式站台) );strcpy(G.vexs11.name,卫塘 );strcpy(G.vexs12.name,维茂 );strcpy(G.vexs13.name,南门换乘中心 );strcpy(G.vexs14.name,滨湖世纪城 );strcpy(G.vexs15.name,四十六中 );strcpy(G.vexs16.name,师附小 );strcpy(G.vexs17.name,芙蓉路公交站 );strcpy(G.vexs18.name,明珠广场(繁华大道) );strcpy(G.vexs19.name,明珠广场(金寨南路) );strcpy(G.vexs20.name,柏树郢 );strcpy(G.vexs21.name, 稻香楼);strcpy(G.vexs22.name,博物馆- );strcpy(G.vexs23.name,市府广场枢纽站 );strcpy(G.vexs24.name,飞凤街(BRT岛式站台) );strcpy(G.vexs25.name,三孝口(西)(BRT岛式站台) );strcpy(G.vexs26.name,安农大(BRT岛式站台) );strcpy(G.vexs27.name, 国购广场(三里庵)(BRT岛式站台);strcpy(G.vexs28.name,青阳路 );strcpy(G.vexs29.name,三十四中 );strcpy(G.vexs30.name,十里庙 );strcpy(G.vexs31.name, 科学大道);strcpy(G.vexs32.name,新加坡花园城 );strcpy(G.vexs33.name, 大铺头);strcpy(G.vexs34.name,市委党校 );strcpy(G.vexs35.name,军官培训中心 );strcpy(G.vexs36.name, 山后店);strcpy(G.vexs37.name,井岗村 );strcpy(G.vexs38.name,汽车客运西站 );strcpy(G.vexs39.name,市府广场(枢纽站) );strcpy(G.vexs40.name,飞凤街(BRT岛式站台) );strcpy(G.vexs41.name,三孝口(西)(BRT岛式站台) );strcpy(G.vexs42.name, 三里庵(国购广场)(BRT岛式站台) );strcpy(G.vexs43.name,青阳路 );strcpy(G.vexs44.name,安农大(BRT岛式站台) );strcpy(G.vexs45.name,三十四中 );strcpy(G.vexs46.name,十里庙 );strcpy(G.vexs47.name,科学大道 );strcpy(G.vexs48.name,新加坡花园城 );strcpy(G.vexs49.name,大铺头 );strcpy(G.vexs50.name,市委党校 );strcpy(G.vexs51.name, 军官培训中心 );strcpy(G.vexs52.name,山后店 );strcpy(G.vexs53.name,井岗村 );strcpy(G.vexs54.name,汽车客运西站 16站 );strcpy(G.vexs55.name, 市二院新区);strcpy(G.vexs56.name,朱砖井 );strcpy(G.vexs57.name,东城世家 );strcpy(G.vexs58.name,吴小郢 );strcpy(G.vexs59.name,花溪新村 );strcpy(G.vexs60.name, 新村(BRT岛式站台);strcpy(G.vexs61.name,三十八中(BRT岛式站台) );strcpy(G.vexs62.name,商城(BRT岛式站台) );strcpy(G.vexs63.name, 小东门(大厦)(BRT岛式站台);strcpy(G.vexs64.name,市府广场(枢纽站) );strcpy(G.vexs65.name,建设学校 );strcpy(G.vexs66.name, 省中医院安医站);strcpy(G.vexs67.name,稻香楼 );strcpy(G.vexs68.name,桐城路 );strcpy(G.vexs69.name,大钟楼 );strcpy(G.vexs70.name,包公园 );strcpy(G.vexs71.name,孝肃桥 );strcpy(G.vexs72.name,和平广场公交集团 );strcpy(G.vexs73.name,市二院 );strcpy(G.vexs74.name,老岗 );strcpy(G.vexs75.name,新村 );strcpy(G.vexs76.name,花溪新村 );strcpy(G.vexs77.name,八佰户 );strcpy(G.vexs78.name,吴小郢 );strcpy(G.vexs79.name, 东城世家);strcpy(G.vexs80.name,王草坊 );strcpy(G.vexs81.name,柳荫塘 );strcpy(G.vexs82.name,胡岗 );strcpy(G.vexs83.name, 鸿章享堂);strcpy(G.vexs84.name,大兴商场 );strcpy(G.vexs85.name, 大兴镇 );strcpy(G.vexs86.name,火车站 );strcpy(G.vexs87.name,路 );strcpy(G.vexs88.name,逍遥津 );strcpy(G.vexs89.name, 杏花公园北 );strcpy(G.vexs90.name,市图书馆 );strcpy(G.vexs91.name,长丰路桥 );strcpy(G.vexs92.name,翠竹园 );strcpy(G.vexs93.name, 康居时代家园 );strcpy(G.vexs94.name,洪小郢 );strcpy(G.vexs95.name,龙居山庄 );strcpy(G.vexs96.name, 青史站);strcpy(G.vexs97.name,南新庄 );strcpy(G.vexs98.name,三十四中 );strcpy(G.vexs99.name, 怀宁路);strcpy(G.vexs100.name,十里庙 );strcpy(G.vexs101.name,科学大道 );strcpy(G.vexs102.name, 天波路口 );strcpy(G.vexs103.name,海关路 );strcpy(G.vexs104.name,黄科路口 );strcpy(G.vexs105.name,桂花园 );strcpy(G.vexs106.name,香樟站 );strcpy(G.vexs107.name,蜀山森林公园 );strcpy(G.vexs108.name,开福寺 );strcpy(G.vexs109.name,新华学院 );strcpy(G.vexs110.name,警察学院 );strcpy(G.vexs111.name,野生动物园 );for(i=0;i G.vexnum;i+) for(j=0;j G.vexnum;j+) G.arcsij.adj=INFINITY; G.arcs811.adj=5; G.arcs813.adj=4; G.arcs915.adj=3; G.arcs1213.adj=1; G.arcs1316.adj=6; G.arcs1315.adj=7; G.arcs1425.adj=5; G.arcs1429.adj=5; G.arcs2529.adj=5; G.arcs2637.adj=6; G.arcs2639.adj=2; G.arcs3748.adj=5; G.arcs3849.adj=2; G.arcs4142.adj=2; G.arcs4246.adj=4; G.arcs4347.adj=3; G.arcs4653.adj=2; G.arcs5356.adj=2; G.arcs5357.adj=1; G.arcs5458.adj=3; G.arcs5469.adj=5; G.arcs5859 .adj=3; G.arcs6167.adj=6; G.arcs6269.adj=2; G.arcs6768.adj=5; G.arcs6869.adj=2; G.arcs7076.adj=4; G.arcs7177.adj=3; G.arcs7273.adj=2; G.arcs7376.adj=2; G.arcs7374.adj=1; G.arcs7475.adj=3; G.arcs7579.adj=5; G.arcs7581.adj=3; G.arcs7687.adj=6; G.arcs7689.adj=2; G.arcs7788.adj=5; G.arcs7888.adj=2; G.arcs8082.adj=2; G.arcs8086.adj=4; G.arcs8187.adj=3; G.arcs8293.adj=2; G.arcs8386.adj=2; G.arcs8384.adj=1; G.arcs8485.adj=3; G.arcs8489.adj=5; G.arcs8589.adj=3; G.arcs8697.adj=6; G.arcs8699.adj=2; G.arcs8798.adj=5; G.arcs8899.adj=2;G.arcs9699.adj=2; G.arcs9798.adj=5; G.arcs9899.adj=2; G.arcs100102.adj=2; G.arcs99102.adj=4; G.arcs98101.adj=3; G.arcs102103.adj=2; G.arcs103106.adj=2; G.arcs103104.adj=4; G.arcs104105.adj=3; G.arcs104109.adj=5; G.arcs105109.adj=3; G.arcs106111.adj=6; G.arcs109109.adj=2; G.arcs110111.adj=5; G.arcs108109.adj=2;for(i=0;i G.vexnum;i+) for(j=0;j G.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G; /InitGraph end3.2线路的生成while(flag) printf(请输入出发点和目的地的编号:); scanf(%d%d,&k,&j); if(k G-vexnum|j G-vexnum) printf(站点编号不存在!请重新输入出发点和目的地的编号:); scanf(%d%d,&k,&j); if(k=0&k vexnum&j=0&j vexnum) flag=0; printf(%s,G-vexsk.name); for(u=0;u vexnum;u+) if(pkju&k!=u&j!=u) printf(-%s,G-vexsu.name); printf(-%s,G-vexsj.name); printf( 总路线长%dmn,Dkj); /Floyd end void Search(MGraph *G) int k,flag=1; while(flag) printf(请输入要查询的站点编号:); scanf(%d,&k); if(k G-vexnum) printf(站点编号不存在!请重新输入站点编号:); scanf(%d,&k); if(k=0&k vexnum) flag=0; printf( 编号 地点名称 简介
展开阅读全文