导航:首页 > 编程语言 > java计算器课程报告

java计算器课程报告

发布时间:2022-10-06 18:15:56

java 计算器课程设计报告

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;//导包

class MyClass extends JFrame
//创建一个MyClass类继承JFrame框架的窗口类,
//也就是说JFrame里有的功能MyClass都能实现
{
JLabel a1=new JLabel("第一个数");
//创建一个显示“第一个数”的标签
JLabel a2=new JLabel("第二个数");
JLabel a3=new JLabel("运算结果");
JTextField b1=new JTextField(5);
//创建一个文本框、默认长度为5,用来输入运算数字,当然也可以默认为空
JTextField b2=new JTextField(5);
JTextField b3=new JTextField(5);
//创建一个用于显示运算结果的标签,也可以创建一个标签来显示
JButton a=new JButton("加");
//创建一个用于加法计算的按钮,点击时进行加法运算
JButton b=new JButton("减");
JButton c=new JButton("乘");
JButton d=new JButton("除");
JPanel jp1=new JPanel();//创建一个面板,用来放控件
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
MyClass()//构造函数,用来初始化的
{
setLayout(new GridLayout(3,1));//添加一个四行四列的布局管理器
jp1.setLayout(new FlowLayout());//设置JP1面板为流式布局管理器
jp1.setLayout(new FlowLayout());
//将a1,b1,a2,b2四个控件添加到jp1面板中
jp1.add(a1);
jp1.add(b1);
jp1.add(a2);
jp1.add(b2);
jp1.add(a3);
//将a,b,c,d四个控件添加到jp2面板中
jp2.add(a);
jp2.add(b);
jp2.add(c);
jp2.add(d);
jp3.add(a3);
jp3.add(b3);
//将jp1,jp2,jp3三个面板添加到窗口中
add(jp1);
add(jp3);
add(jp2);
Object e;
a.addActionListener(new ActionListener()
//创建一个匿名的事件监听器
{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double x=Double.valueOf(b1.getText().toString());
//获取第一个输入数,并将其由String型转换成double型
double y=Double.valueOf(b2.getText().toString());
//获取第二个输入数,并将其由String型转换成double型
b3.setText(""+(x+y));
//将运算结果在b3这个文本框中显示
}

});
b.addActionListener(new ActionListener()
{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double x=Double.valueOf(b1.getText().toString());
double y=Double.valueOf(b2.getText().toString());
b3.setText(""+(x-y));
}

});
c.addActionListener(new ActionListener()//创建一个匿名的事件监听器
{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double x=Double.valueOf(b1.getText().toString());
double y=Double.valueOf(b2.getText().toString());
b3.setText(""+(x*y));
}

});
d.addActionListener(new ActionListener()//创建一个匿名的事件监听器
{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double x=Double.valueOf(b1.getText().toString());
double y=Double.valueOf(b2.getText().toString());
//因为0不能做除数,所以在这里需要进行判断
if(y==0)
{
b3.setText("错误");
}
else
{
b3.setText(""+(x/y));
}
}

});
//下面的是设置窗口的属性
this.setTitle("计算器");//设置窗口的标题
//this.setSize(400,400);//设置窗口的大小,也可以改成this.pack()
this.pack();
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置关闭属性
this.setVisible(true);//设置窗口的可见性
}
public static void main(String[] args)//主函数
{
new MyClass();
}
}

Ⅱ java课程设计---计算器 要求如下:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.LinkedList;
import java.io.*;
public class CalculatorWindow extends JFrame implements ActionListener{
NumberButton numberButton[];
OperationButton operationButton[];
JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin;
JTextField resultShow; //显示计算结果
JTextField showComputerProcess; //显示当前计算过程
JTextArea saveComputerProcess; //显示计算步骤
JButton saveButton,Button,clearButton;
LinkedList<String> list; //链表用来存放第一个运算数、运算符号和第二个运算数
HandleDigit handleDigit; //负责处理ActionEvent事件
HandleOperation handleOperation ;
HandleBack handleBack;
HandleClear handleClear;
HandleEquality handleEquality;
HandleDot handleDot;
HandlePOrN handlePOrN;
HandleSin handleSin;
public CalculatorWindow(){
setTitle("计算器");
JPanel panelLeft,panelRight;
list=new LinkedList<String>();
resultShow=new JTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(new Font("TimesRoman",Font.BOLD,16));
resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
resultShow.setEditable(false);
resultShow.setBackground(Color.white);
showComputerProcess=new JTextField();
showComputerProcess.setHorizontalAlignment(JTextField.CENTER);
showComputerProcess.setFont(new Font("Arial",Font.BOLD,16));
showComputerProcess.setBackground(Color.cyan);
showComputerProcess.setEditable(false);
saveComputerProcess=new JTextArea();
saveComputerProcess.setEditable(false);
saveComputerProcess.setFont(new Font("宋体",Font.PLAIN,16));
numberButton=new NumberButton[10];
handleDigit=new HandleDigit(list,resultShow,showComputerProcess);
for(int i=0;i<=9;i++){
numberButton[i]=new NumberButton(i);
numberButton[i].setFont(new Font("Arial",Font.BOLD,20));
numberButton[i].addActionListener(handleDigit);
}
operationButton=new OperationButton[4];
handleOperation=new HandleOperation(list,resultShow,
showComputerProcess,saveComputerProcess);
String 运算符号[]={"+","-","*","/"};
for(int i=0;i<4;i++){
operationButton[i]=new OperationButton(运算符号[i]);
operationButton[i].setFont(new Font("Arial",Font.BOLD,20));
operationButton[i].addActionListener(handleOperation);
}
小数点操作=new JButton(".");
handleDot=new HandleDot(list,resultShow,showComputerProcess);
小数点操作.addActionListener(handleDot);
正负号操作=new JButton("+/-");
handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess);
正负号操作.addActionListener(handlePOrN);
等号操作=new JButton("=");
handleEquality=new HandleEquality(list,resultShow,
showComputerProcess,saveComputerProcess);
等号操作.addActionListener(handleEquality);
sin=new JButton("sin");
handleSin=new HandleSin(list,resultShow,
showComputerProcess,saveComputerProcess);
sin.addActionListener(handleSin);
退格操作=new JButton("退格");
handleBack=new HandleBack(list,resultShow,showComputerProcess);
退格操作.addActionListener(handleBack);
清零操作=new JButton("C");
handleClear=new HandleClear(list,resultShow,showComputerProcess);
清零操作.addActionListener(handleClear);
清零操作.setForeground(Color.red);
退格操作.setForeground(Color.red);
等号操作.setForeground(Color.red);
sin.setForeground(Color.blue);
正负号操作.setForeground(Color.blue);
小数点操作.setForeground(Color.blue);
panelLeft=new JPanel();
panelRight=new JPanel();
panelLeft.setLayout(new BorderLayout());
JPanel centerInLeft=new JPanel();
panelLeft.add(resultShow,BorderLayout.NORTH);
panelLeft.add(centerInLeft,BorderLayout.CENTER);
centerInLeft.setLayout(new GridLayout(4,5));
centerInLeft.add(numberButton[1]);
centerInLeft.add(numberButton[2]);
centerInLeft.add(numberButton[3]);
centerInLeft.add(operationButton[0]);
centerInLeft.add(清零操作);
centerInLeft.add(numberButton[4]);
centerInLeft.add(numberButton[5]);
centerInLeft.add(numberButton[6]);
centerInLeft.add(operationButton[1]);
centerInLeft.add(退格操作);
centerInLeft.add(numberButton[7]);
centerInLeft.add(numberButton[8]);
centerInLeft.add(numberButton[9]);
centerInLeft.add(operationButton[2]);
centerInLeft.add(sin);
centerInLeft.add(numberButton[0]);
centerInLeft.add(正负号操作);
centerInLeft.add(小数点操作);
centerInLeft.add(operationButton[3]);
centerInLeft.add(等号操作);
panelRight.setLayout(new BorderLayout());
panelRight.add(showComputerProcess,BorderLayout.NORTH);
saveButton=new JButton("保存");
Button=new JButton("复制");
clearButton=new JButton("清除");
saveButton.setToolTipText("保存计算过程到文件");
Button.setToolTipText("复制选中的计算过程");
clearButton.setToolTipText("清除计算过程");
saveButton.addActionListener(this);
Button.addActionListener(this);
clearButton.addActionListener(this);
panelRight.add(new JScrollPane(saveComputerProcess),BorderLayout.CENTER);
JPanel southInPanelRight=new JPanel();
southInPanelRight.add(saveButton);
southInPanelRight.add(Button);
southInPanelRight.add(clearButton);
panelRight.add(southInPanelRight,BorderLayout.SOUTH);
JSplitPane split=new JSplitPane
(JSplitPane.HORIZONTAL_SPLIT,panelLeft,panelRight);
add(split,BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBounds(100,50,528,258);
validate();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==Button)
saveComputerProcess.();
if(e.getSource()==clearButton)
saveComputerProcess.setText(null);
if(e.getSource()==saveButton){
JFileChooser chooser=new JFileChooser();
int state=chooser.showSaveDialog(null);
File file=chooser.getSelectedFile();
if(file!=null&&state==JFileChooser.APPROVE_OPTION){
try{ String content=saveComputerProcess.getText();
StringReader read=new StringReader(content);
BufferedReader in= new BufferedReader(read);
FileWriter outOne=new FileWriter(file);
BufferedWriter out= new BufferedWriter(outOne);
String str=null;
while((str=in.readLine())!=null){
out.write(str);
out.newLine();
}
in.close();
out.close();
}
catch(IOException e1){}
}
}
}
public static void main(String args[]){
new CalculatorWindow();
}
}

Ⅲ java计算器课设

package com.xuzs.test;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;
private JTextField txtResult;
private JButton btnZero, btnOne, btnTwo, btnThree, btnFour, btnFive,
btnSix, btnSeven, btnEight, btnNine, btnPlus, btnMinus, btnTimes,
btnDivided, btnEqual, btnPoint, btnC, btnCE, btnSqrt, btnPlusMinus;
int z;
double x, y;
StringBuffer str;

public Calculator() {
super("计算器");
this.setSize(311, 231);
this.setLocation(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLayout(new GridLayout(1, 1));// 网格布局
JPanel panel = new JPanel(new GridLayout(6, 1));// 面板 网格布局6行1列
this.add(panel);

txtResult = new JTextField("0");
Color BackColor = new Color(255, 255, 255);
Color ForeColor = new Color(0, 0, 0);
txtResult.setBackground(BackColor);
txtResult.setForeground(ForeColor);

panel.add(txtResult);
txtResult.setHorizontalAlignment(JTextField.RIGHT);
txtResult.setEnabled(false);
// text.setEnabled(true);

JPanel panel_1 = new JPanel(new GridLayout(1, 4));
panel.add(panel_1);

btnSqrt = new JButton("sqrt");
panel_1.add(btnSqrt);
btnSqrt.addActionListener(this);
btnPlusMinus = new JButton("+/-");
panel_1.add(btnPlusMinus);
btnPlusMinus.addActionListener(this);
btnCE = new JButton("CE");
panel_1.add(btnCE);
btnCE.addActionListener(this);
btnC = new JButton("C");
panel_1.add(btnC);
btnC.addActionListener(this);

JPanel panel_2 = new JPanel(new GridLayout(1, 4));
panel.add(panel_2);

btnSeven = new JButton("7");
panel_2.add(btnSeven);
btnSeven.addActionListener(this);
btnEight = new JButton("8");
panel_2.add(btnEight);
btnEight.addActionListener(this);
btnNine = new JButton("9");
panel_2.add(btnNine);
btnNine.addActionListener(this);
btnDivided = new JButton("/");
panel_2.add(btnDivided);
btnDivided.addActionListener(this);

JPanel panel_3 = new JPanel(new GridLayout(1, 4));
panel.add(panel_3);

btnFour = new JButton("4");
panel_3.add(btnFour);
btnFour.addActionListener(this);
btnFive = new JButton("5");
panel_3.add(btnFive);
btnFive.addActionListener(this);
btnSix = new JButton("6");
panel_3.add(btnSix);
btnSix.addActionListener(this);
btnTimes = new JButton("*");
panel_3.add(btnTimes);
btnTimes.addActionListener(this);

JPanel panel_4 = new JPanel(new GridLayout(1, 4));
panel.add(panel_4);

btnOne = new JButton("1");
panel_4.add(btnOne);
btnOne.addActionListener(this);
btnTwo = new JButton("2");
panel_4.add(btnTwo);
btnTwo.addActionListener(this);
btnThree = new JButton("3");
panel_4.add(btnThree);
btnThree.addActionListener(this);
btnMinus = new JButton("-");
panel_4.add(btnMinus);
btnMinus.addActionListener(this);

JPanel panel_5 = new JPanel(new GridLayout(1, 4));
panel.add(panel_5);

btnZero = new JButton("0");
panel_5.add(btnZero);
btnZero.addActionListener(this);
btnPoint = new JButton(".");
panel_5.add(btnPoint);
btnPoint.addActionListener(this);
btnEqual = new JButton("=");
panel_5.add(btnEqual);
btnEqual.addActionListener(this);
btnPlus = new JButton("+");
panel_5.add(btnPlus);
btnPlus.addActionListener(this);

str = new StringBuffer();

this.setVisible(true);

}

public void windowClosing(WindowEvent a) {
System.exit(0);
}

public void actionPerformed(ActionEvent e) {

try {
if (e.getSource() == btnC) {
txtResult.setText("0");
str.setLength(0);
} else if (e.getSource() == btnCE) {
txtResult.setText("0.");
str.setLength(0);
} else if (e.getSource() == btnPlusMinus) {
x = Double.parseDouble(txtResult.getText().trim());
txtResult.setText("" + (-x));
}

else if (e.getSource() == btnPlus) {
x = Double.parseDouble(txtResult.getText().trim());
str.setLength(0);
y = 0d;
z = 1;
} else if (e.getSource() == btnMinus) {
x = Double.parseDouble(txtResult.getText().trim());
str.setLength(0);
y = 0d;
z = 2;
} else if (e.getSource() == btnTimes) {
x = Double.parseDouble(txtResult.getText().trim());
str.setLength(0);
y = 0d;
z = 3;
} else if (e.getSource() == btnDivided) {
x = Double.parseDouble(txtResult.getText().trim());
str.setLength(0);
y = 0d;
z = 4;
} else if (e.getSource() == btnEqual) {
str.setLength(0);
switch (z) {
case 1:
txtResult.setText("" + (x + y));
break;
case 2:
txtResult.setText("" + (x - y));
break;
case 3:
txtResult.setText("" + (x * y));
break;
case 4:
txtResult.setText("" + (x / y));
break;
}
}

else if (e.getSource() == btnPoint) {
if (txtResult.getText().trim().indexOf('.') != -1)// 判断字符串中是否已经包含了小数点
{

} else// 如果没数点有小
{
if (txtResult.getText().trim().equals("0"))// 如果初时显示为0
{
str.setLength(0);
txtResult.setText((str.append("0"
+ e.getActionCommand())).toString());
} else if (txtResult.getText().trim().equals(""))// 如果初时显示为空则不做任何操作
{
} else {
txtResult.setText(str.append(e.getActionCommand())
.toString());
}
}

y = 0d;
}

else if (e.getSource() == btnSqrt)// 求平方根
{
x = Double.parseDouble(txtResult.getText().trim());
txtResult.setText("数字格式异常");
if (x < 0)
txtResult.setText("负数没有平方根");
else
txtResult.setText("" + Math.sqrt(x));
str.setLength(0);
y = 0d;
}

else if (e.getSource() == btnZero)// 如果选择的是"0"这个数字键
{
if (txtResult.getText().trim().equals("0"))// 如果显示屏显示的为零不做操作
{
} else {
txtResult.setText(str.append(e.getActionCommand())
.toString());
y = Double.parseDouble(txtResult.getText().trim());
}
}

else// 其他的数字键
{
txtResult.setText(str.append(e.getActionCommand()).toString());
y = Double.parseDouble(txtResult.getText().trim());
}
} catch (NumberFormatException ae) {
txtResult.setText("数字格式异常");
} catch ( ae) {
txtResult.setText("字符串索引越界");
}

}

public static void main(String arg[]) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
new Calculator();
}

}

Ⅳ 怎么写计算器设计报告

目 录
1 前言 2
2 需求分析 2
2.1要求 2
2.2任务 2
2.3运行环境 2
2.4开发工具 2
3 概要设计 2
3.1系统流程图 3
3.2查询函数流程图 4
4 详细设计 6
4.1分析和设计 6
4.2具体代码实现 6
4.3程序运行结果 14
5 课程设计总结 14
参考文献 15
致 谢 15
1 前言
编写一个程序来实现算术计算器.通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、*、等运算符号),然后将其信息存入文件中.输入一个算术计算式,就在屏幕上显示结果.
2 需求分析
2.1要求
(1)用C语言实现程序设计;
(2)利用结构体、共用体进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释.
2.2任务
(1)定义一个结构体类型数组,输入0~9及+、--、*等符号的信息,将其信息存入文件中;
(2)输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;
(3)画出部分模块的流程图;
(4)编写代码;
(5)程序分析与调试.
2.3运行环境
(1)WINDOWS2000/XP系统
(2)TurboC2.0编译环境
2.4开发工具
C语言
3 概要设计
3.1系统流程图
如图3.1所示.
w
图3.1 系统流程图
3.2查询函数流程图
(1) 边界画线函数流程图
(2)图标按钮设置函数流程图
4 详细设计
4.1分析和设计
(1)在程序的开头部分定义了结构体类型,用来存放按钮信息,使数据能够从键盘上输入.用输入函数input()来输入按键放在button[]数组中.再定义结构体栈:struct_stack() 用于数据的输入和存放.
(2)进而定义了表格窗口函数,窗口画线函数draw_win() 和边界线函数draw_border(),定义out_text_win()输出文本窗口,定义window_xy(32,3); 计算结果窗口.通过这些为形成整个界面提供了大的前提.
(3)接着通过“write_char()”,“active_button()”,“ write_top()”,“out_text_win()”,“get_key()” ,“window_xy()”等一系列的函数,使得计算器的整个外型呈现了出来.再定义了文本光标函数:text_clo()文本光标函数,通过光标移动选定数字并按空格键确定,通过mian()函数来调用各个子函数,最终得到结果.
4.2具体代码实现
源程序代码:
#include"dos.h"
#include"conio.h"
#include"string.h"
#include"stdio.h"
#define normbut_bor 0x80
#define presbut_but 0xb8
#define normnum_but 0x8e
#define presnum_but 0xb9
#define spebut_char 0x2c
#define win_color 0xf2
#define win_char 0xfb
struct s_button /*按键的结构体*/
{ int sx,sy,ex,ey;
char *head;
int press;
}button[17]; /*图表按键数*/
struct stack /*结构体栈*/
{ char s[20];
int tos,top;
}stack;
char tag;
{
if(stack.tos>0)
stack.s[--stack.tos]='\0';
}
draw_win() /*边框画线窗口*/
{
int i;
char far *t;
char *s="This is a simple calculator!"; /*顶端边框输出的字符*/
draw_border(30,0,79,24,win_color); /*边框的位置和颜色*/
i=(79-30-strlen(s))/2+30;
t=vid_mem+i*2;
for(;*s;)
{
*t++=*s++;
*t++=win_color; /*顶端字体颜色*/
}
}
draw_border(int sx,int sy,int ex,int ey,int attrib) /*边界线函数*/
{
char far *t,far *v;
int i;
t=vid_mem;
for(i=sx+1;i

Ⅳ 急!!用java语言编写一个简单计算器,并要实验报告和步骤说明。

1000分估计有人会干这体力活。

Ⅵ java简单计算器实验报告

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class 计算器 extends JFrame implements ActionListener {
private final String[] KEYS = { "7", "8", "9", "÷", "sqrt", "4", "5", "6",
"×", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
private final String[] COMMAND = { "Backspace", "CE", "C" };
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
private JButton keys[] = new JButton[KEYS.length];
private JButton commands[] = new JButton[COMMAND.length];
private JButton m[] = new JButton[M.length];
private JTextField resultText = new JTextField();
private boolean firstDigit = true;
private double resultNum = 0.0;
private String operator = "=";
static double mr;// 记忆的数字
private boolean operateValidFlag = true;
JPanel panel[]=new JPanel[4];
public 计算器(){
super("计算器");
init();
setBackground(Color.LIGHT_GRAY);
setResizable(false);
setLocation(588, 250);
setSize(378,214);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); //窗口不能直接关闭
setVisible(true);
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e){
if (JOptionPane.showConfirmDialog(null,"确定退出? ", "提示",2)==0){
System.exit(0);
}}});
}
private void init() {
setLayout(null);
for (int i = 0; i < 4; i++) {
panel[i]=new JPanel();
add(panel[i]);
}
panel[0].setLayout(new GridLayout(1,1,3,3));
panel[1].setLayout(new GridLayout(1,3,3,3));
panel[2].setLayout(new GridLayout(5,1,3,3));
panel[3].setLayout(new GridLayout(4,5,3,3));
resultText.setHorizontalAlignment(JTextField.RIGHT);
resultText.setAlignmentX(50);
resultText.setEditable(true);
resultText.setFont(new Font("宋体",Font.PLAIN,19));//设置字体
resultText.setBackground(Color.white);
panel[0].add(resultText);
for (int i = 0; i < KEYS.length; i++) {
keys[i] = new JButton(KEYS[i]);
panel[3].add(keys[i]);
if (i%5-3==0){ keys[i].setForeground(Color.red); }
else{keys[i].setForeground(Color.black);}
keys[i].setVisible(true);
keys[i].setFont(new Font(null,Font.PLAIN,17));//设置字体
keys[i].addActionListener(this);
keys[i].setHorizontalAlignment(keys[i].CENTER);
keys[i].setBackground(new Color(255,236,233));
}
keys[4].setFont(new Font(null,Font.PLAIN,13));//设置字体
keys[19].setForeground(Color.red);
for (int i = 0; i < COMMAND.length; i++) {
commands[i] = new JButton(COMMAND[i]);
panel[1].add(commands[i]);
commands[i].setForeground(Color.red);
commands[i].addActionListener(this);
}
commands[0].setFont(new Font(null,Font.PLAIN,12));//设置字体
for (int i = 0; i < M.length; i++) {
m[i] = new JButton(M[i]);
panel[2].add(m[i]);
m[i].setForeground(Color.red);
m[i].addActionListener(this);
}
panel[0].setBounds(2, 0, 370, 30);
panel[1].setBounds(74, 30, 298, 29);
panel[2].setBounds(2,30, 70, 150);
panel[3].setBounds(74,60, 300, 120);
validate();
}
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();
if (label.equals(COMMAND[0])){ //用户按了"Backspace"键
handleBackspace();
} else if (label.equals(COMMAND[1])) { //用户按了"CE"键
resultText.setText("0");
} else if (label.equals(COMMAND[2])){ //用户按了"C"键
handleC();
} else if (label.equals(M[4])){ //用户按了"M+"键
mr=mr+Double.valueOf(resultText.getText()).doubleValue();
if (mr==0.0){m[0].setText("");}
else {m[0].setText("M");}
} else if (label.equals(M[3])){ //用户按了"MS"键
mr=Double.valueOf(resultText.getText()).doubleValue();
if (mr==0.0){m[0].setText("");}
} else if (label.equals(M[2])){ //用户按了"MR"键
resultText.setText(""+mr);
} else if (label.equals(M[1])){ //用户按了"MC"键
mr=0.0;
m[0].setText("");
} else if (label.equals("sqrt")) { //平方根运算
resultNum = Math.sqrt(Double.valueOf(resultText.getText()).doubleValue());
resultText.setText(String.valueOf(resultNum));
} else if (label.equals("%")){ //百分号运算,除以100
resultNum = Double.valueOf(resultText.getText()).doubleValue() / 100;
resultText.setText(String.valueOf(resultNum));
} else if (label.equals("+/-")){ //正数负数运算
resultNum = Double.valueOf(resultText.getText()).doubleValue() * (-1);
resultText.setText(String.valueOf(resultNum));
} else if (label.equals("1/x")) { //倒数运算
resultNum=Double.valueOf(resultText.getText()).doubleValue();
if (resultNum == 0.0){ //操作不合法
operateValidFlag = false;
resultText.setText("零没有倒数");
} else {
resultNum = 1 / resultNum;
}
resultText.setText(String.valueOf(resultNum));
} else if ("0123456789.".indexOf(label) >= 0) { //用户按了数字键或者小数点键
handleNumber(label);
} else { //用户按了运算符键
handleOperator(label);
}

}
private void handleBackspace() { // 处理Backspace键被按下的事件
String text = resultText.getText();
int i = text.length();
if (i > 0) { //退格,将文本最后一个字符去掉
text = text.substring(0, i - 1);
if (text.length() == 0) { //如果文本没有了内容,则初始化计算器的各种值
resultText.setText("0");
firstDigit = true;
operator = "=";
} else { //显示新的文本
resultText.setText(text);
}
}
}
private void handleNumber(String key) { // 处理数字键被按下的事件
if (firstDigit) { //输入的第一个数字
resultText.setText(key);
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)){
//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
resultText.setText(resultText.getText() + ".");
} else if (!key.equals(".")) { //如果输入的不是小数点,则将数字附在结果文本框的后面
resultText.setText(resultText.getText() + key);
}
firstDigit = false; //以后输入的肯定不是第一个数字了
}
private void handleC() { //处理C键被按下的事件, 初始化计算器的各种值
resultText.setText("0");
firstDigit = true;
operator = "=";
}
private void handleOperator(String key) { //处理运算符键被按下的事件
if (operator.equals("÷")) { //除法运算 ,如果当前结果文本框中的值等于0
if (getNumberFromText() == 0.0){ //操作不合法
operateValidFlag = false;
resultText.setText("除数不能为零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("+")){ //加法运算
resultNum += getNumberFromText();
} else if (operator.equals("-")){ //减法运算
resultNum -= getNumberFromText();
} else if (operator.equals("×")){ //乘法运算
resultNum *= getNumberFromText();
} else if (operator.equals("=")){ //赋值运算
resultNum = getNumberFromText();
}
if (operateValidFlag) { //双精度浮点数的运算
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(resultNum));
}
}
operator = key; //运算符等于用户按的按钮
firstDigit = true;
operateValidFlag = true;
}
private double getNumberFromText() { // 从结果文本框中获取数字
double result = 0;
try {
result = Double.valueOf(resultText.getText()).doubleValue();
}
catch (NumberFormatException e){ }
return result;
}
public static void main(String args[]) {
new 计算器();
}
}

Ⅶ 跪求java课程设计报告!要求:编写一个类似于windows计算器的程序,能实现加减乘除等基本运算并能处理异常

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
public class Jisuan extends JFrame implements ActionListener{
private JTextField reasult;
private JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn0,
btnAC,btnAdd,btnSub,btnReasult,btnD,
btnAbout,btnCancel;
private boolean add,sub,end,s,c;
private String str;
private double num1,num2;
public Jisuan(){
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
TitledBorder tb=new TitledBorder("输出"); tb.setTitleColor(Color.BLUE);

btnAbout=new JButton(" 关于 ");
btnCancel=new JButton("Cancel");
btnCancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
System.exit(0);
}
});
btnAbout.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ee)
{
JOptionPane.showMessageDialog(null,"无",
"消息",JOptionPane.INFORMATION_MESSAGE);
}
});
p3.add(btnAbout);
p3.add(btnCancel);
//JPanel p4=new JPanel();
//JPanel p5=new JPanel();
//reasult.setBorder(tb);
reasult =new JTextField("0",20);
reasult.setEditable(false);
reasult.setHorizontalAlignment(JTextField.RIGHT);
reasult.setForeground(Color.BLUE);

p1.setBorder(tb);
p1.add(reasult);

btn0=new JButton("0"); btn0.addActionListener(this);
btn1=new JButton("1"); btn1.addActionListener(this);
btn2=new JButton("2"); btn2.addActionListener(this);
btn3=new JButton("3"); btn3.addActionListener(this);
btn4=new JButton("4"); btn4.addActionListener(this);
btn5=new JButton("5"); btn5.addActionListener(this);
btn6=new JButton("6"); btn6.addActionListener(this);
btn7=new JButton("7"); btn7.addActionListener(this);
btn8=new JButton("8"); btn8.addActionListener(this);
btn9=new JButton("9"); btn9.addActionListener(this);
btnD=new JButton("."); btnD.addActionListener(this); btnD.setForeground(Color.RED);
btnAC=new JButton("AC"); btnAC.addActionListener(this); btnAC.setBackground(Color.PINK);
btnAdd=new JButton("+"); btnAdd.addActionListener(this); btnAdd.setForeground(Color.BLUE);
btnSub=new JButton("—"); btnSub.addActionListener(this); btnSub.setForeground(Color.BLUE);
btnReasult=new JButton("="); btnReasult.addActionListener(this); btnReasult.setForeground(Color.RED);

p2.add(btn1);p2.add(btn2);p2.add(btn3);p2.add(btn4);p2.add(btn5);
p2.add(btn6);p2.add(btn7);p2.add(btn8);p2.add(btn9);p2.add(btn0);
p2.add(btnD);p2.add(btnAC);p2.add(btnAdd);p2.add(btnSub);p2.add(btnReasult);
p2.setLayout(new GridLayout(5,3));

add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH);

}
public void num(int i){
String s = null;
s=String.valueOf(i);
if(end){
//如果数字输入结束,则将文本框置零,重新输入
reasult.setText("0");
end=false;

}
if((reasult.getText()).equals("0")){
//如果文本框的内容为零,则覆盖文本框的内容
reasult.setText(s);
}

else{
//如果文本框的内容不为零,则在内容后面添加数字
str = reasult.getText() + s;
reasult.setText(str);

}
}/*
String s=null;
s=String.valueOf(i);
str=reasult.getText()+s;
reasult.setText(str);
}*/
public void actionPerformed(ActionEvent e){
if(e.getSource()==btn1)
num(1);
else if(e.getSource()==btn2)
num(2);
else if(e.getSource()==btn3)
num(3);
else if(e.getSource()==btn4)
num(4);
else if(e.getSource()==btn5)
num(5);
else if(e.getSource()==btn6)
num(6);
else if(e.getSource()==btn7)
num(7);
else if(e.getSource()==btn8)
num(8);
else if(e.getSource()==btn9)
num(9);
else if(e.getSource()==btn0)
num(0);
else if(e.getSource()==btnAdd){
sign(1);
btnD.setEnabled(true);
}
else if(e.getSource()==btnSub){
sign(2);
btnD.setEnabled(true);
}
else if(e.getSource()==btnAC){
btnD.setEnabled(true);
reasult.setText("0");
}

else if(e.getSource()==btnD){
str=reasult.getText();
str+=".";
reasult.setText(str);
btnD.setEnabled(false);
}
else if(e.getSource()==btnReasult){

btnD.setEnabled(true);
num2=Double.parseDouble(reasult.getText());

if(add){
num1=num1 + num2;}
else if(sub){
num1=num1 - num2;}

reasult.setText(String.valueOf(num1));
end=true;
}

}
public void sign(int s){
if(s==1){
add=true;
sub=false;

}
else if(s==2){
add=false;
sub=true;

}

num1=Double.parseDouble(reasult.getText());
end=true;
}
public static void main(String[] args){
Jisuan j=new Jisuan();
j.setTitle("+/-简易计算器");
j.setLocation(500,280);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j.setResizable(false);
j.pack();
j.setVisible(true);
}
}
没写乘法,你自其实从网上搜索就能搜出来现成代码

Ⅷ Java计算器实验报告(含代码),急!!!!

给你一个吧。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。
* 但还不支持键盘操作。
*/
public class Calculator extends JFrame implements ActionListener {
/** 计算器上的键的显示名字 */
private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
"*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
/** 计算器上的功能键的显示名字 */
private final String[] COMMAND = { "Backspace", "CE", "C" };
/** 计算器左边的M的显示名字 */
private final String[] M = { " ", "MC", "MR", "MS", "M+" };
/** 计算器上键的按钮 */
private JButton keys[] = new JButton[KEYS.length];
/** 计算器上的功能键的按钮 */
private JButton commands[] = new JButton[COMMAND.length];
/** 计算器左边的M的按钮 */
private JButton m[] = new JButton[M.length];
/** 计算结果文本框 */
private JTextField resultText = new JTextField("0");

// 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
private boolean firstDigit = true;
// 计算的中间结果。
private double resultNum = 0.0;
// 当前运算的运算符
private String operator = "=";
// 操作是否合法
private boolean operateValidFlag = true;
/**
* 构造函数
*/
public Calculator(){
super();
//初始化计算器
init();
//设置计算器的背景颜色
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("计算器");
//在屏幕(500, 300)坐标处显示计算器
this.setLocation(500, 300);
//不许修改计算器的大小
this.setResizable(false);
//使计算器中各组件大小合适
this.pack();
}
/**
* 初始化计算器
*/
private void init() {
// 文本框中的内容采用右对齐方式
resultText.setHorizontalAlignment(JTextField.RIGHT);
// 不允许修改结果文本框
resultText.setEditable(false);
// 设置文本框背景颜色为白色
resultText.setBackground(Color.white);

//初始化计算器上键的按钮,将键放在一个画板内
JPanel calckeysPanel = new JPanel();
//用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
for (int i = 0; i < KEYS.length; i++) {
keys[i] = new JButton(KEYS[i]);
calckeysPanel.add(keys[i]);
keys[i].setForeground(Color.blue);
}
//运算符键用红色标示,其他键用蓝色表示
keys[3].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);

//初始化功能键,都用红色标示。将功能键放在一个画板内
JPanel commandsPanel = new JPanel();
//用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
for (int i = 0; i < COMMAND.length; i++) {
commands[i] = new JButton(COMMAND[i]);
commandsPanel.add(commands[i]);
commands[i].setForeground(Color.red);
}

//初始化M键,用红色标示,将M键放在一个画板内
JPanel calmsPanel = new JPanel();
//用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
calmsPanel.setLayout(new GridLayout(5, 1, 3, 3));
for (int i = 0; i < M.length; i++) {
m[i] = new JButton(M[i]);
calmsPanel.add(m[i]);
m[i].setForeground(Color.red);
}

//下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部,
//将文本框放在北部,将calms画板放在计算器的西部。

//新建一个大的画板,将上面建立的command和calckeys画板放在该画板内
JPanel panel1 = new JPanel();
//画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素
panel1.setLayout(new BorderLayout(3, 3));
panel1.add("North", commandsPanel);
panel1.add("West", calckeysPanel);

//建立一个画板放文本框
JPanel top = new JPanel();
top.setLayout(new BorderLayout());
top.add("Center", resultText);

//整体布局
getContentPane().setLayout(new BorderLayout(3, 5));
getContentPane().add("North", top);
getContentPane().add("Center", panel1);
getContentPane().add("West", calmsPanel);
//为各按钮添加事件侦听器
//都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener
for (int i = 0; i < KEYS.length; i++) {
keys[i].addActionListener(this);
}
for (int i = 0; i < COMMAND.length; i++) {
commands[i].addActionListener(this);
}
for (int i = 0; i < M.length; i++) {
m[i].addActionListener(this);
}
}

/**
* 处理事件
*/
public void actionPerformed(ActionEvent e) {
//获取事件源的标签
String label = e.getActionCommand();
if (label.equals(COMMAND[0])){
//用户按了"Backspace"键
handleBackspace();
} else if (label.equals(COMMAND[1])) {
//用户按了"CE"键
resultText.setText("0");
} else if (label.equals(COMMAND[2])){
//用户按了"C"键
handleC();
} else if ("0123456789.".indexOf(label) >= 0) {
//用户按了数字键或者小数点键
handleNumber(label);
// handlezero(zero);
} else {
//用户按了运算符键
handleOperator(label);
}
}
/**
* 处理Backspace键被按下的事件
*/
private void handleBackspace() {
String text = resultText.getText();
int i = text.length();
if (i > 0) {
//退格,将文本最后一个字符去掉
text = text.substring(0, i - 1);
if (text.length() == 0) {
//如果文本没有了内容,则初始化计算器的各种值
resultText.setText("0");
firstDigit = true;
operator = "=";
} else {
//显示新的文本
resultText.setText(text);
}
}
}

/**
* 处理数字键被按下的事件
* @param key
*/
private void handleNumber(String key) {
if (firstDigit) {
//输入的第一个数字
resultText.setText(key);
} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)){
//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面
resultText.setText(resultText.getText() + ".");
} else if (!key.equals(".")) {
//如果输入的不是小数点,则将数字附在结果文本框的后面
resultText.setText(resultText.getText() + key);
}
//以后输入的肯定不是第一个数字了
firstDigit = false;
}
/**
* 处理C键被按下的事件
*/
private void handleC() {
//初始化计算器的各种值
resultText.setText("0");
firstDigit = true;
operator = "=";
}

/**
* 处理运算符键被按下的事件
* @param key
*/
private void handleOperator(String key) {
if (operator.equals("/")) {
//除法运算
//如果当前结果文本框中的值等于0
if (getNumberFromText() == 0.0){
//操作不合法
operateValidFlag = false;
resultText.setText("除数不能为零");
} else {
resultNum /= getNumberFromText();
}
} else if (operator.equals("1/x")) {
//倒数运算
if (resultNum == 0.0){
//操作不合法
operateValidFlag = false;
resultText.setText("零没有倒数");
} else {
resultNum = 1 / resultNum;
}
} else if (operator.equals("+")){
//加法运算
resultNum += getNumberFromText();
} else if (operator.equals("-")){
//减法运算
resultNum -= getNumberFromText();
} else if (operator.equals("*")){
//乘法运算
resultNum *= getNumberFromText();
} else if (operator.equals("sqrt")) {
//平方根运算
resultNum = Math.sqrt(resultNum);
} else if (operator.equals("%")){
//百分号运算,除以100
resultNum = resultNum / 100;
} else if (operator.equals("+/-")){
//正数负数运算
resultNum = resultNum * (-1);
} else if (operator.equals("=")){
//赋值运算
resultNum = getNumberFromText();
}
if (operateValidFlag) {
//双精度浮点数的运算
long t1;
double t2;
t1 = (long) resultNum;
t2 = resultNum - t1;
if (t2 == 0) {
resultText.setText(String.valueOf(t1));
} else {
resultText.setText(String.valueOf(resultNum));
}
}
//运算符等于用户按的按钮
operator = key;
firstDigit = true;
operateValidFlag = true;
}

/**
* 从结果文本框中获取数字
* @return
*/
private double getNumberFromText() {
double result = 0;
try {
result = Double.valueOf(resultText.getText()).doubleValue();
} catch (NumberFormatException e){
}
return result;
}

public static void main(String args[]) {
Calculator calculator1 = new Calculator();
calculator1.setVisible(true);
calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

阅读全文

与java计算器课程报告相关的资料

热点内容
都市主角推到母亲姐姐姨妈的长篇小说 浏览:916
免费不用下载网站 浏览:893
可以播放的欧美男男电影 浏览:949
ldx218舵机用单片机控制 浏览:898
河南dns服务器地址大全 浏览:775
中字四级片 浏览:769
青岛本地服务器地址 浏览:987
白鹿原小说免费阅读 浏览:356
女主姓简的小说 浏览:210
提示命令符框 浏览:354
韩剧伦理女同都有哪些 浏览:35
高黄男男小说 浏览:503
华娱小说多女主的小说 浏览:747
收了杨玉环的历史小说 浏览:878
R语音命令 浏览:290
男人最新网址你懂的 浏览:572
怎么把文件夹放在电脑顶端 浏览:532
delphi入门pdf 浏览:418
岛国片app 浏览:955
电影院维语版。 浏览:298