当前位置:文档之家› Java微波炉倒计时软件设计报告

Java微波炉倒计时软件设计报告

佛山科学技术学院《可视化编程技术》课程设计报告微波炉烹调倒计时设计学生姓名:叶惠东学号: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的认识还是在很浅,在很多方面都还是不怎么清楚地认识。

相关主题