JAVA 应用与开发
程序设计报告
( 2012/2013 学年 第 6 学期)
题 目: 计算器
班
级
学 生 姓 名
学
号
所 属 分 组
日
期
2013/5/4
-
1
评分项
优秀
良好
中等
及格 不及格
出勤
(10%)
纪律
(10%)
程序演示
(10%)
程序完成情况
(20%)
报告
(50%)
评
分
细
则
总
评
分
教师签名:
年 月 日
-
2
一、课题内容和要求
计算器
实现类似 Windows 操作系统“计算器”的功能。可以完成任意的通常借助手持计算器
来完成的标准运算。“计算器”可用于基本的算术运算,比如加减运算等。同时它还具有
科学计算器的功能,比如对数运算和阶乘运算等。
二、需求分析
1、计算器的基本功能
(1)加法运算:用数字按钮和“+”按钮进行运算;
(2)减法运算:用数字按钮和“-”按钮进行运算;
(3)乘法运算:用数字按钮和“*”按钮进行运算;
(4)除法运算:用数字按钮和“/”按钮进行运算;
2、计算器的退格和清零
用“退格”按钮和“C”按钮实现;
3、计算器的科学计算功能
(1)正负数转换:用数字按钮和“+/-”按钮进行运算;
(2)开方:用数字按钮和“sqrt”按钮进行运算;
(3)倒数:用数字按钮和“1/x”按钮进行运算;
(4)平方:用数字按钮和“x^2”按钮进行运算;
(5)立方:用数字按钮和“x^3”按钮进行运算;
(6)正切:用数字按钮和“tan”按钮进行运算;
(7)正弦:用数字按钮和“sin”按钮进行运算;
(8)余弦:用数字按钮和“cos”按钮进行运算;
(9)自然对数(以 e 为底数):用数字按钮和“ln”按钮进行运算;
(10)常用对数(以 10 为底数):用数字按钮和“log”按钮进行运算;
4、计算器的功能分布如下图:
-
3
退格
8
5
2
+/-
7
4
1
0
屏幕
C
+
-
*
/
ln
9
6
3
.
=
sqrt
1/x
x^2
x^3
tan
sin
cos
log
整个程序只有一个 Calculator 类,该类继承自 JFrame 类。类中有一个构造方法
Calculator,一个初始化计算器窗口界面的函数 init,一个初始化计算器状态的函数
initState,两个单击按钮是要执行的方法 actionPerformed1, actionPerformed2,一个计
算函数 compute,最后是主函数 main。
三、概要设计
JFrame:class
Calculator:class
public Calculator()
private void init()
void initState()
private void actionPerformed1(ActionEvent evt)
private void actionPerformed2(ActionEvent evt)
private void compute()
public static void main(String args[])
整个程序只有一个 Calculator 类,该类继承自 JFrame 类。类中有一个构造方法
Calculator,一个初始化计算器窗口界面的函数 init,一个初始化计算器状态的函数
initState,两个单击按钮是要执行的方法 actionPerformed1, actionPerformed2,一个计
算函数 compute,最后是主函数 main。
-
4
四、详细设计
1、源代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.math.*;
import java.lang.Math.*;
class Calculator extends JFrame
{
//实例变量
private JTextField jTextField1;
private JButton jButton1,jButton2,jButton3,jButton4,jButton5;
private JButton jButton6,jButton7,jButton8,jButton9,jButton10;
private JButton jButton11,jButton12,jButton13,jButton14,jButton15;
private JButton jButton16,jButton17,jButton18,jButton19,jButton20;
private JButton jButton21,jButton22,jButton23,jButton24,jButton25;
private JButton jButton26,jButton27,jButton28;
//面板用于放置按钮
Private JPanel jPanel1,jPanel2,jPanel3,jPanel4,jPanel5;
Private jPanel6,jPanel7,jPanel8;
//取 0、1 或 2 表示计算机的状态
private int p;
//op[0]存放第 1 个操作数或上次运算的结果,op[1]存放本次运算的运算符,op[2]
存放第 2 个操作数
private String[] op=new String[3];
//构造方法
public Calculator()
{
super("计算器");
init();
-
5
initState();
}
//初始化计算器的窗口界面
private void init()
{
//设置处理窗口关闭时间的隐含代码,窗口界面采用默认的边框式布局管理器
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);// 不能用鼠标拉伸窗体
setSize(380, 260);
//创建各按钮
jButton1=new JButton("1");
jButton2=new JButton("2");
jButton3=new JButton("3");
jButton4=new JButton("4");
jButton5=new JButton("5");
jButton6=new JButton("6");
jButton7=new JButton("7");
jButton8=new JButton("8");
jButton9=new JButton("9");
jButton10=new JButton("0");
jButton11=new JButton(".");
jButton12=new JButton("+");
jButton13=new JButton("-");
jButton14=new JButton("=");
jButton15=new JButton("C");
jButton16=new JButton("*");
jButton17=new JButton("/");
jButton18=new JButton("sqrt");
jButton19=new JButton("tan");
jButton20=new JButton("sin");
jButton21=new JButton("cos");
-
6
jButton22=new JButton("1/x");
jButton23=new JButton("x^2");
jButton24=new JButton("x^3");
jButton25=new JButton("ln");
jButton26=new JButton("log");
jButton27=new JButton("+/-");
jButton28=new JButton("退格");
//为各按钮注册监听器
jButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton4.addActionListener(new ActionListener()
-
7
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton6.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton7.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
actionPerformed1(evt);
{
}
});
jButton8.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
-
8