当前位置:文档之家› 大学java课程设计实验报告_计算器

大学java课程设计实验报告_计算器

下载可编辑 .专业.整理. JAVA课程设计报告 组员信息: 第(二)组 姓名 学号 职责 宋舟 20084042019 算法设计 何春伟 20084042025 界面实现 周沛 20084042021 代码编写 计算器的实现问题 问题描述:制作一个计算器 基本要求:要求实现类似Windows操作系统里面的标准计算器。在此基础上实现部分科学性的功能。

测试数据:分别对加、减、乘、除和sin、cos、tan函数进行测

试 算法思想:使用String定义的数组a[25]对每个按钮进行按钮赋值,创建一个Panel进行字符和数字的存放,调用addActionListener()对各个时间进行监听。调用系统库函数对数值进行运算。 模块划分:1、主函数main()创建一个计算器。 2、void actionPerformed(ActionEvent e)对鼠标点击的事件进行响应以及在文本框中的显示。 3、各Buuton对应的功能: “开方”:对输入数字开方 “平方”:对输入数字平方 下载可编辑 .专业.整理. “getResult()”:对四则运算进行分别运算操作 “backspace”:取消上一次的操作 “CE”:取消上一次运算的操作 “C”:清空作用 “sin”:对输入数据进行sin运算 “cos”:对输入数据进行cos运算 “tan”:对输入数据进行tan运算 “+/-”:对输入的数据取反 “+”,“-”,“*”,“/”:对数据进行四则运算 源程序: package hechongwei;

import java.lang.String; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.lang.Math;

class Calculator extends JFrame implements ActionListener 下载可编辑 .专业.整理. {

JTextField tf = new JTextField(" "); String str1 = " ", str2 = " ", str3 = " "; // str1和str2存放两个输入的数

Panel pn1 = new Panel();// new 一个Panel存放符号与数字

String a[] = { "平方", "开方", "backspace", "CE", "C", "7", "8", "9", "/", "sin", "4", "5", "6", "*", "cos", "1", "2", "3", "-", "tan", "0", "+/-", ".", "+", "=" };// 用于对每个Button进行赋值

boolean frist = true;// 判断是否输入的为第一个字符 int operCount = 0; int i; // 统计符号的数目 下载可编辑 .专业.整理. String Operate = null;// 存放操作数的符号

boolean error = false; double num1 = 0.0, num2 = 0.0;// 两个输入的数作运算时转化为double存放

double result = 0.0;// 暂时保留计算结果 public Calculator() { super("简单计算机 "); tf.setHorizontalAlignment(JTextField.RIGHT);// 显示框中由右想左输出 tf.setEditable(false); Button b[] = new Button[25]; for (i = 0; i < 5; i++) { // 将符号加到对应的Button上 b[i] = new Button(String.valueOf(a[i])); pn1.add(b[i]); b[i].setActionCommand(a[i]); b[i].addActionListener(this);// 调用addActionListener()方法注册事件监听器 下载可编辑 .专业.整理. } for (i = 5; i <= 7; i++) { b[i] = new Button(String.valueOf(a[i])); pn1.add(b[i]); b[i].setActionCommand("number"); b[i].addActionListener(this); } b[8] = new Button(String.valueOf(a[8])); pn1.add(b[8]); b[8].setActionCommand("oper"); b[8].addActionListener(this); b[9] = new Button(String.valueOf(a[9])); pn1.add(b[9]); b[9].setActionCommand(a[9]); b[9].addActionListener(this); for (i = 10; i <= 12; i++) { b[i] = new Button(String.valueOf(a[i])); pn1.add(b[i]); b[i].setActionCommand("number"); b[i].addActionListener(this); } b[13] = new Button(String.valueOf(a[13])); 下载可编辑 .专业.整理. pn1.add(b[13]); b[13].setActionCommand("oper"); b[13].addActionListener(this); b[14] = new Button(String.valueOf(a[14])); pn1.add(b[14]); b[14].setActionCommand(a[14]); b[14].addActionListener(this); for (i = 15; i <= 17; i++) { b[i] = new Button(String.valueOf(a[i])); pn1.add(b[i]); b[i].setActionCommand("number"); b[i].addActionListener(this); } b[18] = new Button(String.valueOf(a[18])); pn1.add(b[18]); b[18].setActionCommand("oper"); b[18].addActionListener(this); b[19] = new Button(String.valueOf(a[19])); pn1.add(b[19]); b[19].setActionCommand(a[19]); b[19].addActionListener(this); for (i = 20; i <= 22; i++) { 下载可编辑 .专业.整理. b[i] = new Button(a[i]); pn1.add(b[i]); b[i].setActionCommand(a[i]); b[i].addActionListener(this); } b[23] = new Button(String.valueOf(a[23])); pn1.add(b[23]); b[23].setActionCommand("oper"); b[23].addActionListener(this); b[24] = new Button(String.valueOf(a[24])); pn1.add(b[24]); b[24].setActionCommand(a[24]); b[24].addActionListener(this); pn1.setLayout(new GridLayout(5, 5)); add(tf, "North"); // 界面的处理 add(pn1, "Center"); setSize(400, 300); setVisible(true); tf.setText("0.0"); addWindowListener(new WindowAdapter() { // 程序结束 public void windowClosing(WindowEvent e) { 下载可编辑 .专业.整理. System.exit(1); } }); }

public void actionPerformed(ActionEvent e) { Button temp = (Button) e.getSource(); try { if (e.getActionCommand().equals("number")) { if (frist) { str1 = str1 + temp.getLabel(); tf.setText(str1); // 将输入的str1在显示框中显示 } else { str2 = str2 + temp.getLabel(); tf.setText(str2);// 将输入的str2在显示狂中显示 } } else if (e.getActionCommand().equals("oper")) { if (str1 == " ") { operCount = 0;// 如果还没有输入数就点击运

相关主题