软件设计与实践-列车时刻查询-报告正文-华北电力大学_第1页
软件设计与实践-列车时刻查询-报告正文-华北电力大学_第2页
软件设计与实践-列车时刻查询-报告正文-华北电力大学_第3页
软件设计与实践-列车时刻查询-报告正文-华北电力大学_第4页
软件设计与实践-列车时刻查询-报告正文-华北电力大学_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

科技学院综合实验报告(2012--2013年度第1学期)名称:软件设计与实践题目:列车时刻查询院系:信息工程系班级:学号:学生姓名:指导教师:戴寒松设计周数:2成绩:日期:2012年1月11日《软件综合实验》任务书一、目的与要求软件综合实验是计算机科学与技术、软件工程、网络工程和信息安全专业学生的必修实践环节,本环节是在第六学期、第七学期设置,主要让学生进一步理解、巩固、加深前面所学的课程,并能综合运用所学课程的知识进行设计,掌握算法设计及实现的理论与方法,为毕业设计和今后的工作打下良好的基础。课程的基本要求:1.熟悉微机的应用环境。2.利用所学课程的知识,解决程序设计中的实际问题(实际应用题目,或模拟实际应用的题目),为毕业设计和今后的工作打下良好的基础。二、主要内容能熟练地利用微机设计出有实用价值的程序。1.熟悉Windows以及其它工具软件系统,2.根据所选题目进行算法设计(画出流程图,写出各模块的文档)。3.编程。4.上机调试。三、进度计划序号设计(实验)内容完成时间备注1查找、熟悉相关资料2天2根据题目进行详细设计2天3编码4天4调试2天四、设计(实验)成果要求(根据所选题目填写)五、考核方式实验结果(60%)+实验报告(30%)+实验过程表现(10%)学生姓名:指导教师:年月日

一、综合实验目的与要求任务:利用WebService技术实现列车时刻表查询。目的:学习在网络应用程序中创建和使用Web服务。WebService由于其跨平台的优越性,被越来越多的网站所重用。了解其实现原理及使用方法,有利于了解未来的网络开发技术。要求:利用WebService技术,实现一个查询列车时刻的网站,要求界面美观,方便易用;通过课程设计学生应该具备初步分析、设计和开发网络应用软件的能力,具备分析与检查软件错误、解决和处理实验结果的能力。学生要求人数:1人。二、实验正文1、实验内容编写一个网站页,可供用户查询最新列车时刻表情况,可站到站查询、车次查询和途径站查询,合理设计查询组合。基本工作过程如下:(1)了解WebService技术的原理和使用方法;(2)寻找提供列车时刻信息的Web服务;(3)利用WebService完成查询网页与信息提供网站的链接;(4)测试网页。2、使用工具VisualStudio2010,ASP.NET,C#3、实验原理webservice发布后,客户端添加引用,之后vs实际上在此时已经在后台生成本地代理类。之后看起来像是对webservice的操作,实际上是对本地代理类的操作。代理类中处理网路访问逻辑,客户端的使用就象操作本地类一样简单便捷。

客户端发出webservice请求后,请求到达代理类,代理类处理请求从服务端获得SOAP数据包,而后进行数据处理后转发客户端。此中间涉及到的关于SOAP,WSDL等定义,简单的可以理解为:SOAP中定义了传输数据类型的格式和规则,而WSDL则以XML的形式定义了webservice的消息和有关操作,通过http传输协议进行数据传输。4、实验步骤(1)新建一个ASP.NET的网站,在解决方案资源管理器中单击右键,选择添加web引用,在URL中添加/WebServices/TrainTimeWebService.asmx?wsdl,并设置web引用名为train,添加引用。(2)因为提供webservice的服务器上提供了几个让我们调用来进行查询的函数,它们的返回值要与所设计的网站上的显示进行绑定,因此用到了Repeater控件,按照如下图所示的页面布局设计网页,添加页面控件。Repeater控件的程序语句要在源代码中显示的写出。将车次与函数返回值中的TrainCode相绑定,并在这一项中建立超链接,从而使在点击具体的车次时可以在一个新的页面显示出车次的具体途径站查询。另外将始发站与函数返回值FirstStation绑定,终点站与LastStation绑定,发车站与StartStation绑定,发车时间与StartTime绑定,到达站与ArriveStation绑定,到达时间与ArriveTime绑定,里程KM与KM绑定,历时与UseDate绑定。网站的框体源代码可以自动生成。(3)编写后台程序。因为本实验要调用网上提供的web函数,首先要建立调用函数的服务对象train.TrainTimeWebServicetrain=newtrain.TrainTimeWebService();由于函数的返回值是是DataSet类型,建立一个DataSet的变量接收返回的数据DataSetds=newDataSet();在页面加载时由Label1显示web函数getVersionTime()的返回值,显示“火车时刻表为第六次提速最新列车时刻表,数据库最后更新:及时更新”,在Page_Load()函数中编写代码实现在第一次访问页面时显示函数的返回值,具体代码是:protectedvoidPage_Load(objectsender,EventArgse){if(this.IsPostBack==false)Label1.Text=train.getVersionTime();}Botton1实现的功能是将textStartStation和textArriveStation里面的内容作为函数getStationAndTimeByStationName()的参数传递给服务器,用DataSet类型的ds接收函数的返回值,Repeater1的数据源即为该函数返回的数据。具体代码如下:protectedvoidButton1_Click(objectsender,EventArgse){stringstart=textStartStation.Text;stringend=textArriveStation.Text;ds=train.getStationAndTimeByStationName(start,end,"");Repeater1.DataSource=ds.Tables[0].DefaultView;Repeater1.DataBind();}数据绑定到模板时的事件是:定义一个Hyperlink的对象来代表TrainCode,当输入的要查询的车次没有被发现时,链接的ToolTip显示FirstStation的内容即“数据没有被发现”,当能查询到车次的具体信息时,链接的ToolTip显示“获取**车次的具体信息”,并生成该链接的网络地址。实现的具体代码如下:protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem)){HyperLinkoHyperLink=(HyperLink)e.Item.FindControl("TrainCode");stringTrainCode=DataBinder.Eval(e.Item.DataItem,"TrainCode").ToString();oHyperLink.Text=TrainCode;stringFirstStation=DataBinder.Eval(e.Item.DataItem,"FirstStation").ToString();stringStartStation=DataBinder.Eval(e.Item.DataItem,"StartStation").ToString();stringArriveStation=DataBinder.Eval(e.Item.DataItem,"ArriveStation").ToString();if(FirstStation.Contains("没有被发现")){oHyperLink.ToolTip=FirstStation;oHyperLink.NavigateUrl="";}else{oHyperLink.ToolTip="获得"+TrainCode+"详细信息";oHyperLink.NavigateUrl="Detail.aspx?id="+Server.UrlEncode(TrainCode)+"&Start="+Server.UrlEncode(StartStation)+"&Arrive="+Server.UrlEncode(ArriveStation);}}}Botton2实现的功能是将textTrainCode里面的内容作为函数getStationAndTimeDataSetByTrainCode()的参数传递给服务器,用DataSet类型的ds接收函数的返回值,Repeater1的数据源即为该函数返回的数据。具体代码如下:protectedvoidButton2_Click(objectsender,EventArgse){stringcode=textTrainCode.Text;ds=train.getStationAndTimeDataSetByTrainCode(code,"");Repeater1.DataSource=ds.Tables[0].DefaultView;Repeater1.DataBind();}(4)在解决方案中添加新项,选择web窗体,命名为Detail.aspx,并按照下面的页面布局设计网页,添加页面控件:将车站名称与调用的函数返回值中的TrainStation绑定,将到站时间与ArriveTime绑定,将发车时间与StartTime绑定,将里程KM与KM绑定。网站的框体源代码可以自动生成。(5)编写Detail.aspx的后台程序。因为本实验要调用网上提供的web函数,首先要建立调用函数的服务对象train.TrainTimeWebServicetrain=newtrain.TrainTimeWebService();由于函数的返回值是是DataSet类型,建立一个DataSet的变量接收返回的数据DataSetds=newDataSet();在页面加载时由Label3显示web函数getVersionTime()的返回值,显示“火车时刻表为第六次提速最新列车时刻表,数据库最后更新:及时更新”,本页面作为第一个页面车次的链接页面,需要将第一个页面的TrainCode传递过来,即定义一个string类型的变量来获取链接的id,代码为stringTrainCode=Request.QueryString.Get("id");并将该TrainCode作为函数getDetailInfoByTrainCode()的函数传递给服务器,用DataSet类型的ds接收函数的返回值,Repeater1的数据源即为该函数返回的数据。具体代码如下:protectedvoidPage_Load(objectsender,EventArgse){stringTrainCode=Request.QueryString.Get("id");Label1.Text="火车"+TrainCode+"车次详细信息";title1.Text=Label1.Text+"列车时刻表WebService实例";Label3.Text=train.getVersionTime();ds=train.getDetailInfoByTrainCode(TrainCode,"");Repeater1.DataSource=ds.Tables[0].DefaultView;Repeater1.DataBind();Label2.Text="经由车站共计"+ds.Tables[0].Rows.Count.ToString()+"个";}数据绑定到模板时的事件是显示该车次的具体信息,当所显示的车站与输入的发车站相同时该行变为黄色,当所显示的车站与输入的到达站相同时该行变为橙色,其他的背景颜色为“#FFF8D9”,实现的具体代码:protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem)){System.Web.UI.HtmlControls.HtmlTableRowoTR=(System.Web.UI.HtmlControls.HtmlTableRow)e.Item.FindControl("TR1");StringStartStation=Request.QueryString.Get("Start");StringArriveStation=Request.QueryString.Get("Arrive");if(DataBinder.Eval(e.Item.DataItem,"TrainStation").ToString().Equals(StartStation))oTR.BgColor="#FFFF00";elseif(DataBinder.Eval(e.Item.DataItem,"TrainStation").ToString().Equals(ArriveStation))oTR.BgColor="#FF9900";elseoTR.BgColor="#FFF8D9";}}至此该综合实验完成。三、综合实验结果在浏览器中打开程序的主界面在发车站中输入“石家庄”,在到达站中输入“衡水”,显示结果如下:点击其中的某一个车次,如4516\4517,显示如下:在主界面的车次中输入4516\4517,显示如下:点击车次下的超链接,显示结果如下所示:四、综合实验总结或结论本次实验是一门比较综合性的实验,用到的知识较多,使用的工具也比较陌生,但原理相对简单。前一周基本上就是在熟悉开发环境的应用,及对ASP.NET和C#的熟悉与应用,第二周开始对实验程序进行编写。虽然说本次实验的原理比较简单,但是实现起来还是有一定难度的,通过查询图书资料及对网络资源的利用,对用到的控件的属性和功能及设置方法、设置形式有了比较深入的了解,同时对后台程序的编写也有了比较深刻的认识。由于原来并没有做过类似的东西,因此该实验让我学到很多知识,同时也激发了我对webservice应用的浓厚兴趣,以后我会加强这方面的了解,争取可以学到更多。五、参考文献[1]《Web程序设计——ASP.NET实用网站开发》清华大学出版社沈士根、汪承焱、许小东编著;[2]《C#程序设计教程》清华大学出版社李春葆、谭成予、金晶、曾平编著附录(设计流程图、程序、表格、数据等)设计流程:详见实验步骤程序的主界面代码,保存名称为Default.aspx:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><headid="Head1"runat="server"><title>列车时刻查询</title></head><body><formid="form1"runat="server"><tablewidth="80%"border="0"align="center"cellpadding="0"cellspacing="0"style="height:440px"><tr><tdclass="style3"> </td></tr><tr><tdclass="style3"><imgsrc="image/SHHC009[1].jpg"alt="WebXmlLogo"border="0"style="width:292px;height:160px;"/></td></tr><tr><tdalign="center"class="style3"><strong> 列车时刻表WebService应用</strong></td></tr><tr><tdclass="style3"> </td></tr><tr><tdclass="style3"><tableborder="0"cellspacing="0"cellpadding="0"style="width:111%"><tr><tdclass="style4">发车站<asp:TextBoxColumns="10"CssClass="input1"ID="textStartStation"MaxLength="10"runat="server"ontextchanged="textStartStation_TextChanged"/> 到达站<asp:TextBoxColumns="10"CssClass="input1"ID="textArriveStation"MaxLength="10"runat="server"Width="95px"/><asp:ButtonCssClass="input2"ID="Button1"runat="server"Text="查询"onclick="Button1_Click"Height="19px"/>       </td><tdclass="style5">车次<asp:TextBoxColumns="10"CssClass="input1"ID="textTrainCode"MaxLength="10"runat="server"Width="95px"/>   <asp:ButtonCssClass="input2"ID="Button2"runat="server"Text="查询"onclick="Button2_Click"Height="19px"/></td></tr></table></td></tr><tr><tdclass="style2"> </td></tr><tr><tdclass="style3"><tableborder="0"cellpadding="2"cellspacing="1"bordercolor="#FFFFFF"bgcolor="#CCFFFF"style="width:111%"><tr><thstyle="background-color:#FFFF00"bgcolor="#CCFFFF"align=left>车次</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>始发站</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>终点站</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>发车站</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>发车时间</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>到达站</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>到达时间</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>里程KM</th><thstyle="width:10%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>历时</th></tr><asp:Repeaterrunat="server"ID="Repeater1"EnableViewState="false"onitemdatabound="Repeater1_ItemDataBound"><ItemTemplate><tr><tdclass="tdbg"><asp:HyperLinkID="TrainCode"runat="server"Target="_blank"Font-Bold="true"/></td><tdclass="tdbg"style="white-space:nowrap;"><%#Eval("FirstStation")%></td><tdclass="tdbg"style="white-space:nowrap;"><%#Eval("LastStation")%></td><tdclass="tdbg"style="white-space:nowrap;"><%#Eval("StartStation")%></td><tdclass="tdbg"><%#Eval("StartTime")%></td><tdclass="tdbg"><%#Eval("ArriveStation")%></td><tdclass="tdbg"><%#Eval("ArriveTime")%></td><tdclass="tdbg"><%#Eval("KM")%></td><tdclass="tdbg"><%#Eval("UseDate")%></td></tr></ItemTemplate></asp:Repeater></table></td></tr><tr><tdclass="style1"> </td></tr><tr><tdclass="style2"><asp:LabelID="Label1"runat="server"/></td></tr><tr><tdclass="style2"> </td></tr><tr><tdalign="center"class="style2"></td></tr><tr><tdclass="style3"> </td></tr></table></form></body></html>主界面的后台程序,保存名称为Default.aspx.cs:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data;publicpartialclass_Default:System.Web.UI.Page{train.TrainTimeWebServicetrain=newtrain.TrainTimeWebService();DataSetds=newDataSet();protectedvoidPage_Load(objectsender,EventArgse){if(this.IsPostBack==false)Label1.Text=train.getVersionTime();}protectedvoidtextStartStation_TextChanged(objectsender,EventArgse){}protectedvoidButton1_Click(objectsender,EventArgse){stringstart=textStartStation.Text;stringend=textArriveStation.Text;ds=train.getStationAndTimeByStationName(start,end,"");Repeater1.DataSource=ds.Tables[0].DefaultView;Repeater1.DataBind();}protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){if((e.Item.ItemType==ListItemType.Item)||(e.Item.ItemType==ListItemType.AlternatingItem)){HyperLinkoHyperLink=(HyperLink)e.Item.FindControl("TrainCode");stringTrainCode=DataBinder.Eval(e.Item.DataItem,"TrainCode").ToString();oHyperLink.Text=TrainCode;stringFirstStation=DataBinder.Eval(e.Item.DataItem,"FirstStation").ToString();stringStartStation=DataBinder.Eval(e.Item.DataItem,"StartStation").ToString();stringArriveStation=DataBinder.Eval(e.Item.DataItem,"ArriveStation").ToString();if(FirstStation.Contains("没有被发现")){oHyperLink.ToolTip=FirstStation;oHyperLink.NavigateUrl="";}else{oHyperLink.ToolTip="获得"+TrainCode+"详细信息";oHyperLink.NavigateUrl="Detail.aspx?id="+Server.UrlEncode(TrainCode)+"&Start="+Server.UrlEncode(StartStation)+"&Arrive="+Server.UrlEncode(ArriveStation);}}}protectedvoidButton2_Click(objectsender,EventArgse){stringcode=textTrainCode.Text;ds=train.getStationAndTimeDataSetByTrainCode(code,"");Repeater1.DataSource=ds.Tables[0].DefaultView;Repeater1.DataBind();}}链接界面的代码,保存名称为Detail.aspx:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Detail.aspx.cs"Inherits="_Detail"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><headid="Head1"runat="server"><titleid="title1"runat="server">列车时刻表WebService应用</title></head><body><formid="form1"runat="server"><div><tablewidth="80%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><td> </td></tr><tr><td><imgsrc="image/SHHC009[1].jpg"alt="WebXmlLogo"border="0"style="height:160px;width:292px"/></td></tr><tr><tdalign="center"><asp:LabelFont-Bold="true"ID="Label1"runat="server"/></td></tr><tr><td> </td></tr><tr><td><tablewidth="50%"border="0"align="center"cellpadding="2"cellspacing="1"bordercolor="#FFFFFF"bgcolor="#CCFFFF"><tr><thstyle="width:25%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>车站名称</th><thstyle="width:25%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>到站时间</th><thstyle="width:25%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>发车时间</th><thstyle="width:25%;background-color:#FFFF00;"bgcolor="#CCFFFF"align=left>里程KM</th></tr><asp:RepeaterID="Repeater1"runat="server"EnableViewState="false"onitemdatabound="Repeater1_ItemDataBound"><ItemTemplate><trid="TR1"runat="server"><tdalign="center"><%#Eval("TrainStation")%></td><tdalign="center"><%#Eval("ArriveTime")%></td><tdalign="center"><%#Eval("StartTime")%></td><tdalign="center"><%#Eval("KM")%></td></tr></ItemTemplate></asp:Repeater></table><tablewidth="50%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdstyle="height:24px;"><asp:LabelID="Label2"runat="server"/></td></tr><tr><tdstyle="height:24px;"><asp:LabelID="Label3"runat="server"/></td></tr></table></td></tr>

温馨提示

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

评论

0/150

提交评论