




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
- 日历时钟课程设计报告 -11土木10班 前言 Visual Basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在王鹏鸣老师的指导下动手用Visual Basic编写日历时钟程序设计。 其实我们的电脑windows也自带有这个程序,我设计的该程序就是用vb语言模仿其主要功能编写。工程概况 2.1 项目名称 日历时钟程序2.2 设计平台VB 全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本VB6.0运行环境:硬件,要求486以上的处理器、16MB以上内存,50MB 以上的硬盘,cd-rom驱动器,鼠标。软件:要求windows 95以上版本2.3 程序设计思想 通过编写VB程序语言,改变一些控件的属性,来完成调整日期和 时间。应用画图的相关函数来画时钟界面。日历则通过加载calendar控件来实现。另外通过两个command按钮来实现12小时和24小时之间的切换。2.4运用的控件和主要对象我们在设计过程中主要用到的控件有:command控件,label控件,timer控件,text控件,calendar控件, VScroll1控件 设计的界面如图所示:2.5主要实现的功能 启动VB 界面时时钟画面自动弹出,且时间和电脑当前时间一致,可以通过VScroll1控件来调整时间。通过command1按钮,command2按钮可以实现12和24小时之间的切换。我们设计的日历具有万年历的功能,从combol中选择月份,下面的数目也会跟着变化。2.6开发人员 由于这次课程设计所选的题目太复杂,而时间又比较紧张,指导老师建议和同学分工完成。我们小组成员包括组长徐良,此游戏由我们胡洁。李星星。袁子雄四人共同开发而成。3.1游戏设计的具体实现在我们四个人共同努力下,此次设计,终于能够圆满完成。由于时间的紧促,在设计中,也许会有一些考虑不周之处,但其功能已经能够满足大多用户的需求,相信假以时日,一定能做出一个更经典,更完美的日历程序,下面我们将对每一步的具体如何实现展示给大家。通过函数DrawClock来画表盘的子程序,表盘的点应用函数PSet()来实现的时钟的时,分秒针的长度,位置则是通过函数Line()时钟的中心点则是应用函数Circle()这部内容虽然不要求我们学习,但是我觉得这个函数在vb画图方面的作用非常大,。A:首先我们可以在工具栏中找到“工程”其中有一个“部件”双击在下拉列表中选择含有calendar的那个部件进行加载,就会出现我们在界面上看到的运行界面。B:至于时间的我们可以在工具中选择到timer控件直接拖到设计界面上去,我们这个程序因为要实现12与24 小时的切换所以要设置两个timer控件,进行这些工作还是不够的,接下来设置timer的属性,把Interval的属性改为10.C:把command1的caption属性设置为“12小时” 同样把command2的属性也设置为“24小时” D:把text1的属性设置对象属性:控件名属性名属性值formlcaption日历与时间Command1Caption12小时Command2Caption24小时Label1Caption当前时间:中国标准时间VScroll1-Timer1Interval10Timer2Interval10运行后的效果图: 4. 日历时钟课程设计代码Option ExplicitDim sngCX As Single, sngCY As SingleDim blnBeginFlag As BooleanDim sngRClock As SingleDim intPreHr, i As IntegerDim intPreMin As IntegerDim intPreX As IntegerDim intPreY As IntegerDim sngHLen As SingleDim sngMLen As SingleDim sngSLen As SingleDim timecol, mycol As StringConst pi = 3.1415926Sub DrawClock() 画表盘的子程序 Dim intI, timeh As Integer Dim sngX, sngY, sngX1, sngY1 As Single FillStyle = 0 填充 FillColor = timecol 黑色 Circle (2000, 0), sngRClock 时钟外圆 timeh = -1 For intI = 0 To 60 时钟刻度 sngX = (sngRClock - 50) * Sin(intI * pi / 30) + 2000 sngY = (sngRClock - 50) * Cos(intI * pi / 30) sngX1 = (sngRClock - 200) * Sin(intI * pi / 30) + 2000 sngY1 = (sngRClock - 50 - 200) * Cos(intI * pi / 30) If (intI Mod 5) = 0 Then 绘主刻度 DrawWidth = 4 PSet (sngX, sngY) CurrentX = sngX1 - 130 CurrentY = sngY1 + 50 timeh = timeh + 1 If timeh 0 Then Print timeh Else 绘次刻度 DrawWidth = 2 PSet (sngX, sngY) End IfNext intIDrawWidth = 1 表盘的点应用函数PSet()来实现的(0.3 * sngRClock, 100)-(0.7 * sngRClock, -100), , B Line (0.7 * sngRClock, 100)-(0.7 * sngRClock, -100) CurrentX = -0.32 * sngRClock + 200 CurrentY = 0.4 * sngRClock - 100 Print Text1 - 1 & 年 绘制年份 CurrentX = -0.32 * sngRClock + 200 CurrentY = -0.4 * sngRClock Print Month(Date) & 月 & Day(Date) & 日 绘制月份、日期 FillStyle = 0 填充 FillColor = vbBlack 填充背景为黑色 Circle (2000, 0), 70 画中心的小圆End SubPrivate Sub Command1_Click() Timer1.Enabled = True Timer2.Enabled = FalseEnd SubPrivate Sub Command2_Click() Timer1.Enabled = True Timer2.Enabled = TrueEnd SubPrivate Sub Form_Load() Timer1.Enabled = True Timer2.Enabled = False Timer1.Interval = 1000 Form1.AutoRedraw = True 窗体改变后可重绘 sngCX = ScaleWidth / 2 时钟显示在窗体中央 sngCY = ScaleHeight / 2 Scale (-sngCX, sngCY)-(sngCX, -sngCY) blnBeginFlag = True sngRClock = 1500 设置时钟半径 sngHLen = sngRClock * 0.5 设置时针长 sngMLen = sngRClock * 0.7 设置分针长 sngSLen = sngRClock * 0.8 设置秒针长 timecol = QBColor(15) End SubPrivate Sub timer2_timer()Dim x%, y%, z% If Hour(Time) 12 Thenx = Hour(Time) - 12 End If x = Format(x, 00) y = Format(Minute(Time), 00) z = Format(Second(Time), 00) Text3.Text = x & : & y & : & zEnd SubPrivate Sub timer1_timer() Text3.Text = Time Dim intX As Integer, intY As Integer Dim intHr As Integer, intMin As Integer Dim intSec As Integer Dim sngH As Single Dim vntBlack, vntGray If blnBeginFlag = True Then DrawClockEnd If CurrentX = 0.35 * sngRClock CurrentY = 80 Print WeekdayName(Weekday(Now) 显示星期 intHr = Hour(Now) intHr = intHr Mod 12 使小时在0-11之间 intMin = Minute(Now) 取得分钟 DrawWidth = 2 时针和分针宽度 vntBlack = vbBlack If blnBeginFlag = True Then DrawMode = 13 sngH = intHr * 5 + intMin / 12 intX = sngHLen * Sin(sngH * pi / 30) intY = sngHLen * Cos(sngH * pi / 30) intPreHr = intHr Line (2000, 0)-(intX + 2000, intY), vntBlack 绘时针 intX = sngMLen * Sin(intMin * pi / 30) intY = sngMLen * Cos(intMin * pi / 30) Line (2000, 0)-(intX + 2000, intY), vntBlack 绘分针 intPreMin = intMin End If If intPreMin intMin Then 如果分针改变 DrawMode = 10 sngH = intPreHr * 5 + intPreMin / 12 intX = sngHLen * Sin(sngH * pi / 30) intY = sngHLen * Cos(sngH * pi / 30) intX = sngMLen * Sin(intPreMin * pi / 30) intY = sngMLen * Cos(intPreMin * pi / 30) Line (0, 0)-(intX, intY), RGB(0, 0, 0) 清除旧分针 DrawMode = 13 sngH = intHr * 5 + intMin / 12 intX = sngHLen * Sin(sngH * pi / 30) intY = sngHLen * Cos(sngH * pi / 30) intPreHr = intHr Line (0, 0)-(intX, intY), vntBlack 绘新时针 intX = sngMLen * Sin(intMin * pi / 30) intY = sngMLen * Cos(intMin * pi / 30) Line (0, 0)-(intX, intY), vntBlack 绘新分针 intPreMin = intMinEnd If intSec = Second(Now) 取得秒 intX = sngSLen * Sin(intSec * pi / 30) intY = sngSLen * Cos(intSec * pi / 30) DrawWidth = 1 DrawMode = 10 NotXorPen绘图模式 vntGray = QBColor(8) 灰色秒针 Line (0 + 2000, 0)-(intPreX + 2000, intPreY), vntGray Line (0 + 2000, 0)-(intX + 2000, intY), vntGray 绘新秒针 intPreX = intX intPreY = intY blnBeginFlag = FalseEnd SubPrivate Sub VScroll1_Change() Text1.Text = 0 Text1.Text = Text1.Text + VScroll1.ValueEnd SubPrivate Sub VScroll2_Change() Text3.Text = 0 Text3.Text = Text3.Text + VScroll2.ValueEnd Sub默认属性和属性参数 在原先的VB6里,有一项奇特的功能默认属性。在VB6中,对象的名称可以直接表示该对象的默认属性。4.2.5可选参数和按名传递VB从4.0开始支持“可选参数”这一特性。就是说,函数或子程序的参数有些是可选的,调用的时候可以不输入。其实VB从1.0开始就有一些函数带有可选参数,只不过到了4.0才让用户自己开发这样的过程。在VB4里,可选参数可以不带默认值,而在VB里,如果使用可选参数,则必须带有默认值。在调用的时候,VB若发现参数被省略,则自动读取.param部分的默认值,并显式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识题库-水泥生产工艺知识判断题(附答案解析)
- 心肌酶谱解读课件
- 叹早茶活动方案
- 腹股沟斜疝围手术期护理1
- 皮皮老师讲解朝花夕拾
- 年度多个项目汇报
- 数字水印技术介绍
- 辽宁省朝阳市建平县二中2026届化学高一上期末检测试题含解析
- 农产品概念讲解
- 气球静电原理及讲解
- 高级西点师习题及参考答案解析
- 2025年中学教师资格证《教育知识与能力》模拟试题-附解析
- 2025版劳务公司挂靠合作服务合同模板下载
- 肾结石合并脓毒症护理查房记录
- 《关于暂停开展企业安全生产标准化定级工作的通知》解读培训
- 模具数据管理办法
- 北京水务投资集团有限公司集团系统招聘考试真题2024
- 2025秋人教版八年级上册地理全册重点知识点早背晚默
- 2021-2026年中国铠装电缆行业市场全景调研及投资规划建议报告
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 2025安徽医科大学辅导员考试试题及答案
评论
0/150
提交评论