指针式时钟课程设计_第1页
指针式时钟课程设计_第2页
指针式时钟课程设计_第3页
指针式时钟课程设计_第4页
指针式时钟课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 2014届学生结课论文 存档编号:_ 长春建筑学院文创学院 课程设计总结报告 课程设计题目 部 (系) 专 业 姓 名 学 号 指导教师 2016年 6月 10 日目 录第1章课程设计概述11.1 课程设计名称31.2 任务要求31.3 开发环境4第2章总体设计42.1 系统功能需求分析42.2 系统总体设计框架5第3章 详细设计53.1 声明变量,定义窗体 53.2 绘制表盘的代码如下63.3 画线函数代码如下73.4 Timer控件代码如下93.5 修改时间控件代码如下93.6 确认修改控件代码如下 93.7 退出控件代码如下103.8完整代码10 第4章 调试分析过程描述15 第5章课

2、程设计体会15 课程设计任务书第1章课程设计概述1.1 课程设计名称指针式时钟1.2 任务要求使用VB很容易就能设计一个具有基本功能的指针试时钟程序。但是,很多指针式时钟程序是使用Label、Shape等基本控件和Line方法来制作最简单的指针式时钟。本次课设要使用API函数、控件对象等方法设计一个具有圆形窗口、旋转字体、窗口可拖动和始终置前等功能的指针式时钟。指针式时钟不但要具有显示当前时间的基本功能,还要有时间和闹铃设置等基本功能,以及圆形窗体界面等风格。本次课设设计的指针式时钟包括以下功能: 1.指针式时钟需要有时针、分针和秒针三根时钟指针。2.时钟界面为圆形,并且没有任何边框。3.程序

3、启动时,时钟的默认时间是计算机系统时间。4.时钟截面上需要有分钟刻度线和小时刻度线。5.3、6、9和12点需要有罗马数字表示时间,并且各数字需要旋转到相应的角度。6.可以使用鼠标将时钟拖到屏幕的任何位置。7.可以使用热键Esc退出时钟程序。8.可以设置时钟的时间。9.可以设置闹钟时间。10.可以设置时钟窗口始终置前,也可以取消时钟窗口置前,系统默认时钟窗口始终置前。1.3 开发环境基于vb6.0的操作使用第2章总体设计2.1 系统功能需求分析模拟时钟运行,主要要求是设计一个有时针,分针和秒针的时钟。其应该具有“运行时钟”,“修改时钟”和“退出程序”3种功能。 要求: 在窗体上设计一个具有时针,

4、分针和秒针的表盘。此表盘用户菜单至少应包括“运行时钟”,“修改时钟”和“退出”3项。 能够运行时钟。 能够随时对时钟进行修改。 能够随时退出运行程序。2.2 系统总体设计框架(1)基本原理:建立程序设计与图形方法绘制图形的 综合应用。用Line方法For循环以及Timer控件使时钟能够动态运行 开始(2)设计:退出确定修改修改时间调节时钟结束程序时钟重新运行对时钟进行调整暂停或开始第3章 详细设计3.1 声明变量,定义窗体 Const PI = 3.1415926 Dim BaseX As Integer, BaseY As Integer, R As Integer(对变量进行声明) Pri

5、vate Sub Form_Load() Me.ScaleMode = 3 Me.Width = 5505 Me.Height = 5475 End Sub(定义窗体的高度和宽度) 3.2 绘制表盘的代码如下 Private Sub biaopan() Dim i As Integer BaseX = Me.ScaleWidth / 2 BaseY = Me.ScaleHeight / 2 If BaseX > BaseY Then R = BaseX * 0.6 If BaseX < BaseY Then R = BaseY * 0.6(当窗体的高度和宽度发生改变时,使得表盘始终

6、在窗体的中心) For i = 0 To 360 Step 6 If i Mod 30 = 0 Then Me.DrawWidth = 2 DrawLine BaseX + (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180), BaseX + (R - 8) * Sin(i * PI / 180), BaseY - (R - 8) * Cos(i * PI / 180), 3(在表盘时针刻度的地方绘制断线) Else: Me.PSet (BaseX + (R - 3) * Sin(i * PI / 180), Bas

7、eY - (R - 3) * Cos(i * PI / 180), vbBlue(在表盘分针刻度的地方画点) End If Next i Me.DrawWidth = 1 Me.Circle (BaseX, BaseY), R, vbRed End Sub 3.3 画线函数代码如下 Private Sub DrawLine(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer, Flag As Integer)(自己编写一个画线的函数) Static OldSX1 As Integer, OldSX2 As Integer, Ol

8、dSY1 As Integer, OldSY2 As Integer Static OldMX1 As Integer, OldMX2 As Integer, OldMY1 As Integer, OldMY2 As Integer Static OldHX1 As Integer, OldHX2 As Integer, OldHY1 As Integer, OldHY2 As Integer Select Case Flag Case 0 Me.DrawWidth = 1 Me.Line (OldSX1, OldSY1)-(OldSX2, OldSY2), BackColor Me.Line

9、 (x1, y1)-(x2, y2) OldSX1 = x1 OldSX2 = x2 OldSY1 = y1 OldSY2 = y2 Case 1 Me.DrawWidth = 2 Me.Line (OldMX1, OldMY1)-(OldMX2, OldMY2), BackColor Me.Line (x1, y1)-(x2, y2) OldMX1 = x1 OldMX2 = x2 OldMY1 = y1 OldMY2 = y2 Case 2 Me.DrawWidth = 3 Me.Line (OldHX1, OldHY1)-(OldHX2, OldHY2), BackColor Me.Li

10、ne (x1, y1)-(x2, y2) OldHX1 = x1 OldHX2 = x2 OldHY1 = y1 OldHY2 = y2 Case Else Me.Line (x1, y1)-(x2, y2) End Select End Sub Private Sub Form_Resize()(当窗体大小发生改变时,重新绘制表盘) Cls Call biaopan End Sub 3.4 Timer控件代码如下 Private Sub Timer1_Timer() Call DrawClock Label1.Caption = Time() End 3.5 修改时间控件代码如下Privat

11、e Sub Command1_Click() Text1.Visible = True MsgBox "请输入要修改的时间,输入的数字必须符合时间格式" Text1.SetFocus End Sub 3.6 确认修改控件代码如下 Private Sub Command4_Click() Time() = Text1.Text Label1.Caption = Text1.Text End Sub 3.7 退出控件代码如下 Private Sub Command2_Click() End End Sub3.8完整代码 Const PI = 3.1415926Dim BaseX

12、 As Integer, BaseY As Integer, R As Integer Private Sub Form_Load()Me.ScaleMode = 3Me.Width = 5505Me.Height = 5475End SubPrivate Sub biaopan()Dim i As IntegerBaseX = Me.ScaleWidth / 2BaseY = Me.ScaleHeight / 2If BaseX > BaseY Then R = BaseX * 0.6If BaseX < BaseY Then R = BaseY * 0.6For i = 0 T

13、o 360 Step 6If i Mod 30 = 0 ThenMe.DrawWidth = 2DrawLine BaseX + (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180), BaseX + (R - 8) * Sin(i * PI / 180), BaseY - (R - 8) * Cos(i * PI / 180), 3Else: Me.PSet (BaseX + (R - 3) * Sin(i * PI / 180), BaseY - (R - 3) * Cos(i * PI / 180), vbBlu

14、eEnd IfNext iMe.DrawWidth = 1Me.Circle (BaseX, BaseY), R, vbRed End Sub Private Sub DrawClock() Dim S As Integer Dim M As Integer Dim H As Integer S = DatePart("s", Time) M = DatePart("n", Time) H = DatePart("h", Time) If H > 12 Then H = H - 12 End If Me.DrawWidth =

15、1 DrawLine BaseX, BaseY, BaseX + (R - 10) * Sin(S * PI / 30), BaseY - (R - 10) * Cos(S * PI / 30), 0 DrawLine BaseX, BaseY, BaseX + R * 0.8 * Sin(M * PI / 30), BaseY - R * 0.8 * Cos(M * PI / 30), 1 DrawLine BaseX, BaseY, BaseX + R * 0.6 * Sin(H + M / 60) * PI / 6), BaseY - R * 0.6 * Cos(H + M / 60)

16、* PI / 6), 2 End SubPrivate Sub DrawLine(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer, Flag As Integer)Static OldSX1 As Integer, OldSX2 As Integer, OldSY1 As Integer, OldSY2 As IntegerStatic OldMX1 As Integer, OldMX2 As Integer, OldMY1 As Integer, OldMY2 As IntegerStatic OldHX1 As Inte

17、ger, OldHX2 As Integer, OldHY1 As Integer, OldHY2 As IntegerSelect Case FlagCase 0Me.DrawWidth = 1Me.Line (OldSX1, OldSY1)-(OldSX2, OldSY2), BackColorMe.Line (x1, y1)-(x2, y2)OldSX1 = x1OldSX2 = x2OldSY1 = y1OldSY2 = y2Case 1Me.DrawWidth = 2Me.Line (OldMX1, OldMY1)-(OldMX2, OldMY2), BackColorMe.Line

18、 (x1, y1)-(x2, y2)OldMX1 = x1OldMX2 = x2OldMY1 = y1OldMY2 = y2Case 2Me.DrawWidth = 3Me.Line (OldHX1, OldHY1)-(OldHX2, OldHY2), BackColorMe.Line (x1, y1)-(x2, y2)OldHX1 = x1OldHX2 = x2OldHY1 = y1OldHY2 = y2Case ElseMe.Line (x1, y1)-(x2, y2)End SelectEnd SubPrivate Sub Form_Resize()ClsCall biaopanEnd SubPrivate Sub Label4_Click()End SubPrivate Sub Timer1_Timer()Call DrawClockLabel1.Caption = Time()End SubPrivate Sub Command1_Click()Text1.Visible = TrueMsgBox "请输入要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论