java简易计算器课程设计.docx

上传人:b****6 文档编号:7416792 上传时间:2023-01-23 格式:DOCX 页数:17 大小:33.05KB
下载 相关 举报
java简易计算器课程设计.docx_第1页
第1页 / 共17页
java简易计算器课程设计.docx_第2页
第2页 / 共17页
java简易计算器课程设计.docx_第3页
第3页 / 共17页
java简易计算器课程设计.docx_第4页
第4页 / 共17页
java简易计算器课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

java简易计算器课程设计.docx

《java简易计算器课程设计.docx》由会员分享,可在线阅读,更多相关《java简易计算器课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

java简易计算器课程设计.docx

java简易计算器课程设计

1设计目的………………………………………………………………………2

2设计题目及要求……………………………………………………3

3设计算法分析………………………………………………………………4

3.1模块调用层次图………………………………………………………4

3.2核心算法描述………………………………………………………5

3.3系统特点………………………………………………………7

4程序代码………………………………………………………………………8

5调试情况……………………………………………………………………16

6结论……………………………………………………………………………18

参考文献………………………………………………………………19

简易计算器

1.设计目的

本课程设计的目的就是要通过一次集中的强化训练,使学生能及时巩固已学的知识,补充未学的但又必要的内容。

进行课程设计目的在于加深对程序设计基础中基础理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。

具体目的如下:

1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。

2.培养学生综合运用所学知识独立完成课题的能力。

3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。

5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

 

2.设计题目及要求

【1】设计题目

简易计算器

【2】设计要求

1)独自一人完成课程设计,不得抄袭。

2)应用自己所学课程知识完成对计算器的基本任务。

3)查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。

4)通过应用java程序编写计算器来提升自己对简单的图形界面有一定的掌握和了解。

5)设计的简易计算器应能够实现+-×÷求倒数等基本运算功能,类似于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));

break;

case3:

show.setText(String.valueOf(sum*=getValue));

break;

case4:

show.setText(String.valueOf(sum/=getValue));

break;

}

设定数字按钮的触发算法:

for(l=0;l<10;l++){//0~9数字键触发

if(e.getSource()==b[l]){

if(i==0)

show.setText("");

Strings=show.getText();

if(s.length()

show.setText(show.getText()+e.getActionCommand());

if(e.getSource()==b[0]&&getValue==0&&p==0)

show.setText("0");

if(e.getSource()!

=b[0]&&getValue==0&&p==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("0");

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();

j++;

p=0;

i=0;

action=1;

}elseif(e.getSource()==jian){//减运算,可连减

if(j==0){

sum=getValue;

}elseif(action==2){

sum-=getValue;

}

setSum();

j++;

p=0;

i=0;

action=2;

}elseif(e.getSource()==cheng){//乘运算,可连乘

if(j==0){

sum=getValue;

}elseif(action==3){

sum*=getValue;

}

setSum();

j++;

p=0;

i=0;

action=3;

}elseif(e.getSource()==chu){//除运算,可连除

if(j==0)

sum=getValue;

elseif(action==4){

sum/=getValue;

}

setSum();

j++;

p=0;

i=0;

action=4;

}elseif(e.getSource()==equ){//等号,运算最后一个操作数

switch(action){

case1:

show.setText(String.valueOf(sum+=getValue));

break;

case2:

show.setText(String.valueOf(sum-=getValue));

break;

case3:

show.setText(String.valueOf(sum*=getValue));

break;

case4:

show.setText(String.valueOf(sum/=getValue));

break;

}

setSum();

i=0;

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){//清空与复位

i=0;

j=0;

p=0;

sum=0;

action=0;

show.setText("0");

}elseif(e.getSource()==bc){//退格

Strings=show.getText();

if(s.length()>1){

show.setText("");

for(l=0;l

chara=s.charAt(l);

show.setText(show.getText()+a);

}

}else

show.setText("0");

}elseif(e.getSource()==ab){//关于

about.setVisible(true);

}elseif(e.getSource()==sqrt){//开2次方根

sum=Math.sqrt(getValue);

setSum();

i=0;

}elseif(e.getSource()==ds){//求倒数

sum=1/getValue;

setSum();

i=0;

}elseif(e.getSource()==bfh){//百分号

sum=getValue/100;

setSum();

i=0;

}elseif(e.getSource()==zf){//正负号切换,正号不显示

Str

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1