




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程设计报告 班级:序号: 姓名: 地球科学学院地信系2013-06-28目录数据库课程设计1目录2一、概述31.1背景说明31.2开发环境3二、需求分析32.1用户需求32.2主要功能32.3数据流图32.4数据字典3三、数据库概念结构设计4四、数据库逻辑结构设计24.1 关系表设计24.2 数据表关系图2五、创建数据库及其对象25.1 建数据库和表25.2 查询实现3五、软件功能设计5六、界面设计6七、应用程序67.1 站点查询67.2 线路查询77.3 站站查询8八、实验数据示例10九、心得11一、概述1.1背景说明软件名称:公交线路查询系统 项目提出者: 项目开发者: 用户:广大需要乘坐公交车的人群 1.2开发环境操作系统:Windows XP软件配置:visual stutio2010,Microsoft SQL Server 2008 R2数据库配置:Microsoft SQL Server 2008 R2在PC机中新建数据库,建立各个数据表、关系图。二、需求分析2.1用户需求城市的扩张使得公交线路越来越复杂,为了使得用户更加方便地能够获得最新公交线路,“公交线路查询工具”帮助人们解决这个问题。本系统面向的对象是普通乘客,对于普通乘客来说,他们最关心的就是查询。系统也只对用户提供信息查询功能,并不对用户开放对数据的编辑权限。对于任何用户,只要浏览本系统的首页,就可以根据自己的需求进行查询。数据的修改、删除、及时更新工作只能由管理人员实现并对系统进行定期的维护,保证其运行的稳定性。2.2主要功能本系统从用户的需求出发,可实现以下功能: 1、线路具体情况查询:输入线路名称就可得到该线路的途经站点,发车和末班车时间,票价等相关信息。2、经过此站点的所有路线查询:输入站点名称即可得出经过该站点的所有线路名称。3、站点间的点到点路线查询:输入出发站点和目的站点即可输出可选择的线路,包括中间站的转乘。2.3数据流图2.4数据字典1、数据项名称数据类型长度字段描述namevarchar5公交车的名称start_timetime8公交车每天的最早发车时间end_timetime8公交车每天的收班时间buslength1int2公交线路去程的站点数buslength2int2公交线路回程的站点数pt_pricefloat3普通车的票价gd_pricefloat3高等级车的票价disprice_ptfloat3普通车刷卡后的价格disprice_gdfloat3高等级车刷卡后的价格companyIDint1公司编号company_namevarchar30公司名称station_idint3站点的编号station_namevarchar30站点的名称orderidint2站点在一条线路中的位置typeIDint2线路类型编号,共12类type_namevarchar5线路类型名directionchar4公交行驶方向,“去程”或“回程”linevarchar500公交行驶途径的站点2、数据流名称说明数据流来源数据流去向用户查询公交线路记录信息记录公交车线路查询信息线路+站点查询结果输出3、处理过程名称简述输入的数据流处理输出的数据流线路查询根据公交线路查询该线路上的所有站点公交车编号根据编号查询查询出该线路上的所有公交车站点站点查询根据站点查询出经过该站点的所有公交车编号站点名称根据站点查询公交车的编号路过该站点的所有公交车编号站站查询根据两个站点查询出所有线路两个不同的站点根据站点查询出所有线路输出查询出的线路三、数据库概念结构设计根据需求分析,可知本系统有以下E-R图:101、公交站点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约束说明namevarchar(5)not nullprimary key公交车的名称start_timetimenot null最早发车时间end_timetimenot null收班时间buslength1intnot null去程的站点数buslength2intnot null回程的站点数pt_pricefloatnull普通车的票价disprice_ptfloatnull普通车刷卡gd_pricefloatnull高等级车的票价disprice_gdfloatnull高等级车刷卡companyIDintnot nullforeign key references company(id),typeIDintnot nullForeignkey references bus_type(id)2、公交站点station(id,name)列名数据类型NULL约束说明idintnot nullprimary key站点的编号namevarchar(30)not null站点的名称3、线路与站点关联表bus_station(bus_name,station_id,orderid)记录公交线路经过站点的信息,并且按顺序记录各站点,以此记录线路与站点的关联信息。列名数据类型NULL约束说明bus_namevarchar(5)not nullprimary key参照bus(name)station_idintnot null参照station(id)orderidintnot null站点在一条线路中的位置4、公交公司表company(id,name)列名数据类型NULL约束说明idintNot nullprimary key公司编号nameVarchar(5)Not null公司名称5、公交线路类型表bus_type(id,name)列名数据类型NULL约束说明idintNot nullprimary key线路类型编号,共12类nameVarchar(10)Not null线路类型名6、公交线路表busline(bus_name,direction,line) 此表主要是为了方便依据线路来查询站点信息。 列名数据类型NULL约束说明bus_namevarchar(4)Not nullprimary key公司编号directionvarchar(4)Not null公交行驶方向,“去程”或“回程”linevarchar(500)Not null公交行驶途径的站点4.2 数据表关系图五、创建数据库及其对象5.1 建数据库和表下面是创建数据库和表的过程,数据通过手动输入。1、创建数据库create database buson(name = bus_data1,filename = C:Documents and SettingsAdministrator桌面busbus_data1.mdf)log on(name = bus_log,filename = C:Documents and SettingsAdministrator桌面busbus_log.ldf)2、创建表公交公司表create table company(id int primary key not null,name varchar(30) not null)公交线路类型表create table bus_type(id int primary key not null,name varchar(5) not null)公交站点create table station(id int primary key not null,name varchar(15) not null)公交线路表create table busline(bus_name varchar(5),direction char(2) not null,line varchar(200) not null,primary key(bus_name,direction), foreign key(bus_name) references bus(name)公交车表create table bus(name varchar(5) primary key not null,start_time datetime not null,end_time datetime not null,buslength int not null,price float not null,companyID int not null,typeID int not null,foreign key(companyID) references company(id),foreign key(typeID) references bus_type(id)线路与站点关联表create table bus_station(bus_name varchar(5),station_id int,orderid int not null,primary key(bus_name,station_id), foreign key(bus_name) references bus(name),foreign key(station_id)references station(id)5.2 查询实现这里只介绍线路查询和站站查询的存储过程实现,其它涉及到的功能通过SQLCommand或SqlDataAdapter实现,在后面的应用程序设计中实现。1、线路具体情况查询:if exists(select name from sysobjects where name = busline_info)drop procedure busline_infogocreate procedure busline_info input varchar(5),output varchar(700) outputasbegin select output = line from busline where busline.bus_name = input end go2、站点间的点到点路线查询:if exists(select name from sysobjects where name = station_station)drop procedure station_stationgocreate procedure station_station input1 varchar(30),input2 varchar(30), output1 varchar(5) output,output2 varchar(5) output,output3 varchar(5) output,output4 varchar(30) output,output5 varchar(30) outputasbegin declare stationID1 int,stationID2 int -换乘过程中的中间站点 declare id1 int,id2 int -记录起点和终点的ID select id1 = id from station where name = input1 select id2 = id from station where name = input2 -查找直达线路 select output1 = a.bus_name from (select bus_name from bus_station where station_id = id1 ) a, (select bus_name from bus_station where station_id = id2 ) b where a.bus_name = b.bus_name -若不存在直达线路,则搜寻一次换乘路线 if not exists(select * from bus where name = output1)begin-查找中间站点 select stationID1 = c.station_id from-input1能直达的站点集合c( select distinct station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id1 ) c,-input2能直达的站点集合d( select distinct station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id2) dwhere c.station_id= d.station_idselect output1 = a.bus_name from(select bus_name from bus_station where station_id = id1 ) a,(select bus_name from bus_station where bus_station.station_id = stationID1 ) bwhere a.bus_name = b.bus_nameselect output2 = a.bus_name from(select bus_name from bus_station where station_id = id2) a,(select bus_name from bus_station where bus_station.station_id = stationID1 ) bwhere a.bus_name = b.bus_nameend -若不存在直达和一次换乘线路,则搜寻二次换乘路线 if not exists(select * from bus where name = output1) and not exists(select * from bus where name = output2)begin-查找中间线路select output2 = a.bus_name from(select distinct bus_name from bus_station where station_id in(select station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id1)a,(select distinct bus_name from bus_station where station_id in (select station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id2)bwhere a.bus_name = b.bus_name-查找起点到中间线路的公交车select stationID1 = a.station_id from(select distinct station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id1)a,(select station_id from bus_station where bus_name = output2) bwhere a.station_id = b.station_idselect output1 = c.bus_name from(select bus_name from bus_station where station_id = id1 ) c, (select bus_name from bus_station where station_id = stationID1) d where c.bus_name = d.bus_name-查找中间线路到终点的公交车select stationID2 = a.station_id from(select distinct station_id from bus_station where bus_name in(select bus_name from bus_station where station_id = id2)a,(select station_id from bus_station where bus_name = output2) bwhere a.station_id = b.station_idselect output3 = c.bus_name from(select bus_name from bus_station where station_id = id2 ) c, (select bus_name from bus_station where station_id = stationID2) d where c.bus_name = d.bus_nameendselect output4 = name from station where id = stationID1select output5 = name from station where id = stationID2end 五、软件功能设计软件共实现了3个大功能,即站点查询、线路查询、站站查询,其完成情况如下:(一):检查用户是否输入了站点或线路信息,如果没有录入,则提示:请输入站点!或请输入线路名!(二):检查用户是否输入的站点或线路是否存在,如果不存在,则提示:此站点不存在!或此线路不存在!(三):如果信息都填写正确,则根据选定的查询条件进行查找,查找的具体实现为:(1)站点查询:返回经过此站点的所有线路,并提供一条线路经过的所有站点。如果没有结果,则提示:找不到此站点!(2)线路查询:返回此线路的类型、最早和最晚时间、票价、经过站点等信息。(3)站站查询:返回从起点到终点的可行的一条线路,此线路可直达,如果没有直达,则最多换乘两次,并提示在哪里下车换乘,以及所有车辆的站点信息。六、界面设计七、应用程序7.1 站点查询/查询经过给定站点的公交线路 protected void station_info(string input) SqlConnection myConnection = new SqlConnection(connectionString); myConnection.Open(); SqlCommand cmd = new SqlCommand(select bus_station.bus_name as 公?交?线?路名?,busline.direction as 方?向,line as 途?径?站?点? from bus_station,station,busline where = + input + and dbo.station.id = bus_station.station_id and bus_station.bus_name = busline.bus_name, myConnection); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; System.Data.DataSet ds = new System.Data.DataSet(); da.Fill(ds); this.GridView1.DataSource = ds.Tables0; GridView1.DataBind(); cmd = null; myConnection.Close(); 7.2 线路查询/ 查询给定线路的公交车所经过站点 protected string busline_info1(string input) string connectionString = server=TXJM1FW3L1GYIC6;database = bus;Integrated Security = true; SqlConnection myConnection = new SqlConnection(connectionString); myConnection.Open(); SqlCommand myCommand = new SqlCommand(busline_info, myConnection); myCommand.CommandType = System.Data.CommandType.StoredProcedure; /创建参数 SqlParameter bus_name = new SqlParameter(input, System.Data.SqlDbType.VarChar, 5); bus_name.Direction = System.Data.ParameterDirection.Input; bus_name.Value = input; myCommand.Parameters.Add(bus_name); /添加输出参数 SqlParameter Result1 = new SqlParameter(output, System.Data.SqlDbType.VarChar, 700); Result1.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result1); myCommand.ExecuteNonQuery(); string str = Result1.Value.ToString(); return str; 7.3 站站查询/查询给定起点和终点的公交车线路 protected void station_station(string input1, string input2) string connectionString = server=TXJM1FW3L1GYIC6;database = bus;Integrated Security = true; SqlConnection myConnection = new SqlConnection(connectionString); myConnection.Open(); /利用SQL中已有的存储过程实现站站查询 SqlCommand myCommand = new SqlCommand(station_station, myConnection); myCommand.CommandType = System.Data.CommandType.StoredProcedure;/创建参数 SqlParameter station_name1 = new SqlParameter(input1, System.Data.SqlDbType.VarChar, 30); station_name1.Direction = System.Data.ParameterDirection.Input; station_name1.Value = input1; myCommand.Parameters.Add(station_name1); SqlParameter station_name2 = new SqlParameter(input2, System.Data.SqlDbType.VarChar, 30); station_name2.Direction = System.Data.ParameterDirection.Input; station_name2.Value = input2; myCommand.Parameters.Add(station_name2); /添加输出参数 SqlParameter Result1 = new SqlParameter(output1, System.Data.SqlDbType.VarChar, 5); Result1.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result1); SqlParameter Result2 = new SqlParameter(output2, System.Data.SqlDbType.VarChar, 5); Result2.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result2); SqlParameter Result3 = new SqlParameter(output3, System.Data.SqlDbType.VarChar, 5); Result3.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result3); SqlParameter Result4 = new SqlParameter(output4, System.Data.SqlDbType.VarChar, 30); Result4.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result4); SqlParameter Result5 = new SqlParameter(output5, System.Data.SqlDbType.VarChar, 30); Result5.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(Result5); myCommand.ExecuteNonQuery(); string str1, str2, str3, str4, str5; str1 = Result1.Value.ToString(); str2 = Result2.Value.ToString(); str3 = Result3.Value.ToString(); str4 = Result4.Value.ToString(); str5 = Result5.Value.ToString(); myConnection.Close(); /界面提示信息 if (str1 = & str2 = & str3 = ) lab4_text.Text = 没有找到合适的路线; else if (str1 != & str2 != & str3 = ) lab4_text.Text = 您可以先乘坐 + str1 + 在 + str4 + 下车, + 再乘坐 + str2; lab5_name.Text
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大型制造企业厂房买卖合同范本
- 餐饮多人合伙经营管理权分配合同范本
- 软件开发企业员工标准劳动合同
- 婆媳相处协议书范本
- 特色小吃街摊位承包经营合同
- 借物品给人使用协议书范本
- 汽车产权转移及售后保障合同范本
- 文化创意产业代理记账与版权登记合同
- 柴油终端零售与配送网络优化合作协议
- 退款协议模板
- 小学生三好学生竞选演讲稿PPT幻灯片
- 自动理料机和包装机安全操作规定
- 检验MSA-Kappa测试报告
- Oracle-ERP-EBS-应付模块AP培训
- 古诗词九宫格题目课件
- 玄隐遗密全文及译文
- 2023年浙江杭州西湖区专职社区工作者招考聘用55人笔试题库含答案详解
- IBNR准备金计提规定
- 2023年药学分子生物学题库
- 仁爱初中英语九上教案设计u3t1sa
- 地库道路交通标志标线施工程序及验收标准(完整资料)
评论
0/150
提交评论