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