软件工程作业——智能洗衣机

文章目录

    • 题目
    • 编程语言
    • 原型图
    • 主要代码
      • 计时部分
      • 注水部分
      • 完整代码

题目

软件工程 课程实验 一、 题目 请结合你的生活经验,仔细观察洗衣机的工作原理,完成《洗衣机模拟仿真程序》 二、 几项基本要求 1、 本实验要求以滚筒式可调温家用洗衣机为模拟仿真对象; 2、 要求有全套软件开发各个步骤说明及开发文档; 3、 洗衣机应至少包含不同档位的洗涤方式、洗涤时间、功能区分等。 4、 对于学有余力的同学可以考虑智能家居、智能家电的洗衣机产品开发。 三、 程序设计语言等相关要求: 1、可以使用任何一种“面向对象”技术的程序开发语言。 2、开发时间:5月22日-6月5日,两周时间。 3、所有同学独立完成,不能有雷同程序出现,一旦发现,所有雷同作业均视为无效作业,记为“0”分。 4、No Cheating。(不能从网上down代码),后续的检查中会逐行代码询问。

编程语言

JAVA

原型图

软件工程作业——智能洗衣机_第1张图片

主要代码

计时部分

package com.lyy.function;

import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class countDown extends JFrame implements Runnable, ActionListener{

    private int hour;
    private int minute;
    private int second;
    private JLabel timeLabel;

    public countDown(int minute) {
        this(0,minute,0);
    }

    public countDown(int hour, int minute, int second) {
        this.setTime(hour, minute, second);
        this.setLayout(new GridLayout(1,2));
        timeLabel = new JLabel();
        timeLabel.setFont(new Font(Font.SERIF, Font.BOLD, 20));
        this.setText();
        this.add(timeLabel);
        JButton btn = new JButton("计时开始");
        btn.addActionListener(this);
        this.add(btn);
        this.pack();
        this.setResizable(false);
        Toolkit tool = Toolkit.getDefaultToolkit();
        double width = tool.getScreenSize().getWidth();
        double height = tool.getScreenSize().getHeight();
        this.setLocation((int)((width-this.getWidth())/2)
                ,(int)((height-this.getHeight())/2));
        this.setVisible(true);
    }

    private void setTime(int hour, int minute, int second) {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }

    private void setText() {
        this.timeLabel.setText((this.hour<10?"0"+this.hour:this.hour)
                +":"+(this.minute<10?"0"+this.minute:this.minute)
                +":"+(this.second<10?"0"+this.second:this.second));
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        ((JButton)event.getSource()).setEnabled(false);
        new Thread(this).start();
    }

    public void run() {
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            this.second--;
            if (this.second<0) {
                this.minute--;
                this.second=59;
            }
            if (this.minute<0) {
                this.hour--;
                this.minute=59;
            }
            if (this.hour<0) {
                break;
            }
            this.setText();
        }
    }
}

注水部分

package com.lyy.function;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class waterInjection implements ActionListener, ChangeListener {
    JFrame frame = null;
    JProgressBar progressBar;
    JLabel label;
    Timer timer;
    JButton button;

    public waterInjection(){
        frame = new JFrame("注水");
        frame.setSize(300,300);
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);

        Container contentPanel = frame.getContentPane();
        label = new JLabel("",JLabel.CENTER);
        progressBar = new JProgressBar();
        progressBar.setOrientation(JProgressBar.VERTICAL);//进度条方向
        progressBar.setMinimum(0);
        progressBar.setMaximum(100);
        progressBar.setValue(100);
        progressBar.setStringPainted(true);
        progressBar.addChangeListener(this);
        progressBar.setPreferredSize(new Dimension(300,20));
        progressBar.setBorderPainted(true);
        progressBar.setForeground(Color.blue);//进度条颜色

        JPanel panel = new JPanel();
        button = new JButton("开始注水");
        button.setForeground(Color.blue);//按钮颜色
        button.addActionListener(this);
        panel.add(button);
        timer = new Timer(100,this);
        contentPanel.add(panel,BorderLayout.NORTH);
        contentPanel.add(progressBar,BorderLayout.CENTER);
        contentPanel.add(label,BorderLayout.SOUTH);


    }



    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == button){
            timer.start();
        }
        if(e.getSource() == timer){
            int value = progressBar.getValue();
            if(value>0)
                progressBar.setValue(--value);
            else{
                timer.stop();
            }
        }
    }

    @Override
    public void stateChanged(ChangeEvent e) {
        int value = progressBar.getValue();
        if(e.getSource() == progressBar){
            label.setText("目前剩余:"+Integer.toString(value)+"%");
            label.setForeground(Color.blue);
        }
        if(value == 0){
            frame.dispose();
        }
    }

}

完整代码

链接:https://pan.baidu.com/s/1yZgfPCsXziMkgftD0797dg
提取码:pi8k

你可能感兴趣的:(demo)