Java微波炉倒计时软件设计报告
JAVA计时器(秒表)程序代码

Java计时器(秒表)功能:能实现计时,暂停,清零,记录功能。
如下图:程序运行状态:源代码:import javax.swing.*;import java.awt.*;import .*;public class Test {public static void main(String[] args){new window("计时器");}}class window extends JFrame{int ON=0,i=0,j=0,k=0,count=0,num=1,R=0;JButton button1,button2,button3,button4,button5; JTextField file1,file2,file3;JTextArea file;FlowLayout flow;String a,b,c;window(String name){file1=new JTextField(2);file2=new JTextField(2);file3=new JTextField(2);file1.setEditable(false);file2.setEditable(false);file3.setEditable(false);file=new JTextArea(10,8);file.setEditable(false);button1=new JButton("开始");button2=new JButton("暂停");button3=new JButton("清零");button4=new JButton("记录");button5=new JButton("清空记录");flow=new FlowLayout();flow.setAlignment(FlowLayout.LEFT); flow.setHgap(20);flow.setVgap(10);setTitle(name);setSize(210,400);setLayout(flow);add(file1);add(new JLabel(":"));add(file2);add(new JLabel(":"));add(file3);add(button1);add(button2);add(button3);add(button4);add(button5);add(file);setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); file1.setText("0");file2.setText("0");file3.setText("0");validate();button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ON=1; //开始,暂停控制开关}}); //开始按钮button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ ON=0;}}); //暂停按钮button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ R=1; //清零控制开关}}); //清零按钮button4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){count=1; //记录控制开关a=String.valueOf(i);b=String.valueOf(j);c=String.valueOf(k);}}); //记录按钮button5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){file.setText("");num=1;}}); //清除记录按钮while(true){validate();if(ON==1) //开始或暂停判断{file1.setText(String.valueOf(i));file2.setText(String.valueOf(j));file3.setText(String.valueOf(k));if(k==99){k=-1;j++;}if(j==60){k=0;j=0;i++;}if(i==24){i=0;j=0;k=0;}try{Thread.sleep(10);}catch(Exception e){}k++;}if(count==1)//记录判断{file.append(String.valueOf(num));file.append(". ");file.append(a);file.append(":");file.append(b);file.append(":");file.append(c);file.append("\n");num++;count=0;}if(R==1)//清零判断{i=j=k=0;file1.setText(String.valueOf(i));file2.setText(String.valueOf(j));file3.setText(String.valueOf(k));R=0;}}}}。
倒计时计时器设计报告

倒计时计时器设计任务和要求:一.设计任务:1.完成电路的理论设计2.参数的计算和有关器件的选择(分定时,秒计时,译码显示)3.对电路进行仿真4.撰写设计报告书一份:A3图纸最少一张,报告书要求写下以下内容(1)总体方案的选择和设计(2)各个单元电路的选择和设计(3)仿真电路的实现二.设计要求:用三个可置数的减计数器组成三位二-十进制减计数器,用三个译码器和三个LED数码管显示器,CMOS组成秒/分选择器,另外有控制电路,控制器随着计数器的状态发生变化,计数期间,用电气开关断开,当计时完毕时,用电气开关闭合。
倒计时计时器设计报告目录一、设计任务和要求 (1)二、设计的方案的选择与论证 (2)三、电路设计计算与分析 (3)3.1 脉冲发生电路3.2 计数器电路3.3 译码显示电路3.4 控制电路四、总结心得 (4)五、附录 (5)六、参考文献 (6)总的设计电路图地址:。
该设计是本原创设计,一切本人想要的功能均已实现,还望尊重我的劳动成果,谢绝转载,多谢配合!功能的实现我是在proteus中仿真的。
一、设计的方案的选择与论证通过对设计任务和要求的分析,可以确定该系统应包括秒脉冲发生器、减法计数器、译码显示电路、控制电路和报警电路等5个部分构成。
其中,计数器和控制电路是系统的主要部分。
倒计时计数器完成秒/分计时功能,而控制电路具有直接控制计数器的启动计数、暂停、连续计数、译码显示电路的显示和灭灯功能以及工作时间的调节。
为了满足系统的设计要求,在设计控制电路时,要先分析明白各个信号之间的时序关系。
在操作直接清零开关时,要求计数器清零,数码显示器显示零。
当启动开关闭合时,控制电路应封锁时钟信号CP,通过开关使计数器完成置数功能,译码显示电路显示相应时间字样;当启动开关断开时,计数器开始计数;当按下百位调节开关时,计数器加1;当按下十位调节开关时,计数器加1;当按下个位调节开关时,计数器同样加1;当暂停、连续开关拨在暂停位置上时,计数器停止计数,处于保持状态;当暂停、连续开关拨在连续时,计数器继续递减计数。
java课程设计微波炉

java课程设计微波炉一、教学目标本章节的教学目标为:1.知识目标:使学生掌握Java编程语言的基本语法和编程技巧,了解微波炉的基本原理和工作机制。
2.技能目标:培养学生运用Java编程语言实现微波炉相关功能的能力,提高学生的编程实践能力。
3.情感态度价值观目标:培养学生对科学探究的兴趣,增强学生对编程和工程技术领域的认同感和自信心。
二、教学内容本章节的教学内容为:1.Java编程语言的基本语法和编程技巧。
2.微波炉的基本原理和工作机制。
3.使用Java编程语言实现微波炉的相关功能,如加热、解冻、烧烤等。
三、教学方法本章节的教学方法为:1.讲授法:讲解Java编程语言的基本语法和编程技巧,微波炉的基本原理和工作机制。
2.案例分析法:分析微波炉的实际案例,引导学生运用Java编程语言解决实际问题。
3.实验法:学生动手实践,编写Java程序实现微波炉的相关功能。
四、教学资源本章节的教学资源包括:1.教材:《Java编程语言基础》2.参考书:《Java编程实践》3.多媒体资料:微波炉工作原理演示视频4.实验设备:计算机、编程环境、微波炉模型五、教学评估本章节的教学评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的30%。
2.作业:评估学生提交的作业质量,包括编程练习和课后思考题,占总评的30%。
3.考试:期末进行一次Java编程相关的考试,测试学生的知识掌握和技能应用能力,占总评的40%。
六、教学安排本章节的教学安排如下:1.课时:共计16课时,每课时45分钟。
2.时间:安排在每周三和周五的下午第三节课。
3.地点:计算机实验室。
七、差异化教学本章节差异化教学策略包括:1.对于编程基础较好的学生,提供进阶的编程项目和实验,挑战他们的编程能力。
2.对于编程基础薄弱的学生,提供额外的辅导和练习,帮助他们巩固基础知识。
3.鼓励学生根据自己的兴趣选择不同的编程项目,激发他们的学习热情。
java窗口倒计时课程设计

java窗口倒计时课程设计一、课程目标知识目标:1. 理解Java图形用户界面(GUI)编程的基础知识,掌握窗口(Frame)的创建和使用。
2. 学习使用Java的事件处理机制,掌握倒计时功能的设计与实现。
3. 掌握线程(Thread)的概念及运用,实现动态时间显示。
技能目标:1. 能够运用Swing组件创建一个简单的窗口程序。
2. 能够独立编写事件监听器,实现按钮等控件的交互功能。
3. 能够运用线程实现倒计时功能,并掌握线程同步和通信。
4. 能够对程序进行调试和优化,解决常见的运行错误。
情感态度价值观目标:1. 培养学生的逻辑思维能力和问题解决能力,增强对编程的兴趣和自信心。
2. 培养学生的团队协作精神,学会在项目开发中相互支持和沟通。
3. 培养学生严谨的学习态度,养成良好的编程习惯,关注程序的可读性和可维护性。
课程性质:本课程为实践性较强的课程,结合Java编程知识,培养学生的实际操作能力。
学生特点:学生已经具备基本的Java编程知识,有一定的独立编程能力,但对图形用户界面编程和线程控制尚不熟悉。
教学要求:教师需引导学生通过实践操作,掌握Java窗口倒计时编程的核心知识,注重培养学生的动手能力和实际应用能力。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生能够达到预定的学习目标。
通过课程学习,使学生能够将所学知识应用于实际项目中,提高解决实际问题的能力。
二、教学内容1. Java GUI编程基础:- Swing库简介- JFrame窗口的创建与设置- 常用组件的使用(如按钮、文本框、标签等)- 事件处理机制(事件、事件监听器、事件适配器)2. 倒计时功能设计:- 倒计时逻辑分析- 定时器(Timer)的使用- 时间格式化与显示- 倒计时核心代码编写与调试3. 线程控制:- 线程的概念与创建- 线程的生命周期- 线程同步与通信- 线程安全与死锁问题4. 实践项目:Java窗口倒计时程序- 项目需求分析- 界面设计与布局- 功能模块划分与编码- 程序调试与优化教学内容安排与进度:第一课时:Java GUI编程基础,介绍Swing库、JFrame窗口及常用组件的使用。
数电实验一:倒计时定时器、BCD代码转化器(设计报告)

数电实验1设计报告实验名称:倒计时定时器 实验目的:1.掌握组合逻辑与时序逻辑电路的设计方法及调试方法2.熟练掌握常用MSI 逻辑芯片的功能及使用方法3.初步掌握Verilog HDL 数字系统设计方法4.熟悉PLD 实验箱的结构和使用及Quartus II 软件的基本操作5.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:一、 倒计时定时器:用适当的中小规模集成电路设计一个定时器,实现60s 以内的定时功能,可以设置60s 以内任何时间作为倒计时的起点,将设计下载到实验箱并进行硬件功能测试。
要求:用开关或按键进行定时设置倒计时计数状态用两位数码管显示计时结束时用彩灯或声响作为提电路设计过程: 1.关于74192芯片 可实现减法计数:74HC192 两位:两片74HC1922.不进行任何的反馈,预置也不起作用的一位倒计时器U174192N A 15B 1C 10D 9UP 5QA 3QB 2QC 6QD 7DOWN4~LOAD 11~BO 13~CO12CLR 14加法计数功能,UP 为加法脉冲输入端 减法计数功能,Down 为减法脉冲输入端 减法计数到0000时,借位Bo =0 加法计数到1111时进位Co =03.计到零停止计数功能,设置启动开关,启动前停在预置值5.加入译码器完成数码管显示设计原理图:数码管动态扫描原理图:分析统图:管脚分配方案:实验题目:BCD代码转换器实验目的:1、掌握组合逻辑与时序逻辑电路的设计方法及调试方法2、熟练掌握常用MSI逻辑芯片的功能及使用方法3、初步掌握Verilog HDL数字系统设计方法4、熟悉PLD试验箱的结构和使用及Quartus 2软件的基本操作5、掌握用Quartus2软件和实验箱设计实现逻辑电路的基本方法设计任务:BCD代码转换1、8421码与5421码之间的转换2、余3码与5421之间的转换3、8421码与2421码之间的转换4、5421码与2421码之间的转换用74283和其它中小规模组合电路实现代码之间的双向可控转换,完成对逻辑设计的波形仿真、下载电路设计步骤(一)、代码转换的设计:写出真值表,找出逻辑关系,利用加法器和逻辑器件,设计对应的电路原理图1、8421码与5421码8421:0000、0001、0010、0011、0100、0101、0110、0111、1000、10015421:0000、0001、0010、0011、0100、1000、1001、1010、1011、1100方法:8421到5421后五个数加00115421到8421后五个数加1101利用开关控制器:1表示8421到5421,0表示54214到84212、余3码与5421码余3码:0011、0100、0101、0110、0111、1000、1001、1010、1011、11005421码:0000、0001、0010、0011、0100、1000、1001、1010、1011、1100方法:余3码到5421:前五个数加11015421到余3码:前五个数加0011利用开关控制器:0表示余3码到5421,1表示5421到余3码3、8421吗与2421码8421:0000、0001、0010、0011、0100、0101、0110、0111、1000、10012421:0000、0001、0010、0011、0100、1011、1100、1101、1110、1111方法:8421到2421:后五个数加01102421到8421:后五个数加1010利用开关控制器:1表示8421到2421,0表示2421到84214、5421码与2421码5421码:0000、0001、0010、0011、0100、1000、1001、1010、1011、11002421码:0000、0001、0010、0011、0100、1011、1100、1101、1110、1111方法:5421到2421:后五个数加00112421到5421:后五个数加1101利用开关控制器:1表示2421到5421,0表示5421到2421原理图、下载电路及管脚分配:1、8421码与5421码之间的转换管脚分配:2、余三与5421码之间的转换管脚分配:3、8421码与2421码管脚分配:4、5421码与2421码管脚分配:。
30秒计时器设计报告资料

30秒计时器设计报告资料设计报告资料:30秒计时器【一、项目概述】本项目旨在设计一个30秒计时器,能够在用户设定的时间内精准计时,同时显示剩余的时间,并且在倒计时结束时发出提醒音。
【二、项目需求】1.设计一个可调节的计时器,用户可以通过设置按钮来调整计时时间。
2.使用LCD显示剩余时间,以便用户能够清楚地看到剩余多少时间。
3.在倒计时结束时能够发出声音提醒用户。
【三、硬件设计】1. 主控芯片:使用Arduino Uno作为主控芯片。
2.倒计时显示屏:使用16x2字符LCD显示屏,能够显示剩余时间。
3.按钮:使用两个按钮,一个用来增加时间,一个用来减少时间。
4.喇叭:使用一个喇叭用于发出提醒音。
【四、软件设计】1.初始化:设定默认的计时时间为30秒,并将剩余时间显示在LCD 上。
2. 按钮检测:使用Arduino的digitalRead(函数来检测按键是否按下。
3.按钮处理:根据按钮的不同,增加或减少计时时间,并在LCD上更新剩余时间。
4. 计时:使用Arduino的millis(函数来获取当前时间,并与设定的倒计时时间相减,得到剩余时间,并在LCD上更新。
5.提醒音:当剩余时间为0时,发出提醒音。
【五、关键技术】1. 使用Arduino Uno作为主控芯片,能够方便地编程和控制其他硬件模块。
2.使用16x2字符LCD显示屏,能够显示剩余时间,并且在计时过程中能够实时更新。
3.使用按钮进行计时时间的调节,能够方便地对计时时间进行设置。
4.使用喇叭发出提醒音,提醒用户计时结束。
【六、预期成果】通过完成本项目,可以得到一个功能完善的30秒计时器,用户可以通过按钮来调节计时时间,并能够清晰地看到剩余时间的显示。
同时,在倒计时结束时会发出提醒音,提醒用户时间到了。
【七、项目进度安排】1. 第一周:收集所需硬件和软件资料,搭建开发环境并熟悉Arduino编程技术。
2.第二周:完成硬件设计,连接主控芯片、LCD显示屏、按钮和喇叭,并进行初步调试。
Java实验报告(w3,w4)

int startPosition=0,endPosition=0;
char cStart='а',cEnd='я';
startPosition=(int)cStart; // cStart做int类型转换运算,并将结果赋值给startPosition
i=j;
}
else if(n<a[j]){
k=j;
}
j=(i+k)/2;
count++;
if(count>a.length/2)
break;
}
if(n==a[j]){
System.out.printf("%d在这个数组中",n);
}
else
System.out.printf("%d不在这个数组中",n);
}
}
后面采用count次数判断是否刚好在查找到最小数时停止,是则输出查找成功,否则没有找到。
while(n!=a[j]){
if(n>a[j]){
i=j;
}
else if(n<a[j]){
k=j;
}
j=(i+k)/2;
count++;
if(count>a.length/2+1)
break;
}
if(count>a.length/2&&a[0]!=n){
}
System.out.println(" ");
}
4、采用大一时用C语言写的算法思想,直接进行判断。
倒计时器实训报告

一、实训目的本次实训旨在使学生掌握倒计时器的基本原理、电路设计方法及制作过程,提高学生的动手能力、创新能力和团队合作精神。
通过本次实训,学生能够:1. 理解倒计时器的工作原理及电路组成;2. 掌握倒计时器电路的设计与制作方法;3. 学会使用常用电子元件及电路调试技巧;4. 培养学生的团队协作精神和创新意识。
二、实训内容1. 倒计时器原理及电路分析2. 倒计时器电路设计与制作3. 倒计时器调试与测试4. 倒计时器性能优化三、实训过程1. 倒计时器原理及电路分析倒计时器是一种计时装置,用于实现预定时间的倒计时功能。
其工作原理如下:(1)利用计数器实现倒计时功能,通常采用十进制计数器(如74LS160);(2)利用555定时器产生1Hz的方波信号,作为计数器的时钟信号;(3)通过按键输入预定时间,实现倒计时;(4)当倒计时结束时,发出报警信号。
2. 倒计时器电路设计与制作(1)电路设计根据倒计时器原理,设计如下电路:- 74LS160计数器作为核心元件,实现倒计时功能;- 555定时器产生1Hz方波信号;- 按键输入预定时间;- 报警电路实现倒计时结束报警。
(2)电路制作按照电路设计图,制作如下电路:- 将74LS160、555定时器、按键、报警电路等元件焊接在电路板上;- 连接电路板上的元件,确保连接正确;- 进行电路调试,检查电路是否正常工作。
3. 倒计时器调试与测试(1)调试- 检查电路连接是否正确,确保无短路、断路现象;- 对电路进行调试,观察倒计时功能是否正常;- 检查报警电路是否在倒计时结束时发出报警信号。
(2)测试- 测试倒计时器在不同预定时间下的倒计时功能;- 测试报警电路是否在倒计时结束时发出报警信号;- 测试电路的抗干扰性能。
4. 倒计时器性能优化根据测试结果,对倒计时器进行以下优化:- 调整电路参数,提高倒计时精度;- 优化报警电路,增强报警效果;- 改进电路设计,提高电路可靠性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
佛山科学技术学院《可视化编程技术》课程设计报告微波炉烹调倒计时设计学生姓名:叶惠东学号:2011914205年级专业: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.5 程序流程图 (8)4. 运行过程 (8)5. 源程序 (9)参考文献 (27)设计总结 (27)摘要:该程序是一个图形界面的简单的java模拟微波炉烹调食物倒计时,具有良好的界面,使用人员能快捷简单地进行操作。
其操作方法简便易学,让大众都能容易接受。
时间的选择从时精确到秒,让烹饪者可以有很好的选择,精确到秒,让食物的美味做到极致。
只需通过调节时间,当食物烹饪时间到了,就会有灯光与音乐的提醒,让烹饪者在期间安心去烹调其它的食物。
关键字:java程序,微波炉,倒计时,事件,方法1 前言随着科学技术的不断发展,传统的烹饪的方法已经远远不能满足我们的需要了。
所以我编写一个与日常生活相关的微波炉烹调食物倒计时,这是一个实用简单的烹调食物倒计时,以满足在现代烹饪的需求。
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:当按上“清零”键,微波炉就会把先前调好的时间全部会清除,烹饪的时间可以重新调节。
功能5:当烹饪时间到了,指示灯就会显示不在烹饪状态的灰色,同时放出提示音乐。
2.3界面设计微波炉烹饪食物倒计时面板2.4类的框架结构图3详细设计3.1模拟微波炉烹调食物倒计时设计使用的Java类的说明类名:public A()作用: 构造函数类名:public void init()作用: 该方法用于初始化成员变量及添加各组件类名: public void run()作用: 实现接口接口Runnable的方法类名: public void setEnabled(boolean bool)作用: 设置组件的使用状态,true:可以使用,false:禁止使用类名:public void setNum()作用: 设置定时器和计时器类名: public void paint(Graphics h)作用: 设定欢迎语和笑脸类名:pub public void setColor(Color c)作用: 设置组件的“指示灯”标签的边框及前景色类名: public void actionPerformed(ActionEvent ae)作用: 事件处理3.2类的事件处理3.2.1按钮运作处理public void actionPerformed(ActionEvent ae){//当用户点击“开始”按钮时if(ae.getActionCommand ().equals ("开始")){//当所预定的时间不为“0”时才可响应“开始”按钮事件if(!tf.getText ().equals ("00:00")){t = new Thread(this); //创建一个线程类对象t.start (); //启动线程烹调开始setColor(Color.YELLOW); //烹调开始设置指示灯颜色为“YELLOW”黄色setEnabled(false); //禁用按钮功能b[11].setText ("停止"); //设置按钮文本为"停止"}}//当用户点击“停止”按钮时else if(ae.getActionCommand ().equals ("停止")){t.stop (); //终止线程烹调结束setEnabled(true); //启用按钮功能setColor(Color.GRAY); //烹调结束设置指示灯颜色为“GRAY”灰色setNum(); //计时清零b[11].setText ("开始"); //设置按钮文本为"开始"}//当用户点击“清零”按钮”时else if(ae.getActionCommand ().equals ("清零")){setNum(); //计时清零}//当用户点击数字按钮时else{String s = ae.getActionCommand (); //相当于按钮上的文本内容int i = Integer.parseInt (s); //类型转换:String--int//num[0]~num[3]分别是分钟第一,二个数和秒钟第一,二个数if(num[0]==-1){ //==1 表示还没有设置分钟第一个数if(i<6){ //分钟不能超过59,所以第一个数字不能大于6tf.setText(i+"0:00"); //比如"30:00"num[0] = i; //存储分钟第一个数"3"}}else if(num[1]==-1){//同上// 分钟第二个数从0~9没限制tf.setText(num[0]+""+i+":00");num[1] = i;}else if(num[2]==-1){//...if(i<6){tf.setText(num[0]+""+num[1]+":"+i+"0");num[2] = i;}}else if(num[3]==-1){tf.setText(num[0]+""+num[1]+":"+num[2]+""+i);num[3] = i;}}}3.2.2时间运作处理public void run(){for(int i=0;i<4;i++){//因为初始化是-1,当用户没有全部重置计时器的四个数时,将-1设为0if(num[i]==-1)num[i] = 0;}while(true){try{Thread.sleep (1000); //休眠一秒}catch(InterruptedException ie){ie.printStackTrace ();}if(num[3]!=0){ //秒钟第二个数不为"0"num[3]--;System.out .println("正在加热中!");}else{ //为"0"num[3] = 9; //重置为"9"if(num[2]!=0){ //秒钟第一个数不为"0"num[2]--;System.out .println("正在加热中!");}else{ //为"0"num[2] = 5; //重置为"5"if(num[1]!=0){ //分钟第二个数不为"0"num[1]--;System.out .println("正在加热中!");}else{ //为"0"num[1] = 9; //重置为"9"if(num[0]!=0){ //分钟第一个数不为"0"num[0]--;System.out .println("正在加热中!");}else{ //都为"0"时,烹调结束setColor(Color.GRAY);setEnabled(true);b[11].setText ("开始");System.out .println("加热完成!");setNum();break;}}}}String time = num[0]+""+num[1]+":"+num[2]+""+num[3];tf.setText (time); //刷新定时器System.out.println("surplus time is: "+time);}}3.2.3外观处理p public void init(){l1 = new JLabel("美的微波炉");l2 = new JLabel("指示灯");tf = new JTextField(4);tf = new JTextField(3);l2.setFont (new Font(Font.SERIF,Font.BOLD,35)); //设置字体属性,指示灯tf.setFont (new Font(Font.SERIF,Font.BOLD,35));//显时器tf.setFont (new Font(Font.SERIF,Font.BOLD,50));//显时器tf.setBackground (Color.black); //设置背景色tf.setBackground (Color.GRAY); //设置背景色tf.setEditable (false); //设置不可编辑tf.setHorizontalAlignment (SwingConstants.CENTER); //文本内容居中显示tf.setBorder (BorderFactory.createLoweredBevelBorder ());//设置边框属性p1 = new JPanel(new FlowLayout(FlowLayout.CENTER,25,50));//上的大小p2 = new JPanel(new GridLayout(4,3,5,5));p1.add(l1);p1.add(tf);p1.add(l2);for(int i=0;i<12;i++){b[i] = new JButton(s[i]);p2.add(b[i]);b[i].addActionListener (this);}b[9].setForeground (Color.blue); //设置前景色,停止b[11].setForeground (Color.RED);//开始setColor(Color.GRAY); //方法调用设置颜色,指示灯setNum(); //方法调用设置定时器p2.setBorder (BorderFactory.createEtchedBorder ());//p3.setBorder (BorderFactory.createEtchedBorder ());add(p1,BorderLayout.NORTH);//上add(p2,BorderLayout.CENTER);//下//add(p3,BorderLayout.SOUTH);//上}3.2.4设计的总体认识●JA V A设计的摘要●JA V A设计的目录结构●JA V A设计的概要和详细设计●JA V A设计的版权意识●JA V A设计需要编译的环境●JA V A设计的实用性3.2.5程序流程图图3绘制模拟微波炉烹调食物倒计时设计的PAD图4运行过程图4微波炉烹饪食物倒计时过程显示5 程序清单://package 模拟微波炉烹调食物倒计时过程;import java.applet.*;import java.awt.*;import java.awt.event.*;import java.io.IOException;import javax.sound.sampled.AudioInputStream;import javax.swing.*;import org.omg.CORBA.portable.InputStream;public class A extends JFrame implements ActionListener,Runnable{ private static final String AudioPlayer = null;AudioClip ac;JLabel l2,l3;//布局JTextField tf;//接口JPanel p1,p2;//面板容器JButton[] b = new JButton[13];//按钮组件String[] s = {"7","8","9","4","5","6","1","2","3","清零","0","开始"};int[] num = new int[4]; //储存分钟和秒钟的四个数字Thread t; //声明一个线程private JLabel l1;private Label L1;private Panel P1;public A(){ //构造函数init();this.setTitle ("微波炉烹调食物控制器");this.pack(); //设置默认大小位置this.setLocationRelativeTo (null); //窗口居中this.setVisible(true);//this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);}//该方法用于初始化成员变量及添加各组件public void init(){l1 = new JLabel("美的微波炉");l2 = new JLabel("指示灯");tf = new JTextField(4);tf = new JTextField(3);l2.setFont (new Font(Font.SERIF,Font.BOLD,35)); //设置字体属性,指示灯tf.setFont (new Font(Font.SERIF,Font.BOLD,35));//显时器tf.setFont (new Font(Font.SERIF,Font.BOLD,50));//显时器tf.setBackground (Color.black); //设置背景色tf.setBackground (Color.GRAY); //设置背景色tf.setEditable (false); //设置不可编辑tf.setHorizontalAlignment (SwingConstants.CENTER); //文本内容居中显示tf.setBorder (BorderFactory.createLoweredBevelBorder ());//设置边框属性p1 = new JPanel(new FlowLayout(FlowLayout.CENTER,25,50));//上的大小p2 = new JPanel(new GridLayout(4,3,5,5));p1.add(l1);p1.add(tf);p1.add(l2);for(int i=0;i<12;i++){b[i] = new JButton(s[i]);p2.add(b[i]);b[i].addActionListener (this);}b[9].setForeground (Color.blue); //设置前景色,停止b[11].setForeground (Color.RED);//开始setColor(Color.GRAY); //方法调用设置颜色,指示灯setNum(); //方法调用设置定时器p2.setBorder (BorderFactory.createEtchedBorder ());//p3.setBorder (BorderFactory.createEtchedBorder ());add(p1,BorderLayout.NORTH);//上add(p2,BorderLayout.CENTER);//下//add(p3,BorderLayout.SOUTH);//上}//实现接口接口Runnable的方法public void run(){for(int i=0;i<4;i++){//因为初始化是-1,当用户没有全部重置计时器的四个数时,将-1设为0if(num[i]==-1)num[i] = 0;}while(true){try{Thread.sleep (1000); //休眠一秒}catch(InterruptedException ie){ie.printStackTrace ();}if(num[3]!=0){ //秒钟第二个数不为"0"num[3]--;System.out .println("正在加热中!");}else{ //为"0"num[3] = 9; //重置为"9"if(num[2]!=0){ //秒钟第一个数不为"0"num[2]--;System.out .println("正在加热中!");}else{ //为"0"num[2] = 5; //重置为"5"if(num[1]!=0){ //分钟第二个数不为"0"num[1]--;System.out .println("正在加热中!");}else{ //为"0"num[1] = 9; //重置为"9"if(num[0]!=0){ //分钟第一个数不为"0"num[0]--;System.out .println("正在加热中!");}else{ //都为"0"时,烹调结束setColor(Color.GRAY);setEnabled(true);b[11].setText ("开始");System.out .println("加热完成!");setNum();break;}}}}String time = num[0]+""+num[1]+":"+num[2]+""+num[3];tf.setText (time); //刷新定时器System.out.println("surplus time is: "+time);}}//设置组件的使用状态,true:可以使用,false:禁止使用public void setEnabled(boolean bool){for(int i=0;i<11;i++){b[i].setEnabled (bool);}}//设置定时器和计时器public void setNum(){tf.setText("00:00");for(int i=0;i<4;i++){num[i] = -1;}}//public void paint(Graphics h){h.drawOval(40,40, 150, 150);h.fillOval(60, 90, 30, 10);h.fillOval(140, 90, 30, 10);h.drawLine(115, 105, 115, 120);h.drawArc(70, 80, 95, 95, 0, -180);String str="欢迎您使用模拟微波炉" +"烹调食物倒计时!";Font f=new Font("楷体",Font.PLAIN,24);h.setFont(f);FontMetrics fm=getFontMetrics(f);int x=200;int y=70;h.drawString(str, x, y);}//设置组件的“指示灯”标签的边框及前景色public void setColor(Color c){l2.setBorder (BorderFactory.createLineBorder (c));l2.setForeground (c);}//public void init1(){ac=getAudioClip(getCodeBase(),"sound.wav");}private AudioClip getAudioClip(Object codeBase, String string) { // TODO Auto-generated method stubreturn null;}private Object getCodeBase() {// TODO Auto-generated method stubreturn null;}public void start(){ac.loop();}public void stop(){ac.stop();}//事件处理public void actionPerformed(ActionEvent ae){//当用户点击“开始”按钮时if(ae.getActionCommand ().equals ("开始")){//当所预定的时间不为“0”时才可响应“开始”按钮事件if(!tf.getText ().equals ("00:00")){t = new Thread(this); //创建一个线程类对象t.start (); //启动线程烹调开始setColor(Color.YELLOW); //烹调开始设置指示灯颜色为“YELLOW”黄色setEnabled(false); //禁用按钮功能b[11].setText ("停止"); //设置按钮文本为"停止"}}//当用户点击“停止”按钮时else if(ae.getActionCommand ().equals ("停止")){t.stop (); //终止线程烹调结束setEnabled(true); //启用按钮功能setColor(Color.GRAY); //烹调结束设置指示灯颜色为“GRAY”灰色setNum(); //计时清零b[11].setText ("开始"); //设置按钮文本为"开始"play("sound.wav");}//当用户点击“清零”按钮”时else if(ae.getActionCommand ().equals ("清零")){setNum(); //计时清零}//当用户点击数字按钮时else{String s = ae.getActionCommand (); //相当于按钮上的文本内容int i = Integer.parseInt (s); //类型转换:String--int//num[0]~num[3]分别是分钟第一,二个数和秒钟第一,二个数if(num[0]==-1){ //==1 表示还没有设置分钟第一个数if(i<6){ //分钟不能超过59,所以第一个数字不能大于6tf.setText(i+"0:00"); //比如"30:00"num[0] = i; //存储分钟第一个数"3"}}else if(num[1]==-1){//同上// 分钟第二个数从0~9没限制tf.setText(num[0]+""+i+":00");num[1] = i;}else if(num[2]==-1){//...if(i<6){tf.setText(num[0]+""+num[1]+":"+i+"0");num[2] = i;}}else if(num[3]==-1){tf.setText(num[0]+""+num[1]+":"+num[2]+""+i);num[3] = i;}}}//主程序public static void main(String[] args){new A();}}参考文献丁振凡薛清华《java语言程序设计》清华大学出版社设计总结(自己所做的主要工作与体会)学了JA V A一个学期,总感觉自己对JA V A的认识还是在很浅,在很多方面都还是不怎么清楚地认识。