




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...26/29...毕业设计说明书学生学号学院专业计算机科学与技术(软件工程)题目基于web的城市公交查询系统设计与实现指导教师讲师/硕士(姓名)(专业技术职称/学位)2013年5月毕业论文独创性声明本人重声明:本论文是我个人在导师指导下进行的研究工作与取得的研究成果。本论文除引文外所有实验、数据和有关材料均是真实的。尽我所知,除了文中特别加以标注和致的地方外,论文中不包含其他人已经发表或撰写过的研究成果。其他同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了意。作者签名:日期:摘要:随着信息化时代的推进,各个行业都在采用信息化的管理方式。城市公交的查询也可以依托计算机技术,来更好的为乘客提供信息服务,提高工作效率,降低乘客出行成本。如此才能提高公交在各出行方式中的竞争力。本设计是以MicrosoftSQLServer2005作为后台数据库开发,以VisualStudio2008作为开发平台,开发的基于ASP.NET的城市公交查询系统。该系统主要包括以下功能模块:乘客前台查询和管理员后台管理。前台查询包括换乘查询、线路查询、站点查询、评价统计,后台管理模块则通过管理员登录后分别实现对站点、线路的添加、删除、修改。本论文详细介绍了各模块的设计与实现。关键词:公交,ASP.NET,查询,数据库Abstract:Withtheadvancementoftheinformationage,allindustriesininformationmanagement.Urbanpublictransportqueriescanrelyoncomputertechnology,toprovidepassengerswithabetterservice,improveefficiency,reducethecostofpassengertravel.ThedesignisbasedonMicrosoftSQLServer2005astheback-enddatabasedevelopmentasadevelopmentplatform,VisualStudio2008,thedevelopmentofurbanpublictransportquerysystembasedonASP.NET.Thesystemincludesthefollowingfunctionalblocks:PassengersfrontandadministratorsAdmin.Thefrontdeskqueryincludes:TransferInquirylineinquiry,sitefortheevaluationofthestatistics,thebackgroundmanagementmoduleaddedtothesite,linebytheadministratorlogin,delete,modify.Thispaperintroducesthedesignandimplementationofeachmodule.Keywords:BUS,ASP.NET,Inquiry,Database目录1前言41.1课题背景42系统的开发工具与环境42.1ASP.NET简介42.2系统的开发要求53需求分析53.1功能需求分析54设计准备64.1功能模块划分64.2数据库设计64.2.1数据库概念结构设计64.2.2数据库逻辑结构设计85详细设计与实现105.1关于数据库操作105.2功能实现115.2.1主界面115.2.1站点查询115.2.2线路查询125.2.3换乘查询145.3后台管理175.3.1管理员登录175.3.2添加、修改、删除站点185.3.3添加、修改、删除车次205.4评价管理236测试246.1开发过程遇到问题246.2进一步研究工作25结束语26参考文献27致281前言1.1课题背景交通是每个城市发展的标志,便捷通达的交通系统能合理有效的改善交通拥塞、能源紧、噪声干扰、废气污染等一系列问题,推动城市的建设与进步。当下城际轻轨、地铁最快捷便利,但是运营成本过高,只能在一些发达城市运行,老牌公交车则经久不衰,以其低成本高亲民度,健硕存在于各个级别的城市,服务着广大群众。为了更好的了解城市的公交运行系统,方便人们的出行,开发了本系统。该系统,有利于公交公司随时将公交最新信息发布到网上,乘客能够无门槛登录该系统查询公交信息。系统分为前台和后台,前台能够供登录系统的用户访问,后台由公交公司管理人员进行维护。该系统的核心功能为公交车信息的查询,查询分为站点换乘查询、公交站点查询、公交线路查询。站点换乘查询是用户输入起止站点名称,查询出如何乘车到达,要求能够查询出所有直达车次与二次换乘可到达的车次;公交站点查询是用户输入公交站点,查询出经过此站点的所有车次,并能够查看该车次详细信息;公交线路查询是用户输入指定车次,查询出此车次的详细信息。2系统的开发工具与环境2.1ASP.NET简介ASP.NET是基于通用语言的编译运行的程序,它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。ASP.NET建立在.NETFramework的编程类之上,它提供了一个Web应用程序模型,并且包含使生成ASPWeb应用程序变得简单的控件集和结构。ASP.NET包含封装公共HTML用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在Web服务器上运行,并以HTML的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为Web开发人员提供了面向对象的编程的丰富性。ASP.NET还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,ASP.NET使用这些同样的概念使开发人员能够以服务的形式交付软件。使用XMLWebservices功能,ASP.NET开发人员可以编写自己的业务逻辑并使用ASP.NET结构通过SOAP交付该服务。VisualStudio2008是一套完整的开发工具,用于生成ASPWeb应用程序、XMLWebservices、桌面应用程序和移动应用程序。VisualBasic2008、VisualC++.NET、VisualC#.NET和VisualJ#.NET全都使用一样的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了.NETFramework的功能,此框架提供对简化ASPWeb应用程序和XMLWebservices开发的关键技术的访问。2.2系统的开发要求该公交查询系统对操作系统的要求如下:硬件要求:1.CPU:最低IntelPentiumII500MHz2.磁盘空间:250MB(完全安装),155MB(快速安装)。3.存:512MB(最好1GB以上)。4.显示:1024*768,256色。软件要求:1.操作系统:Windows2000以上的操作系统。2.开发平台:VisualStudio2008,MicrosoftSQLServer2005。3需求分析3.1功能需求分析本公交查询系统以作为背景城市,其余城市可参照修改同样适用。本系统不仅能给广大熟悉路线的本地市民提供便利,更加能为其他来到出差、旅游的朋友带来方便。开发本系统的目标就是立足广大乘客的实际,着眼于公交业的未来发展,规公交管理,提高服务质量,方便乘客查询。本系统采用结构化设计的方法以实现系统总体功能,即将整个系统划分为各个功能模块,正确处理模块之间和模块部的联系以与和数据库的联系,通过对各模块的设计和模块之间关系的安排;来系统实现整个系统的功能。前台主要有4个模块:换乘查询、线路查询、站点查询、评价统计,后台管理模块则通过管理员登录后分别实现对站点、线路的添加、删除、修改。前台主要向用户提供换乘查询、车次查询、站点查询等查询方式,具体实现如下功能:1.换乘查询:输入起始站名与终点站名,系统会输出所有的公交路线方案;2.车次查询:输入已知的车次,系统会输出该车次经过的所有站点名;3.站点查询:输入已知的站点名,系统会输出经过该站点的所有车次。数据库会提供给用户全部的信息,用户可以根据自己的实际情况进行选择,另外,用户可以在系统左下角的评价栏投出自己宝贵的一票,系统将对结果进行统计分析,实现用户与公交公司的良好互动。后台由管理员输入其指定账号与密码对数据库进行管理,实现站点的添加、删除、修改,线路的添加、删除、修改。系统模块如图3-1所示:图3-1系统模块图4设计准备4.1功能模块划分通过需求分析,可以确定该系统应完成的功能包括:1.前台功能:主要实现乘客对车辆信息的查询,包括站点间换乘查询、车次查询、站点查询;其次通过评价统计来实现乘客与公交公司的互动。2.后台功能:主要实现公交公司管理员对车辆信息的维护,包括线路信息的添加、删除、修改和站点信息的添加、删除、修改。4.2数据库设计通过需求分析,本系统在概要设计阶段得到五个数据实体:公交车次、公交站点、公交线路、管理员、评价。这些实体的属性均按照用户需求中的输入输出数据设定,故应该根据这五个实体设计五种类型的数据库表:公交车次表、公交站点表、不同车次线路表、管理员表、评价统计表。4.2.1数据库概念结构设计所谓概念结构设计,就是将需求分析得到的用户需求抽象为信息结构。概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定,它是整个数据库的关键。概念结构设计的特点:1.能真实、充分地反映现实世界,是对现实世界的一个真实模型。2.易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成果的关键。3.易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。4.易于向关系、网状、层次等各种数据模型转换。在系统设计的开始,首先应该考虑如何用数据模型来描述数据库的结构和语义,以对现实世界进行抽象。“实体联系模型”(E-R模型)独立于计算机系统用的较为广泛,本系统也充分应用了它。E-R模型直接从现实世界抽象出实体类型与实体间联系,然后用E-R图来表示数据模型。它更接近人都思维,容易理解;与计算机无关,用户更容易接受,但它只是数据库设计的第一步。E-R图是直观表示概念模型的工具,它有三个基本成分:1.矩形框,表示实体类型(考虑问题的对象)。2.菱形框,表示联系类型(实体间的联系)。3.椭圆形框,表示实体的属性。该系统实体和属性的定义如下:管理员表E-R图(登录ID,登录,登录密码)图4-1管理员表E-R图各站集合表E-R图(站名ID,站名)图4-2各站集合表E-R图各条线路表E-R图(站名ID,次序,站名)图4-3各条线路表E-R图各条线路集表E-R图(车辆ID,车次,始发站,末站,运行区间,线路描述,IC卡类型,票价,首班车时间,服务类型,末班车时间)图4-4各条线路集表E-R图评价表E-R图(评价程度,票数)图4-5评价表E-R图4.2.2数据库逻辑结构设计本系统采用MicrosoftSQLServer2005数据库管理系统,该系统不仅能满足最大的数据处理系统和商业Web站点存储数据的需要,还能为个人或小企业提供易于使用的数据存储服务。之所以使用MicrosoftSQLServer2005就是因为它是一个企业级的集成商业智能的全面的数据库平台,MicrosoftSQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使设计者可以构建和管理用于业务的高可用和高性能的数据应用程序。本系统创建的SQL数据库名称为城市公交查询系统,并将数据文件和日志文件保存在APP_DATA文件夹中。此数据库包含5类表,分别是管理员表、各站集合表、各条线路表、各条线路集合表、评价表。(1)管理员表管理员表存放管理员登录系统所需要的用户名和密码,管理员登录后台时需要访问此表。表4-1管理员表字段名数据类型长度是否允许空是否为主键说明AdminIdint3否是登录IDAdminNamenchar(3)20否否登录AdminPasswordnchar(6)20否否登录密码(2)各站集合表各站点集合表存放所有站点名、编号与描述,此表中的站点是各条线路表中的站点的集合即所有线路中的站点。表4-2各站集合表字段名数据类型长度是否允许空是否为主键说明SiteIDint10否否站点IDSiteNamenchar(10)10否否站点名SiteDescribenchar(50)50是否站点描述(3)各条线路表各条线路表是存放各线路信息的表。表4-3各条线路表字段名数据类型长度是否允许空是否为主键说明SiteIdint10否否站点IDSiteNamenchar(10)10否否站名SiteDescribenchar(50)50是否站点描述cixuint5否否线路中站点次序(4)各条线路集合表各条线路集合表是所有线路的集合表,存储了所有线路的ID和一些基本信息。表4-4各条线路集合表字段名数据类型长度是否允许空是否为主键说明LineIdint10否是线路IDLineNamenchar(10)10否否线路名称LineAreanchar(10)10否否线路区间LinePricenchar(10)10否否票价LineStartPlacenchar(10)10否否始发站LineEndPlacenchar(10)10否否末站LineStartTimenchar(10)10否否早班车时间LineEndTimenchar(10)10否否末班车时间LineICbit5否否IC卡类型LineDescribenchar(80)80是否线路描述(5)评价表评价表用于用户对本系统的评价统计,存储不同评价的票数,饼图统计时调用这表。表4-5评价表字段名数据类型长度是否允许空是否为主键说明评价程度nchar(10)10否是评价程度票数int5是否票数5详细设计与实现5.1关于数据库操作在动态中,调用数据库中的数据是十分频繁的,为了数据库的安全性,本程序将所有数据库的操作封装到DBConnect类中并放于DBConnect.cs文件中。开发人员在实现其他功能时,可以在此类中写函数然后调用,避免零散的重复的操作数据库。本系统的数据库的连接代码如下:publicstaticSqlConnectioncreateConnection(){SqlConnectioncon=newSqlConnection("DataSource=SUNNANYUN;InitialCatalog=Bus;IntegratedSecurity=True");returncon;}为了不反复的访问数据库,记录了一些基本信息,声明了以下成员变量:privateintSiteCount;//记录站点的总个数privateintLineCount;//记录线路的总个数privateint[]line;//保存每条线路5.2功能实现5.2.1主界面任意乘客、用户都可以登录这个公交查询系统的主界面进行查询。该界面简洁、方便,一目了然的可以进入三大主要查询模块、管理员登录模块、评价模块,为各类用户提供便利。主界面见下图5-1:图5-1主界面图5.2.1站点查询任意用户登录该公交查询均可进行站点查询。用户需输入站点全称,点击查询按钮后,系统会在数据库中检测该站点是否存在,如果存在,将显示经过该站点所有的公交线路情况,如果不存在将提示该站点不存在。该站点查询界面如图5-2所示:图5-2站点查询图该功能的实现,从textbox获取站点名称sitename,获取到sitename后,首先查询站点总表里是否存在该站点,若不存在,则count赋值为0,显示提示信息。若存在站点,则遍历所有的线路表查找站点,若某路线存在该站点,则记录该线路,存于数组Line。count用于统计经过该站点的线路的个数。ref关键字使参数count按引用传递。其效果是,当控制权传递回调用方法时,在方法中的count所做的任何更改都将反映在该变量中。主要实现代码如下:publicvoidGetSiteLine(string[]Line,stringsitename,refintcount){SqlConnection=createConnection();.Open();stringstr="selectcount(*)fromsitewheresitename='"+sitename+"';";SqlCommandcmd=newSqlCommand(str,);if(Convert.ToInt32(cmd.ExecuteScalar().ToString())==0){count=0;.Close();}else{inti=0;for(intj=0;j<LineCount;j++){cmdmandText="selectcount(*)fromLine"+line[j]+"whereSiteName='"+sitename+"'";if(Convert.ToInt32(cmd.ExecuteScalar().ToString())>0){Line[i++]=line[j].ToString();}}count=i;.Close();}}5.2.2线路查询任意用户登录该公交查询均可进行线路查询。用户可以在下拉列表显示的所有线路中找到自己想查询的线路,点击查询,系统就会显示该线路去程、回程与一些相关信息。该线路查询界面如图5-3所示:图5-3线路查询图该功能的实现,首先从dropdownlist获取线路名称linename,然后从线路集合表中获取该线路的信息存于数组sLineTotal中,并通过线路集合表LineID,获取该路线的所有站点,存于数组line中,count用于统计该线路所有站点的个数。主要实现代码如下:publicvoidGetLine(string[]sLineTotal,string[]line,stringlinename,refintcount){SqlConnection=createConnection();.Open();stringstr="select*fromlinetotalwherelinename='"+linename+"';";SqlCommandcmd=newSqlCommand(str,);SqlDataReaderreader=cmd.ExecuteReader();if(reader.HasRows)//从linetotal中获取信息{if(reader.Read()){sLineTotal[0]=reader.GetValue(0).ToString().Trim();sLineTotal[1]=reader.GetValue(1).ToString().Trim();sLineTotal[2]=reader.GetValue(2).ToString().Trim();sLineTotal[3]=reader.GetValue(3).ToString().Trim();sLineTotal[4]=reader.GetValue(4).ToString().Trim();sLineTotal[5]=reader.GetValue(5).ToString().Trim();sLineTotal[6]=reader.GetValue(6).ToString().Trim();sLineTotal[7]=reader.GetValue(7).ToString().Trim();sLineTotal[8]=reader.GetValue(8).ToString().Trim();sLineTotal[9]=reader.GetValue(9).ToString().Trim();}reader.Close();cmdmandText="selectsitenamefromLine"+sLineTotal[0].ToString().Trim()+";";reader=cmd.ExecuteReader();if(reader.HasRows)//从具体的公交线路中获取站点顺序信息{intn=0;while(reader.Read()){line[n++]=reader.GetValue(0).ToString().Trim();}count=n;}}else{.Close();}}5.2.3换乘查询任意用户登录该公交查询均可进行换乘查询。用户可输入出发站和到达站,系统会检测是否存在该站点,若存在则会检测这两个站点是否有直达车,如果没有则会进行一次换乘。该换乘查询界面如图5-4所示:图5-4换乘查询图该功能首先从textbox里获取出发站点名StartSite和到达站点名EndSite,然后判断是否存在这两个站点,若不存在,则给出提示,否则,分别搜索包含StartSite、EndSite的路线存于临时数组StartSiteLineId和EndSiteLineId中。分两种情况讨论,1.直达,遍历两条线路的所有组合,判断,如果存在路线一样的,则表示可直达。2.需换乘一次,在遍历两条线路的所有组合的前提下,若经过StartSite的路线中有和经过EndSite的路线有一样的站点,则表示可换乘一次到达。主要实现代码如下://count用于记录方案个数其中-1表示不存在StartSite站点,-2表示不存在EndSite-3表示直达//Line[m,]m是表示换成的方案个数的,Line[m,0]车次1,Line[m,1]StartSite到中转站点的站数,Line[m,2]中转站点,Line[m,3]车次2,Line[m,4]中转站点到EndSite的站数publicvoidGetSiteLineHuanCheng(string[,]Line,stringStartSite,stringEndSite,refintcount){int[]StartSiteLineId=newint[21];//记录包含StartSite的路线int[]EndSiteLineId=newint[21];//记录包含EndSite的路线SqlConnection=createConnection();.Open();//判断是否存在StartSite站点stringstr="selectcount(*)fromsitewheresitename='"+StartSite+"';";SqlCommandcmd=newSqlCommand(str,);if(Convert.ToInt32(cmd.ExecuteScalar().ToString())==0){count=-1;.Close();return;}//判断是否存在EndSite站点cmdmandText="selectcount(*)fromsitewheresitename='"+EndSite+"';";if(Convert.ToInt32(cmd.ExecuteScalar().ToString())==0){count=-2;.Close();return;}//搜索包含StartSite的路线inti=0;intj=0;for(j=0;j<LineCount;j++){cmdmandText="selectcount(*)fromLine"+line[j]+"whereSiteName='"+StartSite+"'";if(Convert.ToInt32(cmd.ExecuteScalar().ToString())>0){StartSiteLineId[i++]=line[j];}}StartSiteLineId[i]=-1;//用于终止判断//搜索包含EndSite的路线i=0;j=0;for(j=0;j<LineCount;j++){cmdmandText="selectcount(*)fromLine"+line[j]+"whereSiteName='"+EndSite+"'";if(Convert.ToInt32(cmd.ExecuteScalar().ToString())>0){EndSiteLineId[i++]=line[j];}}EndSiteLineId[i]=-1;//用于终止判断//当两个站点处于同一条路线时,即直达for(i=0;i<20&&StartSiteLineId[i]!=-1;i++){for(j=0;j<20&&EndSiteLineId[j]!=-1;j++){if(StartSiteLineId[i]==EndSiteLineId[j]){count=-3;Line[0,0]=StartSiteLineId[i].ToString().Trim();//记录第几路车cmdmandText="selectcixufromLine"+Line[0,0]+"whereSiteName='"+EndSite+"'";//获得EndSite的次序intend=Convert.ToInt32(cmd.ExecuteScalar().ToString());cmdmandText="selectcixufromLine"+Line[0,0]+"whereSiteName='"+StartSite+"'";//获得StartSite的次序intstart=Convert.ToInt32(cmd.ExecuteScalar().ToString());Line[0,1]=Math.Abs(end-start).ToString();.Close();return;}}}intk=0;//用于记录当前的方案个数,用于数组Line[k,]//用于判断换乘的,换乘一次for(i=0;i<20&&StartSiteLineId[i]!=-1&&k<8;i++){int[]startsite=newint[35];//用于记录每条路线的站点idcmdmandText="selectsiteidfromLine"+StartSiteLineId[i]+";";SqlDataReaderreader=cmd.ExecuteReader();if(reader.HasRows){intnum=0;while(reader.Read()){startsite[num++]=Convert.ToInt32(reader.GetValue(0).ToString().Trim());}startsite[num]=-1;}reader.Close();for(j=0;j<20&&EndSiteLineId[j]!=-1&&k<8;j++){int[]endsite=newint[35];//用于记录每条路线的站点idcmdmandText="selectsiteidfromLine"+EndSiteLineId[j]+";";reader=cmd.ExecuteReader();if(reader.HasRows){intnum=0;while(reader.Read()){endsite[num++]=Convert.ToInt32(reader.GetValue(0).ToString().Trim());}endsite[num]=-1;}reader.Close();intLogo=0;//用来控制下面两个循环的//寻找两条线路中两条线路的一样站点for(intm=0;m<35&&startsite[m]!=-1&&Logo==0;m++){for(intn=0;n<35&&endsite[n]!=-1&&Logo==0;n++){if(startsite[m]==endsite[n]){cmdmandText="selectcixufromLine"+StartSiteLineId[i]+"wheresitename='"+StartSite+"';";intstart=Convert.ToInt32(cmd.ExecuteScalar().ToString());cmdmandText="selectcixufromLine"+EndSiteLineId[j]+"wheresitename='"+EndSite+"';";intend=Convert.ToInt32(cmd.ExecuteScalar().ToString());cmdmandText="selectsitenamefromsitewheresiteid="+startsite[m]+";";Line[k,0]=StartSiteLineId[i].ToString();Line[k,1]=Math.Abs(m+1-start).ToString();//m+1就相当于是这点的次序Line[k,2]=cmd.ExecuteScalar().ToString().Trim();Line[k,3]=EndSiteLineId[j].ToString();Line[k,4]=Math.Abs(n+1-end).ToString();Logo=1;//跳出上面两个循环k++;}}}//endfor}//endfor(j=0;j<20&&EndSiteLineId[j]!=-1;j++)}//endfor(i=0;i<20&&StartSiteLineId[i]!=-1;i++)count=k;.Close();}5.3后台管理5.3.1管理员登录此模块为管理员登录后台服务,只要管理员输入正确的用户名、密码就能登录后台对数据库进行修改管理。界面如图5-5所示:图5-5管理员登录图该功能实现,首先分别从textbox中获取ID信息存入id,密码信息存入pass,判断非空的情况下查询管理员表,ID、密码一致的情况下允许进入后台管理。主要实现代码如下:publicboolLogin(stringid,stringpass){SqlConnection=createConnection();.Open();SqlCommandcmd=newSqlCommand("SELECTCount(*)FROMAdminWHEREAdminId='"+id+"'ANDAdminPassword='"+pass+"'",);intcount=Convert.ToInt32(cmd.ExecuteScalar());.Close();if(count>0){returntrue;}elsereturnfalse;}5.3.2添加、修改、删除站点对于新出现的一些站点,本系统具有添加功能,对于旧站点更名后的修改,本系统具有修改功能,对于旧站点的废除,本系统具有删除功能。管理员登录后台后,可以通过添加、修改、删除操作对各站点集合的表进行管理。三个功能的界面相似,只贴出添加界面,界面如下图5-6所示:图5-6添加站点图1.站点添加功能将输入textbox的站名存入数组name、站点描述存入数组SiteDescribe,然后添加到总站点表中,同时记录站点总个数的变量SiteCount要+1。实现的主要代码如下:publicboolZhandianAdd(stringname,stringSiteDescribe){SqlConnection=createConnection();.Open();SiteCount++;SqlCommandcmd=newSqlCommand("insertintoSite(SiteID,SiteName,SiteDescribe)values("+SiteCount+",'"+name+"','"+SiteDescribe+"')",);if(cmd.ExecuteNonQuery()>0){.Close();returntrue;}else{SiteCount--;.Close();returnfalse;}returnfalse;}2.删除站点功能将textbox中输入的信息存入数组name中,从站点总表中删除该站点,SiteCount要-1,同时遍历所有线路表,若表中含有该站点也要删除,具体代码如下:publicboolDeleteZhandian(stringname){SqlConnection=createConnection();.Open();SqlCommandcmd=newSqlCommand("deletefromSitewhereSiteName='"+name+"'",);if(cmd.ExecuteNonQuery()>0){SiteCount--;for(intj=0;j<LineCount;j++){cmdmandText="deletefromLine"+line[j]+"whereSiteName='"+name+"'";cmd.ExecuteNonQuery();}.Close();returntrue;}else{.Close();returnfalse;}returnfalse;}3.修改站点,将textbox中输入的旧站点名存入数组oldname中,新站点名存入数组newname中,对站点总表和各线路表中的站点名分别进行修改,具体代码如下:publicboolChangeZhandian(stringoldname,stringnewname){SqlConnection=createConnection();.Open();SqlCommandcmd=newSqlCommand("updateSitesetSiteName='"+newname+"'whereSiteName='"+oldname+"'",);if(cmd.ExecuteNonQuery()>0){for(intj=0;j<LineCount;j++){cmdmandText="updateSitesetSiteName='"+newname+"'whereSiteName='"+oldname+"'";cmd.ExecuteNonQuery();}.Close();returntrue;}else{.Close();returnfalse;}returnfalse;}5.3.3添加、修改、删除车次对于新出现的一些车次,本系统具有添加功能;对于旧车次更改后的修改,本系统具有修改功能;对于旧站点的废除,本系统具有删除功能。管理员登录后台后,可以通过添加、修改、删除操作对各车次的表进行管理。添加、修改车次的界面相似,只贴出添加车次的界面,界面如下图5-7所示:图5-7添加车次图1.添加车次用string[]addcheci保存界面上输入的一些信息,包括车次ID,运行区间,服务类型,IC卡类型,票价,首末班车时间,途经站点等等,然后传入数据库的添加车次函数,完成添加功能。数据库添加时,首先在LineTotal中添加车次信息,然后建表,存储站点次序等信息。其中若要添加的站点在Site表中没有,还要进行站点添加操作,保持站点一致。站点的添加操作是动态的,在途经站点输入要添加的站点名,点击“添加”按钮,则下方会动态显示站点,直到按确定键完成添加操作。//“添加”按钮功能staticintnLabelCount=5;//static是关键,每次触发一个时间页面都会刷新一次,变量会重新赋值,但是static修饰的变量可以直到页面结束,生命周期才结束,这样可以用来动态显示输入的站点protectedvoidButton1_Click(objectsender,EventArgse){if(TextBox5.Text==""){Page.RegisterStartupScript("alert","<script>alert('添加站点失败!');</script>");}else{stringsLabel1="Label"+nLabelCount;nLabelCount++;stringsLabel2="Label"+nLabelCount;nLabelCount++;Labellabel1=(Label)this.FindControl(sLabel1);//可以根据空间名字找到对应的控件,方便我显示容Labellabel2=(Label)this.FindControl(sLabel2);label1.Visible=true;label2.Visible=true;label1.Text=this.TextBox5.Text.ToString().Trim();label2.Text="--";}}//车次添加publicboolAddCheci(string[]addcheci){SqlConnection=createConnection();.Open();stringstr="select*fromLineTotalwherelineid="+addcheci[0]+";";SqlCommandcmd=newSqlCommand(str,);if(cmd.ExecuteScalar()==null){boolb=true;str="insertintoLineTotalvalues("+addcheci[0]+",'"+addcheci[0]+"路','"+addcheci[1]+"','"+addcheci[2]+"','"+addcheci[3]+"','"+addcheci[4]+"','"+addcheci[5]+"','"+addcheci[6]+"','"+b+"','');";cmdmandText=str;intnum=cmd.ExecuteNonQuery();if(num>0){str="createtableLine"+addcheci[0]+"(SiteIdintnotnull,"+"SiteNamechar(10)notnull,"+"SiteDescribechar(50),"+"Cixuintnotnull,"+");";cmdmandText=str;cmd.ExecuteNonQuery();for(inti=7;addcheci[i]!=null;i=i+1){cmdmandText="selectcount(*)fromsitewheresitename='"+addcheci[i]+"';";if(Convert.ToInt32(cmd.ExecuteScalar().ToString().Trim())==0){cmdmandText="insertintositevalues("+(++SiteCount)+",'"+addcheci[i]+"','');";cmd.ExecuteNonQuery();}cmdmandText="selectsiteidfromsitewheresitename='"+addcheci[i]+"';";intsiteid=0;siteid=Convert.ToInt32(cmd.ExecuteScalar().ToString().Trim());cmdmandText="insertintoLine"+addcheci[0]+"values("+siteid+",'"+addcheci[i]+"','"+""+"',"+(i-6)+");";if(cmd.ExecuteNonQuery()==0){cmdmandText="droptableLine"+addcheci[0]+";";cmd.ExecuteNonQuery();}}.Close();returntrue;}else{cmdmandText="deletefromLineTotalwhereLineId="+addcheci[0]+";";cmd.ExecuteNonQuery();.Close();returnfalse;}}else{.Close();returnfalse;}.Close();returnfalse;}2.修改车次修改车次功能和添加车次类似,就是该路线表是有的,不需要建表,然后其他的和添加类似。3.删除车次删除车次功能只需从dropdownlist选择要删除的车次,首先从Linetotal中删除车次信息,然后删除这个车次表。publicboolDeleteCheci(stringname){SqlConnection=createConnection();.Open();SqlCommandcmd=newSqlCommand("selectLineIdfromLineTotalwhereLineName='"+name+"'",);intlineid=Convert.ToInt32(cmd.ExecuteScalar().ToString());cmdmandText="deletefromLineTotalwhereLineName='"+name+"'";if(cmd.ExecuteNonQuery()>0){cmdmandText="droptableLine"+lineid;cmd.ExecuteNonQuery();intk=0;.Close();returntrue;}else{.Close();returnfalse;}returnfalse;}5.4评价管理为了与使用该公交查询系统的用户达成互动,该系统制作了一个评价的独立控件组,并用MsChart制作了评价票数的统计饼图。MsChart是微软发布的.NET3.5框架下的图表控件,可以支持各种各样的图形显示,常见的:点状图、饼图、柱状图、曲线图、面积图、排列图等等,同时也支持3D样式的图表显示,支持图形上各个点的属性操作,它可以定义图形上各个点、标签、图形的提示信息(Tooltip)以与超级。评价功能界面如下图5-8,统计饼图如下图5-9:图5-8用户评价图图5-9饼图实现图用户可以选择“很好”,“还可以”,“一般”,“仍需改进”,“很差”四个选项,进行评价,如图5-8。用户可以在图5-9上查看实时的评价结果,可以有多种显示方式,饼图,同心圆,3D等等。由于数据库操作简单,只是数据的添加功能,代码省略。MsChart属性定义的相关代码:protectedvoidPage_Load(objectsender,EventArgse){//Populateseriesdatadouble[]yValues=newdouble[5];string[]xValues=newstring[5];DBConnectdb=newDBConnect();db.GetPingjiaData(xValues,yValues);Chart1.Series["Series1"].Points.DataBindXY(xValues,yValues);if(this.ChartTypeList.SelectedItem.ToString()=="Pie")Chart1.Series["Series1"].ChartType=SeriesChartType.Pie;elseChart1.Series["Series1"].ChartType=SeriesChartType.Doughnut;if(this.ShowLegend.Checked)Chart1.Series["Series1"]["PieLabelStyle"]="Disabled";elseChart1.Series["Series1"]["PieLabelStyle"]="Inside";//SetcharttypeandtitleChart1.Series["Series1"].ChartType=(SeriesChartType)Enum.Parse(typeof(SeriesChartType),this.ChartTypeList.SelectedItem.ToString(),true);if(ChartTypeList.SelectedItem.ToString()=="Doughnut"){Chart1.Titles[0].Text="评价情况双环图显示";}else{Chart1.Titles[0].Text="评价情况饼图显示";}//SetlabelsstyleChart1.Series["Series1"]["PieLabelStyle"]=this.LabelStyleList.SelectedItem.ToString();//SetDoughnutholesizeChart1.Series["Series1"]["DoughnutRadius"]=this.HoleSizeList.SelectedItem.ToString();//DisableDoughnutholesizecontrolforPiechartthis.HoleSizeList.Enabled=(this.ChartTypeList.SelectedItem.ToString()!="Pie");//Explodeselectedcountryforeach(DataPointpointinChart1.Series["Series1"].Points){point["Exploded"]="false";if(point.AxisLabel==this.ExplodedPointList.SelectedItem.ToString()){point["Exploded"]="true";}}//Enable3DChart1.ChartAr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国增韧母料数据监测研究报告
- 2025年军队文职人员招聘之军队文职教育学模拟考试试卷A卷含答案
- 2019-2025年消防设施操作员之消防设备初级技能模拟考试试卷A卷含答案
- 2021-2022学年广东省广州四中初中部逸彩校区七年级(下)期中数学试卷(含答案)
- 2025年天津市专业技术人员公需考试试题-为中国式现代化提供强大动力和制度保障-党的二十届三中全会暨《中共中央关于进一步全面深化改革、推进中国式现代化的决定》总体解读
- 高等教育自学考试《00074中央银行概论》模拟试卷一
- 2025年大学英语六级考试预测试卷一
- 2023年同等学力申硕《英语》试题真题及答案
- 美容整形手术服务合同协议
- 纺织服装产品质量免责承诺书
- 2025年海南海口市水务局招聘事业单位人员35人历年高频重点模拟试卷提升(共500题附带答案详解)
- COP生产一致性控制计划
- 2025年电力人工智能多模态大模型创新技术及应用报告-西安交通大学
- 天津2025年天津市机关后勤事务服务中心分支机构天津市迎宾馆招聘2人笔试历年参考题库附带答案详解
- 华东师大版七年级数学下册“第1周周考”
- 教师论文撰写培训
- 2024年道路运输企业安全生产管理人员证考试题库
- EPC总承包管理方案
- 安全生产管理体系建设讲解
- 学习雷锋主题班会雷锋日学习雷锋精神-
- 事故隐患内部举报奖励制度
评论
0/150
提交评论