要一个题目比较简单的语句不要太多,最多200行的,带有解释的,越详细越好,我指定给你加积分,最好给带一份详细的设计思路。代码一定要全,能运行!
求一个java课程设计题目以及代码
- 提问者网友:房东的猫
- 2021-04-27 07:01
- 二级知识专家网友:桃花别处起长歌
- 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版的
有你要的东西