java简易计算器课程设计Word文件下载.docx
- 文档编号:20527475
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:17
- 大小:33.05KB
java简易计算器课程设计Word文件下载.docx
《java简易计算器课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《java简易计算器课程设计Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
÷
求倒数等基本运算功能,类似于Windows中的计算器。
6)设计一个简单,亲和图形界面(GUI)的计算机应用程序
3.设计算法分析
3.1模块调用层次图
【1】变量描述
数组:
1JButtonb[]=newJButton[10];
创建按钮类型的数组,为数字键0-9这10个按钮。
全局变量:
1JFrameframe;
创建一个jFrame类型的框架,为frame,用来存放需要显示的一些东西。
2JTextFieldshow;
创建一个JtextField类型的展示框,为show。
上面用来显示输出或计算的结果。
3doublesum=0,getValue;
创建一个类型为双精度的变量,其初始值为0.返回计算后得到的值。
4JDialogabout;
创建一个类型为Jdialog的对话框abhout,其显示的该计算器的一些关于内容。
5finalintslength=30;
创建一个为类型为整形的slength,其值为30,意味该计算器显示的有效长度最大值为30,超过30的话,计算器将不能够全部显示。
6JButtonbc,c,ce,ab,jia,jian,cheng,chu,equ,point,sqrt,ds,bfh,zf;
创建类型为Jbuttond的按钮退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号,当按下这些按钮的话,便会触发相应的监听器,根据这些监听器的设置,执行对应的程序。
7inti=0,j=0,p=0,l,action;
创建类型为整形的初始化书i、j、p。
这几个按钮在算法初始化时实现。
8PaneldispMain=newPanel()
创建类型为panel的面板dispMain,用来存放另一些控件。
函数:
1publicvoiddisp()
创建无值函数disp(),用来存放界面所需要展示的元素,包括有面板,按钮,弹出对话框,显示框等。
2publicvoidactionPerformed(ActionEvente)
创建无值函数actionPerformed(ActionEvente),其允许的输入值类型为ActionEvente,在里面编写的是加减陈除等一些算法。
3publicvoidsetSum()
创建无值函数setSum(),显示出经过算法计算出的结果,
4publicvoidwindowClosing(WindowEvente)
创建无值函数windowClosing(WindowEvente),当显示程序界面右上角的x时,将关闭程序。
5publicstaticvoidmain(Stringargs[])
创建静态无值函数main主函数,用来调用以上所示的函数。
【2】程序流程
1系统模块调用层次图
3.2核心算法描述
通过该步骤可实现累加功能:
setSum();
j++;
p=0;
i=0;
action=?
判断最后一个操作数的类型:
elseif(e.getSource()==equ){//等号,运算最后一个操作数
switch(action){
case1:
show.setText(String.valueOf(sum+=getValue));
break;
case2:
show.setText(String.valueOf(sum-=getValue));
case3:
show.setText(String.valueOf(sum*=getValue));
case4:
show.setText(String.valueOf(sum/=getValue));
}
设定数字按钮的触发算法:
for(l=0;
l<
10;
l++){//0~9数字键触发
if(e.getSource()==b[l]){
if(i==0)
show.setText("
"
);
Strings=show.getText();
if(s.length()<
slength)
show.setText(show.getText()+e.getActionCommand());
if(e.getSource()==b[0]&
&
getValue==0&
p==0)
0"
if(e.getSource()!
=b[0]&
show.setText(e.getActionCommand());
i++;
//i用来标记数字键触发的状态
设定计算器关闭的方法:
publicvoidwindowClosing(WindowEvente){
if(e.getSource()==about)
about.setVisible(false);
elseif(e.getSource()==frame)
System.exit(0);
为按钮绑定监听器:
about.addWindowListener(this);
3.3系统特点:
【1】该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能.
【2】由于简易计算器属于一个题,所以关于计算器的全部都是由自己完成.
4.程序代码
【1】程序代码
importjava.awt.Color;
importjava.awt.FlowLayout;
importjava.awt.GridLayout;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JButton;
importjavax.swing.JDialog;
importjavax.swing.JFrame;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassCalculatorextendsWindowAdapterimplementsActionListener{
JFrameframe;
JTextFieldshow;
JButtonbc,c,ce,ab,jia,jian,cheng,chu,equ,point,sqrt,ds,bfh,
zf;
//按钮退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号
JButtonb[]=newJButton[10];
//按钮数组,数字键0~9
doublesum=0,getValue;
inti=0,j=0,p=0,l,action;
JDialogabout;
finalintslength=30;
//设置结果显示有效长度
publicvoiddisp(){
frame=newJFrame();
frame.setTitle("
xx的个人计算器"
frame.setSize(360,230);
frame.setLocation(380,260);
frame.setBackground(Color.LIGHT_GRAY);
frame.setLayout(newFlowLayout(FlowLayout.CENTER));
frame.setResizable(false);
//计算器disTop模块,包括数字显示文本框、back,ce,c,about按钮
show=newJTextField(31);
show.setText("
show.setHorizontalAlignment(SwingConstants.RIGHT);
show.setEditable(false);
frame.add(show);
PaneldispTop=newPanel();
frame.add(dispTop);
dispTop.setLayout(newGridLayout(1,4,3,3));
bc=newJButton("
Back"
bc.setForeground(Color.BLUE);
dispTop.add(bc);
ce=newJButton("
CE"
ce.setForeground(Color.BLUE);
dispTop.add(ce);
c=newJButton("
C"
c.setForeground(Color.BLUE);
dispTop.add(c);
//广告按钮,显示计算器制作者
ab=newJButton("
About"
ab.setForeground(Color.BLUE);
dispTop.add(ab);
about=newJDialog(frame,"
关于计算器"
true);
Labelct=newLabel("
本计算器由xx制作"
1);
ct.setForeground(Color.RED);
about.add(ct,"
Center"
about.setSize(200,100);
about.setLocation(500,300);
//主要按钮显示面板包括disLeft和disRight
PaneldispMain=newPanel();
frame.add(dispMain);
dispMain.setLayout(newGridLayout(1,2,10,10));
//disLeft面板,包括0-9、+/-、。
这十二个按钮
PaneldispLeft=newPanel();
dispMain.add(dispLeft);
dispLeft.setLayout(newGridLayout(4,3,3,3));
PaneldispRight=newPanel();
//disRight面板,包括+、-、*、/、sqrt、%、1/x、=这个人几个按钮
dispMain.add(dispRight);
dispRight.setLayout(newGridLayout(4,2,3,3));
//新建0-9这是个按钮,并将其添加到disLeft中
for(l=9;
l>
=0;
l--){
b[l]=newJButton(String.valueOf(l));
dispLeft.add(b[l]);
b[l].addActionListener(this);
}
//新建其余按钮,并分别将其添加到各自的面板中
jia=newJButton("
+"
jia.setForeground(Color.RED);
jian=newJButton("
-"
jian.setForeground(Color.RED);
cheng=newJButton("
*"
cheng.setForeground(Color.RED);
chu=newJButton("
/"
chu.setForeground(Color.RED);
equ=newJButton("
="
equ.setForeground(Color.RED);
point=newJButton("
."
zf=newJButton("
+/-"
sqrt=newJButton("
sqrt"
bfh=newJButton("
%"
ds=newJButton("
1/x"
dispRight.add(chu);
dispRight.add(sqrt);
dispRight.add(cheng);
dispRight.add(bfh);
dispRight.add(jian);
dispRight.add(ds);
dispRight.add(jia);
dispRight.add(equ);
dispLeft.add(zf);
dispLeft.add(point);
//为各个按钮绑定监听器
about.addWindowListener(this);
bc.addActionListener(this);
ce.addActionListener(this);
c.addActionListener(this);
ab.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
equ.addActionListener(this);
point.addActionListener(this);
zf.addActionListener(this);
sqrt.addActionListener(this);
bfh.addActionListener(this);
ds.addActionListener(this);
frame.addWindowListener(this);
frame.setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
getValue=Double.valueOf(show.getText()).doubleValue();
if(e.getSource()==jia){//加运算,可连加
if(j==0){
sum=getValue;
}elseif(action==1){
sum+=getValue;
setSum();
action=1;
}elseif(e.getSource()==jian){//减运算,可连减
}elseif(action==2){
sum-=getValue;
action=2;
}elseif(e.getSource()==cheng){//乘运算,可连乘
}elseif(action==3){
sum*=getValue;
action=3;
}elseif(e.getSource()==chu){//除运算,可连除
if(j==0)
elseif(action==4){
sum/=getValue;
action=4;
}elseif(e.getSource()==equ){//等号,运算最后一个操作数
j=0;
action=0;
}elseif(e.getSource()==point){//小数点,只能按一个小数点
if(p==0)
show.setText(show.getText()+e.getActionCommand());
p=1;
}elseif(e.getSource()==c||e.getSource()==ce){//清空与复位
sum=0;
show.setText("
}elseif(e.getSource()==bc){//退格
Strings=show.getText();
if(s.length()>
1){
show.setText("
for(l=0;
s.length()-1;
l++){//按一下,删除尾部一位
chara=s.charAt(l);
show.setText(show.getText()+a);
}
}else
}elseif(e.getSource()==ab){//关于
about.setVisible(true);
}elseif(e.getSource()==sqrt){//开2次方根
sum=Math.sqrt(getValue);
}elseif(e.getSource()==ds){//求倒数
sum=1/getValue;
}elseif(e.getSource()==bfh){//百分号
sum=getValue/100;
}elseif(e.getSource()==zf){//正负号切换,正号不显示
Str
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 简易 计算器 课程设计