城市公交查询系统的设计与实现

目 录
摘 要 I
Abstract II
第1章 引 言 1
1.1 课题背景 1
1.2 论文的研究内容 1
1.3 论文的组织结构 2
第2章 系统的开发工具与环境 3
2.1 ASP.NET简介 3
2.2 ADO.NET概述 4
2.3 系统的开发要求 5
第3章 需求分析 6
3.1 系统需求分析 6
3.2 数据库需求分析 6
3.3 性能需求 7
第4章 系统概要设计 9
4.1 概述 9
4.2 功能模块划分 9
4.3 数据库设计 10
第5章 详细设计与实现 17
5.1 前台功能的实施 17
5.2 后台管理功能的实现 21
第6章 测试与维护 27
6.1 创建和测试应用程序 27
6.2 测试项目 27
6.3 程序改进 28
6.4 测试方法 28
6.5 测试内容 29
6.6 软件维护 29
结 论 31
致 谢 32
参考文献 33

摘 要
我国城市公交乘客信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,为了解决这种问题,加快发展城市公交信息化,设计一个城市公交查询系统是具有一定实际应用意义的。在此背景下,我开发了这个应用程序—城市公交查询系统。本次设计,首先我考虑了公交运营的实际情况和不同公交乘客的实际要求,分析了此系统应该具有的功能;其次对系统的主要功能模块进行了详细地描述,其中主要包括二个模块—查询模块(包括按线路查询、按站点查询和按两站点查询)和管理更新模块(包括公交站点管理和公交线路管理),最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验。
关键词:公交, ASP.NET,查询,B/S结构,数据库
Abstract
The development of the bus passenger information system is in a level that fall behind of the city in our country. The large part of passengers can acquire few ways of the information. So it’s practical for us to develop city’s bus passenger information system in order to resolving this problem. For this purpose, I design this application procedure—bus circuit search system. From this design, First ,I analyzed the present condition of the bus passenger information and different people’s needs, in order to know what functions this equipment should contain. Second, I describe the system’s main function modules in detail, these functions can be divided in to two parts—search system(According to the line search、station search and between two stations search) and management update system(Bus station management and Bus line management). At last according to the problems that happened in the period of using, I summed up some ways to improve the system, and some experiences that I can have from this research.
Keywords :Bus,ASP.NET,Search,Structure of B/S,Database
第1章 引 言
1.1课题背景
城市公交是专门服务于市民出行的客运企业。它是城市社会和经济活动的重要组成部分。伴随着国民经济和城市建设的快速发展,城市经济的繁荣,人口的增加,城市必须解决好人们出行的需求。城市公交直接关系着城市的经济发展和居民生活,对城市经济具有全局性、先导性的影响,城市公交以其方便、快捷、容量大而成为城市交通的主体。但是随着公交系统的庞大,人们很难得到准确的公交信息,这样给一些人的出行就带来了不便。因此,急需一个方便、快捷的公交信息查询方式,本系统通过浏览器查询,实现中心控制、自动更新、更多的查询方式等等更多更强大的功能。
随着城市经济的发展、规模的扩大以及人口的增长,城市交通问题日益突出。降低出行时间将使所有的公交利用者产生效益,快速的交通、更好的信息及更好的市场可以提高公交的形象,能够增加公交乘坐者。城市公共交通运输以其覆盖面广、经济、快捷的特点,成为绝大多数出行者的首选方式,也是各地城市政府大力发展的一种交通方式。本地市民特别是外来旅游、出差、就医等急需了解本地道路情况的人可以利用本系统方便快捷的查询出所有符合他们要求的公交路线,对他们的出行和生活提供帮助。 我国城市公交乘客信息系统的发展处于一个落后的水平,广大乘客可以获得信息的方式很少,公交信息的完整性和准确性得不到保证,而且还没有专门的机构负责信息的发布和管理。出于这个目的,在老师的指导下,我设计了这个城市公交线路查询系统。在对公交乘客出行心理特征进行分析的基础上,考虑乘客选择公交线路决策的因素,进行程序关键部分的框架设计。
现阶段,人们的出入方式主要还是来源于城市公交,特别是对于那些到外地出差、打工,进行商业有关或其他事情需要在外地进行短暂停留的人而言,公交对他们是必不可少的,但是对于那个不属于自己所熟悉的城市,坐公交也是一个很大的难题,因此,开发一个公交查询系统就显得非常的重要。本系统的核心是对选择好的车次进行路线的查询,或者输入所要查询的车站名,点击“查询”按钮,查询所有含有该站的车次及相应的停靠站。此处既可以“精确查询”也可以是“模糊查询”,“模糊查询”主要方便那些对站名不是很清楚,但知道其中的一部分的乘客,系统可以帮助他们快速的查出。
1.2论文的研究内容
公交查询系统是一个取代过去由人工查询的查询系统。本论文论述了一个基于浏览器/服务器(B/S,Browser/Server)模式的公交查询系统的研究和实现的过程. 论文从开发平台和工具谈起,对ASP.NET服务器所提供的组件及其属性和方法做了一般介绍,更重要的是阐述了ASP.NET的数据库访问组件ADO.NET的使用方法。最后,详细介绍了如何创建“公交查询系统”的全部过程。
1.3论文的组织结构
论文第2章是系统的开发工具与环境概述,介绍了该系统设计开发使用的Visual Studio .net中的ASP.NET开发语言和系统在数据库的设计开发中使用的数据库连接技术ADO.NET,并介绍了系统开发所需要的计算机环境。
第3章是系统的需求分析和数据库总体设计,包括系统需求,性能分析等。
第4章是系统的系统概要设计,包括系统的模块划分,数据库的概念结构设计和数据库的逻辑结构设计。
第5章是系统的详细设计和实现,包括系统各个界面设计和相关重要注释。
第6章是系统测试和维护。
最后是结论、致谢、参考文献及附录。

第2章 系统的开发工具与环境
2.1 ASP.NET简介
ASP.NET 是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.NET提供许多比现在的Web开发模式强大的的优势。
ASP.NET 建立在 .NET Framework 的编程类之上,它提供了一个 Web 应用程序模型,并且包含使生成 ASP Web 应用程序变得简单的控件集和结构。ASP.NET 包含封装公共 HTML 用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在 Web 服务器上运行,并以 HTML 的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为 Web 开发人员提供了面向对象的编程的丰富性。ASP.NET 还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,ASP.NET 使用这些同样的概念使开发人员能够以服务的形式交付软件。使用 XML Web services 功能,ASP.NET 开发人员可以编写自己的业务逻辑并使用 ASP.NET 结构通过 SOAP 交付该服务。Visual Studio .NET 是一套完整的开发工具,用于生成 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic .NET、Visual C++ .NET、Visual C# .NET 和 Visual J# .NET 全都使用相同的集成开发环境 (IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,此框架提供对简化 ASP Web 应用程序和 XML Web services 开发的关键技术的访问。
2.1.1 ASP.NET技术的优点
ASP.NET是一种将各种Web元素组合在一起的服务器技术,是一个统一的Web开发平台,它提供了生成一个完整的Web应用程序所必须要的各种服务。与以前的开发模型相比较,它提供了以下数个重要的优点:
(1)增强的性能。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码之前便显著提高了性能。
(2)世界级的工具支持。ASP.NET 框架补充了 Visual Studio 集成开发环境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。
(3)威力和灵活性。由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言(如C#),或是跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。
(4)简易性。ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署的站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。
(5)可管理性。ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。
(6)可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。
(7)自定义性和扩展性。ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。
(8)安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。  
2.1.2 .NET Framework概述
.NET Framework 是用于生成、部署和运行 XML Web services 和应用程序的多语言环境。它由以下几个主要部分组成:
公共语言运行库 运行库实际上在组件的运行时和开发时操作中都起到很大的作用,尽管名称中没有体现这个意思。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。
统一编程类 该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集 (API)。目前,C++ 开发人员使用 Microsoft 基础类,而 Java 开发人员使用 Windows 基础类。框架统一了这些完全不同的模型并且为 Visual Basic 和 JScript 程序员同样提供了对类库的访问。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript 到 C++ 的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。
2.2 ADO.NET概述
ADO.NET并不是ADO的升级版本,它是全新的面向对象模型。比ADO更适应于分布式及Internet等大型应用程序环境,为了多人同时存取更具扩展性,ADO.NET的数据存取采用的是离线存取模式,可说是专门为.NET平台设计的数据存取结构。它具有简单地访问关系数据、可扩展性、支持多层应用程序、统一XML和关系数据访问的特点。
ADO.NET的主要目标是提供对关系数据的简单访问功能。坦白的说,易于使用的类描述关系数据库中的表、列和行。另外,ADO.NET引入了DataSet类,它代表来自封装在一个单元中的关联表中的一组数据,维持他们之间完整的关系。这是在ADO.NET中的新概念,可以显著的扩展数据访问接口的功能。
ADO.NET可以扩展——它为插件.NET数据提供者(也称为可管理提供者)提供了框架,这些提供者被构建,以便从任何数据源读取和写入数据。ADO.NET提供了两种内置的.NET数据提供者,一种用于OLE DB数据源,另一种用于Microsoft SQL Server。可以通过OLE DB访问数据格式(比如Microsoft Access)、第三方数据库和非关系数据。另外,Microsoft最近预演了用于ADO.NET的ODBC.NET数据提供者,它允许.NET访问更多的旧的数据格式和第三方数据库。
ADO.NET用于多层应用程序。这是当今商业和电子商务应用程序最常见的体系结构。在多层体系结构中,应用逻辑的不同部5分1运a行s在p多x个服务器或进程中,每一部分就称为一层。ADO.NET使用开放的Internet标准XML格式在层之间通信,允许数据通过Internet防火墙来传递,并允许以非Microsoft技术来实现一层或多层。
那么在Visual Studio.NET中ADO.NET访问数据库分为二种。一种是SQL Server数据库,另一种是其它任何类型的数据库。本系统的后台数据库为SQL Server 2005,因此是通过SQLConnection、SqlCommand、SqlDataAdapter、DataSet等几个主要的数据访问对象来访问数据的。
2.3系统的开发要求
本次开发的公交查询系统对操作系统的要求如下:
硬件要求:
CPU:最低Intel Pentium II 500 MHz。
磁盘空间:250MB(完全安装),155MB(快速安装)。
内存:512MB(最好1GB以上)。
显示:1024*768,256色
软件要求:
操作系统:Windows 2000以上的操作系统。
开发平台:Visual Studio.NET 2005,Microsoft SQL Server 2005。
第3章 需求分析
3.1 系统需求分析
随着我国经济的高速发展,人们生活水平的提高,越来越多的人开始热衷于到外地旅游。那么对于这些外来旅游者,首先搞清这个城市的公交路线显的很重要!我的家乡沈阳,作为一个旅游城市,每年都要吸引大量的游客,为了满足这些游客熟悉公交路线的需求,特以公交查询系统为设计课题。本软件不仅能给游客带来方便,也能给广大市民提供方便。我认为这样的系统应该具有很好的实用性!开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规范公交管理,提高服务质量,方便乘客查询,并为此设计该系统。
人们生活水平的提高,越来越多人喜欢旅游,但是第一次来一个陌生的城市,肯定对公交路线不熟悉,所以必定需要一个能查看具体公交线路的公交系统。有些只知道一个站的某几个字或一个车次的某几个数字,所以本系统将给出站点的模糊查询,方便用户的查询,有些只知道车次或某个站点,本系统也给出了公交线路查询、公交站点查询、公交换乘查询,进一步方便大家的出行,但也有用户什么都查不到,想留言问问人,所以再搞个留言板很有必要,方便大家交流以及解答各种疑难问题!
本系统采用结构化设计的方法来实现系统总体功能,提高系统的各项指标,即将整个系统合理的划分成各个功能模块,正确地处理模块之间和模块内部的联系以及和数据库的联系,定义各模块的内部结构,通过对模块的设计和模块之间关系的系统来实现整个系统的功能
前台主要有3个模块,线路查询、站点查询、公交换乘模块和后台管理模块
功能名称:线路查询
功能概述:可以获得要查询公交所通过的各个站点。
功能名称:站点查询
功能概述:通过输入的指定站点查询经过该站点的公交。
功能名称:公交换乘查询
功能概述:分为公交直达、公交一次换乘,主要体现那些不可直达需要转车的路线的所有换法。(如果用户输入的起始点和终点,有一条及一条以上的公交线可以直达的,则为公交直达;如果输入的起始点和终点,没有一条公交线可以直接到的,系统将会给出一次换乘的方案,则为公交一次换乘)
功能名称:后台管理
功能概述:用于管理员登陆,添加、修改、删除公交线路,修改信息资料、安全密码,回复留言板等功能。
本系统提供了的车次查询功能、路5线1查A询S功P能X。乘客可以方便的进行查询,以防乘错车次。当然有些功能的智能化不是很强,系统有待进一步来完善。
3.2 数据库需求分析
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
数据库技术是由传统的文件系统发展而来的,从层次模型、网状模型发展到关系模型。数据库技术是数据管理的最新技术,是计算机科学的一个重要分支,它能指导我们正确地设计数据库系统,它的出现极大地促进了计算机应用的发展。采用数据库技术的原理和方法可以有效地设计实用的数据库系统。一个完整的数据库系统包括数据库管理系统(DBMS),数据库管理员(DBA)、数据库(DB)、应用程序和相应的硬件设施。
目前许多数据库管理系统都基于关系模型,关系模型的主要特点是用表格结构表达实体,用键表示实体与实体之间的联系。与层次模型和网状模型相比,关系模型比较简单,容易为初学者接受。关系模型是由若干个关系模式组成的集合,关系模式相当于记录类型,它的实例称为关系。每个关系是一张表格。表格简单,用户易懂,用户只需用简单的查询语句就可以对数据库进行数据操作,并不涉及到存储结构,访问技术等细节。关系模型是数学化的模型,要用到集合论,离散数学等知识。SQL语言是关系数据库的代表性语言,已经得到广泛应用。
在设计数据库时,应注意数据的安全性,保证数据的安全,防止非法用户访问数据库,以免泄露重要信息,同时也能51防A止s非px法用户的蓄意破坏,有许多保护数据的方法,如采用用户标识,口令和密码或访问控制等方法。一个成功的数据库应用系统应具有用户标识,每一个合法用户具有一个用户名和相应的口令,进入数据库应用系统前必须输入正确的口令,否则无法进入系统,这就保证了只有合法的用户才能操作数据库系统。为了保证数据的合法语义,必须对数据库的数据进行完整性约束,即防止用户输入不合语义的数据。
在设计应用软件时,应严格按照软件工程学的方法进行设计,传统的方法采用瀑布模型,从问题定义、可行性分析、需求分析、概念设计、总体设计、系统实现、编码和软件测试、运行和维护等软件生命周期内,每一阶段均在前一阶段的基础上进行设计,并在每一阶段有相应的文档资料。
设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:数据库需要分析,数据库概念结构设计,数据库逻辑结构设计。
3.3 性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,城市公交查询系统应该满足以下的性能需求:
3.3.1 系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
由于公交查询系统的查询功能对于整个系统的功能和性能完成举足轻重。作为系统的很多数据来源,而车票数量和时间又影响企业的决策活动,其准确性很大程度上决定了公交查询系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。
3.3.2 系统的开放性和系统的可扩充性
公交查询系统在开发过程中,应该充分考虑以后的可扩充性。例如网上查询的用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
3.3.3 系统的易用性和易维护性
公交查询系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
公交查询系统中涉及到的数据是公交公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。
3.3.4 系统的标准性
系统在设计开发使51用aspx过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。
3.3.5 系统的先进性
目前计算系统的技术发展相当快,做为公交查询系统工程,应该保证系统在下个世纪仍旧是先进的,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
3.3.6 系统的响应速度
公交查询系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。

第4章 系统概要设计
4.1概述
本阶段设计的基本目标是解决系统如何实现问题,也叫做概要设计,本阶段主要任务是划分出系统的物理元素及设计软件的结构,完成软件定义时期的任务之后就应该对系统进行总体设计,即根据系统分析产生的分5析1结果AS来PX确定这个系统由哪些系统和模块组成,这些系统和模块又如何有机的结合在一起,每个模块的功能如何实现。系统设计的目标是使系统实现拥有所要求的功能,同时,力争达到高效率、高可靠性、可修改性,并且容易掌握和使用。
模块化的依据是:把复杂问题分解成许多容易解决的小问题。原来的问题也就变得容易解决。模块化设计是把大型软件按照一定的原则划分成一个较小的相对功能独立又相关联的模块。每个模块完成一个特定的子功能。把这些模块结合起来组成一个整体。完成指定的功能,满足问题的要求。采用模块化原理的优点在于可以使软件结构清晰,容易测试和调试。从而提高软件的可靠性,可修改性。有助于软件开发的组织管理。一个大型软件可分别编写不同的模块。模块化理论的几个重要概念如下:
抽象。抽象就是抽象出事物的本质特性而暂时不考虑它们的细节。处理复杂系统唯一有效的方法是用层次的方式构造和分析它。一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的理解,直到最低层次的具体元素。
信息隐蔽和局部化。信息隐蔽是指在设计和确定模块时,应使得一个模块内包含的信息对于不需要这些信息的模块来说,是不能访问。
局部化是指把一些关系密切的软件元素物理的放得彼此靠近。局部化有助于实现信息隐蔽。
信息隐蔽原理和局部化有助于在测试期间以及软件维护期间修改软件。因为绝大多数数据和过程对于软件的其它部分而言是隐蔽的,从而由疏忽引入的错误就很少可能传播到软件的其它部分。
逐步求精的模块化概念。逐步求精和模块化的抽象是密切相关的。软件结构每一层中模块表示对软件抽象层次的次细化。用自顶向下,逐步求精的方法由抽象到具体的方式分配控制,简化了软件设计和实施,提高了软件的可理解性和可测试性,并使得软件更容易维护。
模块独立性。模块的划分要使模块间尽可能的相互独立,独立模块较易维护。度量模块的独立程度有两个标准:内聚和耦合。耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数。
在软件的设计中应追求尽可能松散的耦合。内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展,理想内聚的模块只做一件事情。在设计时应力求做到高内聚。
4.2 功能模块划分
查询系统模块
该模块实现公交查询功能。可实现按线路查询、站点查询和起点—终点查询三种查询方式。
录入系统模块
该模块实现数据的新增、修改、删除功能。
系统模块图如图4-1所示:

4.3 数据库设计
数据库技术是在文件系统的基础上发展起来的一种高效的数据管理技术,它能保持系统数据的整体性,完整性和共享性。在数据库系统中提供了对数据的访问机制,能有组织的存储相关的数据,具有合理的存储方式,快速的查询效率和最小的数据冗余等特性。另外数据的存储和应用程序彼此独立,不仅便于数据的管理与控制而且有利于应用程序的编写与调试。数据库类似于一个数据的大仓库,能很好地实现数据共享,能维护数据的一致性。数据库设计是系统设计的一个重要内容,其设计质量的好坏直接影响系统开发的成败,系统的质量,系统效率及可维护性。
在本系统的设计中,充分考虑到了管理系统数据繁杂,重复性很大,数据使用频繁。因此本系统采用了一种能正确反映用户实现环境,能被现行系统接受,易于维护、效率高的数据管理方法–数据库系统。
数据模型是指数据库中记录与记录之间联系的数据结构形成的。不同的数据管理系统有不同的数据模型,数据库设计的核心问题是设计好的数据模型。在目前的数据库管理系统中有层次模型,网状模型、关系模型三种数据模型。其中,关系模型具有较高的数据独立性,使用也较为方便。本设计采用关系数据库。该数据库实行增、删、编辑、统计。显示和打印都极为方便。其中的排序和索引功能,对数据快速定位,查询提供了有利条件。交流互动对于本系统的数据库设计有以下几点说明:数据库设计兼顾前面设计的数据流程图,管理信息系统的设计并不是以数据库为核心的数据库应用设计,本系统的数据库设计尽量满足3NF(第三范式)的要求,本系统的数据库设计以提高系统运行效率为前提。

4.3.1 数据库概念结构设计
在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”,如“实体联系模型”;另一种是直接面向数据库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但它只是数据库设计的第一步。
E-R图是直观表示概念模型的工具,它有三个基本成分:
(1)矩形框,表示实体类型(考虑问题的对象)。
(2)菱形框,表示联系类型(实体间的联系)。
(3)椭圆形框,表示实体的属性。
实体和属性的定义如下:
管理员表(登陆ID,登录姓名,登录密码)
站名表(站名编号,站名)
车辆线路编号表(车次,车线类型)
线路表(线路编号,车次,站名,次序)
车辆表(车辆编号,车次,车辆类型,服务类型,票价,IC卡类型,运行区间)
冬季发车时间表(车次,编号,首班时间,末班时间)
夏季发车时间表(车次,编号,首班时间,末班时间)

各实体属性图如图4-2所示。

图4-2 实体属性关系图

本系统的总体E-R图如图4-3所示。

4.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 Studio
SQL 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 可以很容易地与源代码控制集成在一起。Management Studio 还包括一些工具可用来调度 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)
管理员表存放登陆系统所需要的用户名和密码,登录后台时需要访问此表。
表4-1 管理员表
字段名 数据类型 长度 是否为空 是否为主键 说明
LoginId int 4 否 是 登陆ID
LoginPwd varchar 50 否 否 登陆密码
Loginname varchar 50 否 否 登陆姓名

②站名表
站名表存放站名等数据,修改站名需要访问此表。
表4-2 站名表
字段名 数据类型 长度 是否为空 是否为主键 说明
站名编号 int 4 否 是 站名编号
站名 varchar 50 否 否 站名
③车辆线路编号表
车辆线路编号表存放线路编号等数据,修改车辆线路编号将要访问此表。
表4-3 车辆线路编号表
字段名 数据类型 长度 是否为空 是否为主键 说明
车次 int 4 否 是 车次
车线类型 varchar 50 否 否 车线类型
④线路表
线路表存放公交车线路的数据,修改车辆线路需要访问此表。
表4-4线路表
字段名 数据类型 长度 是否为空 是否为主键 说明
线路编号 int 4 否 是 线路编号
车次 int 4 否 是 车次
站名 varchar 50 否 否 站名
次序 int 4 否 否 次序
⑤车辆表
车辆表存放车辆的相关信息,修改车辆等相关信息需要访问此表。
表4-5 车辆表
字段名 数据类型 长度 是否为空 是否为主键 说明
车辆编号 int 4 否 是 车辆编号
车次 int 4 否 是 车次
车辆类型 varchar 50 否 否 车辆类型
服务类型 varchar 50 否 否 服务类型
票价 varchar 50 否 否 票价
IC卡类型 varchar 50 否 否 IC卡类型
运行区间 varchar 50 否 否 运行区间

⑥夏季发车时刻表
夏季发车时刻表存放夏季发车的时间,修改夏季发车时间需要访问此表。
表4-6 夏季发车时刻表
字段名 数据类型 长度 是否为空 是否为主键 说明
编号 int 4 否 是 编号
车次 int 4 否 否 车次
首班时间 varchar 50 否 否 首班时间
末班时间 varchar 50 否 否 末班时间
⑦冬季发车时刻表
冬季发车时刻表存放冬季发车的时间,修改冬季发车时间需要访问此表。
表4-7 冬季发车时刻表
字段名 数据类型 长度 是否为空 是否为主键 说明
编号 int 4 否 是 编号
车次 int 4 否 否 车次
首班时间 varchar 50 否 否 首班时间
末班时间 varchar 50 否 否 末班时间

第5章 详细设计与实现
5.1 前台功能的实施
5.1.1连接数据库的包含文件
在动态网站中,调用数据库中的数据是十分频繁的,为了避免编写重复的代码。编写一个数据库连接文件是非常重要的。DB.cs文件中包含了本系统中的数据库的连接代码。本系统的数库的连接代码如下:
public static SqlConnection createConnection()
{
SqlConnection con=new SqlConnection(“server=.;database=城市公交查询系统;uid=sa;pwd=;”);
return con;
}
5.1.2按线路查询
线路查询模块:用户进入系统后,在线路查询模块的输入框中输入要查询的线路,点击查询按钮,系统首先检查用户所查询的线路是否存在,如果不存在给出出错提示,如果存在给出这条线路的相关信息,如:双向早晚车的工作时间,票价,经过的站点。如线路存在,进入线路界面如图5-1所示:

图5-1 线路查询
主要实现代码如下:
SqlCommand cmdsj=new SqlCommand(cmdstring,con);
SqlDataReader sdrsj=cmdsj.ExecuteReader();
while(sdrsj.Read()){string linetemp1=sdrsj[“首班时间”].ToString();
string linetemp2=sdrsj[“末班时间”].ToString();
line+=“(首班时间为:”+linetemp1+" “;
line+=“末班时间为:”+linetemp2+”)

“;}
SqlCommand cmd=new SqlCommand(“select * from 公交车线路表where 车次=”+num+“order by 次序ASC”,con);SqlDataReader sdr=cmd.ExecuteReader();
try{while(sdr.Read()){line+=sdr[“站名”].ToString();
line=line.Replace(sdr[“站名”].ToString(),”“+sdr[“站名”].ToString()+”“);
line+=”–>";}}
finally{dr.Close();con.Close();}
int i;
i=Convert.ToInt32(line.Length);
line=line.Substring(0,i-3); }

5.1.3按站点查询
站点查询模块:用户进入系统后,在站点查询模块中有二种选择,第一个是按站点的确切信息也就是完全匹配查询,此时用户要给出站点的全称,当点击查询按钮后,系统会在数据库中检测该站点是否存在,如果存在,系统显示这个站点的相关信息。比如:经过这个站点共有哪些线路,这些线路又各经过哪些站点,第二个选择是站点的模糊查询,也就是不完全匹配,用户只需输入站点名称和部分字符信息,系统便会给出与此相关的所有站点信息。当输入确切站点后,进入的界面如图5-2所示:

图5-2 站点查询

主要实现代码如下:
SqlCommand cmd=new SqlCommand(“SELECT 车次FROM 公交车线路表 WHERE 站名='”+a+“'”,con);
SqlDataReader sdr=cmd.ExecuteReader();
while(sdr.Read()){alS.Add(sdr.GetValue(0));}
cmd.CommandText=“SELECT 车次FROM 公交车线路表WHERE 站名='”+b+“'”;
SqlDataReader sdr1=cmd.ExecuteReader();
while(sdr1.Read()){alE.Add(sdr1.GetValue(0));}
for(int i=0;i<alS.Count;i++){for(int j=0;j<alE.Count;j++){
if(alS[i].ToString()==alE[j].ToString()){alNum.Add(alE[j]); }}}
5.1.4按两站点查询
两站点查询模块:用户进入系统后,在主页面的换乘查询模块中有两种选择,第一是直达,第二个是一次换乘。用户可以在起点站输入框中输入自已的出发点,然后在终点站输入框输入出行的终点,如果选择直达,系统便会检测这两个站点间是否有直达车,如果没有直达车,系统会给出相关提示,那么用户便可以选择一次换乘,系统会检测是否有一次换乘方案,如果有系统会给出所换乘方案。界面如图5-3,5-4所示:

图5-3 两点查询

图5-4 两点查询
主要实现代码如下:
if(cixuS<cixuE) {zhanmNum=cixuE-cixuS+1;
cmd.CommandText=“SELECT 站名FROM 公交车线路表WHERE 次序BETWEEN “+cixuS+” AND “+cixuE+” AND 车次=”+alNum[k].ToString()+" ORDER BY 次序ASC";}
else{zhanmNum=cixuS-cixuE+1;
cmd.CommandText=“SELECT 站名FROM 公交车线路表WHERE 次序BETWEEN “+cixuE+” AND “+cixuS+” AND 车次=”+alNum[k].ToString()+" ORDER BY 次序DESC"; }
str+=“”+alNum[k].ToString()+“”;
str+=“路(总共经过”+zhanmNum.ToString()+“个站)”;

5.2后台管理功能的实现
5.2.1新增车次线路
此模块为管理员操作,如当地出现新的公交线路,或原有公交车线路有新的站点加入,管理员可以登陆此表,及时添加线路和站点的信息,以保证车次线路的及时更新,方便用户查询。添加的界面如图5-5,5-6所示:

图5-5 新增车次

图5-6新增线路站名
主要实现代码如下:
if(Check()){int maxChelNo=GetMaxChelNo();
SqlConnection con=DB.createConnection();
con.Open();
SqlCommand cmd=new SqlCommand(“INSERT INTO 车辆线路编号表(车次,车线类型)VALUES(@车次,@车线类型)”,con);
SqlParameter para=new SqlParameter(“@车次”,SqlDbType.Int,4);
para.Value=Convert.ToInt32(this.txtCheci.Text.Trim());
cmd.Parameters.Add(para);
para=new SqlParameter(“@车线类型”,SqlDbType.NVarChar,50);
para.Value=this.ddlLineType.SelectedValue;
cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
cmd.CommandText=“INSERT INTO 车辆表(车辆编号,车次,车辆类型,服务类型,IC卡类型,票价,运行区间)VALUES(@车辆编号,@车次,@车辆类型,@服务类型,@IC卡类型,@票价,@运行区间)”;
int MaxNoS=GetMaxNoS();
cmd.CommandText=“INSERT INTO 夏季发车时间表(编号,车次,首班时间,末班时间)VALUES(@编号,@车次,@首班时间,@末班时间)”;
cmd.Parameters.Add(para);
cmd.ExecuteNonQuery();
Response.Redirect(“AddCheciDts.aspx?str=”+this.txtCheci.Text.Trim());}
else{Response.Write(“”);}

5.2.2删除车次以及无效站点
此模块同样为管理员操作,如当地哪个公交线路已经被废除,或原有公交车线路有哪个站点被删除,管理员可以登陆此表,及时删除线路和站点的信息,以保证车次线路的及时更新,方便用户查询。删除的界面如图5-7,5-8所示:

图5-7 删除车次

图5-8 删除无效站点

主要实现代码如下:
(1)删除车次:
SqlConnection con=DB.createConnection();
SqlCommand cmd=new SqlCommand(“DELETE FROM 车辆表WHERE 车次=”+ddlCheci.SelectedValue,con);
cmd.ExecuteNonQuery();
cmd.CommandText=“DELETE FROM 公交车线路表WHERE 车次=”+ddlCheci.SelectedValue;
cmd.ExecuteNonQuery();
cmd.CommandText=“DELETE FROM 夏发车时间表WHERE车次=”+ddlCheci.SelectedValue;
cmd.ExecuteNonQuery();
cmd.CommandText=“DELETE FROM 冬发车时间表WHERE车次=”+ddlCheci.SelectedValue;
cmd.ExecuteNonQuery();
cmd.CommandText=“DELETE FROM 车辆线路编号表WHERE 车次数=”+this.ddlCheci.SelectedValue;
cmd.ExecuteNonQuery();BindGrid();
Response.Write(“”);}}
else{Response.Redirect(“./error/error7.aspx?ZhanMing=”+txtZhanm.Text.Trim());}

5.2.3修改车辆参数
本系统设计了一个管理员和大众用户能共用的主界面。但管理员需登陆才能进入相应的界面进行操作和修改,而大众用户无需登陆可直接进入相应的界面进行查询。
两者实现的功能基本一样,但系统只对用户提供信息查询功能,并不对用户开放所有数据信息的编辑权限。而管理员比大众用户增加了对数据信息编辑功能(包括:删除站点、删除线路、修改站点、添加线路等功能等),管理员实现对数据信息的编辑并对系统进行定期的维护,保证其运行的稳定性,为大众用户提供尽可能完善的服务。
用户进入主页面后不但可以得到公交相关信息,而且可以对公交进行查询。
在线路查询中主要实现所属线路具体的信息,获得该线路会经过的站点,起末班时间、价格等等。管理员通过后台进入系统,按照提示完成,车次、站点的添加、修改和删除。下图为修改车辆参数界面,如图5-9所示:

图5-9 修改车辆参数

主要实现代码如下:
SqlConnection con=DB.createConnection();
con.Open();
SqlCommand cmd =new SqlCommand(“Update 车辆表set 车辆类型='”+this.txtBusType.Text.Trim()+“‘,服务类型=’”+this.ddlServerType.SelectedValue+“‘,票价=’”+this.txtPrice.Text.Trim()+“‘,IC卡类型=’”+this.txtICCardType.Text.Trim()+“‘,运行区间=’”+this.txtMoveBetween.Text.Trim()+“'”+" where 车次=“+this.ddlLineNum.SelectedValue,con);
cmd.ExecuteNonQuery();
cmd.CommandText=“update 车辆线路编号表set 车线类型='”+this.ddlLineType.SelectedValue+”'“+” where 车次=“+this.ddlLineNum.SelectedValue;
cmd.ExecuteNonQuery();
con.Close();
Response.Write(”");

第6章 测试与维护
6.1 创建和测试应用程序
为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程举例说明如下:
创建和测试应用程序应是交替进行的,既要注意开发的效率也要注意它的稳定性。每编写一个模块,就要对这个模块进行测试,看它能否根据特定的要求工作。及早发现问题,及早解决,否则到最后再来测试的话,难度会大大增加。
6.2测试项目
在MIS开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是MIS开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占MIS开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。
单元测试。单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。
组合测试。组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。
确认测试。确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。
系统测试。系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。
用户验收测试。在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。
在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。
6.3 程序改进
本系统设计时没有统计每两个站点之间的距离,只统计了从起点到终点的站数,这样就不能得出最短路径,站数多的不一定距离就远,同样站点少的距离不一定近。
在乘客查询到自己想要的线路信息后,系统没有提供打印功能,这是本系统以后要着重改的地方。
6.4测试方法
一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试。[4]
本系统采用黑盒测试,以下以管理员登陆为例子。

6.5测试内容

  1. 登录成功后,显示页面,如图6-1所示:

图6-1 登录成功显示页面
2. 登录失败,则显示如下界面,如图6-2所示:

图6-2 登录失败界面

  1. 如果登录未输入用户名和密码,则显示如下界面,如图6-3所示:

图6-3 用户名和密码为空提示
6.6软件维护
软件维护是指在软件运行或维护阶段对软件产品所进行的修改。软件维护是软件生命周期中耗费最多、延续时间最长的活动。[4]
根据软件维护的不同原因,软件维护可以分成三种类型:改正性维护,适应性维护,完善性维护。
除了上述三种维护之外,还有一类维护活动,称为预防性维护。通常,人们将预防性维护定义为:“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法,对需要维护的软件或软件中的某一部分重新进行设计、编制和测试,提高软件的可维护性和可靠性等,为以后进一步改进软件打下良好基础。
6.6.1 软件维护的影响因素
在软件维护中,影响软件维护工作量的因素主要有以下6种。
(1)系统的大小。
(2)程序设计语言。
(3)系统年龄。
(4)数据库技术的应用。
(5)先进的软件开发技术。
(6)其他一些因素,如应用的类型、数学模型、任务的难度等。
6.6.2 软件的可维护性
软件的可维护性是指软件能够被理解、纠正、适应和完善以适应新环境的难易程度。软件的可维护性受许多因素的影响,在设计、编码和测试过程中稍有疏忽就会降低软件的可维护性,软件配置的好坏对此也有同样的影响[10]。
6.6.3 提高软件可维护性的方法
(1)建立明确的软件质量目标和优先级。
(2)使用提高软件质量的技术和工具。
(3)进行明确的质量保证审查。为了保证软件的可维护性,有四种类型的软件审查。
(4)选择可维护的程序设计语言。
(5)改进程序文档。
另外,在软件维护阶段利用历史文档,可以大大简化维护工作。

结 论
本系统的特色是方便、快速!
系统的不足与改进方案:
在数据库设计方面,还有待改进,数据库设计也可采用别的形式,比如:我可以用一个字段作为站点字段,另一个字段作为经过该站点的车次字段,我只要找到经过某个站点最多的车次,就可以设计该字段的类型以及长度。那么就可以避免因数据过长而被截断的问题了。
系统的智能化程度不高,改进方案是根据起点站、终点站来确定那条路线,给出几种乘车方案。这需要算法的设计!
毕业设计的心得体会与收获:历经数个月的毕业设计将近尾声,在这几个月内,体会颇深。从资料查找到课题的设计、分析、数据库的设计、界面的设计、代码的编写、程序的调试等让我深感编写出一个令人满意的系统是那么不容易!也深感自己的知识还很欠缺。应当继续努力,多动手动脑,把ASP.NET弄通。系统在调试过程中经过了无数次的修改,才最终定型的。感到最大的收获就是平时的努力,终于有了收获。内心当中有一种充实感。在设计过程中遇到了不少的麻烦,也烦恼过,也想放弃,但最终还是走下来了。虽然其中有一些困难现在还没有得到解决,但是我却总结了一个比解决这些困难更重要的东西,那就是:遇到困难,我们要做的不是去怕它,而是想法去找寻解决困难的方法。

致 谢
时光飞逝,一转眼我的大学生活就要结束了。这两年我学到了很多很多的知识,是我人生的一个转折。我之所以能取得这些成绩,除了有自己的努力外,在我的学习,生活中还得到了很多人的关心和帮助。在此我要对他们表示衷心的感谢。
首先,我要感谢我的毕业指导老师,王萍老师。在连续数月的毕业设计中,她不遗余力地指导和帮助我。在她孜孜不倦的教诲下,我顺利地完成了毕业设计。王老师对工作认真负责的态度,对学生无私的关怀,使我受益良多。我衷心地感谢她。
在这里我还要感谢所有指导过我的老师们,没有你们的培养我无法完成两年的大学学业。还有,我能有今天,是与我父母的辛勤培养分不开的,他们为我付出了一切。我将在以后的学习、工作中再接再厉,尽我最大的努力做到最好来报答父母的养育之恩。

参考文献
[1]曹祖圣.吴明哲.Visual C#.NET 程序设计经典.北京:科学出版社,2004.P.50-53.
[2]宣小平.ASP.NET数据库系统开发实例导航.上海:人民邮电出版社,2003.P.121-130.
[3]金银秋.数据库原理与设计.北京:科学出版社,2003.P.201-230.
[4]张海藩. 软件工程.北京:人民邮电出版社,2002.P.75-80.
[5]沃尔森. ASP.NET2.0揭秘(卷1). 谭振林.北京:人民邮电出版社. 2007-10-1.P.132-138.
[6]朱晔. ASP.NET 第一步——基于C#和ASP.NET2.0.北京:清华大学出版社,.2007-7-1.P.301-310.
[7]谭振林. 道不远人——深入解析ASP.NET 2.0 控件开发.北京:电子工业出版社. 2007-9-1.P.125-140.
[8]哈特. ASP.NET 2.0经典教程——C#篇. 孟宪瑞,易磊.北京:人民邮电出版社. 2007-2-1.P.20-40.
[9]朱印宏,熊利荣. Dreamweaver 8完美网页设计——ASP动态网页设计篇.北京. 中国电力出版社. 2006-10-1.P.63-72.
[10] 郝刚. ASP.NET 2.0开发指南.北京:人民邮电出版社. 2006-5-1.P.53-55.
[11] 明日科技. ASP.NET数据库系统开发案例精选.北京:人民邮电出版社. 2007-1-1.P.46-52.
[12] 明日科技. ASP程序开发范例宝典.北京:人民邮电出版社. 2006-7-1.P.96-100.
[13] 蒋培,王笑梅. ASP.NET Web程序设计.北京:清华大学出版社. 2007-6-1.P.76-88.
[14] 刘乃丽. 精通ASP.NET2.0+SQL Server 2005项目开发.北京:人民邮电出版社. 2007-5-1.P.189-203.
[15] 陈冠军. 征服ASP.NET 2.0 Ajax——Web开发技术详解.北京:人民邮电出版社. 2007-6-1.P.261-301.
[16]lvar Jacobson…Object-Oriented Software Engineering.第1版.北京:人民邮电出版社,2005.10
[17]Addison Wesley.A First Look at ADO.NET and System.Xml.清华大学出版社,2006.10

猜你喜欢

转载自blog.csdn.net/ambiguous__/article/details/130895555