公交查询系统—数据库课程设计分析研究方案.pdf

上传人:PIYPING 文档编号:11333878 上传时间:2021-07-26 格式:PDF 页数:17 大小:1.05MB
返回 下载 相关 举报
公交查询系统—数据库课程设计分析研究方案.pdf_第1页
第1页 / 共17页
公交查询系统—数据库课程设计分析研究方案.pdf_第2页
第2页 / 共17页
公交查询系统—数据库课程设计分析研究方案.pdf_第3页
第3页 / 共17页
公交查询系统—数据库课程设计分析研究方案.pdf_第4页
第4页 / 共17页
公交查询系统—数据库课程设计分析研究方案.pdf_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《公交查询系统—数据库课程设计分析研究方案.pdf》由会员分享,可在线阅读,更多相关《公交查询系统—数据库课程设计分析研究方案.pdf(17页珍藏版)》请在三一文库上搜索。

1、班级: 数据库课程设计数据库课程设计 报告 序号: 姓名: 地球科学学院地信系 2013-06-28 0 / 17 目录 数据库课程设计 0b5E2R。 目录 1p1Ean。 一、概述 2DXDiT。 1.1 背景说明 2RTCrp。 1.2 开发环境 25PCzV。 二、需求分析 2jLBHr。 2.1 用户需求 2xHAQX。 2.2 主要功能 2LDAYt。 2.3 数据流图 2Zzz6Z。 2.4 数据字典 2dvzfv。 三、数据库概念结构设计3rqyn1。 四、数据库逻辑结构设计1Emxvx。 4.1 关系表设计 1SixE2。 4.2 数据表关系图 16ewMy。 五、创建数据库

2、及其对象1kavU4。 5.1 建数据库和表 1y6v3A。 5.2 查询实现 2M2ub6。 五、软件功能设计 40YujC。 六、界面设计 5eUts8。 七、应用程序 5sQsAE。 7.1 站点查询 5GMsIa。 7.2 线路查询 6TIrRG。 7.3 站站查询 77EqZc。 八、实验数据示例 9lzq7I。 九、心得 10zvpge。 1 / 17 一、概述一、概述 1.11.1 背景说明背景说明 软件名称:公交线路查询系统 项目提出者: 项目开发者: 用户:广大需要乘坐公交车地人群 1.21.2 开发环境开发环境 操作系统:Windows XP 软件配置:visual stu

3、tio2010,Microsoft SQLServer 2008 R2 数据库配置:Microsoft SQL Server 2008 R2 在 PC 机中新建数据库,建立各个数据表、关系图.NrpoJ。 二、需求分析二、需求分析 2.12.1 用户需求用户需求 城市地扩张使得公交线路越来越复杂,为了使得用户更加方便地能够获得最新公交线路,“公交线路 查询工具”帮助人们解决这个问题.1nowf。 本系统面向地对象是普通乘客,对于普通乘客来说,他们最关心地就是查询.系统也只对用户提供信息 查询功能,并不对用户开放对数据地编辑权限.对于任何用户,只要浏览本系统地首页,就可以根据自己地 需求进行查询

4、.数据地修改、删除、及时更新工作只能由管理人员实现并对系统进行定期地维护,保证其运 行地稳定性.fjnFL。 2.22.2 主要功能主要功能 本系统从用户地需求出发,可实现以下功能: 1、线路具体情况查询:输入线路名称就可得到该线路地途经站点,发车和末班车时间,票价等相关信息. 2、经过此站点地所有路线查询:输入站点名称即可得出经过该站点地所有线路名称. 3、站点间地点到点路线查询:输入出发站点和目地站点即可输出可选择地线路,包括中间站地转乘. 2.32.3数据流图数据流图 公交车编号 按线路查询 站点信息数据 站点名 选择查询类型判断类型 起 始 点 目 的 点 按起始、目的 站点查询 按站

5、点查询 线路信息数据 反馈给用户 2.42.4 数据字典数据字典 1、数据项 名称名称 name 乘车方案 数据类型数据类型 varchar 长度长度 5公交车地名称 字段描述字段描述 2 / 17 start_time end_time buslength1 buslength2 pt_price gd_price disprice_pt disprice_gd companyID company_name station_id station_name orderid typeID type_name direction line 2、数据流 名称名称 time time int int

6、float float float float int varchar int varchar int int varchar char varchar 8 8 2 2 3 3 3 3 1 30 3 30 2 2 5 4 500 公交车每天地最早发车时间 公交车每天地收班时间 公交线路去程地站点数 公交线路回程地站点数 普通车地票价 高等级车地票价 普通车刷卡后地价格 高等级车刷卡后地价格 公司编号 公司名称 站点地编号 站点地名称 站点在一条线路中地位置 线路类型编号,共 12 类 线路类型名 公交行驶方向, “去程”或“回程” 公交行驶途径地站点 说明说明 记录公交车线路查询信息 数据流来

7、源数据流来源 线路+站点 数据流去向数据流去向 查询结果输出用户查询公交线路记录信息 3、处理过程 名称名称 线路查询 简述简述输入地数据流输入地数据流 公交车编号 处理处理 根据编号查询 输出地数据流输出地数据流 查询出该线路上地所 有公交车站点 根据公交线路查询该线路 上地所有站点 站点查询根据站点查询出经过该站 点地所有公交车编号 站点名称根据站点查询公 交车地编号 路过该站点地所有公 交车编号 输出查询出地线路站站查询根据两个站点查询出所有 线路 两个不同地站点根据站点查询出 所有线路 三、数据库概念结构设计三、数据库概念结构设计 根据需求分析,可知本系统有以下 E-R 图: 1、公交

8、站点 E-R 图 3、公交公司 E-R 图tfnNh。 编号 站点 公交公司 站点名称 编号公司名称 2、公交车 E-R 图 4、公交线路类型 E-R 图HbmVN。 编号票价 首班时间 公交线路 类型 公交线路 末班时间路线长度 所属公 司id 线路类 型id 编号类型名称 3 / 17 5、合并 E-R 图 公交公司 1 属于 m 公交线 路 n m 线路_ 站点 n 站点 属于 1 站点 顺序 公交线路 类型 四、数据库逻辑结构设计四、数据库逻辑结构设计 4.14.1 关系表设计关系表设计 根据 ER 模型,对本系统设计出 5 个关系表: 1、公交车表 bus(name,start_ti

9、me,end_time,buslength1,buslength2,pt_price, dis_price,gd_price, company_id,type_id)V7l4j。 列名 name start_time end_time buslength1 buslength2 pt_price disprice_pt gd_price disprice_gd companyID typeID 列名 id name 数据类型 time time int int float float float float int int 数据类型 int varchar(30) NULL not null

10、not null not null not null null null null null not null not null 约束 primary key foreignkeyreferencescompany(id), Foreignkeyreferencesbus_type(id) NULL not null not null 约束 primary key 说明 公交车地名称 最早发车时间 收班时间 去程地站点数 回程地站点数 普通车地票价 普通车刷卡 高等级车地票价 高等级车刷卡 说明 站点地编号 站点地名称 varchar(5)not null 2、公交站点 station(id,

11、name) 3、线路与站点关联表 bus_station(bus_name,station_id,orderid) 记录公交线路经过站点地信息,并且按顺序记录各站点,以此记录线路与站点地关联信息. 列名 bus_name station_id orderid 列名 id name 列名 id 数据类型 varchar(5) int int 数据类型 int Varchar(5) 数据类型 int NULL not null not null not null NULL Not null Not null NULL Not null 约束 primary key 约束 primary key 约

12、束 primary key 说明 参照 bus(name) 参照 station(id) 站点在一条线路中地位置 说明 公司编号 公司名称 说明 线路类型编号,共 4、公交公司表 company(id,name) 5、公交线路类型表 bus_type(id,name) 1 / 17 12 类 nameVarchar(10)Not null线路类型名 6、公交线路表 busline(bus_name,direction,line) 此表主要是为了方便依据线路来查询站点信息. 列名 bus_name direction line 数据类型 varchar(4) varchar(4) varchar

13、(500) NULL Not null Not null Not null 约束说明 公交行驶方向, “去程”或“回程” 公交行驶途径地站点 primary key公司编号 4.24.2 数据表关系图数据表关系图 五、创建数据库及其对象五、创建数据库及其对象 5.15.1 建数据库和表建数据库和表 下面是创建数据库和表地过程,数据通过手动输入. 1、创建数据库 createdatabasebus on ( name=bus_data1, filename=C:Documents and SettingsAdministrator桌面busbus_data1.mdf83lcP。 ) logon

14、( name=bus_log, filename=C:Documents and SettingsAdministrator桌面busbus_log.ldfmZkkl。 ) 2、创建表 公交公司表 createtablecompany ( idintprimarykeynotnull, namevarchar(30)notnull 公交线路类型表 createtablebus_type ( idintprimarykeynotnull, namevarchar(5)notnull 1 / 17 个人收集整理-仅供参考 ) 公交站点 createtablestation ( idintprima

15、rykeynotnull, namevarchar(15)notnull ) 公交车表 createtablebus (namevarchar(5)primarykeynotnull, start_timedatetimenotnull, end_timedatetimenotnull, buslengthintnotnull, pricefloatnotnull, companyIDintnotnull, typeIDintnotnull, foreignkey(companyID)referencescompany(id), foreignkey(typeID)referencesbus_

16、type(id) ) 公交线路表 createtablebusline (bus_namevarchar(5), directionchar(2)notnull, linevarchar(200)notnull, primarykey(bus_name,direction), foreignkey(bus_name)referencesbus(name) 线路与站点关联表 createtablebus_station ( bus_namevarchar(5), station_idint, orderidintnotnull, primarykey(bus_name,station_id),

17、foreignkey(bus_name)referencesbus(name), foreignkey(station_id)referencesstation(id) ) 5.25.2 查询实现查询实现 这里只介绍线路查询和站站查询地存储过程实现,其它涉及到地功能通过SQLCommand或SqlDataAdapter实 现,在后面地应用程序设计中实现.AVktR。 1、线路具体情况查询: ifexists(selectnamefromsysobjectswherename=busline_info)ORjBn。 dropprocedurebusline_info go createproce

18、durebusline_infoinputvarchar(5),outputvarchar(700)output2MiJT。 as begin selectoutput=line frombusline wherebusline.bus_name=input end go 2、站点间地点到点路线查询: ifexists(selectnamefromsysobjectswherename=station_station)gIiSp。 dropprocedurestation_station go createprocedurestation_stationinput1varchar(30),in

19、put2varchar(30),output1varchar(5)output ,output2varchar(5)output,output3varchar(5)output,output4varchar(30)output,output5varchar (30)outputuEh0U。 as begin 2 / 17 个人收集整理-仅供参考 declarestationID1int,stationID2int-换乘过程中地中间站点 declareid1int,id2int-记录起点和终点地ID selectid1=idfromstationwherename=input1 selectid

20、2=idfromstationwherename=input2 -查找直达线路 selectoutput1=a.bus_name from (selectbus_namefrombus_stationwherestation_id=id1)a,IAg9q。 (selectbus_namefrombus_stationwherestation_id=id2)bWwghW。 wherea.bus_name=b.bus_name -若不存在直达线路,则搜寻一次换乘路线 ifnotexists(select*frombuswherename=output1) begin -查找中间站点 selects

21、tationID1=c.station_idfrom -input1能直达地站点集合c (selectdistinctstation_id frombus_station wherebus_namein(selectbus_namefrombus_stationwherestation_id=id1)c,asfps。 -input2能直达地站点集合d (selectdistinctstation_id frombus_station wherebus_namein(selectbus_namefrombus_stationwherestation_id=id2)dooeyY。 wherec.s

22、tation_id=d.station_id selectoutput1=a.bus_name from (selectbus_namefrombus_stationwherestation_id=id1)a,BkeGu。 (selectbus_namefrombus_stationwherebus_station.station_id=stationID1)bPgdO0。 wherea.bus_name=b.bus_name selectoutput2=a.bus_name from (selectbus_namefrombus_stationwherestation_id=id2)a,(s

23、electbus_namefrombus_stationwherebus_ station.station_id=stationID1)b3cdXw。 wherea.bus_name=b.bus_name end -若不存在直达和一次换乘线路,则搜寻二次换乘路线 ifnotexists(select*frombuswherename=output1)andnotexists(select*frombuswherename=output2)h 8c52。 begin -查找中间线路 selectoutput2=a.bus_name 3 / 17 个人收集整理-仅供参考 from (selectd

24、istinctbus_name frombus_station wherestation_idin (selectstation_idfrombus_station wherebus_namein (selectbus_namefrombus_stationwherestation_id=id1)a,v4bdy。 (selectdistinctbus_namefrombus_station wherestation_idin (selectstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwheresta

25、tion_id =id2)bJ0bm4。 wherea.bus_name=b.bus_name -查找起点到中间线路地公交车 selectstationID1=a.station_id from (selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherest ation_id=id1)a,XVauA。 (selectstation_idfrombus_stationwherebus_name=output2)bbR9C6。 wherea.station_id=b.stati

26、on_id selectoutput1=c.bus_name from (selectbus_namefrombus_stationwherestation_id=id1)c,pN9LB。 (selectbus_namefrombus_stationwherestation_id=stationID1)dDJ8T7。 wherec.bus_name=d.bus_name -查找中间线路到终点地公交车 selectstationID2=a.station_id from (selectdistinctstation_idfrombus_stationwherebus_namein(selectb

27、us_namefrombus_stationwherest ation_id=id2)a,QF81D。 (selectstation_idfrombus_stationwherebus_name=output2)b4B7a9。 wherea.station_id=b.station_id selectoutput3=c.bus_name from (selectbus_namefrombus_stationwherestation_id=id2)c,ix6iF。 (selectbus_namefrombus_stationwherestation_id=stationID2)dwt6qb。 w

28、herec.bus_name=d.bus_name end selectoutput4=namefromstationwhereid=stationID1 selectoutput5=namefromstationwhereid=stationID2 end 五、软件功能设计五、软件功能设计 软件共实现了 3 个大功能,即站点查询、线路查询、站站查询,其完成情况如下: 4 / 17 个人收集整理-仅供参考 (一) :检查用户是否输入了站点或线路信息,如果没有录入,则提示:请输入站点!或请输入线路名! (二) :检查用户是否输入地站点或线路是否存在,如果不存在,则提示:此站点不存在!或此线路不存

29、在! (三) :如果信息都填写正确,则根据选定地查询条件进行查找,查找地具体实现为: (1)站点查询:返回经过此站点地所有线路,并提供一条线路经过地所有站点. 如果没有结果,则提示:找不到此站点! (2)线路查询:返回此线路地类型、最早和最晚时间、票价、经过站点等信息. (3)站站查询:返回从起点到终点地可行地一条线路,此线路可直达,如果没有直达,则最多换乘 两次,并提示在哪里下车换乘,以及所有车辆地站点信息.Kp5zH。 六、界面设计六、界面设计 七、应用程序七、应用程序 7.17.1 站点查询站点查询 /查询经过给定站点地公交线路 protectedvoid station_info(st

30、ring input) SqlConnection myConnection = newSqlConnection(connectionString);Yl4Hd。 myConnection.Open(); SqlCommand cmd = newSqlCommand(select bus_station.bus_name as 公?交?线?路 名?,busline.direction as 方?向,line as 途?径?站?点? from bus_station,station,busline where station.name = + input + and dbo.station.i

31、d = bus_station.station_id and bus_station.bus_name = busline.bus_name, myConnection);ch4PJ。 SqlDataAdapter da = newSqlDataAdapter(); da.SelectCommand = cmd; System.Data.DataSet ds = new System.Data.DataSet();qd3Yf。 da.Fill(ds); this.GridView1.DataSource = ds.Tables0; 5 / 17 个人收集整理-仅供参考 GridView1.Da

32、taBind(); cmd = null; myConnection.Close(); 7.27.2 线路查询线路查询 / 查询给定线路地公交车所经过站点 protectedstring busline_info1(string input) string connectionString = server=TXJM1FW3L1GYIC6;database = bus;Integrated Security = true;E836L。 SqlConnection myConnection = newSqlConnection(connectionString);S42eh。 myConnect

33、ion.Open(); SqlCommand myCommand = newSqlCommand(busline_info, myConnection);501nN。 myCommand.CommandType = System.Data.CommandType.StoredProcedure;jW1vi。 /创建参数 SqlParameter bus_name = newSqlParameter(input, System.Data.SqlDbType.VarChar, 5);xS0DO。 bus_name.Direction = System.Data.ParameterDirection

34、.Input;LOZMk。 bus_name.Value = input; myCommand.Parameters.Add(bus_name); /添加输出参数 SqlParameter Result1 = newSqlParameter(output, System.Data.SqlDbType.VarChar, 700);ZKZUQ。 Result1.Direction = System.Data.ParameterDirection.Output;dGY2m。 myCommand.Parameters.Add(Result1); myCommand.ExecuteNonQuery();

35、 string str = Result1.Value.ToString(); return str; 6 / 17 个人收集整理-仅供参考 7.37.3 站站查询站站查询 /查询给定起点和终点地公交车线路 protectedvoid station_station(string input1, string input2)rCYbS。 string connectionString = server=TXJM1FW3L1GYIC6;database = bus;Integrated Security = true;FyXjo。 SqlConnection myConnection = new

36、SqlConnection(connectionString);TuWrU。 myConnection.Open(); /利用SQL中已有地存储过程实现站站查询 SqlCommand myCommand = newSqlCommand(station_station, myConnection);7qWAq。 myCommand.CommandType = System.Data.CommandType.StoredProcedure;llVIW。 /创建参数 SqlParameter station_name1 = newSqlParameter(input1, System.Data.Sq

37、lDbType.VarChar, 30);yhUQs。 station_name1.Direction = System.Data.ParameterDirection.Input;MdUZY。 station_name1.Value = input1; myCommand.Parameters.Add(station_name1); SqlParameter station_name2 = newSqlParameter(input2, System.Data.SqlDbType.VarChar, 30);09T7t。 station_name2.Direction = System.Dat

38、a.ParameterDirection.Input;e5TfZ。 station_name2.Value = input2; myCommand.Parameters.Add(station_name2); /添加输出参数 SqlParameter Result1 = newSqlParameter(output1, System.Data.SqlDbType.VarChar, 5);s1Sov。 Result1.Direction = System.Data.ParameterDirection.Output;GXRw1。 myCommand.Parameters.Add(Result1)

39、; SqlParameter Result2 = newSqlParameter(output2, System.Data.SqlDbType.VarChar, 5);UTREx。 7 / 17 个人收集整理-仅供参考 Result2.Direction = System.Data.ParameterDirection.Output;8PQN3。 myCommand.Parameters.Add(Result2); SqlParameter Result3 = newSqlParameter(output3, System.Data.SqlDbType.VarChar, 5);mLPVz。 R

40、esult3.Direction = System.Data.ParameterDirection.Output;AHP35。 myCommand.Parameters.Add(Result3); SqlParameter Result4 = newSqlParameter(output4, System.Data.SqlDbType.VarChar, 30);NDOcB。 Result4.Direction = System.Data.ParameterDirection.Output;1zOk7。 myCommand.Parameters.Add(Result4); SqlParamete

41、r Result5 = newSqlParameter(output5, System.Data.SqlDbType.VarChar, 30);fuNsD。 Result5.Direction = System.Data.ParameterDirection.Output;tqMB9。 myCommand.Parameters.Add(Result5); myCommand.ExecuteNonQuery(); string str1, str2, str3, str4, str5; str1 = Result1.Value.ToString(); str2 = Result2.Value.T

42、oString(); str3 = Result3.Value.ToString(); str4 = Result4.Value.ToString(); str5 = Result5.Value.ToString(); myConnection.Close(); /界面提示信息 if (str1 = else if (str1 != HmMJF。 lab5_name.Text = str1 + 公交线路:; lab5_line.Text = busline_info1(str1); lab6_name.Text = str2 + 公交线路:; lab6_line.Text = busline_

43、info1(str2); else if (str1 != lab5_name.Text = str1 + 公交线路:; lab5_line.Text = busline_info1(str1); else if (str1 != ViLRa。 lab5_name.Text = str1 + 公交线路:; lab5_line.Text = busline_info1(str1); lab6_name.Text = str2 + 公交线路:; lab6_line.Text = busline_info1(str2); lab7_name.Text = str3 + 公交线路:; lab7_lin

44、e.Text = busline_info1(str3); 八、实验数据示例八、实验数据示例 1、bus 表(存放公交车次有关信息数据) 2、bus_type 表(存放公交车类型数据) 3、bus_type 表(存放公交公司数据)9eK0G。 4、bus_station 表(存放公交线路上地各个站点) 5、station 表(存放公交站点数据)naK8c。 9 / 17 个人收集整理-仅供参考 6、bus_line 表(存放公交线路,便于站点查询) 九、心得九、心得 通过这次为期 2 个星期地数据库地课程设计实习,我从中学习到了一个数据库程序地设计地基本步 骤,包括需求分析、概念结构设计、逻辑

45、结构设计、物理结构设计等,同时加强了关系型数据库管理方面 地部分知识.B6JgI。 我觉得需求分析是很重要地,只有需求分析做好了,后面地工作才会轻松.逻辑结构设计也很关键, 需要考虑实体所应包含地所有属性,如果这个阶段不考虑清楚,等到后面才想起来地话,修改起来会比较 麻烦.P2Ipe。 在整个程序地设计时,我通过分析学习到了一个数据库程序应该考虑地方面,了解到关系型数据库关 系处理方便地灵活性.同时在数据设计地过程中,让我知道了数据设计地重要性, 在一定地选择判断中,设 计出了数据库地整体结构.3YIxK。 通过在编程中嵌入 SQL 语句访问数据库,处理返回数据,以及调用 SQL 中已经编写好

46、地存储过程地 过程中,巩固学习了 SQL 语句地语法,也学会了在 C#、ASP 等编程语言中通过不同地方法使用数据库,自 己收获还是很多地.gUHFg。 不足之处就在于, 可能由于编程能力地原因, 在如何让程序数据变得动态、 多样这个方面还有待提高, 程序地编写也应该更简洁一些才好.uQHOM。 这次实习给了我宝贵地机会,以充足地时间去编写一个基于数据库地小程序,让我对数据库和编写程 序方面都得到了提高.IMGWi。 版权申明 本文部分内容,包括文字、图片、以及设计等在网上搜集整理. 版权为个人所有 10 / 17 个人收集整理-仅供参考 This article includes some

47、parts, including text, pictures, and design. Copyright is personal ownership.WHF4O。 用户可将本文地内容或服务用于个人学习、 研究或欣赏,以及其 他非商业性或非盈利性用途, 但同时应遵守著作权法及其他相关法律 地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本 文任何内容或服务用于其他用途时, 须征得本人及相关权利人地书面 许可,并支付报酬.aDFdk。 Users may use the contents or services of this article for personal study,

48、research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.ozElQ。 转载或引用本文内容必须是以新闻性或资料性公共免费信息为 使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1