模拟时钟的VB程序剖析.docx
《模拟时钟的VB程序剖析.docx》由会员分享,可在线阅读,更多相关《模拟时钟的VB程序剖析.docx(13页珍藏版)》请在冰点文库上搜索。
模拟时钟的VB程序剖析
沈阳航空航天大学
课程设计
学号2009040301055
班级94030102
姓名李超
指导教师刘学平
2010年3月15日
沈阳航空航天大学
课程设计任务书
学院:
航空宇航工程学院专业:
飞行器制造班级:
94030102
学号:
2009040301055题目:
模拟时钟
一、课程设计时间
2011年3月7日~11日(第1周),共计1周。
二、课程设计内容
在窗体上演示一个正在工作的有时、分、秒指针的时钟,要求:
可以对时钟的时间进行手工修正。
用户界面中的菜单(或命令按钮)至少应包括“运行时钟”、“修改时间”、“退出”3项。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
一、需求分析4
二、设计分析5
三、关键技术7
四、总结12
五、完整的源程序14
六、参考文献16
一、需求分析
“模拟时钟”软件。
在窗体上演示一个正在工作的有时、分、秒指针的时钟,要求:
可以对时钟的时间进行手工修正。
用户界面中的菜单(或命令按钮)至少应包括“运行时钟”、“修改时间”、“退出”3项。
①在VB窗体Form1中设计模拟时钟表盘,设计四个按钮:
运行时钟、修改时间、应用、退出。
在窗体Form2中设计填输入时间的位置和两个按钮:
重新输入、确定。
②用运行时钟按钮使时钟从零点开始运行。
③利用修改时间按钮在Form2中输入合理时间,单击确定后单击应用使模拟时钟按所需时间开始运行。
④Form2中重新输入按钮可以使所有Text控件清空,可以进行时间的重新输入。
⑤程序可以实现时钟指针的转动。
二、设计分析
(1)基本原理:
设计表盘,利用勾股定理实现时钟的转动,通过两个窗体的配合实现修改时间的功能,使模拟时钟能像正常时钟一样运行。
(2)总体设计:
图1总体设计
(3)详细设计:
图2详细设计
(4)表盘设计:
图3表格
三、关键技术
1实现指针的转动
PrivateSubTimer1_Timer()
Statics!
m!
h!
s=s+1
m=s/60
h=m/60
LineS.X2=LineS.X1+a*Sin(s*6*pai/180)
LineS.Y2=LineS.Y1-a*Cos(s*6*pai/180)
LineM.X2=LineM.X1+b*Sin(m*6*pai/180)
LineM.Y2=LineM.Y1-b*Cos(m*6*pai/180)
LineH.X2=LineH.X1+c*Sin(h*30*pai/180)
LineH.Y2=LineH.Y1-c*Cos(h*30*pai/180)
EndSub'使时钟从初始位置开始工作
图4
2Form1与Form2的连接
(1)显示Form2
PrivateSubCommand2_Click()
Timer2.Interval=0
Timer1.Interval=0
Form2.Show'关闭定时器1、定时器2,对时间进行手工修改
EndSub
图5
(2)Form2隐藏
PrivateSubCommand1_Click()
IfVal(Text1.Text)>24OrVal(Text1.Text)<0OrVal(Text2.Text)>60OrVal(Text2.Text)<0OrVal(Text3.Text)>60OrVal(Text3.Text)<0Then
MsgBox"请输入合理时间":
Text1.Text="":
Text2.Text="":
Text3.Text=""'数据不合理时弹出提示
Else
Form1.Show
Form2.Hide'读取到修改后的时间数据并关闭窗体2
EndIf
EndSub
注:
输入的时间不合理会弹出提示,输入时间为空时也会弹出提示
图6
图7
3.修改的时间数据的读取与运行
PrivateSubCommand4_Click()
IfForm2.Text1.Text=""OrForm2.Text2.Text=""OrForm2.Text3.Text=""Then
MsgBox"请输入准确时间":
Form2.Show'提示用户输入准确时间
Else
Timer2.Interval=1000:
s=Form2.Text3.Text-1'激活定时器2
EndIf
EndSub
PrivateSubTimer2_Timer()
s=s+1
m=Form2.Text2.Text+s/60
h=Form2.Text1.Text+m/60
LineS.X2=LineS.X1+a*Sin(s*6*pai/180)
LineS.Y2=LineS.Y1-a*Cos(s*6*pai/180)
LineM.X2=LineM.X1+b*Sin(m*6*pai/180)
LineM.Y2=LineM.Y1-b*Cos(m*6*pai/180)
LineH.X2=LineH.X1+c*Sin(h*30*pai/180)
LineH.Y2=LineH.Y1-c*Cos(h*30*pai/180)
EndSub'使时钟在修改时间后开始
四、总结
本次课程设计我的任务是运用VB设计一个模拟时钟,包含运行时钟、修改时间、应用、退出等功能。
程序需要两个窗体、两个Timer控件以及四个按钮控件:
运行时钟、修改时间、应用、退出。
可实现与正常时钟相同的运行速度。
可以进行手动的修改、运行时钟。
还可以对用户输入的时间数据进行判断。
在此次课设过程中,设计界面使我了解到手工绘图方面的一些控件,现在可以进行熟练的运用。
Timer控件的运行方法让我用尽了心思,对于指针的初始位置的设置,我运用到了控件的尺寸,指针的长度设置我运用到了勾股定理,为了美观和人性化处理对各个功能之间的显示与切换我下个很大功夫。
VB的设计过程让我深刻认识到知识的有用之处,这是一个即动手又动脑的一次实习。
让我意识到VB的魅力所在,它使我们能形象的了解到生活中的一些具体事物,使我们锻炼了自己的动手能力,发挥了自己的智慧。
让我们发现自己的不足,认识到更多我们所没有触及的知识。
虽然这次设计出现很多困难的,但是在老师和学生的帮助下我终于做出来了,我感到很开心,毕竟是自己的劳动成果。
很高兴可以完成这次课设,它让我懂得只有努力才有收获。
五、完整的源程序
PrivateSubCommand3_Click()
End'结束程序
EndSub
PrivateSubCommand4_Click()
IfForm2.Text1.Text=""OrForm2.Text2.Text=""OrForm2.Text3.Text=""Then
MsgBox"请输入准确时间":
Form2.Show'提示用户输入准确时间
Else
Timer2.Interval=1000:
s=Form2.Text3.Text-1'激活定时器2
EndIf
EndSub
PrivateSubForm_Load()
LineS.X1=Shape1.Left+Shape1.Width/2
LineS.Y1=Shape1.Top+Shape1.Height/2
LineS.X2=LineS.X1
LineS.Y2=Shape1.Top+150'设置秒针初始位置
LineM.X1=LineS.X1
LineM.Y1=LineS.Y1
LineM.X2=LineM.X1
LineM.Y2=Shape1.Top+260'设置分针初始位置
LineH.X1=LineS.X1
LineH.Y1=LineS.Y1
LineH.X2=LineH.X1
LineH.Y2=Shape1.Top+500'设置时针初始位置
a=Sqr((LineS.X1-LineS.X2)^2+(LineS.Y1-LineS.Y2)^2)
b=Sqr((LineM.X1-LineM.X2)^2+(LineM.Y1-LineM.Y2)^2)
c=Sqr((LineH.X1-LineH.X2)^2+(LineH.Y1-LineH.Y2)^2)'设置指针长度
LineS.BorderColor=vbBlack
LineS.BorderWidth=1
LineM.BorderColor=vbBlue
LineM.BorderWidth=2
LineH.BorderColor=vbRed
LineH.BorderWidth=3'设置指针的颜色和粗细
EndSub
PrivateSubTimer1_Timer()
Statics!
m!
h!
s=s+1
m=s/60
h=m/60
LineS.X2=LineS.X1+a*Sin(s*6*pai/180)
LineS.Y2=LineS.Y1-a*Cos(s*6*pai/180)
LineM.X2=LineM.X1+b*Sin(m*6*pai/180)
LineM.Y2=LineM.Y1-b*Cos(m*6*pai/180)
LineH.X2=LineH.X1+c*Sin(h*30*pai/180)
LineH.Y2=LineH.Y1-c*Cos(h*30*pai/180)
EndSub'使时钟从初始位置开始工作
PrivateSubTimer2_Timer()
s=s+1
m=Form2.Text2.Text+s/60
h=Form2.Text1.Text+m/60
LineS.X2=LineS.X1+a*Sin(s*6*pai/180)
LineS.Y2=LineS.Y1-a*Cos(s*6*pai/180)
LineM.X2=LineM.X1+b*Sin(m*6*pai/180)
LineM.Y2=LineM.Y1-b*Cos(m*6*pai/180)
LineH.X2=LineH.X1+c*Sin(h*30*pai/180)
LineH.Y2=LineH.Y1-c*Cos(h*30*pai/180)
EndSub'使时钟在修改时间后开始工作
六、参考文献
[1]刘瑞新.《VisualBasic程序设计教程》.北京:
机械工业出版社,2003
[2]龚沛增.《VisualBasic程序设计教程》.清华大学出版社,2004
[3]吴凤翔.《VisualBasic程序设计教程》.中国林业出版社,2002-11