小闹钟程序课题设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小闹钟VC程序设计报告
一课题内容和要求
【问题描述】编一个小闹钟程序,运行后可以在指定的时间到时,在屏幕上显示提醒时间到的语句,并使得电脑发出了悠扬的乐声。
二需求分析
1显示时间功能,即时显示当前时间
2闹钟功能,能够根据用户设置的时间来提醒用户,可以通过声音或者文字提醒3时间设置功能,提供菜单设置时钟的当前时间和提醒的闹钟时间
4界面设计,可模拟真实钟表界面,也可用数字界面显示,要求美观,实用和个性化
三详细设计
该程序拥有四个源文件,分别为AlarmClock.cpp AlarmClockDlg.cpp RingDlg.cpp stdafx.cpp
如下图所示:
其作用分别为
AlarmClock.cpp : 定义应用程序的类行为
AlarmClockDlg.cpp : 实现文件
RingDlg.cpp : 实现文件
另外
stdafx.cpp : 只包括标准包含文件的源文件
AlarmClock.pch 将作为预编译头
stdafx.obj 将包含预编译类型信息
在闹钟设置面板上添加当前时间,通过文本框和标签设置需要设置的闹钟的时,分,秒。设置列表框提供闹钟的音乐供以选择。设置开关按钮决定闹钟的开始和结束
另外于MFC播放背景音乐的问题解决如下:
1.建立一个MFC的程序
2.插入资源(插入->资源->定制->(输入WAVA))
3.在resources中找到"WAVA"文件,打开有个IDR_WAVA1
4.右键->import->浏览后缀名为.wav的音频文件
5.在CMainFrame中的OnCreate函数中加入语句
PlaySound(MAKEINTRESOURCE(IDR_WAVE2),AfxGetResourceHandle(), SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);
6.在该文件的上方,添加头文件#include "mmsystem.h"
7.(工程->设置->连接->库模板添加"winmm.lib")
8.编译运行即可
程序源代码
#include"stdafx.h"
#include"AlarmClock.h"
#include"AlarmClockDlg.h"
#include"afxdialogex.h"
#include"RingDlg.h"
#include
#ifdef_DEBUG
#define new DEBUG_NEW
#endif
// CAlarmClockDlg 对话框
CAlarmClockDlg::CAlarmClockDlg(CWnd* pParent/*=NULL*/)
: CDialogEx(CAlarmClockDlg::IDD, pParent)
, m_hour(0)
, m_minute(0)
, m_second(0)
, m_prompt(_T("时间到,闹钟响!"))
{
//载入图标
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
//默认响铃时长60秒
iLast = 60;
//试听状态标识为FALSE
isListening = FALSE;
//响铃状态标识为FALSE
//isRinging = FALSE; //用不到
}
void CAlarmClockDlg::DoDataExchange(CDataExchange* pDX) {
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STA TIC_NOW, m_static_now);
DDX_Control(pDX, IDC_STA TIC_LEFT, m_static_left);
DDX_Text(pDX, IDC_EDIT_H, m_hour);
DDV_MinMaxUInt(pDX, m_hour, 0, 23);
DDX_Text(pDX, IDC_EDIT_M, m_minute);
DDV_MinMaxUInt(pDX, m_minute, 0, 59);
DDX_Text(pDX, IDC_EDIT_S, m_second);
DDV_MinMaxUInt(pDX, m_second, 0, 59);
DDX_Control(pDX, IDC_SPIN_H, m_spin_h);
DDX_Control(pDX, IDC_SPIN_M, m_spin_m);
DDX_Control(pDX, IDC_SPIN_S, m_spin_s);
DDX_Text(pDX, IDC_EDIT_PROMPT, m_prompt);
DDV_MaxChars(pDX, m_prompt, 18);
DDX_Control(pDX, IDC_COMBO_RING, m_combo_ring); }
BEGIN_MESSAGE_MAP(CAlarmClockDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CTLCOLOR()
ON_WM_TIMER()
ON_NOTIFY(NM_CLICK, IDC_SYSLINK1, &CAlarmClockDlg::OnNMClickSyslink1) ON_BN_CLICKED(IDC_BUTTON_RESET,
&CAlarmClockDlg::OnBnClickedButtonReset)
ON_EN_CHANGE(IDC_EDIT_H, &CAlarmClockDlg::SetAlarmTime)
ON_EN_CHANGE(IDC_EDIT_M, &CAlarmClockDlg::SetAlarmTime)
ON_EN_CHANGE(IDC_EDIT_S, &CAlarmClockDlg::SetAlarmTime)
ON_BN_CLICKED(IDC_BUTTON_LISTEN,
&CAlarmClockDlg::OnBnClickedButtonListen)
ON_CBN_SELCHANGE(IDC_COMBO_RING,
&CAlarmClockDlg::OnCbnSelchangeComboRing)
ON_MESSAGE(WM_NC, &CAlarmClockDlg::OnNotifyIcon)
ON_WM_SYSCOMMAND()
ON_WM_CLOSE()
// ON_WM_DESTROY()
END_MESSAGE_MAP()
// CAlarmClockDlg 消息处理程序
BOOL CAlarmClockDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动