Java课程教学设计-时钟图形模拟

合集下载

JAVA课程设计-闹钟的设计与实现--11计科本01班--张慧

JAVA课程设计-闹钟的设计与实现--11计科本01班--张慧

西安思源学院Java 课程设计报告课程名称:JAVA语言程序设计设计题目:简单小闹钟的设计与实现学院:电子信息工程学院专业班级:计算机科学与技术统本01班学号: 111102020103姓名:张慧小组成员: 谢莉萍时间: 2013年6月29日目录一、项目设计1.1设计题目 (2)1.2设计思路 (2)1.3设计内容 (2)1.3.1 Clock类的UML简图 (2)1.3.2 各方法功能描述列表 (2)二、算法描述2.1 基本算法描述 (3)2.2 主要模块算法描述 (3)2.2.1当前动态时间的显示的设计与实现 (4)2.2.2闹钟功能的实现 (4)2.2.3闹铃功能的实现 (5)三、程序源代码 (6)四、运行结果截图 (9)五、总结 (10)闹钟的设计与实现一、项目设计1.1题目描述:结合JAVA图形界面的知识设计一个简单的小闹钟1.2设计思路百度下载的闹钟程序设计,参考别人的程序,通过改编,并添加一些自己的程序,最终实现小闹钟的运行.本次设计要求画出时钟的面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能,可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。

1.3设计内容1.3.1画出Clock类的UML简图1.3.2各方法功能描述列表二、算法描述2.1基本算法描述本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。

java课程设计钟表

java课程设计钟表

java课程设计钟表一、教学目标本章节的教学目标是使学生掌握Java编程语言的基本语法和编程思想,通过制作一个钟表程序,让学生能够理解和运用Java中的面向对象编程思想,熟练使用Java语言实现图形用户界面。

1.理解Java编程语言的基本语法。

2.掌握Java中的面向对象编程思想。

3.熟悉Java语言实现图形用户界面的方法。

4.能够使用Java编程语言编写简单的程序。

5.能够使用Java编程语言实现一个基本的钟表程序。

6.能够运用面向对象编程思想分析和解决问题。

情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。

2.培养学生的团队合作意识,学会与他人分享和交流。

3.培养学生的问题解决能力,勇于面对和克服困难。

二、教学内容本章节的教学内容主要包括Java编程语言的基本语法、面向对象编程思想和图形用户界面设计。

1.Java编程语言的基本语法:包括数据类型、变量、运算符、控制语句等。

2.面向对象编程思想:包括类、对象、封装、继承、多态等。

3.图形用户界面设计:包括Swing组件、事件处理、布局管理等。

三、教学方法为了达到本章节的教学目标,将采用多种教学方法相结合的方式进行教学。

1.讲授法:讲解Java编程语言的基本语法和面向对象编程思想。

2.案例分析法:通过分析钟表程序的案例,让学生理解和掌握Java语言实现图形用户界面的方法。

3.实验法:让学生动手编写和运行Java程序,加深对Java编程语言的理解和掌握。

四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:Java编程语言的相关教材。

2.多媒体资料:包括PPT课件、视频教程等。

3.实验设备:计算机、网络等。

通过以上教学资源的支持,将能够丰富学生的学习体验,提高学生的学习效果。

五、教学评估本章节的教学评估将采用多元化的评估方式,以全面客观地评价学生的学习成果。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和积极性。

JAVA实验报告二(运用JavaFx实现时钟动画)

JAVA实验报告二(运用JavaFx实现时钟动画)

JA V A实验报告实验二运用JavaFx实现时钟动画班级:计算机科学与技术1306学号:***********名:***指导教师:***2014 年12 月 1 日目录一.概述 (3)二.总体方案设计 (4)三.详细设计 (4)四.程序的调试与运行结果说明 (5)五.课程设计总结 (7)六.后记 (7)七.附录 (7)参考文献 (9)一概述1.课程设计的目的设计一个带有指针、数字时钟,并且具有秒表功能,能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。

了解和掌握JavaFx基本概念和用法。

把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。

在实际的操作中学习及运用还没有学过的知识。

最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累。

java课程具有比较强的实践性。

上机实验是一个重要的教学环节。

一般情况下学生能够重视实验环节,对于编写程序上机练习具有一定的积极性。

但是容易忽略实验的总结,忽略实验报告的撰写。

对于一名大学生必须严格训练分析总结能力、书面表达能力。

需要逐步培养书写科学实验报告以及科技论文的能力。

拿到一个题目,一般不要急于编程。

正确的方法是:首先理解问题,明确给定的条件和要求解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,按照面向对象的程序设计思路,逐一地解决子问题。

2.课程设计的要求基于JavaFx画出如下所示可动态变化的时钟。

要求按‘start’按钮可启动时钟,按‘stop’按钮可让时钟暂停。

时钟初始时显示当前时间并开始动态变化。

在设计的过程中,需要用到awt组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。

还有自己还没有掌握的2D绘制图形,以及绘制各指针及之间的关系。

为了完成自己的设计,必须API、教材以及相关的资料来解决这些尚未掌握的问题。

在实验一的图形基础上,再设置两个按钮,分别为“Start”和“Stop”按钮,控制时钟的运动和暂停,再通过事件函数来监听事件从而改变事件。

利用JAVA实现一个时钟的小程序

利用JAVA实现一个时钟的小程序

JAVA课程项目报告项目题目:利用JAVA实现一个小时钟的程序专业班级:10软件工程利用JAVA实现一个时钟的小程序1.软件开发的需求分析在当今的信息时代,时钟已经成为人们生活中必不可少的应用工具,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。

使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。

面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

此次课程设计的题目为简单的小时钟程序设计,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。

使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

2.具体实现2.1设计思路Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。

Java去掉了C++语言的许多功能,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。

这将减少平常出错的50%。

而且,Java很小,整个解释器只需215K的RAM。

因此运用JAVA程序编写小时钟程序,实现简单显示时间的功能。

本次课程设计做的是Java简单小时钟,它是图形界面、线程、流与文件等技术的综合应用,其界面主要采用了java.awt包,javax.swing包等。

程序实现了小时钟的基本功能。

2.2设计方法在设计简单小时钟时,需要编写5个Java源文件:Server.java、Objecting.java、LogIn.java、ClientUser.java、Client.java。

JAVA课程设计 时钟

JAVA课程设计 时钟

辽宁工业大学JA V A程序设计课程设计(论文)题目:时钟院(系):软件学院专业班级:软件技术班学号:学生姓名:指导教师:***教师职称:助教起止时间: 2009.12.1至2009.12.16程序设计专题(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计主要内容 (2)2.2概要设计 (2)2.2.1自定义类说明 (2)2.3详细设计 (3)2.4测试分析 (16)2.4.1程序运行情况 (16)2.4.2程序异常处理 (16)第3章课程设计总结 (17)参考资料18第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。

1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

java钟表课程设计

java钟表课程设计

java钟表课程设计一、课程目标知识目标:1. 学生能理解并掌握Java语言中面向对象编程的基本概念,如类、对象、属性、方法等;2. 学生能够运用Java语言编写一个简单的钟表程序,实现时间显示、时间更新等功能;3. 学生了解并掌握Java中事件处理机制,实现钟表界面的交互功能。

技能目标:1. 学生能够运用所学知识,独立完成一个具有基本功能的钟表程序设计;2. 学生通过实际编程操作,提高问题分析、程序设计、调试与优化的能力;3. 学生能够在团队协作中发挥自己的优势,与他人共同完成项目任务。

情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣和热情,增强学习动力;2. 学生在课程实践中,体验编程解决问题的成就感,提高自信心;3. 学生在团队协作中,学会相互尊重、沟通与协作,培养良好的团队精神。

课程性质:本课程为实践性较强的课程,以项目驱动的方式进行教学,使学生能够将所学知识应用于实际项目中。

学生特点:本年级学生已经具备一定的Java编程基础,具有较强的学习能力和探究精神,对实际项目有较高的兴趣。

教学要求:结合学生特点,课程设计需注重实践操作,鼓励学生独立思考和团队协作,提高编程能力和解决问题的能力。

通过分解课程目标为具体学习成果,为后续教学设计和评估提供依据。

二、教学内容1. 面向对象编程基础:- 类与对象的概念及其关系- 方法定义与调用- 属性的定义与使用2. Java界面设计:- Java Swing图形用户界面- 常用组件的使用(如按钮、文本框等)- 布局管理器的应用3. 事件处理机制:- 事件的概念与分类- 事件监听器与事件处理方法- 常用事件处理机制的应用4. 钟表程序设计:- 钟表界面设计- 时间更新功能的实现- 闹钟功能的添加与实现5. 项目实践与团队协作:- 学生分组,明确项目任务与分工- 各组制定项目计划,进行项目实践- 项目成果展示与评价教学内容安排与进度:第一周:面向对象编程基础,类与对象的概念,方法的定义与调用第二周:Java界面设计,Swing组件的使用,布局管理器的应用第三周:事件处理机制,编写简单的事件处理程序第四周:钟表程序设计,实现时间显示与更新,添加闹钟功能第五周:项目实践与团队协作,完成项目任务,进行成果展示与评价教材章节关联:《Java程序设计》第四章:面向对象编程基础第五章:Java图形用户界面设计第六章:事件处理三、教学方法1. 讲授法:- 对于面向对象编程基础、Java界面设计、事件处理机制等理论知识,采用讲授法进行教学,为学生提供清晰的知识框架和概念体系。

java秒表课程设计

java秒表课程设计

java秒表课程设计一、课程目标知识目标:1. 理解并掌握Java中线程的基本概念和使用方法,包括线程的创建、启动和同步。

2. 学会使用Java编程语言实现一个秒表功能,包括开始、停止、暂停、继续和重置等操作。

3. 了解并掌握Java中的事件处理机制,实现秒表界面与用户交互功能。

技能目标:1. 能够运用所学知识独立编写Java程序,实现一个具有基本功能的秒表。

2. 培养学生分析问题、解决问题的能力,通过编写代码解决实际应用问题。

3. 提高学生的团队协作能力,通过小组讨论、分工合作完成课程设计。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学生学习Java的热情,增强自信心。

2. 培养学生具备良好的编程习惯,注重代码规范,遵循编程道德。

3. 培养学生的创新意识,鼓励学生尝试不同的解决方案,勇于挑战自我。

本课程设计针对的是具有一定Java基础的学生,旨在巩固和拓展学生对Java 编程的掌握程度。

课程性质为实践性较强的课程设计,要求学生在学习过程中充分发挥主动性和创造性。

根据学生特点和教学要求,课程目标分解为具体的学习成果,以便于后续教学设计和评估。

通过本课程的学习,学生将能够独立完成一个Java秒表项目,提高编程实践能力和团队协作能力。

二、教学内容本章节教学内容主要包括以下几部分:1. 线程基本概念与使用方法:- 线程的创建与启动- 线程同步与线程通信- 线程的生命周期2. Java图形用户界面(GUI)编程:- Swing组件的使用- 事件处理机制- 布局管理器3. 秒表功能实现:- 秒表功能需求分析- 秒表界面设计- 逻辑代码编写4. 课程项目实践:- 小组分工与协作- 编程规范与调试技巧- 项目展示与评价教学内容安排和进度如下:第一周:线程基本概念与使用方法学习,完成相关练习题。

第二周:Java图形用户界面(GUI)编程学习,学习Swing组件的使用和事件处理。

第三周:分析秒表功能需求,设计秒表界面,编写逻辑代码。

java课程设计闹钟

java课程设计闹钟

java课程设计闹钟一、教学目标本章节的教学目标分为三个部分:知识目标、技能目标和情感态度价值观目标。

知识目标:学生需要掌握Java基础语法、面向对象编程思想、事件处理机制等知识。

技能目标:学生能够运用Java语言实现一个简单的闹钟程序,具备分析和解决问题的能力。

情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习和创新意识。

二、教学内容本章节的教学内容主要包括以下几个部分:1.Java基础语法:变量、数据类型、运算符、控制结构等。

2.面向对象编程:类、对象、封装、继承、多态等。

3.事件处理机制:事件监听器、事件处理函数等。

4.闹钟程序实现:分析需求、设计界面、编写代码、调试运行等。

三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式。

1.讲授法:用于讲解Java基础语法和面向对象编程知识。

2.案例分析法:通过分析实际案例,让学生理解事件处理机制和闹钟程序的实现。

3.实验法:让学生动手编写和运行代码,培养实际操作能力。

四、教学资源本章节的教学资源包括教材、多媒体资料和实验设备。

1.教材:用于引导学生学习Java基础语法和面向对象编程知识。

2.多媒体资料:用于辅助讲解和展示案例分析,增强学生的学习兴趣。

3.实验设备:为学生提供实践操作的平台,培养实际编程能力。

五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

2.作业:布置与章节内容相关的编程作业,评估学生的理解和应用能力。

3.考试:期末进行闭卷考试,全面测试学生对Java基础语法、面向对象编程和事件处理机制的掌握程度。

六、教学安排本章节的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生系统地掌握知识。

2.教学时间:共计30课时,每课时45分钟,包括课堂讲解、案例分析和实验操作。

3.教学地点:教室和计算机实验室,以便学生进行实际操作。

Java模拟时钟制作案例

Java模拟时钟制作案例

美化指针

调用AffineTransform
public AffineTransform sc =new AffineTransform(); sc.setToRotation(Math.PI/30f*(s1-15),125,125); g2.fill(tick_s.createTransformedShape(sc));
程序代码

主类
程序代码
程序代码
运行效果

运行效果
面板刻度


绘制刻度
l1=new Line2D.Double[60]; for(int i=0 ;i<l1.length;i++) { double b[]=new double[4]; int j; if(i%5==0){ if(i%15==0){ j=50; }else { j=60; }
运行效果程序代码程序代码程序代码程序代码程序代码代码优化与改进以上的代码已经能基本完成时钟的功能
Java模拟时钟制 作案例
Java开发实例
需求分析
模拟时钟,把它放在程序中可以给人一种清 新的感觉。比起数字时钟来说,有一定的真 实感怀旧情结。看到秒针一下一下的转动, 时时提醒,时间在不断流逝,要我们珍惜时 间。 子在川上曰:逝者如斯夫。
坐标的转换,使用方法
调用方法:
p0=xy(125,125,75,s1*6); s.x1=p0.getX(); s.y1=p0.getY(); p0=xy(125,125,65,m1*6); m.x1=p0.getX(); m.y1=p0.getY(); p0=xy(125,125,55,(h1*30+m1/2f)); h.x1=p0.getX(); h.y1=p0.getX();

java时钟小程序课程设计

java时钟小程序课程设计

java时钟小程序课程设计一、课程目标知识目标:1. 理解Java编程语言中时间处理的基本概念;2. 掌握使用Java语言实现时钟小程序的核心语法,如线程控制、事件处理等;3. 学习Java中日期时间API的使用,如java.util.Calendar和java.time包;4. 了解界面设计中布局管理器的应用。

技能目标:1. 能够编写Java程序,实现一个具有基本计时功能的时钟小程序;2. 能够运用所学知识,对时钟小程序进行界面设计和优化;3. 学会使用调试工具,进行程序错误排查和修正;4. 培养问题解决和编程实践能力,能够独立完成时钟小程序的开发。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和探究精神;2. 增强学生的团队合作意识,培养在项目开发中相互协作的能力;3. 强化学生的程序逻辑思维,提高分析问题和解决问题的能力;4. 培养学生严谨的科学态度和良好的编程习惯。

本课程设计针对高年级学生,他们在前期课程中已具备Java语言基础,能够适应本课程的知识深度。

课程性质为实践性、综合性课程,要求学生将理论知识与实际操作相结合,通过完成时钟小程序的设计与实现,达到巩固知识、提升技能、培养情感态度价值观的目标。

通过具体学习成果的分解,教师可进行有针对性的教学设计和评估,确保课程目标的实现。

二、教学内容1. Java基本语法复习:变量声明与使用、数据类型、运算符、控制流程(条件语句、循环语句);2. 线程概念与使用:线程的创建、启动、同步,以及线程的生命周期;- 教材章节:第8章“多线程编程”;3. Java时间处理API介绍:java.util.Calendar类的使用,java.time包中LocalTime、LocalDate、LocalDateTime类的使用;- 教材章节:第11章“日期和时间处理”;4. 界面设计基础:Swing图形用户界面设计,布局管理器介绍及应用;- 教材章节:第14章“Swing用户界面设计”;5. 时钟小程序实现:设计并实现一个简单时钟界面,完成计时功能;- 结合教材实例,进行拓展教学;6. 程序调试与优化:使用调试工具进行程序错误查找,优化程序性能;- 教材章节:第16章“程序调试与优化”;7. 项目实践:小组合作,完成一个具有附加功能(如闹钟、计时器等)的时钟小程序开发。

java课程设计闹钟

java课程设计闹钟

java 课程设计闹钟一、教学目标本章节的教学目标为:知识目标:使学生掌握Java编程语言的基本语法和结构;让学生了解并掌握面向对象编程的基本概念和方法。

技能目标:培养学生运用Java语言进行程序设计的能力;培养学生运用面向对象的思想解决实际问题的能力。

情感态度价值观目标:培养学生对计算机科学的兴趣和热情;培养学生勇于探索、积极思考的科学精神。

二、教学内容本章节的教学内容为:1.Java编程语言的基本语法和结构,包括数据类型、运算符、控制结构等;2.面向对象编程的基本概念,包括类、对象、继承、多态等;3.Java编程语言的应用实例,包括计算器程序设计、闹钟程序设计等。

三、教学方法本章节的教学方法为:1.讲授法:通过讲解Java编程语言的基本语法和结构,让学生掌握编程的基本知识;2.案例分析法:通过分析具体的Java编程实例,让学生了解编程语言的应用;3.实验法:让学生动手编写Java程序,培养学生的编程能力和实践能力。

四、教学资源本章节的教学资源为:1.教材:《Java编程语言》;2.参考书:《Java核心技术》;3.多媒体资料:Java编程语言的教学视频;4.实验设备:计算机。

五、教学评估本章节的教学评估方式为:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:通过学生提交的作业评估学生的编程能力和理解程度;3.考试:通过期末考试评估学生对Java编程语言的掌握程度。

评估方式应客观、公正,能够全面反映学生的学习成果。

六、教学安排本章节的教学安排为:1.教学进度:按照教材的章节顺序进行教学,确保学生在每个阶段都能够掌握相应的知识点;2.教学时间:安排每周固定的课时进行教学,保证学生有足够的时间学习和发展;3.教学地点:选择适合编程实践的实验室或者教室,提供给学生良好的学习环境。

教学安排应合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。

七、差异化教学本章节差异化教学的内容为:1.根据学生的学习风格,提供不同的教学方式,如视觉教学、动手实践等;2.根据学生的兴趣,提供不同的编程项目,如游戏开发、设计等;3.根据学生的能力水平,提供不同难度的编程任务,让学生能够挑战自我,不断提高。

-java模拟时钟课设

-java模拟时钟课设

图2运行界面
设计分析
本程序可以在HTML文件中设置,变化出多姿多彩的时钟模型,在的源代码的编写过程中运用了paint( )、repaint( )、update( )等方法。

时钟的绘制采用双缓冲图形处理机制,即先在缓冲区内绘制图形,再把图形显示到网页上可以有效的防止闪烁。

时钟的不断绘制是通过一个线程不断读取系统时间,如果时间有变化即绘制。

采用一个线程绘制。

遇到的问题和解决方法:在用JAVA编写程序时,我遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查看了有关模拟时钟的相关描述,还向同学请教了,翻阅了相关的书籍。

程序异常处理:程序在运行过程中可能会出现错误且断正常的控制流,这就是异常处理。

不提供处理异常代码的程序可能会在不期望终止的时候终止,甚至可能引发严重问题。

Java的异常处理子系统可以为程序员提供处理运行是错误即异常处理的能力,而且比其他语言提供的异常处理能力在形式上更简洁、更灵活,使用Java的异常处理子系统,程序员可以开发出比较健壮的程序。

声明异常:声明异常是当方法执行时,声明方法中可能出现的错误。

因为任何代码都可能出现系统错误和运行错误,所以Java不需要在方法中显示声明Error和RuntimeException,但是如果方法抛出其它异常,则必须在方法中显示声明它们。

可以使。

Java实现动态模拟时钟

Java实现动态模拟时钟

Java实现动态模拟时钟本⽂实例为⼤家分享了java动态模拟时钟的具体代码,供⼤家参考,具体内容如下应⽤名称:java动态模拟时钟⽤到的知识:javaGUI,java 绘图开发环境:win10+eclipse+jdk1.8功能说明:通过java绘图画出⼀个虚拟的动态时钟效果图:源代码:import javax.swing.*;import java.awt.*;import java.util.*;import ng.Thread;import java.text.DecimalFormat;public class StillClock extends JPanel {/*** @param args*/private int hour;private int minute;private int second;//构造函数public StillClock() {setCurrentTime();}//返回⼩时public int getHour() {return hour;}public int getMinute() {return minute;}public int getSecond() {return second;}//绘制时钟protected void paintComponent(Graphics g) {super.paintComponent(g);//初始化int clockRadius = (int)(Math.min(getWidth(), getHeight()) * 0.8 * 0.5);int xCenter = getWidth() / 2;int yCenter = getHeight() / 2;//画圆g.setColor(Color.black);g.drawOval(xCenter - clockRadius, yCenter - clockRadius, 2 * clockRadius, 2 * clockRadius);g.drawString("12", xCenter - 5, yCenter - clockRadius + 15);g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);//画秒针int sLength = (int)(clockRadius * 0.8);int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI / 60)));int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI / 60)));g.setColor(Color.red);g.drawLine(xCenter, yCenter, xSecond, ySecond);//画分针int mLenth = (int)(clockRadius * 0.65);int xMinute = (int)(xCenter + mLenth * Math.sin(minute * (2 * Math.PI / 60)));int yMinute = (int)(xCenter - mLenth * Math.cos(minute * (2 * Math.PI / 60)));g.setColor(Color.blue);g.drawLine(xCenter, yCenter, xMinute, yMinute);//画时针int hLength = (int)(clockRadius * 0.5);int xHour = (int)(xCenter + hLength * Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));int yHour = (int)(yCenter - hLength * Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));g.setColor(Color.green);g.drawLine(xCenter, yCenter, xHour, yHour);//画数字时钟g.setColor(Color.black);DecimalFormat s=new DecimalFormat("00");g.drawString(s.format(getHour()) + ":" + s.format(getMinute()) + ":" + s.format(getSecond()), xCenter - 22, yCenter - clockRadius - 15); }public void setCurrentTime() {Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);}public static void main(String[] args) {// TODO Auto-generated method stubJFrame frame = new JFrame("DiaplayClock");frame.setResizable(false);frame.setTitle("DiaplayClock");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,350);frame.setVisible(true);while(true) {StillClock clock = new StillClock();frame.getContentPane().add(clock);clock.setVisible(true);frame.validate();try {Thread.sleep(1000);}catch (InterruptedException e) {e.printStackTrace();}clock.setVisible(false);frame.remove(clock);clock = null;frame.validate();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

JAVA实验报告一(运用JavaFx画时钟)

JAVA实验报告一(运用JavaFx画时钟)

JA V A实验报告实验一运用JavaFx画时钟班级:计算机科学与技术1306 学号:***********名:***指导教师:***2014 年12 月 1 日目录一.概述 (3)二.总体方案设计 (4)三.详细设计 (4)四.程序的调试与运行结果说明 (5)五.课程设计总结 (6)六.后记 (6)七.附录 (6)参考文献 (11)一概述1.课程设计的目的1、设计一个带有指针、数字时钟,能方便我们的使用和操作,为我们以后的使用创造一个良好的平台。

了解和掌握JavaFx基本概念和用法。

2、把自己所学的理论知识运用到实际操作中去,以此来发现自己的不足,及时的改正。

在实际的操作中学习及运用还没有学过的知识。

最后在调试与测试的过程还可以提升自己的改错能力也是自己经验的积累。

2.课程设计的要求编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。

用菜单选项或按钮设置时间和秒表。

时间不必与机器系统时间相同,只要可任意设置即可。

在设计的过程中,需要用到awt组件和Swing容器与组件,布局管理器,事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。

还有自己还没有掌握的2D绘制图形,以及绘制各指针及之间的关系。

为了完成自己的设计,必须API、教材以及相关的资料来解决这些尚未掌握的问题。

老师的要求就是尽量实现设计的功能,尽可能的锻炼自己的动手能力,提高自己的基础知识。

3.课程设计的主要设计思想先是利用构造函数创建一个长为500,宽为200的窗体,颜色设置为black,并把窗体设计为固定大小,并且创建一个监听事件进行监听。

随即创建一个时间计数器,最后实现ActionListener接口的实现方法。

利用2D绘制图形的方法,在窗体左方画一个圆,并且绘制时钟上的12个数字刻度,然后利用Calendar类提供的HOUR,MINUTE,SECOND和MILLISECOND方法获得现在的时间,在计算时间和度数的关系;在利用2D绘制图形的方法绘制出各指针,并设置不同的颜色。

Java课程设计-时钟图形模拟

Java课程设计-时钟图形模拟

课程设计任务书目录1 设计内容及要求 01.1 设计内容 01.2 设计目的及意义 02 概要设计 02.1功能简介 02.2功能说明: (1)2.3 总体程序框图 (1)3 设计过程 (2)3.1各个模块程序流程图 (2)3.2运行界面及关键代码 (4)4设计结果与分析 (7)4.1设计结果 (7)4.2分析 (8)5 总结 (8)6 参考文献 (9)附程序清单及源程序 (10)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进制与指针式的时钟显示时间同步并获取系统时间。

Java时钟小程序课课程设计

Java时钟小程序课课程设计

Java时钟小程序课课程设计一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:使学生掌握Java编程语言的基本语法和操作,了解面向对象编程的基本概念,掌握使用Java编写简单的时钟小程序的方法。

2.技能目标:培养学生运用Java编程语言解决实际问题的能力,提高学生的编程思维和动手实践能力,使学生能够独立编写并调试简单的Java程序。

3.情感态度价值观目标:培养学生对计算机编程的兴趣和热情,增强学生自信心,培养学生的团队协作精神和自主学习能力。

通过对课程性质、学生特点和教学要求的分析,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容本节课的教学内容主要包括以下几个部分:1.Java编程语言基本语法和操作:数据类型、变量、运算符、控制结构等。

2.面向对象编程概念:类、对象、封装、继承、多态等。

3.Java时钟小程序的编写:使用Java Swing或JavaFX库实现一个简单的图形界面时钟,通过编程实现时钟的运行和显示。

教学内容的选择和要确保科学性和系统性,制定详细的教学大纲,明确教学内容的安排和进度,指出教材的章节和列举内容。

三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用以下几种教学方法:1.讲授法:讲解Java编程语言的基本语法和操作,面向对象编程概念等理论知识。

2.案例分析法:分析典型的Java程序案例,使学生更好地理解编程原理和方法。

3.实验法:引导学生动手实践,编写并调试Java时钟小程序,提高学生的编程能力。

通过多样化的教学方法,使学生在理论知识和实践操作中掌握Java编程技能。

四、教学资源本节课的教学资源包括以下几个方面:1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的Java编程参考书籍,丰富学生的知识储备。

3.多媒体资料:制作精美的PPT课件,直观地展示教学内容。

4.实验设备:为学生提供充足的计算机设备,确保每个学生都能动手实践。

Java课程设计报告(LED时钟)

Java课程设计报告(LED时钟)

攀枝花学院学生课程设计(论文)题目: LED时钟学生姓名:张奕学号: 201210802028 所在院(系):数学与计算机学院专业:信息与计算科学班级: 2012级信息与计算科学1班指导教师:吴建兵职称:讲师二O一四年六月十六日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目时钟(LED方式)1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。

2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)编写一个时钟(LED方式)程序,要求:(1)在屏幕上用文字显示日期(年、月、日、星期)与时间。

(2)时间显示要求能动态显示时、分、秒。

3、主要参考文献[1]朱福喜.《Java语言程序设计》(第二版).科学出版社[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社[3] Deitel.《Java大学基础教程》(第六版).电子工业出版社[4] MaryCampione.《Java语言导学》(第四版).机械工业出版社[5] Y.Daniel Liang.《Java语言程序设计基础篇》(第六版). 机械工业出版社[6] Kathy Sierra.《Head First Java》(第二版).东南大学出版社4、课程设计工作进度计划1、设计动员,布置任务,选题(1天)2、查阅资料,分析、讨论与设计(1天)3、编写程序,进行调试(4天)4、完成模块联调,进行测试(2天)5、成果验收,完成设计报告(2天)指导教师(签字)日期年月日教研室意见:年月日学生(签字):接受任务时间:年月日注:任务书由指导教师填写。

课程设计(论文)指导教师成绩评定表题目名称时钟(LED方式)评分项目分值得分评价内涵工作表现20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。

02 科学实践、调研7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。

JAVA课程设计钟表(含代码)

JAVA课程设计钟表(含代码)

Java程序课程设计任务书钟表的设计与开发1、主要内容:创建一个钟表。

借助swing类和接口内部类的实现,在本程序中以实现Runnable接口内部类的形式创建多线程对象。

Runnable接口只定义了一个run()方法,所以调用start和sleep()方法时,必须创建Thread实例化对象。

Interrupt()方法的作用是中断线程。

其作用方式是:多线程对象.interrupt()。

2、具体要求(包括技术要求等):系统的功能要求:1.可以记录时间的钟表。

2.熟悉JAVA中swing的组件运用,基本工具的熟练掌握。

学习并掌握以下技术:Java等。

熟练使用以下开发工具:JCreator + JDK 1.6.0_02 等实现系统上述的功能。

3、进度安排:12月28日~ 12月29日:课程设计选题,查找参考资料12月29日~ 1月2日:完成程序代码的编写1月2日~ 1月3日:系统测试与完善1月4日~ 1月5日:完成课程设计报告,准备答辩4、主要参考文献[1]张帆.Java范例开发大全[M].北京:清华大学出版社,2010:0-831.[2]耿祥义,张跃平.Java大学实用教程[M].北京电子工业出版社,2008:213-216摘要随着经济全球化的发展,推动生活节奏的加快,也给时间赋予了更重要的意义。

基于方便人们更好的掌握时间,我们小组设计出了这个小时钟。

本时钟是一个基于Java语言设计而成的一个小程序,目的是显示时间,并且能调准时钟。

整个程序从符合操作简便、界面友好、灵活使用的要求出发,完成调用、调整的全过程。

本课程设计报告介绍了时钟的构成,论述了目标功能模块;给出了时钟设计的步骤,程序主要所用到的Swing组件以及graphics方法。

关键词:时钟,目录摘要 (II)目录 ......................................................................................................................................................... I II 第1章引言 .. (1)1.1课程设计内容 (1)1.2任务分工 (1)第2章时钟的设计 (2)2.1时钟功能的概述 (2)2.1.1时钟数字显示 (2)2.1.2时钟指针显示 (2)2.1.2时钟的设置 (2)第3章时钟的具体实现 (3)3.1界面设计 (3)3.1.1程序流程图 (3)3.1.1显示数字时钟效果 (3)3.1.2显示指针时钟完全效果图 (4)3.1.3设置窗口效果图 (6)第4章结束语 (8)致谢 (8)附录源代码 (9)第1章引言1.1课程设计内容本时钟编写时用到了Java中的Swing组件以及graphics方法,并具有下列处理功能(1)显示时钟功能显示钟表时间和数字时间(2)状态的可切换通过调整框图的大小,可以在数字时钟和指针时钟之间进行切换。

JAVA时钟日历报告期末课程设计

JAVA时钟日历报告期末课程设计

JAVA时钟日历报告import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.util.Date;import java.awt.event.*;import javax.swing.*;import javax.swing.border.TitledBorder;import java.util.*;import javax.swing.JPanel;import javax.swing.JTextField;import java.awt.GridLayout;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.SwingUtilities;import javax.swing.UIManager;publicclass Test extends JFrame{privatestaticfinallong serialVersionUID = 1L;//测试public Test(){Clock clock =new Clock();Calendercal = new Calender();@SuppressWarnings("unused")JPanel jp2 = new JPanel();setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(560,300);setVisible(true);this.setContentPane(clock);this.getContentPane().add(cal,BorderLayout.WEST); setResizable(false);}//////////////////////////////////////画时钟publicclass DrawClock extends JPanel implements Runnableprivatestaticfinallong serialVersionUID = 1L;Thread newThread; //线程publicint RADIUS = 80; //时钟的半径//设置时钟位置publicint centerX = 150; //设置时钟x轴publicint centerY = 120; //设置时钟y轴publicint hr, min, sec; //小时,分钟,秒publicint[] xPoint = newint[4]; //指针的4个坐标publicint[] yPoint = newint[4];publicdouble hrAlpha, minAlpha, secAlpha, theta;private JTextField timeZone;//启动时钟publicvoid start(){newThread = new Thread(this);newThread.start(); //启动线程}//终止线程publicvoid stop(){newThread = null;}@SuppressWarnings("deprecation")publicvoid paint(Graphics g){super.paint(g);//画出时钟刻度double minuteAlpha = Math.PI/30.0;int count = 0;for(double alpha=0; alpha<2.0*Math.PI; alpha+=minuteAlpha) {int tX = (int)(centerX+RADIUS*0.9*Math.sin(alpha));int tY = (int)(centerY-RADIUS*0.9*Math.cos(alpha));if(count%5 == 0){g.setColor(Color.CYAN);g.fill3DRect(tX, tY, 3, 3, false);{int m = count /15;switch(m){case 1: g.drawString("3", centerX+RADIUS-18, centerY+5);break;case 2: g.drawString("6", centerX-3, centerY+RADIUS-10);break;case 3: g.drawString("9", centerX-RADIUS+11,centerY+6);break;default: g.drawString("12", centerX-5, centerY-RADIUS+22); }}}else{g.setColor(Color.DARK_GRAY);g.fill3DRect(tX, tY, 2, 2, false);}count++;}//画出时钟时针g.setColor(Color.gray); // 定义颜色drawPointer(g, centerX+2, centerY+2, (int)(RADIUS*0.75), hrAlpha);g.setColor(Color.CYAN); // 定义颜色drawPointer(g, centerX, centerY, (int)(RADIUS*0.75), hrAlpha);//画出分针g.setColor(Color.gray); // 定义颜色drawPointer(g, centerX+2, centerY+2, (int)(RADIUS*0.83), minAlpha);g.setColor(Color.CYAN); // 定义颜色drawPointer(g, centerX, centerY, (int)(RADIUS*0.83), minAlpha);//画出秒针g.setColor(Color.DARK_GRAY); //定义颜色g.drawLine(centerX,centerY,(int)(centerX+(int)(RADIUS*0.79)*Math.sin(secAlpha)),(int)(centerY-(int)(RADIUS*0.79)*Math.cos(secAlpha)));setBorder(new TitledBorder("时间"));setBackground(Color.white); // 定义颜色g.drawRect(85, 210, 130, 20);g.setColor(Color.WHITE);g.setColor(Color.DARK_GRAY);g.drawString(timeNow.toLocaleString(), 100,225);}public Date getDate(){Date timeNow = new Date();return timeNow;}// 刷新图层publicvoid update(Graphics g){paint(g);}// 画出一个帧的图像publicvoid run() {while(newThread != null){repaint();try{Thread.sleep(800);} catch(InterruptedException E) {}Date timeNow = new Date();@SuppressWarnings("deprecation")int hours = timeNow.getHours(); //这里不知道为什么会画横线的@SuppressWarnings("deprecation")int minutes = timeNow.getMinutes(); //这里不知道为什么会画横线的@SuppressWarnings("deprecation")int seconds = timeNow.getSeconds(); //这里不知道为什么会画横线的hr = hours;min = minutes;sec = seconds;theta = Math.PI/6.0/20.0;hrAlpha = (double)(hr*3600 + min*60 + sec)minAlpha = (double)(min*60 + sec)/3600.0*2.0*Math.PI; secAlpha = (double)sec/60.0 * 2.0*Math.PI;}}privatevoid drawPointer(Graphics g, int x, int y,int len, double theta){xPoint[0] = (int)(x+len*0.3*Math.sin(theta-Math.PI)); yPoint[0] = (int)(y-len*0.3*Math.cos(theta-Math.PI)); xPoint[1] = (int)(xPoint[0]+len*0.3*Math.sin(theta-(double)(10.0/180)*Math.PI)); yPoint[1] = (int)(yPoint[0]-len*0.3*Math.cos(theta-(double)(10.0/180)*Math.PI)); xPoint[2] = (int)(xPoint[0]+len * Math.sin(theta)); yPoint[2] = (int)(yPoint[0]-len * Math.cos(theta)); xPoint[3] = (int)(xPoint[0]+len*0.3*Math.sin(theta+(double)(10.0/180)*Math.PI)); yPoint[3] = (int)(yPoint[0]-len*0.3*Math.cos(theta+(double)(10.0/180)*Math.PI));g.fillPolygon(xPoint, yPoint, 4);}public JTextFieldgetTimeZone() {return timeZone;}publicvoid setTimeZone(JTextFieldtimeZone) {this.timeZone = timeZone;}}////////////////////////////////////时钟publicclass Clock extends JPanel{privatestaticfinallong serialVersionUID = 1L;private UIManager.LookAndFeelInfo looks[];private DrawClock clock ;@SuppressWarnings("unused")private JPanel pane_clock ;public Clock(){super();looks = UIManager.getInstalledLookAndFeels(); changeTheLookAndFeel(2);clock = new DrawClock();clock.start();this.setBackground(Color.GRAY);this.setLayout(new BorderLayout());this.setOpaque(false);this.add(clock);this.setBorder(new TitledBorder("时间日期"));this.setBorder(new TitledBorder("时区"));this.setBorder(new TitledBorder("Internet时间"));setSize( 300, 300 );setVisible(true );}privatevoid changeTheLookAndFeel(int i){try{UIManager.setLookAndFeel(looks[i].getClassName()); SwingUtilities.updateComponentTreeUI(this);}catch(Exception exception){exception.printStackTrace();}}}/////////////////////////////////////设计日历publicclass Calender extends JPanel implements ActionListener {privatestaticfinallong serialVersionUID = 1L;publicfinal String HOUR_OF_DAY = null;//定义@SuppressWarnings("rawtypes")JComboBox Month = new JComboBox();@SuppressWarnings("rawtypes")JComboBox Year = new JComboBox();JLabel Month_l = new JLabel("");JLabel Year_l = new JLabel("");Date now_date = new Date();JLabel[] Label_day = new JLabel[49];@SuppressWarnings("deprecation")int now_year = now_date.getYear() + 1900;@SuppressWarnings("deprecation")int now_month = now_date.getMonth();boolean bool = false;String year_int = null;int month_int;JPanel pane_ym = new JPanel();JPanel pane_day = new JPanel();@SuppressWarnings("unchecked")public Calender(){super();//设定年月for (int i = now_year - 10; i<= now_year + 20; i++) {Year.addItem(i + "");}for (int i = 1; i< 13; i++){Month.addItem(i + "");}Year.setSelectedIndex(10);pane_ym.add(new JLabel(" "));pane_ym.add(Year);pane_ym.add(Year_l);Month.setSelectedIndex(now_month);pane_ym.add(Month);pane_ym.add(Month_l);pane_ym.add(new JLabel(" "));Month.addActionListener(this);Year.addActionListener(this);//初始化日期并绘制for (int i = 0; i< 49; i++) {Label_day[i] = new JLabel(" ");pane_day.add(Label_day[i]);}this.setDay();this.setLayout(new BorderLayout());this.add(pane_day, BorderLayout.CENTER);this.add(pane_ym, BorderLayout.NORTH);this.setSize(100,200);this.setBorder(new TitledBorder("日期(D)"));setSize(300,300);}@SuppressWarnings("deprecation")void setDay(){if (bool){year_int = now_year + "";month_int = now_month;}else{year_int = Year.getSelectedItem().toString();month_int = Month.getSelectedIndex();}int year_sel = Integer.parseInt(year_int) - 1900; //获得年份值//@SuppressWarnings("deprecation")Date dt = new Date(year_sel, month_int, 1); //构造一个日期GregorianCalendarcal = new GregorianCalendar(); //创建一个Calendar实例cal.setTime(dt);String week[] = { "日", "一","二", "三", "四", "五", "六" };int day = 0;int day_week = 0;for (int i = 0; i< 7; i++) {Label_day[i].setText(week[i]);}//月份if (month_int == 0||month_int == 2 ||month_int == 4 ||month_int == 6 ||month_int == 9 ||month_int == 11){day = 31;elseif (month_int == 3 ||month_int == 5 || month_int == 7|| month_int == 8 ||month_int == 10|| month_int == 1){day = 30;}else{if (cal.isLeapYear(year_sel)){day = 29;}else{day = 28;}}day_week = 7 + dt.getDay();int count = 1;for (int i = day_week; i<day_week + day; count++, i++){if (i % 7 == 0 ||i == 13||i == 20||i == 27||i == 48 ||i == 34 ||i == 41){if (i == day_week + now_date.getDate() - 1){Label_day[i].setForeground(Color.blue);Label_day[i].setText(count + "");}else{Label_day[i].setForeground(Color.red);Label_day[i].setText(count + "");}}else{if (i == day_week + now_date.getDate() - 1){Label_day[i].setForeground(Color.blue);Label_day[i].setText(count + "");}else{Label_day[i].setForeground(Color.black);Label_day[i].setText(count + "");}}if (day_week == 0){for (int i = day; i< 49; i++){Label_day[i].setText(" ");}}else{for (int i = 7; i<day_week; i++){Label_day[i].setText(" ");}for (int i = day_week + day; i< 49; i++){Label_day[i].setText(" ");}}}publicvoid actionPerformed(ActionEvent e) {if (e.getSource() == Year || e.getSource() == Month) { bool = false;this.setDay();}}}//////////////////////////////////publicstaticvoid main(String[] args){try{Test frame = new Test();frame.setTitle("日历");}catch (Exception e){System.out.print("run error!");}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书目录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(任意键)调出digitalClockEnd3.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;elseL=5;X1=200*sin()+300;Y1=200*cos()+240;}③时间模块:Gettime(d)4设计结果与分析4.1设计结果运行程序后在屏幕上显示出一时钟,钟上的时间与电脑上的时间完全一样,并且在秒针运行的同时伴随声音如同下图一样的图案:4.2分析在桌面会显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。

我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。

因为是程序控制时钟的,所以起始时间是通过程序控制的,要想改动还是需要通过改变程序获得,并不是随系统时间而确定起始时间的。

5 总结通过本次的课程设计,我深刻的体会到了C语言的强大。

虽然本次的课程设计对我来说有一定的难度,但是在朋友的帮助下我还是很好地完成了(自我感觉)。

从而也认识到了程序的内涵,使我对编程产生了很大的兴趣。

其实编程很好玩的,在编程中不但可以完成一些现实中从在的东西,还可以制作出很多意想不到东西。

还有对于此次课程设计让我深刻的认识到自己学得的远远还太少,需要我们自发的去学习知识才可以成长的更快!其次,对于此次设计我得坦诚一件事,那就是我一开始选的TC程序,运行的时候总是要我输入参数,由于自己的知识局限,总是敲不出结果,所以我又去百度文库搜了一个vc程序,虽然最终使运行出来了,可是这次事件让我认识自身知识的不足,所以,这次过后会更加认真的学习一些书面没有的知识,充实自己。

6 参考文献《C语言程序设计》(第二版)[M].北京:清华大学出版社谭浩强 1999 《数据结构》(C语言版)[M].北京:清华大学出版社严魏敏,吴伟民 1997 《C语言程序设计》[M]. 黄明等.大连理工大学出版社,2005《C语言课程设计案例精编》. 郭翠英 . 中国水利水电出版 . 2004年3月《C语言程序设计教程》曾春平,朱小谷,晏海华.北京希望电子出版社 . 2005年3月《C语言课程设计案例精编》清华大学出版社﹒姜灵芝、余健﹒ 2008.1《C语言程序设计》西安电子科技大学出版社﹒田祥宏主编﹒2007.12附程序清单及源程序(1)TC2.0上的源程序#include"graphics.h"#include"math.h"#include"dos.h"#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init() /*划时钟边框函数*/{int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,200);circle(300,240,205);circle(300,240,5);for(i=0;i<60;i++) /*划钟点上的短线*/{if(i%5==0)l=15;elsel=5;x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/180)+240;line(x1,y1,x2,y2);}}main(){int x,y,i,k=1;int gdriver=9,gmode=2;unsigned char h,m,s;int o,p,q;float n;struct time t[1];struct date d[1];initgraph(&gdriver,&gmode,"c:\\tc");initgraph(&gdriver,&gmode,"c:\\tc");for(i=0;i<=6;i++){settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/cleardevice();settextjustify(1,1); /*在指定坐标上输出字符串*/outtextxy(300,80,"12") ;outtextxy(300,390,"6");outtextxy(140,230,"9");outtextxy(460,230,"3");outtextxy(380,100,"1");outtextxy(220,100,"11");outtextxy(430,160,"2");outtextxy(430,310,"4");outtextxy(380,370,"5");outtextxy(220,370,"7");outtextxy(160,160,"10");outtextxy(160,310,"8");}init();setwritemode(1); /*设置画线的输出模式*/if(k!=0){getdate(d); /*获得系统日期函数*/o=d[0].da_year;p=d[0].da_mon;q=d[0].da_day;gettime(t); /*获得系统时间函数*/h=t[0].ti_hour;m=t[0].ti_min;s=t[0].ti_sec;}setcolor(7); /*设置时针颜色*/n=(float)h+(float)m/60;d(150,n,30); /*画出时针*/setcolor(14); /*设置分针颜色*/d(170,m,6); /*画出分针*/setcolor(4); /*设置秒针颜色*/d(190,s,6); /*画出秒针*/while(!kbhit()) /*控制程序按下任意键退出*/{while(t[0].ti_sec==s)gettime(t);gotoxy(44,18); /*使光标移动到指定坐标*/printf("\b\b\b\b\b\b\b\b\b"); /*退格,使表示时间的字符串不断变化*/ sound(400); /*按给定的频率打开PC扬声器*/delay(70); /*中断程序的执行,时间为70毫秒*/sound(200);delay(30);nosound(); /*按给定的频率关闭PC扬声器*/ setcolor(4);d(190,s,6);s=t[0].ti_sec;d(190,s,6);if(t[0].ti_min!=m){setcolor(14);d(170,m,6);m=t[0].ti_min;d(170,m,6);}if(t[0].ti_hour!=h){setcolor(7);d(150,h,30);h=t[0].ti_hour;d(150,h,30);sound(1000);delay(240);nosound();delay(140);sound(2000);delay(240);nosound();}if(s<10) /*用字符的形式输出时间*/{ if(m<10)printf("%u:0%u:0%u",h,m,s);elseprintf("%u:%u:0%u",h,m,s);}else{ if(m<10)printf("%u:0%u:%u",h,m,s);elseprintf("%u:%u:%u",h,m,s);}gotoxy(34,19); /*在指定坐标上输出日期*/printf("%d年%d月%d日",o,p,q);printf("\b\b\b\b\b\b\b\b\b");}getch();closegraph();}(2)visual c++ 6.0上运行的源程序#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#include <math.h>#include <time.h>#pragma comment(lib, "user32.lib")#pragma comment(lib, "gdi32.lib")#pragma comment(linker, "/SUBSYSTEM:Windows")void GetPos(double degree, int len, int* x, int* y){*x = len * sin(degree);*y = len * cos(degree);}void DrawClock(HWND hw, HDC h, int hour, int minute, int second) {HDC bufdc = CreateCompatibleDC(h);HBITMAP buf = CreateCompatibleBitmap(bufdc, 200, 200);RECT cr;HBRUSH bBg = CreateSolidBrush(RGB(255, 255, 255));GetClientRect(hw, &cr);SelectObject(bufdc, bBg);SelectObject(bufdc, buf);FillRect(bufdc, &cr, bBg);{int sx, sy, ex, ey;int i;for(i = 0; i < 12; ++i) {GetPos(2*3.14159/12*i, 85, &sx, &sy);GetPos(2*3.14159/12*i, 95, &ex, &ey);MoveToEx(bufdc, 100+sx, 100-sy, 0);LineTo(bufdc, 100+ex, 100-ey);}}{int hx, hy, mx, my, sx, sy;GetPos(2*3.14159 / 24 * (hour + (double)minute / 60 + (double)second / 3600), 50, &hx, &hy);GetPos(2*3.14159 / 60 * (minute + (double)second / 60), 65, &mx, &my);GetPos(2*3.14159 / 60 * second, 80, &sx, &sy);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+hx, 100-hy);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+mx, 100-my);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+sx, 100-sy);}BitBlt(h, 0, 0, 200, 200, bufdc, 0, 0, SRCCOPY);DeleteDC(bufdc);DeleteObject(bBg);DeleteObject(buf);}LRESULT CALLBACK WndProc(HWND h, UINT m, WPARAM w, LPARAM l){switch(m) {case WM_CREATE:SetTimer(h, 1, 1000, 0);return 0;case WM_ERASEBKGND:return 1;case WM_TIMER:InvalidateRect(h, 0, FALSE);return 0;case WM_PAINT: {PAINTSTRUCT ps;HDC dc = BeginPaint(h, &ps);{time_t t;struct tm* pst;time(&t);pst = localtime(&t);DrawClock(h, dc, pst->tm_hour, pst->tm_min, pst->tm_sec);}EndPaint(h, &ps);return 0;}case WM_DESTROY:KillTimer(h, 1);PostQuitMessage(0);return 0;default:return DefWindowProc(h, m, w, l);}}int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow){WNDCLASS wc;ZeroMemory(&wc, sizeof(wc));wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = WndProc;wc.hInstance = hInst;wc.hbrBackground = (HBRUSH) COLOR_WINDOW;wc.lpszClassName = TEXT("MYCLOCK");if (RegisterClass(&wc) != 0) {MSG m;HWND hw = CreateWindow(TEXT("MYCLOCK"), TEXT("Clock"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, 0);if (hw != NULL) {RECT r;GetWindowRect(hw, &r);r.right = r.left + 200;r.bottom = r.top + 200;AdjustWindowRect(&r, WS_OVERLAPPEDWINDOW, FALSE);MoveWindow(hw, r.left, r.top, r.right - r.left, r.bottom - r.top, FALSE);ShowWindow(hw, SW_SHOWNORMAL);UpdateWindow(hw);while( GetMessage(&m, 0, 0, 0) > 0) {TranslateMessage(&m);DispatchMessage(&m);}return 0; }return 1;} elsereturn 1;}。

相关文档
最新文档