VB 天气预报源代码
- 格式:doc
- 大小:45.00 KB
- 文档页数:10
天气预报及代码天气预报及代码点击地图上的地区,可看天气预报,喜欢的朋友可分享。
可放在首页装扮博客用,当然,也可放到日志等网页中。
第一种样式点地区,看预报(分享代码处)代码如下:<TABLE border=0 cellSpacing=0 cellPadding=0width=400 bgColor=#bbccffalign=center><TBODY><TR><TD><CE NTER><EMBED height=345type=application/x-shockwave-flashpluginspage=/go/getflashplay er width=454src=/deco/2009/1224/chin a.swf allowNetworking="internal"allowScriptAccess="never" invokeurls="false"wmode="transparent"></CENTER><CENTER><A target="_blank"href="/blog/static/1021130 7720140161293412/"><IMG title="点击分享代码"alt="点击分享代码"src="/DownloadImg/2015/06/0 108/54275104_2.jpg"httpyyygggblogcom><STRONG><FONTcolor="#ff0000" size="2">点地区,看预报(<FONT color="#3344ff">分享代码处</FONT>)</FONT></STRONG></A>< ;/CENTER></TD></TR></TABLE>注:大小可以调整(只调整代码中的高度数值345和宽度数值454即可)。
JSP JavaBean实例---天气预报bean JSP JavaBean实例---天气预报bean---介绍本文档将介绍如何创建一个简单的天气预报JavaBean,以在JSP页面中显示天气信息。
使用JavaBean可以实现将数据与应用程序的其他部分分离,使得数据的获取和显示更加灵活和可维护。
创建JavaBean类首先,在Java项目中创建一个名为`WeatherBean`的Java类,用于表示天气预报的信息。
在该类中,我们可以定义需要的属性和方法来存储和处理天气数据。
public class WeatherBean {private String location;private String temperature;private String humidity;public WeatherBean() {// 默认构造函数}// 设置和获取属性的方法public String getLocation() {return location;}public void setLocation(String location) { this.location = location;}public String getTemperature() {return temperature;}public void setTemperature(String temperature) {this.temperature = temperature;}public String getHumidity() {return humidity;}public void setHumidity(String humidity) {this.humidity = humidity;}// 其他方法根据需求自行添加}在JSP页面中使用JavaBean在JSP页面中,我们可以通过使用JSP标准标签库(JSTL)来访问和显示JavaBean中的数据。
VFP获得10天的天气预报*--气象地址: (此地址当前信息1小时更新一次,10天信息2小时更新一次,感谢CSDN用户mmadd3提供此地址,并对数据进行分析)。
*--在以上网页上方的Local weather后的文本框中输入要查询的城市(如:Beijing,China),出来页面后将鼠标移动到*--Cities (1 of 1)*--1. Beijing,China*--中的Beijing,China上,即可得到北京的码:CHXX0008,哈尔滨的码:CHXX0046,用此方法可得到其他国家、地区Local lcRemoteUrl,lcRemoteFile,lcLocalFileIf !File('天气预报.dbf')Create Table 天气预报 (国家 C(20),地区 C(20),获取时间 C(5),更新时间1 T,日期 D,星期 C(6),经度 C(20),;纬度C(20),时区C(5),当前温度C(5),感觉温度C(5),当前天气C(50),当前气图号 C(5),年均降雨量 C(50),;现在风速 C(5),现在风类 C(20),现在湿度 C(5),可见光强度 C(5),紫外线等级 C(5),紫外线强度 C(20),;更新时间2 T,最高温 C(5),最低温C(5),太阳升起时 C(5),太阳下落时 C(5),白天气图号 C(5),白天天气 C(50),;白天风速 C(5),白天风类 C(20),白天降水率 C(5),白天湿度 C(5),夜晚气图号 C(5),夜晚天气 C(50),;夜晚风速 C(5),夜晚风类 C(20),夜晚降水率 C(5),夜晚湿度 C(5))EndiflcRemoteUrl="/weather/local/CHXX0008?cc=*&dayf=10&p ar=0&prod=xoap&key=0&unit=m" &&CHXX0008表示:北京lcRemoteFile=lcRemoteUrllcLocalFile = "c:/weather.txt"Declare Integer DeleteUrlCacheEntry In Wininet.DllString szUrlDeclare Integer URLDownloadToFile In urlmon.Dll Integer pCaller,String szURL,;String szFileName,Integer dwReserved,Integer lpfnCB=DeleteUrlCacheEntry(lcRemoteUrl) &&清理缓存If URLDownloadT oFile(0,lcRemoteFile,lcLocalFile,0,0)<>0Messagebox('读取数据失败!',48,'信息提示')ReturnEndiflcDateSet=Set("Date")Set Date To MdylnDowSet=Set("Fdow")Set Fdow TolnHours=Set("Hours")Set Hours To 24lcMark=Set("Mark")Set Mark To*只可惜VFP只识别VFP创建的XML,否则以下代码就可以不用这么麻烦了。
Visual Basic 2005 程序设计题目:简易日历小工具专业:姓名:学号:指导老师:二〇一一年五月二十五日和C#比较它的优缺点功能上的考虑VB有而C#没有的功能有即时编译;静态事件绑定;条件异常捕获;COM兼容类;宽松的类型检查和变量声明;Visual Basic Runtime库;可选参数、带参数属性、模块等语言特征;动态数组。
功能更强大的是VB而不是C#。
性能上的考虑VB和C#都生成一样的IL,因此理论上说不会有性能的差异。
但是因为支持即时编译,即一边书写代码一边编译。
这样可立刻发现语法错误,使调试变得更加容易。
但是这样一来VB就需要随时浏览整个代码文件,并把临时数据储存。
这造成生成的代码中常常具有冗余部分。
但也不能就此下结论说VB比C#慢,当用户选择打开优化并且以Release方式编译工程,就能得到与C#一样简短快速的代码。
代码风格和杂项问题C#书写的代码比VB平均短小20%,VB中的关键字过长。
VB语言换行比C#麻烦,如果需要书写大量繁杂而长的代码,最好选择C#。
但VB的代码接近完整的英语,比C#更加易读。
文档和资源方面的考虑在MSDN文档中,C#和VB是同等看待的。
所有文档和例子都是有VB和C#两份的。
因此,在寻求资源方面都不用担心。
互联网上的资源,C#要多于VB,特别是国内,有倾向于C#的潮流。
但是的资源VB较多。
国内缺乏资源是影响推广的重要原因。
设计题目通过桌面小工具受到启发,决定做一个桌面小工具程序,设计题目为:简易日历小工具程序编译、部署与运行环境程序的编译与部署环境:本程序使用VB编程,编程环境在Visual Basic 2005软件下进行,在创建并测试应用程序之后,在Visual Basic 2005下创建自己的安装程序,将其发布。
程序的运行环境:本程序在打包安装后,在Windows XP及其以上操作系统下运行成功,但需注意的是,由于屏幕分辨率的问题,在不同硬件运行环境下,运行结果会有偏差。
神奇气温指标源码```pythonimport numpy as np#计算神奇气温指标def calculate_magical_temperature_index(temperatures): #数据预处理temperatures = np.array(temperatures) # 转为numpy数组#计算绝对差值absolute_diffs = np.abs(np.diff(temperatures))#计算相对差值relative_diffs = absolute_diffs / temperatures[:-1]#计算最大相对差值ma某_relative_diff = np.max(relative_diffs)#计算求和标准差sum_std = np.std(temperatures, ddof=1)#计算指标值index= max_relative_diff 某 sum_stdreturn index#示例temperatures = [20, 22, 25, 21, 18, 24, 23, 19]index = calculate_magical_temperature_index(temperatures)print("神奇气温指标:", index)```以上是用Python编写的计算神奇气温指标的代码。
代码中的`calculate_magical_temperature_index`函数接受一个气温列表作为输入,然后按照以下步骤计算指标值:1. 数据预处理:将气温列表转换为NumPy数组。
2. 计算绝对差值:使用`np.diff`函数计算相邻两个气温之间的差值,并取绝对值。
3.计算相对差值:将绝对差值除以前一个气温,得到相对差值。
4. 计算最大相对差值:使用`np.ma某`函数找到相对差值中的最大值。
5. 计算求和标准差:使用`np.std`函数计算气温的标准差(使用`ddof=1`进行无偏估计)。
excel天气预报函数Excel没有直接提供天气预报的函数,但可以通过使用VBA宏或者插件来实现天气预报功能。
下面我将介绍如何使用VBA宏在Excel中添加天气预报功能。
首先,你需要知道如何获取天气数据。
天气数据通常是从气象网站或者API中获取的。
很多气象网站或API都需要注册账号,获取API密钥才能使用。
在这里,我将使用向开发者免费提供的气象数据提供商OpenWeatherMap的API 来演示。
在Excel中添加VBA宏:1. 打开Excel,并按下`ALT+F11`键,打开Visual Basic for Applications(VBA)编辑器。
2. 在VBA编辑器中,点击`插入`菜单,选择`模块`。
3. 在模块中,复制下面的VBA代码:vbaFunction GetWeather(city As String) As StringDim xmlHTTP As ObjectDim response As StringDim URL As StringURL = " & city & "&appid=YOUR_API_KEY"Set xmlHTTP = CreateObject("MSXML2.XMLHTTP")xmlHTTP.Open "GET", URL, FalsexmlHTTP.sendresponse = xmlHTTP.responseTextGetWeather = responseEnd Function4. 在代码中,将`YOUR_API_KEY`替换为你从OpenWeatherMap获取的API 密钥。
5. 保存VBA代码,并关闭VBA编辑器。
现在,你已经定义了一个名为`GetWeather`的自定义VBA函数,可以在Excel 中调用它来获取天气数据。
在Excel中使用自定义VBA函数:1. 创建一个新的Excel工作簿,并在第一个单元格(A1)中输入城市名称。
天气预报接口代码(1)这是你想要的天气预报代码,由中央气象台提供数据,最准确最权威的天气预报,能够根据访客不同的IP地址显示不同城市的天气预报下面是源程序代码:<iframe src="" width="160" height="60"frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> (3)名称:新浪天气预报代码代码:<IFRAME ID='ifm2' WIDTH='260' HEIGHT='70' ALIGN='CENTER' MARGINWIDTH='0' MARGINHEIGHT='0' HSPACE='0' VSPACE='0' FRAMEBORDER='0' SCROLLING='NO'src=""></iframe>说明:这种适合于在网页的头栏插入。
上面的城市可以自定,比如石家庄可改成别的。
城市代码:"110100","北京""120100","天津"1"130101","石家庄" "130201","唐山" "130301","秦皇岛" "130701","张家口" "130801","承德" "131001","廊坊" "130401","邯郸" "130501","邢台" "130601","保定" "130901","沧州" "133001","衡水" "140101","太原" "140201","大同" "140301","阳泉"2"140501","晋城" "140601","朔州" "142201","忻州" "142331","离石" "142401","榆次" "142601","临汾" "142701","运城" "140401","长治" "150101","呼和浩特" "150201","包头" "150301","乌海" "152601","集宁" "152701","巴彦浩特" "152801","临河"3"152921","鄂尔多斯" "150401","赤峰" "152301","通辽" "152502","锡林浩特" "152101","海拉尔" "152201","乌兰浩特" "210101","沈阳" "210201","大连" "210301","鞍山" "210401","抚顺" "210501","本溪" "210701","锦州" "210801","营口" "210901","阜新"4"211101","盘锦" "211201","铁岭" "211301","朝阳" "211401","葫芦岛" "210601","丹东" "220101","长春" "220201","吉林" "220301","四平" "220401","辽源" "220601","松原" "222301","白城" "222401","延边" "220501","通化" "230101","哈尔滨"5"230301","鸡西" "230401","鹤岗" "230501","双鸭山" "230701","伊春" "230801","佳木斯" "230901","七台河" "231001","牡丹江" "232301","绥化" "230201","齐齐哈尔" "230601","大庆" "232601","黑河" "232700","大兴安岭" "310100","上海" "320101","南京"6"320201","无锡" "320301","徐州" "320401","常州" "320501","苏州" "320600","南通" "320701","连云港" "320801","淮阴" "320901","盐城" "321001","扬州" "321101","镇江" "321102","泰州" "321103","宿迁" "330101","杭州" "330201","宁波"7"330301","温州" "330401","嘉兴" "330501","湖州" "330601","绍兴" "330701","金华" "330801","衢州" "330901","舟山" "332501","丽水" "332602","台州" "340101","合肥" "340201","芜湖" "340301","蚌埠" "340401","淮南" "340501","马鞍山"8"340601","淮北" "340701","铜陵" "340801","安庆" "341001","黄山市" "342101","阜阳" "342201","宿州" "342301","滁州" "342401","六安" "342501","宣城" "342601","巢湖" "342901","池州" "350101","福州" "350201","厦门" "350301","莆田"9"350401","三明" "350501","泉州" "350601","漳州" "352101","南平" "352201","宁德" "352601","龙岩" "352602","陇南" "352603","庆阳" "360101","南昌" "360201","景德镇" "362101","赣州" "360301","萍乡" "360401","九江" "360501","新余"10"360601","鹰潭" "362201","宜春" "362301","上饶" "362401","吉安" "370101","济南" "370201","青岛" "370301","淄博" "370401","枣庄" "370501","东营" "370601","烟台" "370701","潍坊" "370801","济宁" "370901","泰安" "371001","威海"11"371100","日照" "372301","滨州" "372401","德州" "372501","聊城" "372801","临沂" "372901","菏泽" "372902","莱芜" "410101","郑州" "410201","开封" "410301","洛阳" "410401","平顶山" "410501","安阳" "410601","鹤壁" "410701","新乡"12"410801","焦作" "410901","濮阳" "411001","许昌" "411101","漯河" "411201","三门峡" "412301","商丘" "412701","周口" "412801","驻马店" "412901","南阳" "413001","信阳" "420101","武汉" "420201","黄石" "420301","十堰" "420400","随州"13"420501","宜昌" "420601","襄樊" "420701","鄂州" "420801","荆门" "422103","黄冈" "422201","孝感" "422301","咸宁" "422421","荆州" "422801","恩施" "430101","长沙" "430401","衡阳" "430501","邵阳" "432801","郴州" "432901","永州"14"430801","韶山" "430802","张家界" "433001","怀化" "433101","吉首" "430201","株洲" "430301","湘潭" "430601","岳阳" "430701","常德" "432301","益阳" "432501","娄底" "440101","广州" "440301","深圳" "441501","汕尾" "441301","惠州"15"441601","河源" "441801","清远" "441901","东莞" "440401","珠海" "440701","江门" "441201","肇庆" "442001","中山" "440801","湛江" "440901","茂名" "440201","韶关" "440501","汕头" "441401","梅州" "441701","阳江" "441702","潮州"16"441703","顺德" "441704","揭阳" "441705","云浮" "450101","南宁" "450401","梧州" "452501","玉林" "450301","桂林" "452601","百色" "452701","河池" "452802","钦州" "450201","柳州" "450501","北海" "450502","防城港" "450503","贵港"17"450504","贺州" "460100","海口" "460200","三亚" "460300","西沙群岛" "510101","成都" "513321","眉山" "513101","雅安" "513229","峨嵋山" "510301","自贡" "500100","重庆" "500102","万州" "500103","涪陵" "512901","南充" "510501","泸州"18"510601","德阳" "510701","绵阳" "510901","遂宁" "511001","内江" "511101","乐山" "512501","宜宾" "510801","广元" "513021","达州" "513401","资阳" "510401","攀枝花" "510402","阿坝" "510403","甘孜" "510404","凉山" "510405","广安"19"510406","巴中" "500239","黔江" "520101","贵阳" "520200","六盘水" "522201","铜仁" "522501","安顺" "522601","凯里" "522701","都匀" "522301","兴义" "522421","毕节" "522101","遵义" "530101","昆明" "530201","德宏" "532201","曲靖"20"532301","楚雄" "532401","玉溪" "532501","红河" "532621","文山" "532721","思茅" "532101","昭通" "532821","西双版纳" "532901","大理" "533001","保山" "533121","怒江" "533221","丽江" "533321","迪庆" "533521","临沧" "540101","拉萨"21"542121","昌都" "542221","山南" "542301","日喀则" "542421","那曲" "542523","阿里" "542621","林芝" "610101","西安" "610201","铜川" "610301","宝鸡" "610401","咸阳" "612101","渭南" "612301","汉中" "612401","安康" "612501","商洛"22"612601","延安" "612701","榆林" "620101","兰州" "620401","白银" "620301","金昌" "620501","天水" "622201","张掖" "622301","武威" "622421","定西" "622701","平凉" "622901","临夏" "620201","嘉峪关" "622102","酒泉" "630100","西宁"23"632121","果洛" "632221","海西" "632321","格尔木" "632521","海东" "632621","海北" "632721","玉树" "632802","黄南" "640101","银川" "640201","石嘴山" "642101","吴忠" "642221","固原" "650101","乌鲁木齐" "650201","克拉玛依" "652101","吐鲁番"24"652201","哈密" "652301","昌吉" "652701","博乐" "652801","库尔勒" "652901","阿克苏" "653001","克州" "653101","喀什" "654101","伊犁" "655001","石河子" "655002","塔城" "655003","阿勒泰" "710001","台北" "211001","辽阳" "653201","和田"25"820000","澳门""810000","香港"第一种:代码:效果预览:<iframe width="145" height="130" border="0" align="center" marginwidth="0"marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"src="" allowTransparency="true"></iframe>说明:这种适合于在网页的边栏插入。
android --天气预报今天参考了别人的关于android平台的天气预报,自己也修改后实现自己要实现的格式,特地拿出来分享:首先要导入第三方包:ksoap2-android-assembly-2.4-jar-with-dependencies.jar主程序的代码:package com.sebservice;import java.io.IOException;import java.io.UnsupportedEncodingException;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class WebsActivity extends Activity {private Button okButton;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);okButton = (Button) this.findViewById(R.id.bt1);okButton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {String city = "北京";getWeather(city);}});}private static final String NAMESPACE = "/";// WebService地址private static String URL = "/webservices/weatherw ebservice.asmx";private static final String METHOD_NAME = "getWeatherbyCityName";private static String SOAP_ACTION = "/getWeatherbyCity Name";private String weatherToday;private SoapObject detail;public void getWeather(String cityName) {try {SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);rpc.addProperty("theCityName", cityName);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnve lope.VER11);envelope.bodyOut = rpc;envelope.dotNet = true;envelope.setOutputSoapObject(rpc);HttpTransportSE ht = new HttpTransportSE(URL);ht.debug = true;ht.call(SOAP_ACTION, envelope);detail =(SoapObject) envelope.getResponse();getw(detail,city);return;} catch (Exception e) {e.printStackTrace();}}private void getw(SoapObject detail,String local)throws UnsupportedEncodingEx ception{String str=detail.getProperty(6).toString();String show="所查城市:"+local;show=show+"\n今天是:"+str.split(" ")[0];show=show+"\n天气:"+str.split(" ")[1];show=show+"\n风级:"+detail.getProperty(7).toString().split(" ")[0];show=show+"\n"+detail.getProperty(10).toString().split(" ")[0];show=show+"\n温馨提示:\n"+detail.getProperty(11).toString().split(" ")[0]; Builder al=new AlertDialog.Builder(this);al.setTitle("天气预报");al.setPositiveButton("确定", null);al.setMessage(show.toString());al.create().show();}}布局文件的内容是:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello" /><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/bt1"android:text="查看北京天气"/></LinearLayout>3、还要在androidmanifest.xml加入权限<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android" package="com.sebservice"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="10" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:label="@string/app_name"android:name=".WebsActivity" ><intent-filter ><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application><uses-permission android:name="android.permission.INTERNET"></uses-permi ssion></manifest>分类: android。
摘要:针对下雨和下雪常见的天气现象,利用VB的可视化编程技术,实现对下雨和下雪的动画模拟。
关键词:下雨下雪计算机模拟0引言冬天是下雨和下雪较多的季节,目前很多都是用Flash软件来模拟下雪和下雨的过程,Microsoft Visual Basic是广泛应用的通用的可视化编程软件开发工具,具有非常强大的图形处理功能,加之VB简单易学,使用方便,有许多功能强大的处理图形图像的控件与函数,便于实现较为逼真的软件模拟环境。
同时实现此功能的VB程序代码实现比较容易,而且采用面向对象的编程方法,可以很方便地进行扩展。
1实现方法由于是在计算机屏幕上模拟下雨和下雪现象,因此当“雨滴”或“雪花”到达屏幕底部时要进行复原,用Rangomize初始化随机数发生器,并采用两种不同的方法触发:在模拟“下雨”的程序中,利用一个计时器,通过不断地绘制不同圆心和半径的小圆来表示“雨滴”。
在模拟“下雪”的程序中,采用无限循环,并利用Do-Events函数,当双击鼠标左键时,才使模拟程序中断循环,并返回。
具体实现流程如图1和图2所示。
2程序实现和模拟效果定义全局数组Snow(1000,1)表示“雪花”在屏幕上的坐标,Scolor(1000)表示坐标点的颜色,Snumber为设定的“雪花”数量。
Rain(1000,1)表示“雨滴”在屏幕上的坐标,Rsize(1000)为“雨滴”大小,Rdelta(1000)为间隔。
主要程序如下:Dim Snow(1000,1),Scolor(1000),Snumber As IntegerPrivate Sub Form_Load()Fsnow.ShowDoEventsRandomize:Snumber=400For j=1To SnumberSnow(j,0)=Int(Rnd*Fsnow.Width)Snow(j,1)=Int(Rnd*Fsnow.Height)Scolor(j)=10+(Rnd*20)Next j基于VB的雨雪天气现象模拟实现李道炜(南京金陵中学)图1下雪流程图2下雨流程的确定事故发生的原因。
水文预报课设vb代码Dim P(1 To 366) As Single '流域的平均降雨量Dim i As Integer, P1(1 To 366) As Single, P2(1 To 366) As Single, P3(1 T o 366) As Single, P4(1 To 366) As Single Dim E0(1 To 366) As Single '流域的水面蒸发 Dim Ep(1 T o 366) As Single '流域的蒸发能力 Dim E(1 T o 366) As Single '流域总的蒸发量Dim EU(1 To 366) As Single, EL(1 To 366) As Single, ED(1 To 366) As Single Dim Q(1 To 366) As Single '流域实测径流 Dim R(1 To 366) As Single '流域计算径流Dim RS(1 To 366) As Single, RG(1 To 366) As Single, PE(1 To 366) As Single Dim W(1 To 367) As Single '流域总的蓄水量Dim WU(1 T o 367) As Single, WL(1 T o 367) As Single, WD(1 To 367) As Single, WMM As Single, a(1 To 367) As Single Const h1 = 0.33, h2 = 0.14, h3 = 0.33, h4 = 0.2 '各雨量站的权重 Const Wm = 140, Um = 20, Lm = 60, Dm = 60 Const B = 0.3, C = 0.16, IM = 0.002Private Sub Command1_Click() '任务一运用程序优选KcDim sumQ As Single, sumR As Single, sumR89(2000) As Single, sumQ89(2000) As Single, sumR90(2000) As Single, sumQ90(2000) As SingleDim JD89(2000) As Single, XD89(2000) As Single, j As Integer, JD90(2000) As Single, XD90(2000) As SingleDim JDB(2000) As Single, XDB(2000) As Single, Y As Single, minj As Integer, Min As Single, Kc(2000) As SingleConst Fc = 24For j = 1 To 2000 '运用1989年资料率定 Kc(j) = 0.9 + 0.001 * j Open "C:\Documents and Settings\Administrator\桌面\水文预报\1989年资料.txt" For Input As #1For i = 1 To 365 '流域平均降雨量计算 Input #1, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = 0.33 * P1(i) + 0.14 * P2(i) + 0.33 * P3(i) + 0.2 * P4(i) sumQ89(j) = sumQ89(j) + Q(i) * 24 * 3.6 / 553 Next i Close #1 W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 '流域三层蒸发计算 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B) a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365Ep(i) = E0(i) * Kc(j) Next iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i) EL(i) = 0 ED(i) = 0 End IfIf WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * C ED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i) EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i) End If End IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i) '流域产流计算 If PE(i) > 0 Then '当产流时 If PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1) W(i + 1) = W(i) + PE(i) - R(i) a(i + 1) = PE(i) + a(i) ElseIf PE(i) + a(i) >= WMM Then R(i) = PE(i) + W(i) - Wm W(i + 1) = Wm a(i + 1) = WMM End If End IfIf WU(i) + P(i) - EU(i) - R(i) <= Um Then WU(i + 1) = WU(i) + P(i) - EU(i) - R(i) WL(i + 1) = WL(i) - EL(i) WD(i + 1) = WD(i) - ED(i)WU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i)- EU(i) - R(i) - Um) WD(i + 1) = WD(i) - ED(i) ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm ElseWD(i + 1) = Dm End If End If End IfIf PE(i) <= 0 Then '当不产流时 R(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B))) End If Next iFor i = 1 To 365sumR89(j) = sumR89(j) + R(i) Next i Next jFor j = 1 To 2000 '运用1990年资料率定 Kc(j) = 0.9 + 0.001 * j Open "C:\Documents and Settings\Administrator\桌面\水文预报\1990年资料.txt" For Input As #2For i = 1 To 365Input #2, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = 0.33 * P1(i) + 0.14 * P2(i) + 0.33 * P3(i) + 0.2 * P4(i) sumQ90(j) = sumQ90(j) + Q(i) * 24 * 3.6 / 553 Next i Close #2 W(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60 W(1) = WU(1) + WL(1) + WD(1) WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B))) For i = 1 To 365Ep(i) = E0(i) * Kc(j) Next iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) Then EU(i) = Ep(i):EL(i) = 0:ED(i) = 0If WU(i) + P(i) < Ep(i) Then If WL(i) >= C * Lm Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / Lm ED(i) = 0ElseIf WL(i) < C * Lm And WL(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i)If PE(i) > 0 ThenIf a(i) + PE(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1)a(i + 1) = PE(i) + a(i)W(i + 1) = W(i) + PE(i) - R(i)ElseR(i) = PE(i) + W(i) - Wma(i + 1) = WMMW(i + 1) = WmEnd IfElseR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))If WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfNext iFor i = 1 To 365sumR90(j) = sumR90(j) + R(i)Next iNext jFor j = 1 To 2000JD89(j) = sumR89(j) - sumQ89(j)XD89(j) = (sumR89(j) - sumQ89(j)) / sumQ89(j)JD90(j) = sumR90(j) - sumQ90(j)XD90(j) = (sumR90(j) - sumQ90(j)) / sumQ90(j)For j = 1 To 2000JDB(j) = Abs(XD90(j)) - Abs(XD89(j))XDB(j) = (Abs(XD90(j)) - Abs(XD89(j))) / Abs(XD89(j))Next jMin = 1For j = 1 To 2000 '运用尽量相近原则优选KcIf Abs(XDB(j)) < Min ThenMin = Abs(XDB(j))minj = jEnd IfNext jLabel2.Caption = Kc(minj) ‘输出计算结果JD89(minj) = sumQ89(minj) - sumR89(minj) '绝对误差XD89(minj) = (sumQ89(minj) - sumR89(minj)) / sumQ89(minj) '相对误差Text1.Text = sumQ89(minj)Text2.Text = sumR89(minj)Text3.Text = JD89(minj)Text4.Text = XD89(minj)JD90(minj) = sumQ90(minj) - sumR90(minj) '绝对误差XD90(minj) = (sumQ90(minj) - sumR90(minj)) / sumQ90(minj) '相对误差Text5.Text = sumQ90(minj)Text6.Text = sumR90(minj)Text7.Text = JD90(minj)Text8.Text = XD90(minj)End SubPrivate Sub Command2_Click()'任务二次洪流量计算Dim Qg(1 To 28) As Single, Qs(1 To 28) As Single, UH(1 To 28) As IntegerConst Fc = 11, Cg = 0.978, Qgchu = 55.3Kc = Val(Label2.Caption)Open "C:\Documents and Settings\Administrator\桌面\水文预报\暴雨资料.txt" For Input As #3For i = 1 To 28Input #3, E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)Ep(i) = E0(i) * KcNext iClose #3W(1) = 140: WU(1) = 20: WL(1) = 60: WD(1) = 60W(1) = WU(1) + WL(1) + WD(1)WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B)))For i = 1 To 28If WU(i) + P(i) >= Ep(i) ThenEU(i) = Ep(i):EL(i) = 0:ED(i) = 0End IfIf WU(i) + P(i) < Ep(i) ThenIf WL(i) >= C * Lm ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / LmED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i) '流域产流计算If PE(i) > 0 ThenIf PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1 - (PE(i) + a(i)) / WMM) ^ (B + 1)W(i + 1) = W(i) + PE(i) - R(i)a(i + 1) = PE(i) + a(i)ElseIf PE(i) + a(i) >= WMM ThenR(i) = PE(i) + W(i) - WmW(i + 1) = Wma(i + 1) = WMMEnd IfEnd IfIf WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm Then WD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfIf PE(i) <= 0 ThenR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))End IfNext iFor i = 1 To 28 '水源划分If PE(i) > 0 ThenIf PE(i) <= Fc ThenRG(i) = R(i)RS(i) = 0ElseRG(i) = Fc * R(i) / PE(i)RS(i) = R(i) - RG(i)End IfEnd IfIf PE(i) <= 0 ThenR(i) = 0RG(i) = 0RS(i) = 0End IfNext i'出流系数法推求地下径流Qg(1) = Cg * Qgchu + (1 - Cg) * RG(1) * 553 / (3 * 3.6)For i = 2 To 28Qg(i) = Cg * Qg(i - 1) + (1 - Cg) * RG(i) * 553 / (3 * 3.6)Nexti'单位线推求直接径流Open "C:\Documents and Settings\Administrator\桌面\水文预报\单位线.txt" For Input As #4 For i = 1 To 11Input #4, UH(i)Next iClose #4For i = 1 To 28For j = 1 To 28If 1 <= i - j + 1 And i - j + 1 <= 28 ThenQs(i) = Qs(i) + RS(j) / 10 * UH(i - j + 1)End IfNext jNext iFor i = 1 To 28 '总的流量Q(i) = Qs(i) + Qg(i)Next i'次洪计算结果输出Open "C:\Documents and Settings\Administrator\桌面\水文预报\次洪流量过程.txt" For Output As #5For i = 1 To 28Print #5, "直接径流:" & Qs(i); "地下径流:" & Qg(i); "次洪总流量:" & Q(i)Next iClose #5End SubPrivate Sub Command3_Click() ‘退出EndEnd SubPrivate Sub Command4_Click() ‘人工优选和检验Dim R(1 To 366) As Single, RS(1 T o 366) As Single, RG(1 To 366) As SingleDim PE(1 To 366) As Single, W(1 T o 366) As Single, WU(1 To 366) As Single, WL(1 To 366) As Single, WD(1 To 366) As Single Dim WMM As Single, a(1 To 366) As SingleDim sumQ As Single, sumR As Single, sumQ90 As Single, sumR90 As SingleKc = Val(Text9.Text)If Option1.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1989年资料.txt" For Input As #1For i = 1 To 365Input #1, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ = sumQ + Q(i) * 24 * 3600 * 1000 / 553000000Text1.Text = sumQNext iClose #1End IfIf Option2.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1990年资料.txt" For Input As #2For i = 1 To 365Input #2, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ90 = sumQ90 + Q(i) * 24 * 3600 * 1000 / 553000000 Text5.Text = sumQ90Next iClose #2End IfIf Option3.Value = True ThenOpen "C:\Documents and Settings\Administrator\桌面\水文预报\1991年资料.txt" For Input As #6For i = 1 To 365 '运用1991年资料检验Input #6, Q(i), E0(i), P1(i), P2(i), P3(i), P4(i)P(i) = h1 * P1(i) + h2 * P2(i) + h3 * P3(i) + h4 * P4(i)sumQ = sumQ + Q(i) * 24 * 3600 * 1000 / 553000000Text1.Text = sumQNext iClose #6End IfW(1) = 110: WU(1) = 10: WL(1) = 40: WD(1) = 60W(1) = WU(1) + WL(1) + WD(1)WMM = Wm * (1 + B)a(1) = WMM * (1 - (1 - (W(1) / Wm)) ^ (1 / (1 + B)))For i = 1 To 365Ep(i) = E0(i) * KcNext iFor i = 1 To 365If WU(i) + P(i) >= Ep(i) ThenEU(i) = Ep(i): EL(i) = 0: ED(i) = 0End IfIf WU(i) + P(i) < Ep(i) ThenIf WL(i) >= C * Lm ThenEU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * WL(i) / LmED(i) = 0ElseIf WL(i) < C * Lm And WL(i) >= C * (Ep(i) - EU(i)) Then EU(i) = WU(i) + P(i)EL(i) = (Ep(i) - EU(i)) * CED(i) = 0ElseIf WL(i) < C * (Ep(i) - EU(i)) ThenEU(i) = WU(i) + P(i)EL(i) = WL(i)ED(i) = (Ep(i) - EU(i)) * C - EL(i)End IfEnd IfE(i) = EU(i) + EL(i) + ED(i)PE(i) = P(i) - E(i)If PE(i) > 0 ThenIf PE(i) + a(i) < WMM ThenR(i) = PE(i) + W(i) - Wm + Wm * (1- (PE(i) + a(i)) / WMM) ^ (B + 1)W(i + 1) = W(i) + PE(i) - R(i)a(i + 1) = PE(i) + a(i)ElseIf PE(i) + a(i) >= WMM ThenR(i) = PE(i) + W(i) - WmW(i + 1) = Wma(i + 1) = WMMEnd IfEnd IfIf WU(i) + P(i) - EU(i) - R(i) <= Um ThenWU(i + 1) = WU(i) + P(i) - EU(i) - R(i)WL(i + 1) = WL(i) - EL(i)WD(i + 1) = WD(i) - ED(i)ElseWU(i + 1) = UmIf WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) <= Lm Then WL(i + 1) = WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um)WD(i + 1) = WD(i) - ED(i)ElseWL(i + 1) = LmIf WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - Lm <= Dm ThenWD(i + 1) = WD(i) - ED(i) + WL(i) - EL(i) + (WU(i) + P(i) - EU(i) - R(i) - Um) - LmElseWD(i + 1) = DmEnd IfEnd IfEnd IfIf PE(i) <= 0 ThenR(i) = 0W(i + 1) = W(i) + PE(i)a(i + 1) = WMM * (1 - (1 - W(i + 1) / Wm) ^ (1 / (1 + B)))End IfNext iIf Option1.Value = True Or Option3.Value = True ThenFor i = 1 To 365sumR = sumR + R(i)Next iText2.Text = sumRText3.Text = sumQ - sumRText4.Text = (sumQ - sumR) / sumQEnd IfIf Option2.Value = True ThenFor i = 1 To 365sumR90 = sumR90 + R(i)Next iText6.Text = sumR90Text7.Text = sumQ90 - sumR90Text8.Text = (sumQ90 - sumR90) / sumQ90 End IfEnd Sub。
用VB制作天气预报的演示程序
顾雅珍
【期刊名称】《赤峰学院学报(自然科学版)》
【年(卷),期】2009(025)004
【摘要】VB6.0已成为编制windows应用程序、数据库应用程序、多媒体程序以及Interact同上应用程序的理想工具.本程序是利用VB强大的图形、图象及多媒体处理功能,利用VB中的ActiveX控件,演示天气预报的录入、播放过程.
【总页数】2页(P25-26)
【作者】顾雅珍
【作者单位】赤峰学院计算机科学与技术系,内蒙古,赤峰,024000
【正文语种】中文
【中图分类】TP311.56
【相关文献】
1.用VB制作数据在模型机中流动的演示程序 [J], 夏晓琼
2.用VB制作李萨如图形动态演示程序 [J], 罗英茹
3.用VB编写Hanoi塔问题动态演示程序 [J], 徐晓琴;徐勇
4.用VB制作李萨如图形动态演示程序 [J], 罗英茹
5.地市级电视天气预报节目制作有效方法之一──四平市气象局电视天气预报节目制作简介 [J], 伊丽萍[1];王喜文[2]
因版权原因,仅展示原文概要,查看原文内容请购买。
Public intdf As IntegerPrivate Sub cboNd_Change()If cboNd.Text = "简单" Thentmr1.Interval = 400ElseIf cboNd.Text = "中等" Thentmr1.Interval = 300ElseIf cboNd.Text = "较难" Thentmr1.Interval = 200ElseIf cboNd.Text = "高级" Thentmr1.Interval = 100End IfEnd SubPrivate Sub cboNd_Click()If cboNd.Text = "简单" Thentmr1.Interval = 500ElseIf cboNd.Text = "中等" Thentmr1.Interval = 400ElseIf cboNd.Text = "较难" Thentmr1.Interval = 300ElseIf cboNd.Text = "高级" Thentmr1.Interval = 200End IfEnd SubPrivate Sub Form_Load()RandomizeFor int1 = 0 To 9shp1(int1).FillStyle = 0shp1(int1).FillColor = Rnd * &HFFFFFFshp1(int1).Top = Rnd * 500shp1(int1).Left = Rnd * 9120NextEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)a = 4680:b = 6480:c = 6480 - 5280:d = Atn((4680 - 4560) / (6480 - 5760))e = Atn((4680 - 4440) / (6480 - 5760)):f = Sqr(120 ^ 2 + 720 ^ 2):g = Sqr(240 ^ 2 + 720 ^ 2)Dim sng1 As Single, sng2 As SingleIf X <> a ThenIf X > a Thensng1 = Atn((b - Y) / (X - a))sng2 = d + sng1: sng4 = e + sng1Line3.X2 = a + g * Cos(sng4): Line3.Y2 = b - g * Sin(sng4)Line6.X1 = a + f * Cos(sng2): Line6.Y1 = b - f * Sin(sng2)sng3 = sng1 - d: sng5 = sng1 - eLine4.X2 = a + g * Cos(sng5): Line4.Y2 = b - g * Sin(sng5)Line7.X1 = a + f * Cos(sng3): Line7.Y1 = b - f * Sin(sng3)Line3.X1 = a + c * Cos(sng1): Line3.Y1 = b - c * Sin(sng1) End IfIf X < a And Y < b Thensng1 = Atn((b - Y) / (a - X))sng2 = sng1 - d: sng4 = sng1 - esng3 = sng1 + d: sng5 = sng1 + eLine4.X2 = a - g * Cos(sng5): Line4.Y2 = b - g * Sin(sng5)Line3.X2 = a - g * Cos(sng4): Line3.Y2 = b - g * Sin(sng4)Line7.X1 = a - f * Cos(sng3): Line7.Y1 = b - f * Sin(sng3)Line6.X1 = a - f * Cos(sng2): Line6.Y1 = b - f * Sin(sng2)Line3.X1 = a - c * Cos(sng1): Line3.Y1 = b - c * Sin(sng1) End IfIf X < a And Y > b Thensng1 = Atn((b - Y) / (X - a))sng2 = sng1 + d: sng4 = sng1 + e: sng3 = sng1 - d: sng5 = sng1 - eLine4.X2 = a - g * Cos(sng5): Line4.Y2 = b + g * Sin(sng5)Line3.X2 = a - g * Cos(sng4): Line3.Y2 = b + g * Sin(sng4)Line7.X1 = a - f * Cos(sng3): Line7.Y1 = b + f * Sin(sng3)Line6.X1 = a - f * Cos(sng2): Line6.Y1 = b + f * Sin(sng2)Line3.X1 = a - c * Cos(sng1): Line3.Y1 = b + c * Sin(sng1) End IfLine5.X2 = Line4.X2: Line5.Y2 = Line4.Y2Line4.X1 = Line3.X1: Line4.Y1 = Line3.Y1Line2.X2 = Line6.X1: Line2.Y2 = Line6.Y1Line5.X1 = Line7.X1: Line5.Y1 = Line7.Y1Line2.X1 = Line3.X2: Line2.Y1 = Line3.Y2End IfEnd SubPrivate Sub tmr1_Timer()Static intNl As IntegerFor int1 = 0 To 9shp1(int1).Top = shp1(int1).Top + 50 + Rnd * 100If shp1(int1).Top > 4450 Then shp1(int1).Top = 0: intNl = intNl - 1 NextMousePointer = 2txtnl = intNl + 5If intNl < -5 ThenintNl = -5If txtnl.Text = 0 ThencboNd.Text = "简单": intdf = 0int2 = MsgBox("你失败了,别灰心,降低难度,请重来!", 64, "shot")intNl = 0End Iftxtdf = intdfEnd SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) RandomizeDim bln1 As BooleanDim a As Single, b As SingleFor int1 = 0 To 9a = shp1(int1).Top + 250:b = shp1(int1).Left + 250If (X - b) ^ 2 + (Y - a) ^ 2 < 250 ^ 2 Thenshp1(int1).Top = -500shp1(int1).Left = Rnd * 9120intdf = intdf + 1: bln1 = Trueshp1(int1).FillColor = Rnd * &HFFFFFFEnd IfNextIf Not bln1 Thenintdf = intdf - 1End Ifbln1 = FalseIf intdf = 25 Thenint2 = MsgBox("好样的,继续努力", 64, "shot")ElseIf intdf = 50 Thenint3 = MsgBox("太棒了,再射中50个你就过关了,努力啊!", 64, "shot") ElseIf intdf = 100 Thenint4 = MsgBox("恭喜你过关了,增加难度,再继续!", 64, "shot")cboNd.Text = "较难"ElseIf intdf = 150 ThencboNd.Text = "高级"End Iffrmbingbao.Line (Line4.X1, Line4.Y1)-(X, Y), vbRedEnd SubPrivate Sub tmr21_Timer()frmbingbao.ClsPrivate Sub tmr5_Timer()Static int1 As Integer, int2 As Integer, int3 As Integerint1 = int1 + 1If int1 = 60 Then int1 = 0: int2 = int2 + 1If int2 = 60 Then int2 = 0: int3 = int3 + 1txttime.Text = Format(int3, "00") & ":" & Format(int2, "00") & ":" & Format(int1, "00") End Sub。
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Type POINTAPIX As LongY As LongEnd TypePrivate Declare Function ReleaseCapture Lib "user32" () As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const HTCAPTION = 2Private Const WM_NCLBUTTONDOWN = &HA1Private Const WS_EX_LAYERED As Long = &H80000Private Const LWA_ALPHA As Long = &H2Private Const GWL_EXSTYLE = (-20)Private Const RDW_INVALIDATE = &H1Private Const RDW_ERASE = &H4Private Const RDW_ALLCHILDREN = &H80Private Const RDW_FRAME = &H400Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Long, ByVal dwFlags As Long) As LongPrivate Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Type NOTIFYICONDATAcbSize As Longhwnd As LongUID As LonguFlags As LonguCallbackMessage As LonghIcon As LongszTip As String * 64End TypePrivate Const NIM_ADD = &H0Private Const NIM_MODIFY = &H1Private Const NIM_DELETE = &H2Private Const NIF_MESSAGE = &H1Private Const NIF_ICON = &H2Private Const NIF_TIP = &H4Private Const NIF_DOALL = NIF_MESSAGE Or NIF_ICON Or NIF_TIPPrivate Const WM_MOUSEMOVE = &H200Private Const WM_LBUTTONDBLCLK = &H203Private Const WM_LBUTTONDOWN = &H201Private Const WM_LBUTTONUP = &H202Private Const WM_RBUTTONDBLCLK = &H206Private Const WM_RBUTTONDOWN = &H204Private Const WM_RBUTTONUP = &H205Dim zhishu(7) As StringDim isend As BooleanDim Allzhishu As StringDim pos As SingleDim Bleft As Boolean '向坐移动Dim ph As Single '当前透明度Dim temppos As String '当前地名Dim IsGetIp As BooleanDim CurrTime As Integer '累计时间Dim isshow As BooleanDim index As IntegerDim IsSet As Boolean '是否已经设置窗体大小Private Sub closebutton_Click()Unload MeEnd SubPrivate Sub closebutton_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)closebutton.Picture = close3.PictureEnd SubPrivate Sub closebutton_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)closebutton.Picture = close2.PictureEnd SubPrivate Sub fengli_Click()On Error Resume NextIf ph >= 20 Thenph = ph - 10Elseph = 100End IfEnd SubPrivate Sub Form_Click()SetPhEnd SubPrivate Sub Form_Load()Dim i As IntegerDim oo As ObjectOn Error Resume NextAddIco Me, "天气预报"isshow = Trueph = 80CurrTime = 0Randomize Timerindex = Rnd * 10 + 1Call SetWindowLong(Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)SetLayeredWindowAttributes Me.hwnd, 0, (255 * ph) / 100, &H2For Each oo In Meoo.ForeColor = RGB(200, 39, 128)NextSetPicSet oo = NothingSetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 1riqi.Caption = "今天是:" & Date & GetWeekDayMe.Height = 5600IsGetIp = Falseweb1.Navigate ""End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Dim msg As Longmsg = X / Screen.TwipsPerPixelXIf msg = WM_LBUTTONDOWN ThenIf isshow = True ThenMe.Hideisshow = FalseElseMe.Showisshow = TrueEnd IfEnd IfEnd SubPrivate Sub Form_Resize()On Error Resume NextChangeWindowPrivate Sub ChangeWindow()setformSetPosRgnMeEnd SubPublic Sub RgnMe()Dim hgc As Longhgc = CreateRoundRectRgn(0, 0, Me.Width / 15, Me.Height / 15, 15, 15)SetWindowRgn Me.hwnd, hgc, TrueEnd SubPrivate Sub SetPos()End Sub'重画窗体Private Sub setform()Me.PaintPicture pic1.Picture, 0, 0, Me.Width, 350, 10, 10, 300, 200Me.PaintPicture pic1.Picture, 0, Me.Height - 80, Me.Width, 80, 10, 100, 300, 100 Me.PaintPicture pic1.Picture, 0, 350, 80, Me.Height, 10, 100, 300, 100Me.PaintPicture pic1.Picture, Me.Width - 80, 350, 80, Me.Height, 10, 100, 300, 100Me.PaintPicture pic1.Picture, 80, 350, Me.Width - 150, Me.Height - 420, 10, 10, 300, 10End SubPrivate Sub SetPh()On Error Resume NextIf ph >= 20 Thenph = ph - 10Elseph = 100End IfCall SetWindowLong(Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED)SetLayeredWindowAttributes Me.hwnd, 0, (255 * ph) / 100, &H2End SubPrivate Sub Form_Unload(Cancel As Integer)DeleteIcon MeEnd SubPrivate Sub kongqi_Click()SetPhEnd SubPrivate Sub pic2_Click()SetPhEnd SubPrivate Sub position_Click()SetPhEnd SubPrivate Sub riqi_DblClick()If index < 12 Thenindex = index + 1index = 1End IfSetPicChangeWindowEnd SubPrivate Sub riqi_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 1 ThenReleaseCaptureSendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&End IfEnd SubPrivate Sub tfengli_Click()On Error Resume NextSetPhEnd SubPrivate Sub tianqi_Click()On Error Resume NextSetPhEnd SubPrivate Sub Timer1_Timer()On Error Resume NextIf pos >= -TextWidth(Allzhishu) + 500 Thenpos = pos - 30Elsepos = pic2.WidthEnd Ifpic2.Clspic2.PaintPicture pic1.Picture, 0, 0, pic2.Width, pic2.Height, 10, 10, 300, 10 pic2.CurrentX = pospic2.CurrentY = 50pic2.Print AllzhishuEnd SubPrivate Sub minbut_Click()Me.Hideisshow = FalseEnd SubPrivate Sub minbut_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)minbut.Picture = min3.PictureEnd SubPrivate Sub minbut_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)minbut.Picture = min2.PictureEnd SubPrivate Sub riqi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)minbut.Picture = min1.Pictureclosebutton.Picture = close1.PictureEnd SubPrivate Sub Timer2_Timer()If CurrTime < 10 ThenCurrTime = CurrTime + 1ElseCurrTime = 0OpenUrlEnd IfEnd SubPrivate Sub ttianqi_Click()On Error Resume NextSetPhEnd SubPrivate Sub web1_DownloadComplete()On Error Resume NextDim i As IntegerDim stemp As StringDim max As Integermax = 0stemp = GetText(web1)If stemp <> "" ThenGetIP stempweb2.Visible = TrueOpenUrlSetMaxEnd IfEnd SubPrivate Function GetText(web1 As WebBrowser) As String 'On Error Resume NextDim stemp As StringDim oo As Objectstemp = ""For Each oo In web1.Document.AllDoEventsstemp = stemp & oo.innerhtmlNext' If InStr(stemp, "找不到服务器") Then' MsgBox "读取信息失败,请确认网络已经连接", vbCritical, "天气预报" ' ElseGetText = stemp' End IfSet oo = NothingEnd FunctionPrivate Sub OpenUrl()web2.Navigate "/weatherdetail/54511.html"End SubPrivate Function GetIP(stemp As String)On Error Resume NextDim temp() As Stringtemp = Split(stemp, "您的IP是:")ip.Caption = "您的IP是:" & Mid(temp(1), 1, InStr(temp(1), "<") - 1)temp = Split(temp(1), "您的位置是:")position.Caption = "您的位置是:" & Mid(temp(1), 1, InStr(temp(1), "<") - 1) temppos = Mid(temp(1), 1, InStr(temp(1), "<") - 1)isend = FalseEnd FunctionPrivate Function Getzhishu(stemp As String)On Error Resume NextDim temp() As StringDim i As Integertemp = Split(stemp, "穿衣指数")temp = Split(LCase(temp(1)), "table")temp = Split(LCase(temp(0)), "title=")zhishu(0) = "穿衣指数:" & Left(temp(1), InStr(LCase(temp(1)), "style") - 1) zhishu(1) = "感冒指数:" & Left(temp(2), InStr(LCase(temp(2)), "style") - 1) zhishu(2) = "晨练指数:" & Left(temp(3), InStr(LCase(temp(3)), "style") - 1) zhishu(3) = "交通指数:" & Left(temp(4), InStr(LCase(temp(4)), "style") - 1) zhishu(4) = "中暑指数:" & Left(temp(5), InStr(LCase(temp(5)), "style") - 1) zhishu(5) = "公园指数:" & Left(temp(6), InStr(LCase(temp(6)), "style") - 1) zhishu(6) = "防晒指数:" & Left(temp(7), InStr(LCase(temp(7)), "style") - 1) zhishu(7) = "旅行指数:" & Left(temp(8), InStr(LCase(temp(8)), "style") - 1) Allzhishu = ""For i = 0 To 7Allzhishu = Allzhishu & zhishu(i)Next ipos = pic2.Widthpic2.CurrentX = pospic2.CurrentY = 50pic2.Print AllzhishuBleft = TrueTimer1.Enabled = TrueEnd Function'得到当前的天气情况Private Sub GetCurrReport(stemp As String)On Error Resume NextDim temp() As StringDim temp1() As Stringtemp = Split(LCase(stemp), "<ul class=")temp = Split(LCase(temp(1)), "</div>")temp1 = Split(LCase(temp(0)), "<li>")tianqi.Caption = "现在天气:" & temp1(1)wendu.Caption = "现在温度:" & Left(temp1(2), InStr(temp1(2), "<") - 1)temp = Split(temp(1), "<li class=")temp1 = Split(temp(1), ">")fengli.Caption = temp1(1)temp1 = Split(temp(2), ">")ziwaixian.Caption = temp1(1)temp1 = Split(temp(3), ">")kongqi.Caption = Left(temp1(1), InStr(temp1(1), "<") - 1)tttianqi.Caption = "明天天气:" & GetTweather(stemp)End SubPrivate Function GetTweather(stemp As String) As StringDim temp() As Stringtemp = Split(stemp, "天气概况")temp = Split(LCase(temp(1)), "</td>")temp = Split(LCase(temp(7)), ">")GetTweather = temp(1)End Function'得到今天的总情况Private Sub GetReport(stemp As String)On Error Resume NextDim temp() As StringDim temp1() As Stringtemp = Split(stemp, "找不到服务器")If UBound(temp) > 0 ThenExit SubElsetemp = Split(stemp, "气温")temp = Split(LCase(temp(1)), "<tr>")temp1 = Split(temp(0), ">")ttianqi.Caption = "今天温度:" & Left(temp1(2), InStr(temp1(2), "<") - 1) ttwendu.Caption = "明天温度:" & Left(temp1(4), InStr(temp1(4), "<") - 1) temp1 = Split(temp(1), ">")tfengli.Caption = "今天风力:" & Left(temp1(3), InStr(temp1(3), "<") - 1) ttfengli.Caption = "明天风力:" & Left(temp1(5), InStr(temp1(5), "<") - 1) End IfEnd SubPrivate Sub GetDagai(stemp As String)On Error Resume NextDim temp() As Stringtemp = Split(stemp, "天气概况")temp = Split(LCase(temp(1)), "</td>")temp = Split(temp(3), ">")gaikuang.Caption = "今天概况:" & temp(1)End SubPrivate Function GetWeekDay() As StringOn Error Resume NextSelect Case Weekday(Date)Case 1GetWeekDay = "星期日"Case 2GetWeekDay = "星期一"Case 3GetWeekDay = "星期二"Case 4GetWeekDay = "星期三"Case 5GetWeekDay = "星期四"Case 6GetWeekDay = "星期五"Case 7GetWeekDay = "星期六"End SelectEnd FunctionPrivate Sub web2_DownloadComplete() Dim stemp As Stringstemp = GetText(web2)If stemp <> "" ThenGetCurrReport stempGetzhishu stempGetDagai stempGetReport stempTimer2.Enabled = TrueIf IsSet = False ThenSetMaxIsSet = TrueEnd IfEnd IfEnd SubPrivate Sub SetMax()On Error Resume NextDim max As SingleDim oo As Objectmax = 0For Each oo In MeIf max <= oo.Width Then max = oo.Width NextMe.Width = max + 250End SubPrivate Sub wendu_Click()On Error Resume NextSetPhEnd SubPrivate Sub wendu_DblClick()On Error Resume NextSetPhEnd Sub'添加图标到系统托盘Public Sub AddIco(frm As Form, Information)Dim LPICON As LongDim Tic As NOTIFYICONDATATic.cbSize = Len(Tic)Tic.hwnd = frm.hwndTic.UID = 1&Tic.uFlags = NIF_DOALLTic.uCallbackMessage = WM_MOUSEMOVETic.hIcon = frm.IconTic.szTip = Information & Chr$(0)LPICON = Shell_NotifyIcon(NIM_ADD, Tic) End Sub'删除图标Public Sub DeleteIcon(frm As Form)Dim LPICON As LongDim Tic As NOTIFYICONDATATic.cbSize = Len(Tic)Tic.hwnd = frm.hwndTic.UID = 1&LPICON = Shell_NotifyIcon(NIM_DELETE, Tic) End Sub。