Java课程设计简易计算器.docx
- 文档编号:23439526
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:20
- 大小:106.85KB
Java课程设计简易计算器.docx
《Java课程设计简易计算器.docx》由会员分享,可在线阅读,更多相关《Java课程设计简易计算器.docx(20页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 简易 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)