《VC++程序设计》课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
衡阳师范学院
课
程
设
计
题目:简单的时钟程序
指导老师:邓红卫老师
专业:计算机科学与技术专业
班级:1001
姓名:陈正波黄智军刘武
学号:10190101 05 11
目录
摘要 (2)
第一章问题解析 (2)
1.1问题描述 (2)
1.2要求 (2)
1.3程序设计难点 (2)
第二章程序设计过程 (2)
2.1手动设置时间的对话框 (3)
2.2获得系统时间 (3)
2.3制作时钟表盘 (3)
2.4表针设置 (3)
2.5设置程序窗口的尺寸和背景
色 (3)
第三章详细程序 (3)
第四章运行结果 (6)
4.1运行时的画面 (6)
第五章工作总结 (7)
简单的时钟程序
学生:陈正波黄智军刘武指导老师:邓红卫
摘要:通过对Visual C++的一年学习,我们已经基本了解了关于MFC类库的知识,还有关于Window编程的知识,粗略地知道了怎样编程,并且脑中有了面向过程和面向对象的编程思想,也掌握了一些关于这个面向对象的编程语言的调试技术,通过这次实际操作,我们能看到自己的不足,解决不断出现的问题,从而掌握自己不懂的或者薄弱的知识点。
Visual C++中通过MFC类库介绍了Windows的用户界面对象,比如:窗口、系统菜单、标题栏、菜单栏、工具条、客户区、状态栏、对话框等等。
通过Windows编程可根据系统默认的绘图工具,结合画笔,画刷,字体,位图和光标等绘图工具的编程方法。
Windows应用程序的绘图过程:应用程序->设备环境->图形设备接口->设备驱动程序->设备输出。
Windows编程涉及到了类的继承、封装、派生、多态等性质,还涉及到基本的指针等。
关键字:Windows编程MFC类对话框时钟程序
第一章:问题解析
1.1问题描述
时钟程序是通过获得系统时间,在窗口中显示一个时钟。
1.2要求
1.时钟窗口大小合理,色彩美观大方
2.时钟表盘的时间间隔正确,指针能正确的移;,
3.能够正确的获得系统时间,并且进行手动设置;
1.3程序设计难点
窗口大小的设置,系统时间的获得,指针的正确移动,表盘的制作,背景颜色的设定,激活指针;
第二章:程序设计过程
2.1手动设置时间的对话框
在对话框中添加静态文本、编辑、按钮三个控件,设置Ctrl+D 为快捷键。
2.2获得系统时间
通过调用GetCurrentTime()函数,获得系统时间。
2.3制作时钟表盘
用Rectangle()函数画一个正方形,再用Ellipse()函数画两个半径不同的同心圆,通过计算,在两个同心圆之间利用TextOut()函数输出12个时间数字。
2.4表针设置
利用鼠标消息函数MoveTo()和LineTo()来控制时钟指针的移动
2.5 设置程序窗口的尺寸和背景色
在CMainFrame类的PreCreateWindow(CREATESTRUCT& cs)函数
中设置窗口大小。
在CMyTimeView类的OnCreate(LPCREATESTRUCT lpCreateStruct)函数中修改窗口的背景色。
第三章详细程序
1.新建一个名为MyTime的单文档MFC工程。
2.构建一个用于手动设置时间的对话框。
(1)调用OnTimer(UINT nIDEvent)函数,实现对话框的功能,代码如下:
CTime time=CTime::GetCurrentTime();
CString display;
display.Format("%d.%d.%d %d:%d:%d ",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour (),time.GetMinute(),time.GetSecond()); // 时钟的格式化this->GetDlgItem(IDC_EDIT1)->SetWindowText(display);
CDialog::OnTimer(nIDEvent);
(2)设置对话框背景色,代码如下:m_BrushBkClr.CreateSolidBrush(RGB(255,0,255));//创建话刷,设置编辑框背景色
CRect rect;
GetClientRect(&rect); //计算对话框的尺寸
dc.FillSolidRect(&rect,RGB(192,248,202)); //绘制对话框背景色
3.主要程序代码
(1)在CMyTimeView类中定义函数OnTimer(UINT nIDEvent),实现表盘的制作,代码如下:
CTime time=CTime::GetCurrentTime(); //获得系统当前时间函数
CDC *pDC=this->GetDC();
pDC->Rectangle(44,20,206,184); //画一个正方形
pDC->Ellipse(44,20,206,184);
pDC->Ellipse(64,40,186,164); //画两个圆
pDC->TextOut(113,23,"12");
pDC->TextOut(52,94,"9");
pDC->TextOut(113,166,"6");
pDC->TextOut(192,94,"3");
pDC->TextOut(55,60,"10");
pDC->TextOut(80,33,"11");
pDC->TextOut(152,31,"1");
pDC->TextOut(180,55,"2");
pDC->TextOut(180,130,"4");
pDC->TextOut(152,157,"5");
pDC->TextOut(80,152,"7");
pDC->TextOut(60,130,"8"); //输出12个时钟数字(2) 实现时钟指针移动的代码如下:
int x=120;
int y=100; //设置圆心位置
pDC->MoveTo(x,y);
hour=time.GetHour();
if (hour>12)
{
hour=hour-12;
}
min0=time.GetMinute();
sec=time.GetSecond(); //初始化当前时间
pDC->LineTo(x+(long)55*cos(PI/2-2*PI*sec/60.0),y-(lon g)55*sin(PI/2-2*PI*sec/60.0));
pDC->MoveTo(x,y);
pDC->LineTo(x+(long)50*cos(PI/2-2*PI*min0/60.0),y-(lo ng)50*sin(PI/2-2*PI*min0/60.0));
pDC->MoveTo(x,y);
pDC->LineTo(x+(long)35*cos(PI/2-5*2*PI*hour/60.0),y-(long) 35*sin(PI/2-5*2*PI*hour/60.0)); //实现时钟指针的移动CView::OnTimer(nIDEvent);
(3) 激活时钟
在CMyTimeView::OnCreate()函数中添加代码SetTimer(1,1000,NULL);
在CMyTimeView类中定义函数OnMenutime(),用于激活手动设置时间对话框,代码如下:
CTimeDialog dlg;
dlg.DoModal();
(4)在PreCreateWindow(CREATESTRUCT& cs)函数中设置屏幕大小,并对窗口的标题进行修改,代码如下:
cs.cx=250;
cs.cy=320; //设置长和宽
cs.style&=~FWS_ADDTOTITLE;//去除标题栏文字前面的"无标题"
m_strTitle = _T("简单时钟"); //设置程序标题
(5)在CMyTimeView类的OnCreate()函数中实现背景黑色的绘制,代码如下:
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockO bject(BLACK_BRUSH));
第四章运行结果
4.1运行时的画面:
简单的时钟程序:当用户进入一些不能显示时间的程序时运行这个程序,可以方便的查看时间,还可以通过手动设置当前时间,只要点击关闭按钮即可关闭程序
使用Ctrl+D就能启动手动设置时间对话框
第五章工作总结
程序能够基本实现预期的效果,为了时钟程序更加实用和简洁,我们修改了窗口的大小。
并将背景色该为了黑色,程序看起来更加美观大方。
通过这次程序设计,我们对VC++该如何学有了更深的认识,这也使得我们为以后的学习更加确定了方向。
我们在程序设计的过程中学到了许多课本上学不到的东西,通过翻阅参考书和网上查找,我们顺利地解决了很多问题。
为期近一个月的VC++课程设计,我们小组的三个成员通过相互分工、合作,使得这次的程序设计能够定时定量的完成。