时钟.docx
- 文档编号:10679141
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:14
- 大小:123.46KB
时钟.docx
《时钟.docx》由会员分享,可在线阅读,更多相关《时钟.docx(14页珍藏版)》请在冰点文库上搜索。
时钟
沈阳航空航天大学
课程设计
学号__2009040304007___
班级__94030401___
姓名__安东___
指导教师__刘成__
2011年6月21日
沈阳航空航天大学
课程设计任务书
学院:
航空宇航工程专业:
工程力学班级:
94030401
学号:
2009040304007题目:
时钟
一、课程设计时间
2011年6月13~24日(第15~16周),共计2周,40学时。
二、课程设计内容
在窗体上展示一个正在工作的有时、分、秒指针的时钟,可以对时钟的时间进行手工修正。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
✧用户界面中的菜单至少应包括“运行时钟”、“修改时间”、“退出”3项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
需求分析4
设计分析5
技术要点6
主要界面截图6
总结7
完整的源程序8
参考文献9
需求分析
模拟时钟运行,主要要求是设计一个有时针,分针和秒针的时钟。
其应该具有“运行时钟”,“修改时钟”和“退出程序”3种业务。
要求:
1.当程序运行时,能在窗体上呈现出一个有时针,分针和秒针的时钟。
并且在时钟上显示1-12表示整点。
2.菜单中包括“运行时间”,“修改时间”和“退出”三项。
3.点击运行时间,时钟开始工作。
4.可以随时对时钟进行修改。
5.能够随时退出运行程序。
设计分析
(1)基本原理:
建立程序设计与图形方法绘制图形的综合应用。
用CurrentX,CurrentY显示当前坐标,并用Timer控件以及Line画线方法使时钟能够动态运行,利用For循环在窗体上画出时钟整点的点。
(2)设计:
技术要点
本程序的主要使用的技术是Line方法和Circle方法。
主要功能和用法如下:
ΔLine方法,主要是在给定的对象上画直线。
ΔCircle方法,主要是在给定的对象上画圆。
1.Line方法的语法为:
Object.Line[[Step](x1,y1)][Step](x2,y2)[,Color]
其中,参数Object在本程序中表示当前窗体。
参数Step用来指定相对于当前坐标的起点,参数(x1,y1)表示直线的起始点坐标。
参数(x2,y2)表示直线的终点坐标。
参数Color用来设置直线颜色。
2.Circle方法的语法为:
Object.Circle[Step](x,y)radius[,Color]
其中,参数Object在本程序中表示当前窗体。
参数Step用来指定圆的中心点相对于当前坐标的起点。
参数(x,y)表示圆的中心点坐标。
参数radius表示圆的半径。
参数Color用来设置圆的颜色。
关键技术分析
1.定义
OptionExplicit
PrivateConstpi=3.14159265358'定义常量
DimW,HAsLong'定义长整型变量
2.初始代码
PrivateSubForm_Load()
Me.FillStyle=vbSolid'设置窗体的填充类型为实体
Me.FontBold=True'设置窗体的字体为粗体
W=Me.ScaleWidth'获得窗体水平宽度
H=Me.ScaleHeight'获得窗体垂直高度
Timer1.Interval=1000'计时器的时间间隔
T=CLng(Timer)-1
Timer1_Timer'启动计时器计时
EndSub
3.关于Timer的代码
①计时器的计时事件
PrivateSubTimer1_Timer()
DimiAsLong'定义长整型变量
T=T+1
Me.Cls
②时钟的修饰
⑴画轴心
Me.FillColor=RGB(192,192,192)'设置窗体的填充颜色
Me.Circle(W/2,H/2),H/40,Me.FillColor'画圆
Me.FillColor=RGB(92,92,92)'设置窗体的填充颜色
Me.Circle(W/2,H/2),H/60,Me.FillColor'画圆
⑵写数字
Fori=1To12
Me.CurrentX=W/2+(W/3)*Cos(pi*i/6)-Me.TextWidth((i+2)Mod12+1&"66")/2
Me.CurrentY=H/2+(H/3)*Sin(pi*i/6)-Me.TextHeight((i+2)Mod12+1)/2
Me.Print(i+2)Mod12+1
⑶画圆点
Me.FillColor=RGB(96,164,96)
Fori=1To60
IfNotiMod5=0Then'整点的点
Me.Circle(W/2+(W/2.7)*Cos(pi*i/30),H/2+(H/2.7)*Sin(pi*i/30)),30,RGB(0,192,0)
Else'分钟的点
Me.Circle(W/2+(W/2.7)*Cos(pi*i/30),H/2+(H/2.7)*Sin(pi*i/30)),60,RGB(0,192,0)
EndIf
③画指针线
Me.DrawWidth=10'时针
'画时针线
Me.Line(W/2,H/2)-(W/2+(W/5)*Cos((T/3600-3)*pi/6),H/2+(H/5)*Sin((T/3600-3)*pi/6)),RGB(150,150,150)
Me.DrawWidth=3'分针
'画分针线
Me.Line(W/2,H/2)-(W/2+(W/4)*Cos((T/60-15)*pi/30),H/2+(H/4)*Sin((T/60-15)*pi/30)),RGB(128,128,128)
Me.DrawWidth=1'秒针
'画秒针线
Me.Line(W/2,H/2)-(W/2+(W/3.5)*Cos((T-15)*pi/30),H/2+(H/3.5)*Sin((T-15)*pi/30)),RGB(224,0,0)
4.运行时间代码
PrivateSubrun_Click()
Timer1.Enabled=True'使得计时器能够响应用户的操作
EndSub
5.模块
PublicTAsLong
6.修改时间代码
PrivateSubfix_Click()
Form2.Show
EndSub
1确认(Form2中代码)
PrivateSubCommand1_Click()
T=(Form2.Text1.Text*3600)+(Form2.Text2.Text*60)+(Form2.Text3.Text)
UnloadMe
EndSub
2取消(Form2中代码)
PrivateSubCommand2_Click()
UnloadMe
EndSub
7.退出代码
PrivateSubquit_Click()
End
EndSub
主要界面截图
图1.form1窗体中主要控件
图2.form2窗体中主要控件
图3.运行时间界面
图4.修改时间界面
图4.修改时间
图5.修改后时间显示界面
总结
这次课设我的题目是时钟模拟,通过这次课设让我了解了VB可以画出许多图形,并且可以将其与Timer控件联系起来,是图形能够运动起来。
还可以运用一些颜色函数给予图形色彩,使图形更加美观生动。
在课设过程中,我遇到了重重困难,例如:
怎样画出时钟和指针的形状以及标注表盘刻度。
还有,怎样设计Timer的内部代码以使时钟能够运行。
通过老师的指点和自己查阅资料,我克服了困难,顺利的完成了任务。
同时我也了解了VB的出现是一场技术革命,它在生活中各个方面都能发挥巨大的作用,而且它也是理论联系实践的一个重要环节,培养了我们独立的创新思维能力。
完整的源程序
⑴模块
PublicTAsLong
⑵程序
OptionExplicit
PrivateConstpi=3.14159265358'定义常量
DimW,HAsLong'定义长整型变量
PrivateSubForm_Load()
Me.FillStyle=vbSolid'设置窗体的填充类型为实体
Me.FontBold=True'设置窗体的字体为粗体
W=Me.ScaleWidth'获得窗体水平宽度
H=Me.ScaleHeight'获得窗体垂直高度
Timer1.Interval=1000'计时器的时间间隔
T=CLng(Timer)-1
Timer1_Timer'启动计时器计时
EndSub
'计时器的计时事件
PrivateSubTimer1_Timer()
DimiAsLong'定义长整型变量
T=T+1
Me.Cls
'轴心
Me.FillColor=RGB(192,192,192)'设置窗体的填充颜色
Me.Circle(W/2,H/2),H/40,Me.FillColor'画圆
Me.FillColor=RGB(92,92,92)'设置窗体的填充颜色
Me.Circle(W/2,H/2),H/60,Me.FillColor'画圆
'数字
Fori=1To12
Me.CurrentX=W/2+(W/3)*Cos(pi*i/6)-Me.TextWidth((i+2)Mod12+1&"66")/2
Me.CurrentY=H/2+(H/3)*Sin(pi*i/6)-Me.TextHeight((i+2)Mod12+1)/2
Me.Print(i+2)Mod12+1
Next
'圆点
Me.FillColor=RGB(96,164,96)
Fori=1To60
IfNotiMod5=0Then'整点的点
Me.Circle(W/2+(W/2.7)*Cos(pi*i/30),H/2+(H/2.7)*Sin(pi*i/30)),30,RGB(0,192,0)
Else'分钟的点
Me.Circle(W/2+(W/2.7)*Cos(pi*i/30),H/2+(H/2.7)*Sin(pi*i/30)),60,RGB(0,192,0)
EndIf
Next
'指针
Me.DrawWidth=10'时针
'画时针线
Me.Line(W/2,H/2)-(W/2+(W/5)*Cos((T/3600-3)*pi/6),H/2+(H/5)*Sin((T/3600-3)*pi/6)),RGB(150,150,150)
Me.DrawWidth=3'分针
'画分针线
Me.Line(W/2,H/2)-(W/2+(W/4)*Cos((T/60-15)*pi/30),H/2+(H/4)*Sin((T/60-15)*pi/30)),RGB(128,128,128)
Me.DrawWidth=1'秒针
'画秒针线
Me.Line(W/2,H/2)-(W/2+(W/3.5)*Cos((T-15)*pi/30),H/2+(H/3.5)*Sin((T-15)*pi/30)),RGB(224,0,0)
EndSub
PrivateSubrun_Click()
Timer1.Enabled=True'使得计时器能够响应用户的操作
EndSub
PrivateSubfix_Click()
Form2.Show
EndSub
PrivateSubCommand1_Click()
T=(Form2.Text1.Text*3600)+(Form2.Text2.Text*60)+(Form2.Text3.Text)
UnloadMe
EndSub
PrivateSubCommand2_Click()
UnloadMe
EndSub
PrivateSubquit_Click()
End
EndSub
参考文献
[1]刘瑞新.《VisualBasic程序设计教程》.北京:
机械工业出版社,2003
[2]龚沛曾杨志强陆慰民.《VisualBasic程序设计教程》.高等教育出版社2007
[3]龚沛曾杨志强陆慰民.《VisualBasic程序设计教程实验指导与测试》.高等教育出版社2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时钟