基于web的城市公交查询系统设计与实现Word格式.docx
《基于web的城市公交查询系统设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《基于web的城市公交查询系统设计与实现Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
本论文详细介绍了各模块的设计与实现。
关键词:
公交,ASP.NET,查询,数据库
Abstract:
Withtheadvancementoftheinformationage,allindustriesininformationmanagement.Urbanpublictransportqueriescanrelyoncomputertechnology,toprovidepassengerswithabetterservice,improveefficiency,reducethecostofpassengertravel.
ThedesignisbasedonMicrosoftSQLServer2005astheback-enddatabasedevelopmentasadevelopmentplatform,VisualStudio2008,thedevelopmentofurbanpublictransportquerysystembasedonASP.NET.Thesystemincludesthefollowingfunctionalblocks:
PassengersfrontandadministratorsAdmin.Thefrontdeskqueryincludes:
TransferInquirylineinquiry,sitefortheevaluationofthestatistics,thebackgroundmanagementmoduleaddedtothesite,linebytheadministratorlogin,delete,modify.Thispaperintroducesthedesignandimplementationofeachmodule.
Keywords:
BUS,ASP.NET,Inquiry,Database
1前言
1.1课题背景
交通是每个城市发展的标志,便捷通达的交通系统能合理有效的改善交通拥塞、能源紧张、噪声干扰、废气污染等一系列问题,推动城市的建设与进步。
当下城际轻轨、地铁最快捷便利,但是运营成本过高,只能在一些发达城市运行,老牌公交车则经久不衰,以其低成本高亲民度,健硕存在于各个级别的城市,服务着广大群众。
为了更好的了解城市的公交运行系统,方便人们的出行,开发了本系统。
该系统,有利于公交公司随时将公交最新信息发布到网上,乘客能够无门槛登录该系统查询公交信息。
系统分为前台和后台,前台能够供登录系统的用户访问,后台由公交公司管理人员进行维护。
该系统的核心功能为公交车信息的查询,查询分为站点换乘查询、公交站点查询、公交线路查询。
站点换乘查询是用户输入起止站点名称,查询出如何乘车到达,要求能够查询出所有直达车次与二次换乘可到达的车次;
公交站点查询是用户输入公交站点,查询出经过此站点的所有车次,并能够查看该车次详细信息;
公交线路查询是用户输入指定车次,查询出此车次的详细信息。
2系统的开发工具与环境
2.1ASP.NET简介
ASP.NET是基于通用语言的编译运行的程序,它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。
ASP.NET建立在.NETFramework的编程类之上,它提供了一个Web应用程序模型,并且包含使生成ASPWeb应用程序变得简单的控件集和结构。
ASP.NET包含封装公共HTML用户界面元素(如文本框和下拉菜单)的控件集。
但这些控件在Web服务器上运行,并以HTML的形式将它们的用户界面推送到浏览器。
在服务器上,这些控件公开一个面向对象的编程模型,为Web开发人员提供了面向对象的编程的丰富性。
ASP.NET还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。
另外,ASP.NET使用这些同样的概念使开发人员能够以服务的形式交付软件。
使用XMLWebservices功能,ASP.NET开发人员可以编写自己的业务逻辑并使用ASP.NET结构通过SOAP交付该服务。
VisualStudio2008是一套完整的开发工具,用于生成ASPWeb应用程序、XMLWebservices、桌面应用程序和移动应用程序。
VisualBasic2008、VisualC++.NET、VisualC#.NET和VisualJ#.NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。
另外,这些语言利用了.NETFramework的功能,此框架提供对简化ASPWeb应用程序和XMLWebservices开发的关键技术的访问。
2.2系统的开发要求
该公交查询系统对操作系统的要求如下:
硬件要求:
1.CPU:
最低IntelPentiumII500MHz
2.磁盘空间:
250MB(完全安装),155MB(快速安装)。
3.内存:
512MB(最好1GB以上)。
4.显示:
1024*768,256色。
软件要求:
1.操作系统:
Windows2000以上的操作系统。
2.开发平台:
VisualStudio2008,MicrosoftSQLServer2005。
3需求分析
3.1功能需求分析
本公交查询系统以淮安作为背景城市,其余城市可参照修改同样适用。
本系统不仅能给广大熟悉淮安路线的本地市民提供便利,更加能为其他来到淮安出差、旅游的朋友带来方便。
开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规范公交管理,提高服务质量,方便乘客查询。
本系统采用结构化设计的方法以实现系统总体功能,即将整个系统划分为各个功能模块,正确处理模块之间和模块内部的联系以及和数据库的联系,通过对各模块的设计和模块之间关系的安排;
来系统实现整个系统的功能。
前台主要有4个模块:
换乘查询、线路查询、站点查询、评价统计,后台管理模块则通过管理员登录后分别实现对站点、线路的添加、删除、修改。
前台主要向用户提供换乘查询、车次查询、站点查询等查询方式,具体实现如下功能:
1.换乘查询:
输入起始站名与终点站名,系统会输出所有的公交路线方案;
2.车次查询:
输入已知的车次,系统会输出该车次经过的所有站点名;
3.站点查询:
输入已知的站点名,系统会输出经过该站点的所有车次。
数据库会提供给用户全部的信息,用户可以根据自己的实际情况进行选择,另外,用户可以在系统左下角的评价栏投出自己宝贵的一票,系统将对结果进行统计分析,实现用户与公交公司的良好互动。
后台由管理员输入其指定账号与密码对数据库进行管理,实现站点的添加、删除、修
改,线路的添加、删除、修改。
系统模块如图3-1所示:
图3-1系统模块图
4设计准备
4.1功能模块划分
通过需求分析,可以确定该系统应完成的功能包括:
1.前台功能:
主要实现乘客对车辆信息的查询,包括站点间换乘查询、车次查询、站点查询;
其次通过评价统计来实现乘客与公交公司的互动。
2.后台功能:
主要实现公交公司管理员对车辆信息的维护,包括线路信息的添加、删除、修改和站点信息的添加、删除、修改。
4.2数据库设计
通过需求分析,本系统在概要设计阶段得到五个数据实体:
公交车次、公交站点、公交线路、管理员、评价。
这些实体的属性均按照用户需求中的输入输出数据设定,故应该根据这五个实体设计五种类型的数据库表:
公交车次表、公交站点表、不同车次线路表、管理员表、评价统计表。
4.2.1数据库概念结构设计
所谓概念结构设计,就是将需求分析得到的用户需求抽象为信息结构。
概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定,它是整个数据库的关键。
概念结构设计的特点:
1.能真实、充分地反映现实世界,是对现实世界的一个真实模型。
2.易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成果的关键。
3.易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
4.易于向关系、网状、层次等各种数据模型转换。
在系统设计的开始,首先应该考虑如何用数据模型来描述数据库的结构和语义,以对现实世界进行抽象。
“实体联系模型”(E-R模型)独立于计算机系统用的较为广泛,本系统也充分应用了它。
E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-R图来表示数据模型。
它更接近人都思维,容易理解;
与计算机无关,用户更容易接受,但它只是数据库设计的第一步。
E-R图是直观表示概念模型的工具,它有三个基本成分:
1.矩形框,表示实体类型(考虑问题的对象)。
2.菱形框,表示联系类型(实体间的联系)。
3.椭圆形框,表示实体的属性。
该系统实体和属性的定义如下:
管理员表E-R图(登录ID,登录姓名,登录密码)
图4-1管理员表E-R图
各站集合表E-R图(站名ID,站名)
图4-2各站集合表E-R图
各条线路表E-R图(站名ID,次序,站名)
图4-3各条线路表E-R图
各条线路集表E-R图(车辆ID,车次,始发站,末站,运行区间,线路描述,IC卡类型,票价,首班车时间,服务类型,末班车时间)
图4-4各条线路集表E-R图
评价表E-R图(评价程度,票数)
图4-5评价表E-R图
4.2.2数据库逻辑结构设计
本系统采用MicrosoftSQLServer2005数据库管理系统,该系统不仅能满足最大的数据处理系统和商业Web站点存储数据的需要,还能为个人或小企业提供易于使用的数据存储服务。
之所以使用MicrosoftSQLServer2005就是因为它是一个企业级的集成商业智能的全面的数据库平台,MicrosoftSQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使设计者可以构建和管理用于业务的高可用和高性能的数据应用程序。
本系统创建的SQL数据库名称为城市公交查询系统,并将数据文件和日志文件保存在APP_DATA文件夹中。
此数据库包含5类表,分别是管理员表、各站集合表、各条线路表、各条线路集合表、评价表。
(1)管理员表
管理员表存放管理员登录系统所需要的用户名和密码,管理员登录后台时需要访问此表。
表4-1管理员表
字段名
数据类型
长度
是否允许空
是否为主键
说明
AdminId
int
3
否
是
登录ID
AdminName
nchar(3)
20
登录姓名
AdminPassword
nchar(6)
登录密码
(2)各站集合表
各站点集合表存放所有站点名、编号及描述,此表中的站点是各条线路表中的站点的集合即所有线路中的站点。
表4-2各站集合表
SiteID
10
站点ID
SiteName
nchar(10)
站点名
SiteDescribe
nchar(50)
50
站点描述
(3)各条线路表
各条线路表是存放各线路信息的表。
表4-3各条线路表
SiteId
站名
cixu
线路中站点次序
(4)各条线路集合表
各条线路集合表是所有线路的集合表,存储了所有线路的ID和一些基本信息。
表4-4各条线路集合表
LineId
线路ID
LineName
线路名称
LineArea
线路区间
LinePrice
票价
LineStartPlace
始发站
LineEndPlace
末站
LineStartTime
早班车时间
LineEndTime
末班车时间
LineIC
bit
IC卡类型
LineDescribe
nchar(80)
80
线路描述
(5)评价表
评价表用于用户对本系统的评价统计,存储不同评价的票数,饼图统计时调用这张表。
表4-5评价表
评价程度
票数
5详细设计与实现
5.1关于数据库操作
在动态网站中,调用数据库中的数据是十分频繁的,为了数据库的安全性,本程序将所有数据库的操作封装到DBConnect类中并放于DBConnect.cs文件中。
开发人员在实现其他功能时,可以在此类中写函数然后调用,避免零散的重复的操作数据库。
本系统的数据库的连接代码如下:
publicstaticSqlConnectioncreateConnection()
{
SqlConnectioncon=newSqlConnection("
DataSource=SUNNANYUN;
InitialCatalog=Bus;
IntegratedSecurity=True"
);
returncon;
}
为了不反复的访问数据库,记录了一些基本信息,声明了以下成员变量:
privateintSiteCount;
//记录站点的总个数
privateintLineCount;
//记录线路的总个数
privateint[]line;
//保存每条线路
5.2功能实现
5.2.1主界面
任意乘客、用户都可以登录这个公交查询系统的主界面进行查询。
该界面简洁、方便,一目了然的可以进入三大主要查询模块、管理员登录模块、评价模块,为各类用户提供便利。
主界面见下图5-1:
图5-1主界面图
5.2.1站点查询
任意用户登录该公交查询网站均可进行站点查询。
用户需输入站点全称,点击查询按钮后,系统会在数据库中检测该站点是否存在,如果存在,将显示经过该站点所有的公交线路情况,如果不存在将提示该站点不存在。
该站点查询界面如图5-2所示:
图5-2站点查询图
该功能的实现,从textbox获取站点名称sitename,获取到sitename后,首先查询站点总表里是否存在该站点,若不存在,则count赋值为0,显示提示信息。
若存在站点,则遍历所有的线路表查找站点,若某路线存在该站点,则记录该线路,存于数组Line。
count用于统计经过该站点的线路的个数。
ref关键字使参数count按引用传递。
其效果是,当控制权传递回调用方法时,在方法中的count所做的任何更改都将反映在该变量中。
主要实现代码如下:
publicvoidGetSiteLine(string[]Line,stringsitename,refintcount)
{
SqlConnectioncn=createConnection();
cn.Open();
stringstr="
selectcount(*)fromsitewheresitename='
"
+sitename+"
'
;
SqlCommandcmd=newSqlCommand(str,cn);
if(Convert.ToInt32(cmd.ExecuteScalar().ToString())==0)
count=0;
cn.Close();
}
else
inti=0;
for(intj=0;
j<
LineCount;
j++)
cmd.CommandText="
selectcount(*)fromLine"
+line[j]+"
whereSiteName='
if(Convert.ToInt32(cmd.ExecuteScalar().ToString())>
0)
Line[i++]=line[j].ToString();
count=i;
5.2.2线路查询
任意用户登录该公交查询网站均可进行线路查询。
用户可以在下拉列表显示的所有线路中找到自己想查询的线路,点击查询,系统就会显示该线路去程、回程及一些相关信息。
该线路查询界面如图5-3所示:
图5-3线路查询图
该功能的实现,首先从dropdownlist获取线路名称linename,然后从线路集合表中获取该线路的信息存于数组sLineTotal中,并通过线路集合表LineID,获取该路线的所有站点,存于数组line中,count用于统计该线路所有站点的个数。
publicvoidGetLine(string[]sLineTotal,string[]line,stringlinename,refintcount)
select*fromlinetotalwherelinename='
+linename+"
SqlDataReaderreader=cmd.ExecuteReader();
if(reader.HasRows)//从linetotal中获取信息
if(reader.Read())
sLineTotal[0]=reader.GetValue(0).ToString().Trim();
sLineTotal[1]=reader.GetValue
(1).ToString().Trim();
sLineTotal[2]=reader.GetValue
(2).ToString().Trim();
sLineTotal[3]=reader.GetValue(3).ToString().Trim();
sLineTotal[4]=reader.GetValue(4).ToString().Trim();
sLineTotal[5]=reader.GetValue(5).ToString().Trim();
sLineTotal[6]=reader.GetValue(6).ToString().Trim();
sLineTotal[7]=reader.GetValue(7).ToString().Trim();
sLineTotal[8]=reader.GetValue(8).ToString().Trim();
sLineTotal[9]=reader.GetValue(9).ToString().Trim();
reader.Close();
selectsitenamefromLine"
+sLineTotal[0].ToString().Trim()+"
reader=cmd.ExecuteReader();
if(reader.HasRows)//从具体的公交线路中获取站点顺序信息
intn=0;
while(reader.Read())
line[n++]=reader.GetValue(0).ToString().Trim();
count=n;
5.2.3换乘查询
任意用户登录该公交查询网站均可进行换乘查询。
用户可输入出发站和到达站,系统会检测是否存在该站点,若存在则会检测这两个站点是否有直达车,如果没有则会进行一次换乘。
该换乘查询界面如图5-4所示:
图5-4换乘查询图
该功能首先从textbox里获取出发站点名StartSite和到达站点名EndSite,然后判断是否存在这两个站点,若不存在,则给出提示,否则,分别搜索包含StartSite、EndSite的路线存于临时数组StartSiteLineId和EndSiteLineId中。
分两种情况讨论,1.直达,遍历两条线路的所有组合,判断,如果存在路线相同的,则表示可直达。
2.需换乘一次,在遍历两条线路的所有组合的前提下,若经过StartSite的路线中有和经过EndSite的路线有相同的站点,则表示可换乘一次到达。
//count用于记录方案个数其中-1表示不存在StartSite站