- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现时钟的设计与实现.doc
程序设计综合实训报告
时钟的设计与实现
学院:计算机科学与技术学院
专业:计算机类
学号:16408070728
姓名:魏新力
日期:2018年1月5日
题目:利用VC++实现时钟的设计与实现
功能的描述:
运行界面是一指针式时钟,包插时分秒三个指针,有22个钟点的显示,并通过指针的 转动来实时更新时间。同时可以显示相应时间的数字钟形式。
要求:通过菜单可以实现闹铃功能、表盘背景、指针颜色设置、倒计时等功能。同时为程序 窗口增加了一张精美图片作为背景。
设计要点(或基本思路、算法分析与说明、流程图):
基本思路:
确定原点位置
设置指针长度
写出时、分、秒针转过角度的函数
写出菜单的选项包插指针颜色、背景颜色、闹钟功能
写出连接菜单选项与指针颜色、背景颜色、闹钟功能连接的消息命令处理函数
获取系统时间
写出倒计时的函数
写出闹钟函数
插入位图
算法分析与说明:
确定原点位置:以客户区为原点(0, 0),然后定义原点位置。
设置指针长度:因为要用到sin和cos函数,所以On_Draw函数的头文件必须包含 #include,,math.hw ,然后调用函数语句 int h_x=hour_ar*cos(hour)+n; int h_y=hour_ar*sin(hour)+200; (n为任意合适整数),来确定指针长度。
写出时、分、秒针转过角度的函数;因为设计的是一个时钟,所以每当指针转过一次过后, 相当于转过一定的角度,则调用
float hour=(float)(j-3)/12*2*3.1415;
float min=(float)(i-14)/60*2*3.1415;
float sec=(float)(n-14)/60*2*3.1415;
计算出转过后的指针的位置。
菜单选项以及消息处理函数:在ResrouseView中选择menu然后编辑菜单选项,编辑好菜
单之后利用Ctrl+w打开类向导在view类中添加消息处理函数。
获取系统时间:调用CTime tm; tm=CTime::GetCurrentTime();得到系统时间。
写出倒计时的函数:在写这里这时候,由于我自己能力有限,并没有用对话框,不能自定 义的写出倒计时的任意时间,所以只能在0n_Draw中写出倒计时函数,显示在屏幕中,我 下去会多看书多多学习,尽快掌握这些东西。
写出闹钟函数:这个和前而那个倒计时够倒计时功能差不多,本来打算用对话框和单文档 结合起来写的,结果写出来的老是有问题,也调试不对,就放弃了然后就继续用和上面相同 的方法写了一个判断和系统时间相同的办法的“闹钟”,在on_Draw函数里而写出来。
插入图片:在已经可以运行的指针上插入一个带数字的表盘就可以非常形象的表达出来一 个时钟了。
设计技术流程图:[确定原]点位置
设计技术流程图:
[确定原]点位置
设置指
针长度
写出时、分、秒针转过角度的函数
写岀菜单的选项包括指令诲色、背景颜色、闹钟功能
写出连接菜单选项与指针颜色、背景颜色、闹钟功能连接的消息命令处理函数
获収系统时间
写出倒计时的函数 写出闹钟函数 插入位图
时钟
3、关键或主要程序代码:
确定原点位置:
以客户区做顶点为原点(0, 0),则确定顶点为:
int org_x=205;
int org_y=205;
设置指针反度:
〃时针
int hour_ar=90; 〃长度
int h_x=hour_ar*cos(hour)+200;
int h_y=hour_ar*sin(hour)+200;
〃分针
int min_ar=140;// 长度
int m_x=mi n_ ar*cos(min)+200;
int m_y=min_ar*sin(min)+200;
〃秒针
int sec_ar=170; 〃长度
int s_x=sec_ar*cos(sec)+200;
int s_y=sec_ar*si n(sec)+200;
写出时、分、秒针转过角度的函数:
float hour=(float)(j-3)/12*2*3.1415;
float min=(float)(i-14)/60*2*3.1415;
float sec=(float)(n-14)/60*2*3.1415;
写出菜单的选项包括指针颜色、背景颜色、闹钟功能
if (Y==l)//红色指针
{
CPen pl(PS_SOLIDARGB(255,0,0));//创建新画笔
CPen *penOld=(CPen*)pDC-SelectObject(pl);//选择创建堆画笔 pDC-M oveTo (o rg_x, o rg_y); 〃终点 pDC-UneTo(m_x,m_y);//^ 点
CPen p2(PS_S0LID,3,RGB(255O0)); 〃创建新画笔
文档评论(0)