公交查询系统-数据库课程设计报告_第1页
公交查询系统-数据库课程设计报告_第2页
公交查询系统-数据库课程设计报告_第3页
公交查询系统-数据库课程设计报告_第4页
公交查询系统-数据库课程设计报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

公交査询系统一数据库课程设计报告数据库课程设计报告班级序号姓名地球科学学院地信系2013-06-28目录TOC\o"1-5"\h\z\o"CurrentDocument"数据库课程设计 0—目录 1一、 概述•・・•・・•・・•・・•・・•・・•・・•・・•・・•・・•・・・・•・・•・・•・・•・・•・・•・・•・・3—景说明 3\o"CurrentDocument"1.2开发环境 3\o"CurrentDocument"二、 需求分析 3\o"CurrentDocument"—2.1用户需求 3\o"CurrentDocument"2.2主要功能 32.3数据流图 3\o"CurrentDocument"2.4数据字典 4\o"CurrentDocument"三、 数据库概念结构设计 4\o"CurrentDocument"四、 数据库逻辑结构设计 0\o"CurrentDocument"_4.1关系表设计 0\o"CurrentDocument"4.2数据表关系图 1\o"CurrentDocument"五、创建数据库及其对象 2\o"CurrentDocument"5.1建数据库和表 2\o"CurrentDocument"5.2查询实现 3\o"CurrentDocument"五、 软件功能设计 5\o"CurrentDocument"六、 界面设计 6\o"CurrentDocument"七、 应用程序 6查询 6\o"CurrentDocument"7.2线路查询 7\o"CurrentDocument"7.3站一站查询 8\o"CurrentDocument"八、 实验数据示例 10\o"CurrentDocument"九、 心得 11一、概述1.1背景说明软件名称:公交线路查询系统项目提出者:项目开发者:用户:广大需要乘坐公交车的人群1.2开发环境操作系统:WindowsXP软件配置:visualstutio2010,MicrosoftSQLServer2008R2数据库配置:MicrosoftSQLServer2008R2在PC机中新建数据库,建立各个数据表、关系图。二、需求分析2.1用户需求城市的扩张使得公交线路越来越复杂,为了使得用户更加方便地能够获得最新公交线路,“公交线路査询工具”帮助人们解决这个问题。本系统面向的对象是普通乘客,对于普通乘客来说,他们最关心的就是查询。系统也只对用户提供信息査询功能,并不对用户开放对数据的编辑权限。对于任何用户,只要浏览本系统的首页,就可以根据自己的需求进行查询。数据的修改、删除、及时更新工作只能由管理人员实现并对系统进行定期的维护,保证其运行的稳定性。2・2主要功能本系统从用户的需求出发,可实现以下功能:1、 线路具体情况查询:输入线路名称就可得到该线路的途经站点,发车和末班车时间,票价等相关信息。2、 经过此站点的所有路线査询:输入站点名称即可得出经过该站点的所有线路名称。3、 站点间的点到点路线查询:输入出发站点和目的站点即可输出可选择的线路,包括中间站的转乘。2.3数据流图选择查询类型起始点目的点4按起始、目的 乘车方案——站点查询选择查询类型起始点目的点4按起始、目的 乘车方案——站点查询 2.4数据字典1、数据项名称数据类型长度字段描述namevarchar5公交车的名称start_timetime8公交车每天的最早发车时间end_timetime8公交车每天的收班时间buslength1int2公交线路去程的站点数buslength2int2公交线路回程的站点数ptpricefloat3普通车的票价gdpricefloat3高等级车的票价dispriceptfloat3普通车刷卡后的价格dispricegdfloat3高等级车刷卡后的价格companyIDint1公司编号companynamevarchar30公司名称stationidint3站点的编号stationnamevarchar30站点的名称orderidint2站点在一条线路中的位置typeIDint2线路类型编号,共12类typenamevarchar5线路类型名directionchar4公交行驶方向,“去程”或“回程”linevarchar500公交行驶途径的站点2、数据流名称说明数据流来源数据流去向用户査询公交线路记录信息记录公交车线路査询信息线路+站点査询结果输出3、处理过程名称简述输入的数据流处理输出的数据流线路査询根据公交线路査询该线路上的所有站点公交车编号根据编号査询査询出该线路上的所有公交车站点站点査询根据站点査询出经过该站点的所有公交车编号站点名称根据站点査询公交车的编号路过该站点的所有公交车编号站站査询根据两个站点査询出所有线路两个不同的站点根据站点査询出所有线路输出査询出的线路三、数据库概念结构设计根据需求分析,可知本系统有以下E-R图:1、公交站点E-R图 3、公交公司E-R图2、公交车E-R图f~ ‘编号_• 票价”■公交线路首班时间末班时间路线长度所属公线路类4、公交线路类型E-R图类型名称编号公交线路类型四、数据库逻辑结构设计4.1关系表设计根据ER模型,对本系统设计出5个关系表:1、公交车表bus(name,start_time,end_time,buslength1,buslength2,pt_price,dis_price,gd_price,companyid,typeid)列名数据类型NULL约束说明namevarchar(5)notnullprimarykey公交车的名称starttimetimenotnull最早发车时间endtimetimenotnull收班时间buslength1intnotnull去程的站点数buslength2intnotnull回程的站点数ptpricefloatnull普通车的票价

dispriceptfloatnull普通车刷卡gdpricefloatnull高等级车的票价dispricegdfloatnull高等级车刷卡companyIDintnotnullforeignkeyreferencescompany(id),typeIDintnotnullForeignkeyreferencesbustype(id)2、公交站点station(id,name)列名数据类型NULL约束说明idintnotnullprimarykey站点的编号namevarchar(30)notnull站点的名称3、线路与站点关联表bus_station(hus_name,stat.ion_id,orderid)记录公交线路经过站点的信息,并且按顺序记录各站点,以此记录线路与站点的关联信息。列名数据类型NULL约束说明busnamevarchar(5)notnullprimarykey参照bus(name)stationidintnotnull参照station(id)orderidintnotnull站点在一条线路中的位置4、公交公司表company(id,name)列名附『卜e TfrI数据类型NULL约束说明idintNotnullprimarykey公司编号nameVarchar(5)Notnull公司名称5、公交线路类型表bustype(id,name)列名附『卜e TfrI数据类型NULL约束说明idintNotnullprimarykey线路类型编号,共12类nameVarchar(lO)Notnull线路类型名6、公交线路表busline(bus_name,direction,line)此表主要是为了方便依据线路来査询站点信息。列名数据类型NULL约束说明busnamevarchar(4)Notnullprimarykey公司编号directionvarchar(4)Notnull公交行驶方向,“去程”或“回程”linevarchar(500)Notnull公交行驶途径的站点4.2数据表关系图五、创建数据库及其对象5.1建数据库和表下面是创建数据库和表的过程,数据通过手动输入。1、创建数据库createdatabasebuson(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)公交站点createtablestation(idintprimarykeynotnull,namevarchar(15)notnull)公交车表createtablebus(namevarchar(5)primarykeynotnull,start_timedatetimenotnull,end_timedatetimenotnull,buslengthintnotnull,pricefloatnotnull,companyIDintnotnull,typeIDintnotnull,foreignkey(companyID)referencescompany(id),foreignkey(typeID)referencesbus_type(id))公交线路类型表createtablebus_type(idintprimarykeynotnull,namevarchar(5)notnull)公交线路表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),foreignkey(bus_name)referencesbus(name),foreignkey(station_id)referencesstation(id))5.2查询实现这里只介绍线路査询和站站査询的存储过程实现,其它涉及到的功能通过SQLCommand或SqlDataAdapter实现,在后面的应用程序设计中实现。1、 线路具体情况査询:ifexists(selectnamefromsysobjectswherename='busline_info')dropprocedurebusline_infogocreateprocedurebusline_info@inputvarchar(5),@outputvarchar700)outputasbeginselect@output=linefrombuslinewherebusline.bus_name=@inputendgo2、 站点间的点到点路线査询:ifexists(selectnamefromsysobjectswherename='station_station')dropprocedurestation_stationgocreateprocedurestation_station@inputlvarchar30,@input2varchar(30,@output1varchar(5)output,@output2varchar(5)output,@output3varchar(5)output,@output4varchar(30)output,@output5varchar(30)outputasbegindeclare@stationlDlint,@stationID2int—换乘过程中的中间站点declare@id1int,@id2int—记录起点和终点的IDselect@id1=idfromstationwherename=@inputlselect@id2=idfromstationwherename=@input2--查找直达线路select@output1=a.bus_namefrom(selectbus_namefrombus_stationwherestation_id=@id1)a,(selectbus_namefrombus_stationwherestation_id=@id2)bwherea.bus_name=b.bus_name—若不存在直达线路,则搜寻一次换乘路线ifnotexists(select*frombuswherename=@output1)begin--査找中间站点select@stationID1=c.station_idfrom--@input1能直达的站点集合c(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id1))c,--@input2能直达的站点集合d(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2))dwherec.station_id=d.station_idselect@outputl=a.bus_namefrom(selectbus_namefrombus_stationwherestation_id=@id1)a,(selectbus_namefrombus_stationwherebus_station.station_id=@stationIDl)bwherea.bus_name=b.bus_nameselect@output2=a.bus_namefrom(selectbus_namefrombus_stationwherestation_id=@id2)a,(selectbus_namefrombus_stationwherebus_station.station_id=@stationID1)bwherea.bus_name=b.bus_nameend—若不存在直达和一次换乘线路,则搜寻二次换乘路线ifnotexists(select*frombuswherename=@output1)andnotexists(select*frombuswherename=@output2)begin—查找中间线路select@output2=a.bus_namefrom(selectdistinctbus_namefrombus_stationwherestation_idin(selectstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id1)))a,(selectdistinctbus_namefrombus_stationwherestation_idin(selectstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2)))bwherea.bus_name=b.bus_name一査找起点到中间线路的公交车select@stationIDl=a.station_idfrom(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@idl))a,(selectstation_idfrombus_stationwherebus_name=@output2)bwherea.station_id=b.station_idselect@output1=c.bus_namefrom(selectbus_namefrombus_stationwherestation_id=@id1)c,(selectbus_namefrombus_stationwherestation_id=@stationID1)dwherec.bus_name=d.bus_name—査找中间线路到终点的公交车select@stationID2=a.station_idfrom(selectdistinctstation_idfrombus_stationwherebus_namein(selectbus_namefrombus_stationwherestation_id=@id2))a,(selectstation_idfrombus_stationwherebus_name=@output2)bwherea.station_id=b.station_idselect@output3=c.bus_namefrom(selectbus_namefrombus_stationwherestation_id=@id2)c,(selectbus_namefrombus_stationwherestation_id=@stationID2)dwherec.bus_name=d.bus_nameendselect@output4=namefromstationwhereid=@stationIDlselect@output5=namefromstationwhereid=@stationID2end五、软件功能设计软件共实现了3个大功能,即站点査询、线路査询、站站査询,其完成情况如下::检査用户是否输入了站点或线路信息,如果没有录入,则提示:请输入站点!或请输入线路名!:检査用户是否输入的站点或线路是否存在,如果不存在,则提示:此站点不存在!或此线路不存在!:如果信息都填写正确,则根据选定的査询条件进行査找,査找的具体实现为:站点査询:返回经过此站点的所有线路,并提供一条线路经过的所有站点。如果没有结果,则提示:找不到此站点!线路査询:返回此线路的类型、最早和最晚时间、票价、经过站点等信息。站站査询:返回从起点到终点的可行的一条线路,此线路可直达,如果没有直达,则最多换乘两次,并提示在哪里下车换乘,以及所有车辆的站点信息。六、界面设计蛊空圮1儘立鞭磔1:三占曲|七、应用程序7.1站点査询〃査询经过给定站点的公交线路protectedvoidstation_info(stringinput){SqlConnectionmyConnection=newSqlConnection(connectionString);myConnection.0pen();SqlCommandcmd=newSqlCommand("selectbus_station.bus_nameas公?交?线?路jQ名?,busline.directionas方口?向"°,lineas途a?径?站?点1?frombus_station,station,buslinewherestati='"+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[O];GridViewl.DataBind();cmd=null;myConnection.Close();}

右占点召耘■ | JtIKRfi* | |3E沱|盘 琮趙抽自朋江阳丸iKBMffiSBS-也直日尢Mt十JKffili-:i:RE曰丸道歼Jfc畐-抚阳大JltTV.吋杭-四P曰丸垃和•.支堂-仅E曰丈:新ESNMT口-:ffll阳大±lt半楫才寸-颂阳Kilt三日酎并-Y5C.昏耳丸追■瞬fS峙冠切-:F又頤丸jM・t*廿舌临-fff3t:±it3541JZJ--451阳丈S址新去-汶巴白犬城工!34.:5工L-汉阳女如t・hSJ-汉日日二上册锹铀一汶用土血茄卩匸-汶酣尢览新或1-汶审犬逍也铀™-iz阳犬诅越粽UJ_江阳尢tttsi光-四阳土ttt嚥•甸.L圾-注1阳士1£镂㈣丈甘TI=I-4対專丸itt-議回土住f-桑如大掛吉运中怕Ei右)266由・J丄一如丿黑论于心、一演1尢母匸一机1*_丄二31t-汉R曰丈ilLJW+u_丄二・F匚1一四1日曰工_追昭佃广埼一丫就E日丸dlt红址一J31Fff十3tut*JbWLjj一fj?w^=at-±xW一汎阳丸逍新技一版甫丸at»R»—&曰丸at瞇wt—:kb曰丸世冊;可-shle曰夫atncwr:吊HL-泣頭尢进新壬-汶頭尢逍二口4工厂-汶阳丸辻=地港岭-仅明尢遣怏活岭按:®-汉咱尢iJt三im•侨-淑荫迪尢道*抽*扌-:宣阳丸迫盃瘵钳-:味阳丸jJT#.齐但-ffiPPzizUriTrttt+E-汶阳尢诅埒工稼-江任目点)苴王專鸿衣乐權-限阳大:1宜+越輛-汶pm尢d図腳倔站丘日左沖7.2线路查询//査询给定线路的公交车所经过站点protectedstringbusline_infol(stringinput){stringconnectionString=@"server=TXJMlFW3LlGYIC6;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.Data.SqlDbType.VarChar,5);bus_name.Direction=System.Data.ParameterDirection.Input;bus_name.Value=input;myCommand.Parameters.Add(bus_name);〃添加输出参数SqlParameterResultl=newSqlParameter("@output",System.Data.SqlDbType.VarChar,700);Resultl.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Resultl);myCommand.ExecuteNonQueryO;stringstr=Resultl.Value.ToString();returnstr;}管理员登录线昭名称;|旺呂毎 r^~i2safe郊匡扌箜航:船:<«■捡:■»:■»昔遷车珈1.星*LF商芈蛭丰吕计.左卡住立因蘇司丸播宕三=厶-丰自二?if:刍三-冬寻三扫玄「忑-咗匸土宗珞禹专-峪匚-=^^.-土二土审杏合亮吉--十二大审目毘亦i--乎CM圭工、7.3站一站查询〃査询给定起点和终点的公交车线路protectedvoidstation_station(stringinputl,stringinput2){stringconnectionString=@"server=TXJM1FW3L1GYIC6;database=bus;IntegratedSecurity=true";SqlConnectionmyConnection=newSqlConnection(connectionString);myConnection.Open();〃利用SQL中已有的存储过程实现站站査询SqlCommandmyCommand=newSqlCommand("station_station",myConnection);myCommand.CommandType=System.Data.CommandType.StoredProcedure;〃创建参数SqlParameterstation_namel=newSqlParameter("@inputl",System.Data.SqlDbType.VarChar,30);station_name1.Direction=System.Data.ParameterDirection.Input;station_name1.Value=inputl;myCommand.Parameters.Add(station_name1);SqlParameterstation_name2=newSqlParameter("@input2",System.Data.SqlDbType.VarChar,30);station_name2.Direction=System.Data.ParameterDirection.Input;station_name2.Value=input2;myCommand.Parameters.Add(station_name2);//添加输出参数SqlParameterResultl=newSqlParameter("@outputl",System.Data.SqlDbType.VarChar,5);Resultl.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Resultl);SqlParameterResult2=newSqlParameter("@output2",System.Data.SqlDbType.VarChar,5);Result2.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Result2);SqlParameterResult3=newSqlParameter("@output3",System.Data.SqlDbType.VarChar,5);Result3.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Result3);SqlParameterResult4=newSqlParameter("@output4",System.Data.SqlDbType.VarChar,30);Result4.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Result4);SqlParameterResult5=newSqlParameter("@output5",System.Data.SqlDbType.VarChar,30);Result5.Direction=System.Data.ParameterDirection.Output;myCommand.Parameters.Add(Result5);myCommand.ExecuteNonQueryO;stringstr1,str2,str3,str4,str5;str1=Resultl.Value.ToString();str2=Result2.Value.ToString();str3=Result3.Value.ToString();str4=Result4.Value.ToString();str5=Result5.Value.ToString();myConnection.CloseO;〃界面提示信息if(stri==""&&str2==""&&str3==""){lab4_text.Text="没有找到合适的路线";}elseif(stri!=""&&str2!=""&&str3==""){lab4_text.Text="您可以先乘坐"+stri+"在"+str4+"下车,"+"再乘坐"+str2;lab5_name.Text=stri+"公交线路:";lab5_line.Text=busline_infoi(stri);lab6_name.Text=str2+"公交线路:";lab6_line.Text=busline_infoi(str2);}elseif(stri!=""&&str2==""&&str3==""){lab4_text.Text="您可以直接乘坐"+stri;lab5_name.Text=stri+"公交线路:";lab5_line.Text=busline_infoi(stri);}elseif(stri!=""&&str2!=""&&str3!="")

{lab4_text.Text="您可以先乘坐"+str1+"在"+str4+"下车,"+"再乘坐"+str2+"在"+str5+"下车,"+"最后再转乘"+str3+"即可";lab5_name.Text=str1+"公交线路:";lab5_line.Text=busline_info1(stri);lab6_name.Text=str2+"公交线路:";lab6_line.Text=busline_info1(str2);lab7_name.Text=str3+"公交线路:";lab7_line.Text=busline_info1(str3);}}官理员登录再垂坐更贏率在溟阳尢唾炉隣圖126SJh艺宏輪跆;严勻天空盘信4匸-底旬丸世-盖疋鼻幻击-E:-呂泣天半沽主帝-疑迂犬车??土和-衣工古M2*总念:刍-冬卫天学倍生牛-洗汇工左台能S:幷-庄迂立左C92S:25655艺宏錨路;坯可七疋客込=二…姿旬九崛-忙巧■立:S:-说0K:诅靶転去疋匚-氓闭土注窃旦一浜-汉过H洙-氓问土上!刑五」-二円七谑心=3-汉归七注F右-滾0大進;ra-沒e去-■sot土at昙同-•決田主潼3対吕工厂-■sotj^h虽天-s^jtias&LiJcr-況阳立淤决注餐-淫旧云道宗亡鹫亲炀一炸大■三Eft侨-決霞K:進站程村-湿甲亢ay虽-汎扇天進①s?Jt-次国衣ft市肿bl-汛库k过好云宇-运回挖這:王吊曲星:丽相-迅帀七苣一吕畦-迄■阳天進朗如圧(託结』右Z5跻扯•交恣略::7TJ■題誌也忙氏二m扮二:?爲序工丄困-床堀siji址弁廿区-■wnr常神走小学一w»Wi=-t--宁鹿謬-车期Mt跡味有*心-裔强大址三e建-莽霁丈:■堂兰屯眄-示拦交五尬回弋-7iraxii.<tE*o-龙归大迪升自融屮匡-龙日龙址丹宜潼-毘阳丸壇用画明殊-龙;阳担lit商昨-龙■扫丸城血專衣密-tes丸送苗星L-龙境三离;丐-罠疋丈细:三夢两寥.m厲-3kraXji-4-■>!-罠F3K工幣BKS-空同大城七星启-N阳兀坦更里为-鼠勺丸爼丟里新目-KEI玄道说阳火卑N-疋用丸窪曲事时-鷗硒丸诡吉#台-武舲4東牙極-啊歹此痒-“甲1?航空骂一n坪時盘修詰-勺薛菇tr揭呵-h*■皓相溜-垢^墙戏可旦s/s-莎目莊冥去卄「區八、实验数据示例l、bus表(存放公交车次有关信息数据)2、bus_type2、bus_type表(存放公交车类型数据)3、bus_type表(存放公交公司数据)id|name1>1V2公处_处司3呂交一注司斗吴寺叫定司5公竺土L公司67孔孤江豆》立…3迪恒电司10NULfM.JL£nane£ldf1_tiiesdjrie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论