面向对象课程设计VC++ 模拟时钟程序 50
一、概述计时器是程序中最常用的后台任务机制之一,其时间间隔最低约55毫秒,被广泛用于时钟、磁盘备份程序或需要在某一时刻运行的程序等。而模拟时钟是一种集计时器和时钟显示于一...
一、概述
计时器是程序中最常用的后台任务机制之一,其时间间隔最低约55毫秒,被广泛用于时钟、磁盘备份程序或需要在某一时刻运行的程序等。而模拟时钟是一种集计时器和时钟显示于一体的程序。
以实例为背景学习基于MFC的WINDOWS应用程序设计,编写一个指针式时钟程序,此程序在屏幕正中有一个指针式钟面,屏幕下方或右方以数字方式显示日期和时间。指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀的12个刻度,刻度要求显示清晰,钟面上有长度和颜色及粗细各不相同的指针,即时针、分针、秒针,以便各个指针重合时亦可以轻易辨认,指针的运动要求具有规律性,且为顺时针。数字钟的钟面为一个规则的矩形,其显示时间的格式是时:分:秒,小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。
通过对指针式时钟的设计,可以掌握API或MFC编程,其中包括各种视图类的作用、绘图函数的使用、计时器的操作及应用程序的调试,同时对面向对象与可视化程序设计有一定的认识,并提高动手编程的能力。
二、设计任务
1、提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,并说明程序的特点和难点。
2、编程要求
(1)为该程序设计一个美观大方的图标。
(2)程序界面设计合理,色彩得体大方,显示正确。
(3)用绘图函数绘制钟的界面图。时针、分针和秒针形象美观,即使各指针重合也可辨认。
(4)各指针运动规律正确。
(5)数字式时钟的时间显示与指针式时钟显示一致。
3、调试程序,达到所要求的功能。
三、设计步骤
1、钟面功能设计
根据自己的考虑绘制钟的界面图,具体也可参照下图:
或另一种方案图:
总体显示效果如下:
2、 具体设计
本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、菜单命令、对话框、画笔/画刷、显示文字等。指针运动算法和屏幕重绘方法是本程序主要难点所在。
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(x, y)的公式如下:
x =圆心x坐标 + 指针长度 * cos (指针方向角)
y =圆心y坐标 + 指针长度 * sin (指针方向角)
注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。
(1) OnDraw()函数实现对系统时间的获取和绘制椭圆表面和时钟指针。
(2) 设置计时器,创建窗口时启动一个计时器不断发出WM_TIMER消息,调用SetTimer()函数。
(3) 用TextOut()函数显示数字钟。
(4) 添加菜单,用菜单项控制弹出对话框设置显示的时间。
3、 重点和难点
(1) 使用计时器需要了解两个函数:SetTimer()函数用来设置一个计时器以指定的时间间隔触发,KillTimer()函数用来使一个正在运行的计时器停止。
(2) 时钟指针的显示和移动是一个需要注意的方面。
(3) 注意屏幕重绘方法。
四、思考题
1. 程序中如何实现时钟时间与计算机系统时间保持一致?
2. SetTimer()函数和KillTimer()函数的调用位置与程序运行的关系?
3. 说明SetTimer()函数、WM_TIMER消息和OnTimer()函数的调用关系?
4. (选做)实现数字钟时,涉及到的编程有哪些? 展开
计时器是程序中最常用的后台任务机制之一,其时间间隔最低约55毫秒,被广泛用于时钟、磁盘备份程序或需要在某一时刻运行的程序等。而模拟时钟是一种集计时器和时钟显示于一体的程序。
以实例为背景学习基于MFC的WINDOWS应用程序设计,编写一个指针式时钟程序,此程序在屏幕正中有一个指针式钟面,屏幕下方或右方以数字方式显示日期和时间。指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀的12个刻度,刻度要求显示清晰,钟面上有长度和颜色及粗细各不相同的指针,即时针、分针、秒针,以便各个指针重合时亦可以轻易辨认,指针的运动要求具有规律性,且为顺时针。数字钟的钟面为一个规则的矩形,其显示时间的格式是时:分:秒,小时为24进制,分钟和秒是60进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。
通过对指针式时钟的设计,可以掌握API或MFC编程,其中包括各种视图类的作用、绘图函数的使用、计时器的操作及应用程序的调试,同时对面向对象与可视化程序设计有一定的认识,并提高动手编程的能力。
二、设计任务
1、提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,并说明程序的特点和难点。
2、编程要求
(1)为该程序设计一个美观大方的图标。
(2)程序界面设计合理,色彩得体大方,显示正确。
(3)用绘图函数绘制钟的界面图。时针、分针和秒针形象美观,即使各指针重合也可辨认。
(4)各指针运动规律正确。
(5)数字式时钟的时间显示与指针式时钟显示一致。
3、调试程序,达到所要求的功能。
三、设计步骤
1、钟面功能设计
根据自己的考虑绘制钟的界面图,具体也可参照下图:
或另一种方案图:
总体显示效果如下:
2、 具体设计
本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、菜单命令、对话框、画笔/画刷、显示文字等。指针运动算法和屏幕重绘方法是本程序主要难点所在。
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(x, y)的公式如下:
x =圆心x坐标 + 指针长度 * cos (指针方向角)
y =圆心y坐标 + 指针长度 * sin (指针方向角)
注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。
三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。
(1) OnDraw()函数实现对系统时间的获取和绘制椭圆表面和时钟指针。
(2) 设置计时器,创建窗口时启动一个计时器不断发出WM_TIMER消息,调用SetTimer()函数。
(3) 用TextOut()函数显示数字钟。
(4) 添加菜单,用菜单项控制弹出对话框设置显示的时间。
3、 重点和难点
(1) 使用计时器需要了解两个函数:SetTimer()函数用来设置一个计时器以指定的时间间隔触发,KillTimer()函数用来使一个正在运行的计时器停止。
(2) 时钟指针的显示和移动是一个需要注意的方面。
(3) 注意屏幕重绘方法。
四、思考题
1. 程序中如何实现时钟时间与计算机系统时间保持一致?
2. SetTimer()函数和KillTimer()函数的调用位置与程序运行的关系?
3. 说明SetTimer()函数、WM_TIMER消息和OnTimer()函数的调用关系?
4. (选做)实现数字钟时,涉及到的编程有哪些? 展开
1个回答
展开全部
你也说了 是24小时计时法
那12点肯定是12点啦
楼主是想问24点时候是24点还是0点吧,
很负责的告诉你,是0点
因为24进制中,满24该进到下一位了,剩下应该是0
就像10进制中的满10进1 10已经进到十位了,个位现在是0啦……
那12点肯定是12点啦
楼主是想问24点时候是24点还是0点吧,
很负责的告诉你,是0点
因为24进制中,满24该进到下一位了,剩下应该是0
就像10进制中的满10进1 10已经进到十位了,个位现在是0啦……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
DFRobot
2024-11-10 广告
2024-11-10 广告
图形化编程是一种直观的编程方式,它通过拖拽图形化的编程积木来构建程序,降低了编程的学习门槛。在上海智位机器人股份有限公司,我们致力于将图形化编程应用于机器人教育等领域,使学习者能够以更加轻松、有趣的方式掌握编程技能。我们的图形化编程平台界面...
点击进入详情页
本回答由DFRobot提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询