公交查询系统分析报告.docx
《公交查询系统分析报告.docx》由会员分享,可在线阅读,更多相关《公交查询系统分析报告.docx(23页珍藏版)》请在冰豆网上搜索。
公交查询系统分析报告
西安市公交查询系统
学生姓名:
学号:
专业:
计算机科学与技术
班级:
1.引言
1.1设计目标
在网络环境的支撑下建立城市公交信息查询系统,实现管理者对车辆信息、站点信息、线路信息、公交新闻、用户建议等进行管理的能力,方便管理者在后台对公交运营情况的掌握和管理,做出未来发展的决策;为用户提供实时更新的公交信息,可以让用户迅速了解准确的公交动态;为用户提供车次查询、站点查询、站站查询三种查询模式,利于用户选择最优的乘车路线及方案,方便用户出行,节约乘车时间。
1.2采取的策略
1.在软件工程生命周期法的大框架下,结合原型法和瀑布法进行城市公交查询系统软件的开发。
2.使用UML建模工具RationalRose进行系统的详细设计,既可以保证设计工作的规范性,又可以提高详细设计工作的效率。
3.采用面象对象的程序设计方法,确保系统的可靠性和以维护性。
4.严格的模块测试和集成测试,为系统的正确性提供保证。
1.3设计依据
1.系统可行性分析报告
2.用户需求分析规格说明书
1.4参考资料
《信息系统分析与设计(第三版)》 王晓敏、邝孔武编著 清华大学出版社
该公交查询系统要管理的信息是很庞大的,要同时开发出全部的系统是不现实的,所以可按照公交管理部门的业务需求以及用户的使用需求将系统划分为两个大的子系统,通过良好的设计把各个子系统集成为一个整体。
同样的,在各个子系统中仍然可以做进一步细分,以使开发工作更容易展开,并能够随时监视用户的需求变更等情况。
下图为公交信息查询的类图。
公交查询系统分为公交信息查询和后台管理两个子系统。
分析则有主界面类与登陆界面类之间是关联关系,而查询界面、后台管理界面、会员权限界面、会员注册界面和密码找回界面都是主界面的一部分,所以它们和主界面之间是组合关系。
会员信息管理界面与提意见界面与会员权限界面是组合关系,它们都依赖于会员进行操作。
会员与游客是继承的关系,会员权限在游客查询权限的基础上有所增加。
会员可以修改会员信息和提意见,他们都依赖于会员进行操作,会员表和意见表都是通过修改会员信息和提意见两个接口类实现的,所以他们是实现关系。
会员继承成了游客的查询权限,其中,车次查询、站点查询、线路查询之间有很多相同的操作,于是将它们抽象出来形成一个抽象类--公交信息查询。
车次表、站点表和线路表通过车次查询、站点查询和线路查询三个接口实现。
公交信息管理界面和消息管理界面与后台管理界面是组合关系,他们都依赖于管理员进行操作。
公交信息查询离不开后台管理,所以它们之间是依赖关系。
公交信息管理和消息管理之间有很多相同的操作,于是将它们抽象出来构成一个抽象类--后台管理。
采用“包”的分组形式将公交查询系统分解成公交信息查询和后台管理两个“子系统”组成的层次结构,可以将复杂问题简单化,以简洁、清晰地体系结构描述整个系统。
分析可知系统中的主要实体类为:
游客、会员和管理员。
主要辅助类为:
车次查询、站点查询、线路查询,这几个类可以抽象出父类“查询”。
公交信息管理和消息管理这两个类可以抽象出父类“后台管理”。
分析可知用户界面类为:
主界面、登录界面、查询界面、注册会员界面、密码找回界面、会员权限操作界面、后台管理界面。
公交查询系统主要参与者
公交查询划分系统
公交查询主要功能
后台管理操作功能
公交查询系统的系统界面类
公交查询系统的各子系统在空间上是分布在不同的地点,在不同的节点上运行系统不同的部分。
合理的物理结构设计有助于更好的实现系统的功能。
物理结构设计可参见构件图建模和部署图建模部分。
(1)构件图
构件图提供当前模型的物理视图,对系统的静态实现视图建模。
构件图显示一个系统物理设计时,构件所映射的类和对象的配置。
公交查询子系统的类:
1、游客类
2、会员类
3、管理员类
4、角色类
5、会员信息类
6、消息信息类
7、线路信息类
8、站点信息类
9、公交信息类
10、公交查询用户界面类
11、公交查询子系统类
类的关系:
①角色类是游客类、会员类和管理员类的基类,存在从派生类到基类的依赖关系。
②公交查询用户界面类要使用到会员信息类、消息信息类、线路信息类、站点信息类和公交信息类,公交查询用户界面类依赖会员信息类、消息信息类、线路信息类、站点信息类和公交信息类。
③公交信息类是线路信息类和站点信息类的基类,所以线路信息类和站点信息类依赖公交信息类。
④主程序类要依赖公交查询用户界面、管理员类。
公交查询子系统构件图
(2)部署图
公交查询系统中的节点:
1、数据库服务器
2、公交信息查询:
驻留的构件是公交查询子系统
3、后台管理:
驻留公交管理子系统
4、2台PC机
节点间的连接:
1、PC机1通过ETHERNET与公交信息查询节点连接。
2、PC机2通过ETHERNET与后台管理节点连接。
3、公交信息查询节点和后台管理节点都是通过Ethernet方式与数据库服务器连接。
4、公交信息查询节点和后台管理节点通过TCP/IP方式连接。
公交查询系统部署图
1.系统总体结构设计
公交查询系统有两个主要组成部分,一是面向用户的公交信息查询子系统,一是面向管理人员的对整个页面信息进行维护的后台管理—公交信息管理子系统。
城市公交查询系统的功能模块结构分为查询模块和后台管理模块。
用户可以按线路查询、站点查询和起点—终点查询三种查询方式,使用户快速便捷的掌握公交行驶的路线信息、公交经过站点的信息、以及一次转换乘公交的乘车方法,方便用户出行。
而在后台管理模块中,系统管理员可以实现对公交信息、公交线路、发车时间表以及公交新闻、最新动态的新增修改和删除操作,方便管理员准确的更改信息,与实际公交线路或信息相符,方便人们查询公交信息。
2.系统功能模块设计
公交信息查询子系统包含游客类、会员类、线路类、站点类、路线类。
1)游客类
操作:
查询车次、查询站点、查询线路、注册会员。
游客登录系统查询公交信息界面中,具体操作过程描述如下:
(1)游客进入公交信息查询界面,系统提示用户输入需要查询的内容;
(2)游客输入查询内容提交系统后,验证其输入内容是否存在和正确;
(3)若正确,则公交信息查询界面反馈正确的查询结果;若错误,系统提示输入错误或查询内容不存在。
游客登录注册会员界面注册会员,具体活动过程描述如下:
(1)游客进入注册会员界面,系统提示用户输入需要填写的内容;
(2)游客填写身份信息内容提交系统后,验证其输入内容格式是否正确;
(3)若正确,则注册会员界面提示注册成功;若错误,系统提示输入填写内容的格式错误,需要重新填写。
2)会员类属性:
会员ID、会员登陆姓名、会员登录密码
操作:
查询公交信息、修改信息、提建议。
在会员验证身份成功后,进入会员权限操作界面中,具体活动过程描述如下:
(1)会员进入会员权限操作界面,可以选择会员信息管理或提出意见选项;
(2)若会员选择会员信息管理,则在其下方显示会员信息,会员可以输入要修改的内容并提交系统;若会员选择提出意见,则在其下方会显示建议框,会员可以输入意见内容并提交;
(3)若会员信息修改的内容符合要求,则系统提示修改成功,或修改内容不符合要求,则系统提示填写内容格式错误;若会员填写的意见标题、内容不为空,则系统提示提交成功,若填写内容有一项为空,则系统提示输入内容不能为空。
3)站点类属性:
站点ID、站点名称、线路ID。
操作:
站点查询、修改和删除。
4)线路类属性:
线路ID、公交车次、站点名称、站点序列。
操作:
线路查询、修改和删除。
下图为公交车站点查询中的一次换乘模块查询模块。
一次换乘功能:
用户在客户端界面输入起点站和终点站,系统判断输入是否为空,输入为空则重新输入,若不为空则判断输入站点是否相同,相同则返回重新输入,否则继续判断站点是否存在,不存在则返回重新输入,否则系统查找经过起点站的所有线路和经过终点站的所有线路并判断两线路是否相等、是否存在交点,相等或存在交点则记录信息并计算最短站点数得到换乘路线并按照默认优先顺序显示于客户端界面。
公交查询一次换乘功能模块图
用户可以根据起点站点和终点站点进行线路查询,也可以根据所在站点查询经过该站点的所有路线信息和车次信息,方便用户确定自己的位置以及如何选择车次到达目的地,如下图分别为站站查询和线路查询功能模块分析图。
站点查询:
用户在客户端界面输入站点名,系统判断输入是否为空,输入为空则重新输入,若不为空则判断输入站点是否存在,不存在则返回重新输入,否则系统查找经过该站点的所有线路并按照默认优先顺序显示于客户端界面。
线路查询:
用户在客户端界面输入线路名,系统判断输入是否为空,输入为空则重新输入,若不为空则判断输入线路是否存在,不存在则返回重新输入,否则系统查找该线路所经过的站点并按照默认优先顺序显示于客户端界面。
站点查询流程图
线路查询流程图
公交换乘算法的实现:
在SQLServer2008数据库中建立三个基本表
1.站名表stop(stop_id,stop_name)
2.线路表line(line_id,line_name)
3.路线站点表linestops(line_id,stop_id.seq)此处的seq指某站点在某线路中的顺序。
1、直达线路
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2。
然后查询
selectline_idfrom
(selectline_idfromlinestopswherestop_id=id1)A,
(selectline_idfromlinestopswherestop_id=id2)B
whereA.line_id=B.line_id
即得到可直达的线路列表
2、一次换乘
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2。
然后搜寻两个站点通过直达方式各自能够到达的站点集合,最后他们的交集就是我们所需要的换乘站点。
selectstop_idfrom
(
selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id1)
)A,
(
selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id1)
)B
whereA.stop_id=B.stop_id
得到换乘站(可能有多个或0个)后,剩下的就是显示能够到达换乘站的两边线路,这通过前面的直达查询即可。
3、二次换乘
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2
算法的中心思想是:
站点1能够通过直达到达的所有站点集合A,站点2能够通过直达到达的所有站点集合B,A和B之间有直达的线路。
一步一步来:
站点1能够通过直达到达的所有站点集合A:
selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id1)
站点2能够通过直达到达的所有站点集合B:
selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id2)
而直达的查询是
selectline_idfrom
(selectline_idfromlinestopswherestop_id=id1)C,
(selectline_idfromlinestopswherestop_id=id2)D
whereC.line_id=D.line_id
我们把=id1和=id2换成in(select....)A和in(select...)B
这样最后我们的查询是
selectline_idfrom
(selectdistinctline_idfromlinestopswherestop_idin【A】)C,(selectdistinctline_idfromlinestopswherestop_idin【B】)DwhereC.line_id=D.line_id
其中【A】是
(selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id1))
其中【B】是
(selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id2))
这样子我们找到了作为中间换乘的线路(可能有多条或者0条),对列举的的每一条假设命名为X线,下一步就是找出可以从站点1到达X任意一个站点的直达线路、和可以从站点2到达X任意一个站点的直达线路即可。
那么与前面的算法相似,我们在站点1所有能够到达的站点中去寻找和线路X相交的站点,然后再去找这两个点的线路
selectstop_idfrom
(selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_id=id1))A,
(selectstop_idfromlinestopswhereline_id=X)B
whereA.stop_id=B.stop_id
找到站点了,下面就是根据已经解决的直达查询找线路了。
站点2类似。
以上的算法有一个优点,全部是sql完成搜寻,所以asp代码只需几行循环就可以实现公交查询功能。
公交信息管理子系统
1.管理员类属性:
登陆ID、登陆姓名、登录密码。
操作:
添加车次线路信息、修改车次信息、删除车次站点信息、发布公交新闻、删除公交新闻、查看意见、删除意见。
管理员登录管理权限界面,可以实现如下操作过程:
(1)管理员进入后台管理登陆界面,系统提示用户输入用户名和密码;
(2)管理员输入用户名和密码提交系统后,系统查询其输入的用户名是否存在并验证密码是否与用户名匹配;
(3)若正确,则管理员登陆成功并自动跳转至后台管理界面;若错误,系统提示输入的身份信息有误,需要重新填写登录。
在管理员验证身份成功后,进入后台管理界面中,可以实现如下操作过程:
(1)管理员进入后台管理界面,可以选择更新车辆信息或消息管理选项;
(2)若管理员选择消息管理,则在其下方会显示消息信息,管理员可以查看或更新消息内容并提交;
(3)若公交信息需要更新的内容符合要求,则系统提示修改成功,或修改内容不符合要求,则系统提示填写内容错误;若管理员更新的消息内容正确,则系统提示提交成功,若更新的消息内容错误,则系统提示输入内容错误。
数据库系统通过对信息的分类和概括,建立抽象的概念数据模型。
明确各实体及其属性、实体间的联系以及对信息的制约条件等在数据库里给出所需信息的局部视图。
再将前面得到的多个用户的局部视图集成为一个全局视图。
数据库系统基本要求:
①能够保证数据的独立性。
数据和程序相互独立有利于加快软件开发速度,节省开发费用。
②冗余数据少,数据共享程度高。
④能够确保系统运行可靠,出现故障时能迅速排除;能够保护数据不受非受权者访问或破坏;能够防止错误数据的产生,一旦产生也能及时发现。
⑤有重新组织数据的能力,能改变数据的存储结构或数据存储位置,以适应用户操作特性的变化,改善由于频繁插入、删除操作造成的数据组织零乱和时空性能变坏的状况。
⑥具有可修改性和可扩充性。
⑦能够充分描述数据间的内在联系。
(1)数据库概念结构设计
通过对公交查询过程的内容和数据流图分析,设计如下面的数据项和数据结构。
①管理员表(登陆ID,登录姓名,登录密码)
②站名表(站名编号,站名)
③车辆线路编号表(车次,车线类型)
④线路表(线路编号,车次,站名,次序)
⑤车辆表(车辆编号,车次,车辆类型,服务类型,票价,IC卡类型,运行区间)
⑥冬季发车时间表(编号,车次,首班时间,末班时间)
⑦夏季发车时间表(编号,车次,首班时间,末班时间)
(2)数据库物理结构设计
数据库的物理结构设计是对于给定的逻辑数据模型,选取一个最合适应用环
境的物理结构。
数据库的物理结构指的是数据库在物理设备上的存储结构与存取方法。
城市公交管理系统的各子系统在空间上是分布不同的的地点,在不同的节点上运行系统不同的部分。
合理的物理结构设计有助于更好地实现系统的功能。
基于B/S的城市公交查询系统系统的数据库表结构如下表所示。
管理员表:
存放登陆系统所需要的用户名和密码,登录后台时需要访问此表。
表1管理员表
字段名
数据类型
长度
是否为空
是否为主键
说明
LoginId
int
4
否
是
登陆ID
LoginPwd
varchar
50
否
否
登陆密码
Loginname
varchar
50
否
否
登陆姓名
会员表:
存放会员登录系统所需要的用户名和密码,会员若忘记密码可回答设置的会员问题找回密码,会员登录需访问此表。
表2会员表
字段名
数据类型
长度
是否为空
是否为主键
说明
Loginname
varchar
50
否
是
会员姓名
LoginPwd
varchar
50
否
否
登陆密码
Loginquestion
varchar
50
否
否
会员问题
Loginanswer
varchar
50
否
否
会员答案
夏季发车时刻表:
存放夏季发车的时间,修改夏季发车时间需要访问此表。
表3夏季发车时刻表
字段名
数据类型
长度
是否为空
是否为主键
说明
编号
int
4
否
是
编号
车次
int
4
否
否
车次
首班时间
varchar
50
否
否
首班时间
末班时间
varchar
50
否
否
末班时间
冬季发车时刻表:
存放冬季发车的时间,修改冬季发车时间需要访问此表。
表4冬季发车时刻表
字段名
数据类型
长度
是否为空
是否为主键
说明
编号
int
4
否
是
编号
车次
int
4
否
否
车次
首班时间
varchar
50
否
否
首班时间
末班时间
varchar
50
否
否
末班时间
车辆表:
存放车辆的相关信息,修改车辆等相关信息需要访问此表。
表5车辆表
字段名
数据类型
长度
是否为空
是否为主键
说明
车辆编号
int
4
否
是
车辆编号
车次
int
4
否
是
车次
车辆类型
varchar
50
否
否
车辆类型
服务类型
varchar
50
否
否
服务类型
票价
varchar
50
否
否
票价
IC卡类型
varchar
50
否
否
IC卡类型
运行区间
varchar
50
否
否
运行区间
站名表:
存放站名等数据,修改站名需要访问此表。
表6站名表
字段名
数据类型
长度
是否为空
是否为主键
说明
站名编号
int
4
否
是
站名编号
站名
varchar
50
否
否
站名
车辆线路编号表:
存放线路编号等数据,修改车辆线路编号将要访问此表。
表7车辆线路编号表
字段名
数据类型
长度
是否为空
是否为主键
说明
车次
int
4
否
是
车次
车线类型
varchar
50
否
否
车线类型
5.网络通信设计
5.1设计要求
公交查询系统的设计,主要考虑下列基本原则;
1)保证网络的先进性,同时要兼顾网络的经济性和可行性。
2)保证网络的开放性和可互连性。
3)保证网络系统的可靠性和安全性。
4)保证网络的可扩展性和可升级性。
5)充分考虑和利用现有网络设施,降低网络建设成本。
基于上述基本原则,考虑到企业已经建立了覆盖各部门的主干局域网,所以综合信息管理系统网络只需要对现有网络进行必要的补充。
网络扩充设计应充分考虑其特点,并且要兼顾到网络建造费用、网络运行费用、网络通信速度、信息传输可靠性等因素。
5.2网络设计方案
为了找出比较好的实现方案,要对各种可能的组网方案的优点及存在的问题做分析比较,并与企管部的技术人员进行了讨论交流,提出了一套可行的实现方案。
6.信息编码设计
公交查询系统涉及的信息相当庞杂,使用信息编码可以方便各种信息的分类和使用,有利于系统的开发和日后的升级维护。
以下列出几个主要的信息分类编码:
(1)车辆编号编码
a:
代码结构:
xxxx
识别号
b:
代码长度:
4
c:
代码类型:
整型
d:
应用范围:
查询子系统、管理子系统
(2)车次编码
a:
代码结构:
xxxx
序列号
b:
代码长度:
4
c:
代码类型:
整型
d:
应用范围:
查询子系统、管理子系统
(3)登录人员编码
a:
代码结构:
xxxx
ID
b:
代码长度:
4
c:
代码类型:
整型
d:
应用范围:
管理子系统
(4)公交线路编码
a:
代码结构:
采用国标码
b:
应用范围:
查询子系统、管理子系统
7.关键技术
7.1提高查询速度
(1)为了能提高非常大的表的查询速度,采用分区表及索引技术,该技术将大表分成若干较小的较易管理的子分区。
这样对该表进行查询时,并不是访问具有同样的字段名,约束定义及其他属性,即所有的子分区具有相同的逻辑分区,而实际上位于不同的物理分区(甚至可以位于不同的表空间)。
采用分区表技术并不增加最终用户的负担,而且用户可以完全透明地访问数据。
其优点是不但可大大加快查询速度,而且当某一分区发生故障时,并不影响其他分区的操作,便于各分区的独立备份和恢复,另外可根据情况,适当将各分区放在不同硬盘上,从而可平衡I/O负数。
(2)使用MTS技术
为了提高整个系统的响应速度,我们使用了MTS(MicrosoftTransactionServer)技术。
MTS可有效地利用计算机资源,特别是系统所需使用的三种系统资源(线程、对象、ODBC连接)都提供了缓冲池(Pooling),而这三种系统资源的合理调用直接影响系统的执行效能。
MTS能建立一个所有用户能分享的对象实例库来避免系统资源的浪费。
另外MTS将从客户端移走数据访问而将其转移到一个单独的商务对象中,以便其他支持DC