综合实验报告.docx
《综合实验报告.docx》由会员分享,可在线阅读,更多相关《综合实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
综合实验报告
公交线路查询系统
论文
院系名称:
专业:
班级:
学号:
姓名:
其他组员:
指导老师:
日期:
2009——2010学年第二学期
摘要:
我国城市公交乘客信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,为了解决这种问题,加快发展城市公交信息化,设计一个城市公交查询系统是具有一定实际应用意义的。
在此背景下,我运用Delphi语言开发了一个城市公交查询系统。
本论文首先考虑了公交运营的实际情况和不同公交乘客的实际要求,分析了此系统应该具有的功能;其次对系统的主要功能模块进行了详细地描述,其中主要包括查询模块和管理更新模块,最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验和体会。
本系统采用简单灵活的Delphi语言,并结合简单灵活的SQL数据库,提供用户一个完全开放的查询平台。
通过这样的系统,我们可以做到信息的规范管理和快速查询,实现了公交信息管理的系统化、规范化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本。
一、需求分析
1.引言
为了节省出行人员的时间,同时避免资源的浪费,一个完善的公交线路查询系统是必不可少的。
设计的系统应实现各项工作在线完成,为乘客提供一个完全公开、开放、完善的管理平台,方便了乘客的出行,大大节省乘客的宝贵时间。
1.1编写目的
根据需求调研分析报告,定义系统功能和系统实现过程、方法,通过编写需求分析规格说明书,可以排除资源缺乏和交付时间的限制,及早发现将来开发过程的问题,避免大量的财力,人力,时间上的浪费,方便我们开发软件。
1.2背景
名称:
合肥公交线路查询系统
项目提出者:
孙全玲、李莹莹
任务开发人员:
07计算机李繁、杨慧慧、易善娣、朱建军
用户:
所有查询者
开发软件的单位:
安徽建筑工业学院
软硬件设施:
微型机、Delphi语言、SQL2000
1.3定义
开发(develop):
不是单纯指开发活动,还包括维护活动。
项目(project):
该词指的是向顾客或最终用户交付一个或多个产品的收管理的相关资源的集合。
这个资源集合有着明确的始点或终点,并且一般是按照某项计划运行。
这种计划通常会形成文件,并且说明要交付或实现的产品、所用的资源和经费、要做的工作和工资哦进度,一个项目可能有若干个项目组成。
项目开发计划(projectdevelopmentplan):
是一种把项目一定一过程与项目如何推进连接起来的方案。
产品生命周期(productlifecycle):
是产品从构思到不可再使用的持续时间。
1.4参考文献
《软件工程》——齐志昌谭庆平宁洪编著高等教育出版社
《数据库系统概论》——王珊萨师煊编著高等教育出版社
《公交线路乘车方案指导书》
《DELPHI7.0视频教程》
《DELPHI初步学习教程》
2.项目描述
2.1一般描述
该系统可以进行一些简单的公交线路查询,包括站点查询,路线查询,时间查询以及中转路线查询等等,为查询者提供了一个信息更新及时、界面友好、查询优化的公交查询系统。
2.2模块描述
公交查询系统应具备的基本模块及功能是:
1、公交线路的数据输入与维护:
线路的录入,修改,编辑功能;
2、公交线路的查询:
自动,快速,灵活的查询功能;
3、乘车方案查询:
起始站点线路查询,设定中转站点查询,最短路径查询功能。
2.3用户特征
本系统的最终用户为查询者,凡是不熟悉合肥路线的乘客,懂得基本的操作的均可使用,还包括一些系统管理者,进行信息更新等。
2.4运行环境
设备
a、具有奔腾133、512兆内存配置的微型机;
b、一般计算机外设,如:
鼠标、键盘打印机。
如要配置网络环境,还需网络连接设备。
支持软件
a、操作系统WIN95/ME/98/2000/XP等系列中文操作系统;OFFICE97及以上版本;
b、MicrosoftSOLSever2000和Delphi7.0。
2.5条件与限制
权限限制
系统部分采用最高级别的权限控制,采用基于数据库的安全认证,系统自带一个用户管理模块,可以方便的创建用户和授权。
对可以授予部分使用权的用户只能使用有那些基本的查询功能,而无权进行系统信息的修改和重置。
3.功能需求
以下是部分功能需求简介:
3.1登陆
系统需要安全性的保证,只有注册后才能使用该系统
3.2密码修改
用户可以根据需要,随意修改自己的登陆密码
3.3添加/删除用户
管理员可以根据用户的需要进行添加用户,同时对于不合规矩的用户,也可删除该用户
3.4数据录入
管理员可以及时更新库内信息,以便用户可以获得正确的信息,而不会因线路修改而导致错误的旅行,造成不必要的麻烦。
3.5线路查询
用户可以查询任何一辆公交车从始点到终点所经过的站点,同时还可查到其在一天中的起始时间与终止时间,以方便用户及时乘车。
3.6中转点查询
对于不能直接到达地点,系统还可通过设置中转点来实现。
3.7最短路径查询
为减少乘车时间,系统还提供了最短路径查询,方便乘客以最快的速度到达目的地,体现了时代的高速化。
4、外部接口需求
4.1用户界面
用户界面之间的链接直接用内部代码链接。
4.2硬件接口
需要标准打印机接口进行报表打印。
4.3软件接口
Windows标准接口。
4.4故障处理
当出现需要转乘问题是软件可能会出现无法识别或出错等问题,由于此系统最难处理的是转乘问题,因此在写算法是要谨慎,且需要合理分析转乘过程,需要用到的方法。
一般情况因运行本软件造成死机或蓝屏请检查电脑内存使用情况,或者重启电脑。
4.5其他专门要求
基于数据库的完整性、一致性要求,系统需要一定的保密性要求,管理员(DBA)可根据实际情况添加系统密码;对于用户,我们不需要用户有登陆用户名和用户密码。
还有就是,用户界面使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等都要做到。
5.软件非功能属性
5.1数据精度性
当然查找的越细,分析的方案越多,拥有的数据量越丰富越好。
最后,此数据为系统内部数据,所以要求不能有误差。
5.2时间特性
系统要求有即时性,马上能反应出查询结果,一般操作的响应时间应为1s-2s内。
更新处理时间:
2S内。
打印机的操作及数据导出应在可接受的时间内完成。
在这里规定的时间都是表示用户在使用此系统时能接受的反应时间,也就是系统从接受任务到输出结果的内部处理时间。
5.3灵活性
当要对系统进行添加数据或删除、更新等可以容易的对系统进行操作,并且不影响系统的正常运行,更不会有任何出错的现象。
所有的操作仅在一台PC机上便可完成,操作方便。
5.4适应性
此软件在广大用户的机器上使用,因此适应性要求都能适应即有相当好的可移植性。
5.5输人输出要求
输入输出数据类型为字符型,输入数值范围在4个数据字符之内。
系统的数据输出在45个字符串内,每个字符串的长度不超过50个字符,适用于各种字体的输入,由于时间的原因,我们将更多的是以汉字为主,当然,不能出现非法数据类型的字符。
二、系统设计
1、数据库结构设计
由于公交线路查询系统中所涉及的信息较多,它们之间的性质并不完全相同或者类似,势必造成信息冗余,但是为了系统提高查询速度和便利,可以牺牲存储空间,加快查询速度的方法。
表8-1公交线路表(line)
字段中文名
字段英文名
字段类型
字段长度
容许空
路线编号
line_id
int
4
路线名称
line_name
varchar
50
√
始发车
fristbus
varchar
50
√
末班车
lastbus
varchar
50
√
站点1
station1
varchar
50
√
站点2
station2
varchar
50
√
站点3
station3
varchar
50
√
……
……
varchar
50
√
……
……
varchar
50
√
……
……
varchar
50
√
站点45
station45
varchar
50
√
表8-2站点表(stop)
字段中文名
英文字段名
字段类型
长度
容许空
站点编号
stop_id
int
4
站点名称
stop_name
varchar
50
√
表8-3路线站点表(linestops)
字段中文名
英文字段名
字段类型
长度
容许空
路线编号
line_id
int
4
√
站点编号
stop_id
int
4
√
标记
ord
int
4
√
2、数据结构设计
1)通过程序将line表中的所有数据(站点)信息存放入一个一维数组中;
2)编写程序再将该数组中所有相同的数据删除,这样就有了站点(stop)表;
3)将line表中的每条线路的站点一个一个记录下来存放入一个三列的二维数组中,如(1,火车站,1)表示:
(线路编号:
1;站名:
火车站;线路所经站号:
1);
4)对二维数组的第二列值进行修改,参照stop表,将其字符全部换为stop_id。
3、算法设计
1)起始站点查询算法
第一步:
查询经过这两个站点的所有公交线路,找出含有相同的线路编号的线路信息。
第二步:
判断以上查询中是否有满足要求的记录,若有,则记录两站点在线路中的位置,判断是否满足行驶方向的要求,通过定义一个数组,将线路信息中的线路名称,起始和目的站点名称以及两站点之间的站点个数存入数组并输出。
若没有满足的记录,证明查询的站点之间不能直达,线路需要转乘。
第三步:
查询出两站点之间所有线路的站点交集(中转站点),将这些站点存放入一个一维数组中,查询从起始站点到达中转站点的所有公交线路,将线路信息中的线路名称,起始和中转站点名称以及两站点之间的站点个数存入一个二维数组;再查询从中转站点到达目的站点的所有公交线路,将线路信息中的线路名称,中转站点和目的站点名称以及两站点之间的站点个数存入另一个二维数组。
第四步:
判断两组路线之间是否有相同的站点,相同的站点即为中转站,将转乘信息输出。
2)指定中转站点查询算法:
第一步:
查询经过起始和中转站点的所有公交线路,将符合查询条件的线路信息中的线路名称,起始和中转站点名称以及两站点之间的站点个数存入一个二维数组。
第二步:
再查询从中转站点到达目的站点的所有公交线路,将线路信息中的线路名称,中转站点和目的站点名称以及两站点之间的站点个数存入另一个二维数组。
第三步:
判断两组路线之间是否有相同的站点,相同的站点即为中转站,将转乘信息输出。
3)最短路线查询算法
最短路线查询算法的思想是在起始点查询的算法的基础上,是对站点之间的个数加入了一段比较着站点个数代码,通过三个临时变量,用于记录所有线路中的最短路径和两站点信息在数组中的位置,最后通过临时变量记录下来的信息,输出数组中相应位置的信息。
4、开发平台选用
本系统基于集成软件开发平台(Delphi)及数据库管理系统软件(SQLServer)实现。
三、模块的实现
在此只对部分模块进行简要介绍,其余部分可参照组内其他成员报告。
具体情况如下所示:
1.系统功能简介模块
此模块是在Delphi开发平台上,用Botton、GroupBox、Label三个组建设计而成的,其中17个lable主要介绍了该系统的主要模块,以及各模块的使用范围。
利用botton来实现界面的返回,通过语句
procedureTxtgnjjfrm.Button1Click(Sender:
TObject);
begin
xtgnjjfrm.close;
end;
关闭当前界面,返回到前一个界面,即主界面。
2.添加/删除用户
此模块是由Botton、ComboBox、Edit、Lable、ADOQuery五种组建设计的,主要用来让管理员添加和删除用户,其中通过4个botton来实现添加、删除、取消和返回;通过3个edit来输入要修改的信息;通过combobox来选择用户类型;通过ADOQuery来链接数据库,添加即往库中写数据,删除则即将数据删除。
附:
取消时,即经Edit中的内容清空
3.时间查询
此模块可以查询某个时间内通过某个站点的所有公交车,以及各个公交车所有信息,即起始时间、终止时间和途经过的所有站点。
其是由able、Button、ADOQuery、GroupBoxLabel、ComboBox、DBGrid等组建构成的。
4.中转站点查询
其组建情况由上图易知,可以查询不能直达的路线,部分算法如下:
查询两站点之间不能直达的情况下,可选择的中转站点。
selectstop_namefromstopwherestop_idin(
selectA.stop_idfrom
(selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_idin
(selectstop_idasid1fromstopwherestop_name='edit1.text')))A,
(selectdistinctstop_idfromlinestopswhereline_idin
(selectline_idfromlinestopswherestop_idin
(selectstop_idasid2fromstopwherestop_name='edit2.text')))B
whereA.stop_id=B.stop_id);
四、软件测试
测试该系统软件时,采用的是黑盒测试,即旨在测试软件是否满足功能要求。
它主要诊断下列几类错误:
1)不正确或遗漏的功能;
2)界面错误;
3)数据结构或外部数据库访问错误;
4)性能错误;
5)初始化和终止条件错误。
部分测试情况如下所示:
1.登陆测试
根据数据库中用户的信息进行登陆
数据库中用户表如下:
任选一个用户进行登陆。
1)不再库里的用户,登录时会显示错误提示“请输入密码!
”;
2)密码错误时,也会有相应的提示“请输入正确的密码!
”。
2.添加/删除用户模块的测试
1)不输入用户名时,系统会提示“请输入用户名!
”;如下图所示:
2)不输入密码时,系统会提示“请输入密码!
”;
3)只输入用户名及密码进行添加或删除时,系统会有显示提醒“请输入确认密码!
”;
4)添加或删除成功时,系统仍有显示提醒“新用户添加成功!
”或“该用户删除成功!
”。
3.时间查询模块的测试
2)乘车时间或乘车站点有一个不输入时,系统都会有警告,如“请输入乘车时间”等;
3)另外进行乘车查询时,发现此模块与功能需求时不符,即无论输入什么时间,只要乘车站点相同,结果就相同,如下所示:
这有待我们继续改善,其余模块不再详述。
附:
此系统仍存在很多问题,希望用户在使用过程中如有发现,及时与我们联系。
我们会继续完善,以满足所有用户的需要!
五、结束语
在大三下学期,我们学习了软件工程,java和数据库等课程,这些对以后的软件开发及维护是必不可少的。
而这次综合实验,就巩固我们所学的知识,同时还锻炼了我们的动手能力。
公交线路是人们在出行前首先考虑的问题,而在实际情况中,公交线路的选择是十分灵活的,不同的出行者追求的最优目标也不尽相同,借此,我们小组从多方面考虑设计了一个简单公交线路查询系统。
由于时间仓促,系统仍存在很多不足之处,有待进一步改善。
希望大家予以指教。
此次综合实验只在短短的两周就结束,这期间我学会了很多东西,无论是在动手能力,还是团队协作能力上都有了很大的提高。
这些技能在以后的学习和生活中都将使我受益匪浅。
在此,感谢我的指导老师!