电子钟的程序的设计说明.docx
《电子钟的程序的设计说明.docx》由会员分享,可在线阅读,更多相关《电子钟的程序的设计说明.docx(39页珍藏版)》请在冰豆网上搜索。
![电子钟的程序的设计说明.docx](https://file1.bdocx.com/fileroot1/2023-1/30/9e50a8fb-a2ff-4d43-ac30-9ff2e58cdfc9/9e50a8fb-a2ff-4d43-ac30-9ff2e58cdfc91.gif)
电子钟的程序的设计说明
电子钟的程序设计
[摘要]如今计算机已普及到人们生活以及办公当中,那么电脑桌面电子钟也成为了必需,此次设计就是针对于使用计算机的人群,利用Visualbasic设计桌面时钟、日历,运用了时钟控件、按钮控件等,并且各模块采用不同的算法,完善系统时间存在的一些弊端,以提醒使用电脑的人们合理利用时间,提高办事效率。
可以通过鼠标完成时钟的所有控制,减少一些复杂的程序,并且添加了许多使用的功能,方便用户使用。
[关键词]电子钟;Visualbasic;控件;算法
Abstract:
Thecomputerhasnowspreadtopeoplelivingandoffice,thendesktopelectricclockbecomepeopledailylifeindispensableproduct.Thedesignisbasedontheuseofcomputerscrowd,useofVisualbasicdesigndesktopclock,calendar,clockcontrolusing,buttoncontrol,andeachmoduleusedifferentalgorithms.Thedesktopelectricclockisusedtoremindthecomputeruserreasonableusingtime,improveworkefficiency,cancompleteallthroughthemouseclockcontrol,reducesomeofthecomplexprocedures,andaddmanyusefunction.
Keywords:
electricclock,Visualbasic,controls,algorithm
引言
随着人类社会的进步和时代的发展,现代人们的生活节奏越来越快,时间对人们来说也越来越宝贵。
然而工作的忙碌性和繁杂性容易使人忘记当前的时间,遇到重大事情的时候,一旦忘记时间,就会给自己和他人造成很大的麻烦。
公共场所中,火车要准点到达,航班要准点起飞;日常生活中,公司要求我们上班准时,约会、召开会议或者在教学过程中也必然要提及时间;工业生产中,很多环节都需要用时间来确定生产方式、进程来完成生产等等,这使得人们越来越重视时间观念[1]。
而在无条件的情况下,随时准确的知道时间并合理利用时间,是我们在生活和工作中所难以实现的,所以我们需要一些设备来帮助我们。
于是电子钟成为人们日常生活中不可缺少的必需品,它可以随时提醒忙碌中的人们,减少了一些不必要的麻烦以及严重后果的发生,给人们的生活、学习、工作、娱乐带来极大的方便。
当今社会中,各式各样的电子钟广泛存在,而且生产、生活对于电子钟的需求也越来越大,根据功能的不同,对于电子钟的体型、功能要求也各不相同,应用的领域也各不相同。
如今计算机已普及到人们生活以及办公当中,那么桌面电子钟成为必要,但是由于桌面上系统时间存在一些弊端,例如数字较小,容易被忽略,调整时间必须进入系统文件才可以完成等等,此次设计就是以此为切入点,针对于使用计算机的人群,完善系统时间存在的一些弊端,为用户提供方便,并且推动电子行业的发展以适应用户的需求,同时锻炼自己的动手能力、编程能力以及学习能力,理论联系实际,为以后的工作奠定基础[2]。
根据所设计电子钟的功能特点,此次运用了可视化高级程序设计语言来设计桌面时钟、日历,以提醒使用电脑的人们合理利用时间,提高办事效率,可以即时修改时间,减少一些复杂的程序,并且可以根据需要设置倒计时以及闹钟,提高了所设计电子钟的实用性,方便用户使用。
Visualbasic作为一种可视化高级程序设计语言出现以来,使编程工作变得轻松快捷,使程序设计者摆脱了面向过程语言的许多细节,极大地提高了应用程序开发的效率,是在计算机技术发展历史上应用得最为广泛的语言[3]。
本设计就是利用这种程序设计方法实现电子钟功能的应用程序,实现桌面电子时钟和日历等功能。
本次设计的电子钟存在一些不足之处,如日历显示单调,不可以调整,若需要更改闹钟提醒音乐,只可以通过修改程序实现。
1设计方案
从功能上看,目前使用Visualbasic设计的电子钟程序大部分调用系统时间,如果对时间进行修改,只能打开系统时间修改界面,修改后改变了系统时间。
从界面上看,现有的时钟界面用Visualbasic语言编写,看起来非常单调,不美观。
本次设计避免了现有设计的一些弊端,首先使用Photoshop软件对时钟以及日期显示界面的图像进行了处理,使其美观、大方。
然后运用可视化高级程序设计语言Visualbasic语言来编写,Visualbasic简单易学,并且Visualbasic可以通过对控件属性的直接设置,减少一些程序,使编程变得更加方便、快捷。
刚开始运行时调用系统时间,如果需要进行修改,双击表盘,弹出修改界面,使用鼠标或键盘对其进行修改以显示到桌面,不会影响到系统时间,保证了电子钟的实用性。
2设计使用工具
2.1Visualbasic语言
“Visual”在字面上的意思是“看得、视觉的、用于看的”引申到计算机程序设计中,意思是:
可视化程序设计,指的是开发图形用户界面(GraphicUserInterface,GUI)的方法。
使用这种方法,用户不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象拖放到屏幕上的一点即可。
“BASIC”指的是BASIC语言,它是一种在计算机技术发展历史上应用得最为广泛的语言。
Visualbasic是在BASIC语言基础上发展而来的,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,至今包含了数百条语句、函数及关键词,其中有很多和WindowsGUI有直接关系,它的诞生标志着软件设计和软件开发的一个新时代的开始。
使用Visualbasic既可以开发个人或小组使用的小型软件,又可以开发多媒体软件、数据库应用程序、网络应用程序等大型软件,是国内外最流行的程序设计语言之一,也是学习开发Windows应用程序首选的程序设计语言。
Visualbasic语言是结构化程序设计语言,它具有高级程序设计语言的优点,丰富的数据类型、大量的内部函数、模块化的程序结构,符合结构化设计思想语言,而且结构清晰、简单易学,此外作为一种设计语言,Visualbasic还有许多独到之处。
2.2Visualbasic集成开发环境
Visualbasic集成开发环境(IntegratedDevelopmentEnvironment,IDE)是一组软件工具,它是集应用程序的设计、编辑、运行、调试等多种功能于一体的环境,为程序设计提供了极大的便利[4]。
Visualbasic经历了从1991年的1.0版至1998年的6.0版的多次版本升级,其主要差别是:
更高版本的Visualbasic能提供更多、功能更强的用户控件;增强了多媒体、数据库、网络等功能,使得应用范围更广。
Visualbasic6.0中文版是Microsoft公司最新推出的跨世纪的产品,适合于Windows95/98和WindowsNT平台。
它简单易用,适用面广,无论是通信、数据库,还是多媒体以及普通的Windows用程序都可以用Visualbasic来进行开发,而且方便快捷。
Visualbasic6.0中文版是Microsoft公司在Visualbasic5.0之后推出的最新版本,它有三种版本,各自满足不同的开发需要。
(1)学习版。
学习版使编程人员轻松开发Windows95/98和WindowsNT的应用程序。
该版本包括所有的内部控件,连同Grid、Tab和Data_Bound控件。
(2)专业版。
专业版为专业编程人员提供了一整套进行程序开发的功能完备的工具。
该版本包括了学习版的全部功能,以及ActiveX控件,还包括Internet控件和CrystalReportWriter。
(3)企业版。
企业版使得专业编程人员能够开发功能强大的组内分布式应用程序。
该版本包括专业版的全部功能,以及自动化管理器、部件管理器、数据库管理工具、MicrosoftVisualSourceSaft(TM)面向工程版的控制系统等等。
Visualbasic6.0不仅继承了以往版本的诸多优点,而且增加了许多新特性[5]。
(1)具有基于对象的可视化设计工具。
Visualbasic采用了面向对象设计思想,对象是一个抽象的概念,是将程序和数据封装起来的一个软件部件,是经过调试可以直接使用的程序单位。
许多对象都是可视的。
Visualbasic的基本思路是把复杂的设计问题分解为多个能够完成独立功能且相对简单的对象集合。
所谓“对象”就是个可操作实体,如窗体、窗体中命令按钮、标签、时钟、文本框等,面向对象编程就是指程序员可根据界面设计要求直接在界面上设计出窗口、菜单、按钮等类型对象,并为每个对象设置相应的属性值。
这种“所见即所得”的方式极大的方便了程序员进行界面设计。
(2)事件驱动的编程机制。
在Windows环境下就是以事件驱动方式运行每个对象的,能响应多个区别事件,每个事件都能驱动一段代码事件过程,该代码决定了对象功能,各个动作之间不一定存在关联。
这种机制就称为事件驱动的编程机制。
事件驱动非常适合图形用户界面的编程方式。
传统的编程方式是面向过程的,按程序事先设计的流程来运行的。
但在图形用户界面的应用程序中,用户的动作(即事件)控制着程序的运行流向。
事件驱动的编程机制可由用户操作触发,也可以由系统或应用触发,例如单击命令按钮就触发了按钮Click(单击)事件,该事件中代码就会被执行,若用户未进行任何操作(即未触发事件),则就处于等待状态,整个应用就是由彼此独立事件过程构成。
这样的应用程序代码长度较短,既易于编写又易于维护,极大地提高了程序设计效率。
(3)提供易学易用的应用程序集成开发环境。
Visualbasic为编程提供了集成开发环境,在这个环境中编程者可设计界面、编写代码、调试程序、直接运行,直至把应用编译成可在Windows中运行的可执行文件,并为它生成安装Visualbasic集成开发环境,为编程者提供友好的开发环境。
(4)强大数据库访问功能。
Visualbasic利用数据Control控件可以访问多种数据库Visualbasic6.0提供ADOControl控件,不但可以用最少代码实现数据库操作和控制,也可以取代DataControl控件和RDOControl控件。
(5)支持对象链接和嵌入技术。
Visualbasic核心是对象链接和嵌入(OLE)技术支持,它是访问所有对象的一种思路方法,利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于一体的功能强大的软件。
(6)网络功能。
Visualbasic6.0提供了DltTML(DynamictTML)设计工具,利用这种技术可以动态创建和编辑Web页面使用户在Visualbasic中开发多功能网络应用软件Software。
(7)多个应用向导。
Visualbasic提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导,通过它们可以快速地创建区别类型、区别功能应用。
(8)支持动态交换、动态链接技术。
通过动态数据交换(DDE)编程技术Visualbasic开发应用能和其他Windows应用之间建立数据通信,通过动态链接库技术在Visualbasic中可方便地用C语言或汇编语言编写也可用Windows应用接口(API)。
(9)完备的联机帮助功能。
与Windows环境下的其他软件一样,在Visualbasic中,利用帮助菜单和F1功能键,用户可随时方便地得到所需要帮助信息,Visualbasic帮助窗口中显示了有关举例代码,通过复制、粘贴操作可获取大量举例代码,为用户学习和使用提供了方便。
综合以上特点,我们可以看出Visualbasic提供了开发MicrosoftWindows应用程序的最迅速、最简捷的方法。
不论是MicrosoftWindows应用程序的资深专业开发人员还是初学者,Visualbasic都为他们提供了整套工具,以方便开发应用程序。
Visualbasic6.0界面如下,进入Visualbasic6.0出现如图2.1,窗口中列出了Visualbasic6.0能够建立的应用程序类型。
图2.1进入Visualbasic6.0窗口
单击“新建”后,就可以创建该类型的应用程序了,本次设计中应选择“标准EXE”来实现。
进入图2.2所示的Visualbasic6.0应用程序集成开发环境。
图2.2Visualbasic6.0集成开发环境
2.3Photoshop
Photoshop是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修改、图像制作、广告创意,图像输入与输出于一体的图形图像处理软件。
本次设计使用Photoshop主要进行图像的处理,使用橡皮擦工具、套索工具、五点修复画笔工具等等去除表盘和日历图像中不需要的部分,改变图像的尺寸以达到设计所需[6]。
3电子钟的总体设计
3.1功能介绍
本次使用Visualbasic语言编写电子钟程序,能够在计算机屏幕上显示当前的时间和系统日期并且可以进行校时。
时钟界面,调时界面及日历界面的设计应符合用户的使用习惯,并且在运行时要浮在所有打开文件的最前端。
双击时钟界面可以改变当前显示的时间而不影响系统时间,鼠标可以拖动时钟和日历放到适合的位置,如不需要桌面时钟工具,可以随时关闭显示。
闹铃设计要人性化,可以是乐曲提醒或者语音提醒。
时钟和日历可单独使用,并且日历可以倒计时。
本次设计的桌面时钟软件具有良好的实用性和操作性,可为使用者带来方便。
3.2设计框图
桌面电子钟包括时钟和日历两个部分,时钟部分可以校时、设定闹钟。
日历部分显示当前系统日期。
整体框架图如图3.1所示。
图3.1整体框架图
4电子钟的模块设计
4.1电子钟的时钟模块
4.1.1算法
时钟时针、分针、秒针走一圈是360度,即2π,秒数将表盘分成60等分,则一秒所走的角度为6度,每分的间隔也是6度,但是分针是缓缓移动的,秒针每走一秒,分针的角度改变
度,时针的角度算法相同,即分针每走一分,时针走
度[7]。
程序运行时先将系统的时间赋值给三个变量H、M、S,即时、分、秒,由于每秒的间隔是6度,每分的间隔是6度,每小时的间隔是30度,以12的位置为0度,则计算当前秒针所走角度:
当前秒数乘以6;当前分针所走角度:
当前分数乘以6,加上秒带来的分针间隔差;当前时针所走角度:
当前时数乘以30,再加上分带来的时针间隔差。
将所得到的角度转换成弧度,即角度乘以
。
算法流程图如图4.1所示。
图4.1时钟算法流程图
4.1.2界面设计
打开Visualbasic6.0开发环境,新建“标准EXE”文件,便出现对象窗口,根据所要实现的功能添加相应的控件,时钟界面需要的控件主要有时钟(Timer)、直线(Line)、命令按钮(CommandButton)、形状(Shape)。
时钟对象窗口如图4.2所示。
图4.2时钟对象窗口
(1)窗体属性设置
窗体和控件的属性有很多,以下只列出本次设计主要使用到的属性[8]。
AutoRedraw属性为是否自动刷新或重画窗体上所有图形,本次设计选择Ture,即自动重绘,以清除时针、分针、秒针在表盘上走过的痕迹。
BorderStyle属性为设置边界属性,设置选项有6种:
0None(无边界框架,窗体无法移动和改变大小)、1FixedSingle(窗体为单线边框,可移动,不可以改变大小)、2Sizable(窗体为双线边框,可移动并可以改变大小)、3FixedDialog(窗体为固定的对话框,不可以改变大小)、4FixedToolWindow(窗体外观与工具条相似,又关闭按钮,不可以改变大小)、5SizableToolWindow(窗体外观与工具条相似,有关闭按钮,能改变大小)。
默认值为2,但是为了保证美观,本次设计选择0None,窗体不显示边框
Enabled为是否把鼠标和键盘事件发送给窗体,选择Ture,以执行鼠标和键盘事件。
Left和Top属性设置运行时窗体出现的位置,时钟界面的窗体运行的初始位置在计算机屏幕的左上角。
Picture属性为窗体的背景图片,将实现用Photoshop软件处理好的表盘图片插入窗体中,以直接显示时钟界面,以避免使用图形框控件的复杂。
Width和Height属性用来设置窗体的宽度和高度,即窗体的大小。
(2)时钟(Timer)
时钟(Timer)以一定的时间间隔产生Timer事件从而执行相应的事件过程。
在运行期间,时钟(Timer)不显示在屏幕上。
时钟(Timer)的主要属性为Enable属性和Interval属性。
时钟(Timer)产生Timer事件的两个前提条件是:
Enable属性为Ture,Interval属性为非0。
Enable属性:
当Enable属性为False时,定时器不产生Timer事件。
默认值为Ture。
在程序设计时,利用该属性可以灵活地启用或停用Timer事件。
Interval属性:
Interval属性决定两个Timer事件之间的时间间隔,其值以ms(0.001s)为单位,介于0~64767ms之间,所以最大的时间间隔大约为1min。
默认值为0。
如果希望0.5s产生一个Timer事件,那么Interval属性应设为500,这样,每隔500ms,定时器发生一个Timer事件,从而执行相应的Timer事件过程。
如果Interval属性为0,时钟不产生Timer事件。
本次设计只要将其设置为1000,以每秒产生一个Timer事件。
(3)直线(Line)
时钟界面的设计需要三个直线(Line)控件,分别表现为时针、分针、秒针,其属性设置如下。
BorderColor为画线的颜色,Line1设置为黑色,为时针;Line2设置为黑色,为分针;Line3设置为蓝色,为秒针。
BorderStyle为画线的风格,共有7种:
0Transparent(无线)、1Solid(实线,此为默认值)、2Dash(虚线)、3Dot(点线)、4Dash-Dot(单点划线)、5Dash-Dot-Dot(双点划线)、6InsideSolid(内部实线),设计时应选择1。
BorderWidth为画线的宽度,为使图像更清晰,将Line1设置为4,Line2设置为3,Line3设置为2。
(4)命令按钮(CommandButton)
在Visualbasic应用程序中,命令按钮的应用十分广泛。
在程序运行期间,当用户选择某个命令按钮就会发生相应的事件过程。
本次设计主要用此控件执行“关闭”事件。
其主要属性如下。
Height和Width设置相应的大小。
Enabled用于设定是或对事件产生响应,取值为:
True可用;False不可用,在执行程序时,该对象用灰色显示,并且不响应任何事件。
Picture属性为设置命令按钮上的图片,插入经常使用的关闭按钮的图片,以方便于用户了解。
Style设置对象的外观形式,取值为:
0Standard(标准,标准风格);1Graphical(图形,带有自定义图片),此时Picture、DisabledPicture和DownPicture属性起作用。
设计时应设置为1,才能显示按钮上的图片。
ToolTipText设置该对象的提示行,将其设置为“关闭”,当用户将鼠标移动到该按钮上,便会出现“关闭”的字样,以方便用户了解按钮的用途。
(5)形状(Shape)
形状(Shape)控件可以在窗体上插入图形,但是不可以执行事件,在时钟界面中,它作为一个辅助对象,起到优化美观的作用,即在时针、分针、秒针三条线的连接处插入一个圆形的图形。
属性设置如下。
FillColor填充颜色,当FillStyle属性为不时有效。
可从弹出的调色板选择。
本次设计选择白色。
Left和Top设置其位置。
Shape指定控件的外观,有6种可选:
0矩形、1正方形、2椭圆、3圆、4圆角矩形、5圆角正方形。
此处设置为3。
4.1.3程序设计
根据算法和流程图,首先定义常量、变量,加载窗体后,将系统时间赋值给分别代表时、分、秒的变量H、M、S,将窗体背景设为表盘背景,设置好合适的大小后,设定坐标系,将三条线的起点设置在坐标原点,即窗体的中心,一秒启动一次Timer事件。
为了保证美观,窗体设计为透明色,即RGB(66,66,66)。
Timer事件程序代码实现了时针、分针、秒针的动作。
主要程序设计如下:
ConstPI=3.1415926
ConstRAD=PI/180'定义了一个常量,这个常量的值为1度的弧度值
Dimrtn&
DimX0,Y0AsInteger
PrivateSubForm_Load()
H=Hour(Now)
M=Minute(Now)
S=Second(Now)
Form1.Scale(-1390,1470)-(1455,-1475)
len_1=Sqr((Line1.Y2-Line1.Y1)^2+(Line1.X2-Line1.X1)^2)'秒针长度
len_2=Sqr((Line2.Y2-Line2.Y1)^2+(Line2.X2-Line2.X1)^2)'分针长度
len_3=Sqr((Line3.Y2-Line3.Y1)^2+(Line3.X2-Line3.X1)^2)'时针长Form1.AutoRedraw=True'窗体自动重绘
Timer1.Interval=1000'计时器间隔1秒执行一次Timer事件
Timer1.Enabled=True'启动计时器
Me.BackColor=RGB(66,66,66)
rtn=GetWindowLong(hwnd,GWL_EXSTYLE)
rtn=rtnOrWS_EX_LAYERED
SetWindowLonghwnd,GWL_EXSTYLE,rtn
SetLayeredWindowAttributeshwnd,RGB(66,66,66),0,LWA_COLORKEY'将RGB(66,66,66)颜色设置为透明的
rtn=SetWindowPos(Form1.hwnd,-1,0,0,0,0,3)'设置窗体总在最前面,如果将上面语句中的-1改为-2则取消窗体总在最前面
EndSub
PrivateSubTimer1_Timer()'计时器的Timer事件过程
DimSr,Mr,HrAsInteger'定义了三个变量
S=S+1
M=M+1/60
H=H+1/3600
IfS=60ThenS=0
IfM=60ThenM=0
IfH=12ThenH=0
Sr=S*6'获取当前秒数,并转换成相应的角度每秒的间隔是6度
Mr=M*6+S/60'获取当前分数,并转换成相应的角度每分的间隔是6度,同时加上秒针带来的分针的间隔差
Hr=(HMod12)*30+M/12'同上,计算时针的角度Mod12是因为每12小时一圈,后面的是重复
Line1.X2=400*Sin(RADHr)
Line1.Y2=400*Cos(RAD*Hr)
Line2.X2=600*Sin(RAD*Mr)
Line2.Y2=60