中易网

求一个java课程设计题目以及代码

答案:2  悬赏:0  
解决时间 2021-04-28 05:53
  • 提问者网友:房东的猫
  • 2021-04-27 07:01

要一个题目比较简单的语句不要太多,最多200行的,带有解释的,越详细越好,我指定给你加积分,最好给带一份详细的设计思路。代码一定要全,能运行!

最佳答案
  • 二级知识专家网友:桃花别处起长歌
  • 2021-04-27 07:55

这是我帮别人写的个程序,可以借鉴


** 微波炉模拟应用程序
应用程序编程要求:
   某电子公司考虑投产微波炉,公司要求开发一个可模拟微波炉工作原理的应用程序,这个程序包含一个允许用户设定微波炉烹调时间的小键盘,相应的烹调时间应该显示给用户。一旦输入某个时间,用户便可以通过点击一个“开始”按钮启动整个烹调过程。此时微波炉上的玻璃窗将改变颜色(从灰色变为黄色),从而模拟食物烹调的过程微波炉中的灯光颜色,相应的定时器也将按每次一秒的速度进行递减。当事件终止时,该微波炉玻璃窗会再次返回到灰色状态(表示微波炉停止工作)。然后显示文本“停止”。用户可以在任何通过点击“停止”按钮停止微波炉的工作,然后重新输入一个新的时间。注意,时间要求,分钟不超过59分,秒不超过59秒,否则,将重置位零。


设计思路:


①首先按照要求画出界面草图,这里我就拿运行好的截图吧



这个界面布局很简单...就一个4行3列的网格布局


②定时器的设计:


一定是用到线程


用Thread.sleep (1000);可控制按每次一秒的速度进行递减


③指示灯的控制:


按下“开始”按钮,线程启动后,指示灯变色-黄色


当线程结束或按下按钮“停止”,变色-灰色


④事件处理:


点击10个数字按钮,获取器文本进行设置定时器


“清零” -- 清空计时器


“开始/停止”--  显示是“开始”,则启动线程,设置禁用数字按钮和指示灯颜色-黄,重置文本为“停止”


    显示是“停止”,则启动线程,设置禁用数字按钮和指示灯颜色-灰,重置文本为“停止”


下面是源程序代码:共185行


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Cooking extends JFrame implements ActionListener,Runnable{
 JLabel l1,l2;
 JTextField tf;
 JPanel p1,p2;
 JButton[] b = new JButton[12];
 String[] s = {"7","8","9","4","5","6","1","2","3","清零","0","开始"};
 int[] num = new  int[4];//储存分钟和秒钟的四个数字
 Thread t;//声明一个线程
 public Cooking(){
  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);
  l2.setFont (new Font(Font.SERIF,Font.BOLD,15));//设置字体属性
  tf.setFont (new Font(Font.SERIF,Font.BOLD,18));
  tf.setBackground (Color.GREEN);//设置背景色
  tf.setEditable (false);//设置不可编辑
  tf.setHorizontalAlignment (SwingConstants.CENTER);//文本内容居中显示
  tf.setBorder (BorderFactory.createLoweredBevelBorder ());//设置边框属性
  p1 = new JPanel(new FlowLayout(FlowLayout.CENTER,20,5));
  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 ());  
  add(p1,BorderLayout.NORTH);
  add(p2,BorderLayout.CENTER);
 }


 
 public void run(){
  for(int i=0;i<4;i++){
   //因为初始化是-1,当用户没有全部重置计时器的四个数时,将-1设为0
   if(num[i]==-1)num[i] = 0; 
  }
  while(true){ 
   try{
    Thread.sleep (1000);//休眠一秒
   }catch(InterruptedException ie){
    ie.printStackTrace ();
   }   
   if(num[3]!=0){//秒钟第二个数不为"0"
    num[3]--;
   }else{  //为"0"
    num[3] = 9;    //重置为"9"
    if(num[2]!=0){//秒钟第一个数不为"0"
    num[2]--;    
    }else{  //为"0"
    num[2] = 5;    //重置为"5"
    if(num[1]!=0){//分钟第二个数不为"0"
    num[1]--;
    }else{  //为"0"
    num[1] = 9;    //重置为"9"    
    if(num[0]!=0){//分钟第一个数不为"0"
    num[0]--;
    }else{  //都为"0"时,烹调结束
    setColor(Color.GRAY);
    setEnabled(true);
    b[11].setText ("开始"); 
    setNum();   
    break;
    } 
    } 
    }    
   }
   String time = num[0]+""+num[1]+":"+num[2]+""+num[3];
   tf.setText (time); //刷新定时器
   System.out.println("surplus time is: "+time);
  }   
 }
 
 
 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 setColor(Color c){  
  l2.setBorder (BorderFactory.createLineBorder (c));
  l2.setForeground (c);
 }
 
  
 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,所以第一个数字不能大于6
    tf.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 Cooking();
 }
}


全部回答
  • 1楼网友:湫止没有不同
  • 2021-04-27 08:53

学JAVA要自己努力,不要动不动就求助别人

你可以看看 JAVA 编程思想 4版的

有你要的东西

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息