小学期设计报告.docx
《小学期设计报告.docx》由会员分享,可在线阅读,更多相关《小学期设计报告.docx(10页珍藏版)》请在冰点文库上搜索。
小学期设计报告
沈阳师范大学科信软件学院
小学期课程设计报告
课题名称:
模拟时钟转动程序
姓名:
姜丽红
学号:
10008075
专业年级:
软件10级7班
2011年6月30日
一、系统功能简介:
该程序主界面有一个时钟和万年历,时钟能够读取系统时间并模拟机械表的运转,万年历显示当前时间。
菜单栏有“闹钟”、“多时区”、“倒计时”和“计时器”四项。
单击闹钟菜单将会出现闹钟设置对话框,可以设置闹钟,有三种铃声可供选择,同时提供铃声试听功能。
单击“多时区”菜单会用模拟时钟和数字时钟显示北京、东京、巴黎的时间。
“倒计时”和“计时器”分别实现倒计时和计时功能。
二、总体设计:
程序编写运用VC++6.0的MFC,本题主要涉及到的知识点有:
时钟指针运动算法、屏幕重绘方法、定时器消息、菜单命令、对话框、画笔/画刷、显示文字,声音播放等。
指针运动算法和对话框的响应是本程序主要难点所在。
不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。
分别用3个函数完成时针、分针和秒针的计算坐标,设定样色和绘制工作。
设置5个对话框,对应主界面,闹钟,多时区,倒计时和计时器功能。
每个对话框分别对应一个类。
实现相应的功能。
三、详细设计:
1、用AppWizard生成一个名为Clock的单文档(SDI)程序框架。
2、在ResourceView的Dailog中添加5个对话框,
分别做如下设置:
主窗口:
多时区:
闹钟:
:
倒计时:
计时器:
分别设置各对话框的ID和属性,5个对话框分别对应主界面、闹钟、多时区、倒计时和计时器。
3、设计好这些对话框模板后,分别利用ClassWizard自动建立对话框类。
进入ClassWizard后,它会发现已建立的对话框模板资源,并弹出一个对话框询问是否要为该对话框模板建立类。
按下“OK”按钮,会弹出NewClass对话框,在Name栏填写对话框类的名称后按“OK”按钮,即可为对话框创建一个对应的类。
4、为了简化菜单,删除系统原有的“文件”、“编辑”等菜单项。
编辑项目的菜单资源,在主框架窗口的主菜单(IDR_MAINFRAME)中添加名为“闹钟”、“多时区”、“倒计时”、“计时器”的非下拉菜单,分别设置属性为IDM_Time1、IDM_OtherTime、IDM_LastTime。
5、利用ClassWizard为视图类添加菜单命令处理函数。
进入ClassWizard的MessageMaps选项卡,选择ClassName项为CClockView类,在ObjectIDs列表框中分别选择新添加的菜单选项的ID,在Messages列表框中选择COMMAND,按下AddFunction按钮添加成员函数。
ClassWizard会为各菜单选项添加相应的消息响应函数。
6、利用ClassWizard为对话框类添加与各控件对应的数据成员。
选择MemberVariables选项卡,确保ClassName项为对所需对话框类,然后在选项卡下方的窗口中选择各控件的ID并按下“AddVariable…”按钮,为其添加对应成员变量。
7、CClockDlg是程序的主界面类,时连接个对话框实现其功能的窗口。
在ClockDlg.cpp加入
#include"clockDlg.h"
#include"OtherTimeDlg3.h"
#include
#include"Time11.h"
#include"wangmsh.h"
#include"ww.h"
使其包含各个头文件。
CClockGlg类包含如下数据成员和成员函数:
定义了各个针的坐标变量,时间显示的字符串和绘制个针的函数。
8、下面是DrawHour函数,用来获取时针坐标和绘制时针,分针与秒针的DrawMinute和DrawSecond的函数与其类似,只是颜色RGB与长短设置不同:
9、主体部分绘制完毕,开始让时钟转动。
利用ClassWizard为视图类添加定时器。
进入ClassWizard的MessageMaps选项卡,选择ClassName项为CClockDlg类,在Messages列表框中选择定时器消息WM_TIMER,按下AddFunction按钮添加成员函数。
ClassWizard会添加相应的定时器函数OnTimer。
在OnInitDialog程序结尾处添加函数
SetTimer(2,1000,NULL),其作用是延时1秒并调用定时器函数OnTimer。
10、在OnTimer函数中添加如下代码:
GetCurrentTime函数可以获取系统时间,然后调用DrawSecond,DrawMinute,DrawSecond函数进行各个针的绘制,Invalidate函数实现窗口重绘,这样就实现了时间的即时刷新,使时间和系统时间同步。
11、分别在OnOtherTime,OnTime1,Ondaojishi,OnMenuitem32777各个窗口响应函数中添加DoModal函数,使其点击菜单时弹出相应的对话框。
13、在COtherTimeDlg类中添加DrawHour,DrawHour1,DrawHour2函数,用来显示3个地点的小时时间,函数与CClockDlg类中的相同,分钟和秒同样设置。
14、同样在COtherTimeDlg类中添加定时器消息WM_TIMER,在OnTimer函数中添加如下代码:
这样就可以同显示3个时区的时间并刷新。
15、在Time11类中对应各个功能按钮的函数中添加代码,
在OnButton2函数中添加如下代码:
用PlaySound函数播放选定的闹钟铃声。
16、在OnPaint函数中添加如下代码:
使其在设定闹铃的时刻提示“时间到了!
!
!
”,同时调用Onbutton2函数闹钟铃声。
17、程序的主体大致完成,下面添加程序所需要的资源。
点击VC出入菜单,选资源,出现对话框后点引入,找到要插入的wav格式的声音文件,选取后确定,修改其ID,这样这个声音就可以作为闹钟铃声了。
四、系统测试:
运行程序,检查窗口是否正常显示,万年历是否正常运行,日期是否准确。
单击闹钟看是否显示对话框,检查能否设置闹钟,响铃是否正常。
进入多时区选项,检查是否显示对话框,时钟时间是否与数字时钟一致。
接下来进入倒计时,看是否显示对话框,设定时间看是否正常运行。
最后进入计时器,看是否弹出对话框,数字时钟是否正常计时。