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模拟时钟制作案例
美化指针
调用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();
数字时钟代码
数字时钟代码1. 介绍数字时钟是一种常见的显示时间的装置,它通过数字显示屏显示当前的小时和分钟。
本文档将介绍如何编写一个简单的数字时钟代码。
2. 代码实现以下是一个基本的数字时钟代码实现示例:import timewhile True:current_time = time.localtime()hour = str(current_time.tm_hour).zfill(2)minute = str(current_time.tm_min).zfill(2)second = str(current_time.tm_sec).zfill(2)clock_display = f"{hour}:{minute}:{second}"print(clock_display, end="\r")time.sleep(1)代码说明:- `time.localtime()` 函数返回当前时间的结构化对象,包括小时、分钟和秒等信息。
- `str(current_time.tm_hour).zfill(2)` 将小时转换为字符串,并使用 `zfill()` 方法填充到两位数。
- `str(current_time.tm_min).zfill(2)` 和`str(current_time.tm_sec).zfill(2)` 同理处理分钟和秒。
- 使用 f-string 格式化字符串 `clock_display`,将小时、分钟和秒显示为 `` 的形式。
- `print(clock_display, end="\r")` 使用 `\r` 实现覆盖打印,使得时钟在同一行连续显示。
- `time.sleep(1)` 让程序每隔一秒更新一次时间。
请注意,上述代码需要在支持 Python 的环境中运行。
3. 结束语通过以上的代码实现,我们可以编写一个简单的数字时钟。
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的钟表程序import java.awt.*;import java.util.*;import javax.swing.*;import java.awt.event.*;public class Clock extends JPanel{int CLOCK_RADIUS=200;int X_CENTER=300,Y_CENTER=300;static int second,minute,hour;static int year,month,day,week;int xSecond,ySecond;int xMinute,yMinute;int xHour,yHour;String timeStr,str1,str2,str3;static String dateStr;javax.swing.Timer timer;static String weekDisp[]={"一","二","三","四","五","六","日"};public Clock(){setBackground(Color.white);setSize(800,800);ActionListener clockTik=new ActionListener(){public void actionPerformed(ActionEvent ec){second++;if(second==60){second=0;minute++;}if(minute==60){minute=0;hour++;}if(hour==13) hour=1;repaint();}};new javax.swing.Timer(1000,clockTik).start();}public void paint(Graphics g){int xPos,yPos;double alfa;super.paint(g);for(int i=0,num=12;i<360;i+=6){alfa=Math.toRadians(i);xPos=X_CENTER+(int)(CLOCK_RADIUS*Math.sin(alfa));yPos=Y_CENTER-(int)(CLOCK_RADIUS*Math.cos(alfa));if(i%30==0){if (num%3==0)g.setColor(Color.red);elseg.setColor(Color.black);g.drawString(""+num,xPos-5,yPos+3);num=(num+1)%12;}else{g.setColor(Color.black);g.drawString(".",xPos,yPos);}}g.fillOval(X_CENTER-4,Y_CENTER-4,8,8); //表盘中心//画秒针xSecond=(int)(X_CENTER+(CLOCK_RADIUS-10)*Math.sin(second*(2*Math.PI/60)));ySecond=(int)(Y_CENTER-(CLOCK_RADIUS-10)*Math.cos(second*(2*Math.PI/60)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xSecond,ySecond);//画分针xMinute=(int)(X_CENTER+(CLOCK_RADIUS-40)*Math.sin((minute+second/60)*(2*3.14/60)));yMinute=(int)(Y_CENTER-(CLOCK_RADIUS-40)*Math.cos((minute+second/60)*(2*3.14/60)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xMinute,yMinute);//画时针xHour=(int)(X_CENTER+(CLOCK_RADIUS-70)*Math.sin((hour+minute/60+second/(60*60))*(2*3.14/12))); yHour=(int)(Y_CENTER-(CLOCK_RADIUS-70)*Math.cos((hour+minute/60+second/(60*60))*(2*3.14/12)));g.setColor(Color.red);g.drawLine(X_CENTER,Y_CENTER,xHour,yHour);//显示文字式样的时间if(hour<10)str1="0"+hour+":";elsestr1=hour+":";if(minute<10)str2="0"+minute+":";elsestr2=minute+":";if(second<10)str3="0"+second;elsestr3=second+"";timeStr=str1+str2+str3;g.setFont(new Font("隶书",Font.ITALIC,20));g.drawString(timeStr,X_CENTER-40,Y_CENTER+CLOCK_RADIUS+50);g.drawString(dateStr,X_CENTER-90,Y_CENTER-CLOCK_RADIUS-50);}public void paintComponent(Graphics g)// 该方法自动调用,每次重画背景时删去原来的表盘{super.paintComponent(g);}public static void main(String args[]){JFrame clockFrame=new JFrame("钟表--clock");Container contentPane=clockFrame.getContentPane();clockFrame.setSize(800,800);//获取系统时间Calendar calendar = new GregorianCalendar();/*Date date = new Date();calendar.setTime(date);*/second=calendar.get(Calendar.SECOND);minute=calendar.get(Calendar.MINUTE);hour=calendar.get(Calendar.HOUR);if(hour>12) hour=hour-12;year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);week=calendar.get(Calendar.DAY_OF_WEEK);dateStr=year+"年"+month+"月"+day+"日"+"星期"+weekDisp[week-1];Clock clock=new Clock();contentPane.add(clock,BorderLayout.CENTER);clockFrame.pack();clockFrame.setVisible(true);}}。
java课程设计小时钟
import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.Date;class Clock1 extends Canvas implements ActionListener{ Date date ;javax.swing.Timer secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;int a,b,c;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock1(){secondTime=new javax.swing.Timer(1000,this);pointSX[0]=0;pointSY[0]=-100;pointMX[0]=0;pointMY[0]=-90;pointHX[0]=0;pointHY[0]=-70;double angle=6*Math.PI/180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i]; pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle); pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i]; pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle); pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle); }for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+120;pointSY[i]=pointSY[i]+120;pointMX[i]=pointMX[i]+120;pointMY[i]=pointMY[i]+120;pointHX[i]=pointHX[i]+120;pointHY[i]=pointHY[i]+120;}secondLine=new Line2D.Double(0,0,0,0);muniteLine=new Line2D.Double(0,0,0,0);hourLine=new Line2D.Double(0,0,0,0);secondTime.start();}public void paint(Graphics g){for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){g.setColor(Color.red);g.fillOval(m-4,n-4,8,8);}else{g.setColor(Color.blue);g.fillOval(m-2,n-2,4,4);}}g.fillOval(115,115,10,10);Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.red);g_2d.draw(secondLine);BasicStroke bs=newBasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.blue);g_2d.draw(muniteLine);bs=newBasicStroke(6f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.black);g_2d.draw(hourLine);}public void actionPerformed(ActionEvent e){if(e.getSource()==secondTime){date=new Date();String s=date.toString();hour=Integer.parseInt(s.substring(11,13));munite=Integer.parseInt(s.substring(11,13));second=Integer.parseInt(s.substring(11,13));int h=hour%12;a=second;b=munite;c=h*5+munite/12;secondLine.setLine(120,120,(int)pointSX[a],(int)pointSY[a]);secondLine.setLine(120,120,(int)pointMX[b],(int)pointMY[b]);secondLine.setLine(120,120,(int)pointHX[c],(int)pointHY[c]);repaint();}}}public class Clock{public static void main(String args[]){javax.swing.JFrame win=new javax.swing.JFrame();win.setSize(400,400);win.add(new Clock1());win.setVisible(true);}}。
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课程设计报告电子钟
课程设计报告( 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钟表课程设计
java钟表课程设计一、教学目标本节课的学习目标包括:知识目标:学生需要掌握Java编程语言的基本语法和流程控制语句;理解面向对象编程的基本概念,如类、对象、封装、继承等。
技能目标:学生能够运用Java语言实现一个简单的钟表程序,包括时针、分针和秒针的移动,以及时间的显示;培养学生解决问题的能力和创新思维。
情感态度价值观目标:培养学生对编程的兴趣和热情,提高他们的自信心和自我成就感,培养团队合作意识和良好的编程习惯。
二、教学内容本节课的教学内容主要包括:1.Java编程语言的基本语法和流程控制语句,如变量、数据类型、运算符、条件语句、循环语句等。
2.面向对象编程的基本概念,如类、对象、封装、继承等,以及如何运用这些概念来实现一个简单的钟表程序。
3.钟表程序的实现,包括时针、分针和秒针的移动,以及时间的显示。
三、教学方法本节课的教学方法包括:1.讲授法:教师讲解Java编程语言的基本语法和流程控制语句,以及面向对象编程的基本概念。
2.案例分析法:教师通过分析一个简单的钟表程序的实现,引导学生理解和运用Java语言实现钟表功能。
3.实验法:学生分组进行实验,运用Java语言实现一个简单的钟表程序,培养学生的动手能力和创新思维。
四、教学资源本节课的教学资源包括:1.教材:Java编程语言的基础知识教材,用于引导学生学习基本语法和流程控制语句。
2.多媒体资料:PPT课件,用于展示钟表程序的实现过程和示例代码。
3.实验设备:计算机和网络设备,用于学生分组进行实验,实现钟表程序。
五、教学评估本节课的评估方式包括:1.平时表现:评估学生的出勤、课堂参与度、提问回答等情况,以了解学生的学习态度和积极性。
2.作业:评估学生提交的作业,包括钟表程序的代码实现和相关的练习题,以检验学生对Java编程语言和钟表程序的理解和掌握程度。
3.考试:设计一份考试,包括选择题、填空题和编程题,以全面评估学生对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完整代码
漂亮时钟java完整代码这个时钟是用java写的,我觉得很完美,其中加载了声音和背景图片,我会把图片贴在这里,至于背景音乐可以根据自己的需要改动,程序运行后效果如下:今天把这个程序贴在这里,希望能帮到学习java的学弟学妹们。
源代码如下:import java.applet.Applet;import java.applet.AppletContext;import java.applet.AudioClip;import java.awt.*;import java.awt.event.*;import java.io.PrintStream;import java.util.Date;public class Clock extends Applet implements Runnable{Thread th1 = null;Image offScreenImage = null;Graphics offScreen = null;Image picture = null;int icount = 0;AudioClip song;private String n="look! My clock!";private String m="made by:";private String p="jessie with the number 200501109";public Clock(){}public void init(){try{offScreenImage = createImage(800, 600);offScreen = offScreenImage.getGraphics();}catch(Exception _ex){offScreen = null;}picture = getImage(getCodeBase(), "Clockscreen.jpg");song=getAudioClip(getCodeBase(),"song.wav");song.loop();//加载声音}public void start(){th1 = new Thread(this);th1.start();}public void stop(){th1 = null ;}public static int vectorX(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.cos((double)k * 2 * Math.PI / 360));return l;}public static int vectorY(int i, int h, int j){int k = (i + h) % 360;int l = (int)((double)j* Math.sin((double)k * 2 * Math.PI / 360));return l;}public void run(){Thread.currentThread().setPriority(5);do{try{Thread.sleep(1000);}catch(InterruptedException _ex) { }repaint();}while(true);}public void paint(Graphics g) //防止闪屏{update(g);}public synchronized void update(Graphics g){if(offScreen != null){paintApplet(offScreen);g.drawImage(offScreenImage, 0, 0, this);return;}else{paintApplet(g);return;}}public void paintApplet(Graphics g)//具体画页面{g.setColor(Color.white);g.fillRect(0, 0, 677, 555);g.drawImage(picture, 0, 0, this);g.setColor(Color.pink); //设置字体颜色g.setFont(newFont("Arial",Font.PLAIN,24)); //设置文本字体和大小g.drawString(n,20,50); //写文本“look!My clock!”g.drawString(m,200,510); //写文本"made by:"g.drawString(p,300,550);//写文本"jessie with thenumber 200501109"g.setColor(Color.pink);//画表盘g.drawOval(425,58,200,200);g.drawOval(415,48,220,220);for(int x=0;x<360;x+=6){if(x%5!=0){int u1=vectorX(x,270,100);int v1=vectorY(x,270,100);int u2=vectorX(x,270,110);int v2=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u1,158+v1,525+u2,158+v2);}else{int u3=vectorX(x,270,90);int v3=vectorY(x,270,90);int u4=vectorX(x,270,110);int v4=vectorY(x,270,110);g.setColor(Color.pink);g.drawLine(525+u3,158+v3,525+u4,158+v4);}};String s1="12";String s2="3";String s3="6";String s4="9";g.setColor(Color.pink);g.drawString(s1,505,50);g.drawString(s2,635,165);g.drawString(s3,520,285);g.drawString(s4,400,165);g.setColor(Color.pink);g.fillOval(522,155,6,6);//表盘中心的圆点和圆圈g.setColor(Color.yellow);g.drawOval(518,149,14,14);Date date = new Date();int i = date.getMinutes();int j = i * 6;int kk = (date.getHours() ) % 24;g.setFont(new Font("Helvetica", 1, 28));//设置字体,显示数码时间;String s = new String();s = kk+ ":" + date.toString().substring(14, 19);g.setColor(Color.pink);g.drawString(s,465, 320);int k= (date.getHours() ) % 12;//开始获取时间经过计算画出时针、分针、秒针int l = k * 30 + (i / 12) * 6;int a = vectorX(l,255,63);int b= vectorY(l,255,63);int c = vectorX(l,270,63);int d= vectorY(l,270,63);int x1[]={525,525+a/4,525+c};int y1[]={158,158+b/4,158+d};g.setColor(Color.pink);g.fillPolygon(x1,y1,3);int a1 = vectorX(j,255,73);int b1= vectorY(j,255,73);int c1= vectorX(j,270,73);int d1= vectorY(j,270,73);int x2[]={525,525+a1/4,525+c1};int y2[]={158,158+b1/4,158+d1};g.setColor(Color.pink);g.fillPolygon(x2,y2,3);int k1 = date.getSeconds() * 6;int a2 = vectorX(k1,255,85);int b2= vectorY(k1,255,85);int c2 = vectorX(k1,270,85);int d2= vectorY(k1,270,85);int x3[]={525,525+a2/4,525+c2};int y3[]={158,158+b2/4,158+d2};g.setColor(Color.pink);g.fillPolygon(x3,y3,3);}}然后还有html文件,容如下:<HTML><BODY><APPLET CODE="Clock.class"HEIGHT=597 WIDTH=773></APPLET> </BODY></HTML>其中的图片如下。
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实验⼀:写⼀个桌⾯时钟⼀共有三个类:这个是第⼀个,主函数类: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简易电子时钟代码
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import java.text.SimpleDateFormat;public class ClockJFrame extends JFrame{private Date now=new Date();Panel buttons=new Panel();Button button_start=new Button("启动");Button button_interrupt=new Button("停止");Clock label=new Clock();public ClockJFrame() //构造方法{super("电子时钟");this.setBounds(300,240,300,120);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLayout(new BorderLayout());this.getContentPane().add("North",label);//初始化一个容器,用来在容器上添加一个标签this.getContentPane().add("South",buttons);buttons.setLayout(new FlowLayout());buttons.add(button_start);buttons.add(button_interrupt);setVisible(true);}private class Clock extends Label implements ActionListener,Runnable{ private Thread clocker=null;private Date now=new Date();public Clock(){button_start.addActionListener(this);button_interrupt.addActionListener(this);SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);}public void start(){if(clocker==null){clocker=new Thread(this);clocker.start();}}public void stop(){clocker=null;}public void run(){Thread currentThread=Thread.currentThread();while(clocker==currentThread){now=new Date();SimpleDateFormat dateFormat = newSimpleDateFormat("HH:mm:ss");//可以方便地修改日期格式String t = dateFormat.format( now );this.setText(t);try{clocker.sleep(1000);}catch(InterruptedException ie){JOptionPane.showMessageDialog(this,"Thread error:+ie");}}}public void actionPerformed(ActionEvent e){if (e.getSource()==button_start) {clocker = new Thread(this); //重新创建一个线程对象clocker.start();button_start.setEnabled(false);button_interrupt.setEnabled(true);}if (e.getSource()==button_interrupt) //单击中断按钮时{clocker.stop(); //设置当前线程对象停止标记button_start.setEnabled(true);button_interrupt.setEnabled(false);}}}//内部类结束public static void main(String[] args) {ClockJFrame time=new ClockJFrame();}}运行结果:。
java程序 时钟
第一步:新建一个WinForm的工程,添加一个UserControl的派生类取名ClockControl. 第二步:DoubleBuffered属性设为true, 防止闪烁,也可以自己用MemBitmap来做,不过.NET提供了方便的DoubleBuffered,这点比C++好方便太多了。
第三步:添加一个Timer,定时时间为1000(1 Second),即每秒刷新一次,取当前的时间。
Timer的Tick事件代码如下:private void clockTimer_Tick(object sender, EventArgs e){Invalidate();}第四步:Overright OnPaint 直接看代码吧protected override void OnPaint(PaintEventArgs e){Graphics g = e.Graphics;// init the origing.TranslateTransform(this.Width / 2.0f, this.Height / 2.0f);int dialRadius = Math.Min(this.Width, this.Height) / 2;// Draw the clock dialGraphicsState state = g.Save();for (int i = 0; i<60; i++){int radius = 15;if (i % 5 == 0)radius = 25;g.FillEllipse(Brushes.Blue, new Rectangle(-radius / 2, -dialRadius, radius, r adius));g.RotateTransform(360 / 60);}g.Restore(state);// Get current timeDateTime now = DateTime.Now;// Draw hour handstate = g.Save();g.RotateTransform((Math.Abs(now.Hour - 12) + now.Minute / 60f ) * 360f / 12f);g.FillRectangle(Brushes.Black, new Rectangle(-5, -dialRadius + 50, 10, dialR adius - 40));g.Restore(state);// Draw Minute handstate = g.Save();g.RotateTransform((now.Minute + now.Second / 60f) * 360f / 60f);g.FillRectangle(Brushes.DarkGreen, new Rectangle(-3, -dialRadius + 30, 6, d ialRadius - 15));g.Restore(state);// Draw Second handstate = g.Save();g.RotateTransform(now.Second * 360f / 60f);g.FillRectangle(Brushes.Red, new Rectangle(-1, -dialRadius + 10, 2, dialRadi us));g.Restore(state);}简单说明一下,这个Control主要使用GDI+的Transform函数,用g.TranslateTransform(this.Width / 2.0f, this.Height / 2.0f);把坐标原点移动到中心,使用RotateTransform来旋转角度实现时钟的表皮和指针的不同位置。
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图形时钟源代码
import java.awt.Container;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.MediaTracker;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JPanel;public class clock extends JFrame{/****/private static final long serialVersionUID = 1L;ImagePane imagePane[];String mypic;static Calendar now;static Float s;static Float m;static Float h;class s extends Thread{public void run(){while(true) {gettime();s = (float)(now.get(Calendar.SECOND) * 6);// 获得秒转换成度数,每秒转1次(1/60圆周)imagePane[0].ratoteImage(s*Math.PI/180);//秒针旋转try {Thread.sleep(1000);}catch (Exception ex) {}}}}class m extends Thread{public void run(){while(true) {gettime();m = (float)(now.get(Calendar.MINUTE) *6+Math.rint(now.get(Calendar.SECOND)/15)*1.5);// 获得分钟,每15秒转1次(1/24圆周) imagePane[1].ratoteImage(m*Math.PI/180);//分针旋转try {Thread.sleep(15000);}catch (Exception ex) {}}}}class h extends Thread{public void run(){while(true) {gettime();h = (float)((now.get(Calendar.HOUR_OF_DAY) - 12) * 30+Math.rint(now.get(Calendar.MINUTE)/2));// 获得小时,每12分转1格imagePane[2].ratoteImage(h*Math.PI/180);//时针旋转try {Thread.sleep(120000);}catch (Exception ex) {}}}}public static void gettime(){now = new GregorianCalendar();}public clock(){super("java时钟"); //调用父类构造函数imagePane=new ImagePane[4];Container container=getContentPane(); //得到窗口容器for(int i=0;i<4;i++){imagePane[i]=new ImagePane();imagePane[i].setOpaque(false);//设置透明imagePane[i].loadImage("image/"+(3-i)+".png"); //装载图片imagePane[i].setBounds(0, 0, 500, 600);//设置位置container.add(imagePane[i]); //增加组件到容器上}}public static void main(String[] args){clock hh=new clock();Thread ts=hh.new s();Thread tm=hh.new m();Thread th=hh.new h();gettime();//取得当前时间ts.start();tm.start();th.start();hh.setSize(520,620); //设置窗口尺寸hh.setVisible(true); //设置窗口可视hh.setResizable(false);//不可改变大小hh.setLocationRelativeTo(null);//居中hh.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class ImagePane extends JPanel {/****/private static final long serialVersionUID = 1L;Image image;BufferedImage bufImage; //用于显示的缓冲区图像BufferedImage originalBufImage; //原始缓冲区图像Graphics2D bufImageG; //缓冲区图像的图形环境public void loadImage(String fileName) {image = this.getToolkit().getImage(fileName); //取得图像MediaTracker mt = new MediaTracker(this); //实例化媒体加载器mt.addImage(image, 0); //增加图像到加载器中try {mt.waitForAll(); //等待图片加载} catch (Exception ex) {ex.printStackTrace(); //输出出错信息}originalBufImage = newBufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //创建原始缓冲区图像bufImage = originalBufImage;bufImageG = bufImage.createGraphics(); //创建bufImage的图形环境bufImageG.drawImage(image, 0, 0, this); //传输源图像数据到缓冲区图像中repaint(); //重绘组件}//过滤图像public void ratoteImage(double angle) {if (bufImage == null)return; //如果bufImage为空则直接返回BufferedImage filteredBufImage =newBufferedImage(image.getWidth(this) ,image.getHeight(this),BufferedImage.TYPE_INT_ARGB); //过滤后的图像AffineTransform transform = new AffineTransform(); //仿射变换对象transform.rotate(angle,image.getWidth(this)/2 ,image.getHeight(this)/2); //旋转图像AffineTransformOp imageOp = new AffineTransformOp(transform, null);//创建仿射变换操作对象imageOp.filter(originalBufImage, filteredBufImage);//过滤图像,目标图像在filteredBufImagebufImage = filteredBufImage; //让用于显示的缓冲区图像指向过滤后的图像repaint(); //重绘组件}//重载容器的paintComponent()方法public void paint(Graphics g) {super.paintComponent(g);if (bufImage != null) {Graphics2D g2 = (Graphics2D) g;g2.drawImage(bufImage,0,0,this); //绘制图片}}}}。
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 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
时钟(LED方式)java课程设计
摘要随着经济全球化的发展,推动生活节奏的加快,也给时间赋予了更重要的意义。
基于方便人们更好的掌握时间,我设计出了这个小时钟。
本时钟是一个基于Java语言设计而成的一个小程序,目的是显示日期和时间,并且能调准时钟。
整个程序从符合操作简便、界面友好、灵活使用的要求出发,完成调用、调整的全过程。
本课程设计报告介绍了时钟的构成,论述了目标功能模块;给出了时钟设计的步骤。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
关键字时钟,Java程序设计,面向对象,设计目录摘要..............................................................................................................................- 1 - 1前言..........................................................................................................................- 3 -1.1 课程设计目的 ....................................................................................................- 3 -1.2 课程设计的实验环境..........................................................................................- 3 -1.3 课程设计的预备知识..........................................................................................- 3 -1.4 课程设计要求 ....................................................................................................- 3 -2 可行性分析................................................................................................................- 4 -2.1 社会可行性........................................................................................................- 4 -2.2 市场可行性........................................................................................................- 4 -2.3 技术可行性........................................................................................................- 4 -2.4 经济可行性........................................................................................................- 4 -3 总体设计....................................................................................................................- 5 -3.1开发平台 ............................................................................................................- 5 -3.2时钟功能的概述..................................................................................................- 5 -3.3时钟数字显示 .....................................................................................................- 5 -3.3时钟指针显示 .....................................................................................................- 5 -3.4时钟的设置.........................................................................................................- 5 -4 代码设计....................................................................................................................- 6 -4.1 部分源码............................................................................................................- 6 -5 界面设计....................................................................................................................- 9 -5.1课程设计主要内容 ..............................................................................................- 9 -5.2概要设计 ............................................................................................................- 9 -5.2.1自定义类说明...........................................................................................- 9 -5.3表单设计 .......................................................................................................... - 10 -5.4 界面展示.......................................................................................................... - 11 -5.4.1日期的界面 ............................................................................................ - 11 -5.4.2 部分代码 ............................................................................................... - 11 -5.4.3 时间的界面............................................................................................ - 12 -5.4.4 部分代码 ............................................................................................... - 12 -5.4.5整体界面................................................................................................ - 14 - 6结束语....................................................................................................................... - 15 - 参考文献................................................................................................................ - 16 -攀枝花学院java课程设计前言1 前言1.1 课程设计目的《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)状态的可切换通过调整框图的大小,可以在数字时钟和指针时钟之间进行切换。
(3)可随时更改时钟时间可以通过左下方的设置时间,即可更改显示时间及日历。
1.2 任务分工第2章时钟的设计2.1时钟功能的概述本时钟不但可以显示数字时钟和钟表时钟,还可以通过调整框图的大小,可以在数字时钟和指针时钟之间进行切换。
2.1.1时钟数字显示运行程序后,可以直接看到数字型的时钟2.1.2时钟指针显示由于打开程序框的框图太小,无法清晰显示指针,我们将指针放在大框图下显示2.1.2时钟的设置本程序可以通过点击左下标的设置键进行调整校对时钟,同时还可以显示日历项第3章时钟的具体实现3.1界面设计界面设计中有用到swing组件的Button,3.1.1程序流程图开始Main()Clock()repaint()paint()drawclock()3.1.1显示数字时钟效果部分代码://在窗体上显示时间String st;if(nowh<10) st="0"+nowh;else st=""+nowh;if(nows%2==0) st+=" ";else st+=":";if(nowm<10) st+="0"+nowm;else st+=nowm;g.setColor(getBackground());g.fillRect(L,T,120,100);g.setFont(new Font("Digital",Font.PLAIN,44));g.setColor(new Color(0,255,0,55));g.drawString("88:88",L+15,T+57);g.setColor(Color.white);g.drawString(st,L+15,T+57);//在窗体显示秒数3.1.2显示指针时钟完全效果图部分代码://绘制图像public void paint(Graphics g){//参数定义区Graphics2D g2D = (Graphics2D)g;Insets insets = getInsets();int L = insets.left/2,T = insets.top/2;//L和T分别是窗口边缘宽度的一半h = getSize().height;w = getSize().width;//h为窗口高度g2D.setColor(Color.white);//设置前景色为白色r=h/2-L-T-5;//计算半径r的值x0=130+r-5+L;//计算圆心坐标y0=h/2+T-L;int fs;//调整窗口大小使合适if(h<100) h=100;this.setSize(x0+r+2*L+5,h);if(h>150) set.setLocation(2,h-60);else set.setLocation(0,350);//获取当前时间Calendar now= new GregorianCalendar();int nowh= now.get(Calendar.HOUR_OF_DAY); int nowm= now.get(Calendar.MINUTE);int nows= now.get(Calendar.SECOND);int noww= now.get(Calendar.DAY_OF_WEEK); //绘制时钟上的59个点ang=-90;if (h<150){if (nows==0){g.setColor(Color.black);g.fillRect(L+120,T,w-120,h);}g2D.setStroke(new BasicStroke(1f));for(int i=1;i<=nows;i++){x=(int)((r-3)*Math.cos(RAD*ang)+x0);y=(int)((r-3)*Math.sin(RAD*ang)+y0);g.setColor(Color.white);g.drawLine(x,y,x,y);ang+=(360.0/59.0);}}//绘制时钟上的60个点else {g2D.setStroke(new BasicStroke((1+h/100)/2));for(int i=1;i<=60;i++){x=(int)((r-3)*Math.cos(RAD*ang)+x0);y=(int)((r-3)*Math.sin(RAD*ang)+y0);g.setColor(Color.white);g.drawLine(x,y,x,y);ang-=6;}}//绘制时钟上的12个点ang=60;g2D.setStroke(new BasicStroke(1+h/100));for(int i=1;i<=12;i++){x=(int)((r)*Math.cos(RAD*ang)+x0);y=(int)((r)*Math.sin(RAD*ang)+y0);g.drawLine(x,y,x,y);ang-=30;}3.1.3设置窗口效果图部分代码:set.addActionListener(new ActionListener(){//按钮添加监听public void actionPerformed(ActionEvent e){try {Process p=Runtime.getRuntime().exec( "control.exe Timedate.cpl");//调用Windows时间设置}catch(Exception m){}}});第4章结束语本程序基本完成了实验要求包括时钟的显示、数字日期的显示、秒表的设定并能完美的进行时间的任意设定。
在代码的编写过程中错遇到的大困难有两个:一是对于钟表的绘制,开始利用graphics对钟表进行绘制。
至此,程序已能完成各项基本要求的功能,我得意之处在时间的设定,该方法虽然笨,但是很实用!但是不足之处在于秒表停止之后再点击Start不能继续计时,即秒表只能使用一次,要解决这个问题,应该要参考更多线程方面的书本。
为使程序更美观,还可以对界面的背景设置图片,为时钟增加声音,甚至添加闹钟功能,以使程序更完善,使用上更人性化。
致谢附录源代码import javax.swing.*;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.awt.*;import java.util.Calendar;import java.util.GregorianCalendar;import java.io.*;class Clock extends JFrame{//参数定义区intx,y,x0,y0,r,h,w,olds_x=-100,olds_y,oldm_x,oldm_y,oldh_x,oldh_y,hh,old_h;//x0,y0圆心double ang,mm,ss,old_m;final double RAD=Math.PI/180;//定义弧度、角度转换常数JButton set;//"设置"按钮Icon icon;//按钮图片//Clock构造方法public Clock(){super("时钟");// 窗口标题“时钟”setDefaultCloseOperation(EXIT_ON_CLOSE);//定义窗口“关闭按钮”事件为关闭窗口setSize(250,100);//设置窗口初始大小setBackground(new Color(0,0,0,255));//设置背景颜色为黑色setLocation(300,100);//设置窗口初始位置setResizable(true);//窗口大小可调setVisible(true);//窗口可见this.setLayout(null);//设置布局为空icon=new ImageIcon("set.png");set=new JButton(icon);set.setMnemonic(KeyEvent.VK_ALT);//设置按钮快捷键为:“Alt”set.setSize(20,20);//按钮大小add(set);set.addActionListener(new ActionListener(){//按钮添加监听public void actionPerformed(ActionEvent e){try {Process p=Runtime.getRuntime().exec( "control.exe Timedate.cpl");//调用Windows时间设置}catch(Exception m){}}});//添加计时器时间间隔为0.1sint delay = 100;ActionListener drawClock = new ActionListener(){public void actionPerformed(ActionEvent evt){repaint();//重画界面}};new Timer(delay,drawClock).start();}//绘制图像public void paint(Graphics g){//参数定义区Graphics2D g2D = (Graphics2D)g;Insets insets = getInsets();int L = insets.left/2,T = insets.top/2;//L和T分别是窗口边缘宽度的一半h = getSize().height;w = getSize().width;//h为窗口高度g2D.setColor(Color.white);//设置前景色为白色r=h/2-L-T-5;//计算半径r的值x0=130+r-5+L;//计算圆心坐标y0=h/2+T-L;int fs;//调整窗口大小使合适if(h<100) h=100;this.setSize(x0+r+2*L+5,h);if(h>150) set.setLocation(2,h-60);else set.setLocation(0,350);//获取当前时间Calendar now= new GregorianCalendar();int nowh= now.get(Calendar.HOUR_OF_DAY);int nowm= now.get(Calendar.MINUTE);int nows= now.get(Calendar.SECOND);int noww= now.get(Calendar.DAY_OF_WEEK);//绘制时钟上的59个点ang=-90;if (h<150){if (nows==0){g.setColor(Color.black);g.fillRect(L+120,T,w-120,h);}g2D.setStroke(new BasicStroke(1f));for(int i=1;i<=nows;i++){x=(int)((r-3)*Math.cos(RAD*ang)+x0);y=(int)((r-3)*Math.sin(RAD*ang)+y0);g.setColor(Color.white);g.drawLine(x,y,x,y);ang+=(360.0/59.0);}}//绘制时钟上的60个点else {g2D.setStroke(new BasicStroke((1+h/100)/2));for(int i=1;i<=60;i++){x=(int)((r-3)*Math.cos(RAD*ang)+x0);y=(int)((r-3)*Math.sin(RAD*ang)+y0);g.setColor(Color.white);g.drawLine(x,y,x,y);ang-=6;}}//绘制时钟上的12个点ang=60;g2D.setStroke(new BasicStroke(1+h/100));for(int i=1;i<=12;i++){x=(int)((r)*Math.cos(RAD*ang)+x0);y=(int)((r)*Math.sin(RAD*ang)+y0);g.drawLine(x,y,x,y);ang-=30;}//在窗体上显示时间String st;if(nowh<10) st="0"+nowh;else st=""+nowh;if(nows%2==0) st+=" ";else st+=":";if(nowm<10) st+="0"+nowm;else st+=nowm;g.setColor(getBackground());g.fillRect(L,T,120,100);g.setFont(new Font("Digital",Font.PLAIN,44)); g.setColor(new Color(0,255,0,55));g.drawString("88:88",L+15,T+57);g.setColor(Color.white);g.drawString(st,L+15,T+57);//在窗体显示秒数fs=r/9+17;//计算字体大小g.drawLine(L+120+10,T+10,L+120+10,T+10);if(nows<10) st="0"+nows;else st=""+nows;g.setColor(new Color(0,0,0));g.fillRect(x0-fs/2,2*r/3+y0-3*fs/4,fs,3*fs/4);g.setFont(new Font("Digital",Font.PLAIN,fs));g.setColor(new Color(255,255,255,55));g.drawString("88",x0-fs/2,2*r/3+y0);g.setColor(Color.white);g.drawString(st,x0-fs/2,2*r/3+y0);g.drawLine(L+120+10,T+10,L+120+10,T+10);//显示AM、PMif(nowh<12) st="AM";else st="PM";g.setColor(new Color(0,0,0));g.fillRect(x0-fs/2,y0-2*r/3,fs,3*fs/4);g.setFont(new Font("IrisUPC",Font.BOLD,fs));g.setColor(Color.white);g.drawString(st,x0-fs/2,y0-2*r/3+3*fs/4);//显示星期switch (noww){case 1: st="Sunday";break;case 2: st="Monday";break;case 3: st="Tuesday";break;case 4: st="Wednesday";break;case 5: st="Tursday";break;case 6: st="Friday";break;case 7: st="Saturday";break;}fs=25;g.setColor(new Color(0,0,0));g.fillRect(2*L+15,T+75,fs,3*fs/4);g.setFont(new Font("Computerfont",Font.BOLD,fs));g.setColor(Color.white);g.drawString(st,2*L+15,T+75+fs);//计算时间与度数的关系if(h>=150){ss=90-nows*6;mm=90-nowm*6-(0.1*nows);hh=90-nowh*30-nowm/2;g.setColor(new Color(255,255,255));g.fillOval(x0-2-h/150,y0-2-h/150,4+h/75,4+h/75); //擦除秒针g2D.setStroke(new BasicStroke(1f));if(olds_x>0){g.setColor(getBackground());g.drawLine(x0,y0,olds_x,2*y0-olds_y);}else{old_m = mm;old_h = hh;}//绘制秒针x=(int)(r*0.9*Math.cos(RAD*ss))+x0;y=(int)(r*0.9*Math.sin(RAD*ss))+y0;g.setColor(Color.white);g.drawLine(x0,y0,x,2*y0-y);olds_x=x;olds_y=y;g2D.setStroke(new BasicStroke(1.5f));//擦除分针if(old_m!=mm){g.setColor(getBackground());g.drawLine(x0,y0,oldm_x,2*y0-oldm_y);}//绘制分针x=(int)(r*0.7*Math.cos(RAD*mm))+x0;y=(int)(r*0.7*Math.sin(RAD*mm))+y0;g.setColor(Color.white);g.drawLine(x0,y0,x,2*y0-y);oldm_x=x;oldm_y=y;old_m=mm;g2D.setStroke(new BasicStroke(2f));//擦除时针if(old_h!=hh){g.setColor(getBackground());g.drawLine(x0,y0,oldh_x,2*y0-oldh_y);}//绘制时针x=(int)(r*0.5*Math.cos(RAD*hh))+x0;y=(int)(r*0.5*Math.sin(RAD*hh))+y0;g.setColor(Color.white);g.drawLine(x0,y0,x,2*y0-y);oldh_x=x;oldh_y=y;old_h=hh;}}//主方法public static void main(String[] args){Clock c = new Clock();//创建一个Clock对象}}。