时钟程序实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计实践设计报告
课题名称:时钟改进程序
学生姓名:陈宸
班级: 2 0 1 3 2 1 1 1 1 3
班内序号:12
学号: 2 0 1 3 21 0 3 75
日期:2015.6.13
1、课题概述
1.1 课题目标和主要内容
主要内容:根据所提供的时钟代码,新建派生类,利用WINDOWS AP 设计和绘制图形。
目标:以培养学生动手实践能力为目的,重点是在学习C++程序设计和数据结构的基础上,使学生从实践中学习如何综合运用C++和数据结构的相关知识解决实际应用中的问题,了解程序设计的基本思想在具体实际应用中的体现,掌握分析问题、解决问题的方法,从而提高学生的编程能力,达到编程熟练、会调试、代码书写规范的基本要求,具备简单应用程序的设计、实现能力。
本实验使用的开发平台为visual studio2012集成开发环境,工程类型为Win32 Console Application,采用的主要工具为C++编程语言。
1.2系统的主要功能
功能框图:
功能列表及说明:
2、系统设计
2.1 系统总体框架
①设计思路:
2.2系统详细设计
①程序流程图及描述
遵循了MVC设计模式:
(1)设计Moldel。及工作区和时钟的存储结构用来方便的存取数据;
(2)设计View。即如何根据数据显示不同的界面;
(3)设计COntroller。即如何用键盘控制时间的变化。
②类关系图及描述
没有定义类结构,直接是各个功能函数在主函数中根据获取到的不同按键以及游戏的具体情况而被调用。所以这里代替类关系及描述介绍所用到的各功能函数:
HBRUSH brush-- 实心刷子:系统用来绘制要填充图形的内
部区域的位图;
SelectObject--恢复原来画刷;
PatBlt--用选入设备环境中的刷子绘制给定的矩形区域;
2.3关键算法分析
算法1:窗口过程函数
[1] 算法功能:当按下指定菜单,窗口需要运行相应的处理函数。
[2] 算法基本思想
在API 里定义了一个函数为回调函数,当系统需要向窗口发送消息时,就会调用窗口给出的回调函数WindowProc,如果WindowProc 函数不处理这个消息,就可以把它转向DefWindowProc 函数来处理,这是系统的默认消息处理函数。
[3]算法空间、时间复杂度分析:
算法时间空间复杂度均为O(1)。
[4]源代码:
I NT_PTR CALLBACK Alter(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {
UNREFERENCED_PARAMETER(lParam);
switch (message)
{
case WM_INITDIALOG:
return (INT_PTR)TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
else if(LOWORD(wParam) == IDOK )
{
bbh=0;
HWND hDialog_1 = ::FindWindow(NULL,"修改时间");//获取有edit框窗口的句柄。
GetWindowText(GetDlgItem(hDialog_1,IDC_EDIT1),tmp1,4);
//MessageBox(hDialog_1,tmp1,"ddd1",IDOK);
GetWindowText(GetDlgItem(hDialog_1,IDC_EDIT2),tmp2,4);
//MessageBox(hDialog_1,tmp2,"ddd2",IDOK);
GetWindowText(GetDlgItem(hDialog_1,IDC_EDIT3),tmp3,4);
//MessageBox(hDialog_1,tmp3,"ddd3",IDOK);
a1=atoi(tmp1);
a2=atoi(tmp2);
a3=atoi(tmp3);
z=a1*3600+a2*60+a3-(time(NULL)-((time(NULL)/(3600*24))*(3600*24)))-8*3600;
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
break;
}
return (INT_PTR)FALSE;
}
[5]算法目的:
处理应用程序菜单- 发送退出消息并返回WM_PAINT -
绘制主窗口目的: 处理主窗口的消息。
算法2:绘图函数
[1] 算法功能
运行函数时,绘出相应图形。
[2] 算法基本思想
设置double x, double y, double ra, double rb,COLORREF mColor 等变量,当运行函数时根据相应参数画出图形
在这里我新建了一个重载函数和类,多定义了COLORREF icolor 变量。oColor 指的是画圆的笔的颜色,而icolor 则是填充圆的画刷的颜色。通过在void GraphicWindow::ellipse 中新建笔和刷子用来绘图,最后将比和刷子的颜色恢复成预制,删除新建笔刷。
[3]算法空间、时间复杂度分析:
算法时间空间复杂度均为O(1)。
[4]源代码:
#include"cstdio"
#include"ccc_shap.h"
Point::Point()
{
x = 0.0, y = 0.0;
}
Point::Point(double x1, double y1)
{
x = x1, y = y1;
}
double Point::get_x() const
{
return x;
}