vb时钟课程设计报告

课程设计报告

课程设计题目:模拟时钟

学生姓名:

专业:软件工程

班级:

学号:

指导教师:

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课程设计的思想非常重要,没有做不到只有想不到,这次的课程设计就是一个很好的例子。

相关文档
最新文档