JAVA洗衣机仿真程序实验报告及代码.docx
《JAVA洗衣机仿真程序实验报告及代码.docx》由会员分享,可在线阅读,更多相关《JAVA洗衣机仿真程序实验报告及代码.docx(36页珍藏版)》请在冰豆网上搜索。
JAVA洗衣机仿真程序实验报告及代码
1.实验题目:
用java编写洗衣机仿真程序
2.实验目的:
1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程.
2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件模型等有一定的了解,为以后的软件设计工作打下良好的基础。
3.通过的洗衣机仿真系统的编写与学习,加深了对Java这门语言的了解,对其中的类的设计,类之间的关系,界面的设计(按钮及布局的设计)有了更深的了解与体会,为Java的学习做好准备工作。
3.实验要求:
了解全自动洗衣机的简单工作过程及实现。
其中包括,洗衣的方式(标准或是柔和)、洗衣中的水位选择(高水位洗衣、低水位洗衣等)等方面需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且是必须选择的洗衣参数。
当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服的整个过程。
在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面的设计,符合人机界面的基本要求。
4.实验分析:
1.洗衣机需求分析:
标准清洗:
浸泡/清洗/甩干
快速清洗:
清洗/甩干
大件衣物(冬衣,牛仔类):
浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干
床单,窗帘类:
浸泡(温水)/清洗
根据衣物的不同用按钮选择上述洗衣模式即可.其中甩干可选可不选.
尽量设计了一个节水功能,可以实现水回收.在无需甩干时水不流走,余下的水可做其他用途,实现节水.
2.主要的类实现
(1).继承类
(2).包括进水,排水,洗涤,漂洗,甩干等成员函数
(3).水位的选择通过参数传递决定进水函数
(4).其余通过调用筒的转动函数(run)并通过一定的参数控制实现
3.程序设计步骤
≡≥选择水温
≡≥放入衣物
≡≥选择洗衣模式
≡≥脱水
≡≥排水
≡≥烘干
≡≥关闭
5.设计与实现过程:
1.洗衣机类的部分实现:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassWashingextendsJApplet{
privateJFramejf;
privateJButtonjb1,jb2,jb3,jb4,jb5,jb6;
publicstaticvoidmain(String[]args){
WashingflowTest=newWashing();
flowTest.setSize(270,160);
flowTest.go();
//flowTest.show(true);
}
publicvoidgo(){
jf=newJFrame("洗衣机功能模拟器");
Containercp=jf.getContentPane();
cp.setLayout(null);
jb1=newJButton("入水");
jb2=newJButton("加衣");
jb3=newJButton("脱水");
jb4=newJButton("排水");
jb5=newJButton("烘干");
jb6=newJButton("关闭");
//Containercp=jf.getContentPane();
//cp.setLayout(newBorderLayout());
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(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Shuiwenwen=newShuiwen();
}
});
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Yiwuyi=newYiwu();
yi.go();
//flowTest.go();
}
});
jb4.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
ChushuiChu=newChushui();
}
});
jb5.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
//Piaoxipiao=newPiaoxi();
Hongganhong=newHonggan();
//Threadt=newThread(hong);
//t.start();
}
});
jb3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Tuoshuituo=newTuoshui();
}
});
jb6.addActionListener(newActionListener(){//ActionListener接收动作事件的监听器接口。
在处理动作事件感兴趣的类实现这个接口,这个类创建的对象注册一个组件,使用组件的addActionListener方法。
动作事件发生时,该对象的actionPerformed方法被调用。
publicvoidactionPerformed(ActionEventae){
System.exit(0);
}
});
jf.setSize(700,150);
jf.setVisible(true);//显示或隐藏这个窗口根据参数b值。
}
}
2,.按钮界面的实现:
publicvoidgo(){
jf=newJFrame("洗衣机功能模拟器");
Containercp=jf.getContentPane();
cp.setLayout(null);
jb1=newJButton("入水");
jb2=newJButton("加衣");
jb3=newJButton("脱水");
jb4=newJButton("排水");
jb5=newJButton("烘干");
jb6=newJButton("关闭");
//Containercp=jf.getContentPane();
//cp.setLayout(newBorderLayout());
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(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Shuiwenwen=newShuiwen();
}
});
jb2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Yiwuyi=newYiwu();
yi.go();
}
});
jb4.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
ChushuiChu=newChushui();
}
});
jb5.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
//Piaoxipiao=newPiaoxi();
Hongganhong=newHonggan();
//Threadt=newThread(hong);
//t.start();
}
});
jb3.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
Tuoshuituo=newTuoshui();
}
});
jb6.addActionListener(newActionListener(){//ActionListener接收动作事件的监听器接口。
在处理动作事件感兴趣的类实现这个接口,这个类创建的对象注册一个组件,使用组件的addActionListener方法。
动作事件发生时,该对象的actionPerformed方法被调用。
publicvoidactionPerformed(ActionEventae){
System.exit(0);
}
});
jf.setSize(620,160);
jf.setVisible(true);//显示或隐藏这个窗口根据参数b值。
}
6、实验过程【截图】
【1】.功能菜单:
【2】.选择温度
【3】.加衣
【4】.泡洗
【5】脱水
【6】.出水
【6】.烘干
七、技巧与体会
本次对洗衣机仿真系统的实现对于基础较为薄弱的自己是一次不小的任务,从中学会了很多东西,对软件工程导论这么课关于需求,关于可行性,关于模型的建立,对Java这门语言的基本语法和运用技巧和界面设计有了一定的了解。
另外、由于以前写程序参照的居多,第一次知道要做此程序设计的时候心理很是没底,不知从何下手.本想按要求用C++,后来同学们都说java的界面比较好做,于是决定用java,虽然java还没有学完,但和学过的某些语言相通的地方还是不少的,做起来也没有感到很大的困难,就是在如何把界面和类的运行联系起来上纠结了好几天,最终程序只是能运行简单的功能,并没有达到预期的效果.以后我会继续努力的!
8、代码:
1.
//importjava.awt.BorderLayout;
//importjava.awt.Color;
//importjava.awt.Container;
//importjava.awt.Dimension;
importjava.awt.*;
//importjava.awt.event.ActionEvent;
//importjava.awt.event.ActionListener;
importjava.awt.event.*;
//importjavax.swing.JButton;
//importjavax.swing.JFrame;
//importjavax.swing.JLabel;
//importjavax.swing.JPanel;
//importjavax.swing.JProgressBar;
//importjavax.swing.Timer;
importjavax.swing.*;
//importjavax.swing.event.ChangeEvent;
//importjavax.swing.event.ChangeListener;
importjavax.swing.event.*;
publicclassChushuiimplementsActionListener,ChangeListener{
JFrameframe=null;
JProgressBarprogressbar;
JLabellabel;
Timertimer;
JButtonb;
publicChushui(){
frame=newJFrame("出水");
frame.setBounds(400,200,300,500);
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//控制窗口关闭
ContainercontentPanel=frame.getContentPane();
label=newJLabel("",JLabel.CENTER);
progressbar=newJProgressBar();
progressbar.setOrientation(JProgressBar.VERTICAL);//进度条方向
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(100);//起始值
progressbar.setStringPainted(true);
progressbar.addChangeListener(this);
progressbar.setPreferredSize(newDimension(300,20));
progressbar.setBorderPainted(true);
//progressbar.setBackground(Color.pink);
progressbar.setForeground(Color.GRAY);//进度条颜色
JPanelpanel=newJPanel();
b=newJButton("出水");
b.setForeground(Color.blue);//按钮颜色
b.addActionListener(this);
panel.add(b);
timer=newTimer(100,this);
contentPanel.add(panel,BorderLayout.NORTH);
contentPanel.add(progressbar,BorderLayout.CENTER);
contentPanel.add(label,BorderLayout.SOUTH);
//frame.pack();
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b){
timer.start();
}
if(e.getSource()==timer){
intvalue=progressbar.getValue();
if(value>0)
progressbar.setValue(--value);
else{
timer.stop();
//frame.dispose();
}
}
}
publicvoidstateChanged(ChangeEvente1){
intvalue=progressbar.getValue();
if(e1.getSource()==progressbar){
label.setText("目前剩余:
"+Integer.toString(value)+"%");
label.setForeground(Color.blue);
}
}
publicstaticvoidmain(String[]args){
ChushuiChu=newChushui();
}
}
2、importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassHongganimplementsActionListener,ChangeListener{
JFrameframe=null;
JProgressBarprogressbar;
JLabellabel;
Timertimer;
JButtonb;
publicHonggan(){
frame=newJFrame("烘干");
frame.setBounds(400,400,400,200);
//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//控制窗口关闭
ContainercontentPanel=frame.getContentPane();
label=newJLabel("",JLabel.CENTER);
progressbar=newJProgressBar();
//progressbar.setOrientation(JProgressBar.VERTICAL);//进度条方向
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(0);
progressbar.setStringPainted(true);
progressbar.addChangeListener(this);
progressbar.setPreferredSize(newDimension(300,20));
progressbar.setBorderPainted(true);
//progressbar.setBackground(Color.pink);
JPanelpanel=newJPanel();
b=newJButton("开始");
b.setForeground(Color.blue);//按钮颜色
b.addActionListener(this);
panel.add(b);
timer=newTimer(100,this);
contentPanel.add(panel,BorderLayout.NORTH);
contentPanel.add(progressbar,BorderLayout.CENTER);
contentPanel.add(label,BorderLayout.SOUTH);
//frame.pack();
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==b){
timer.start();
}
if(e.getSource()==timer){
intvalue=progressbar.getValue();
if(value<100)
progressbar.setValue(++value);
else{
timer.stop();
//frame.dispose();
}
}
}
publicvoidstateChanged(ChangeEvente1){}
publicstaticvoidmain(String[]args){
HongganHong=newHonggan();
}
}
3、
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclassPaoxi