基于VC.docx

上传人:b****4 文档编号:11722603 上传时间:2023-03-31 格式:DOCX 页数:27 大小:59.48KB
下载 相关 举报
基于VC.docx_第1页
第1页 / 共27页
基于VC.docx_第2页
第2页 / 共27页
基于VC.docx_第3页
第3页 / 共27页
基于VC.docx_第4页
第4页 / 共27页
基于VC.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于VC.docx

《基于VC.docx》由会员分享,可在线阅读,更多相关《基于VC.docx(27页珍藏版)》请在冰豆网上搜索。

基于VC.docx

基于VC

独创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

论文题目:

作者签名:

日期:

年月日

 

论文版权使用授权书

本人完全了解吉首大学有关保留、使用学位论文的规定,即:

学校有权保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。

同意吉首大学可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内容。

(保密的学位论文在解密后应遵守此协议)

论文题目:

学生签名:

日期:

年月日

导师签名:

日期:

年月日

 

基于VisualC++6.0的数字时钟设计

摘要

现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上等号。

对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以C++软件设计的数字时钟表现出来很大的优势,显示的时间简单明了而且读数快,时间准确显示到秒,相比机械式的依赖于晶体振荡器,可能会导致误差。

本次设计的数字时钟是基于Windows32平台,借助VisualC++6.0编程软件来实现;同时它也是一个基于win32内在核心编程,通过算法的灵活运用进行时钟的表盘绘制以及时针,分针,秒针在一定时间所走过的角度;在编程语言方面,我们选择了比C更为严谨的C++语言,写出来的程序代码更为灵活和易于维护。

在此次设计中,我们显示的时分秒是以24小时为计时方式,在设计时我们也对定时器进行了控制,不仅有显示时间的基本功能,还可以实现对时间的调整,当程序编译成功后界面将会出现一个时钟并且显示的时间是当前系统的时间,我们还能看到时针,分针,秒针随着时间的变化他们也不断发生变化;通过修改程序,我们可以对时钟的界面以及时针、分针等颜色的变化;

关键词:

VisualC++6.0;数字时钟;window系统;C++

 

C++-baseddesignofdigitalclock

Jutingting

(CollegeofPhysicsScienceandInformationEngineeringJiShouUniversityinHunan,416000)

Abstract

Modernlifepeoplepaymoreandmoreattentiontotheconceptoftime,istimeandmoneyontheequalsign.Fortimegraspverystrictandaccurateforthepersonorthing,timeisnotaccuratebringsverybigtrouble,sotoc++softwaredesignofdigitalclockshowsgreatadvantage,thatsimpleandfastreadingtime,accuratetoseconds,comparedtomechanicaldependsonthecrystaloscillator,mayleadtoerror.

ThedesignofdigitalclockisbasedonWindows32platform,withthehelpofaVisualc++6.0programmingsoftwaretoimplement;Itisalsoaninternalcorebasedonwin32programming,thealgorithmoftheflexibleapplicationofclockdialdrawingandhour,minutehandandsecondhandinthepastthepointofviewofacertaintime;Inprogramminglanguages,wechoseamorerigorousthanC,C++languagetowritethecodemoreflexibleandeasytomaintain.Inthisdesign,weshowthatwhenthevehicleis24hourstime,wealsotocontrolthetimerwhenthedesign,notonlyhasthebasicfunctionofdisplaytime,canalsorealizetheadjustmentoftime,whenafterthesuccessoftheprogramcompiledinterfacewillappearaclockandthatisthetimeofthecurrentsystemtime,wecanalsoseethehourhand,minutehand,secondhandwiththechangeofthetimetheyarealsoconstantlychanging;Bymodifyingtheprogram,wecanlookattheclockinterfaceandhourhand,minutehandandothercolorchanges;

Keywords:

Visualc++6.0;digitalclock;MFC;C++

目录

第一章绪论5

1.1研究背景5

1.2研究目的5

1.3研究内容5

1.4本文的结构6

第二章开发环境及相关技术的介绍7

2.1开发工具7

2.2软件环境7

2.2.1VisualC++6.07

2.2.2MFC和C++8

2.2.3开发平台Windows系统8

2.2.4win32核心编程机制8

2.2.5面向对象软件开发过程及思想9

2.2.6算法的设计10

第三章数字时钟的功能和流程分析10

3.1时钟的功能模块分析11

3.2时钟的流程分析11

第四章数字时钟的具体实现12

4.1时钟的总体设计12

4.2时钟的具体实现12

4.3时钟的运行效果16

第五章时钟的测试、运行维护与评价17

5.1时钟的测试17

5.2时钟的运行维护17

5.3时钟设计的评价17

总结18

参考文献19

第一章绪论

1.1研究背景

加入世界贸易组织后,中国面临激烈的竞争。

这竞争将是一场科技实力,管理水平和人才素质的较量,风险和机遇共存。

在这一前提下,电子产品的研发日新月异,不仅是在通信技术方面数字化取代模拟信号,就连我们的日常生活也被数字化所取缔,数字让人们的生活发生了翻天覆地的变化,数字给人们带了了意想不到的方便,总之,人们已经进入了数字化时代,数字渗透了生活的方方面面。

我们每天都在和数字打交道,比如我所设计的数字时钟,时钟被广泛应用于个人家庭,车站,码头,办公室等公共场所,成为人们日常生活的必需品。

由于计算机的迅速普及,基本C++的数字时钟有更高的精度,准确度,而且更加便于设置时间,时钟的数字化给人们的生产生活带了极大的方便,在功能方面也进行了大大的扩展,比如现在的自动报警,按时自动打铃,时间程序自动控制,定时广播,自动启闭路灯,定时开关烘箱,甚至各种定时电器的自动启用等等。

所有的这些都是基于钟表数字化,所以,研究基于C++的数字时钟及其应用,有着非常现实的意义。

1.2研究目的

软件产业是本世纪最具广阔前景的新兴产业之一。

作为一种“无污染,微能耗,高就业”的产业,软件产业不但能大幅度提高国家整体经济运行效率,而且自身也能形成庞大规模,拉升国民经济指数。

随着信息技术的发展,软件产业将会成为衡量一个国家综合国力的标志之一。

因此,发展和扶持软件产业,是一个国家提高国家竞争力的重要途径,也是参与全球化竞争所必须占领的战略制重点。

当前,随着全球化范式的转变,世界软件产业保持高速增长的同时,面临网络化.全球化.服务化.开放化的转型。

这给世界各国的软件产业带来了机遇的同时也带来了更严峻的挑战。

1.3研究内容

本文将设计一个基于C++的数字时钟,采用MFC的框架,将时钟,分钟,秒钟等清晰的显示出来。

利用VusualC++6.0开发坏境进行编译,调试等实现时钟的准确计时,该时钟有记录当前时间,整点报时,以及随时进行调整时间或者设置闹钟等功能。

1.4本文的结构

结构如图所示:

 

第二章开发环境及相关技术的介绍

2.1开发工具

(1)Microsoftwindows2000Peofessional

(2)MicrosoftVisualC++6.0

(3)MicrosoftDeveloperNetworkforVisualStudio.NET2003

(4)VisualAsssistX10.1.1301.0

2.2软件环境

2.2.1VisualC++6.0

VC6.0是微软推出的一款可视化编程工具,适用面非常广泛。

VC6.0包含了一个文本编辑器,资源编辑器,工程编译工具,一个增量连接器,源代码浏览器,集成调试工具以及一套联机文档。

使用VC6.0,可以完成创建调试及修改应用程序等的各种操作。

VC6.0采用标准的多窗口windows用户界面,并增加了一些新特性,使得开发环境更易于使用,用户很容易学会它的使用方法。

由于VC6.0是一个可视化的开发工具,可视化技术是当前发展迅速并引人注目的技术之一,他的特点是把原来抽象的数字、表格、功能逻辑等用直观的图形、图像的形式表现出来。

可视化编程是它的重要应用之一,所谓可视化编程是指在软件开发过程中,用直观的具有一定含义的图标按钮、图形化的对象取代原来手工的抽象的编辑、运行、浏览操作,软件开发过程表现为鼠标点击按钮盒拖放图形化的对象以及指定对象的属性、行为的过程。

这种可视化的编程方法易学易用,而且大大提高了工作效率。

VisualC++给应用程序的开发人员提供了丰富的功能,VisualC++通过MFC库提供了一个完整的应用程序的骨架,开发人员可以忽略应用程序的入口点和结束地点,并且可以忽略消息在应用程序的流动顺序,通过MFC的支持VisualC++也提供了Document-View的应用程序的结构,开发人员可以将数据保存在Document类的对象上,而在屏幕的显示的数据由View类的对象来负责。

通过MFC的支持VisualC++也实现了面向对象领域的RTTI(RunTimeTypeInformation)、DynamicCreation(动态创建)、(Persistence)永久保存机制,同时也实现了Windows下的MessageMapping(消息映射)和CommandRouting(命令传递),通过MFC的Cdatabase和Crecordset类VisualC++可以实现数据库的应用,由于MFC涉及到应用程序开发的各个领域,故VisualC++成为倍受欢迎的开发工具。

2.2.2MFC和C++

VisualC++所提供的MFC(MicrosoftFoundationClasses),实际上是微软提供的用于在C++环境下编写应用程序的一个框架和引擎,VC++是开发人员使用的专业C++SDK,专业软件开发平台,MFC是微软为VC++专配的。

它是WinAPI与C++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对WinOS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java编程语言函数本质上全部源于API,所以MFC是微软对API函数的专用C++封装。

从C到C++,在原有基础上扩充了6种特征:

虚函数、函数名和运算符重载、引用机制、常量、用户对自由存储的控制、改进了的类型检查、注释表示的多样化。

1990年5月Borland推出BorlandC++,1992年Microsoft推出MicrosoftC++,同时,DEC,IBM也推出了自己的C++。

直到1998年7月10日终于通过了编后为ISO/IEC14882的C++程序设计语言正式标准,改ISO标准同时也是ANSI的正式标准。

2.2.3开发平台Windows系统

MicrosoftWindows,是微软公司制作和研发的一套桌面操作系统,它问世于1985年,起初仅仅是MS-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

Windows采用了图形化模式GUI,比起以前的DOS需要键入指令使用的方式更为人性化。

随着电脑硬件和软件的不断升级,微软的Windows也在不断升级,从架构的16位、32位再到64位,系统版本从最初的Windows1.0到大家熟悉的Windows95、Windows98、Windows2000、WindowsXP、WindowsVista、Windows7等服务器企业操作系统,不断持续更新,微软一直在尽力与Windows操作系统的开发与完善。

本次数字时钟的操作是基于Win32平台,它是一个32位的操作系统。

2.2.4win32核心编程机制

Windows是一个多进程的图形窗口操作系统,Windows应用程序与DOS应用程序有很大的区别。

DOS应用程序采用顺序执行过程,而Windows是一个基于事件的消息(message)驱动系统。

消息驱动是Windows应用程序的核心,消息不仅可由Windows发出,它也可由应用程序本身或其他程序产生。

所有的外部响应(如改变窗口大小或移动、单机鼠标等),该动作就会触发一个相应的“事件”而被Windows先拦截,转换成消息后再发送到指定应用程序的消息队列。

从而使程序可以处理该事件。

处理完后等待下一个事件的发生。

2.2.5面向对象软件开发过程及思想

面向对象方法是一种把面向对象的理念应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。

对象是由数据和容许的操作组成的封装体,与客观实体有着直接对应关系,一个对象类定义了具有相似性质的一组对象。

而继承性是对具有层次关系的类的属性和操作进行共享的一种方式。

所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

面向对象方法的具体实施步骤如下:

第一,面向对象分析:

从问题的陈述入手,分析和构造所关心的显示世界问题域的模型,并用相应的符合系统表示。

模型必须是简洁、明确地抽象目标系统必须做的事,而不是如何做。

具体包括:

a.确定问题域,包括定义论域,选择论域,根据需要细化和增加论域

b.区分类和对象

c.定义属性

d.定义服务

第二,面向对象设计:

面向对象的设计与传统的以功能分解为主的设计有所不同。

a.应用面向对象分析,对用其他方法得到的系统分析的结果进行改进和完善;

b.设计交互过程和用户接口;

c.设计任务管理

d.设计全局资源,确定边界条件,确定任务或子系统的软、硬件分配;

第三,面向对象实现:

使用面向对象语言实现面向对象的设计相对比较容易。

传统的面向功能的方法学中,强调的是确定和分解系统功能,这种做法虽然是目标的最直接的实现方式,但是由于功能是软件系统中最不稳定、最容易变化的方面,因而使系统难以维护和扩展。

面向对象设计首先强调来自域的对象,然后围绕对象设置属性和操作。

用面向对象设计,其结构源于客观世界稳定的对象结构。

因而与传统相比,提高了软件的生产率,可靠性,易维护性。

2.2.6算法的设计

为了得到迅速、准确的时间,在时钟的设计中有多处加入了算法;在时钟界面的绘画函数中,通过准确计算表盘相邻的数字之间的角度,确定表盘上面的数字,从0,450;225,390;390,225;450,0;390,-225;225,-390;0,-450;-225,-390;-390,-225;-450,0;-390,225;-225,390;即1到12数字之间的角度,通过确定他们的角度画出的表盘界面清晰、准确、直观。

同时,在设计数字时钟时,对时间的计算坐标也运用了算法,通过将角度转化成弧2*3.1415926/360==0.0174533

即doublenRadians=(double)nDegrees*0.0174533;通过POINTpt[2]算式来计算坐标,如想获取此刻的坐标算式为:

pt[0].x=(int)(nLength*sin(nRadians));

pt[0].y=(int)(nLength*cos(nRadians));

如想获取下一秒位置的坐标,因为每秒跳过1/5.所以其坐标为:

pt[1].x=-pt[0].x/5;

pt[1].y=-pt[0].y/5;

算法在这次设计中最重要的是计算秒钟和分钟每秒走过的距离,这是本次设计的关键,只有准确的计算出他们走过的距离才能准确的得到当前时间,一分钟时针走的弧度是0.5度,经过一分钟分针走的是6度,经过1秒钟秒针也走的弧度是6度,故可以算出他们各自走的距离。

第三章数字时钟的功能和流程分析

3.1时钟的功能模块分析

通过了解其他的数字时钟,总结出基于VC++设计下的数字时钟能实现一些具体的功能,如下所示:

(1)基本功能--------实现数字时钟的表盘,时钟,分钟以及秒针的显示。

(2)计时功能--------显示当前的时间,并且秒针每秒跳动一次,分针每分钟跳动一次,时钟每小时跳动一次

(3)报时功能----------时钟在整点的时候具有报时的功能

3.2时钟的流程分析

第四章数字时钟的具体实现

4.1时钟的总体设计

本时钟设计界面简洁明了,没有太多花哨的东西。

编译程序后桌面将出现一个圆盘的时钟,时钟的背面是黑色调,从时钟盘里面能清晰看到时针,分针,秒针的变动,通过修改程序的设置,可以修改时钟的背景颜色;通过对时间程序的设置可以进行自由设置时间,如闹铃的设置;还可以进行时间的调试等。

但由于时间的仓促,时钟还有很多功能未能很好的实现,最后,通过轻轻点击鼠标退出时钟计时的界面。

4.2时钟的具体实现

4.2.1获取系统时间

为了让程序运行成功后能准确的显示当前系统时间,我们首先对定时器进行了设置;通过设置一个系统时间变量SYSTEMTIME,并将现在的系统时间的值赋给time变量从而让时钟准备显示当前时间;在设置时间时,时钟的进制转换为12进制,而分钟和秒钟的直接赋值。

程序实现:

caseWM_CREATE:

{

//设置定时器,每秒跳一下

:

:

SetTimer(hwnd,IDT_TIMER,1000,NULL);

SYSTEMTIMEtime;

:

:

GetLocalTime(&time);

s_nPreHour=time.wHour%12;

s_nPreMinute=time.wMinute;

s_nPreSecond=time.wSecond;

return0;

}

4.2.2根据时间绘制时钟

在时钟的表盘绘制时,我们首先通过设置坐标系,定义了三个变量hdc,s_cxClient,s_cyClient;然后进通过调用Draw函数行时钟的外观绘制,最后对时针,分针,秒针的绘制时,通过计算我们知道:

经过1个小时时针走了30度,经过1分钟分针走了6度同时经过1秒钟秒针也是走了6度,根据他们在一定时间内所走的角度进行绘制并对他们的颜色进行有区别的设置。

程序实现:

//创建绘图DC

hdc=:

:

BeginPaint(hwnd,&ps);

//设置坐标系x,y的范围

SetIsotropic(hdc,s_cxClient,s_cyClient);

//绘制时钟界面

DrawClockFace(hdc);

//绘制时分秒的初始位置\\

//经过1个小时时针走30度(360/12),经过1分钟时针走0.5度(30/60)

DrawHand(hdc,200,6,s_nPreHour*30+s_nPreMinute/2,RGB(0,255,128));

//经过1分钟分针走6度(360/60)

DrawHand(hdc,400,4,s_nPreMinute*6,RGB(250,0,0));

//经过1秒钟秒针走6度(360/60)

DrawHand(hdc,400,1,s_nPreSecond*6,RGB(0,0,255));

//:

:

SetTextColor(hdc,RGB(255,255,255));

//:

:

GetClientRect(hwnd,&rt);

//SetIsotropic(hdc,rt.right-rt.left,rt.bottom-rt.top);

//DrawClockFace(hdc);

:

:

EndPaint(hwnd,&ps);

return0;

}

4.2.3每过一秒更新时钟界面

程序的实现:

//定时器的处理,每过一秒钟就要重新绘制一下时钟的移动

caseWM_TIMER:

{

//绘图DC

HDChdc;

hdc=:

:

GetDC(hwnd);

//取得系统时间

:

:

GetLocalTime(&time);

//格式化时间字符串

wsprintf(t,"%d:

%2d:

%2d",time.wHour,time.wMinute,time.wSecond);

//设置时间字符串的背景

:

:

SetBkColor(hdc,RGB(0,0,255));

//设置字体颜色

:

:

SetTextColor(hdc,RGB(255,255,255));

//绘制电子时钟字符串的位置

RECTrect={0};

:

:

GetClientRect(hwnd,&rect);

//屏幕的最中间

:

:

TextOut(hdc,rect.right/2,rect.bottom/2,t,strlen(t));

//检验窗口是否是最小化方式,如果最小化,直接结束程序

if(:

:

IsIconic(hwnd))

return0;

//如果不是最小化,设置应用实例窗口的模式、像素、建立自定义坐标系等

//根据取得的屏幕坐标来创建坐标系

SetIsotropic(hdc,s_cxClient,s_cyClient);

//Set(hdc,s_cxClient,s_cyClient);

//颜色初始化

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1