面向对象程序设计度量衡换算器课程设计.docx
- 文档编号:30473910
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:17
- 大小:207.45KB
面向对象程序设计度量衡换算器课程设计.docx
《面向对象程序设计度量衡换算器课程设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计度量衡换算器课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
面向对象程序设计度量衡换算器课程设计
面向对象程序设计
课程设计报告
题目:
专业:
班级:
学号:
姓名:
指导老师:
时间:
一、课程设计题目及所涉及知识点
设计题目是“度量衡换算器”。
所涉及的知识点主要是:
运用java提供的强大的图形用户界面功能,调用java.awt和javax.swing这两个包中的基本元素,实现对用户界面的设计,通过创建和设置组件并将组件加入到容器中,布局组件,和处理有组件产生的事件四个基本步骤实现用户界面的设计。
在程序中大量运用了选择结构中的if_else语句和switch语句,以实现对功能的选择和转换类型的判断;程序的添加的异常处理以实现抛出异常和处理异常。
二、课程设计思路
设计思路:
1.设计换算器界面
通过调用java.awt和javax.swing这两个包中的不同元素,进行图形用户界面的设计。
首先创建一个面板容器,然后在进行布局不同的组件,创建长度、面积、体积、温度的JButton按钮,进行不同类型的选择。
同时在每个类型下方创建一个原本的数据类型和需要转换成的数据类型的JComboBox选择组合框,在原本的数据类型下方创建一个JTextField的输入文本框以供输入需要转换的数据大小,在最终转换成的数据类型下方创建一个输出转换结果的JTextField文本框以供输出转换结果。
2.设计换算单位及换算关系
在程序中提供不同的换算单位以供选择,同时放入JComboBox选择组合框中。
同时运用选择结构中的if_else语句进行选择不同的换算单位,在选择后利用换算公式对原数据进行数据换算得到最终需要的换算后的数据结果
3.设计功能选项帮助按钮和异常处理
在图形用户界面中创建一帮助按钮,这里的帮助按钮只是对本程序的说明,介绍了程序的一些详细信息,在程序主函数中设置异常处理机制,对可能出现的异常进行抛出异常和异常处理操作。
三、课程设计中遇到的难点及解决办法
在程序设计中遇到的问题主要包括对面板容器的布置以及对选择结构中的if_else语句的灵活运用,在很多时候因为一点的差错导致能够选择判断语句的错误,不过在成功的设置了第一个后,后面的就显得很容易了。
在设置对帮助中程序说明的弹出设置遇到很大的阻力,后通过新建一个AboutFrame类继承JFrame中的成员方法得以解决。
在进行温度类型的换算时摄氏度到华氏度的转换时是上网XX猜得到的换算关系。
在程序设计中有很多不明白不清楚的问题都是通过上网搜索或者询问老师得以解决的。
四、总结
通过这次课程设计,我对java程序设计语言中的图形用户界面有了更加深刻的理解和认识,无论是对JPanel面板容器、JButton按钮还是对JTextField文本框、JcomboBox组合框的应用都有了更加深刻的了解,同时通过程序设计中图形用户界面以及转换功能的不断完善,我的个人能力也在不断地提高,我对面向对象程序设计也有了更好的掌握,虽然距离熟练的掌握每一个功能操作还有一定的差距,但是我相信通过不断地努力和学习,我一定能做的更好更完善。
五、附录—主要源程序代码及运行结果
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassConversionextendsJFrameimplementsActionListener{
//建立工具栏中的按钮组件
JToolBartoolBar=newJToolBar();
JButtonpicLength=newJButton("长度(L)");
JButtonpicSquare=newJButton("面积(S)");
JButtonpicVolume=newJButton("体积(V)");
JButtonpicTemper=newJButton("温度(K)");
JPanelboxLength=newJPanel();
JPanelboxSquare=newJPanel();
JPanelboxVolume=newJPanel();
JPanelboxTemper=newJPanel();
JMenuBarjMenuBar=newJMenuBar();
JMenuaboutMenu=newJMenu("帮助");
JMenuItemaboutItem=newJMenuItem("程序说明");
String[]length={"厘米(cm)","分米(dm)","米(m)","千米(km)"};
String[]square={"平方厘米(cm^2)","平方分米(dm^2)","平方米(m^2)"};
String[]volume={"立方厘米(cm^3)=毫升(mL)","立方分米(dm^3)=升(L)","立方米(m^3)"};
String[]temper={"摄氏度(℃)","华氏度(℉)","开尔文度(°K)"};
//输入
JComboBoxjbxLength=newJComboBox(length);
JComboBoxjbxSquare=newJComboBox(square);
JComboBoxjbxVolume=newJComboBox(volume);
JComboBoxjbxTemper=newJComboBox(temper);
//转换成
JComboBoxjbxLength1=newJComboBox(length);
JComboBoxjbxSquare1=newJComboBox(square);
JComboBoxjbxVolume1=newJComboBox(volume);
JComboBoxjbxTemper1=newJComboBox(temper);
//输入框
JTextFieldjtfLength=newJTextField(20);
JTextFieldjtfLength1=newJTextField(20);
JTextFieldjtfSquare=newJTextField(20);
JTextFieldjtfSquare1=newJTextField(20);
JTextFieldjtfVolume=newJTextField(20);
JTextFieldjtfVolume1=newJTextField(20);
JTextFieldjtfTemper=newJTextField(20);
JTextFieldjtfTemper1=newJTextField(20);
CardLayoutcenterLayout=newCardLayout(5,5);
JPanelcenterPane=newJPanel();
privatestaticfinallongserialVersionUID=1L;
publicConversion(){
jtfLength1.setEditable(false);
jtfSquare1.setEditable(false);
jtfVolume1.setEditable(false);
jtfTemper1.setEditable(false);
setTitle("度量衡换算器");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boxLength.setLayout(newBoxLayout(boxLength,BoxLayout.Y_AXIS));
boxSquare.setLayout(newBoxLayout(boxSquare,BoxLayout.Y_AXIS));
boxVolume.setLayout(newBoxLayout(boxVolume,BoxLayout.Y_AXIS));
boxTemper.setLayout(newBoxLayout(boxTemper,BoxLayout.Y_AXIS));
//在工具栏中添加按钮组件
toolBar.add(picLength);
toolBar.add(picSquare);
toolBar.add(picVolume);
toolBar.add(picTemper);
picLength.setMnemonic('L');
picSquare.setMnemonic('S');
picVolume.setMnemonic('V');
picTemper.setMnemonic('K');
boxLength.add(newJLabel("输入:
"));//长度布局
boxLength.add(jbxLength);
boxLength.add(jtfLength);
boxLength.add(newJLabel("转换成:
"));
boxLength.add(jbxLength1);
boxLength.add(jtfLength1);
boxSquare.add(newJLabel("输入:
"));//面积布局
boxSquare.add(jbxSquare);
boxSquare.add(jtfSquare);
boxSquare.add(newJLabel("转换成:
"));
boxSquare.add(jbxSquare1);
boxSquare.add(jtfSquare1);
boxVolume.add(newJLabel("输入:
"));//体积布局
boxVolume.add(jbxVolume);
boxVolume.add(jtfVolume);
boxVolume.add(newJLabel("转换成:
"));
boxVolume.add(jbxVolume1);
boxVolume.add(jtfVolume1);
boxTemper.add(newJLabel("输入:
"));//温度布局
boxTemper.add(jbxTemper);
boxTemper.add(jtfTemper);
boxTemper.add(newJLabel("转换成:
"));
boxTemper.add(jbxTemper1);
boxTemper.add(jtfTemper1);
centerPane.setLayout(centerLayout);//设置中心区布局
centerPane.add("Lengthpage",boxLength);
centerPane.add("Squarepage",boxSquare);
centerPane.add("Volumepage",boxVolume);
centerPane.add("Temperaturepage",boxTemper);
aboutMenu.add(aboutItem);
jMenuBar.add(aboutMenu);
setJMenuBar(jMenuBar);
ContainercontentPane=getContentPane();
contentPane.add(toolBar,BorderLayout.NORTH);
contentPane.add(centerPane,BorderLayout.CENTER);
aboutItem.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventap){
AboutFrameaboutFrame=newAboutFrame();
aboutFrame.setBounds(0,0,400,300);
aboutFrame.setVisible(true);
}
});
//为工具栏中组件添加监听
picLength.addActionListener(this);
picSquare.addActionListener(this);
picVolume.addActionListener(this);
picTemper.addActionListener(this);
//各个面板中下拉框添加监听
jtfLength.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
indexListener
(1);
}
});
jtfLength.addFocusListener(newFocusListener(){
publicvoidfocusGained(FocusEventarg0){}
publicvoidfocusLost(FocusEventarg0){}
});
jbxLength1.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEventie){
if(jtfLength.getText().equals("")){
jtfLength.setText("0");
}
indexListener
(1);
}
});
jtfSquare.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
indexListener
(2);
}
});
jbxSquare1.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEventie){
if(jtfSquare.getText().equals("")){
jtfSquare.setText("0");
}
indexListener
(2);
}
});
jtfVolume.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
indexListener(3);
}
});
jbxVolume1.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEventie){
if(jtfVolume.getText().equals("")){
jtfVolume.setText("0");
}
indexListener(3);
}
});
jtfTemper.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventae){
indexListener(4);
}
});
jbxTemper1.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEventie){
if(jtfTemper.getText().equals("")){
jtfTemper.setText("0");
}
indexListener(4);
}
});
}
publicvoidindexListener(intindex){
switch(index){//换算关系的方法
case1:
//长度
intcb10=jbxLength.getSelectedIndex();
intcb11=jbxLength1.getSelectedIndex();
DoubletemDouble1;
temDouble1=Double.valueOf(jtfLength.getText().trim());
if(cb10==cb11){}
elseif(cb10==0&&cb11==1){temDouble1/=10;}
elseif(cb10==0&&cb11==2){temDouble1/=100;}
elseif(cb10==0&&cb11==3){temDouble1/=100*1000;}
elseif(cb10==1&&cb11==0){temDouble1*=10;}
elseif(cb10==1&&cb11==2){temDouble1/=10;}
elseif(cb10==1&&cb11==3){temDouble1/=10*1000;}
elseif(cb10==2&&cb11==0){temDouble1*=100;}
elseif(cb10==2&&cb11==1){temDouble1*=10;}
elseif(cb10==2&&cb11==3){temDouble1/=1000;}
elseif(cb10==3&&cb11==0){temDouble1*=100*1000;}
elseif(cb10==3&&cb11==1){temDouble1*=10*1000;}
elseif(cb10==3&&cb11==2){temDouble1*=1000;}
jtfLength1.setText(temDouble1.toString());
break;
case2:
//面积
intcb20=jbxSquare.getSelectedIndex();
intcb21=jbxSquare1.getSelectedIndex();
DoubletemDouble2;
temDouble2=Double.valueOf(jtfSquare.getText().trim());
if((cb20==cb21)){}
elseif(cb20==0&&cb21==1){temDouble2/=100;}
elseif(cb20==0&&cb21==2){temDouble2/=10000;}
elseif(cb20==1&&cb21==0){temDouble2*=100;}
elseif(cb20==1&&cb21==2){temDouble2/=100;}
elseif(cb20==2&&cb21==0){temDouble2*=10000;}
elseif(cb20==2&&cb21==1){temDouble2*=100;}
jtfSquare1.setText(temDouble2.toString());
break;
case3:
//体积
intcb30=jbxVolume.getSelectedIndex();
intcb31=jbxVolume1.getSelectedIndex();
DoubletemDouble3;
temDouble3=Double.valueOf(jtfVolume.getText().trim());
if((cb30==cb31)){}
elseif(cb30==0&&cb31==1){temDouble3/=1000;}
elseif(cb30==0&&cb31==2){temDouble3/=1000000;}
elseif(cb30==1&&cb31==0){temDouble3*=1000;}
elseif(cb30==1&&cb31==2){temDouble3/=1000;}
elseif(cb30==2&&cb31==0){temDouble3*=1000000;}
elseif(cb30==2&&cb31==1){temDouble3*=1000;}
jtfVolume1.setText(temDouble3.toString());
break;
case4:
//温度
intcb40=jbxTemper.getSelectedIndex();
intcb41=jbxTemper1.getSelectedIndex();
DoubletemDouble4;
temDouble4=Double.valueOf(jtfTemper.getText().trim());
if((cb40==cb41)){}
elseif(cb40==0&&cb41==1){temDouble4=(temDouble4*9/5)+32;}
elseif(cb40==0&&cb41==2){temDouble4+=273.16;}
elseif(cb40==1&&cb41==0){temDouble4=(temDouble4-32)*5/9;}//C=(F-32)×5/9
elseif(cb40==1&&cb41==2){temDouble4=(temDouble4-32)*5/9+273.16;}//
elseif(cb40==2&&cb41==0){temDouble4-=273.16;}
elseif(cb40==2&&cb41==1){temDouble4=(temDouble4-273.16)*9/5+32;}//K->℉
jtfTemper1.setText(temDouble4.toString());
break;
default:
break;
}
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==picLength){
centerLayout.first(centerPane);
}
elseif(e.getSource()==picSquare){
c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 度量衡 换算 课程设计