Java课程设计时钟图形模拟
课 程 设 计 任 务 书 专 业 通信工程 班 级 13级四班 姓 名 张凯铭 设 计 起 止 日 期 设计题目:时钟图形模拟 设计任务(主要技术参数): 硬件环境: CPU:Pentium 2.8GHz以上 内存:256MB以上 硬盘空间:80G以上 软件环境: (1)操作系统:Windows XP (2)开发软件:JDK,JCreator 实现功能: 通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。 指导教师评语: 成绩: 签字: 年 月 日 目 录 1 设计内容及要求1 1.1 设计内容1 1.2 设计目的及意义1 2 概要设计1 2.1功能简介1 2.2功能说明:1 2.3 总体程序框图2 3 设计过程3 3.1各个模块程序流程图3 3.2运行界面及关键代码4 4设计结果与分析6 4.1设计结果6 4.2分析6 5 总结7 6 参考文献7 附程序清单及源程序8 1 设计内容及要求 1.1 设计内容 通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。 1.2 设计目的及意义 设计目的及意义:熟悉Visual c++ 6.0软件的应用,C语言相关函数,语句的学习,查找资料代码等,编程、调试、运行、效果显示调整,完成上传,熟悉编程语言,了解程序运行以及图像显示等C语言的应用,通过编程实现既定功能。培养自学能力,独立思考能力,将理论形成实际运用,同时可以掌握下列运算符的使用: 1 .数据类型(整形、实型、字符型、指针、数组、结构等)。 2 .运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等)。 3 .程序结构(顺序结构、判断选择结构、循环结构) 5 .复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。 6 .学会编制结构清晰、风格良好、数据结构适当的C语言程序。 2 概要设计 2.1功能简介 实现功能如下: (1)在屏幕上最终显示一个图形时钟(用程序绘制一个与时钟样式相似即可),能模拟机械钟表行走。 (2)数字式显示时间与指针式显示时间一致,且各指针运动规律正确。 (3)能准确的利用数字显示时间和日期。 (4)按ESC可以退出程序。 2.2功能说明: 内容:指针式时钟模块完成在屏幕上显示一个活动时钟,模拟机械钟表行走,时针,分针,秒针不同颜色且顺时针旋转,获取系统时间;数字式时钟模块完成显示时间格式年月日时分秒,小时为24小时制,分和秒为60进制与指针式的时钟显示时间同步并获取系统时间。 说明:指针顺时针旋转;指针式的时钟表盘为圆形;圆周上分布均匀的12个刻度;有3个长度不同的指针,即时针,分针,秒针的运动具有规律性;数字钟显示时间格式年月日时分秒,小时为24进制,分和秒为60进制;指针式的时钟与数字式的时钟显示时间同步;其主要的设计思想如下: 1 . 确定秒针的走时,将圆分成60份每过一秒,秒重要转过1/60个园,即一等份。 2 . 确定分针真的走时,将圆分成60份每过一分,分针要转过1/60个圆,即一等份分针自己走过的再加秒针的,才是此四分钟的位置。 3 . 时钟走动与系统时间联系:每过一秒画出秒针,并且除去前一秒的秒针,分针和 秒针一样,画线函数与时间联系使用变量。 4 . 设置横纵坐标及表针:X = a*cos(b*pi/180)+300;Y=a*sin(b*pi/180)+240; 2.3 总体程序框图 模拟时钟转动程序 指针式时钟 数字式时钟 (系统模块图) 首先,先画出个钟的大致轮廓。从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。这个轮廓就已经完成了。然后,为了更加这个钟的实用性。就通过获取系统时间来结合实际意义,这是最简单,最好的方法。从应用上,它显示的是实际的时间,增强了可用性;从编程上,不用再复杂地再编一个更时间一样的函数来,减少程序的篇幅、复杂性和编程者的工作量。接着顺带利用时间的变量名来画时针,分针,秒针。最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动。 3 设计过程 3.1各个模块程序流程图 Start 初始化图形系统 设置窗体的背景色、前景色及画笔 画出主体框架的边直线、边角弧线 画出时钟的框架、标题及时分秒的刻度;绘制数字式时钟下的数字时钟的边框架 调用时钟处理程序 获取当前时间并显示 调用消息处理函数刷新窗口显示(1秒) 创建数字钟字体 对数字钟进行输出 判断修改是增加还是减少 Esc(任意键) 调出digitalClock End 3.2运行界面及关键代码 3.2.1运行结果 在桌面显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。 3.2.2关键代码分析及说明 (1)本系统中主要的数据结构就是time结构体 struct time { unsigned char m;/*分钟*/ unsigned char h/*小时*/ unsigned char s/*秒*/ } time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。 ·unsigned char m:保存分钟值。 ·unsigned char h:保存小时值。 ·unsigned char s:保存秒数。 (2)全局变量 下面对程序用到的全局变量及数组进行说明。 ·int h,m,s:此3个全局变量分别用来保存小时、分钟、秒数。 ·int x,x1,x2,y,y1,y2:保存数字时钟中小时、分、秒在屏幕中显示的坐标值。 ·struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。 (3)程序流程 系统的执行应从运行开始,显示界面正常运行,直到用户选择退出系统为止。 (4)流程图功能描述 ①画圆模板: #inlude “graphics.h” #inlude ”math.h ” Void init() Circle(300,240,200); ②画时间刻线模块: For(i=0;i<=60;i++) { If(i%5==0) L=15;else L=5; X1=200*sin()+300; Y1=200*cos()+240; } ③时间模块:Gettime(d) 4设计结果与分析 4.1设计结果 运行程序后在屏幕上显示出一时钟,钟上的时间与电脑上