java课程设计温度转换器符原代码.docx
《java课程设计温度转换器符原代码.docx》由会员分享,可在线阅读,更多相关《java课程设计温度转换器符原代码.docx(11页珍藏版)》请在冰豆网上搜索。
java课程设计温度转换器符原代码
《面向对象程序设计》
课
程
综
合
设
计
报
告
题目:
温度转换器
班级:
通信
学号:
2000000000
姓名:
完成时间:
2014-11-03
温度转换器
1.应用意义
编写一个温度转换器,能实现华氏温度与摄氏温度之间的互相转换,以便需要者能快速计算。
二.功能描述
在程序中,除了其简单的温度互相转换之外,为了美观起见,我还添加一些图片和背景音乐(背景音乐可以随关随开),且图片会随着使用者输入的数值发生改变。
(对应春夏秋冬四季)
分析论证:
此题目的的主要运用我们JAVA第十一章学习的内容(Swing图形用户界面(GUI)编程)中的组件与内容、布局管理器、事件处理等和第十章(Applet的运用)等知识.借鉴书中的例子组建出窗体,利用温度间的转换公式,通过监听事件调用Applet播放声音以及图片的导入与变换.
三.结构分析
此题主要是JAVA一些组件的运用,具体组件与内容、布局管理器、事件处理等和Applet的运用知识.
1.首先应该创建程序的主体窗口,窗体中有一个JTextField组件,一个JLabel组件和一个“转换”按钮,使得程序基本能够初始化运行;
2.再写入温度转换的公式,使得温度转换计的基本功能实现;
3.接着运用Applet中的AudioClip类来播放声音,使得背景音乐功能得以实现;
4.最后插入图片功能,使得随着温度的不同能够自动转换每个季节的图片.
经过反复的实验与论证,发现图片的功能比较难实现,在图书馆查了一些书籍和詹东健的帮助下攻克了这个问题.在布局方面比较简单,采用了箱式布局.方位布局,网格的布局,最后做成了小JAVA程序.
程序框图如图所示:
代码如下(注释语句为自己在编写过程中出错的语句。
)
packageless11;
importjava.applet.AudioClip;
importjava.awt.BorderLayout;
importjava.awt.Button;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.Graphics;
importjava.awt.GridLayout;
importjava.awt.Image;
importjava.awt.Panel;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JApplet;
importjavax.swing.JComboBox;
importjavax.swing.JTextField;
publicclasstextextendsJAppletimplementsActionListener{
publicJTextFieldfirst,second,three;//定义三个文本框
publicJComboBoxchose;//定义一个组合框
publicButtonecquilButton,stopButton,stopButton2;//三个按钮
publicPanelImgepanel,panel2;//定义两个面板
AudioClipmusice;//音频播放器
publicvoidinit()//界面的初始化
{
//JAppleta=newJApplet();
resize(600,600);//调整界面大小
Containerc=getContentPane();//容器(添加内容格)
c.setLayout(newBorderLayout());//设置边框布局管理器
panel2=newPanel();//容器面板赋初值
panel2.setLayout(newGridLayout(1,4));//将面板12设置成网格布局管理器
first=newJTextField(10);//可视字符长度为10
second=newJTextField(10);
three=newJTextField(10);
String[]tybe={"转换为摄氏温度","转换为华氏温度"};//下拉列表中的两类
chose=newJComboBox(tybe);
ecquilButton=newButton("=");//定义“=”按钮
ecquilButton.addActionListener(this);//事件监听
panel2.add(first);
panel2.add(chose);
panel2.add(ecquilButton);
panel2.add(three);
c.add(panel2,BorderLayout.SOUTH);//将面板2加到边框布局管理器的南面
stopButton=newButton("暂停");
//stopButton.setSize(10,10);
stopButton2=newButton("开始");
stopButton.addActionListener(this);//事件监听器
stopButton2.addActionListener(this);
//startButtom
Imgepanel=newPanel();
Panelbutton=newPanel();//定义一个button容器。
//button.setLayout(null);
//stopButton2.setBounds(30,30,101,101);
button.add(stopButton);
button.add(stopButton2);
c.add(Imgepanel,BorderLayout.CENTER);//放置四季图片出现的地方的布局
c.add(button,BorderLayout.NORTH);
musice=getAudioClip(getCodeBase(),"月半小夜曲.wav");//得到背景音乐
//Imaget=getImage();
//Graphicsg=Imgepanel.getGraphics();
//Imgepanel.paintComponents(g);
//g.drawImage(t,0,0,this);
musice.loop();//循环播放
}
publicvoidactionPerformed(ActionEvente)//按钮的事件监听器ActionEvente是事件类,e是事件对象
{
Buttonsource=(Button)e.getSource();//点击Button获取事件源
Stringwhice=source.getLabel();
if(whice.contentEquals("="))//当括号内与设定相同是,执行语句。
{
Stringheat=first.getText();
Doublea=Double.parseDouble(heat);//转换成double类型
Stringmess=(String)chose.getSelectedItem();//(文本形式)得到用户选项是哪个
chose.setEnabled(true);//设置下拉菜单可用
if(mess.contentEquals("转换为摄氏温度"))//当括号内与设定相同是,执行语句。
{
a=(a-32)/1.8;
pian(a);//显示图片
three.setText(a.toString()+"°C");//输出文本模式
}else{
pian(a);
a=a*1.8+32;
three.setText(a.toString()+"°F");
}
}
if(whice.contentEquals("暂停"))//当括号内与设定相同是,执行语句。
{
musice.stop();
}
if(whice.contentEquals("开始"))//当括号内与设定相同是,执行语句。
{
musice.loop();
}
}
publicvoidpian(Doublea)//是画面板的图片//温度
{
Graphicsg=Imgepanel.getGraphics();
if(a<10)
{
ImageIconat=newImageIcon("冬.jpg");//得到一个图片(冬天)
Imageimage=at.getImage();
g.drawImage(image,0,0,this);//this所代表的对象作为参数进行传递
}
if(10<=a&&a<22)
{
ImageIconat=newImageIcon("春.jpg");//得到一个图片(春天)
Imageimage=at.getImage();
g.drawImage(image,0,0,this);
}
if(22<=a&&a<30)
{
ImageIconat=newImageIcon("秋.jpg");//得到一个图片(秋天)
Imageimage=at.getImage();
g.drawImage(image,0,0,this);
}
if(30<=a)
{
ImageIconat=newImageIcon("夏.jpg");//得到一个图片(夏天)
Imageimage=at.getImage();
g.drawImage(image,0,0,this);
}
}
}
四.实验结果
1.(运行程序,背景音乐自动播放,可选择下面的按钮是否继续播放)
(当输入20摄氏度时,大约是春天的温度,系统自动切换到春天的图片)
2.(在下拉菜单中使用者可以选择自己需要的转换目标)
3.(当输入30摄氏度时,大约是夏天的温度,系统自动切换到夏天的图片)
.
4.(当输入22摄氏度时,大约是秋天的温度,系统自动切换到秋天的图片)
5.(当输入10华氏度时,大约是冬天的温度,系统自动切换到冬天的图片)
5.设计总结
这次的课程设计时间比较紧,所以总体的构思和设计都不是很紧凑。
比如(按钮的尺寸可以在有所调整,在刚开始没有输入温度时,面板中可以添加图片等。
)并且有不少内容都没有学过,属于边学边做,再加上自己java学的不是很精通,所以编写起来比较吃力,所以参考过网上内容,也问同学不少问题。
在刚开始,自己做了一个简单的温度转换器,只有摄氏度转换成华氏度,当某位同学提起有没有华氏转换成摄氏时,我就感觉应该把程序改改,让它更加的全面。
(原程序我也将它放入报告,在附录中。
)所以,在之后的完善中我添加了图片和背景音乐。
犹豫在applet中添加这两样比较简单,所以就看了书本再结合孙鑫老师讲的,编写了程序。
并且在报告里,我也把自己在编写过程中出错的地方也放入并注释起来,这样就能让自己更加一目了然的知道自己哪里错,为什么错。
不过当自己真正完成作业的时候,还是很有成就感的。
附录:
源代码:
packageless12;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCimplementsActionListener
{
JFrameF;
JPanelP;
JTextFieldJF;
JLabelcL,fL;
JButtonB;
publicC()
{
F=newJFrame("温度转换器");
F.setSize(40,40);
P=newJPanel();
P.setLayout(newGridLayout(2,2));
F.setLocation(800,300);
addWidgets();
F.getContentPane().add(P,BorderLayout.CENTER);
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
F.pack();
F.setVisible(true);
}
privatevoidaddWidgets()
{
JF=newJTextField
(2);
cL=newJLabel("摄氏温度",SwingConstants.LEFT);
B=newJButton("转换...");
fL=newJLabel("华氏温度",SwingConstants.LEFT);
B.addActionListener(this);
P.add(JF);
P.add(cL);
P.add(B);
P.add(fL);
cL.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
fL.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
}
publicvoidactionPerformed(ActionEventevent)
{
inttempFahr=(int)((Double.parseDouble(JF.getText()))*1.8+32);
fL.setText(tempFahr+"F");
}
publicstaticvoidmain(String[]args)
{
try
{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch(Exceptione){}
Cconverter=newC();
}
}