Java时钟软件设计报告

合集下载

Java时钟软件设计报告

Java时钟软件设计报告

佛山科学技术学院《可视化编程技术》课程设计报告时钟软件设计学生姓名:***学号:**********年级专业:11级教育技术学2班指导老师:***学院:教育科学学院广东★佛山提交日期:2013年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 计算器功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 处理按了运算符后的计算 (5)3.2.2 处理输入字符 (6)3.2.3 进制的转换 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 程序异常处理 (9)6. 源程序 (9)参考文献 (27)设计总结 (27)摘要:本程序在框架中新建一个容器,用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间;用一个永真循环,来对当前时间显示的更新,用java.io.File来实现对文件读写,设计了一个按钮,用来选择文件WAU或MID,用java.applet.Applet 播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距.关键字:java时钟,时钟类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的时钟,可以清楚地知道时间和设定一个时间来提醒自己,满足日常基本的工作学习和生活需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

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语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:许研2010 年12 月28 日目录一、题目描述 (1)二、设计思路 (1)三、运行结果 (5)四、源代码 (6)五、总结 (10)六、参考文献 (10)闹钟的设计与实现一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。

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

3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabe lqueding, dakai: JButtonmusic, RI, SHI, FEN, MIAO: JTextFieldh = 0, f = 0, m = 0, r = 0 :intFo, foo: booleansoumd1: public AudioClipClock类中的函数public clock()public static void main(String agrs[])public void run()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。

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实验⼀:写⼀个桌⾯时钟⼀共有三个类:这个是第⼀个,主函数类:public class Programe extends JFrame {/** 四个部分: 1.画出窗体和⾯板 2.画出指针 3.时间转换的算法 4.让指针动起来*/public static void main(String[] string) {Programe frame = new Programe();// 创建窗体对象frame.setVisible(true);// 设置窗体可见,没有该语句,窗体将不可见,此语句必须有,否则没有界⾯就没有意义}public Programe() {setUndecorated(false);// 打开窗体修饰setAlwaysOnTop(true);// 窗体置顶getContentPane().setLayout(new BorderLayout()); // 在窗体的基础上加⼊⾯板:Panel ⽽后就可以在⾯板上进⾏其他操作 // 指定的组件之间的⽔平间距构造⼀个边界布局setBounds(100, 30, 217, 257);// ⽤于设置窗⼝尺⼨和位置;ClockPaint clockPaint = new ClockPaint();// 创建时钟⾯板getContentPane().add(clockPaint);new Thread() {// 继承Thread类创建线程,更新时钟⾯板界⾯@Overridepublic void run() {// 重写run⽅法try {while (true) {sleep(1000);// 休眠1秒clockPaint.repaint();// 重新绘制时钟⾯板界⾯}} catch (InterruptedException e) {e.printStackTrace();// 在命令⾏打印异常信息在程序中出错的位置及原因。

}}}.start();}}这个是第⼆个,画时钟的类:package clock;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import javax.swing.ImageIcon;import javax.swing.JPanel;public class ClockPaint extends JPanel {private static final BasicStroke H = new BasicStroke(4);// 指针粗细private static final BasicStroke M = new BasicStroke(3);private static final BasicStroke S = new BasicStroke(2);private final static int secLen = 60; // 指针长度private final static int minuesLen = 55;private final static int hoursLen = 36;ImageIcon background;// 背景private int X;// 中⼼坐标private int Y;public ClockPaint() {background = new ImageIcon(getClass().getResource("时钟.jpg"));// 加载图⽚int Width = background.getIconWidth();// 获取图⽚宽度X = Width / 2 + 2;// 获取图⽚中间坐标int Height = background.getIconHeight();// 获取图⽚长度Y = Height / 2 - 8;// 获取图⽚中间坐标setPreferredSize(new Dimension(Width, Height));// 设置最好的⼤⼩(固定⽤法)}public void paint(Graphics g) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(background.getImage(), 0, 0, this);ClockData data = new ClockData(secLen, minuesLen, hoursLen);// 绘制时针g2.setStroke(H);// 设置时针的宽度g2.setColor(Color.RED);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.hX, Y - data.hY);// 绘制时针// 绘制分针g2.setStroke(M);// 设置分针的宽度g2.setColor(Color.orange);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.mX, Y - data.mY);// 绘制分针// 绘制秒针g2.setStroke(S);// 设置秒针的宽度g2.setColor(Color.GREEN);// 设置时针的颜⾊g2.drawLine(X, Y, X + data.sX, Y - data.sY);// 绘制秒针// 绘制中⼼圆g2.setColor(Color.BLUE);g2.fillOval(X - 5, Y - 5, 10, 10);}}这个是第三个,获取时钟的数据:package clock;import static java.util.Calendar.HOUR;import static java.util.Calendar.MINUTE;import static java.util.Calendar.SECOND;import java.util.Calendar;public class ClockData {public int sX, sY, mX, mY, hX, hY;public ClockData(int secLen, int minuesLen, int hoursLen) {Calendar calendar = Calendar.getInstance();// 获取⽇历对象int sec = calendar.get(SECOND);// 获取秒值int minutes = calendar.get(MINUTE);// 获取分值int hours = calendar.get(HOUR);// 获取时值// 计算⾓度int hAngle = hours * 360 / 12 + (minutes / 2) ;// 时针⾓度(每分钟时针偏移⾓度)int sAngle = sec * 6; // 秒针⾓度int mAngle = minutes * 6 + (sec / 10);// 分针⾓度// 计算秒针、分针、时针指向的坐标sX = (int) (secLen * Math.sin(Math.toRadians(sAngle)));// 秒针指向点的X坐标(将⾓度转换为弧度) sY = (int) (secLen * Math.cos(Math.toRadians(sAngle))); // 秒针指向点的Y坐标mX = (int) (minuesLen * Math.sin(Math.toRadians(mAngle))); // 分针指向点的X坐标mY = (int) (minuesLen * Math.cos(Math.toRadians(mAngle))); // 分针指向点的Y坐标hX = (int) (hoursLen * Math.sin(Math.toRadians(hAngle))); // 时针指向点的X坐标hY = (int) (hoursLen * Math.cos(Math.toRadians(hAngle))); // 时针指向点的Y坐标}}以上参考了其他⼤佬的代码,等我找到原地址再补上:D做了部分修改,加了部分注释,java⼩⽩还请客官您多多包含呀!。

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实验报告一(运用JavaFx画时钟)-推荐下载

JAVA实验报告一(运用JavaFx画时钟)-推荐下载

一 概述
1. 课程设计的目的 1、 设计一个带有指针、数字时钟,能方便我们的使用和操作,
为我们以后的使用创造一个良好的平台。了解和掌握 JavaFx
基本概念和用法。
2、 把自己所学的理论知识运用到实际操作中去,以此来发现自
己的不足,及时的改正。在实际的操作中学习及运用还没有
学过的知识。最后在调试与测试的过程还可以提升自己的改
错能力也是自己经验的积累。
2. 课程设计的要求
编写一个模拟时钟程序,此程序在屏幕左方有一指针式钟面,右方有两个 矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致, 下方的矩形框作为秒表。用菜单选项或按钮设置时间和秒表。时间不必与机器 系统时间相同,只要可任意设置即可。
在设计的过程中,需要用到 awt 组件和 Swing 容器与组件,布局管理器, 事件处理,绘制图形,还运用到了类的继承,事件监听器和线程。还有自己还 没有掌握的 2D 绘制图形,以及绘制各指针及之间的关系。为了完成自己的设 计,必须 API、教材以及相关的资料来解决这些尚未掌握的问题。
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置2试时32卷,3各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并25工且52作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

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 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中设计多线程程序的能力。

二、设计思路分析class Clock:一个指针式时钟的主类class Layout: 添加窗口和时钟组件class ClockPaint:定义时钟组件三、概要设计 public class Clock extends JFrame {public static void main(String[] s);}class Layout extends JFrame {public Layout();}class ClockPaint extends JPanel implements Runnable {int x, y, r; int h, m, s; double rad = Math、PI /180; public ClockPaint(int x, int y, int r);public voidpaint(Graphics g);public void run();}时钟的绘制:运行时钟:四、详细设计 import java、awt、*;import javax、swing、*;import java、util、*;public class Clock extends JFrame {public static void main(String[] s){new Layout();}}class Layout extends JFrame {// 添加窗口和时钟组件public Layout(){ClockPaint cp = newClockPaint(20,20,70);add(cp);setBounds(260,120,200,200);s etResizable(false);this、setTitle("指针式时钟");this、setVisible(true);}}class ClockPaint extends JPanel implements Runnable {// 定义时钟组件int x, y, r;// 时钟的位置坐标和半径int h, m, s;// 小时,分钟,秒double rad = Math、PI /180;// 定义弧度public ClockPaint(int x, int y, int r){// 构造函数this、x = x;this、y = y;this、r =r;Calendar now = Calendar、getInstance();// 初始化日历对象s = now、get(Calendar、SECOND)*6;// 获得初始秒转换成度数m = now、get(Calendar、MINUTE)*6;// 获得初始分钟转换成度数h = (now、get(Calendar、HOUR_OF_DAY)2)* Math、sin(rad * d));y1 = (int)((r1, x + r14)* Math、sin(rad * d));y1 = (int)((r4, x + r6)* Math、sin(rad * d));y1 = (int)((r2)* Math、sin(rad * d));y2 = (int)((r y2, x + r + x1, y + r y1);g、setColor(Color、BLUE);// 按时间画分针x1 = (int)((0、6 * r)* Math、sin(rad * m));y1 = (int)((0、6 * r)* Math、cos(rad * m));g、drawLine(x + r, y + r, x + r + x1, y + r y1);g、setColor(Color、GREEN);// 显示时间Calendar now1 = Calendar、getInstance();g、drawString(now1、get(Calendar、HOUR_OF_DAY)+ ":"+ now1、get(Calendar、MINUTE)+ ":"+ now1、get(Calendar、SECOND), 0,10);}public void run(){// 运行时钟while (true){try {Thread、sleep(1000);// 中断一秒后重新运行} catch (Exception ex){System、out、println(ex);}s +=6;// 秒针走6度if(s >=360){// 秒针走完一分钟后重置s = 0;m +=6;if (m ==72 || m ==144 || m ==216 || m ==288){// 分针走完5分钟后重置h +=6;}if (m >=360){// 分针走完一小时后重置m = 0;h +=6;}if (h >=360){// 时针走完12小时后重置h = 0;}}this、repaint();// 重新绘制时钟}}}五、测试数据及其结果分析1时钟界面:2结果:输出正常。

JAVA课程设计报告电子钟

JAVA课程设计报告电子钟

课程设计报告( 2012-- 2013年度第2学期)日历记事本专业 计算机科学与技术学生姓名 董文龙 班级 计算机116 学号1110704603 指导教师 徐秀芳 完成日期2013.7目录目录 (2)1 概述 (4)1.1课程设计目的 (4)1.2课程设计内容和要求 (4)2 系统需求分析 (5)2.1系统目标 (5)2.2主体功能 (5)2.3开发环境 (5)3 系统总体设计 (5)3.1系统的功能模块划分 (5)3.2系统流程图 (6)4系统详细设计 (6)4.1主窗口模块设计 (6)4.1.1 效果图 (6)4.1.2 类的主要成员变量和方法 (7)4.1.3 主要程序代码 (8)4.2日期模块设计 (19)4.2.1 效果图 (19)4.2.2 类的主要成员变量和方法 (19)4.2.3 主要程序代码 (20)4.3日历模块设计 (21)4.3.1 效果图 (21)4.3.2 类的主要成员变量和方法 (22)4.3.3 主要程序代码 (22)4.4记事本模块设计 (24)4.4.1 效果图 (24)4.4.2 类的主要成员变量和方法 (24)4.4.3 主要程序代码 (25)4.5图像模块设计 (34)4.5.1 效果图 (34)4.5.2 类的主要成员变量和方法 (34)4.5.3 主要程序代码 (35)4.6时钟模块设计 (36)4.6.1效果图 (36)4.6.2 类的主要成员变量和方法 (36)4.6.3主要程序代码 (37)5 代码调试 (41)6 软件发布 (42)7 小结 (42)参考文献 (44)日历记事本日历记事本1 概述1.1 课程设计目的(1)加深对《Java语言与面向对象技术》课程基础知识的理解,掌握Java语言面向对象程序设计的开发方法和步骤;(2)进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力;(3)课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。

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钟摆实验报告

Java程序设计实验报告题目钟摆姓名马彦彬学号220800234学院软件学院专业软件工程年级2008级指导教师张舒2010年12月21日一、实验目的1、熟练掌握Applet编程技术。

2、掌握Swing图形用户界面编程,掌握java绘图技术。

3、掌握多线程编程的基本原理,能使用Runnable等接口进行线程的创建、启动等工作,并能利用线程和绘图,实现动画效果。

4、培养独立查找资料,并解决问题的能力。

二、实验任务1、设计并编程实现摆钟程序:钟摆以及秒针随时间走动或左右摆动,每秒钟摆左右摆动一回。

当时间到达整点时,时钟能产生整点报时,播放整点报时音乐,并以显示对应时刻的十二生肖图片。

2、程序要求:(1)将程序设计成为Applet小应用程序。

(2)利用Applet的各种方法加载摆钟素材图片,显示为如下效果:(3)使用多线程技术,让钟摆以及表盘中的秒针随时间走动。

钟摆的运动方式是每秒左右摆动一次。

表盘中的秒针、分针、时针按照真实钟表的走动方式。

(4)摆钟下方以数字时钟方式显示时间,如上图。

(5)可使用GregorianCalendar、Date、SimpleDateFormat、Calendar等类来处理系统时间,格式问题。

(6)可使用双缓冲等技术使动画更为平滑。

3、可使用附件中提供的素材,也可以自行下载各种所需素材三、开发工具与平台JDK1.6+eclipse四、设计思路1、界面设计设计一个简单的面板,在上面画字符,图片,播放声音。

2、逻辑设计Applet程序初始化,加载图片,时间。

并运行start()Start中创建一个线程。

该线程重新加载时间,使界面每秒重绘一程序退出次。

3、程序测试五、实验总结这次实验,主要学习了java Applet如何使用,利用Applet来画图,加载系统时间等等,并了解了applet运行的一般过程。

这次实验难度并不大,但是实验中还存在许多问题,需要努力学习。

六、附录无。

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闹钟程序设计

j a v a闹钟程序设计------------------------------------------作者xxxx------------------------------------------日期xxxx《JAVA程序设计》课程设计报告班级软件1301班姓名徐畅学号13号电子邮件849286847@指导教师张暑军时间2014/2015学年第一学期第20周承德石油高等专科学校计算机与信息工程系二零一五年一月十二日目录一系统需求描述 (4)二设计思路 (4)三实现描述 (6)四常见问题及解决方法 (8)五总结 (8)一系统需求描述1.任务描述:我国现在在各个方面发展迅猛,民众的生活质量得到极大的提高。

与此同时,根据时代的要求,人们的生活节奏也随之加快。

人们都要求自己在很短的时间尽量做到最多的事。

所以开发一款能让人们能将其所有的事有序地组织起来,同时又能提醒在什么时间该做什么事的软件是很有必要的。

虽然目前这样软件很多功能虽强大,但是用起来都很复杂,有些功能并不实用,操作也太麻烦。

该课题的终极目标是开发一个实用,操作便捷的桌面闹钟应用程序,达到在日常生活工作中可以合理利用时间从而大大地提高人们的工作效率。

用java 语言实现时钟闹钟的设计,设计的时钟闹铃能够完成以下功能:正确的指针位置、日期、时间的数字显示;在设定的时间用铃声提醒,若当前时间为设置的时间时,会伴随着铃声,时间持续约1分钟。

若关闭闹铃,则铃声停止。

2.需求分析:(1)该闹铃系统可用于到时响铃功能(可设置多组闹铃);(2)该闹铃系统只需要用户给其设置闹铃时间;(3)该闹铃系统与用户的交互完全靠按键实现;(4)该闹铃系统界面在外观上要求美观。

其中最重要的是闹铃的可操作性强,能够完成必要的功能;(5)该闹铃系统的相应时间0.1秒左右。

(6)该闹铃系统出现故障时,重启系统即可。

二设计思路1.实验目的:通过时钟闹铃的设计和实现,充分掌握java语言,提高对图形界面及小程序的设计和编程能力。

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)。

佛山科学技术学院《可视化编程技术》课程设计报告时钟软件设计学生姓名:***学号:**********年级专业:11级教育技术学2班指导老师:***学院:教育科学学院广东★佛山提交日期:2013年6月目录1. 前言 (2)2.概要设计 (3)2.1 开发环境 (3)2.2 计算器功能 (3)2.3 界面设计 (3)2.4 类的框架结构图 (4)3. 详细设计 (4)3.1 使用的JAVA类的说明 (4)3.2 类的主要方法 (5)3.2.1 处理按了运算符后的计算 (5)3.2.2 处理输入字符 (6)3.2.3 进制的转换 (6)3.2.4 设计总体认识 (7)3.2.5 程序流程图 (8)4. 运行结果 (8)5. 测试分析 (9)5.1 程序运行情况 (9)5.2 程序异常处理 (9)6. 源程序 (9)参考文献 (27)设计总结 (27)摘要:本程序在框架中新建一个容器,用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间;用一个永真循环,来对当前时间显示的更新,用java.io.File来实现对文件读写,设计了一个按钮,用来选择文件WAU或MID,用java.applet.Applet 播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距.关键字:java时钟,时钟类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的时钟,可以清楚地知道时间和设定一个时间来提醒自己,满足日常基本的工作学习和生活需要。

Java是由Sun公司开发的新一代纯面向对象的网络编程语言。

其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。

正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。

Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。

Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。

Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。

还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。

Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。

作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。

Java 语言去掉了C++语言的一些容易引起错误的特性。

Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。

2 概要设计2.1开发环境开发平台:Microsoft Windows XP Professional Service Pack 2开发工具:JBuilder 2007 + JDK 1.6.0_022.2时钟功能功能1:在时钟面板上,动态显示出当前时间。

功能2:可以设定闹钟时间,且当时间到了设定的闹钟时间时,会播放音乐来提醒。

功能3:可以随意解除设定的闹钟时间,再重新设定一个新的时间。

功能4 :按下清除‘开始’键,闹钟就开始设定好了,按“关闭”闹铃就停止。

功能5:界面设计,可模拟真实钟表界面也可以用数字界面显示,美观、实用和个性化。

2.3界面设计图2.3 时钟面板2.4类的框架结构图1、画出类的UML简图Clock类:3详细设计主要模块算法描述(1)当前动态时间的显示的设计与实现。

功能:可以实时的更新显示系统完整的时间算法:引入java.util.Date用while循环更新时间代码如下:public void run() {while (true) {Date now = new Date();//设置一个新的当前时间对象。

dangqian.setText("当前时间: " + now.toString());//显示当前的时间…}(2)音乐文件的选择。

功能:用打开按钮实现对本地音乐文件的选择算法:引入java.io.File和.MalformedURLException 来实现对音乐本地音乐文件的选择。

代码如下:dakai.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) {JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器 fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {public boolean accept(File file) { // 可接受的文件类型String name = file.getName().toLowerCase();return name.endsWith(".wav")|| name.endsWith(".au")|| file.isDirectory();}public String getDescription() { // 文件描述return "音乐文件(*.wav,*.au)";}});(3)闹铃功能的实现功能:到达设定闹钟时间,会有输出文字及产生音乐。

算法:读入Clock类中的时间,并设置一个Timer,每隔0.1秒进行比对,如果字符串之间匹配就显示,简化代码如下示意:public void run() {………if (fo) {foo = true;RI.setEditable(false);//设定之后禁用输入功能SHI.setEditable(false);FEN.setEditable(false);MIAO.setEditable(false);queding.setText("关闭");//关闭闹钟设定SimpleDateFormat ri = new SimpleDateFormat("dd"); // 封装为了获取日期SimpleDateFormat shi = new SimpleDateFormat("HH"); // 封装为了获取小时SimpleDateFormat fen = new SimpleDateFormat("mm"); // 封装为了获取分钟SimpleDateFormat miao = new SimpleDateFormat("ss"); // 封装为了获取秒钟riqi = Integer.parseInt(ri.format(now)); // 获取日期shizhong = Integer.parseInt(shi.format(now)); // 获取小时fenzhong = Integer.parseInt(fen.format(now)); // 获取分钟miaozhong = Integer.parseInt(miao.format(now)); // 获取秒钟if (riqi == r && shizhong == h && fenzhong == f&& miaozhong == m) // 判断条件是否符合{try {soumd1 = Applet.newAudioClip(new File(music.getText()).toURL()); // 播放音乐soumd1.loop(); // 我设置的是循环播放..这样不起床都不行..fo = false;foo = false;} catch (MalformedURLException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException ie) {}}}●JA V A设计的摘要●JA V A设计的目录结构●JA V A设计的概要和详细设计●JA V A设计的版权意识●JA V A设计需要编译的环境●JA V A设计的实用性4运行结果图工作状态显示{ js();}catch(This_number_too_big e){lab.setText("0");number=0;mark='n';Refresh=false;System.out.println("The number is too big");} //如果出现异常则初始化效果如同clear键5 .程序分析遇到问题5. 1 设置迷你闹钟的界面化时遇到问题通过参考已有的程序加以解决。

5. 2 设置“闹铃时间”、“开关按钮”、“背景音乐列表框”时事件的触发和监控遇到问题经过反复修改调试得到解决。

5. 3 闹铃背景音乐格式设置遇到问题,经过调试和格式转换解决。

待解决问题闹钟的思想是“北京时间”所以背景音乐中有《天涯共此时》音乐界面上有北京时间等标识本来想在界面上添加一幅具有北京特色的图片做背景但反复尝试遗憾的是均未能成功添加的背景图片总被上层面板遮挡希望老师给以指导。

6 程序清单:import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import sun.audio.*;import java.io.*;public class JavaClock extends JFrame implements ActionListener,Runnable{/****/private static final long serialVersionUID = -7303693253632593767L;Thread thread;JPanel panel1=new JPanel();JPanel panel2=new JPanel();JPanel panel3=new JPanel();JButton button2=new JButton("开闹铃");JButton button1=new JButton("确定");JComboBox sComboBox,mComboBox,hComboBox;JLabel label1=new JLabel(":");JLabel label2=new JLabel(":");JLabel label3=new JLabel("设置闹铃时间:"); JLabel label4=new JLabel("闹铃状态:关");Clock clock=new Clock();boolean flag=false;int hour=0,minute=0,second=0;int nowsecond,nowminute,nowhour;AudioData theData=null;AudioDataStream nowPlaying=null;public JavaClock(){setTitle("闹钟");setResizable(false);//用户不能调整大小setLocation(450,100);//在屏幕位置setSize(400,500);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);//按窗口关闭按钮时退出程序 setLayout(new BorderLayout());add(clock,BorderLayout.NORTH);sComboBox=new JComboBox();mComboBox=new JComboBox();hComboBox=new JComboBox();for(int i=0;i<60;i++){sComboBox.addItem(i);mComboBox.addItem(i);}for(int i=0;i<24;i++){hComboBox.addItem(i);}button1.addActionListener(this);button2.addActionListener(this);label3.setFont(new Font("楷体_GB2312", Font.BOLD, 18));panel1.add(label3);panel1.add(hComboBox);panel1.add(label1);panel1.add(mComboBox);panel1.add(label2);panel1.add(sComboBox);panel1.add(button1);label4.setFont(new Font("楷体_GB2312", Font.BOLD, 18));label4.setForeground(Color.red);panel2.add(label4);panel2.add(button2);panel3.setLayout(new BorderLayout());panel3.add(panel1,BorderLayout.NORTH);panel3.add(panel2,BorderLayout.CENTER);add(panel3,BorderLayout.CENTER);pack();//自动调整窗口大小thread=new Thread(this);thread.start();}public void actionPerformed(ActionEvent ae){if(ae.getSource()==button2){if(flag){//闹铃开button2.setText("开闹铃");label4.setText("闹铃状态:关");flag=false;stop();}else{//闹铃关button2.setText("关闹铃");label4.setText("闹铃状态:开闹铃时间:"+hour+":"+minute+":"+second);flag=true;}}if(ae.getSource()==button1){hour=Integer.valueOf(hComboBox.getSelectedItem().toString()); minute=Integer.valueOf(mComboBox.getSelectedItem().toString());second=Integer.valueOf(sComboBox.getSelectedItem().toString());button2.setText("关闹铃");label4.setText("闹铃状态:开闹铃时间:"+hour+":"+minute+":"+second);flag=true;}}public void run(){while(true){if(flag){Calendar time=Calendar.getInstance();nowsecond=time.get(Calendar.SECOND);nowminute=time.get(Calendar.MINUTE);nowhour=time.get(Calendar.HOUR_OF_DAY);if(second==nowsecond&&minute==nowminute&&hour==nowhour){//闹铃响play("sound.wav");}}try{Thread.sleep(500);}catch(InterruptedException e){break;}}}//播放音乐public void play(String str){try{InputStream fis=this.getClass().getResourceAsStream(str);AudioStream as=new AudioStream(fis);//音频文件流theData=as.getData();//取得音乐文件的数据}catch(IOException e){System.err.println(e);}if(theData!=null){stop();ContinuousAudioDataStream cads=new ContinuousAudioDataStream(theData);//不间断地循环播放AudioPlayer.player.start(cads);nowPlaying=cads;}}//停止播放public void stop(){AudioPlayer.player.stop(nowPlaying);}public static void main(String[] args){new JavaClock();}}//时钟类class Clock extends Canvas implements Runnable{/****/private static final long serialVersionUID = -8190862918726517275L;Thread threadClock;int centerX,centerY,diameter;//圆心坐标、直径Image imageBuffer;public Clock(){centerX=centerY=200;diameter=300;setSize(400,400);threadClock=new Thread(this);threadClock.start();}public void run(){while(true){repaint();try{Thread.sleep(100);}catch(InterruptedException e){break;}}}public void update(Graphics g){Color backColor=Color.DARK_GRAY;Color hHandColor=Color.yellow;Color mHandColor=Color.green;Color sHandColor=Color.red;Color hPointColor=Color.red;Color mPointColor=Color.orange;//获得系统时间Calendar time=Calendar.getInstance();int second=time.get(Calendar.SECOND);int minute=time.get(Calendar.MINUTE);int hour=time.get(Calendar.HOUR_OF_DAY);if(hour>=12){hour-=12;}//画表盘imageBuffer=createImage(400,400);//不能在外面实例化Graphics graphBuffer=imageBuffer.getGraphics();graphBuffer.setColor(backColor);graphBuffer.fillRect(0, 0, 400, 400);double radius=(diameter>>1)*0.9;//画刻度for(int i=1;i<=12;i++){double buffer=Math.PI*(0.5-i/6.0);int posX=(int)Math.floor(centerX+radius*Math.cos(buffer)); int posY=(int)Math.floor(centerY+radius*Math.sin(buffer)); graphBuffer.setColor(hPointColor);graphBuffer.fill3DRect(posX-4, posY-4, 8, 8, true);for(int i=1;i<60;i++){if((i%5)!=0){double buffer=Math.PI*i/30.0;int posX=(int)Math.floor(centerX+radius*Math.cos(buffer));int posY=(int)Math.floor(centerY+radius*Math.sin(buffer));graphBuffer.setColor(mPointColor);graphBuffer.fill3DRect(posX-4, posY-4, 3, 3, false);}}//画数字graphBuffer.setFont(new Font("TimesRoman",Font.PLAIN,24));graphBuffer.setColor(Color.yellow);graphBuffer.drawString("9", centerX-125, centerY+8);graphBuffer.drawString("3", centerX+110, centerY+8);graphBuffer.drawString("12",centerX-15, centerY-110);graphBuffer.drawString("6", centerX-8, centerY+125);//指针半径double Sradius=(diameter>>1)*0.90;double Mradius=(diameter>>1)*0.80;double Hradius=(diameter>>1)*0.70;double posSecond=Math.PI*second/30.0;//秒针走过弧度double posMinute=Math.PI*(minute/30.0+second/1800.0);//分针走过弧度double posHour=Math.PI*(hour/6.0+minute/360.0);//时针走过弧度//画指针graphBuffer.setColor(hHandColor);graphBuffer.drawLine(centerX-3, centerY-3, (int)(Math.round(centerX+Hradius*Math.sin(posHour))),(int)(Math.round(centerY-Hradius*Math.cos(posHour))));graphBuffer.drawLine(centerX+3, centerY+3, (int)(Math.round(centerX+Hradius*Math.sin(posHour))),(int)(Math.round(centerY-Hradius*Math.cos(posHour))));graphBuffer.setColor(mHandColor);graphBuffer.drawLine(centerX-2, centerY-2, (int)(Math.round(centerX+Mradius*Math.sin(posMinute))),(int)(Math.round(centerY-Mradius*Math.cos(posMinute))));graphBuffer.drawLine(centerX+2, centerY+2, (int)(Math.round(centerX+Mradius*Math.sin(posMinute))),(int)(Math.round(centerY-Mradius*Math.cos(posMinute))));graphBuffer.setColor(sHandColor);graphBuffer.drawLine(centerX, centerY, (int)Math.round(centerX+Sradius*Math.sin(posSecond)),(int)Math.round(centerY-Sradius*Math.cos(posSecond)));graphBuffer.fillOval((int)Math.round(centerX+Sradius*Math.sin(posSecond))-5, (int)Math.round(centerY-Sradius*Math.cos(posSecond))-5,10,10);graphBuffer.fillOval(centerX-5, centerY-5, 10, 10);//画数字时钟graphBuffer.setColor(Color.white);graphBuffer.drawString(time.get(Calendar.HOUR_OF_DAY)+":"+minute+":"+second, centerX-50, centerY+80);//画完图片后,把图片载入画布paint(g);}public void paint(Graphics g){g.drawImage(imageBuffer,0,0,null); //在画布上加入图片}}参考文献 [1] 耿祥义张跃平, java大学实用教程. 电子工业出版社, 第二版. 2008年9月 [2]梁春燕java课程课件计总结(自己所做的主要工作与体会)设经过这次短短的一个礼拜的课程设计,发现自己的整体面向对象的编程能力大大提高,虽然相对于以前的实验更复杂,不过加强了对GUI、线程的等程序的练习。

相关文档
最新文档