java程序设计实验报告1计算器Word格式文档下载.docx
- 文档编号:16897474
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:24
- 大小:129.83KB
java程序设计实验报告1计算器Word格式文档下载.docx
《java程序设计实验报告1计算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《java程序设计实验报告1计算器Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
2、选作功能,可参考windows系统附带计算器:
〔1〕具有相应的科学计算功能。
例如“图示2〞中的各种科学计算功能。
三、开发工具与平台
:
Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。
如C/C++插件(CDT)。
四、设计思路
1.界面设计
〔1〕制作一个简单的面板JFrame,在其上面添加构造界面所需的各种组件
其构造方法为:
calculate(){
super();
this.setBounds(10,10,300,250);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle("
计算器"
);
init();
//创立菜单及各种组件〔如按钮,文本框等〕
getContentPane().setLayout(newBorderLayout(3,3));
getContentPane().add(panelCenter,BorderLayout.CENTER);
getContentPane().add(panelNorth,BorderLayout.NORTH);
〔2〕实现构造菜单及文本框等组件的函数init(),如下实现:
PublicvoidInit(){
//菜单项的构造形成;
editor.add(copy);
editor.addSeparator();
editor.add(paste);
editor.setMnemonic('
E'
look.setMnemonic('
V'
help.setMnemonic('
H'
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
help.add(about);
bar.add(editor);
bar.add(look);
bar.add(help);
setJMenuBar(bar);
//将菜单添加到JFrame;
/*接下来是文本或结果显示区及Backspace、功能键〔CE、C〕和的添加,采用GridBagLayout布局方式,将它们放在北部panelNorth面板。
其次,是数字键及其他功能键的的使用,我这里采用的是网格布局,setLayout(newGridLayout(4,6,5,5));
将它们放在主面板中心区域。
这里给出网格包布布局的两个重要方法,由于代码段较长,故将其他的代码放在后面附录;
privatevoidmakeShow(GridBagLayoutgridBag,
GridBagConstraintsconstraints,Componentcomponent){
gridBag.setConstraints(component,constraints);
//网格包布布局;
panelNorth2.add(component);
}
privatevoidaddButton(GridBagLayoutgridBag,//网格包布布局重要方法;
panelNorth1.add(component);
}
总体界面如下:
为了可以得到我们想要的操作,比方让那些数字参与运算,做什么运算等等,我们就需要为每个按钮添加响应事件,通过响应事件来完成我们预期的结果。
以下我们来分析下重要的事件是如何响应的:
.Stringstr=e.getActionCommand();
//TODOAuto-generatedmethodstub
if(str.equals("
Backspace"
)){//点击Backspace
handerBackspace();
}
elseif(str.equals("
CE"
)){//点击了[CE]的功能是去除当前显示的数值
bool=false;
show.setText("
0"
C"
)){//点击了C的功能是清零
copyText="
"
;
Div=0.0;
CalculateResult="
MC"
)){//MC清楚存储器内容
handerMC();
MR"
)){//MR将存于存储器的值显示在文本框中
handerMR();
MS"
)){//MS将显示框得文字存于存储器
handerMS();
M+"
)){//M+将显示框的数与存储器中的数相加并进展存储
handerM();
elseif("
0123456789."
.indexOf(str)>
=0){//按下的是数字键或者小数点正负号
handerCenter(str);
%"
)){//将当前显示框里的数字用百分比表示〔x/100〕
Stringcurrent=show.getText();
doublea=0;
if(!
current.isEmpty())
a=Double.parseDouble(current);
Doubleresult=(Double)a/100;
Strings4=result.toString();
if(!
isInt(s4))
show.setText(s4);
else{
show.setText(s4.substring(0,s4.indexOf("
."
)));
}
bool=true;
else{
handerOperation(str);
//响应的是运算符;
处理运算符操作
3.程序测试
程序测试过程中无较大BUG,根本上轻松搞定。
五、实验总结
这是我第一次正式的java程序设计实验,感觉可以把学到的东西用到实际中是件非常有趣的事,更重要的是让我们真正明白了学贵致用的道理。
由于时间有限,本程序未能做到科学计算器,同时在这里也感谢教师的指导和同学的帮助。
六、附录
publicclasscalculateextendsJFrameimplementsActionListener{
/**
*@paramargs
*/
privateJMenuBarbar=newJMenuBar();
privateJMenueditor=newJMenu("
编辑(E)"
privateJMenuItemcopy=newJMenuItem("
复制"
privateJMenuItempaste=newJMenuItem("
粘贴"
privateJMenulook=newJMenu("
查看(V)"
privateJMenuhelp=newJMenu("
帮助(H)"
privateJMenuItemabout=newJMenuItem("
关于"
privateStringcopyText;
privateJPanelpanelWest=newJPanel();
privateJPanelpanelCenter=newJPanel();
//放Number键
privateJPanelpanelNorth=newJPanel();
//放功能键1与文本框
privateJPanelpanelNorth1=newJPanel();
privateJPanelpanelNorth2=newJPanel();
//放显示框
privateJPanelpanelEast=newJPanel();
//放运算键;
privateString[]strNorth=newString[]{"
"
};
//功能键1
privateString[]strCenter=newString[]{"
7"
8"
9"
4"
5"
6"
1"
2"
3"
+/-"
privateString[]strEast=newString[]{"
/"
sqrt"
*"
-"
1/x"
+"
="
privateString[]strWest=newString[]{"
privateJButton[]buttonCenter=newJButton[strCenter.length];
privateJButton[]buttonEast=newJButton[strEast.length];
privateJButton[]buttonNorth=newJButton[strNorth.length];
privateJButton[]buttonWest=newJButton[strWest.length];
privateStringch=newString();
//保存当前运算符
privateDoubleDiv;
//保存中间运算数
privateStringsave=newString();
//保存存储器中的数值
privateStringCalculateResult=newString();
//保存运算结果
privatebooleanbool=false;
//当前结果是否为运算结果
privateJTextFieldshow=newJTextField("
24);
//输出显示
privateJTextFieldlabel;
privateGridBagLayoutgridBag=newGridBagLayout();
//网格包布布局;
privateGridBagConstraintsconstraints=newGridBagConstraints();
calculate(){
publicvoidinit(){
editor.add(copy);
editor.setMnemonic('
copy.addActionListener(this);
paste.addActionListener(this);
about.addActionListener(this);
panelNorth1.setLayout(gridBag);
//
panelNorth2.setLayout(gridBag);
show.setHorizontalAlignment(JTextField.RIGHT);
//右对齐;
show.setEditable(false);
panelNorth.setLayout(newBorderLayout());
panelNorth.add(show,BorderLayout.NORTH);
show.setBorder(newBevelBorder(BevelBorder.LOWERED));
//让显示框凹陷下去
show.setBackground(Color.WHITE);
//网格包布布局;
constraints.gridx=0;
constraints.gridy=0;
constraints.fill=GridBagConstraints.NONE;
constraints.anchor=GridBagConstraints.CENTER;
makeShow(gridBag,constraints,show);
/*//设置箱式布局间隔(另一种布局方式)
*//box.add(label);
for(inti=0;
i<
strNorth.length;
++i){
buttonNorth[i]=newJButton(strNorth[i]);
box.add(Box.createHorizontalStrut(10));
box.add(buttonNorth[i]);
buttonNorth[i].addActionListener(this);
buttonNorth[i].setForeground(Color.RED);
}*/
label=newJTextField
(2);
label.setEditable(false);
label.setBorder(newBevelBorder(BevelBorder.LOWERED));
//让文本框凹陷下去;
constraints.insets=newInsets(10,5,10,10);
addButton(gridBag,constraints,label);
for(intj=0;
j<
++j){
buttonNorth[j]=newJButton(strNorth[j]);
buttonNorth[j].addActionListener(this);
buttonNorth[j].setForeground(Color.RED);
constraints.gridx=j+1;
constraints.gridy=0;
addButton(gridBag,constraints,buttonNorth[j]);
panelNorth.add(panelNorth1,BorderLayout.CENTER);
panelNorth.add(panelNorth2,BorderLayout.NORTH);
panelCenter.setLayout(newGridLayout(4,6,5,5));
for(inti=0;
strWest.length;
buttonWest[i]=newJButton(strWest[i]);
buttonWest[i].setBorder(newBevelBorder(BevelBorder.RAISED));
buttonWest[i].setForeground(Color.RED);
buttonWest[i].addActionListener(this);
strCenter.length;
buttonCenter[i]=newJButton(strCenter[i]);
buttonCenter[i].setBorder(newBevelBorder(BevelBorder.RAISED));
buttonCenter[i].setForeground(Color.BLUE);
buttonCenter[i].addActionListener(this);
strEast.length;
buttonEast[i]=newJButton(strEast[i]);
buttonEast[i].setBorder(newBevelBorder(BevelBorder.RAISED));
buttonEast[i].addActionListener(this);
if(i%2==0||(i==7))
buttonEast[i].setForeground(Color.RED);
elsebuttonEast[i].setForeground(Color.BLUE);
intw=0,e=0,c=0;
for(inti=0;
24;
){
if(i%6==0){
buttonWest[w].setBorder(newLineBorder(Color.GRAY));
panelCenter.add(buttonWest[w]);
++i;
++w;
for(intj=0;
3;
buttonCenter[c].setBorder(newLineBorder(Color.GRAY));
panelCenter.add(buttonCenter[c]);
++i;
++c;
2;
buttonEast[e].setBorder(newLineBorder(Color.GRAY));
panelCenter.add(buttonEast[e]);
++e;
privatevoidmakeShow(GridBagLayoutgridBag,
privatevoidaddButton(GridBagLayoutgridBag,//网格包布布局重要方法;
//TODOAuto-generatedmethodstubt
publicstaticvoidmain(String[]args){
calculatemyCalculte=newcalculate();
myCalculte.setVisible(true);
publicvoidactionPerformed(ActionEvente){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 程序设计 实验 报告 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)