一.实验题目:用java编写洗衣机仿真程序二.实验目的:1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程.2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件模型等有一定的了解,为以后的软件设计工作打下良好的基础。
3.通过的洗衣机仿真系统的编写与学习,加深了对Java这门语言的了解,对其中的类的设计,类之间的关系,界面的设计(按钮及布局的设计)有了更深的了解与体会,为Java的学习做好准备工作。
三.实验要求:了解全自动洗衣机的简单工作过程及实现。
其中包括,洗衣的方式(标准或是柔和)、洗衣中的水位选择(高水位洗衣、低水位洗衣等)等方面需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且是必须选择的洗衣参数。
当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服的整个过程。
在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面的设计,符合人机界面的基本要求。
四.实验分析:1.洗衣机需求分析:标准清洗:浸泡/清洗/甩干快速清洗:清洗/甩干大件衣物(冬衣,牛仔类):浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干床单,窗帘类:浸泡(温水)/清洗根据衣物的不同用按钮选择上述洗衣模式即可.其中甩干可选可不选.尽量设计了一个节水功能,可以实现水回收.在无需甩干时水不流走,余下的水可做其他用途,实现节水.2.主要的类实现(1).继承类(2).包括进水,排水,洗涤,漂洗,甩干等成员函数(3).水位的选择通过参数传递决定进水函数(4).其余通过调用筒的转动函数(run)并通过一定的参数控制实现3.程序设计步骤≡≥选择水温≡≥放入衣物≡≥选择洗衣模式≡≥脱水≡≥排水≡≥烘干≡≥关闭五.设计与实现过程:1.洗衣机类的部分实现:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Washing extends JApplet{private JFrame jf;private JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args){Washing flowTest=new Washing();flowTest.setSize(270,160);flowTest.go();//flowTest.show(true);}public void go(){jf=new JFrame("洗衣机功能模拟器");Container cp=jf.getContentPane();cp.setLayout(null);jb1=new JButton("入水");jb2=new JButton("加衣");jb3=new JButton("脱水");jb4=new JButton("排水");jb5=new JButton("烘干");jb6=new JButton("关闭");// Container cp=jf.getContentPane();// cp.setLayout(new BorderLayout());jb1.setBounds(10, 10, 80, 80);cp.add(jb1); //指定组件追加到这个容器的末尾。
这是一个方便的方法为addImpl。
//注意:如果一个组件已被添加到一个已显示的容器,验证必须在该容器调用,以显示新的组件。
如果正在添加多个组件,你可以通过调用验证只有一次,已添加的所有组件后提高效率。
jb2.setBounds(110, 10, 80, 80);cp.add(jb2);jb3.setBounds(210, 10, 80, 80);cp.add(jb3);jb4.setBounds(310, 10, 80, 80);cp.add(jb4);jb5.setBounds(410, 10, 80, 80);cp.add(jb5);jb6.setBounds(510, 10, 80, 80);cp.add(jb6);// jb7.setBounds(200, 50, 100, 20);// cp.add(jb7);//cp.setSize(500, 400); //没用?//调整这个组件,所以它具有宽的宽度和高度高度。
//cp.add(BorderLayout.SOUTH,jb7);jb1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Shuiwen wen=new Shuiwen();}});jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Yiwu yi=new Yiwu();yi.go();//flowTest.go();}});jb4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Chushui Chu=new Chushui();}});jb5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){//Piaoxi piao=new Piaoxi();Honggan hong=new Honggan();//Thread t=new Thread(hong);// t.start();}});jb3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Tuoshui tuo=new Tuoshui();}});jb6.addActionListener(new ActionListener(){ //ActionListener接收动作事件的监听器接口。
在处理动作事件感兴趣的类实现这个接口,这个类创建的对象注册一个组件,使用组件的addActionListener方法。
动作事件发生时,该对象的actionPerformed方法被调用。
public void actionPerformed(ActionEvent ae){System.exit(0);}});jf.setSize(700,150);jf.setVisible(true); //显示或隐藏这个窗口根据参数b值。
}}2,.按钮界面的实现:public void go(){jf=new JFrame("洗衣机功能模拟器");Container cp=jf.getContentPane();cp.setLayout(null);jb1=new JButton("入水");jb2=new JButton("加衣");jb3=new JButton("脱水");jb4=new JButton("排水");jb5=new JButton("烘干");jb6=new JButton("关闭");// Container cp=jf.getContentPane();// cp.setLayout(new BorderLayout());jb1.setBounds(10, 10, 80, 80);cp.add(jb1); //指定组件追加到这个容器的末尾。
这是一个方便的方法为addImpl。
//注意:如果一个组件已被添加到一个已显示的容器,验证必须在该容器调用,以显示新的组件。
如果正在添加多个组件,你可以通过调用验证只有一次,已添加的所有组件后提高效率。
jb2.setBounds(110, 10, 80, 80);cp.add(jb2);jb3.setBounds(210, 10, 80, 80);cp.add(jb3);jb4.setBounds(310, 10, 80, 80);cp.add(jb4);jb5.setBounds(410, 10, 80, 80);cp.add(jb5);jb6.setBounds(510, 10, 80, 80);cp.add(jb6);// jb7.setBounds(200, 50, 100, 20);// cp.add(jb7);//cp.setSize(500, 400); //没用?//调整这个组件,所以它具有宽的宽度和高度高度。
//cp.add(BorderLayout.SOUTH,jb7);jb1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Shuiwen wen=new Shuiwen();}});jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Yiwu yi=new Yiwu();yi.go();}});jb4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Chushui Chu=new Chushui();}});jb5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){//Piaoxi piao=new Piaoxi();Honggan hong=new Honggan();//Thread t=new Thread(hong);// t.start();}});jb3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Tuoshui tuo=new Tuoshui();}});jb6.addActionListener(new ActionListener(){ //ActionListener接收动作事件的监听器接口。