(最新版)java毕业课程设计计算器报告书模版(软件工程)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)任务书
1.本课程设计的目的
(1)使学生巩固和提高Java编程技术
(2)培养学生掌握程序设计的基本思路和方法;
(3)加强学生研发、调试程序的能力;
(4)培养学生分析、解决问题的能力;
(5)提高学生的科技论文写作能力。
2.课程设计的任务及要求(以制作一个图形编辑系统作为模板)
1)任务:
设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、
设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零等功能。
用鼠标单击相应的数字键和运算符号键,然后单击=按钮,
窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。
2)创新要求:
在基本要求达到后,可进行创新设计,如:如何利用鼠标选取图形,删除。
3)课程设计论文编写要求
(1)课程设计任务及要求
(2)需求分析
(3)设计思路--工作原理、功能规划
(4)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)
(7) 报告按规定排版打印,要求装订平整,否则要求返工;
(8) 课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附
录(代码及相关图片)
(9)严禁抄袭,如有发现,按不及格处理。
一、课设任务及要求 (1)
二、需求分析 (2)
三、设计思路 (7)
四、详细设计 (8)
五、运行调试与分析讨论 (15)
六、设计体会与小结 (24)
七、参考文献 (25)
八、源代码 (23)
一、课设任务及要求
设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。
且有小数点、正负号、求倒数、退格和清零等功能。
用鼠标单击相应的数字键和运算符号键,然后单击=按钮,窗口上方的文本框将会显示计算出来的结果,要将文本编辑框清零,可单击清零按钮。
二、需求分析
一、状态定义
二、1,刚启动计算器时的状态:开始计算按键开始键"ON"
三、2.清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。
四、2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。
五、3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。
在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。
六、4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。
七、5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。
八、6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。
九、7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。
比如6/0后计算的结果是“0不能做除数”。
十、二、本计算器具有以下功能:用表说明
状操作计算器响应结果状态
态
清零键入数字键,如1
显示键入的数字,操作数=键入的数字一个操作数
键入减号键相当于键入了-0,但负号不显示,只显示0。
一个操作数
键入除减号键和数字键以
外的键
忽略键入的键,仍保留清零状态清零
一个操作数键入数字键
显示新操作数,新操作数=当前操作数*10+
键入的数字
一个操作数键入回退键
显示新操作数,新操作数=当前操作数除以
10取整
一个操作数清屏键显示0,但操作数不变一个操作数键入清零(任何状态下,
键入清零键都会到清零状
态下,以下的状态不再重
复)
清零清零
键入加减乘除中任意键
仍显示操作数,跳转到状态“一个操作数和
一个两元符号”
一个操作数
和一个两元
符号
键入开方键对操作数执行开方运算,显示运算结果运算结果
键入=键
显示操作数,如果操作数为负数,显示负号
和操作数,如“-32”
运算结果
一
个键入%忽略,不做任何处理
一个操作数
和一个两元
操作数和一个两元符号
符号
键入加减乘除之一
用新操作符替换原操作符,如当前是“30
+”,接着键入“÷”则变为“30÷”
一个操作数
和一个两元
符号
键入=
如果操作符为加法,则加0,显示结果;如
果操作符为减法,显示为负数;如果操作符
为乘法,显示为第一个操作数相乘,如键入
12*=,结果为144;如果键入为除法,结果
为1。
运算结果
键入回退键
第一个操作数回退一位,操作符保持不变,
如:123+,键入回退键后显示12,操作符
仍然为+
一个操作数
和一个两元
符号
键入开方键
执行开方操作,操作符保持不变;例如:当
前是“9+”,键入开方键则显示3。
运算结果
键入数字键、小数点
键入的为第二个操作数,例如:当前是“9
+”,键入8,显示为8
操作数2元
操作符操作
数
运算结果键入加减乘除中任意键
结果作为一个操作数,例如:当前是“45”,
键入*,显示仍然是45,操作符是*,将执行
乘法。
一个操作数
和一个两元
符号
键入数字和小数点
清除结果,键入的数值作为新的操作数;例
如当前是“16开方”后的运算结果,显示是
“4”;键入56,显示“56”。
一个操作数键入%、=键
显示结果。
如:当前是“16+开方”后的运
算结果,键入=,显示的结果为20。
执行16
运算结果
+16开方的运算;
当前显示的结果9,或者任意其它值,输
入%,运算结果显示“0”。
键入开方键运算结果再执行开方运算运算结果键入回退键
结果回退一位,如当前显示“123”,键入回
退键,显示“12”。
运算结果
操作数2元操作符操作数键入加减乘除中任意键
先执行前面的计算,显示结果并记下下一个
操作符;例如:起始状态键入的是12*6,然
后键入+,则显示72
一个操作数
和一个两元
符号
键入%
例如输入:12+3%,结果0.36;
12-3%,结果0.36;
12*3%,结果0.36;
12÷3%,结果0.36;
一律按照乘法计算。
运算结果
键入=
执行运算,得出结果。
例如当前是键入了“1
+2”,再键入“=”,显示“3”。
运算结果
键入数字键、回退键、小
数点键
等待键入第二个操作数完毕
操作数2元
操作符操作
数
开方键第二个操作数开方
操作数2元
操作符运算
结果
操作符为除号,第二个操
作数为0;
负数开方
不正确的运算错误
操作数2元操作符运算结果键入数字键、小数点键
忽略开方步骤,直接进行操作数与键入数字
进行操作符的运算。
例如:4+9开方32结果
为36;
5-9开方65结果为-60。
操作数2元
操作符操作
数
键入=
计算结果。
例如:12+9开方=,先计算9开
方=3,再12+3=15;
12*64开方=,结果96。
运算结果
键入%
例如输入:12+9开方,再键入%结果0.36;
12-9开方,再键入%结果0.36;12*9开方,
再键入%结果0.36;12÷9开方,再键入%
结果0.36;一律按照乘法计算。
运算结果
键入加减乘除中任意键
得到运算结果,并记忆操作符;
例如12+9开方,键入+得到15+。
一个操作数
和一个两元
符号
键入开方、回退键运算结果再次执行开方或者回退
操作数2元
操作符运算
结果
错
误
清零以外的任何键忽略,计算器不做任何响应错误清零键清零清零
三、设计思路
本应用程序继承自框架类(Frame),此程序使用Frame布局管理器GridBagLayout,将单行文本框加入到0行0列,包含各种按钮的面板Panel 3 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。
同时注册按钮事件监听器。
如:
Button b1=new Button();
b1.addActionListener(this); b2.addActionListener(this);
事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。
事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。
在事件处理。
触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。
四、详细设计
一import语句,使用import语句引入java.awt.,java.awt.event.,javax.swing.,
Javax.swing.border包中所有的类。
Java.awt.event.*引入系统事件类包。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
二实现动作事件监听接口
public class JiSuanQi extends JFrame implements ActionListener
注册事件源的动作监听者
menuitem1.addActionListener(this);
menuitem2.addActionListener(this); menuitem3.addActionListener(this);//注册事件监听器
b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this);
b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this);
b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this);
b10.addActionListener(this); b11.addActionListener(this); b12.addActionListener(this);
b13.addActionListener(this); b14.addActionListener(this); b15.addActionListener(this);
b16.addActionListener(this); b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this); b20.addActionListener(this);
b01.addActionListener(this); b02.addActionListener(this); b03.addActionListener(this);
b04.addActionListener(this); b05.addActionListener(this);
三组件的布局管理
采用了AWT布局管理器当中最复杂的,同时功能也是最强大的GridBagLayout布局方式.
GridBagLayout g=new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
添加了三个面板进行组件布局
panel1=new JPanel();
panel2=new JPanel();
panel3=new JPanel();
面板penel1中包括显示操作结果的文本区,penel中包括退格按钮"Backspace",全部清除按钮"CE",本次清除按钮"C",开始按钮"ON",关闭按钮"OFF"。
Penel3中包括数字按钮"0","1","2","3","4","5","6","7","8","9"小数点按钮"." ,除号按钮("/"),求根按钮
"sqrt",乘号按钮"*",求余按钮"%",减号按钮""-",求倒数按钮"1/x",正负号按钮"+/-"),加号按钮"+",等号按钮"="
设置Penel1在0行0列即开始的地方GridBagConstraints c=new GridBagConstraints();c.gridx=0; c.gridy=0
设置并添加penel2面板按钮
panel1.add(panel2);
GridBagLayout i=new GridBagLayout();
GridBagConstraints j=new GridBagConstraints();
panel2.setLayout(i);
j.gridx=0; j.gridy=0;
j.gridwidth=68; j.gridheight=40;
j.fill=GridBagConstraints.BOTH;
j.insets=new Insets();
j.weightx=3.0; j.weighty=3.0;
i.setConstraints(b04,j);
panel2.add(b04);
j.gridx=70;
i.setConstraints(b01,j);
panel2.add(b01);
j.gridx=140;
i.setConstraints(b02,j);
panel2.add(b02);
j.gridx=210;
i.setConstraints(b03,j);
panel2.add(b03);
j.gridx=280;
i.setConstraints(b05,j);
panel2.add(b05);
c.gridy=120;
c.gridheight=80;
c.weighty=10.0;
Penel3面板设置为4行5列共20个网格
panel3.setLayout(new GridLayout(4,5));
按布置好的方式添加按钮
panel3.add(b1); panel3.add(b2); panel3.add(b3); panel3.add(b4); panel3.add(b5);
panel3.add(b6); panel3.add(b7); panel3.add(b8); panel3.add(b9); panel3.add(b10);
panel3.add(b11); panel3.add(b12); panel3.add(b13); panel3.add(b14); panel3.add(b15);
panel3.add(b16); panel3.add(b17); panel3.add(b18); panel3.add(b19); panel3.add(b20);
panel3.setLayout(new GridLayout(4,5));
四在窗口中加入菜单
定义一个菜单JMenuBar menubar;
定义菜单组件各个部分的对象JMenu menu1,menu2,menu3;
定义对象下的菜单项
JMenuItem menuitem1,menuitem2,menuitem3,menuitem4,menuitem5;
以下生成菜单组件对象
menubar=new JMenuBar();
menu1=new JMenu("File");
menu2=new JMenu("Edit");
menu3=new JMenu("Help");
menuitem1=new JMenuItem("ON");
menuitem2=new JMenuItem("OFF");
menuitem3=new JMenuItem("Close");
menuitem4=new JMenuItem("Copy");
menuitem5=new JMenuItem("Help");
添加菜单条"File","Edit","Help".菜单File中有菜单项"ON","OFF",
"Close".菜单"Edit"中菜单项"Copy","Help"中菜单项"Help" panel1.add(menubar);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menu1.add(menuitem1);
menu1.add(menuitem2);
menu1.addSeparator();
menu1.add(menuitem3);
menu2.add(menuitem4);
menu3.add(menuitem5);
五处理按钮事件
if(e.getSource()==menuitem1){label.setText(a); b=true;}
else if(e.getSource()==menuitem2){label.setText(""); b=false;}
else if(e.getSource()==menuitem3){System.exit(0);}
else if(e.getSource()==b04){label.setText(a); b=true;}
else if(e.getSource()==b05){label.setText(""); b=false;}
if(b){
if(e.getSource()==b1){
if(label.getText().equals("0")){label.setText("7");}
else{
if(!c){label.setText(label.getText().concat("7"));}
else{label.setText("7"); c=false; n=0.0;}
}
}
if(e.getSource()==b2){
if(label.getText().equals("0")){label.setText("8");}
else{
if(!c){label.setText(label.getText().concat("8"));}
else{label.setText("8"); c=false; n=0.0;} }
}
if(e.getSource()==b3){
if(label.getText().equals("0")){label.setText("9");}
else{
if(!c){label.setText(label.getText().concat("9"));}
else{label.setText("9"); c=false; n=0.0;} }
}
if(e.getSource()==b6){
if(label.getText().equals("0")){label.setText("4");}
else{
if(!c){label.setText(label.getText().concat("4"));}
else{label.setText("4"); c=false; n=0.0;} }
}
if(e.getSource()==b7){
if(label.getText().equals("0")){label.setText("5");}
else{
if(!c){label.setText(label.getText().concat("5"));}
else{label.setText("5"); c=false; n=0.0;} }
}
if(e.getSource()==b8){
if(label.getText().equals("0")){label.setText("6");}
else{
if(!c){label.setText(label.getText().concat("6"));}
else{label.setText("6"); c=false; n=0.0;} }
}
if(e.getSource()==b11){
if(label.getText().equals("0")){label.setText("1");}
else{
if(!c){label.setText(label.getText().concat("1"));}
else{label.setText("1"); c=false; n=0.0;} }
}
if(e.getSource()==b12){
if(label.getText().equals("0")){label.setText("2");}
else{
if(!c){label.setText(label.getText().concat("2"));}
else{label.setText("2"); c=false; n=0.0;} }
}
if(e.getSource()==b13){
if(label.getText().equals("0")){label.setText("3");}
else{
if(!c){label.setText(label.getText().concat("3"));}
else{label.setText("3"); c=false; n=0.0;}
}
}
if(e.getSource()==b16){
if(label.getText().equals("0")){label.setText("0");}
else{
if(!c){label.setText(label.getText().concat("0"));}
else{label.setText("0"); c=false; n=0.0;}
}
}
if(e.getSource()==b18){
if(!label.getText().contains(".")){label.setText(label.getText().concat("." ));}
}
if(e.getSource()==b4){
c=true;
d=1;
m=m.valueOf(label.getText());
}
if(e.getSource()==b9){
c=true;
d=2;
m=m.valueOf(label.getText());
}
if(e.getSource()==b14){
c=true;
d=3;
m=m.valueOf(label.getText());
}
if(e.getSource()==b19){
c=true;
d=4;
m=m.valueOf(label.getText());
}
异常现象处理
if(e.getSource()==b15){
m=m.valueOf(label.getText());
if(m==0){label.setText("0没有倒数");}
else{m=1/m;
if(e.getSource()==b5){
m=m.valueOf(label.getText());
if(m<0){label.setText("负数不能被开方");流程图
五、运行调试与分析讨论
刚开始界面
启动计算器:按键"ON",也可以通过菜单中"File"中"ON"。
关闭按键"OFF"
开始或清零界面
实现5的根号
6的倒数
两数相乘583*2516=
退格键
正负号按钮实现
还可实现加法,减法,除法,求余等功能
六、设计体会与小结
通过这个星期每天通宵达旦的做课设,虽然最后是完成了任务。
但是做起来很费力,有些地方还是没怎么搞懂,时间又不允许总在一个问题上纠结。
所以只是很表面的学习了一下东西,通过这次课设使我明白,要脚踏实地学习,快餐式的学习不可取。
在编写代码的时候出现了很多错误,都是一些平时不怎么关注的,所以,平时还是要多实践。
还有最重要的一点就是不到万不得已才去请教别人要知道独立思考的能力对你很重要。
要知道程序员的时间是很宝贵的。
七、参考文献
[1]作者1,作者2. 参考书籍名称[M]. 出版地:出版社名称,出版年限
[参考资料]
宏维恩《Java 2 面向对象程序设计》中国铁道出版社 2002
徐迎晓《Java语法及网络应用设计》清华大学出版社 2002
戴特尔(美)《Java 大学简明教程——实例程序设计》 2005
八,源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class JiSuanQi extends JFrame implements ActionListener{// JiSuanQi 继承Frame实现ActionListener接口
JMenuBar menubar;//定义一个菜单
JMenu menu1,menu2,menu3;//定义菜单组件各个部分的对象
JMenuItem menuitem1,menuitem2,menuitem3,menuitem4,menuitem5;//定义对象下的菜单项
JLabel label;
JButton
b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b01,b02,b03, b04,b05;
JPanel panel1,panel2,panel3;//定义三个面板
String a="0";
boolean b,c;
Double m=0.0,n=0.0,r=0.0;
Integer h=0;
int d;
public JiSuanQi(){
setTitle("jisuanqi");
panel1=new JPanel();
panel2=new JPanel();
panel3=new JPanel();
menubar=new JMenuBar();//以下生成菜单组件对象
menu1=new JMenu("File");
menu2=new JMenu("Edit");
menu3=new JMenu("Help");
menuitem1=new JMenuItem("ON");
menuitem2=new JMenuItem("OFF");
menuitem3=new JMenuItem("Close");
menuitem4=new JMenuItem("Copy");
menuitem5=new JMenuItem("Help");
label=new JLabel("");
b1=new JButton("7"); b2=new JButton("8"); b3=new JButton("9"); b4=new JButton("/");
b5=new JButton("sqrt"); b6=new JButton("4"); b7=new JButton("5"); b8=new JButton("6");
b9=new JButton("*"); b10=new JButton("%"); b11=new JButton("1"); b12=new JButton("2");
b13=new JButton("3"); b14=new JButton("-"); b15=new JButton("1/x"); b16=new JButton("0");
b17=new JButton("+/-"); b18=new JButton("."); b19=new JButton("+"); b20=new JButton("=");
b01=new JButton("Backspace"); b02=new JButton("CE"); b03=new JButton("C");
b04=new JButton("ON"); b05=new JButton("OFF");
setSize();设置计算器的长宽
label.setBorder(BorderFactory.createBevelBorder(1));//建立一个立体的边界
label.setOpaque(true);//设置不透明,以便设置背景色
label.setBackground(Color.white);//设置背景色白色
label.setHorizontalAlignment(SwingConstants.RIGHT);显示在右边
label.setCursor(new Cursor(Cursor.TEXT_CURSOR));
add(panel1);
GridBagLayout g=new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
panel1.setSize();
panel1.setLayout(g);
c.gridx=0; c.gridy=0;//这个属性是用来描述组件在布局时应处于那个网格位置,即描述网格开始的位置.gridx=0,gridy=0时放在0行0列.
c.gridwidth=350; c.gridheight=20;//这两个属性用来描述组件在布局中的所占的网格的个数,gridwidth描述了该组件在横向上所占网格的个数,gridheight描述了该组件在纵向上所占网格的个数
c.fill=GridBagConstraints.BOTH;
c.insets=new Insets();// 设置组件之间彼此的间距。
c.weightx=10.0; c.weighty=0.0;
g.setConstraints(menubar,c);
panel1.add(menubar);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
menu1.add(menuitem1);
menu1.add(menuitem2);
menu1.addSeparator();
menu1.add(menuitem3);
menu2.add(menuitem4);
menu3.add(menuitem5);
c.gridy=20;
c.gridheight=50;
g.setConstraints(label,c);
panel1.add(label);
c.gridy=70;
c.gridheight=50;
c.weighty=3.0;
g.setConstraints(panel2,c);
panel1.add(panel2);
GridBagLayout i=new GridBagLayout(); GridBagConstraints j=new GridBagConstraints(); panel2.setLayout(i);
j.gridx=0; j.gridy=0;
j.gridwidth=68; j.gridheight=40;
j.fill=GridBagConstraints.BOTH;
j.insets=new Insets();
j.weightx=3.0; j.weighty=3.0;
i.setConstraints(b04,j);
panel2.add(b04);
j.gridx=70;
i.setConstraints(b01,j);
panel2.add(b01);
j.gridx=140;
i.setConstraints(b02,j);
panel2.add(b02);
j.gridx=210;
i.setConstraints(b03,j);
panel2.add(b03);
j.gridx=280;
i.setConstraints(b05,j);
panel2.add(b05);
c.gridy=120;
c.gridheight=80;
c.weighty=10.0;
g.setConstraints(panel3,c);
panel1.add(panel3);
panel3.setLayout(new GridLayout(4,5));//pencel3面板设置为4行5列共20个网格
panel3.add(b1); panel3.add(b2); panel3.add(b3); panel3.add(b4); panel3.add(b5);//添加按钮
panel3.add(b6); panel3.add(b7); panel3.add(b8); panel3.add(b9); panel3.add(b10);
panel3.add(b11); panel3.add(b12); panel3.add(b13); panel3.add(b14); panel3.add(b15);
panel3.add(b16); panel3.add(b17); panel3.add(b18); panel3.add(b19); panel3.add(b20);
menuitem1.addActionListener(this); menuitem2.addActionListener(this); menuitem3.addActionListener(this);//注册菜单项的事件监听器
b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this);
b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this);
b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this);
b10.addActionListener(this); b11.addActionListener(this); b12.addActionListener(this);
b13.addActionListener(this); b14.addActionListener(this); b15.addActionListener(this);
b16.addActionListener(this); b17.addActionListener(this); b18.addActionListener(this);
b19.addActionListener(this); b20.addActionListener(this);
b01.addActionListener(this); b02.addActionListener(this); b03.addActionListener(this);
b04.addActionListener(this); b05.addActionListener(this);
}//给按钮注册事件监视器
public void actionPerformed(ActionEvent e){//处理按钮事件
if(e.getSource()==menuitem1){label.setText(a); b=true;}
else if(e.getSource()==menuitem2){label.setText(""); b=false;}
else if(e.getSource()==menuitem3){System.exit(0);}
else if(e.getSource()==b04){label.setText(a); b=true;}
else if(e.getSource()==b05){label.setText(""); b=false;}
if(b){
if(e.getSource()==b1){
if(label.getText().equals("0")){label.setText("7");}
else{
if(!c){label.setText(label.getText().concat("7"));}
else{label.setText("7"); c=false; n=0.0;}
}
}
if(e.getSource()==b2){
if(label.getText().equals("0")){label.setText("8");}
else{
if(!c){label.setText(label.getText().concat("8"));}
else{label.setText("8"); c=false; n=0.0;}
}
}
if(e.getSource()==b3){
if(label.getText().equals("0")){label.setText("9");}
else{
if(!c){label.setText(label.getText().concat("9"));}
else{label.setText("9"); c=false; n=0.0;}
}
}
if(e.getSource()==b6){
if(label.getText().equals("0")){label.setText("4");}
else{
if(!c){label.setText(label.getText().concat("4"));}
else{label.setText("4"); c=false; n=0.0;} }
}
if(e.getSource()==b7){
if(label.getText().equals("0")){label.setText("5");}
else{
if(!c){label.setText(label.getText().concat("5"));}
else{label.setText("5"); c=false; n=0.0;} }
}
if(e.getSource()==b8){
if(label.getText().equals("0")){label.setText("6");}
else{
if(!c){label.setText(label.getText().concat("6"));}
else{label.setText("6"); c=false; n=0.0;} }
}
if(e.getSource()==b11){
if(label.getText().equals("0")){label.setText("1");}
else{
if(!c){label.setText(label.getText().concat("1"));}
else{label.setText("1"); c=false; n=0.0;} }
}
if(e.getSource()==b12){
if(label.getText().equals("0")){label.setText("2");}
else{
if(!c){label.setText(label.getText().concat("2"));}
else{label.setText("2"); c=false; n=0.0;}
}
}
if(e.getSource()==b13){
if(label.getText().equals("0")){label.setText("3");}
else{
if(!c){label.setText(label.getText().concat("3"));}
else{label.setText("3"); c=false; n=0.0;}
}
}
if(e.getSource()==b16){
if(label.getText().equals("0")){label.setText("0");}
else{
if(!c){label.setText(label.getText().concat("0"));}
else{label.setText("0"); c=false; n=0.0;}
}
}
if(e.getSource()==b18){
if(!label.getText().contains(".")){label.setText(label.getText().concat("."));} }
if(e.getSource()==b4){
c=true;
d=1;
m=m.valueOf(label.getText());
}
if(e.getSource()==b9){
c=true;
d=2;
m=m.valueOf(label.getText());
}
if(e.getSource()==b14){
c=true;
d=3;
m=m.valueOf(label.getText());
}
if(e.getSource()==b19){
c=true;
d=4;
m=m.valueOf(label.getText());
}
if(e.getSource()==b15){
m=m.valueOf(label.getText());
if(m==0){label.setText("0没有倒数");}
else{m=1/m;
if(m.toString().endsWith(".0")){
h=m.intValue();
}
else{label.setText(m.toString());}
}
}
if(e.getSource()==b5){
m=m.valueOf(label.getText());
if(m<0){label.setText("负数不能被开方");} else{
m=Math.sqrt(m);
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());} }
}
if(e.getSource()==b10){
c=true;
d=5;
m=m.valueOf(label.getText());
}
if(e.getSource()==b17){
r=0-m.valueOf(label.getText());
if(r.toString().endsWith(".0")){
h=r.intValue();
}
else{label.setText(m.toString());}
}
if(e.getSource()==(b20)){
if(n==0){n=n.valueOf(label.getText());}
if(d==1){
if(n!=0){
m=m/n;
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());}
}
else{label.setText("0不能作除数");} }
else if(d==2){
m=m*n;
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());}
}
else if(d==3){
m=m-n;
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());}
}
else if(d==4){
m=m+n;
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());}
}
else if(d==5){
if(n!=0){
m=m%n;
if(m.toString().endsWith(".0")){
h=m.intValue();
label.setText(h.toString());
}
else{label.setText(m.toString());}
}
else{label.setText("0不能作除数");}除数为0时出错处理}
}
if(e.getSource()==b02){label.setText(a);}
if(e.getSource()==b03){label.setText(a);}
if(e.getSource()==b01){
if(label.getText().length()==1){label.setText(a);}
else{label.setText(label.getText().substring(0,label.getText().length()-1));} }
}
}
public static void main(String args[]){
JiSuanQi x=new JiSuanQi();
x.setVisible(true);
}
}。