优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

多时区时钟软件的设计与实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:


摘 要
进入21世纪以来,电脑用户数迅速增长,网上的跨国交流也越见频繁,由于时差的关系,不同国家的作息不同,因此需要经常进行时间的切换。
本系统主要论述如何利用VC++6.0应用程序开发环境和微软基础类库(MFC),设计与实现一个基于对话框的多时区时钟软件。该软件主要包括时钟显示,闹钟报时以及计时器功能。其中,时钟显示包含单时区时钟显示和多时区时钟显示,计时器可实现倒计时与正常计时。利用MFC中与定时器相关的函数,实现计时和时钟的定时刷新;运用模运算实现不同时区的时间转换;采用多线程技术使三个时钟同时运行。 【www.think58.com计算机毕业论文网】 think58.com [来源:http://think58.com]


关键词:VC++;MFC;时钟;多线程

think58好,好think58 [资料来源:THINK58.com]

[来源:http://think58.com]

[资料来源:www.THINK58.com]

think58 [资料来源:THINK58.com]

think58好,好think58

[资料来源:http://THINK58.com]

[资料来源:http://think58.com]

think58.com

[来源:http://www.think58.com]

[来源:http://www.think58.com]

copyright think58 [版权所有:http://think58.com]

本文来自think58

[资料来源:http://think58.com]

[来源:http://www.think58.com]

本文来自think58 [来源:http://think58.com]

think58 [资料来源:http://THINK58.com]

The design and realization of Multi_ time_ zone Clock

think58

[资料来源:THINK58.com]

[资料来源:http://THINK58.com]

Abstract
Since the 21stCentury, the number of computer users has increased quickly,the communication among different countries on Internet becomes more and more frequent. Because of the time difference, every country has its own timetable, you need to switch the time frequently.
This system has discussed how to design and realize a clock with Visual C++6.0 and Microsoft Foundation Class. This software principally contains these functions: the display of clocks, alarm clock and timer. The function of clock display contains the displays of single time zone clocks and multi time zone clocks. The timer can realize functions of countdown and clock. Take use of the functions related to the timer in Microsoft Foundation Class library to implement time and regular update of the clocks; the time conversion of different time zone could use modular arithmetic to realize; and taking advantage of multithreading could make three clocks run at the same time.

[资料来源:THINK58.com]


Key words: Visual C++; MFC; clock; multithreading

copyright think58 [资料来源:http://think58.com]

[资料来源:http://www.THINK58.com]

think58好,好think58 [版权所有:http://think58.com]

copyright think58

[来源:http://think58.com]

本文来自think58 [资料来源:http://think58.com]

copyright think58 [来源:http://www.think58.com]

[版权所有:http://think58.com]



目 录
1 引 言 1
1.1课题背景及意义 1
1.2 课题的研究方法 1
2 程序功能描述 1
2.1 时钟显示 1
2.1.1 单时钟显示 1
2.1.2 多时钟显示 1
2.2闹钟功能 1
2.3计时器 2
2.3.1 倒计时 2
2.3.2 正常计时 2
2.4 开发环境 2
2.4.1 开发环境 2
2.4.2 Visual C++ 6.0简介 2
3 主要开发技术 3
3.1 MFC简介 3
3.2 MFC的线程 3
3.2.1多线程概述 3
3.2.2 MFC的线程 4
4 程序功能实现 5
4.1单时钟显示 5
4.2多时钟显示 10
4.3闹钟报时 13
4.4计时器 17
4.4.1倒计时 17
4.4.2正常计时 20
结 论 22
参考文献 23
附 录 24
致 谢 26
声 明 27
1 引 言
1.1课题背景及意义
随着社会的发展,进入21世纪,个人电脑已经进入千家万户,人们已习惯于以互联网的方式交流,学习和娱乐。网上跨国交流也越见频繁,由于时差的关系,人们在浏览国外新闻时经常需要进行时间的换算。不同地区作息时间的不同也影响到人们的交流。因此,一种能显示多个时区时间的时钟程序,将给人们的生活与交流带来极大地方便。 think58 [资料来源:http://www.THINK58.com]
1.2 课题的研究方法
通过对VC++可视化编程的学习以及各地区时间差的查询,本文主要采用MFC控件和多线程编程技术,以及三个与时间有关的函数SetTimer()、OnTimer()和KillTimer(),设计实现一个包含计时器功能和闹钟功能的多时区时钟程序。

think58.com

[来源:http://www.think58.com]

[来源:http://www.think58.com]

2 程序功能描述
软件主要实现三个功能:时钟显示,闹钟以及计时器。具体功能如下
2.1 时钟显示
2.1.1 单时钟显示
实现三个时区时钟(北京时间,纽约时间,伦敦时间)的单独显示。在程序的主界面上,有一个日历,一个指针式时钟,一个时间显示框,一个确定按钮和一个取消按钮。
时钟切换:单击菜单[时钟显示]->[单时钟]->北京时间/纽约时间/伦敦时间。
整点报时:当时间为整点时,扬声器响相应次数。
日期显示:在日历控件上显示相应地区的当前日期。
单击[关闭]按钮,关闭主程序。
2.1.2 多时钟显示
实现三个时区时钟的同时显示及运行。
在主界面上,单击菜单[时钟显示]->[多时钟],弹出[多时钟显示]对话框。此对话框上有三个时钟同时运行,每个时钟有一个相对应的数字时间显示。
单击{关闭}按钮,将关闭此对话框。
2.2闹钟功能
  实现三个时区时钟的闹钟设置。
在主界面上单击{闹钟}菜单,将弹出[闹钟]对话框,此对话框有三个单选按钮,分别选择北京时间,纽约时间和伦敦时间,系统默认为北京时间,右边的指针式时钟以及数字时间随单选按钮而改变。在报时设置框中设置时间后,点击[确定],则闹钟设置完成。 think58好,好think58 [来源:http://www.think58.com]
点击[取消],可取消报时。
2.3计时器
实现以秒为单位的倒计时和正常计时功能。
2.3.1 倒计时
在主界面上单击菜单[计时器]->[倒计时],将弹出[倒计时]对话框,在编辑框中输入计时长度,单击[开始计时],编辑框置成不可用状态,倒计时开始。在[剩余时间]栏,将显示剩余时间。单击[重新计时],可取消倒计时,编辑框恢复可编辑状态。
2.3.2 正常计时
在主界面上单击菜单[计时器]->[正常计时],将弹出[正常计时]对话框,点击[开始计时]按钮,在流逝的时间栏将显示时间数,[开始计时]按钮呈不可用状态,而[重新计时]可用。点击[重新计时],取消计时,并将时间设为零秒,[开始计时]可用。

[来源:http://think58.com]

2.4 开发环境
2.4.1 开发环境
Visual C++ 6.0, Windows 2000/XP
2.4.2 Visual C++ 6.0简介
Visual C++是Microsoft公司推出的功能最强大、最复杂的语言产品之一,它是目前为止在W环境下进行大型软件开发的首选。其具有如下特点。
Visual C++的语法符合ANSI C++标准,并在此基础上针对性W操作系统增
加了一些语句。
集成了MFC(Microsoft Foundation Class)类库,MFC封装了Windows API函数和消息,使程序员可以使用MFC高效率地开发各种应用程序。
提供了MFC AppWizard,可方便地生成程序框架。
提供了基于MFC的ClassWizard,通过它可以轻松地完成对各种MFC类的使
用与维护。
Visual C++6.0作为Visual Studio家族中的一员,是微软公司推出的以C++语言为基础,开发Win32应用程序(Windows 95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容。 内容来自think58 [资料来源:http://THINK58.com]

3 主要开发技术
程序主要采用MFC控件和多线程技术实现。
3.1 MFC简介
MFC,微软基础类(Microsoft Foundation Classes),是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是WinOS下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个输助软件开发包,MFC类是微软为VC++专配的。
MFC是Win API与C++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制里。
MFC 是一个很大的、扩展了的 C++ 类层次结构,它能使开发 Windows应用程序变得更加容易。MFC 是在整个 Windows 家族中都是兼容的,也就是说,无论是 Windows3.x、Windows95 还是 Windows NT,所使用的 MFC 是兼容的。每当新的 Windows 版本出现时,MFC 也会得到修改以便使旧的编译器和代码能在新的系统中工作。MFC 也会得到扩展,添加新的特性、变得更加容易建立应用程序。

内容来自think58

[来源:http://think58.com]

[资料来源:http://THINK58.com]

3.2 MFC的线程
3.2.1多线程概述
进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程终止了,进程也就随之终止。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,好像这些线程都在同时运行。
3.2.2 MFC的线程
MFC明确区分两种线程:用户界面线程(User interface thread)和工作者线程(Worker thread)。用户界面线程一般用于处理用户输入并对用户产生的事件和消息作出应答。工作者线程用于完成不要求用户输入的任务,如耗时计算。 think58.com

[版权所有:http://think58.com]


线程的创建
1)创建用户界面线程
通过以下步骤创建一个用户界面线程:
• 从CWinThread派生一个有动态创建能力的类。使用DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE宏来支持动态创建。
• 覆盖CWinThread的一些虚拟函数,其中,函数InitInstance是必须覆盖的,ExitInstance通常是要覆盖的。
• 使用AfxBeginThread创建MFC线程对象和Win32线程对象。如果创建线程时没有指定CREATE_SUSPENDED,则开始执行线程。
• 如果创建线程是指定了CREATE_SUSPENDED,则在适当的地方调用函数ResumeThread开始执行线程。
2)创建工作者线程
程序员不必从CWinThread派生新的线程类,只需要提供一个控制函数,由线程启动后执行该函数。然后,使用AfxBeginThread创建MFC线程对象和Win32线程对象。如果创建线程时没有指定CREATE_SUSPENDED(创建后挂起),则创建的新线程开始执行。如果创建线程是指定了CREATE_SUSPENDED,则在适当的地方调用函数ResumeThread开始执行线程。虽然没有从CWinThread派生类,但是MFC给工作者线程提供了缺省的CWinThread对象。
线程的结束
AfxEndThread用来结束调用它的线程:它将清理本线程创建的MFC对象和释放线程局部存储分配的内存空间;调用CWinThread的虚拟函数Delete;调用“C”的结束线程函数_endthreadex释放分配给线程的资源,但是不关闭线程句柄。CWinThread::Delete的缺省实现是:如果本线程的成员函数m_bDelete为TRUE,则调用“C”运算符号delete销毁MFC线程对象自身(delete this),这将导致线程对象的析构函数被调用。若析构函数检测线程句柄非空则调用CloseHandle关闭它。

copyright think58 [资料来源:www.THINK58.com]


think58好,好think58 [资料来源:THINK58.com]