vb设计有语音报时与报警功能的闹钟
2004-05-18■作者:潇潇■出处: yesky开发者网络 【相关文章:学习心得----seh(4)】 【扩展阅读:The C# Programming L】 【扩展信息:一维指针遍历二维数组】 从钟表的制作兼谈数学在编程中的应用 经常在论坛上看到很多刚刚想要步入编码领域的爱好者问道:我数学学的不好,能学好编程吗?当然回答的人也各自有不同的答案。但我要说,随着编程工具功能的日臻完善,工具所能做的越来越多,大大提高了程序员的开发速度,因此如果只是玩玩编程的话,对于数学不许要太多的专业知识,单是各个工具中提供的控件,就足以让你编写出一个让你感到自豪的软件了;而对于逻辑方面的问题,只要没有智力问题,说话不颠三倒四的,应该也不会有什么问题。但是对于一个计算机专业的工作者,或者想要成为一名计算机专业领域工作者的爱好者,数学就是必须学习的知识了,而且越是与图形打交道多的领域,对数学的运用越多。 所以这里我们就以一个很小的程序来看一看数学在编程中的应用。 先来看一看,我们想要实现的功能吧。作为一个有实在意义的时钟,除了显示时间,还要能够定时、报时等等。所以我们在这个例子中,就要实现以下几种功能: 1、 显示时间 2、定时报警 3、语音报时 4、定时关机 (一)显示时间 让我们先来看看怎样实现显示时间吧。在windows中给我们提供了一系列通用控件,而且各种编程工具又在这个基础上,给我们提供了更多的选择。不同的控件,有不同的作用,但就显示信息来说,主要有textbox,lable等控件。在这里我们选择lable控件来显示时间。 那么怎样获取时间呢?vb中给我们提供了以下函数: 函数名 函数功能 语法结构 date 函数 返回包含系统日期的variant( date ) 。 date dateadd函数 返回包含一个日期的variant( date ) ,这个日期还加上了一段时间间隔。 dateadd ( interval ,number ,date ) datediff函数 返回variant( long )的值,表示两个指定日期间的时间间隔数目。 datediff ( interval ,date1 ,date2,firstdayofweek [,firstweekofyear ] ) datepart函数 返回一个包含已知日期的指定时间部分的variant( integer ) datepart( interval ,date [ , firstdayofweek ] [ , firstweekofyear ] ) dateserial函数 返回包含指定的年月日的variant( date ) dateserial( year ,month ,day ) datevalue函数 返回一个variant( date ) datevalue( date ) day函数 返回一个variant( integer ) ,其值为1到31之间的整数,表示一个月中的某一日 day( date ) hour函数 返回一个variant ( integer ) ,其值为0到23之间的整数,表示一天之中的某一个钟点 hour ( time ) minute函数 返回一个variant ( integer ) ,其值为0到59之间的整数,表示一个小时中的某一分钟 minute ( time ) now函数 返回一个variant ( date ) ,根据计算机系统设置的日期与时间来指定日期与时间 now second函数 返回一个variant( integer ) ,其值为0到59之间的整数,表示一分钟之内的某一秒钟 second( time ) time函数 返回一个指明当前系统时间的variant( date ) time time语句 设置系统时间 time = time timer函数 返回一个single,代表从午夜开始到现在所经过的秒数 timer timeserial函数 返回一个variant( date ) ,包含具有现在时、分、秒的时间。 timeserial(hour,minute,second) timevalue函数 返回一个包含时间的variant( date ) timevalue( time ) weekday函数 返回一个variant ( integer ) ,包含一个整数,代表某个日期是星期几 weekday( date [ ,firstdayofweek ] ) year函数 返回一个variant( integer ) ,包含表示年份的整数 year( date ) 多丰富的资源,vb真是体贴。下面然我们来以一个实例看看怎样显示时间吧。 程序中所用到的控件的作用与相关属性设置如下表: 控件 属性 值 作用 form1 caption 时钟 显示窗体 label1 caption 空 显示时间 label2 caption 空 显示分钟 label3 caption 空 显示秒钟 label4 caption 空 显示年份 label5 caption 空 显示月份 label6 caption 空 显示日期 label7 caption 空 显示星期几 timer1 interval 1000 每秒钟触发一次事件 下面是代码: private sub timer1 _ timer ( ) hou = hour ( time ) miu = minute ( time ) sec = second ( time ) yea = year ( date ) mon = month ( date ) da = day ( date ) label1 . caption = hou & "小时 " label2 . caption = miu & "分钟" label3 . caption = sec & "秒钟" label4 . caption = yea & "年" label5 . caption = mon & "月" label6 . caption = da & "日" label7 . caption = "星期" & weekday ( date ) end sub 下图是运行的结果: 很简单吧!下面我们看看不使用控件,我们用绘图函数自己来画出一个运行着的时钟。 现来补充一些v b中的绘图知识: 1、line方法 line方法用于画出一条直线或矩形,其语法格式如下: 格式:[对象] . line [ [ step ] ( x1 , y1 ) ] -( x2 ,y2 )[ ,颜色 ] [ ,b [ f ] ] 说明: (1)对象指的是line在何处产生结果,它可以是窗体或图形框,默认为当前窗体; (2)( x1 ,y1 )为线段的起点坐标或矩形的左上角坐标; (3)(x2,y2)为线段的终点坐标或矩形的右下叫坐标; (4)关键字step表示采用当前作图位置的相对值; (5)关键字b表示画矩形; (6) 关键字f表示用画矩形的的颜色来填充矩形。缺省f时,矩形的填充由fillcolor与fillstyle属性决定。 举个例子:我们在窗体上随机画20条颜色不同得直线.可以这样写: private sub form _ click ( ) dim i as integer dim x as integer dim y as integer for i = 1 to 20 x = form1 . scalewidth * rnd y = form1 . scaleheight * rnd clr = 15 * rnd line ( form1 . width / 2 , form1 . height / 2 ) - ( x , y ) , qbcolor ( clr ) next i end sub 下面是运行结果: 2、circle方法 circle方法用于画圆、椭圆、圆弧与扇形,其语法格式如下: 格式: [对象.] circle [ [ step ] ( x , y ) ,半径 [ ,颜色 ] [ ,起始角度 ] [ ,终止角度 ] [ ,长短轴比率 ] ] 说明: (1) 对象指的是circle方法将在何处产生结果,它可以是窗体或图形框或打印机,缺省时为当前窗体。 (2)(x,y)为圆心坐标,关键字step表示采用当前作图位置的相对值。 (3)圆弧与扇形通过参数的起始角度与终止角度控制。当起始角度与终止角度取值为0~360度时,画出来的是圆弧;当在起始角度与终止角度取值前加一个负号时,画出的是扇形,负号表示要画圆心到圆弧的径向线。 (4)椭圆通过长短轴比率控制,默认值为1,所以画出来的是圆。 下面我们用circle方法分别画出圆形,椭圆,圆弧与扇形。下面是代码与图示: private sub form _ click ( ) circle (1500, 1500), 1000 end sub 下图为画出的圆形: private sub form _ click ( ) circle ( 1500, 1500 ) , 1000 , , 0.7 , 2.1 ‘注意1000与0.7,中间是两个逗号 end sub 下图为画出的圆弧: private sub form _ click ( ) circle (1500 , 1500 ) , 1000 , , - 0.7 , - 2.1 end sub 下图为画出的圆形: private sub form _ click ( )... 下一页