C#毕业设计——基于C#+asp.net+SVG的基于SVG的自动站雨量分析系统设计与实现(毕业论文+程序源码)——雨量分析系统

news2026/3/13 19:02:24
基于C#asp.netSVG的基于SVG的自动站雨量分析系统设计与实现毕业论文程序源码大家好今天给大家介绍基于C#asp.netSVG的基于SVG的自动站雨量分析系统设计与实现文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦文章目录基于C#asp.netSVG的基于SVG的自动站雨量分析系统设计与实现毕业论文程序源码1、项目简介2、资源详情3、关键词4、毕设简介5、资源下载1、项目简介该自动站雨量分析系统是基于B/S架构使用ASP.NET来开发的。主要使用了.NET三层架构、XML程序集、矢量图形的动态生成、Web服务等技术并实现了系统模块管理、雨量数据管理、城市数据管理、雨量数据查询、生成矢量图形格式的图表等功能模块。在系统中主要对矢量图形文档的生成进行了分析和设计采用DOM模型来操作该图形文档并封装了基本的图形元素。该自动站雨量分析系统作了新的尝试采用基于可扩展标记语言的矢量图形作为图形格式系统与Web服务技术相结合使系统的可重用性和开放性得到了很大的提高。2、资源详情项目难度中等难度适用场景相关题目的毕业设计配套论文字数10851个字29页包含内容整套源码完整毕业论文3、关键词可伸缩矢量图形可扩展标记语言.NET三层架构Web服务4、毕设简介提示以下为毕业论文的简略介绍项目源码及完整毕业论文下载地址见文末。引言1.1 项目背景雨量监测对于工农业生产以及人民生活中的灾害预防、有效利用水资源具有重要意义建立完整高效的雨量监测系统显得非常有必要。雨量分析系统是应用于防汛、水文等部门的用于辅助分析自动气象站雨量监测的数据。雨量分析系统通常都会生成一些图表但由于这些图表是二进制格式的其可重用性不高而且这些系统通常都缺乏开放性大量的数据无法提供给外部研究人员使用造成资源浪费。该自动站雨量分析系统在雨量分析领域中作了新的尝试它采用了基于XMLeXtensible Markup Language可扩展标记语言的开放的SVG(Scalable Vector Graphics可伸缩矢量图形)作为图形格式在引入先进技术的同时提高了系统的可重用性而且该系统与Web服务的结合也使系统的开放性大大地提高。作为示例该系统要实现对四川省部分市县的城市及雨量数据进行管理与分析能查询各市县的历史雨量数据并以SVG格式的曲线图显示出来实现简单地统计分析功能。作为一个完整的系统还要实现对系统内各个模块以及用户权限的管理。1.2 本项目的应用价值本套系统是基于SVG的雨量分析系统实现的主要功能是对各地收集的雨量数据加以分析并以SVG矢量图形方式进行显示使用户能够更加直观地了解某一区域的历史雨量。雨量分析系统主要应用于防汛、水文等部门通过对各地雨量数据的统计与分析来预防可能会造成的洪水灾害并有效的调配和利用水资源。1.3 本项目的相关开发技术该项目采用.NET开发开发环境采用Visual Studio 数据库采用MSSQLServer并使用.NET的三层架构技术使业务逻辑与数据表示隔离开来提高系统的模块化程序在图像显示上使用了基于XML的矢量图形语言SVG并使用.NET XML DOMDocument Object Model文档对象模型来生成和操作SVG图形并使用Web服务来提供外部接口以提高系统的开放性。2 SVG技术2.1 XML介绍XML是可扩展标记语言的简称它定义了结构化表示数据的标准格式。XML是W3CWorld Wide Web Consortium万维网联盟为适应互联网的发展而推出的新型Web语言是国际标准化组织所制订的SGMLStandard Generalized Markup Language标准通用标记语言的子集。它是用于定义其他标识语言的一种元语言。它具有可扩展性、平台独立性、数据与表现分离以及结构化数据等特点非常适合网络环境下的数据传输和表达。XML通过其可扩展性提供了一种通用的数据格式不同的软件系统之间可以通过这种新的数据描述方式进行通信从而实现完全的交互操作这源于XML将结构化的数据表示为一个纯文本的特性。可以通过XML对信息加以规范化定义和描述并且在互联网上进行数据的传输。SVG就是XML在图形图像领域的一个应用。2.2 SVG介绍SVG是一种基于XML的开放的标准文本式矢量图形描述语言即它是用XML元语言定义的语言。SVG图像是与XML1.0兼容的文档SVG元素是指示如何绘制图像的一些指令阅读器解释这些指令把SVG图像在指定设备上显示出来。使用SVG可以在网页上显示出各种各样的高质量的矢量图形包括许多图像处理中常见的功能如图形、文字、动画、颜色、滤镜效果等。最关键的是SVG完全用普通文本来描述也就是说这是一种专门为网络而设计的基于文本的图像格式。由于SVG是基于XML的所以可扩展性很强能够描述任何复杂的图像甚至动态交互式图像。2.3 SVG的特点虽然SVG的“矢量描述”并不是一个全新的概念但它综合了矢量图形、点阵图像和纯文字的优点以一种标准将其统一起来描述。它由计算机根据矢量数据计算后绘制而成相较于位图图像矢量图像有以下特点1文件的大小与图形的复杂程度有关而与图形的具体尺寸无关2图形的显示尺寸可以无限缩放变化后不影响图形的质量。正是由于矢量图像的这些特征使得它尤其适合于网上传播。图片和交互在以前是两个独立的概念而在SVG中文字与图形并非封装于SVG内而是可以借助DOM和脚本语言等手段与外界交互使得在图片内进行交互成为可能这是以往的图像所不能做到的。统一的标准和开放性是SVG的强大生命力所在。标准统一可增强网络的交流结束目前业界各种格式并存的混乱局面开放性则有利于日后的各种新的元素加入其中扩充其功能。SVG使用时客户端的软件负责解释SVG文本并将其转化成实际的矢量图像文字仍是文字线条仍是线条可在客户端即时修改这也是SVG的一大特色。2.4 SVG规范SVG规范定义了6种类型的对象包括矢量图形、图像、渐变填充、滤镜、可重用单元和文本。图形对象可以进行组合、添加样式、几何变换等操作。根据功能不同这些主要对象可归结为基本要素对象和页面描述功能对象两大类具体请见图1和图2所示。图1 SVG基本要素图2 SVG页面描述功能框架元素就是组成一个完整SVG文档的基本元素主要包括、、元素和元素等等。svg元素是文档元素必不可少的它相当于指定一块画布内部的所有图形元素都将显示在这块画布指定的区域中。因此它有一些标记位置的属性像xywidthheight。desc和title元素是用来描述图像的注释性元素。还有一些表示基本图形的标记如rectcircle等等SVG图形就是通过组合这些基本的元素和组件来生成复杂的图形的。3 雨量分析系统的需求分析3.1 系统需求需求分析是一种软件工程活动它在系统需求工程和软件设计间起到桥梁的作用主要任务是将用户的需求变为软件的功能和性能描述。基于SVG的自动站雨量分析系统要实现对四川省部分市县及其雨量数据进行管理与分析能够以各种时间方式查询各市县的历史雨量数据并以SVG格式的曲线图显示出来要求实现简单地统计分析功能例如统计同一时间段内两个不同地区的雨量数据对其进行分析并生成SVG图形以辅助工作人员判断某一时间数据点过高的城市是否有发生灾害的可能性。作为一个完整的系统还要能够管理系统内各个模块及设置不同用户的权限。由于会涉及到大量数据因此要有对数据库的管理实现数据备份功能以保障数据的安全性。系统功能模块主要包括以下几个方面1、系统管理2、雨量数据管理3、城市信息管理4、前台管理5、数据备份。3.2 功能分析以下按照不同的模块进行功能描述1、系统管理实现以下四个功能1模块管理管理系统中所有模块对模块进行添加、更新及删除2用户管理添加系统用户选择对应的角色对系统中已有用户进行更新包括登陆密码及角色、删除3角色管理新增、更新、删除系统角色分配角色权限4日志管理能根据选择条件对已有日志进行查询、删除和下载。2、雨量数据管理页面管理后台的所有雨量数据有如下功能1数据查看可根据选择条件包括日期和城市选择显示雨量数据也可根据选择的显示方式以SVG图形方式查看雨量数据2数据录入选择某一城市后可以选择任意一天进行雨量数据输入3数据更新在选定城市某一天的雨量数据后点击更新可以修改雨量数据。3、城市信息管理页面管理地图页面中出现的所有城市的雨量数据通过输入城市名及选择上级城市新增城市数据也可以对已有城市数据进行更新修改名称或上级城市、删除操作。4、前台管理页面放置了将前台查询页面这一模块是整个系统的重点部分包括地图管理、选择显示方式、选择查询方式并生成图形显示页面。区别于其它系统本套系统对于数据图形使用了SVG这种文本式矢量图形描述语言。用户查询数据并生成SVG曲线图的操作流程如图3所示。图3 SVG页面描述功能5、系统的数据备份操作能够实现将数据库文件备份到本机上的指定目录下需要时再进行数据恢复以保证数据的安全性。备份管理有如下功能1数据备份利用SQLServer的备份操作backup database进行数据备份2数据恢复利用SQLServer的恢复操作restore database进行数据恢复。3.3 用例分析系统全局管理员用例图如图4所示。图4 系统全局管理员用例图4 雨量分析系统的设计4.1 系统模块结构系统主要分为系统管理、雨量数据管理、城市信息管理、前台管理等几大模块其结构关系如图5所示。图5 系统模块结构4.2 数据库的设计4.2.1 总体设计数据库的E-R模型图如图6所示。图6中用户在具有某些角色之后才有权限使用系统功能而不能直接使用因此设计中将角色与系统功能关联起来并将用户与系统功能隔离开来日志的生成是在用户使用系统功能的过程中自动生成的其中需要保存当前用户的ID和对应的系统功能的ID。图6 数据库E-R图4.2.2 数据库表字段说明1、城市数据表City存储的是地图上所有城市的相关信息具体见表1所示。4.3 开发技术及过程4.3.1 三层架构三层架构也称三层体系结构即表现层、业务逻辑层和数据访问层。表现层主要指用户界面它要求尽可能的简单使最终用户不需要进行任何培训就能方便地访问信息第二层就是业务逻辑层也就是常说的中间件所有的应用系统、应用逻辑、控制都在这一层系统的复杂性也主要体现在业务逻辑层最后的数据访问层存储大量的数据信息和数据逻辑所有与数据有关的安全、完整性控制、数据的一致性、并发操作等都是在第三层完成。三层架构的层次关系见图7所示。图7 三层架构示意图这些层相互之间独立性好可以单独开发单独测试。三层架构另一个优点是它的安全性客户端只能通过上一层来访问下一层的服务减少了入口点把很多危险的系统功能都屏蔽了。表现层位于最上层离用户最近用于显示数据和接收用户输入的数据为用户提供一种交互式操作的界面。通过表现层用户输入数据、获取数据。表现层同时也提供一定的安全性确保用户没有机会看到机密的信息。中间的业务逻辑层是表现层和数据访问层的桥梁它响应表现层的用户请求负责处理用户输入的信息或者是将这些信息发送给数据访问层进行保存或者是调用数据访问层中的函数再次读出这些数据。业务逻辑层也可以包括一些对“商业逻辑”描述的代码在里面。数据访问层定义和维护数据的完整性、安全性它响应业务逻辑层的请求来访问数据仅实现对数据的保存和读取操作。访问的数据可以是数据库系统、二进制文件、文本文档或是XML文档等等。本项目中.NET三层架构中各个包之间的关系结构如图8所示。图8 三层架构名称空间关系图其中Model命名空间中的类对应于数据库中的表为整个架构提供方便的数据表示形式IDAL和SQLServerDAL对应于数据访问层IDAL命名空间中定义了一整套用于操作数据库的接口具体的数据访问操作在SQLServerDAL命名空间中实现DALFactory命名空间中定义了获取数据访问操作的方法在BLL命名空间中就使用这些方法来获取符合IDAL中定义的接口的对象再用它来对数据库进行操作显然它们属于业务逻辑层而表现层对应于前台页面代码包括获取用户响应和请求再通过BLL来获取数据并返回给用户。下面给出具体例子说明数据和指令是如何在各层之间流动和传递的。首先表现层中的某一对象调用业务逻辑层BLL中的Add函数来向数据库中添加数据BLL.SVGRAS_City.Add(city);其中city是Model.City类型的参数BLL.SVGRAS_City.Add为被调用方法的完整路径。此时数据流向业务逻辑层指令执行到业务层如下public static string Add(SVGRAS.Model.SVGRAS_City model){ISVGRAS_City dalSVGRAS.DALFactory.SVGRAS_City.Create();return dal.Add(model);}业务层接收到表现层传入的参数model首先进行业务逻辑处理比如数据完整性合法性以及其他一些业务处理然后调用工厂中相应的方法来创建相应的SQLServerDAL对象以获得访问数据访问层的对象。工厂类中对应方法如下public static SVGRAS.IDAL.ISVGRAS_City Create(){SQLServerDAL.SVGRAS_City objnew SQLServerDAL.SVGRAS_City();return obj;}此时数据流向数据访问层指令执行到数据访问层publicstringAdd(SVGRAS.Model.SVGRAS_Citymodel){model.CityIDCommon.GetNextIdByTable(SVGRAS_City,CityID,SingleLayer,null,10);model.OrderIDmodel.CityID;StringBuilderstrSqlnewStringBuilder();strSql.Append(insert into SVGRAS_City(CityID,FatherCityID,OrderID, CityName,CityDes) values ();strSql.Append(model.CityID,);strSql.Append(model.FatherCityID,);strSql.Append(model.OrderID,);strSql.Append(model.CityName,);strSql.Append(model.CityDes));DbHelperSQL.ExecuteSql(strSql.ToString());returnmodel.CityID;}在数据访问层通过调用存储过程的方式将数据传递到数据库并执行相应的操作。DbHelperSQL.ExecuteSql表示封装好的方法strSql.ToString()放置添加语句。此时调用DbHelperSQL.ExecuteSql执行SQL语句。publicstaticintExecuteSql(stringSQLString){using(SqlConnectionconnectionnewSqlConnection(connectionString)){using(SqlCommandcmdnewSqlCommand(SQLString,connection)){try{connection.Open();introwscmd.ExecuteNonQuery();returnrows;}catch(System.Data.SqlClient.SqlExceptionE){connection.Close();thrownewException(E.Message);}}}}到此完成了一条城市数据的添加操作。4.3.2 SVG文档的表示SVG文档的生成使用了.NET XML程序集它提供了一整套封装了XML操作的类可以很方便的创建和处理XML文档它的整体结构符合文档对象模型的定义。将SVG文档用DOM表示其结构见图9所示。图9 SVG文档的DOM对象结构图9对应的XML文档部分代码如下?xml version1.0standaloneyes?svg viewBox0 0 500 600text x10y20strokered成都信息工程学院/text/svg5 系统实现5.1 雨量数据管理的实现在雨量数据管理页面中进行雨量数据录入时必须先选中要添加雨量数据的城市及日期点击“确定”后系统首先查看是否有该城市这一天的数据有的话就直接显示没有的话会创建一条新的雨量数据记录自动生成随机数作为这一天24小时的雨量数据并将数据写入数据库中。这里创建新雨量数据记录是基于三层架构来做的首先创建Model.SVGRAS_RainPerHour对象然后将数据保存到其成员变量中再调用BLL.SVGRAS_RainPerHour.Add方法来将此对象包含的数据写入到数据库中。页面效果如图10所示。图10 雨量数据录入界面在实际应用中这里生成的数据全部为0而具体的数据需要通过数据更新功能来输入。这里采用自动生成数据方式是为了方便系统的测试与演示。用户要填入新的雨量数据需要点击更新按钮进入数据更新页面在其中填入新数据后点击提交按钮完成更新。5.2 雨量数据分析与SVG图像的生成1、获取用户设置的查询参数用户在查询页面中设置相应的查询参数如查询方式、查询日期等等并点击确定按钮(即选择某一城市)后程序首先会验证用户的参数设置是否正确若不正确则弹出错误提示若通过验证再按照用户设置的查询参数传到后续程序中。这里的验证分为两部分一部分是在浏览器端进行的使用javascript代码在向服务器发送数据前完成验证这里的验证是测试用户输入的数据是否合法如日期格式是否正确参数是否设置完整等等如果用户设置的是按多日查询却只设置了起始日期那么就不会通过验证。只有通过验证才会将参数数据发送到服务器端这样可以在一定程度上减轻服务器端的压力。图11 前台界面另一部分验证是在服务器端进行的它主要验证用户是否拥有操作权限以及数据库中是否存在数据。只有通过验证后才能在数据库中查询相应的雨量数据。2、从数据库中查询数据按照用户设置的查询模式转到相应模式的查询代码中。然后再根据查询参数从数据库中获取相应的数据。如用户设置的查询模式为按天查询查询城市为成都日期为2007-5-27然后调用strWhere()方法来生成查询参数再传入三层架构中的业务逻辑层中的getList()方法就得到了查询的结果代码如下DataTable table1BLL.SVGRAS_RainPerHour.GetList(strWhere(“days”)).Tables[0];3、对数据进行分析处理并组织为适合显示的形式前面查询得到的是一个DataTable表里面的数据是与数据库中对应起来的但这样的数据却不便于生成图像因此要对它进行重组转换为雨量数据和相关文字信息。在这里定义了一个类RainfallData来辅助这个类包含了城市信息、时间信息、相应的雨量信息等等具体代码如下publicclassRainfallData{publicstring cityId;publicstring cityName;publicintmax0;publicintmin1000000;publicdoubleaverage;publicstring startY;publicstring startM;publicstring startD;publicstring endY;publicstring endM;publicstring endD;//计算出最大最小值publicvoidcalMaxMin(){doubletmp0;for(inti0;idata.Length;i){if(data[i]max)maxdata[i];elseif(data[i]min)mindata[i];tmpdata[i];}average(tmp/data.Length);}publicint[]data;}然后将每一组雨量数据都存到该类的对象中并将这些对象传给SVG显示模块。此外若查询模式是多日查询或多月查询还需要将数据按日或月累加起来。4、使用XML对象来生成SVG文档项目中定义了一个SVG文档类SVGDocument它继承自XMLDocument在它内部封装了加载SVG文档元素的操作以后创建好文档中的元素后就直接插入到该文档中即可。另外定义了一个辅助类SVGHelper里面定义了一些向某个结点添加基本SVG元素的操作以方便向文档中添加SVG图形。现在创建一个SVG文档并且添加一条线、一个圆、一个矩形和一行文本的代码如下SVGDocumentdocumentnewSVGDocument(800,700);SVGHelper.InsertLine(document.DocumentElement,1,1,300,350,Color.BlueViolet,5);SVGHelper.InsertCircle(document.DocumentElement,100,100,50,Color.Red,Color.Gold,2.5);SVGHelper.InsertRect(document.DocumentElement,300,400,80,70,Color.Gray,Color.Honeydew,3);SVGHelper.InsertText(document.DocumentElement,网络工程,10,100,15,楷体,Color.Blue);5、向SVG文档中添加坐标系为了方便坐标系的创建定义了坐标系类CoordinateFrame在它里面封装了坐标系的细节并提供创建坐标系、向坐标系中添加点、添加线等接口操作相应的也定义了坐标类Coordinate来对坐标信息进行封装。现在向SVG文档中添加坐标系并向坐标系中添加一系列点和线的代码如下CoordinateFrameframenewCoordinateFrame(10,10,600,500,5,9,document.DocumentElement);CoordinatepointnewCoordinate(50,40);frame.InsertPoint(point);Coordinate[]pointsnewCoordinate[5];//... 在此获取坐标数据 ...frame.InsertLine(points,成都,Color.Chocolate);6、将数据转换为坐标点的数组处理按照用户参数查询获得的数据并将其转换为对应于坐标系中的坐标点的数组。这里需要求出所有雨量数据的最大值和最小值并计算出合理的纵坐标的坐标点数然后将每一个雨量数据除以一个纵坐标点代表的雨量数据以转换为坐标位置。然后将坐标点添加到坐标系上并连成曲线。7、添加相应的文字标签及均值线在点上以及线上面加上说明文字。不同的线会用不同的颜色显示并标注相应的说明文字。同时将求出的每组数据的均值以均值线的方式画到坐标系上。8、修改响应类型为SVG文档类型image/svgxml将要返回的响应类型改为image/svgxml这样浏览器才会将页面作为SVG图形来解析。然后将SVG文档以XML对象表示的内容发送到客户端。具体代码如下Response.ContentTypeimage/svgxml;document.Save(Response.OutputStream);Response.Flush();Response.End();现在客户端就可以看到如图12所示的SVG格式的图形了。图12 SVG图形生成界面.3 使用Web Service方式提供开放的外部接口5.3.1 Web Service介绍Web Service是建立在HTTP协议、SOAP协议和UDDI等标准以及XML等技术之上的其主要目标就是在现有的各种异构平台的基础上构建一个通用的与平台和语言无关的接口层各种不同平台之上的应用通过这个接口层来集成已有的服务。Web Service具有以下一些特征1、完好的封装性Web Service既然是一种部署在Web上的对象自然具备对象的良好封装性。对使用者而言只能看到该对象提供的功能列表。2、松散耦合当一个Web Service的实现发生变化时调用者完全不会感觉到。对调用者来说只要调用的接口不变其内部实现的任何变化对用户来说都是透明的。3、高度可集成能力由于Web Service采用简单的、易于理解的XML作为接口描述完全屏蔽了不同平台和系统的差异性因此任何符合协议的应用都可以集成已有的Web Service。5.3.2 使用Web Service的意义使用Web Service可以引入很高的开放性使得系统可以方便的集成到其它应用中同时也为系统的二次开发预留了很好的接口。此外作为雨量数据分析系统必然会涉及到大量的雨量数据而这些雨量数据是从全国各地的设备终端采集汇总而来的一旦有了这一开放的接口所有的数据都可以通过它来写入到数据库中。另外这些雨量数据的采集是相当不容易的一般的科研机构和学校是不可能获取如此大量的真实数据的例如本套系统就无法获得到这些真实数据只能通过随机数来生成假的数据。这样就限制了这些数据的科研作用。然而通过Web Service来提供开放的接口后所有的用户都可以通过它来很容易的获取这些雨量数据还可以通过接口使用系统中已经做好的各种功能避免了重复开发的浪费。因此使用Web Service来提供开放的接口是有很大的积极意义的。5.3.3 Web Service接口的实现在系统中只提供简单功能的实现主要接口有1、获取城市ID通过该接口可以查询指定城市在系统中分配的ID值其参数为城市名称。在查询城市数据前首先要通过此接口获得城市的ID值。2、获取雨量数据通过输入查询条件来获得雨量数据。这里的查询条件就是SQL查询语句中的where子句用户可以指定某一天、某几天或某几个月的等条件。例如最简单的查询“江油”的所有雨量数据的参数为“CityId ‘0000000013’”。接口实现代码如下[WebMethod]publicstring getCityId(string city){returnSVGRAS.BLL.SVGRAS_City.GetList(CityNamecity).Tables[0].Rows[0][CityId].ToString();}[WebMethod]publicDataSetgetRainData(string sql){returnSVGRAS.BLL.SVGRAS_RainPerHour.GetList(sql);}6 系统测试在前台页面中对每种查询方式都进行了测试所有数据查询、分析以及图像生成功能都能正确工作。例如选择同一城市不同时间段比较模式并设置起止日期和时间这里的日期跨越两个月即4月30日到5月1日设置显示均值线方式点击城市名称就可以选择城市并将其加边框标注出来再次点击即可取消相应城市的选择并去掉相应边框点击确定按钮后就会打开新的窗口显示查询结果。用户管理界面列出了系统当前的所有用户点击“选择”选中一个用户后可修改用户名、密码并为用户指定系统角色。系统当前共有三种角色角色的权限由管理员指定例如要为系统管理员指定系统管理这一模块的权限选中这一角色在权限分配区选中相应的模块权限即可。角色的选择可以是一个或多个默认角色选择为空若没有为用户指定系统角色则用户登陆系统后不会出现系统树型菜单用户也就不能进行任何操作。日志是根据用户操作自动生成的在后台管理中可以根据选择条件进行日志的查询、删除和下载若选择条件为空则默认为选择所有日志。系统中的城市分为两级每一个城市都有其上级城市。通过输入城市名称并选择上级城市后可新增一个城市若要更新或删除城市则先要点击对应的选择按钮来选中一个城市然后可对选中的城市信息进行更新或删除等操作。结 论雨量分析系统实现了对四川省部分市县及其雨量数据的管理与分析功能能够以各种方式例如相同城市不同时间或相同时间不同城市查询各市县的历史雨量数据并以SVG格式的图形显示出来。此外还实现了管理系统内各个模块及设置不同用户权限的功能以及数据库备份和还原功能。通过本项目的开发对C#语言有了更多的体会也更多地了解了B/S架构系统的开发。在开发过程中学会了SVG这门新型的可伸缩矢量图形语言在使用时体会到了这门语言的实用性及它带来的乐趣。在项目实现过程中也遇到过不少问题和困难同时由于缺乏编程经验在编写代码的过程中碰到了很多难以解决的问题和障碍在老师的指导和同学的帮助下查找各种资料这些问题得以解决并积累了一定的开发经验。例如刚开始不太了解雨量数据如何转换为SVG图形来显示便从网上找了一个现有的将数据显示为SVG格式的图形的库来使用。在查看各种相关资料了解了SVG并进行深入学习后反复尝试各种生成SVG图形的方法。由于SVG本身就是XML文档因此选择了用生成XML文档的方式来生成SVG并封装了SVG的基本图形元素最终完成了一个较方便的创建SVG图形的工具类。当然该雨量分析系统还是有很多不完善的地方。地图信息本来应该用SVG来组织和表示这样可以将其中的各种数据元素分离出来实现按选择条件在地图上显示城市及相应雨量数据的功能而且SVG的交互效果没有体现出来对雨量数据的分析也不够充分。但由于实现难度及时间限制以上功能没能实现。参考文献[1] Joseph Bustos, Karli Watson[美]…NET Web服务入门经典——C#编程篇[M].侯彧译.北京清华大学出版社,2003。[2] Dinar Dalvi, Joe Gray[美]…NET XML高级编程[M].英宇,林琪译.北京清华大学出版社,2002。[3] Jesse Liberty, Dan Hurwitz[美].Programming ASP.NET[M].南京东南大学出版社,2006。[4] 石磊,但正刚.ASP.NET数据库编程详解C#版[M].北京高等教育出版社,2004。[5] 徐谡.ASP.NET应用与开发案例教程[M].北京清华大学出版社,2005。[6] 李安渝.Web Services技术与实现[M].北京国防工业出版社,2003。[7] 蔡月茹,柳面玲.Web Service基础教程[M].北京清华大学出版社,2005。[8] Seely[美].SOAP XML跨平台Web Service开发技术[M].杨涛,杨晓云,王建桥译.北京机械工业出版社,2002。[9] Bill Trippe,Kate Binder[美].SVG设计在下一代Web站点中使用可缩放矢量图形[M].高伟,英宇译.北京机械工业出版社,2003。致 谢省略5、资源下载本项目源码及完整论文如下有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。序号毕业设计全套资源点击下载本项目源码基于C#asp.netSVG的基于SVG的自动站雨量分析系统设计与实现源码文档_BS架构_雨量分析系统.zip提示如果下载链接失效可点击下方卡片扫码自助下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2408533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…