1、一. 实验题目: 用java编写洗衣机仿真程序 二. 实验目得: 1、熟悉并掌握洗衣机(全自动)得工作原理与运行过程、 2、学会软件工程设计中得一系列分析研究,对需求分析,可行性研究,软件ﻩ模型等有一定得了解,为以后得软件设计工作打下良好得基础。 3、通过得洗衣机仿真系统得编写与学习,加深了对Java这门语言得了解, 对其中得类得设计,类之间得关系,界面得设计(按钮及布局得设计)有了 更深得了解与体会,为Java得学习做好准备工作。 三. 实验要求: 了解全自动洗衣机得简单工作过程及实现。其中包括,洗衣得方式(标准或就是柔与)、洗衣中得水位选择(高水位洗衣、低水位洗衣等)等方面
2、需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且就是必须选择得洗衣参数。当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服得整个过程.在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面得设计,符合人机界面得基本要求。 四. 实验分析: 1. 洗衣机需求分析: 标准清洗:浸泡/清洗/甩干 快速清洗:清洗/甩干 ﻩ大件衣物(冬衣,牛仔类):浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干 床单,窗帘类:浸泡(温水)/清洗 根据衣物得不同用按钮选择上述洗衣模式即可、其中甩干可选可不选、 尽量设计了一个节水功能,可以实现水回收、在无需甩干时水不流走,余下得水可
3、做其她用途,实现节水、 2、主要得类实现 (1)、继承类 (2)、包括进水,排水,洗涤,漂洗,甩干等成员函数 (3)、水位得选择通过参数传递决定进水函数 (4)、其余通过调用筒得转动函数(run)并通过一定得参数控制实现 3、程序设计步骤 ≡≥选择水温 ≡≥放入衣物 ≡≥选择洗衣模式 ≡≥脱水 ≡≥排水 ≡≥烘干 ≡≥关闭 五. 设计与实现过程: 1、洗衣机类得部分实现: import javax、swing、*; import java、awt、*; import java、awt、event、*; public class Was
4、hing 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("洗衣机功能模拟器"); ﻩContai
5、ner 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、setBound
6、s(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,
7、 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(
8、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、addActi
9、onListener(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(); ﻩﻩ //Thre
10、ad t=new Thread(hong); ﻩ // t、start(); ﻩﻩ} ﻩﻩ}); ﻩ jb3、addActionListener(new ActionListener(){ ﻩﻩ public void actionPerformed(ActionEvent ae){ ﻩﻩ Tuoshui tuo=new Tuoshui(); ﻩﻩ } ﻩﻩ}); ﻩﻩjb6、addActionListener(new ActionListener(){ﻩ //ActionListener接收动作事件得监听器接口。在处理动作事件感兴趣得类实现这个接口,这个类创建
11、得对象注册一个组件,使用组件得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(”洗衣机功能模拟器"); ﻩContain
12、er 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
13、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,
14、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(n
15、ew 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 ActionLi
16、stener(){ ﻩﻩﻩ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);
17、 ﻩﻩ // t、start(); ﻩﻩ} }); jb3、addActionListener(new ActionListener(){ ﻩﻩﻩpublic void actionPerformed(ActionEvent ae){ ﻩ Tuoshui tuo=new Tuoshui(); ﻩ } }); ﻩﻩjb6、addActionListener(new ActionListener(){ﻩﻩﻩ//ActionListener接收动作事件得监听器接口。在处理动作事件感兴趣得类实现这个接口,这个类创建得对象注册一个组件,使用组件得addActio
18、nListener方法。动作事件发生时,该对象得actionPerformed方法被调用。 ﻩ public void actionPerformed(ActionEvent ae){ ﻩ System、exit(0); ﻩ} ﻩﻩ}); ﻩﻩjf、setSize(620,160); ﻩ jf、setVisible(true); ﻩ//显示或隐藏这个窗口根据参数b值. ﻩ} 六、 实验过程【截图】 【1】、功能菜单: 【2】、选择温度 【3】、加衣 【4】、泡洗 【5】脱水 【6】、出水 【6】、烘干 七、技巧与体会
19、 本次对洗衣机仿真系统得实现对于基础较为薄弱得自己就是一次不小得任务,从中学会了很多东西,对软件工程导论这么课关于需求,关于可行性,关于模型得建立,对Java这门语言得基本语法与运用技巧与界面设计有了一定得了解。 另外、由于以前写程序参照得居多,第一次知道要做此程序设计得时候心理很就是没底,不知从何下手、本想按要求用C++,后来同学们都说java得界面比较好做,于就是决定用java,虽然java还没有学完,但与学过得某些语言相通得地方还就是不少得,做起来也没有感到很大得困难,就就是在如何把界面与类得运行联系起来上纠结了好几天,最终程序只就是能运行简单得功能,并没有达到预期得效果、以后我会
20、继续努力得! 八、 代码: 1、 //import java、awt、BorderLayout; //import java、awt、Color; //import java、awt、Container; //import java、awt、Dimension; import java、awt、*; //import java、awt、event、ActionEvent; //import java、awt、event、ActionListener; import java、awt、event、*; //import javax、swing、JButton; //imp
21、ort javax、swing、JFrame; //import javax、swing、JLabel; //import javax、swing、JPanel; //import javax、swing、JProgressBar; //import javax、swing、Timer; import javax、swing、*; //import javax、swing、event、ChangeEvent; //import javax、swing、event、ChangeListener; import javax、swing、event、*; public class
22、Chushui implements ActionListener,ChangeListener { ﻩJFrame frame=null; ﻩJProgressBar progressbar; ﻩJLabel label; Timer timer; JButton b; public Chushui(){ ﻩ frame=new JFrame(”出水"); frame、setBounds(400, 200, 300, 500); // frame、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);ﻩﻩ //
23、控制窗口关闭 ﻩ 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
24、ﻩ ﻩ //起始值 progressbar、setStringPainted(true); ﻩ progressbar、addChangeListener(this); progressbar、setPreferredSize(new Dimension(300,20)); progressbar、setBorderPainted(true); ﻩ //progressbar、setBackground(Color、pink); ﻩ progressbar、setForeground(Color、GRAY); ﻩ//进度条颜色 ﻩ J
25、Panel panel=new JPanel(); b=new JButton("出水"); ﻩ b、setForeground(Color、blue);ﻩ //按钮颜色 b、addActionListener(this); panel、add(b); timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、NORTH); ﻩ contentPanel、add(progressbar,BorderLayout、CENTER); contentPanel
26、add(label,BorderLayout、SOUTH); ﻩ //frame、pack(); ﻩ frame、setVisible(true); } ﻩpublic void actionPerformed(ActionEvent e) { if(e、getSource()==b){ ﻩ timer、start(); ﻩ } if(e、getSource()==timer){ ﻩ int value=progressbar、getValue(); if(value>0) ﻩ progre
27、ssbar、setValue(-—value); ﻩ else{ timer、stop(); ﻩ //frame、dispose(); ﻩ } } } ﻩpublic void stateChanged(ChangeEvent e1) { int value=progressbar、getValue(); if(e1、getSource()==progressbar){ ﻩ label、setText("目前剩余:"+Integer、toString(value)+"%");
28、 label、setForeground(Color、blue); ﻩ } } ﻩpublic static void main(String[] args) { ﻩ Chushui Chu=new Chushui(); ﻩ} } 2、import java、awt、*; import java、awt、event、*; import javax、swing、*; import javax、swing、event、*; public class Honggan implements ActionListener,ChangeListener { ﻩJFrame
29、 frame=null; JProgressBar progressbar; ﻩJLabel label; ﻩTimer timer; ﻩJButton b; ﻩpublic Honggan(){ ﻩ frame=new JFrame(”烘干"); ﻩ frame、setBounds(400, 400, 400, 200); // frame、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);ﻩﻩﻩ//控制窗口关闭 ﻩ Container contentPanel=frame、getContentPane();
30、 ﻩ label=new JLabel("",JLabel、CENTER); ﻩ progressbar = new JProgressBar();ﻩ ﻩ //progressbar、setOrientation(JProgressBar、VERTICAL);ﻩﻩﻩ//进度条方向 ﻩ progressbar、setMinimum(0); ﻩ progressbar、setMaximum(100); progressbar、setValue(0); progressbar、setStringPainted(true); progressb
31、ar、addChangeListener(this); progressbar、setPreferredSize(new Dimension(300,20)); progressbar、setBorderPainted(true); //progressbar、setBackground(Color、pink); JPanel panel=new JPanel(); b=new JButton(”开始"); b、setForeground(Color、blue);ﻩﻩﻩ//按钮颜色 b、addActionListener(t
32、his); ﻩ panel、add(b); ﻩ timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、NORTH); contentPanel、add(progressbar,BorderLayout、CENTER); contentPanel、add(label,BorderLayout、SOUTH); ﻩ //frame、pack(); ﻩ frame、setVisible(true); ﻩ} ﻩpublic void actionPerformed(Actio
33、nEvent e) { ﻩ if(e、getSource()==b){ timer、start(); ﻩ } ﻩ if(e、getSource()==timer){ ﻩﻩ int value=progressbar、getValue(); ﻩﻩ if(value〈100) ﻩﻩ progressbar、setValue(++value); ﻩ else{ ﻩ timer、stop(); //frame、dispose(); ﻩ } } }
34、public void stateChanged(ChangeEvent e1) {} public static void main(String[] args) { ﻩﻩHonggan Hong=new Honggan(); } } 3、 import java、awt、*; import java、awt、event、*; import javax、swing、*; import javax、swing、event、*; public class Paoxi implements ActionListener,ChangeListener { ﻩJFrame f
35、rame=null; ﻩJProgressBar progressbar; JLabel label; ﻩTimer timer; ﻩJButton a,b,c; ﻩpublic Paoxi(){ ﻩ frame=new JFrame("泡洗"); ﻩ frame、setBounds(400, 400, 400, 200); // frame、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);ﻩﻩ //控制窗口关闭 Container contentPanel=frame、getContentPane();
36、 ﻩ label=new JLabel(”",JLabel、CENTER); progressbar = new JProgressBar(); //progressbar、setOrientation();ﻩ ﻩ//进度条方向 ﻩ progressbar、setMinimum(0); progressbar、setMaximum(100); ﻩ progressbar、setValue(0); ﻩ progressbar、setStringPainted(true); ﻩ progressbar、addChangeListener(t
37、his); progressbar、setPreferredSize(new Dimension(300,20)); ﻩ progressbar、setBorderPainted(true); //progressbar、setBackground(Color、pink); JPanel panel=new JPanel(); a=new JButton(”标准"); ﻩ a、setForeground(Color、blue);ﻩﻩ //按钮颜色 a、addActionListener(this); panel、add(a
38、 timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、NORTH); ﻩ contentPanel、add(progressbar,BorderLayout、CENTER); ﻩ contentPanel、add(label,BorderLayout、SOUTH); ﻩ //frame、pack(); frame、setVisible(true); ﻩ JPanel panel2=new JPanel(); ﻩ b=new JButton(”快洗”); ﻩ
39、 b、setForeground(Color、blue); ﻩ//按钮颜色 b、addActionListener(this); ﻩ panel、add(b); ﻩ timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、NORTH); ﻩ contentPanel、add(progressbar,BorderLayout、CENTER); contentPanel、add(label,BorderLayout、SOUTH); ﻩ //frame、pack();
40、ﻩ frame、setVisible(true); JPanel panel3=new JPanel(); c=new JButton("强洗"); ﻩ c、setForeground(Color、blue);ﻩﻩ //按钮颜色 c、addActionListener(this); ﻩ panel、add(c); timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、NORTH); contentPanel、add(progressbar,Bord
41、erLayout、CENTER); ﻩ contentPanel、add(label,BorderLayout、SOUTH); //frame、pack(); ﻩ frame、setVisible(true); ﻩ} public void actionPerformed(ActionEvent e) { ﻩ if(e、getSource()==a){ ﻩ ﻩ timer、start(); } ﻩﻩ if(e、getSource()==timer){ ﻩﻩﻩ int value=progressbar、getValu
42、e(); ﻩﻩ if(value〈100) ﻩﻩ progressbar、setValue(++value); ﻩﻩ ﻩ else{ ﻩ ﻩ timer、stop(); ﻩﻩﻩ //frame、dispose(); ﻩ } ﻩ } ﻩﻩif(e、getSource()==b){ ﻩ timer、start(); ﻩﻩ } ﻩﻩ if(e、getSource()==timer){ ﻩﻩ int value=progressbar、getVa
43、lue(); ﻩ ﻩﻩ if(value<100) ﻩ progressbar、setValue(++value); else{ ﻩﻩﻩﻩ timer、stop(); ﻩ //frame、dispose(); ﻩ ﻩ } ﻩ } ﻩ if(e、getSource()==c){ ﻩ timer、start(); ﻩ } if(e、getSource()==timer){ ﻩﻩ int value=progressbar、getValue(
44、); ﻩﻩ if(value〈100) ﻩ progressbar、setValue(++value); ﻩﻩ else{ timer、stop(); ﻩ //frame、dispose(); ﻩ } ﻩ } } public void stateChanged(ChangeEvent e1) {} public static void main(String[] args) { Paoxi pao=new Paoxi(); ﻩ} } 4、 import java、
45、awt、*; import java、awt、event、*; import javax、swing、*; import javax、swing、event、*; public class Shuiwen implements ActionListener,ChangeListener { ﻩJFrame frame=null; JProgressBar progressbar; ﻩJLabel label; Timer timer; ﻩJButton a,b,c; public Shuiwen(){ frame=new JFrame(”温度");
46、 frame、setBounds(400, 100, 400, 600); // frame、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);ﻩ ﻩ//控制窗口关闭 Container contentPanel=frame、getContentPane(); ﻩ label=new JLabel(””,JLabel、CENTER); ﻩ progressbar = new JProgressBar(); ﻩ progressbar、setOrientation(JProgressBar、VERTICAL); ﻩ
47、 //progressbar、setOrientation();ﻩﻩﻩ//进度条方向 progressbar、setMinimum(0); ﻩ progressbar、setMaximum(100); progressbar、setValue(0); ﻩ progressbar、setStringPainted(true); progressbar、addChangeListener(this); ﻩ progressbar、setPreferredSize(new Dimension(300,20)); ﻩ progressbar、s
48、etBorderPainted(true); //progressbar、setBackground(Color、pink); ﻩ JPanel panel=new JPanel(); ﻩ a=new JButton(”30℃-50℃"); a、setForeground(Color、blue);ﻩﻩﻩ//按钮颜色 a、addActionListener(this); panel、add(a); timer=new Timer(100,this); contentPanel、add(panel,BorderLayout、N
49、ORTH); contentPanel、add(progressbar,BorderLayout、CENTER); contentPanel、add(label,BorderLayout、SOUTH); ﻩ //frame、pack(); ﻩ frame、setVisible(true); ﻩ JPanel panel2=new JPanel(); b=new JButton(”50℃-70℃"); ﻩ b、setForeground(Color、blue); ﻩﻩ//按钮颜色 b、addActionListener(this);
50、 ﻩ panel、add(b); ﻩ timer=new Timer(100,this); ﻩ contentPanel、add(panel,BorderLayout、NORTH); ﻩ contentPanel、add(progressbar,BorderLayout、CENTER); ﻩ contentPanel、add(label,BorderLayout、SOUTH); ﻩ //frame、pack(); ﻩ frame、setVisible(true); ﻩ JPanel panel3=new JPanel(); ﻩ c=new






