公交查询系统数据库课程设计报告.docx

上传人:b****5 文档编号:6754467 上传时间:2023-01-10 格式:DOCX 页数:20 大小:1.33MB
下载 相关 举报
公交查询系统数据库课程设计报告.docx_第1页
第1页 / 共20页
公交查询系统数据库课程设计报告.docx_第2页
第2页 / 共20页
公交查询系统数据库课程设计报告.docx_第3页
第3页 / 共20页
公交查询系统数据库课程设计报告.docx_第4页
第4页 / 共20页
公交查询系统数据库课程设计报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

公交查询系统数据库课程设计报告.docx

《公交查询系统数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《公交查询系统数据库课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。

公交查询系统数据库课程设计报告.docx

公交查询系统数据库课程设计报告

公交查询系统—数据库课程设计报告

 

数据库课程设计

报告

 

班级:

序号:

姓名:

 

 

地球科学学院地信系

2013-06-28

 

 

一、概述

1.1背景说明

软件名称:

公交线路查询系统

项目提出者:

项目开发者:

用户:

广大需要乘坐公交车的人群

1.2开发环境

操作系统:

WindowsXP

软件配置:

visualstutio2010,MicrosoftSQLServer2008R2

数据库配置:

MicrosoftSQLServer2008R2在PC机中新建数据库,建立各个数据表、关系图。

二、需求分析

2.1用户需求

城市的扩张使得公交线路越来越复杂,为了使得用户更加方便地能够获得最新公交线路,“公交线路查询工具”帮助人们解决这个问题。

本系统面向的对象是普通乘客,对于普通乘客来说,他们最关心的就是查询。

系统也只对用户提供信息查询功能,并不对用户开放对数据的编辑权限。

对于任何用户,只要浏览本系统的首页,就可以根据自己的需求进行查询。

数据的修改、删除、及时更新工作只能由管理人员实现并对系统进行定期的维护,保证其运行的稳定性。

2.2主要功能

本系统从用户的需求出发,可实现以下功能:

1、线路具体情况查询:

输入线路名称就可得到该线路的途经站点,发车和末班车时间,票价等相关信息。

2、经过此站点的所有路线查询:

输入站点名称即可得出经过该站点的所有线路名称。

3、站点间的点到点路线查询:

输入出发站点和目的站点即可输出可选择的线路,包括中间站的转乘。

2.3数据流图

2.4数据字典

1、数据项

名称

数据类型

长度

字段描述

name

varchar

5

公交车的名称

start_time

time

8

公交车每天的最早发车时间

end_time

time

8

公交车每天的收班时间

buslength1

int

2

公交线路去程的站点数

buslength2

int

2

公交线路回程的站点数

pt_price

float

3

普通车的票价

gd_price

float

3

高等级车的票价

disprice_pt

float

3

普通车刷卡后的价格

disprice_gd

float

3

高等级车刷卡后的价格

companyID

int

1

公司编号

company_name

varchar

30

公司名称

station_id

int

3

站点的编号

station_name

varchar

30

站点的名称

orderid

int

2

站点在一条线路中的位置

typeID

int

2

线路类型编号,共12类

type_name

varchar

5

线路类型名

direction

char

4

公交行驶方向,“去程”或“回程”

line

varchar

500

公交行驶途径的站点

2、数据流

名称

说明

数据流来源

数据流去向

用户查询公交线路记录信息

记录公交车线路查询信息

线路+站点

查询结果输出

3、处理过程

名称

简述

输入的数据流

处理

输出的数据流

线路查询

根据公交线路查询该线路上的所有站点

公交车编号

根据编号查询

查询出该线路上的所有公交车站点

站点查询

根据站点查询出经过该站点的所有公交车编号

站点名称

根据站点查询公交车的编号

路过该站点的所有公交车编号

站站查询

根据两个站点查询出所有线路

两个不同的站点

根据站点查询出所有线路

输出查询出的线路

三、数据库概念结构设计

根据需求分析,可知本系统有以下E-R图:

1、公交站点E-R图3、公交公司E-R图

2、公交车E-R图4、公交线路类型E-R图

5、合并E-R图

四、数据库逻辑结构设计

4.1关系表设计

根据ER模型,对本系统设计出5个关系表:

1、公交车表

bus(name,start_time,end_time,buslength1,buslength2,pt_price,dis_price,gd_price,company_id,type_id)

列名

数据类型

NULL

约束

说明

name

varchar(5)

notnull

primarykey

公交车的名称

start_time

time

notnull

最早发车时间

end_time

time

notnull

收班时间

buslength1

int

notnull

去程的站点数

buslength2

int

notnull

回程的站点数

pt_price

float

null

普通车的票价

disprice_pt

float

null

普通车刷卡

gd_price

float

null

高等级车的票价

disprice_gd

float

null

高等级车刷卡

companyID

int

notnull

foreignkeyreferencescompany(id),

typeID

int

notnull

Foreignkeyreferencesbus_type(id)

2、公交站点station(id,name)

列名

数据类型

NULL

约束

说明

id

int

notnull

primarykey

站点的编号

name

varchar(30)

notnull

站点的名称

3、线路与站点关联表bus_station(bus_name,station_id,orderid)

记录公交线路经过站点的信息,并且按顺序记录各站点,以此记录线路与站点的关联信息。

列名

数据类型

NULL

约束

说明

bus_name

varchar(5)

notnull

primarykey

参照bus(name)

station_id

int

notnull

参照station(id)

orderid

int

notnull

站点在一条线路中的位置

4、公交公司表company(id,name)

列名

数据类型

NULL

约束

说明

id

int

Notnull

primarykey

公司编号

name

Varchar(5)

Notnull

公司名称

5、公交线路类型表bus_type(id,name)

列名

数据类型

NULL

约束

说明

id

int

Notnull

primarykey

线路类型编号,共12类

name

Varchar(10)

Notnull

线路类型名

6、公交线路表busline(bus_name,direction,line)

此表主要是为了方便依据线路来查询站点信息。

列名

数据类型

NULL

约束

说明

bus_name

varchar(4)

Notnull

primarykey

公司编号

direction

varchar(4)

Notnull

公交行驶方向,“去程”或“回程”

line

varchar(500)

Notnull

公交行驶途径的站点

4.2数据表关系图

 

五、创建数据库及其对象

5.1建数据库和表

下面是创建数据库和表的过程,数据通过手动输入。

1、创建数据库

createdatabasebus

on

name='bus_data1',

filename='C:

\DocumentsandSettings\Administrator\桌面\bus\bus_data1.mdf'

logon

name='bus_log',

filename='C:

\DocumentsandSettings\Administrator\桌面\bus\bus_log.ldf'

2、创建表

公交公司表

createtablecompany

idintprimarykeynotnull,

namevarchar(30)notnull

公交线路类型表

createtablebus_type

idintprimarykeynotnull,

namevarchar(5)notnull

公交站点

createtablestation

idintprimarykeynotnull,

namevarchar(15)notnull

公交线路表

createtablebusline

(bus_namevarchar(5),

directionchar

(2)notnull,

linevarchar(200)notnull,

primarykey(bus_name,direction),

foreignkey(bus_name)referencesbus(name))

公交车表

createtablebus

(namevarchar(5)primarykeynotnull,

start_timedatetimenotnull,

end_timedatetimenotnull,

buslengthintnotnull,

pricefloatnotnull,

companyIDintnotnull,

typeIDintnotnull,

foreignkey(companyID)referencescompany(id),

foreignkey(typeID)referencesbus_type(id))

线路与站点关联表

createtablebus_station

bus_namevarchar(5),

station_idint,

orderidintnotnull,

primarykey(bus_name,station_id),

foreignkey(bus_name)referencesbus(name),

foreignkey(station_id)referencesstation(id)

5.2查询实现

这里只介绍线路查询和站站查询的存储过程实现,其它涉及到的功能通过SQLCommand或SqlDataAdapter实现,在后面的应用程序设计中实现。

1、线路具体情况查询:

ifexists(selectnamefromsysobjectswherename='busline_info')

dropprocedurebusline_info

go

createprocedurebusline_info@inputvarchar(5),@outputvarchar(700)output

as

begin

select@output=line

frombusline

wherebusline.bus_name=@input

end

go

2、站点间的点到点路线查询:

ifexists(selectnamefromsysobjectswherename='station_station')

dropprocedurestation_station

go

createprocedurestation_station@input1varchar(30),@input2varchar(30),@output1varchar(5)output,@output2varchar(5)output,@output3varchar(5)output,@output4varchar(30)output,@output5varchar(30)output

as

begin

declare@stationID1int,@stationID2int--换乘过程中的中间站点

declare@id1int,@id2int--记录起点和终点的ID

select@id1=idfromstationwherename=@input1

select@id2=idfromstationwherename=@input2

--查找直达线路

select@output1=a.bus_name

from

(selectbus_namefrombus_stationwherestation_id=@id1)a,

(selectbus_namefrombus_stationwherestation_id=@id2)b

wherea.bus_name=b.bus_name

--若不存在直达线路,则搜寻一次换乘路线

ifnotexists(select*frombuswherename=@output1)

begin

--查找中间站点

select@stationID1=c.station_idfrom

--@input1能直达的站点集合c

(selectdistinctstation_id

frombus_station

wherebus_namein(selectbus_namefrombus_stationwherestation_id=@id1))c,

--@input2能直达的站点集合d

(selectdistinctstation_id

frombus_station

wherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2))d

wherec.station_id=d.station_id

select@output1=a.bus_name

from

(selectbus_namefrombus_stationwherestation_id=@id1)a,

(selectbus_namefrombus_stationwherebus_station.station_id=@stationID1)b

wherea.bus_name=b.bus_name

select@output2=a.bus_name

from

(selectbus_namefrombus_stationwherestation_id=@id2)a,(selectbus_namefrombus_stationwherebus_station.station_id=@stationID1)b

wherea.bus_name=b.bus_name

end

--若不存在直达和一次换乘线路,则搜寻二次换乘路线

ifnotexists(select*frombuswherename=@output1)andnotexists(select*frombuswherename=@output2)

begin

--查找中间线路

select@output2=a.bus_name

from

(selectdistinctbus_name

frombus_station

wherestation_idin

(selectstation_idfrombus_station

wherebus_namein

(selectbus_namefrombus_stationwherestation_id=@id1)))a,

(selectdistinctbus_namefrombus_station

wherestation_idin

(selectstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2)))b

wherea.bus_name=b.bus_name

--查找起点到中间线路的公交车

select@stationID1=a.station_id

from

(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id1))a,

(selectstation_idfrombus_stationwherebus_name=@output2)b

wherea.station_id=b.station_id

select@output1=c.bus_name

from

(selectbus_namefrombus_stationwherestation_id=@id1)c,

(selectbus_namefrombus_stationwherestation_id=@stationID1)d

wherec.bus_name=d.bus_name

--查找中间线路到终点的公交车

select@stationID2=a.station_id

from

(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2))a,

(selectstation_idfrombus_stationwherebus_name=@output2)b

wherea.station_id=b.station_id

select@output3=c.bus_name

from

(selectbus_namefrombus_stationwherestation_id=@id2)c,

(selectbus_namefrombus_stationwherestation_id=@stationID2)d

wherec.bus_name=d.bus_name

end

select@output4=namefromstationwhereid=@stationID1

select@output5=namefromstationwhereid=@stationID2

end

五、软件功能设计

软件共实现了3个大功能,即站点查询、线路查询、站站查询,其完成情况如下:

(一):

检查用户是否输入了站点或线路信息,如果没有录入,则提示:

请输入站点!

或请输入线路名!

(二):

检查用户是否输入的站点或线路是否存在,如果不存在,则提示:

此站点不存在!

或此线路不存在!

(三):

如果信息都填写正确,则根据选定的查询条件进行查找,查找的具体实现为:

(1)站点查询:

返回经过此站点的所有线路,并提供一条线路经过的所有站点。

如果没有结果,则提示:

找不到此站点!

(2)线路查询:

返回此线路的类型、最早和最晚时间、票价、经过站点等信息。

(3)站站查询:

返回从起点到终点的可行的一条线路,此线路可直达,如果没有直达,则最多换乘两次,并提示在哪里下车换乘,以及所有车辆的站点信息。

六、界面设计

七、应用程序

7.1站点查询

//查询经过给定站点的公交线路

protectedvoidstation_info(stringinput)

{

SqlConnectionmyConnection=newSqlConnection(connectionString);

myConnection.Open();

SqlCommandcmd=newSqlCommand("selectbus_station.bus_nameas公?

交?

线?

路¡¤名?

busline.directionas方¤?

向¨°,lineas途ª?

径?

站?

点Ì?

frombus_station,station,buslinewherestation.name='"+input+"'anddbo.station.id=bus_station.station_idandbus_station.bus_name=busline.bus_name",myConnection);

SqlDataAdapterda=newSqlDataAdapter();

da.SelectCommand=cmd;

System.Data.DataSetds=newSystem.Data.DataSet();

da.Fill(ds);

this.GridView1.DataSource=ds.Tables[0];

GridView1.DataBind();

cmd=null;

myConnection.Close();

}

7.2线路查询

//查询给定线路的公交车所经过站点

protectedstringbusline_info1(stringinput)

{stringconnectionString=@"server=TXJM1FW3L1GYIC6;database=bus;IntegratedSecurity=true";

SqlConnectionmyConnection=newSqlConnection(connectionString);

myConnection.Open();

SqlCommandmyCommand=newSqlCommand("busline_info",myConnection);

myCommand.CommandType=System.Data.CommandType.StoredProcedure;

//创建参数

SqlParameterbus_name=newSqlParameter("@input",System.

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1