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

上传人:b****8 文档编号:9107593 上传时间:2023-05-17 格式:DOCX 页数:20 大小:106.85KB
下载 相关 举报
Java课程设计简易计算器.docx_第1页
第1页 / 共20页
Java课程设计简易计算器.docx_第2页
第2页 / 共20页
Java课程设计简易计算器.docx_第3页
第3页 / 共20页
Java课程设计简易计算器.docx_第4页
第4页 / 共20页
Java课程设计简易计算器.docx_第5页
第5页 / 共20页
Java课程设计简易计算器.docx_第6页
第6页 / 共20页
Java课程设计简易计算器.docx_第7页
第7页 / 共20页
Java课程设计简易计算器.docx_第8页
第8页 / 共20页
Java课程设计简易计算器.docx_第9页
第9页 / 共20页
Java课程设计简易计算器.docx_第10页
第10页 / 共20页
Java课程设计简易计算器.docx_第11页
第11页 / 共20页
Java课程设计简易计算器.docx_第12页
第12页 / 共20页
Java课程设计简易计算器.docx_第13页
第13页 / 共20页
Java课程设计简易计算器.docx_第14页
第14页 / 共20页
Java课程设计简易计算器.docx_第15页
第15页 / 共20页
Java课程设计简易计算器.docx_第16页
第16页 / 共20页
Java课程设计简易计算器.docx_第17页
第17页 / 共20页
Java课程设计简易计算器.docx_第18页
第18页 / 共20页
Java课程设计简易计算器.docx_第19页
第19页 / 共20页
Java课程设计简易计算器.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

Java课程设计简易计算器

面向对象课程设计(Java)

题目:

简易计算器

专业:

电子商务

班级:

1110025

学生姓名:

指导老师:

2013年1月6日

 

 

简易计算器设计

一、设计内容

设计一个图形界面(GUI)的应用程序,完成简单的运算。

通过计算器的编辑来检测和提升自己的java能力,并最终完成课程设计报告。

二、设计要求

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

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

3、通过应用java程序编写计算器来提升对简单的图形界面的了解和掌握。

三、总体设计

该计算器基本运算没有问题,清零、正负号、求倒数、退格功能都能很好的实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能。

四、具体设计

1、程序流程图:

2、主要代码展示及说明:

总体代码的设计:

程序主窗体继承JFrame类,使用24个JBotton按钮实现数字和基本功能,并且分别注册监听,采用6行4列网格布局,完成计算器界面的基本设置,最后对按钮进行计算分析,计算并显示结果。

这段代码主要是对程序的主框架进行相应的设置

super("简易计算器");

setSize(300,260);

this.setLayout(newBorderLayout());

jPanel1=newJPanel();

jPanel1.setLayout(newGridLayout(1,1));//一行一列的布局

jPanel2=newJPanel();

jPanel2.setLayout(newGridLayout(6,4));//六行四列的布局

resultField=newJTextField("0");

jPanel1.add(resultField);

this.add(jPanel1,BorderLayout.NORTH);

this.add(jPanel2,BorderLayout.CENTER);

设置数字按钮1到9并添加监控以及符号等的添加监控

s1=newJButton("1");s1.addActionListener(this);

s2=newJButton("2");s2.addActionListener(this);

s3=newJButton("3");s3.addActionListener(this);

s4=newJButton("4");s4.addActionListener(this);

s5=newJButton("5");s5.addActionListener(this);

s6=newJButton("6");s6.addActionListener(this);

s7=newJButton("7");s7.addActionListener(this);

s8=newJButton("8");s8.addActionListener(this);

s9=newJButton("9");s9.addActionListener(this);

s0=newJButton("0");s0.addActionListener(this);

b1=newJButton("+");b1.addActionListener(this);

b2=newJButton("-");b2.addActionListener(this);

b3=newJButton("*");b3.addActionListener(this);

b4=newJButton("/");b4.addActionListener(this);

b5=newJButton("^");b5.addActionListener(this);

b6=newJButton("开方");b6.addActionListener(this);

b7=newJButton("%");b7.addActionListener(this);

b8=newJButton("x!

");b8.addActionListener(this);

b9=newJButton("1/x");b9.addActionListener(this);

f1=newJButton(".");f1.addActionListener(this);

f2=newJButton("=");f2.addActionListener(this);

f3=newJButton("C");f3.addActionListener(this);

f4=newJButton("负");f4.addActionListener(this);

f5=newJButton("退格");f5.addActionListener(this);

jPanel2.add(f3);

jPanel2.add(b4);

jPanel2.add(b3);

jPanel2.add(f5);

jPanel2.add(s7);

jPanel2.add(s8);

jPanel2.add(s9);

jPanel2.add(b1);

jPanel2.add(s4);

jPanel2.add(s5);

jPanel2.add(s6);

jPanel2.add(b2);

jPanel2.add(s1);

jPanel2.add(s2);

jPanel2.add(s3);

jPanel2.add(b5);

jPanel2.add(s0);

jPanel2.add(f1);

jPanel2.add(f4);

jPanel2.add(b6);

jPanel2.add(b7);

jPanel2.add(b8);

jPanel2.add(b9);

jPanel2.add(f2);

(3)数据输入用方法num(inti)设计如下:

publicvoidnum(inti){

Strings=null;

s=String.valueOf(i);//返回整数i的字符串表示形式

if(end){//如果数字输入结束,则将文本框置零,重新输入

resultField.setText("0");

end=false;

}

if((resultField.getText()).equals("0")){

//如果文本框的内容为零,则覆盖文本框的内容

resultField.setText(s);

}

else{//如果文本框的内容不为零,则在内容后面添加数字

str=resultField.getText()+s;

resultField.setText(str);

}

以及用JFrame的方法actionPerformed(ActionEvente)来获取数据

(4)符号运算及清零、退格的设计如下:

if(add){//加法

num1=num1+num2;

}

elseif(sub){//减法

num1=num1-num2;

}

elseif(mul){//乘法

num1=num1*num2;

}

elseif(div){//除法

if(num2==0)thrownewArithmeticException("除数不能为零");

else

num1=num1/num2;

}

elseif(chf){//乘方

if(num2==0)num1=1;

else

num1=Math.pow(num1,num2);

}

elseif(evo){//开方

if(num2<0)thrownewArithmeticException("被开方数不能小于零");

elsenum1=Math.sqrt(num2);

}

elseif(rec){//倒数

if(num2<0)thrownewArithmeticException("分母不能小于零");

elsenum1=1/num2;

}

elseif(per){//百分

num1=num1/100.0;

}

elseif(pur){//阶乘

if(num2<0)thrownewArithmeticException("负数不能求阶乘");

elsefor(inti=1;i

num1=i*num1;

}

}

resultField.setText(String.valueOf(num1));

end=true;

}

elseif(e.getSource()==f3){//实现清零

resultField.setText("0");

}

elseif(e.getSource()==f4){//实现负号

if(resultField.getText()!

="0"){

resultField.setText("-"+resultField.getText());

}

}

elseif(e.getSource()==f5){//实现退格

inti;

i=(resultField.getText()).length();

if(i==1){

resultField.setText("0");

}

else{str=resultField.getText();

resultField.setText(str.substring(0,i-1));

}

}

}

五、程序设计

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclasstest1extendsJFrameimplementsActionListener{

//JFramejframe1;

JPaneljPanel1,jPanel2;

JTextFieldresultField;

JButton

s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,b1,b2,b3,b4,b5,b6,b7,b8,b9,f1,f2,f3,f4,f5;privatebooleanend,add,sub,mul,div,evo,chf,per,rec,pur;

privateStringstr;

privatedoublenum1,num2;

publictest1(){

super("简易计算器");

setSize(300,260);

this.setLayout(newBorderLayout());

jPanel1=newJPanel();

jPanel1.setLayout(newGridLayout(1,1));//一行一列的布局

jPanel2=newJPanel();

jPanel2.setLayout(newGridLayout(6,4));//四行五列的布局

resultField=newJTextField("0");

jPanel1.add(resultField);

this.add(jPanel1,BorderLayout.NORTH);

s1=newJButton("1");s1.addActionListener(this);

s2=newJButton("2");s2.addActionListener(this);

s3=newJButton("3");s3.addActionListener(this);

s4=newJButton("4");s4.addActionListener(this);

s5=newJButton("5");s5.addActionListener(this);

s6=newJButton("6");s6.addActionListener(this);

s7=newJButton("7");s7.addActionListener(this);

s8=newJButton("8");s8.addActionListener(this);

s9=newJButton("9");s9.addActionListener(this);

s0=newJButton("0");s0.addActionListener(this);

b1=newJButton("+");b1.addActionListener(this);

b2=newJButton("-");b2.addActionListener(this);

b3=newJButton("*");b3.addActionListener(this);

b4=newJButton("/");b4.addActionListener(this);

b5=newJButton("^");b5.addActionListener(this);

b6=newJButton("开方");b6.addActionListener(this);

b7=newJButton("%");b7.addActionListener(this);

b8=newJButton("x!

");b8.addActionListener(this);

b9=newJButton("1/x");b9.addActionListener(this);

f1=newJButton(".");f1.addActionListener(this);

f2=newJButton("=");f2.addActionListener(this);

f3=newJButton("C");f3.addActionListener(this);

f4=newJButton("负");f4.addActionListener(this);

f5=newJButton("退格");f5.addActionListener(this);

jPanel2.add(f3);

jPanel2.add(b4);

jPanel2.add(b3);

jPanel2.add(f5);

jPanel2.add(s7);

jPanel2.add(s8);

jPanel2.add(s9);

jPanel2.add(b1);

jPanel2.add(s4);

jPanel2.add(s5);

jPanel2.add(s6);

jPanel2.add(b2);

jPanel2.add(s1);

jPanel2.add(s2);

jPanel2.add(s3);

jPanel2.add(b5);

jPanel2.add(s0);

jPanel2.add(f1);

jPanel2.add(f4);

jPanel2.add(b6);

jPanel2.add(b7);

jPanel2.add(b8);

jPanel2.add(b9);

jPanel2.add(f2);

this.add(jPanel2,BorderLayout.CENTER);

}

publicvoidnum(inti){

Strings=null;

s=String.valueOf(i);//返回整数i的字符串表示形式

if(end){//如果数字输入结束,则将文本框置零,重新输入

resultField.setText("0");

end=false;

}

if((resultField.getText()).equals("0")){

//如果文本框的内容为零,则覆盖文本框的内容

resultField.setText(s);

}

else{//如果文本框的内容不为零,则在内容后面添加数字

str=resultField.getText()+s;

resultField.setText(str);

}

}

publicvoidactionPerformed(ActionEvente)throwsArithmeticException{

//数字事件

if(e.getSource()==s1)

num

(1);

elseif(e.getSource()==s2)

num

(2);

elseif(e.getSource()==s3)

num(3);

elseif(e.getSource()==s4)

num(4);

elseif(e.getSource()==s5)

num(5);

elseif(e.getSource()==s6)

num(6);

elseif(e.getSource()==s7)

num(7);

elseif(e.getSource()==s8)

num(8);

elseif(e.getSource()==s9)

num(9);

elseif(e.getSource()==s0)

num(0);

//符号事件

elseif(e.getSource()==b1)

sign

(1);

elseif(e.getSource()==b2)

sign

(2);

elseif(e.getSource()==b3)

sign(3);

elseif(e.getSource()==b4)

sign(4);

elseif(e.getSource()==b5)

sign(5);

elseif(e.getSource()==b6)

sign(6);

elseif(e.getSource()==b7)

sign(7);

elseif(e.getSource()==b8)

sign(8);

elseif(e.getSource()==b9)

sign(9);

elseif(e.getSource()==f1){//实现"."

str=resultField.getText();

if(str.indexOf(".")<=1){

str+=".";

resultField.setText(str);

}

}

elseif(e.getSource()==f2){//实现"="

num2=Double.parseDouble(resultField.getText());

if(add){//加法

num1=num1+num2;

}

elseif(sub){//减法

num1=num1-num2;

}

elseif(mul){//乘法

num1=num1*num2;

}

elseif(div){//除法

if(num2==0)thrownewArithmeticException("除数不能为零");

else

num1=num1/num2;

}

elseif(chf){//乘方

if(num2==0)num1=1;

else

num1=Math.pow(num1,num2);

}

elseif(evo){//开方

if(num2<0)thrownewArithmeticException("被开方数不能小于零");

elsenum1=Math.sqrt(num2);

}

elseif(rec){//倒数

if(num2<0)thrownewArithmeticException("分母不能小于零");

elsenum1=1/num2;

}

elseif(per){//百分

num1=num1/100.0;

}

elseif(pur){//阶乘

if(num2<0)thrownewArithmeticException("负数不能求阶乘");

elsefor(inti=1;i

num1=i*num1;

}

}

resultField.setText(String.valueOf(num1));

end=true;

}

elseif(e.getSource()==f3){//实现清零

resultField.setText("0");

}

elseif(e.getSource()==f4){//实现负号

if(resultField.getText()!

="0"){

resultField.setText("-"+resultField.getText());

}

}

elseif(e.getSource()==f5){//实现退格

inti;

i=(resultField.getText()).length();

if(i==1){

resultField.setText("0");

}

else{str=resultField.getText();

resultField.setText(str.substring(0,i-1));

}

}

}

p

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2