当前位置:文档之家› 时钟设计报告

时钟设计报告

教师签名:说明:答辩未通过者总分记为0并重修。

总分 = 程序╳50% + 设计报告╳20% + 答辩╳30%成都信息工程学院课程设计时钟设计报告姓名:张双学院:电子工程学院学院学号:3140301005摘要时钟可以说是现代人们生活中必备的生活用品。

市场上各种类型、款式的时钟数不胜数,一款良好的时钟可以给人们带来极大的便利。

关于时钟的各种应用程序层出不穷,而我的目的是设计一款界面简单、方便易用、功能相对简洁实用的指针式时钟程序。

本次设计的简易时钟通过菜单栏可以实现启动时钟、暂停时钟、时钟清零以及时间设置等功能。

一个时钟大致可由时钟背景、时针、分针、秒针四个部分构成。

该时钟的设计主要使用Windows操作系统、Visual C++ 6.0集成开发环境开发、MFC应用程序开发框架。

通过本设计,我们进一步掌握Visual C++应用程序,系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++。

关键词:时钟;MFC ;VC++1第一章绪论随着社会的发展,各种类型的时钟已经进入了千家万户。

而操作简单、美观大方的指针式时钟备受家庭喜爱。

本次时钟设计主要是了解简单的时钟显示窗口,进一步掌握Visual C++应用程序,系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++1.1课程设计目的时钟几乎是每个人生活中必备的生活用品。

时钟虽小确非常重要。

一款良好的时钟可以给人们带来极大的便利。

当然,现在关于时钟的各种应用程序层出不求,我的目的是设计一款界面简单、方便易用、功能相对丰富的指针式时钟程序。

为了达到上述目标,以及课程设计的要求,结合自己自身的情况,选择了PC平台、Windows操作系统、Visual C++ 6.0开发平台、MFC框架来实现自己的程序。

而且希望能通过自己这款小应用程序的设计,来掌握面向对象的程序设计方法,了解C++面向对象的设计方法和技巧,有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养分析实际问题和解决问题的能力,具备使用面向对象程序设计开发工具设计实际系统的能力。

1.2 技术应用的基本现状Microsoft公司1998年推出了Visual C++6.0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。

与VC++5.0的最大不同之处是它的帮助功能更强大,MSDN(Microsoft Developer Networking)为包括VC++6.0在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。

所以VC++6.0可谓是Microsoft公司的王牌产品,编程功能强大而赢得广大程序的偏爱。

2第一章开发环境2.1 VC简介Visual C++是一个功能强大的可视化软件开发工具。

自1993年Microsoft 公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。

所以实际中,更多的是以Visual C++6.0为平台。

Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。

Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。

这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

2.2 MFC简介MFC是Visual C++是核心。

MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC 派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序框架。

每个MFC类都包括了一些函数,函数放到类中,符合C++编程方法。

这些函数,必须通过类定义对象才能使用。

3第三章需求分析3.1时钟功能程序所实现的功能:运行界面是一指针式时钟,包括时分秒三个指针,有12个钟点的显示,并通过指针的转动来实时更新时间。

同时可以显示相应时间的数字钟形式。

通过菜单工具栏可以实现对时钟进行启动、暂停、清零、时间设置等功能。

3.2主要功能模块图3-1 主要功能模块图4第四章系统设计3.1模块设计图3-1 各模块关系图图3-2 主程序流程图53.2详细设计1、时钟形状及颜色设计CClockDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);pDC->SetViewportOrg(300,300);CPen pen(PS_SOLID, 2, RGB(255,0,0)),*p; //时钟最外边框的厚度为2和颜色设置为红色p=pDC->SelectObject(&pen);//红色圆四个顶角的大小和位置pDC->Ellipse(p1.x-r-5, p1.y-r-5, p1.x+r+5, p1.y+r+5);pDC->Ellipse(p1.x-r, p1.y-r-5, p1.x+r, p1.y+r);pDC->SelectObject(p);CBrush brush1(RGB(0,255,255)),*pOldbrush1; //时钟中间颜色设置为天蓝色pOldbrush1=pDC->SelectObject(&brush1);pDC->Ellipse(p1.x-r-2, p1.y-r-2, p1.x+r+2, p1.y+r+2); //中间蓝色圆的大小pDC->SelectObject(pOldbrush1);CBrush brush2(RGB(0,0,0)),*pOldbrush; //中间点转轴设置为黑色pOldbrush=pDC->SelectObject(&brush2);pDC->Ellipse(p1.x-r0, p1.y-r0, p1.x+r0, p1.y+r0); //中间转轴圆的大小和位置pDC->SelectObject(pOldbrush);2、表盘数字的绘制pDC->TextOut(190,-95, "12");pDC->TextOut(250,-85, "1");pDC->TextOut(280,-50, "2");pDC->TextOut(290,-10, "3");pDC->TextOut(280,45, "4");pDC->TextOut(250,75, "5");6pDC->TextOut(195,90, "6");pDC->TextOut(150,75, "7");pDC->TextOut(115,45, "8");pDC->TextOut(105,-10, "9");pDC->TextOut(120,-60, "10");pDC->TextOut(150,-85, "11");3、时钟指针绘制pDC->MoveTo(p1);pDC->LineTo(x0,y0); //秒指针的初始长度可位置pDC->MoveTo(p1);pDC->LineTo((3*x1+200)/4,3*y1/4); //分指针初始的长度和位置pDC->MoveTo(p1);pDC->LineTo((x2+200)/2,y2/2); //时指针的初始长度和位置4、数字显示设计CString str;pDC->TextOut(0,-200, str);str.Format("现在的时间是:%d时%d分%d秒",y,m,d);pDC->TextOut(-200,-100,str); //“现在的时间是:%d时%d分%d秒"的位置5、时间设置功能time_set t; //工具栏里的时间设置t.m_second=d0;t.m_minit=m0;t.m_hour=h0;t.DoModal();d=t.m_second; //时间设置完之后,‘现在的时间’显示所设置的值m=t.m_minit;y=t.m_hour;d0=t.m_second;m0=t.m_minit;h0=t.m_hour;7theta0=t.m_second*2*PI/n;theta1=(t.m_minit+t.m_second/n)*2*PI/n;theta2=(t.m_hour+t.m_minit/n+t.m_second/n*n)*2*PI/n0;Invalidate();第五章测试4、1 系统测试测试说明测试名称指针式时钟测试目的验证软件的时间功能测试技术单元测试测试方法黑盒测试法测试用例测试内容显示时间和系统时间对比测试步骤运行程序测试数据预期结果显示时间和系统时间一致测试结果与预期相符4、2 测试效果1、运行的界面图4-1 运行界面图2、功能显示8点击菜单工具栏的“时间设置”,就可以对时间进行设置图4-2 时间设置对话框图设置时间为6点30分时,点击启动按钮,时钟从6点30分开始转动,同时左边显示“现在时间是:6时30分0秒”的字样。

图4-3 时间设置显示效果图4、3调试分析程序的调试过程会发现很多设计程序过程中的漏洞,也会有很多bug出现,需要仔细的不断调试才能尽量的把程序调试的完美。

开始设计的时候,绘制表盘会因为对话框的变化而编写,称为椭圆。

采用的纠正方法是,首先分别获取窗体的长和宽,然后去两者之间较小的一个的一般作为表盘的半径,这样就避免了这样的问题发生。

9第六章结论本次课程设计选择的是指针式时钟,主要是一开始觉得时钟可能要简单易懂些。

相关主题