模拟时钟转动程序设计说明书.docx
《模拟时钟转动程序设计说明书.docx》由会员分享,可在线阅读,更多相关《模拟时钟转动程序设计说明书.docx(8页珍藏版)》请在冰点文库上搜索。
模拟时钟转动程序设计说明书
摘要-2-
1引言-3-
1.1选题背景-3-
1.2任务与分析-3-
2方案设计-4-
3界面设计-5-
4代码设计及程序调试-6-
总结与体会-10-
致谢-11-
参考文献-12-
摘要
随着计算机的不断更新发展,计算机图形操作和动画设计扮演着极为重要的角色,Windows环境下的VisualBasic提供了丰富的图形功能。
本文主要通过对选题背景、方案设计、界面设计、代码编写及调试以及软件使用说明等的介绍,介绍了作者利用VisualBasic对“模拟时钟转动”程序的开发设计过程。
关键词:
VisualBasic模拟时钟转动程序设计
1引言
1.1选题背景
通过一年来对VisualBasic高级语言程序设计的学习,我已经掌握了一些常用的控件的使用方法,对简单的程序设计的常用算法也有了一定的了解,还掌握了对图形和动画的一些基本操作。
为了进一步加深理解、验证、巩固课堂教学内容,加深对可视化编程思想的理解,强化VisualBasic对程序流程控制、常用控件的属性、事件、方法的理解和使用;为了进一步提高编程能力、程序的调试能力,理论联系实际的能力;巩固所学的这些程序设计的方法,为了达到后续课程对实际编程计算能力的要求,特选定“模拟时钟转动程序设计”这个寓教于乐的小题目作为课程设计实践教学环节的题目,有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力;有助于提高独立思考能力,自学能力和团队协作能力。
1.2任务与分析
任务的具体内容:
设计一个类似于Windows“时钟”的程序,并用数字显示时间。
在界面显示一个活动时钟,能模拟机械钟表行走,还要准确的利用数字显示时间。
任务具体要求:
要求遵循面向对象和结构化程序设计的编程思路,设计合理的界面,设置所需控件及其属性,编写相应的事件过程,并上机调试程序,在基本要求达到后,进行一定创新设计。
并编写规范的设计说明书一份。
软件的预期功能:
实现石英钟表式的能够有指针运动的时钟显示。
2方案设计
显示一个动画时钟,该时针随着每一秒而动态变化。
与其他图形动画技术一样,每隔0.1秒(100毫秒)触发Timer事件下的过程,,首先利用PSET,LINE,CIRCLE绘图方法绘制时钟的表盘。
然后再绘制三个指针的位置,计算指针的坐标,设计各个指针的转动角度和时间,这样就实现了每秒走时的电子钟。
主要思路:
(1)绘图方法中的Line,Circle方法进行表盘的设计
将Form大小确定为50000*5000,通过Form大小的确定可以确定出表盘圆心的位置,即(BaseX=Me.ScaleWidth/2,BaseY=Me.ScaleHeight/2),以及圆的半径大小R=BaseX*0.8
(2)绘图方法中的line来绘制指针
通过圆心的确定就能确定指针的起点坐标,从而设计指针的长度和两端点坐标,起点坐标为(BaseX+(R-15)*Sin(i*PI/180),BaseY-(R-15)*Cos(i*PI/180)),终点坐标为(BaseX+R*Sin(i*PI/180),BaseY-R*Cos(i*PI/180))
(3)利用Timer控件来控制指针的绘制和运动
将Timer控件的Interval属性设为100毫秒,即是1秒触动一次时间,从而通过调用DrawClock,Biaopan子过程每一秒画一次表盘
(4)子过程,子函数
在程序中通过DrawClock,Biaopan子过程来画表盘和指针,每一次调用子过程,画出下一秒的指针,以及用背景色为白色色上一秒的指针线掩盖原来的指针。
3界面设计
简易时钟设计程序的模拟时钟运行界面如图所示
程序运行界面
将Form窗口设计为5000*5000的正方形,所取的圆的直径为窗体宽度的0.8倍,在界面中就可以依次设计出1—12数字label的位置,秒针每转动一格指针转过的角度为6度,就可以计算出秒针末端的坐标((BaseX+R*Sin(i*PI/180),BaseY-R*Cos(i*PI/180)
4代码设计及程序调试
第一步,先新建一个工程,然后用“工具箱”中的工具加入一个Timer1,将Timer1的属性interval改为100。
定义变量的代码如下:
ConstPI=3.1415926
DimBaseXAsInteger,BaseYAsInteger,RAsInteger
Dimr1AsInteger,r2AsInteger,r3AsInteger
第二步,绘制表盘的的代码,首先寻找圆心,将整个圆周先分为360份,每30份为1次绘制小时,再利用三角函数计算出每一分钟的刻度应该的坐标,画线,再沿分钟的刻度用circle函数边缘画出表盘的圆圈。
PrivateSubbiaopan()
DimiAsInteger
BaseX=Me.ScaleWidth/2
BaseY=Me.ScaleHeight/2
IfBaseX>BaseYThenR=BaseX*0.8
IfBaseX以上语句是用于确定表盘的大小和表盘圆心的位置
Fori=0To360Step6
Fori=0To360Step6
IfiMod90=0Then
Me.DrawWidth=6
DrawLineBaseX+(R-15)*Sin(i*PI/180),BaseY-(R-15)*Cos(i*PI/180),BaseX+R*Sin(i*PI/180),BaseY-R*Cos(i*PI/180),3
EndIf
通过一个if语句结构,如果在for循环中如果i能够被90整出则画出3、6、9、12数字label所对应的表盘刻度
IfiMod30=0Then
Me.DrawWidth=6
DrawLineBaseX+(R-15)*Sin(i*PI/180),BaseY-(R-15)*Cos(i*PI/180),BaseX+R*Sin(i*PI/180),BaseY-R*Cos(i*PI/180),4
EndIf
通过一个if语句结构,如果在for循环中如果i能够被30整出则画出1、2、4、5、7、8、10、11数字label所对应的表盘刻度
Me.DrawWidth=5
Me.Circle(BaseX,BaseY),R,vbBlue
上面两句用于画出表盘的圆,圆心为(BaseX,BaseY)
第三步,绘制时钟的指针,先将系统时间中间的秒,分钟,小时提出作为1个参数,再用这个参数带入三角函数的运算,计算出时针,分针,秒针各自时间内应该走过的角度,利用划线的函数画出各个指针。
Me.DrawWidth=1
DrawLineBaseX,BaseY,BaseX+(R-8)*Sin(Second*PI/30),BaseY-(R-8)*Cos(Second*PI/30),0
用于画出秒针的线条
DrawLineBaseX,BaseY,BaseX+R*0.8*Sin(Minute*PI/30),BaseY-R*0.8*Cos(Minute*PI/30),1
用于画出分针的线条
DrawLineBaseX,BaseY,BaseX+R*0.6*Sin((Hours+Minute/60)*PI/6),BaseY-R*0.6*Cos((Hours+Minute/60)*PI/6),2
用于画出时针的线条
第四步,画线函数,用line函数,将坐标定于为静态变量,将上一次的画线颜色设置为背景颜色,并且设置画线的宽度。
PrivateSubDrawLine(x1AsInteger,y1AsInteger,x2AsInteger,y2AsInteger,FlagAsInteger)
StaticOldSX1AsInteger,OldSX2AsInteger,OldSY1AsInteger,OldSY2AsInteger
SelectCaseFlag
Case0
Me.DrawWidth=1
Me.Line(OldSX1,OldSY1)-(OldSX2,OldSY2),BackColor
Me.Line(x1,y1)-(x2,y2),vbBlue
OldSX1=x1
OldSX2=x2
OldSY1=y1
OldSY2=y2
在子过程中用Static函数确定下来原来的指针坐标,下一秒画线的时候将原来的指针掩盖
第五步,调用子过程,显示现在时间。
PrivateSubTimer1_Timer()
CallDrawClock
CallDrawClock
EndSub
Timer每触动一次,调用一次DrawClock和DrawClock子过程,画出当前时间的指针位置。
总结与体会
本段具体内容为本次课程设计整体上的总结与体会,可包含所设计软件的优点和不足的分析,遇到的困难及解决方法等。
在这个简易时钟设计的过程中,我是对时钟的表盘设计和时针的设计。
在课设创作的过程中,我学会了基本的VB编程技能,对软件制作也有了初步的了解。
同时也遇到了种种困难,体验到了编程的艰辛。
在实现“时钟指针运动”的过程中,指针运动的坐标难以计算,无法实现指针的机械转动。
无法实现对时钟的时间进行修改。
后来,我们通过相互讨论及查询相关资料,细心检查语句。
不断使逻辑和格式趋于完善。
最终,问题得以解决。
软件的制作是一件辛苦而费力的工作,但在同学的努力下,我们不但按时完成,而且从中学到了许多课本上没有的东西,首先是团队的合作精神。
现代软件的制作不是一个人可以完成的,个人始终需要集体的支持。
在确定制作项目之后,我们进行了分工,每个人都有任务。
但分工不等于对其余人的工作放手不管,在遇到困难时,大家集中在一起进行分析讨论,共同解决。
其次是学习与实践的关系。
在课本上学到了VB程序的基础知识。
但在实践中,需要大量的拓展知识。
我们在理解书本知识的基础上,查阅了大量的书籍,不仅找到了问题的解决方法,而且优中取优,尽量选取最简方法,从而促进了我们VB知识的提高。
在设计中会遇到很多的困难,其主要的原因如下:
(1)对所学过的相关知识不是很熟练,不会灵活应用;
(2)缺乏实践经验,不会理论联系实际;
(3)思维不是很灵活;
(4)在设计的时候不够认真仔细;
(5)知识面不够广;
(6)画图的经验不足,不会应用简单的方法;
(7)对VB编程不是很熟练,有很多的方法不会应用。
通过本次的VB程序简易时钟设计,要吸取一定的经验,在以后的学习和工作当中就要更加的认真仔细,尽量不让不该发生的错误发生,也更应该增加实践经验和灵活的思维方法,当然,努力学习还是首要的任务,因为只有有了很牢固的知识后才能让我们做什么事都游刃有余,胸有成竹。
这次的VB程序设计的计算能力,绘图能力,应用VB编程的能力,应用资料、手册、标准的能力都得到了很大的提高。
虽然,在设计的过程中遇到了很多的问题,最后每个问题都得到解决的时候,有种如释重负的感觉,心里充满了成就感。
此外,我还得出一个结论:
知识必须通过应用才能实现其价值!
有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
致谢
这次能够顺利的完成这次课程设计,首先我要感谢在课程设计辅导我的张诗波老师,是他在我每次感到困难的时候给予我很大的帮助,还要感谢那些在设计的时候向我提供意见的同学们,当然还要感谢学校提供这么好的学习环境,让我们能够顺利的完成这次课程设计,感谢我的父母和朋友们给与我的物质精神上的鼓励和支持。
【参考文献】
[1]杨明广.王秀华.VisualBasic程序设计教程[M].北京:
中国科学技术出版社,2006
[2]王秀华.余建坤.VisualBasic程序设计上机和级考实训教程[M].北京:
中国科学技术出版社,2006
[3]郭瑞军.VisualBasic数据库开发实例精粹[M].北京:
电子工业出版社,2003
[4]曾强聪,新编visualbasic程序设计教程,清华大学出版社,2004
[5]刘瑞新,visualbasic程序设计教程(第二版),电子工业出版社,2003