课程设计报告
课程设计题目:模拟时钟
学生姓名:
专业:软件工程
班级:
学号:
指导教师:
2012年6 月13日
东华理工大学
课程设计评分表
学生姓名:班级:学号:课程设计题目:模拟时钟
目录
第一章题意分析 (3)
第二章工作日志 (4)
第三章关键实现技术 (6)
第四章设计小结 (8)
第一章题意分析
VB是面向对象的程序设计语言,VB具有强大的设计功能,而自己所学的知识有限,再结合自己个人的兴趣爱好与能力,经过再三考虑,最后决定了制作模拟时钟的大致方向。首先界面设计1个Timer、2个Label、3个Line控件实现电子时钟的查看时间以及日期的功能。设置好主要控件后,然后用这些控件来实现模拟时钟的功能,通过vb代码实现。最后达到一个窗体模块,完成模拟现实时钟的功能。设置符合现实每60秒走一分钟,每60分钟走一个小时,同时添加显示完整日期的功能。
第二章工作日志
由于这次是重修VB,以前学的也忘的差不多了,然后一个人这几天奋发的看完了原来的教材。
这次碰到了好多不会的地方,然后一个一个被我解决了,做出了这个简单的模拟时钟。首先窗体的坐标系都不了解,先后查了资料,窗体的坐标系有几种,即默认坐标系统、用户自定义坐标系统。而且设置坐标的方式有几种,我这次用Scale方法自定义设置坐标系。第二个,就是直线控件的用法,直线怎么代替钟的指针围绕中心转动,我想到了用直线代替钟的指针,但是我不知道怎么让他围绕中心转动,在我vb教材书上也没有例子系统的讲解,只是笼统的概括了一下,这我只有到图书馆去借一本有关这方面的书籍。了解到直线有两端,各有坐标属性,知道这点就好办多了,然后就根据现实时钟的常识了解到,让直线一端坐标固定设置在坐标原点,然后另一端围绕坐标原点转动,这就模拟出用直线控件代替时钟指针转动的过程。还有一个问题就是怎么直线以现实时钟那样速度围绕原点转动,这也是一个难点,这就需要时间控件Timer来设置速度。还有用Lebel来显示
完整的系统日期。用画矩形来代替时钟的边框。设置好各控件和窗体的颜色等属性。反复运行稍微修改几次做出这个模拟时钟程序。
第三章关键实现技术
本程序运用到了Timer1控件及其众多属性,通过
Timer1_Timer()时间和Interval属性控制时钟指针的转动。另外还定义了坐标系和系统时间日期等等。
程序源代码:
Const pi = 3.141592654
Private Sub Form_Load()
'自定义坐标
x = form1.ScaleWidth / 2
y = form1.ScaleHeight / 2
form1.Scale (-x, y)-(x, -y)
'标表盘上的数字
form1.CurrentX = 1600 * Sin(pi / 6 - 0.05): form1.CurrentY = 1600 * Cos(pi / 6): form1.Print "1"
form1.CurrentX = 1600 * Sin(pi / 3 - 0.05): form1.CurrentY = 1600 * Cos(pi / 3): form1.Print "2"
form1.CurrentX = 1600: form1.CurrentY = 120: form1.Print "3"
form1.CurrentX = 1600 * Sin(pi * (2 / 3) + 0.07): form1.CurrentY = 1600 * Cos(pi * (2 / 3) - 0.07): form1.Print "4"
form1.CurrentX = 1600 * Sin(pi / 2 + pi / 3 + 0.07): form1.CurrentY = 1600 * Cos(pi * (5 / 6) - 0.07): form1.Print "5"
form1.CurrentX = -70: form1.CurrentY = -1600: form1.Print "6"
form1.CurrentX = 1600 * Sin(pi * (7 / 6) + 0.07): form1.CurrentY = 1600 * Cos(pi * (5 / 6) - 0.07): form1.Print "7"
form1.CurrentX = 1600 * Cos(pi * (7 / 6) + 0.07): form1.CurrentY = 1600 * Cos(pi * (2 / 3) - 0.07): form1.Print "8"
form1.CurrentX = -1600: form1.CurrentY = 120: form1.Print "9"
form1.CurrentX = 1600 * Sin(-pi / 3): form1.CurrentY = 1600 * Cos(pi / 3): form1.Print "10"
form1.CurrentX = 1600 * Sin(-pi / 6 - 0.05): form1.CurrentY = 1600 * Cos(pi / 6): form1.Print "11"
form1.CurrentX = -70: form1.CurrentY = 1600: form1.Print "12"
'美化边框
form1.Line (-1840, 1840)-(1840, -1840), , B
form1.Line (-1920, 1920)-(1920, -1920), , B
form1.Line (-2000, 2500)-(2000, -2500), , B
Label1.Caption = Now
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Now
h = Hour(Time) Mod 12
m = Minute(Time)
s = Second(Time)
a = s * pi / 30 + pi / 2 ' 秒针与坐标轴的夹角
Line3.X1 = 0: Line3.Y1 = 0
Line3.X2 = 1100 * Cos(a - pi): Line3.Y2 = -1100 * Sin(a - pi)
a = m * pi / 30 + pi / 2 ' 分针与坐标轴的夹角
Line2.X1 = 0: Line2.Y1 = 0
Line2.X2 = 900 * Cos(a - pi): Line2.Y2 = -900 * Sin(a - pi)
a = h * pi / 6 + mm * pi / 360 + pi / 2 ' 时针与坐标轴的夹角
Line1.X1 = 0: Line1.Y1 = 0
Line1.X2 = 650 * Cos(a - pi): Line1.Y2 = -650 * Sin(a - pi)
End Sub
第四章设计小结
经过了这几天的程序设计后,使我对VB由渐渐模糊逐有变的渐变的清晰起来,特别是在对vb面向对象概念的加深和知识点的了解上更加运用自如了。这也大大增加了我对VB编程的了解,VB强大的编程功能需要我们一步步去学习,即使今后我们不会在课堂上学习VB 了,但平时对VB的深入研究也将使我们受益匪浅。用VB课程设计的思想非常重要,没有做不到只有想不到,这次的课程设计就是一个很好的例子。