计算机应用基础课程设计说明书vb时钟程序.docx
《计算机应用基础课程设计说明书vb时钟程序.docx》由会员分享,可在线阅读,更多相关《计算机应用基础课程设计说明书vb时钟程序.docx(12页珍藏版)》请在冰豆网上搜索。
计算机应用基础课程设计说明书vb时钟程序
交通与汽车工程学院
课程设计说明书
课程名称:
计算机应用基础课程设计
课程代码:
6011339
题目:
时钟程序设计
年级/专业/班:
2011级车辆2班
学生姓名:
曹安
学 号:
312011*********
开始时间:
2012年2月20日
完成时间:
2012年3月2日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书(计算书、图纸、分析报告)撰写质量(45)
总分(100)
指导教师签名:
年月日
目录(小三黑体,居中)
摘要……………………………………………………………………………………………2
1引言…………………………………………………………………………………………3
1.1问题的提出………………………………………………………………………………3
1.2任务与分析………………………………………………………………………………3
2设计方案……………………………………………………………………………………4
2.1程序功能设计……………………………………………………………………………4
2.1.1程序功能描述…………………………………………………………………………4
2.1.2程序功能结构分析……………………………………………………………………4
2.2程序界面和代码设计……………………………………………………………………5
2.2.1工程设计框架…………………………………………………………………………5
2.2.2各界面及代码设计……………………………………………………………………5
3结果分析…………………………………………………………………………………12
结论…………………………………………………………………………………………12
致谢…………………………………………………………………………………………13
参考文献……………………………………………………………………………………14
摘要
随着计算机的不断更新发展,计算机绘图方法和计时器的使用扮演着极为重要的角色,Windows环境下的VisualBasic提供了丰富的绘图方法。
本文主要通过对选题背景、方案设计、界面设计、代码编写及调试以及软件使用说明等的介绍,介绍了作者利用VisualBasic对“简易时钟程序设计”应用软件的开发设计过程,并分析了所开发软件系统的优点和不足。
关键词:
VisualBasic简易时钟程序设计
1引言
通过一年来对VisualBasic高级语言程序设计的学习,我已经掌握了一些常用的控件的使用方法,对简单的程序设计的常用算法也有了一定的了解,还掌握了对绘图和时间控制的一些基本操作。
为了进一步加深理解、验证、巩固课堂教学内容,加深对可视化编程思想的理解,强化VisualBasic对程序流程控制、常用控件的属性、事件、方法的理解和使用;
1.1问题的提出
为了进一步提高编程能力、程序的调试能力,理论联系实际的能力;巩固所学的这些程序设计的方法,为了达到后续课程对实际编程计算能力的要求,特选定“简易时钟程序设计”这个寓教于乐的小题目作为课程设计实践教学环节的题目,有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力;有助于提高独立思考能力,自学能力和团队协作能力。
1.2任务与分析
本任务是设计一个简易时钟,显示当前的时间。
主要运用了visualbasic的绘图方法和对timer控件的使用。
要将绘图方法和时间指针的走动相结合起来,找出其内在的联系。
2设计方案
显示一个动画时钟,该时针随着每一秒而动态变化。
与其他图形动画技术一样,每隔1秒(1000毫秒)触发Timer事件下的过程,绘制三个指针的位置,这样就实现了每秒走时的电子钟。
而显示当前时间则在timer事件中将当前时间(time)附给tabel1的caption,这样就显示啦,当前的时间。
在时钟的框架上,用绘图方法line和circle就可以啦。
2.1程序功能设计
设计一个类似于Windows“时钟”的程序,并用数字显示时间。
2.1.1程序功能描述
1、在界面显示一个活动时钟,能模拟机械钟表行走;
2、表盘上有刻度和数字,数字显示当前时间;
3、时针、分针、秒针的位置与数字显示时间一致,与计算机系统时间一致;
4、用户能修改时间并与计算机系统时间一致;
2.1.2程序功能结构分析
主要使用时钟Timer控件的Interval属性和Timer事件。
1小时=60分=3600秒。
分别用Hour()函数、Minute()函数、Second()函数返回当前系统时间Time()的小时、分钟、秒数。
首先使用Scale方法定制用户坐标系统,如Picture1.Scale(X1,Y1)-(X2,Y2),定义了坐标系统(Picture1)的左上角(X1,Y1)和右下角(X2,Y2)的坐标值。
坐标系统的中心在图片框的正中,时钟绘制在图片框中的正中央,外圈用Pset方法或Circle方法绘制,时针、分针和秒针用Line方法选择不同的线形和颜色绘制。
每隔30°用Line画一大刻度,每隔6°用Line画一小刻度,表盘上的数字用CurrentX,CurrentY属性定位后再用Print方法输出。
时针、分针、秒针随时间变化而导致的位置改变同样使用Line方法来实现,代码写在Timer事件中。
2.2程序界面和代码设计
2.2.1工程设计框架
系统有两个窗口一个模块工程名为”我的时钟”
窗体名为”我的时钟”
2.2.2各界面及代码设计
(1)主界面
图1
欢迎界面主要代码如下:
ConstPI=3.1415926
DimBaseXAsInteger,BaseYAsInteger,RAsInteger
Dimbasex1AsInteger,basey1AsInteger,basex2AsInteger,basey2AsInteger
Dimbasex3AsInteger,basey3AsInteger,basex4AsInteger,basey4AsInteger
Dimbasex5AsInteger,basey5AsInteger
Dimr1AsInteger,r2AsInteger,r3AsInteger
DimjiayiAsInteger
DimjiaerAsInteger
DimSecondAsInteger
DimMinuteAsInteger
DimHoursAsInteger
PrivateSubCommand1_Click()
End
EndSub
PrivateSubCommand2_Click()
Form2.Show
EndSub
PrivateSubCommand3_Click()
jiayi=jiayi+1
EndSub
PrivateSubCommand4_Click()
jiaer=jiaer+1
EndSub
PrivateSubCommand5_Click()
jiayi=jiayi-1
EndSub
PrivateSubCommand6_Click()
jiaer=jiaer-1
EndSub
2)Command7代码
PrivateSubCommand7_Click()
jiayi=0
jiaer=0
EndSub
3)加载界面时公用代码
PrivateSubForm_Load()
Me.ScaleMode=3
Me.AutoRedraw=True
Me.ForeColor=vbBlack
Label16.Caption=Time
Label3.ForeColor=vbRed
Label6.ForeColor=vbRed
Label9.ForeColor=vbRed
Label12.ForeColor=vbRed
IfMe.Width<3000ThenMe.Width=3000
IfMe.Height<3000ThenMe.Height=3000
EndSub
4)画指针用函数
PrivateSubInit()
DimiAsInteger
BaseX=Me.ScaleWidth/2
BaseY=Me.ScaleHeight/2
IfBaseX>BaseYThenR=BaseY*0.6
IfBaseY>BaseXThenR=BaseY*0.6
r1=R*0.2
r2=R*0.1
r3=R*0.05
Fori=0To360Step6
IfiMod30=0Then
Me.DrawWidth=5
DrawLineBaseX+(R-3)*Sin(i*PI/180),BaseY-(R-3)*Cos(i*PI/180),BaseX+(R-8)*Sin(i*PI/180),BaseY-(R-8)*Cos(i*PI/180),3
Else
Me.DrawWidth=3
Me.PSet(BaseX+(R-3)*Sin(i*PI/180),BaseY-(R-3)*Cos(i*PI/180))
EndIf
Nexti
Me.DrawWidth=1
Me.Circle(BaseX,BaseY),R
EndSub
5)画外部表盘函数
PrivateSubDrawClock()
IfHours>12Then
Hours=Hours-12
EndIf
Me.DrawWidth=1
Me.Circle(BaseX,BaseY),4
DrawLineBaseX-r1*Sin(Second*PI/30),BaseY+r1*Cos(Second*PI/30),BaseX+(R-10)*Sin(Second*PI/30),BaseY-(R-10)*Cos(Second*PI/30),0
DrawLineBaseX-r2*Sin(Minute*PI/30),BaseY+r2*Cos(Minute*PI/30),BaseX+R*0.8*Sin(Minute*PI/30),BaseY-R*0.8*Cos(Minute*PI/30),1
DrawLineBaseX-r3*Sin((Hours+Minute/60)*PI/6),BaseY+r3*Cos((Hours+Minute/60)*PI/6),BaseX+R*0.6*Sin((Hours+Minute/60)*PI/6),BaseY-R*0.6*Cos((Hours+Minute/60)*PI/6),2
EndSub
PrivateSubDrawLine(x1AsInteger,y1AsInteger,x2AsInteger,y2AsInteger,FlagAsInteger)
StaticOldSX1AsInteger,OldSX2AsInteger,OldSY1AsInteger,OldSY2AsInteger
StaticOldMX1AsInteger,OldMX2AsInteger,OldMY1AsInteger,OldMY2AsInteger
StaticOldHX1AsInteger,OldHX2AsInteger,OldHY1AsInteger,OldHY2AsInteger
SelectCaseFlag
Case0
Me.DrawWidth=2
Me.Line(OldSX1,OldSY1)-(OldSX2,OldSY2),BackColor
Me.Line(x1,y1)-(x2,y2),vbBlack
OldSX1=x1
OldSX2=x2
OldSY1=y1
OldSY2=y2
Case1
Me.DrawWidth=4
Me.Line(OldMX1,OldMY1)-(OldMX2,OldMY2),BackColor
Me.Line(x1,y1)-(x2,y2),vbYellow
OldMX1=x1
OldMX2=x2
OldMY1=y1
OldMY2=y2
Case2
Me.DrawWidth=6
Me.Line(OldHX1,OldHY1)-(OldHX2,OldHY2),BackColor
Me.Line(x1,y1)-(x2,y2),vbRed
OldHX1=x1
OldHX2=x2
OldHY1=y1
OldHY2=y2
CaseElse
EndSelect
EndSub
PrivateSubForm_Resize()
Me.Cls
CallInit
EndSub
6)工作函数
PrivateSubTimer1_Timer()
DimaAsInteger
DimbAsInteger
DimcAsInteger
Second=DatePart("s",Time)
Minute=DatePart("n",Time)+jiaer
Hours=DatePart("h",Time)+jiayi
a=DatePart("s",Time)
b=DatePart("n",Time)+jiaer
c=DatePart("h",Time)+jiayi
CallDrawClock
DimTtAsString
Label16.Caption=c&":
"&b&":
"&a
EndSub
(2)信息界面
图2
界面一主要代码如下:
PrivateSubCommand1_Click()
UnloadMe
Form1.Show
EndSub
3结果分析
运行结果图3
结论
在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
在整个设计中我懂得了许多东西,大大提高了自己的动手能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。
虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次程序设计的最大收获和财富,使我终身受益。
当然,我也深刻地体会到从理论到实践是很难的过程,特别是在进行具体时间和指针传动之间的怎么联系时,遇到很大的困难,但最后还是通过上网寻求帮助,得以解决。
而在怎么样写出钟盘上的时间数时,则想出了一个看视比较笨的办法(用标签再在标签上写具体时间数字),但是确很实用。
设计时由于自己的粗心大意带来的错误也不少,所以以后再编程时一定会多加注意这方面的问题。
在编程的过程中学到了很多新的东西,例如:
怎样使用菜单编辑器,怎样将某个窗体在运行时显示为第一个。
当然以前所学的很多知识也得到巩固,例如对timer事件的使用,对绘图方法的掌握。
通过本次的程序设计设计,要吸取一定的经验,在以后的学习和工作当中就要更加的认真仔细,尽量不让不该发生的错误发生,也更应该增加实践经验和灵活的思维方法,当然,努力学习还是首要的任务,因为只有有了很牢固的知识后才能让我们做什么事都游刃有余,胸有成竹
致谢
这次课程设计的圆满完成得到了滕老师还有同学的帮助,在此对我表示感谢.。
参考文献
[1]杨明广.王秀华.VisualBaisc程序设计教程.中国科学技术出版社,2006.11,21世纪教材;
[2]王秀华.余建坤.VisualBaisc程序设计上机和级考实训教程.中国科学技术出版社,2006.11,21世纪教材;
[3]龚沛曾.VisualBaisc程序设计简明教程(第二版).高等教育出版社,2003
[4]曾强聪.新编VisualBasic程序设计教程.清华大学出版社,2004