毕业设计:交通信息网上查询系统的设计与实现(源代码+论文+开题报告)

发布时间:2025-02-27 17:26

互联网+公交系统让实时查询公交信息成为可能 #生活知识# #生活感悟# #科技生活变迁# #科技与出行#

引言  课题背景

交通信息网上查询,就是将各类交通班次的出发时间、经过城市、所需价格等相关信息放在WEB服务器中,并通过网络上的计算机终端通过特定的条件将其检索出来。随着国内经济的不断发展,交通条件的发展呈现出无法比拟的优势:数量上的海量化、繁多的种类、分布开放、时效性、高增值性等。目前类似的时刻表都只是列出了相关车次的信息,并不能按要求检索,还需要旅客自己在返回的信息中去比对和选择,而返回的信息可能是海量的,一个时刻表查询平台只提供一种交通工具,要考虑多种交通工具往往还需要查询几个平台。

 国内研究现状

通过互联网查询的资料来看,国内目前类似的系统比较多的是公交查询系统,而城际之间的交通查询系统并不过见,较多的仍然是以时刻表为基础的查询系统,其缺点在于不能根据特定条件进行检索,转乘查询也不支持,由于交通工具单一,一个系统只支持火车或飞机,加之服务与成本意识较为薄弱,使城际间的交通信息查询常常给旅客带来困绕。

本课题研究的意义

旅客是交通体系赖以生存和发展的根本,尊重旅客,以旅客的需求为中心,不只是一句口头上的空话,而要付诸行动。因此希望通过此次调查研究,设计出一个更适合旅客的交通信息查询系统,在有限的成本范围内提高旅客的满意度,在侧面完善我国的交通体制。并逐步形成一个完整的交通信息查询体制,方便以后旅客的查询和相关部门的统计。

本课题的研究方法

通过访问现有网上的火车时刻查询系统、公交查询系统等,做出分析报告,然后通过.net语言和SQL2000来进行开发。在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法,然后用这个流程进行本次开发。

本文所做工作

首先介绍了交通信息网上查询系统的开发环境以及选用的开发工具与数据库的关系,阐明了计算机互联网络的概念。并对数据库的体系结构、DBMS进行了介绍;从工作原理入手,介绍asp.net;并且介绍了B/S模式的概念、特点;用软件工程的方法分析交通信息网上查询系统,对整个系统进行了需求分析、功能模块划分,并通过ER图对数据库进行概念设计;对交通信息网上查询系统的具体设计,描述了查询、录入模块的实现过程。最后,在结束语的总结部分指出了系统的亮点以及不足之处,简单介绍了自己开发过程中的体会与心得:在摸索中实践,在实践中摸索。

设计环境 计算机网络

计算机网络是指将多台具有独立功能的计算机,通过通信线路和通信设备连接起来,在网络软件的支持下实现数据通信和资源共享的计算机系统。

计算机网络的规模有大有小,大的可以覆盖全球,小的仅局限于一个办公室。现在一般按照网络覆盖的地理范围将计算机网络分为三类:局域网(LAN)、城域网(MAN)、广域网(WAN)。

系统运行环境

该系统采用Browser/Server模式进行设计:在服务器上运行Web发布服务器、数据库程序,服务器操作系统为WindowsNT/2000/XP/2003 server,客户机操作为Windows9×/ NT/2000/XP/2003,其上运行浏览器程序,服务器和客户机可为同一设备。

系统开发工具

该系统采用.NET环境,运用Dreamweaver进行开发,数据库服务器为SQL2000,WEB发布服务器为Windows 2003 Server;客户端使用浏览器运行程序,整个系统调试成功。

开发工具介绍 Dreamweaver介绍

Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。

DREAMWEAVER特点:最佳的制作效率、网站管理、无可比拟的控制能力。

SQL2000介绍

SQL Server 2000 是Microsoft公司推出的SQL Server数据库管理系统的最新版本,该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点。可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。

设计理论依据 数据库技术

数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。优秀的数据库设计是应用成功的基石。万万丈高楼平地起,数据库设计如同高楼的基石,是开发高品质应用的前提。

数据库的体系结构

数据的体系结构分成三级:内部级(Internal),概念级(Conceptual)和外部级(External)。这个三级结构有时也称为“三级模式结构”。

外部级:最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。

概念级:涉及到所有用户的数据定义、是全局的数据视图。全局视图的描述称为“概念模式”。

内部级:最接近于物理存储设备,涉及到实际数据存储的结构物理存储数据视图的描述称为“内模式”。

数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。

数据库管理系统(DBMS)

数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、查询、更新及各种控制,都是通过DBMS进行的。

在不同的计算机系统中,由于缺乏统一的标准,即使同种数据模型的DBMS,它们在用户接口、系统功能方面也常常是不相同的。

用户对数据库进行操作,是由DBMS把操作从应用程序带到外部级、概念级、再导向内部级,进而操作存储器中的数据。DBMS的主要目标,是使数据作为一种可管理的资源处理。

DBMS的主要功能为:

数据库定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映象,定义数据的完整性、安全控制等约束。因此,在DBMS中应包括DDL的编译程序。

数据库的操纵功能:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)、更新(插入、删除、修改)。

数据库的保护功能:数据库中的数据是信息社会的战略资源,对数据的保护是至关重要的大事。DBMS对数据库的保护主要通过四个方面实现:

数据库的恢复:在数据库被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。

数据库的并发控制:DBMS的并发控制子系统能防止错误发生,正确处理好多用户、多任务环境下的并发操作。

数据库的完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作。

数据库的安全性控制:防止未经授权的用户蓄谋或无意地存取数据库中的数据,以免数据的泄露、更改或破坏。

数据库的存储管理:把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。

数据库的维护功能:它有许多实用程序提供给数据库管理员:

数据装载程序

备份程序

文件重组织程序

性能监控程序

数据字典:数据库系统中存放三级结构定义的数据库称为数据字典(DD)。对数据库的操作都要通过访问DD才能实现,通常DD中还存放数据库运行时的统计信息。

ASP.NET语言介绍 Asp.net与asp的区别效率

Asp是一个脚本编程环境,只能用VBScript或者JavaScript这样的非模块化语言来编写。当ASP程序完成之后,在每次请求的时候解释执行。这就意味着它在使用其他语言编程写大量组件的时候会遇到困难,并且无法实现对操作系统的低层操作。ASP.NET则是建立在.NET Framework之上的,他可以使用Visual Basic、C++这样的模块化程序设计语言,并且它在第一次执行时进行编译,之后的执行不需要重新编译就可以直接运行,所以速度和效率比ASP提高很多。

可重用性

在编写ASP应用程序的时候,ASP代码和HTML混合在一起。只要需要,就可以在任意的一个位置插入一段代码来实现特定的功能。这样方法表面上看起来很方便,但在实际的工作中会产生大量繁琐的页面,很难读懂,导致代码维护很困难。ASP.NET则可以实现代码和内容的完全分离,使得维护方便。

代码量

ASP对所有要实现的功能均需要通过编写代码来实现。在ASP.NET中,程序员只要预先说明,ASP.NET就可以自动实现这样的功能。所以相对来说,要实现同样的功能,使用ASP.NET比使用ASP的代码量要少的多。

ASP.NET的工作原理


ASP.NET的工作原理是:首先,客户端浏览器有一个HTTP请求发送到Web服务器,要求访问一个Web网页。然后,Web服务器通过分析客户HTTP请求来定位所请求网页的位置。如果所请求的网页的文件名后缀是aspx,那么就把这个文件传诵aspnet_isapi.dll进行处理,由aspnet_isapi.dll把ASP.NET代码提交给CLR。如果以前没有执行过这个程序,那么就由CLR编译并执行,得到纯HTML结果;如果已经执行过这个程序,那么就直接执行编译好的程序并得到纯HTML结果。最后,把这些纯HTML结果传回到浏览器作为HTTP响应,浏览器收到这个响应之后,就可以显示Web网页。

图1 .NET的组成部分

B/S结构介绍

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

图2 B/S结构图

B/S结构采用星形拓扑结构建立企业内部通信网络或利用Internet虚拟专网(VPN)。前者的特点是安全、快捷、准确。后者则具有节省投资、跨地域广的优点。须视企业规模和地理分布确定。企业内部通过防火墙接入Internet,在整个网络采用TCP/IP协议。

B/S架构具备极大的优越性

面向电子商务时代的技术

将来所有的应用系统几乎都在互联网或企业内部广域网上运行,发展电子商务成为企业不可避免的信息化道路。B/S架构的软件正是电子商务的基石,正是这类软件使得移动办公和分布式协同工作真正成为现实。无论在世界的那个角落,只需要一台可以联网的设备(计算机、PDA甚至手机)都可以方便地与客户联系和与他人协同工作。

软件操作、维护和升级方式的革命

软件系统的改进和升级越来越频繁,B/S架构的产品在维护和升级方面具备显著的优势。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只对服务器进行,通过远程连接服务器,异地的运维人员甚至于可以做到远程维护和升级,这对人力、时间、费用的节省是相当惊人的。

所有的客户端只是浏览器,所有的操作都和上网浏览网页类似,使用者接受的培训也仅限于业务逻辑而无需将大量精力浪费学习软件操作上。

系统整合

无论是办公自动化(OA)系统,人力资源(HR)系统,客户关系管理(CRM)系统,ERP等等,发展的趋势是不断融合。而采用统一的B/S结构开发的产品无论是现在还是将来都是最好的选择,它提供了真正意义上无缝地与其它系统进行整合的方案。

系统构架 系统概述

本系统是在全国城际交通路线基础上,将各交通信息进行整合查询的系统,是为了方便旅客了解各交通路线情况而开发设计的。本系统根据录入的数据,根据不同的要求,可以查询出各时段、班次、城市的交通信息。另外,要达到对不能直达的城市进行转乘查询的目的。功能范围有:按城市查询、按班次查询、普通查询、管理员对交通、城市、及管理员信息的管理。根据这些,构成了该系统。

 系统功能简述交通信息查询功能: 普通查询:输入最简洁的查询方式,用户只需要输入出发城市和终点城市就可进行交通信息查询,查询结果为所有符合条件的公路、铁路及航空信息的综合显示。城市查询:输入想要了解的城市名称,即可查询出所有经过该城市的所有交通信息,以及相关的城市介绍。。班次查询:在知道班次的前提下,可以对该班次进行详细的查询。高级查询:用户可根据自己特定的条件,在系统上查询交通信息。如相关时间、价格等。交通信息更新功能: 修改信息:在原有信息的基础上,对已改变的信息进行修改,以达到正确性和时效性。添加信息:当有新的交通信息出现后,需要及时正确的添加该信息,确保系统的时效性。删除信息:当某交通信息被废弃时,应及时的删除该信息,以免对查询的结果产生错误的影响和对数据库造成不必要的负担。 城市信息修改功能:

城市的添加是在添加交通信息的时候自动添加的,故此功能里面只有修改城市信息、修改城市名称和删除城市的功能。当城市尚有交通工具抵达的时候,不可将该城市删除。

管理员信息管理功能:

管理员登陆管理页面以后,可以根据需要,修改自己的个人资料,以方便初始管理员联系,也可修改自己的登陆密码。初始管理员除了可以修改自己的资料以外,还可以帮助其他管理员修改资料。当其他管理员遗失密码后,可由初始管理员将其密码改回。


以下为功能构成图和查询流程图。


图3 系统功能构成图

图4 查询流程图

数据库设计 概念设计

实体和属性的定义如下:

城市(城市编号,城市名称,城市介绍)

线路(线路编号,种类,车型,频率,班次)

交通关系(线路编号,城市编号,交通关系编号,出发时间,到达时间,到


达顺序,价格1……价格15)


图5 E-R图


图6 城市属性图

图7 路线属性图


图8 交通关系属性图

表的设计

数据库中建立了4张表,用于记录各项信息。

首先建立了管理员资料表users.dbf,用来存储管理员等登陆信息以及相关个人资料,具体字段如下:

表1 users表

字段名

关键字设置

数据类型

字段说明

ID

主关键字

Int

管理员编号

loginID

Varchar

登陆ID

Password

Varchar

登陆密码

Name

Varchar

名称

Sex

Varchar

性别

Email

Varchar

email

然后,建立了城市信息表ctxx.dbf,用来存储城市的相关信息,字段如下:

表2 ctxx表

字段名

关键字

数据类型

字段说明

cityID

主关键字

Int

城市ID

Cityname

Varchar

城市名

Cityjs

Varchar

城市介绍

接下来,是交通工具信息表jtgjxx.dbf,用来存储交通工具的相关信息,字段如下:

表3 jtgjxx表

字段名

关键字

数据类型

字段说明

TID

主关键字

Int

交通工具ID

Zl

Varchar

种类

Bc

Varchar

班次

Cx

Varchar

型号

Pl

Varchar

频率

最后,建立了交通关系表bus.dbf,用来存储交通工具与城市的对应关系,字段如下:

表4 bus表

字段名

关键字

数据类型

字段说明

ID

主关键字

Int

交通关系ID

 TID

外关键字

Int

交通工具ID

cityID

外关键字

Int

城市ID

Stops

Int

到达顺序

Gettime

Datetime

到达时间

Gotime

Datetime

出发时间

C1

Varchar

到达第1个城市的价格

C2

Varchar

到达第2个城市的价格

C3

Varchar

到达第3个城市的价格

C4

Varchar

到达第4个城市的价格

C5

Varchar

到达第5个城市的价格

C6

Varchar

到达第6个城市的价格

C7

Varchar

到达第7个城市的价格

C8

Varchar

到达第8个城市的价格

C9

Varchar

到达第9个城市的价格

C10

Varchar

到达第10个城市的价格

C11

Varchar

到达第11个城市的价格

C12

Varchar

到达第12个城市的价格

C13

Varchar

到达第13个城市的价格

C14

Varchar

到达第14个城市的价格

C15

Varchar

到达第15个城市的价格

各功能模块的详细说明 查询模块功能设计

本模块机能是从数据库中,根据所要求的查询条件以及查询方法,在数据库中进行交通信息的查询和筛选,并以表格的方式表现出来。查询的总体思路为:

由于交通班次具有方向性,所以在交通关系表中特别设定了stops关键字,用来存放交通信息的到达顺序,并且在每次查询的时候都加入查询条件start.stops<end.stops,这样就能保证每条查询出的交通路线都具有正确的方向性,以及避免了交通路线重复的情况。而查询的总体思路是把城市作为结点,交通关系作为通路来构成连通的有向图,然后用广度优先的方法进行遍历为基础。为了提高查询效率,在构造查询的时候,又是以起点和终点的结点构造个子的最小生成树,通过查找其交叉结点或通路,我们就可以得到我们的查询结果。


在查询系统的主页面中,将要查询的信息输入文本,并选择方法提交以后,查询系统将输入的信息存入session变量中,并根据不同的查询方法和种类,跳转到不同的页面进行处理。查询主页面的主要输入页面如下:

图9 查询主界面

根据查询的方法和种类不同,查询共分为6个部分:

直达查询

在直达查询中,可以查询到从起点城市出发到终点城市,可以乘坐的交通工具基本信息,以及起点城市的出发时间、终点城市到达时间、其间该班次可能经过的城市的到达时间和出发时间。

通过查询总体思路的派生,直达查询的主要查询方法简化为以起点城市和终点城市作为结点,查询出连通该2个结点的通路,该通路即为我们需要查询的交通路线。当用户以直达查询提交以后,系统将会跳转到chaxun.aspx页面。在打开chaxun.aspx页面后,后台将用以存入session变量中的起点城市和终点城市来查询数据库,并测试有无符合条件的交通工具,其SQL语句为:

select a.tid,b.gotime,a.gettime,b.stops as stopsb,a.stops as stopsa from

//将所有经过终点城市的车信息作为子集合

 (select * from bus where cityid=(select cityid from ctxx where cityname=@ends))A,

//将所有经过起点城市的车的信息作为子集B

(select * from bus where cityid=(select cityid from ctxx where cityname=@start))B

 where A.stops>B.stops and a.tid=b.tid

当查询到交通路线时,进行需要返回的相关信息查询并显示;若没有,则返回“无班次到达”的结果,并输出超连接,可连接到chaxun2.aspx页面进行一次转乘查询。

一次转乘查询

在一次转乘查询中,可以查询到从起点城市出发到终点城市,其间要经过的一个城市,以及要乘坐的2个交通工具的基本信息和中转城市的到达时间以及出发时间。

通过查询总体思路的派生,一次转乘查询的主要查询方法简化为以起点城市和终点城市作为结点,分别查询出连通该2个结点的通路,然后在这些通路的基础上,查找他们交汇的结点,此时,这些结点就为我们一次转乘的中转城市,而分别连通起点和终点结点的通路即为我们需要查询的交通路线。当用户以一次转乘查询提交或者在直达查询后通过超连接跳转到chaxun2.aspx页面。在chaxun2.aspx中,后台首先测试其中转城市是否存在,其SQL语句为:

select cityid,cityname from ctxx where cityid in

// 将所有经过起点城市的交通信息作为子集a

(select b.cityid from (select *  from bus where cityid=(select cityid from ctxx where cityname=@start))a,

//将所有经过起点城市的车的信息(主要查询到达城市)作为子集b

(select *  from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@start)))b,

//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c

(select *  from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@ends)))c,

//将所有经过终点城市的交通信息作为子集d

(select *  from bus where cityid=(select cityid from ctxx where cityname=@ends))d

//起点和终点能到达的城市中相同的城市

where A.stops  < B.stops and a.tid=b.tid and c.stops  < d.stops and c.tid=d.tid and b.cityid=c.cityid)

若存在,则首先查询出中转城市名,即我们查询出通路的交叉结点,用dataset对象的table属性将返回结果保存起来。然后利用for循环,每次循环首先输出起点到中转城市的交通信息,然后再输出中转城市到终点城市的交通信息。

否则返回“无班次到达”的结果,并输出超连接,转到2转查询的chaxun3.aspx页面。

  二次转乘查询

在二次转乘查询中,可以查询到从起点城市出发到终点城市,其间要经过的2个城市,以及要乘坐的3个交通工具的基本信息和中转城市的到达时间以及出发时间。

通过查询总体思路的派生,二次转乘查询的主要查询方法简化为以起点城市和终点城市作为结点,分别查询出连通该2个结点的所有通路。再利用集合的方法,将连通起点城市结点的通路连通的所有城市设为集合A,将连通终点城市结点的通路连通的所有城市设为集合B,这样,我们就只需要将集合A的城市作为起点结点,将集合B的城市作为终结点,进行直达查询算法,若查询有结果,就表示我们二次转乘查询成功。为了不让我们的查询结果中出现循环的现象,在查询条件中还需要加上所有的中转城市与起点和终点城市不相同的条件。

进入chaxun3.aspx页面后,还是进行查询结果测试,其SQL语句为:

select a.cityid, b.tid,b.cityid,bus.tid ,c.cityid,c.tid,d.cityid from bus,

//将所有经过起点城市的交通信息作为子集a

(select *  from bus where cityid=(select cityid from ctxx where cityname=@start))a,

//将所有经过起点城市的车的信息(主要查询到达城市)作为子集b

(select * from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@start)))b,

//将所有经过终点城市的车的信息(主要查询到达城市)作为子集c

(select * from bus where tid in(select tid from bus where cityid=(select cityid from ctxx where cityname=@ends)))c,

//将所有经过终点城市的交通信息作为子集d

(select *  from bus where cityid=(select cityid from ctxx where cityname=@ends))d

//从起点城市能到达的所有城市

where A.stops  < B.stops and a.tid=b.tid and

//从终点城市能到达的所有城市

c.stops  < d.stops and c.tid=d.tid

//在子集合b和子集c中有交通关系存在

and bus.tid in (select bus.tid from bus where cityid=b.cityid) and bus.tid in (select bus.tid from bus where cityid=c.cityid) and bus.stops='1'

//经过的4个城市各不相同。

and a.cityid<>b.cityid and a.cityid<>c.cityid and a.cityid<>d.cityid and b.cityid<>c.cityid and b.cityid<>d.cityid and c.cityid<>d.cityid 。

    若查询有结果,则利用dataset对象中的table属性将需要的信息保存下来,然后再根据其信息进行各交通工具和城市信息的查询和输出;若查询无结果,则执行输出:“现有条件查询不到符合要求的结果”并结束。

高级查询


通过高级查询的超连接,可以跳转到高级查询页面gjcx.aspx。在此页面,用户除了可以输入起点城市和终点城市以外,还可以根据自己的需要,选择性的输入需要限定的时间、价格等信息,如下图所示:

图10 高级查询

当用户在高级查询页面提交查询后,首先测试是否有从起点城市到达终点城市的交通路线,其SQL语句与直达查询相同。当查询到交通路线时,进行需要返回的相关信息查询并显示;若没有,则返回“无班次到达”的结果。在此页面中,在测试路线的SQL语句是在直达查询的SQL语句的基础上,整合了页面提交的限定条件,并根据条件查询和输出结果。

城市查询

在主页面中,还有城市查询的功能,其主要功能是查询所有抵达该城市的交通路线的基本信息及该交通路线以后可以抵达的城市、另外还有城市简介。

在跳转到城市查询city.aspx页面后,后台程序会调用session变量中的城市名进行是否有交通路线连通的测试,其SQL语句为:

select * from jtgjxx where tid in ( select tid from bus where cityid=(select cityid from ctxx where cityname=@city))

若没有,则输出:“尚无该城市信息”;若有,则首先在ctxx.dbf中查询出该城市的简介,然后输出,最后查询交通路线的相关信息,依次输出。

路线查询

在主页面中,还有城市查询的功能,其主要功能是查询指定交通路线的信息,输出信息包括种类、班次、车型、频率、经过城市名、在该城市的出发时间以及抵达该城市的时间。

在路线查询line.aspx中,其功能比较简单,多数与city.aspx的功能相似,只是查询的数据表和输出内容差异,故在此不多做介绍了。

后台管理模块功能设计


在需要对系统进行后台管理时,首先需要进行管理员身份登陆,其页面如下:

图11 管理员登陆

在登陆页面login.aspx中,登陆首先触发后台程序,在users.dbf中查询对应loginID的密码,然后将用户输入的密码用MD5加密后,与之对面,相同则通过登陆,将相关信息保存到session变量中,以便通过以后页面的验证,然后跳转到admin.aspx页面,否则登陆失败。


登陆以后,系统进入admin.aspx页面,界面如下:

图12 管理主界面

如上所示,admin.aspx是一个由3个页面所组成个框架,顶部为admin_top.aspx,主要显示当前系统时间和登陆ID;左侧为admin_left.aspx,全部由超连接组成,为跳转到其他功能页面所准备;右下方最大的为main.aspx,用于提醒管理员未添加完整的信息,也是框架中用来显示其他功能页面的区域。

在所有的后台页面中,后台程序都会先判断session中是否含有登陆信息,若没有则跳转到login.aspx。

在左侧的注销功能中,首先跳转到cancellogin.aspx页面,该页面的后台程序将清空session中与登陆有关的所有变量,然后跳转到login.aspx页面。

管理员信息管理

管理员信息管理由修改个人资料和管理员管理组成。而管理员管理需要初始管理员身份,一般管理员无法对其操作。

修改个人资料

进入修改个人资料chggrzl.aspx页面,首先利用session变量中的登陆信息查询users.dbf表,再用dataset对象将登陆管理员的相关信息输出,然后利用文本框录入信息对其进行修改。

管理员管理


在管理员管理glygl.aspx页面中,后台程序除了判断登陆条件以外,还指定了登陆ID必须为admin,且所有的函数都含有此判断,其目的是防止一般管理员越权操作。管理员管理界面如下:

图13 管理员管理界面

在此页面中,首先是调用datagrid控件输出所有管理员信息,并用其控件的编辑功能对其需要的项目进行修改,而密码在修改后会通过MD5加密后再存入数据库。下方有添加和删除管理员的项目。

交通信息修改功能

交通信息的修改总共包括3个方面:添加、修改和删除交通信息。

添加交通信息

添加交通信息功能由于需要录入的信息比较多,所以分为了4个页面来共同完成,首先是录入交通工具基本信息页面addjtxx.aspx,其功能是将交通工具的基本信息,如种类、班次、车型、频率、经过城市数存放到session变量中。然后跳转到添加交通关系页面addjtgx.aspx。在addjtgx.aspx页面中,首先将已存入session变量中的交通信息显示出来,以便让管理员验证是否正确,然后利用for循环从1到session(经过城市数)录入所有城市的交通关系信息,包括该城市的出发时间和到达时间,并将其保存到session变量中。

当for循环结束后,页面跳转至添加价格信息addrate1.aspx页面,进行价格信息的添加,也是利用for循环,将所有城市到其他城市的价格信息写入session变量中。界面如下:

图14 价格信息录入界面

For循环结束后,跳转到录入的最后一个步骤,将所有写入session变量中的相关信息录入数据库。该功能在addjtinfo.aspx页面中执行。首先仍然是输出所有session变量中的相关信息,要求管理员对录入的信息进行确认,然后将所有session变量中保存的交通信息录入数据库相关表项,而对于城市名,bus.dbf中使用的是城市ID,所以在录入前会有一个转换,当转换时不能获得城市ID时,后台会将查询不到城市ID的城市名自动添加到ctxx.dbf中,然后再查询其城市ID。有关查询城市ID的SQL代码如下:

//如果该城市在ctxx表中则执行

if exists (select cityid from ctxx where cityname=@cityname)

//查询城市ID

select cityid from ctxx where cityname=@cityname

//否则先填加该城市,再查询城市ID

else begin insert ctxx(cityname) values(@cityname) select cityid from ctxx where cityname=@cityname end

Addjtinfo.aspx界面如下:

图15 交通信息提交界面

修改交通信息

将现有的交通信息做调整,由chgjtxx.aspx功能页面完成。在此页面中,除了提供输入班次的文本框以外,还为了方便添加和修改路线城市,特意添加了城市名与城市ID互换查询功能,另外还有添加城市的功能。在添加城市时,系统会自动在ctxx.dbf中查询该城市的ID,然后录入数据库,若没有,则自动将该城市添加至ctxx.dbf中,然后查询其ID。

当输入了班次点击提交后,后台将分别使用datagird控件显示交通工具的基本信息,使用datalist控件显示交通路线的相关信息。其中,datalist控件提供了修改和删除功能,而datagird则只提供修改功能,因此,在这里不能删除交通信息。

删除交通信息

删除交通信息的功能由deljtxx.aspx功能页面完成。此页面也是提供一个文本框来录入需要删除的交通班次,不同的是提供了2个按钮,一个是查询,一个是删除。在删除之前,通常都会提醒管理员先查询输入班次的交通信息,以免因操作失误而错删交通信息。当管理员提交了删除以后,后台会根据输入的班次首先查询到该班次的TID,然后在bus.dbf中删除所有与该TID有关的路线信息,然后再在jtgjxx.dbf中删除该班次的基本信息。这样,就不会有冗余信息。

城市信息修改功能

由于城市的添加是在添加、修改交通信息时出现新城市自动添加的,所以在此功能模块中不再提供添加城市的功能,这样既优化了系统功能,又避免了无效信息的录入。因此,城市信息的修改由修改城市信息和删除城市2个功能组成。

在城市修改页面chgctxx.aspx中,后台使用datagird控件显示所有城市的城市名、城市ID和城市介绍,并提供其修改,但因为城市ID涉及到交通关系,而一般的外界因素不影响城市ID的变动。因此城市ID将被设置为只读。

在页面中另外提供了文本框,供城市的快速查询和删除。当使用查询时,datagird控件的数据源将被更改,显示的将只有由文本框提供的城市名的城市信息,以便查询和修改。当使用删除时,后台首先会利用该城市ID在交通关系表bus.dbf中查询,若该城市ID仍然出现在其中,则表明该城市仍然在交通网络中,一旦删除,将影响整个交通关系网络的正常运行。所以系统不支持此类删除,只有当城市不在交通关系网络中时,系统才允许删除城市。而不在交通关系网络中的城市,在管理员登陆时,系统会在main.aspx中给出提示信息,由于自动添加城市时不能添加城市介绍信息,因此一并给出提示信息还有未添加城市介绍的城市。

删除城市函数部分代码如下:

sub delct(sender as object,e as eventargs)

    dim conn as new sqlconnection()

    dim ds as new dataset()

    conn.connectionstring="data source=localhost;initial catalog=jtxx"

    conn.open()

    dim sql as string

    sql="select cityname from ctxx where NOT EXISTS (SELECT * FROM bus WHERE ctxx.cityid = bus.cityid) and cityname=@cityname"

    dim cmd2 as new sqlcommand(sql,conn)

    cmd2.parameters.add(new sqlparameter("@cityname",sqldbtype.varchar,40))

    cmd2.parameters("@cityname").value=city.text

    dim reader1 as  sqldatareader=cmd2.executereader() 

    if not reader1.read() then

    reader1.close

    Response.Write("<script for=window event=onload>window.alert('该城市还有交通工具到达,不能删除!');</" + "script>")

    else

    reader1.close

    dim sql1 as string

    sql1="delete from ctxx where cityname=@cityname"

    dim cmd1 as new sqlcommand(sql1,conn)

    cmd1.parameters.add(new sqlparameter("@cityname",sqldbtype.varchar,40))

    cmd1.parameters("@cityname").value=city.text

    cmd1.executenonquery()

    Response.Write("<script for=window event=onload>window.alert('成功删除该城市!');</" + "script>")

    end if

    conn.close

    bindgrid()

end sub

软件测试

模块编程完结之后,编写测试文档,对界面外观和功能等进行检测。首先针对一个模块测试,由于有部分参数是需要从其它模块传递过来的,因此,先要把需要传递的参数赋予固定的值,然后才继续后续步骤。模块测试时,检验模块每个功能是否都能正常使用,包括界面的按钮、线条、表格等的形状、大小、颜色是否符合规范;还有检测程序内部的主执行通路是否都能按预定要求正常工作,能按正确输出。测试过程中,发现BUG时及时修正。

模块测试完后,先把在模块测试时固定了的需要与其它模块进行参数传递的接口改正过来,连接好各模块之间的接口,把各个模块整合成一个系统,整合过程中可能会出现很多问题,因此,还需要集成测试。即在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题,测试每个功能是否都能正常工作。这是一个“测试——修改——再测试——再修改”的过程,直到整个系统能正常运行,所有功能都能正常实现。

在测试过程中,出现过一些不符合标准和达不到功能要求的情况,经过修改及以后的调试,现已能够完成正常的功能。

由于经验欠缺或其它某些原因,本次完成的软件不可能是完美无缺的。测试只能尽量避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度,减少错误的引入,但是不可能完全杜绝软件中的错误。经过测试,本模块基本能符合要求,也能实现各功能。

结    论

本次毕业设计是以ASP.net和SQL Server2000为基础,开发的一套基于B/S模式的交通信息网上查询系统。本次设计完成了系统的基本功能,能够通过本系统实现对交通信息的普通查询、转乘查询和条件查询,使用户能够随时方便的进行有效的交通信息查询;完成了管理员对交通信息的管理功能,让系统信息能够及时的得到更新;同时还设计了初始管理员对管理员身份的一个管理,让系统的安全性得到大大的提高。本系统操作简单,性能良好,能够完成交通信息查询的基本工作。

本次毕业设计由于时间和能力有限,系统功能上不够完善,查询时没能用视图来优化查询速度也是不完善的因素之一。在以后的开发过程中,可根据具体需要扩展系统功能,使系统更加实用、更加完善。

参考文献

[1] 吉根林.ASP.NET程序设计教材[M].北京:电子工业出版社,2005。

[2] 陈湘.ASP .NET与网站开发编程实战[M].北京:清华大学出版社,2003。

[3] 王易.ASP.NET网站设计实例通[M].北京:清华大学出版社,2003。

[4] 陈惠珍.ASP.NET程序设计[M].北京:中国铁道出版社,2003。

[5] 方睿.网络数据库原理及应用[M].成都:四川大学出版社,2005。

[6] 郑建峰,董国平.SQL SERVER 开发答疑[M].北京:人民邮电出版社,2005。

[7] 余金山,林慧.SQL Server 2000/2005数据库开发实例入门与提高[M].北京:电子工业出版社,2005。

网址:毕业设计:交通信息网上查询系统的设计与实现(源代码+论文+开题报告) https://www.yuejiaxmz.com/news/view/797735

相关内容

【开题报告】基于Springboot+vue家教信息系统的设计与实现(程序+源码+论文) 计算机毕业设计
Java计算机毕业设计校园旧物交易系统设计与实现(开题报告+源码+论文)
springboot家教信息系统的设计与实现源码毕设+论文
Java计算机毕业设计衣橱系统的设计与实现(开题报告+源码+论文)
Java计算机毕业设计基于的二手图书交易系统设计与实现(开题报告+源码+论文)
Java计算机毕业设计公益旧物捐赠系统的设计与实现(开题报告+源码+论文)
【开题报告】基于Springboot+vue网上二手书销售系统(程序+源码+论文) 计算机毕业设计
【开题报告】基于Springboot+vue智慧社区信息服务系统(程序+源码+论文) 计算机毕业设计
Java计算机毕业设计基于的高校二手书买卖系统的设计与实现(开题报告+源码+论文)
【开题报告】基于Springboot+vue校园旧物交易系统(程序+源码+论文) 计算机毕业设计

随便看看