java课程设计 科学计算器

目录

1 课设任务及要求 (1)

1.1课设任务: (1)

1.2创新要求: (1)

1.3设计要求 (1)

2 需求分析 (2)

2.1 设计背景 (2)

2.2 开发的技术及功能 (2)

3 设计思路 (3)

4 详细设计 (4)

4.1功能实现: (4)

4.4 程序设计过程 (6)

5 系统调试 (6)

5.1 运行调试 (6)

6 参考文献 (7)

附录 (8)

1 课设任务及要求

1.1课设任务:

⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算);

⑵、有求倒数、退格和清零功能。

1.2创新要求:

能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。

1.3设计要求

①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。

③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

2 需求分析

2.1 设计背景

设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。

2.2 开发的技术及功能

本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。

3 设计思路

⑴、本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。如:

Button b=new Button();

b.addActionListener(事件监听器);

⑵、事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。

⑶、在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater 中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。

⑷、计算器完成的是一个数学表达式,如:3+2,所以可以采用一个数组来存储数字或字符,如3,+,2分别存储在数组中,最后运算时,可以一一取出来进行运算。

⑸、利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。

⑹、利用文本框显示操作数和运算结果。

4 详细设计

4.1功能实现:

①加减乘除求余以及指数运算

②其他运算

Ⅰ、求平方根

Ⅱ、对数运算

Ⅲ、余弦运算

Ⅳ、正切运算

Ⅴ、e的指数运算

Ⅵ、倒数运算

③主要方法说明

public cos(double x) //求x的余弦函数

public tan (double x) //求x的正切函数

public sqrt(double x) //求x的平方根

public log (double x) //求x的自然对数运算public exp (double x) //求e的x次幂

public pow (double a,double b) //求a的b次幂public daoshu (double x) //求x的倒数

④程序流程图

4.4 程序设计过程

设计过程:

(1)确定计算器函数功能和界面布局;

(2)设置框架,注册监听事件,编写方法;

(3)调试运行;

(4)改写应用程序,生成APPLET

5 系统调试

5.1 运行调试

计算器界面如下:

经过调试后运行,计算器界面与windows自带的计算器风格基本一致实现了预期的效果;

输入数据进行验证,各项函数功能实现均正常。

6 参考文献

[1]丁振凡《Java语言使用教程》. 北京邮件大学出版社,2006.9

[2] 丁振凡《Java语言使用教程实验指导》. 北京邮件大学出版社,2006.9

[3] Bruce Eckel 《Java编程思想》. 机械工业出版社 2007.6

[4]耿祥义《JAVA2实用教程》.清华大学出版社 2009.5

附录

程序代码如下:

Appalication 如下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import https://www.360docs.net/doc/6618985076.html,ng.*;

import java.text.*;

import java.math.BigInteger;

public class Calculator implements ActionListener

{

//动作监听接口

JFrame frame; //框架

JTextField textShow; //文本行

JPanel panel, panel1, panel2, panel3; //面板

JButton buttonBk, buttonCe, buttonC;

JButton button[];

JButton Dot,AddAndSub, Add, Sub, Mul, Div, Mod,Sqrt, Dao, Equal,zhengxian,yuxian,jiecheng,duishu;

JMenuBar mainMenu; //主菜单,子菜单,菜单项

JMenu editMenu, viewMenu ;

JMenuItem copyItem, pasteItem, tItem, sItem;

DecimalFormat prec; //用于设置数据输出精度 49,67

boolean clickable; //用于控制当前能否按键

double vard, result; //用来保存double型数据的中间值(vard)

和最后结果(result)

int key = -1,prekey = -1; //key用来保存当前进行何种运算,prekey

用来保存前次进行何种运算

String copy; //做复制,粘贴用

//构造函数

public Calculator()

{

clickable = true;

result = 0;

frame = new JFrame("计算器—应用非师范");

prec=new DecimalFormat("0.######"); //设置数据输出精度(对

于double型值)

textShow = new JTextField(15);

textShow.setText("");

textShow.setHorizontalAlignment(textShow.RIGHT);

textShow.setEditable(false);

textShow.setBackground(new Color(255, 255, 255));

panel = new JPanel();

frame.getContentPane().add(panel);

panel1 = new JPanel();

panel2 = new JPanel();

panel.setLayout(new BorderLayout());

//菜单设置

mainMenu = new JMenuBar();

editMenu = new JMenu("编辑(E)");

viewMenu = new JMenu("查看(V)");

copyItem = new JMenuItem("复制(C) Ctrl+C");

copyItem.addActionListener(this);

pasteItem= new JMenuItem("粘贴(P) Ctrl+V");

pasteItem.addActionListener(this);

editMenu.add(copyItem);

editMenu.add(pasteItem);

tItem = new JMenuItem("★精简型科学计算器");

tItem.addActionListener(this);

sItem = new JMenuItem( "☆开发团队");

sItem.addActionListener(this);

viewMenu.add(tItem);

viewMenu.add(sItem);

mainMenu.add(editMenu);

mainMenu.add(viewMenu);

panel.add(mainMenu, BorderLayout.NORTH);

panel.add(textShow, BorderLayout.CENTER);

panel.add(panel1, BorderLayout.SOUTH);

panel1.setLayout(new BorderLayout());

buttonBk = new JButton("Backspace");

buttonBk.setForeground(new Color(255, 0, 0));

buttonCe = new JButton("CE");

buttonCe.setForeground(new Color(255, 0, 0));

buttonC = new JButton("C");

buttonC.setForeground(new Color(255, 0, 0));

buttonBk.addActionListener(this);

buttonCe.addActionListener(this);

buttonC.addActionListener(this);

panel1.add(panel2, BorderLayout.NORTH);

panel2.setLayout(new FlowLayout(FlowLayout.RIGHT));

panel2.add(buttonBk);

panel2.add(buttonCe);

panel2.add(buttonC);

panel3 = new JPanel();

panel1.add(panel3, BorderLayout.CENTER);

button = new JButton[14];

for (int i = 0; i < button.length; i++)

{

button[i] = new JButton(Integer.toString(i));

button[i].setForeground(new Color(22, 22, 255)); }

Dot = new JButton(".");

Dot.setForeground(new Color(0, 0, 255));

AddAndSub = new JButton("+/-");

AddAndSub.setForeground(new Color(0, 0, 255));

Add = new JButton("+");

Add.setForeground(new Color(0, 0, 255));

Sub = new JButton("-");

Sub.setForeground(new Color(0, 0, 255));

Mul = new JButton("*");

Mul.setForeground(new Color(0, 0, 255));

Div = new JButton("/");

Div.setForeground(new Color(0, 0, 255));

Mod = new JButton("%");

Mod.setForeground(new Color(0, 0, 255));

Sqrt = new JButton("sqrt");

Sqrt.setForeground(new Color(0, 0, 255));

Dao = new JButton("1/x");

Dao.setForeground(new Color(0, 0, 255));

Equal = new JButton("=");

Equal.setForeground(new Color(0, 0, 255));

jiecheng = new JButton("n!");

jiecheng.setForeground(new Color(0, 0, 255));

zhengxian = new JButton("sin");

zhengxian.setForeground(new Color(0, 0, 255));

yuxian= new JButton("cos");

yuxian.setForeground(new Color(0, 0, 255));

duishu = new JButton("log");

duishu.setForeground(new Color(0, 0, 255));

//将所有行为与监听绑定

panel3.setLayout(new GridLayout(4, 6,6,6)); //

panel3.add(button[7]);

button[7].addActionListener(this);

panel3.add(button[8]);

button[8].addActionListener(this);

panel3.add(button[9]);

button[9].addActionListener(this);

panel3.add(Div);

Div.addActionListener(this);

Sqrt.addActionListener(this);

panel3.add(zhengxian); zhengxian.addActionListener(this);

panel3.add(button[4]);

button[4].addActionListener(this);

panel3.add(button[5]);

button[5].addActionListener(this);

panel3.add(button[6]);

button[6].addActionListener(this);

panel3.add(Mul);

Mul.addActionListener(this);

panel3.add(Mod);

Mod.addActionListener(this);

panel3.add(yuxian);

yuxian.addActionListener(this);

panel3.add(button[1]);

button[1].addActionListener(this);

panel3.add(button[2]);

button[2].addActionListener(this);

panel3.add(button[3]);

button[3].addActionListener(this);

panel3.add(Sub);

Sub.addActionListener(this);

Dao.addActionListener(this);

panel3.add(jiecheng);

jiecheng.addActionListener(this);

panel3.add(button[0]);

button[0].addActionListener(this);

panel3.add(AddAndSub);

AddAndSub.addActionListener(this);

panel3.add(Dot);

Dot.addActionListener(this);

panel3.add(Add);

Add.addActionListener(this);

panel3.add(Equal);

Equal.addActionListener(this);

panel3.add(duishu);

duishu.addActionListener(this);

frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

frame.pack();

frame.show();

}

//设置各个按钮的动作

public static int calc(int n)

{

int ret =1;// BigInteger.ONE;

for (Integer i= 2; i<=n; i++)

{

ret = ret*i;//.multiply(new BigInteger(i.toString())); }

return ret;

}

public void actionPerformed(ActionEvent event)

{

boolean sign = false; //判断是否是double型数参与运算,是为true,不是为false

Object temp = event.getSource();

try {

//如果按下数字按钮,将按下的按钮代表的数据插入的当前文本框字符串之后

for (int i = 0; i <= 9; i++)

if (temp == button[i] && clickable == true)

textShow.setText(textShow.getText() + Integer.toString(i));

//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'

if (temp == Dot && clickable == true) {

boolean isDot = false;

if (textShow.getText().length() == 0)

isDot = true;

for (int i = 0; i < textShow.getText().length(); i++) if ('.' == textShow.getText().charAt(i)) {

isDot = true;

break;

}

if (isDot == false)

textShow.setText(textShow.getText() +".");

}

if ( (temp == Add || temp == Sub || temp == Mul ||

temp == Div) && clickable == true) {

//'+'操作

if (temp == Add) {

switch (prekey) {

case 0:

result += Double.parseDouble(textShow.getText());

break;

case 1:

result -= Double.parseDouble(textShow.getText());

break;

case 2:

result *= Double.parseDouble(textShow.getText());

break;

case 3:

if (Double.parseDouble(textShow.getText()) == 0) { textShow.setText("除数不能为零");

clickable = false;

}

else

result /= Double.parseDouble(textShow.getText());

break;

default:

result = Double.parseDouble(textShow.getText());

}

textShow.setText("");

prekey = key = 0;

}

//'-'操作

if (temp == Sub) {

switch (prekey) {

case 0:

result += Double.parseDouble(textShow.getText());

break;

case 1:

result -= Double.parseDouble(textShow.getText());

break;

case 2:

result *= Double.parseDouble(textShow.getText());

break;

case 3:

if (Double.parseDouble(textShow.getText()) == 0) { textShow.setText("除数不能为零");

clickable = false;

}

else

result /= Double.parseDouble(textShow.getText());

break;

default:

result = Double.parseDouble(textShow.getText());

}

textShow.setText("");

prekey = key = 1;

}

//'*'操作

if (temp == Mul) {

switch (prekey) {

case 0:

result += Double.parseDouble(textShow.getText());

break;

case 1:

result -= Double.parseDouble(textShow.getText());

break;

case 2:

result *= Double.parseDouble(textShow.getText());

break;

case 3:

if (Double.parseDouble(textShow.getText()) == 0) { textShow.setText("除数不能为零");

clickable = false;

}

else

result /= Double.parseDouble(textShow.getText());

break;

default:

result = Double.parseDouble(textShow.getText());

}

textShow.setText("");

prekey = key = 2;

}

//'/'操作

if (temp == Div) {

switch (prekey) {

case 0:

result += Double.parseDouble(textShow.getText());

break;

case 1:

result -= Double.parseDouble(textShow.getText());

break;

case 2:

result *= Double.parseDouble(textShow.getText());

break;

case 3:

if (Double.parseDouble(textShow.getText()) == 0) { textShow.setText("除数不能为零");

clickable = false;

}

else

result /= Double.parseDouble(textShow.getText());

break;

default:

result = Double.parseDouble(textShow.getText());

}

textShow.setText("");

prekey = key = 3;

}

}

//'='操作

if (temp == Equal && clickable == true) {

//如果连续按'=',则进行连续运算

if (prekey == 5) {

if (key == 0) {

result += vard;

textShow.setText(prec.format(result));

}

if (key == 1) {

result -= vard;

textShow.setText(prec.format(result));

}

if (key == 2) {

result *= vard;

textShow.setText(prec.format(result));

}

if (key == 3) {

if (Double.parseDouble(textShow.getText()) == 0) { textShow.setText("除数不能为零");

clickable = false;

}

else {

result /= vard;

textShow.setText(prec.format(result));

}

}

}

else {

vard = Double.parseDouble(textShow.getText());

if (key == 0) {

prekey = -1;

result += Double.parseDouble(textShow.getText());

textShow.setText(prec.format(result));

}

if (key == 1) {

prekey = -1;

result -= Double.parseDouble(textShow.getText());

textShow.setText(prec.format(result));

}

if (key == 2) {

prekey = -1;

result *= Double.parseDouble(textShow.getText());

java课程设计 计算器实际与实现

《面向对象程序设计》 课程设计报告 题目: 计算器设计与实现 专业: 班级: 姓名: 指导教师: 成绩: xx 201x 年 x 月xx 日 xxxxxx

目录 1 设计内容及要求 (1) 1.1设计内容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 设计过程 (2) 3.2系统功能模块 (3) 4 设计结果与分析 (4) 4.1功能模块的划分 (4) 4.2功能模块的实现 (4) 小结 (10) 5 参考文献 (11)

1 设计内容及要求 1.1设计内容 该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,等) 1.2设计任务及具体要求 计算器的设计与实现,使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。在日常生活中经常需要用到计算器,比如科学计算、数字计算、会计业务甚至是日常生活中的一些运算,当运算比较复杂时没有计算器就会显得很麻烦。为了解决日常生活中的困难,特意设计了这个计算器系统。 2 概要设计 2.1 功能需求 在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有计算器就会显得很麻烦。为了解决日常生活中的困难,特意设计了这个计算器系统。在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。除此之外还可以进行三角函数、指数、对数、平方等运算。人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。

【精品文档】java课程设计 计算器的制作

【精品文档】java课程设计计算器的制作科信学院计算机科学与技术专业 java课设报告书 JAVA课程设计说明书 ——————计算器的设计 专业班级班 课设题目 学生姓名 学生学号 指导教师 提交日期 2 - 1 - 科信学院计算机科学与技术专业 java课设报告书一、内容摘要: 运用本学期所学知识设计一个能够完成简单四则运算的计算器;以Myeclipse 作 为开发环境,结合之前所学的Java基础知识共同完成。该计算器的计算结果保留了 两位小数;这里简单介绍设计思想:构造出一个界面,然后往面板上粘贴各个组件, 包括按钮、标签、文本框等。 二、设计目的: 通过课程设计加深对Java程序设计的理解,掌握Java程序开发的基本方法,把课堂上所学到的多个单元串到一起,提高解决问题和分析问题的能力,具体体现在以下几个方面:

1、了解Java开发一般应用程序的方法和步骤; 进一步强化类的定义,掌握类的继承、接口; 2、 3、熟练掌握变量、数组的应用; 4、熟悉图形用户界面中常用组件的使用,掌握事件处理机制; 5、了解数据库连接技术JDBC、网络编程和多线程机制。 三、设计内容: 3.1 需求分析 3.1.1 计算器的基本功能: 加法运算:用“+”按钮进行运算; 减法运算:用“-”按钮进行运算; 乘法运算:用“*”按钮进行运算; 除法运算:用“/”按钮进行运算; 清零键: 用”清空”按钮实现; - 2 - 科信学院计算机科学与技术专业 java课设报告书 3.2 用户界面设计 该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT 组件. import java.awt.*;

java课程设计计算器

中文摘要 该程序是一个图形界面的简单Java计算器,具有良好的界面,使用人员能快捷简单的进行操作。即时准确地获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,等)。其中C表示清零,界面简洁使用方 便。

目录 一、课程设计任务及要求 (1) 二、需求分析 (2) 三、设计思路 (3) 四、详细设计 (5) 五、运行调试与分析讨论 (11) 六、设计体会与小结 (14) 七、参考文献 (15)

一、课程设计任务及要求 设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

二、需求分析 在日常生活中经常要用到计算器,比如科学计算器、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本次实验要求实现一个具有四则运算的计算器,拥有加、减、乘、除功能,并且还要求具备清零等功能。

三、设计思路 本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。包含各种按钮的面板Panel p 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如: Button b=new Button(); b.addActionListener(事件监听器); 事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。 在事件处理。 触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 计算器完成的是一个数学表达式,如:3+2,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,+,2分别存储在链表中,最后运算时,可以一一取出来进行运算。 本应用程序中的数字按钮和运算符按钮可以分别定义以下两个类的对象组件 数字按钮NumberButton类如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class NumberButton extends Button { int number;

java课程设计 科学计算器

目录 1 课设任务及要求 (1) 1.1课设任务: (1) 1.2创新要求: (1) 1.3设计要求 (1) 2 需求分析 (2) 2.1 设计背景 (2) 2.2 开发的技术及功能 (2) 3 设计思路 (3) 4 详细设计 (4) 4.1功能实现: (4) 4.4 程序设计过程 (6) 5 系统调试 (6) 5.1 运行调试 (6) 6 参考文献 (7) 附录 (8)

1 课设任务及要求 1.1课设任务: ⑴、设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算); ⑵、有求倒数、退格和清零功能。 1.2创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 1.3设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

2 需求分析 2.1 设计背景 设计这个计算器主要是参考Windows操作系统中自带的计算器,由于编者水平和时间的限制,不能将计算器设计到科学型及其他更复杂的类型,在设计过程中还参考了一些其他的优秀设计。但本计算器除了常用的加减乘除(可以进行浮点和负数运算)这些基本运算外,还有求余、求倒、退格、清零,甚至还能进行一些复杂科学的运算,比如余弦(cos)、正切(tan)、指数运算(pow)、自然对数运算(log)、求平方根(sqrt)以及对e的指数运算(exp),并且还能进行连续运算。总体上说来,本计算器设计简单,代码很少,程序很小,但功能却很强大,这是同类计算器所不具备的。 2.2 开发的技术及功能 本课程设计是要做一个图形界面的计算器,其界面主要是由swing组件中的控件构成。程序实现了计算器的基本功能有:加、减、乘、除基本算术运算(可以进行浮点和负数运算)和sin、cos、tan等三角函数求值运算,同时能进行指数运算和自然对数运算,还有求倒数、退格和清零功能。

java课设计算器报告

java课设计算器报告 Java是一种跨平台的面向对象的编程语言,使用Java编写的程序可以运行在各种环境(如Windows,Linux, Mac OS)之中。而在学习Java语言的过程中,设计一个功能比较完善的计算器是学习者比较需要掌握的一项基本技能,故本文的目的在于,设计一个更加完善的Java课设计算器,并介绍如何实现。 二、计算器简介 计算器是一种用于计算数字表达式的设备或程序,它可以计算算术表达式(包括加、减、乘、除),可以处理复杂的表达式,并有多种式样,如科学计算器,财务计算器,历史计算器等等。 三、计算器实现 (一)编写程序 首先,编写一个简单的计算器程序,让它能够实现输入输出的功能。程序的实现使用Java的swing组件,并设置相应的按钮和文本框。 (二)处理表达式 计算器可以接受复杂的表达式,所以必须使用相应的算法来处理表达式,以便得到正确的结果。 (三)计算结果 接收到表达式后,依据编写的算法,计算得到所需要的结果,并在结果框中显示出来。 四、计算器应用

计算器是日常生活中非常常见且实用的工具,它有助于改善计算准确性以及节约计算时间。此外,计算器也有多种应用,比如:(一)金融领域 计算器可以帮助金融行业的职员进行计算,例如计算投资收益、贷款利息、汇率等; (二)学术领域 计算器可以帮助学生进行科学计算,从而更加方便快捷地完成学术研究; (三)数据分析 计算器可以帮助对大量数据进行快速分析,从而节省时间和精力,提高工作效率。 五、总结 本文基于Java语言设计了一款更加完善的计算器,并介绍了如 何实现,它既可以进行简单的计算,也可以处理复杂的表达式,具有很强的实用性。在实际的应用中,计算器的功能可以帮助我们更快更准确地完成计算,且多种应用,可以更好地提高工作效率。

java课程设计---Java计算器

Java程序设计说明书设计题目:Java计算器

目录 第1章计算器概述 (3) 1.1设计目的 4 1.2功能模块设计 4 1.3系统功能图 5 设计实现的详细步骤 6 2.2.1 计算器界面 6 2.2.2 界面设计代码 6 2.3程序运行效果 7 第3章设计中遇到的重点及难点 (9) 3.1 设计中的重点 (10) 3.2.1 设计难点1:布局 (10) 3.2.2 设计难点2:代码 (10) 3.2.3设计难点3:运行结果 (10) 第4章本次设计中存在不足与改良方案 (10) 4.1设计不足 (10) 4.2改良方案 (11) 心得体会 (12) 参考文献 (12) JAVA课程设计说明书

摘要 该计算器是由Java语言编写的,可以进行十进制下的四则运算(加、减、乘、除)、开平方、百分号、求倒数,还可以实现其他按钮的功能。添加了一个编辑、查看、帮助的主菜单并能实现其功能。Backspace 表示逐个删除,CE 表示全部清除,C 表示一次运算完成后,单击“C”按钮即可清除当前的运算结果,再次输入时可开始新的运算,MC 表示清除储存数据,MR 表示读取储存的数据,MS 表示将所显示的数存入存储器中,存储器中原有的数据被冲走,M+ 表示计算结果并加上已经储存的数。界面类似Windows 自带的计算器。 该计算器围绕Java编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。在编程使用Java语言,是目前比较流行的编程语言。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。 关键词:Java语言、标准、计算器

java课程设计计算器报告书软件工程

java课程设计计算器报告书软件工 程 1. 背景介绍 近年来,Java编程语言已经成为软件开发的焦点,Java之所以如此受欢迎,原因在于它的可移植性和平台无关性。随着Java应用的广泛使用,Java课程设计计算器已成为很多计算机专业学生的必修课程。Java课程设计计算器是一种基于Java语言开发的计算器软件,可用于数学计算和常规计算。Java课程设计计算器需要进行软件工程化的设计。 2. 项目描述 Java课程设计计算器是一种基于控制台应用程序的计算机软件,它具有基本的算数操作,如加、减、乘、除和幂运算符。Java课程设计计算器还支持三角函数,指数函数,对数函数,阶乘和平方根。用户可以使用控制台输入表达式,然后查看计算结果。Java课程设计计算器软件工程项目的目标是基于软件工程的概念和方法,对这个简单的计算器软件进行系统化的分析、构建和测试。 3. 团队成员 本项目由四名成员组成,分别是Sophia、Peter、David 和Rachel。Sophia 是项目的组长,负责项目管理和实施工作。Peter 是项目的技术主管,负责软件建模和设计工作。David

和Rachel 则是开发团队的核心部分,负责编写代码和测试工作。 4. 系统架构设计 Java课程设计计算器采用MVC 模式来设计系统架构,系统包括Model、View 和Controller 三个部分。- Model 部分:Model 是Java代码的核心部分,实现了计算器计算功能。Model中包括Calculation 类,可以对输入的算式进行语法分 析和计算,并返回计算的结果。Calculation 类还包括ExpressionToken 和Operator 两个子类,用于完成数学表达 式的分词和计算运算符的优先级。- View 部分:View 用于将 输入的算式和计算结果输出到用户的控制台界面。在View 部 分中包括CalculatorUI 类,接收用户输入,并在控制台中显 示运算结果。- Controller 部分:Controller 实现了Model 和View 之间的交互,可以将用户输入的算式传递给Model 计算,然后将计算结果传递给View 显示。在Controller 部分中 包括CalculatorEngine 类,负责调用Model 的Calculation 实现算式计算,并将结果返回到View 部分的控制台界面。 5. 项目实现 Java课程设计计算器软件工程项目实现包括如下几个步骤:- 系统分析和设计:包括架构设计、模块划分和交互流程图设计。- 模块开发:各模块开发人员根据模块划分和流程图进行 编码、调试。- 模块集成:对各模块进行集成调整,确保各模 块及其交互正常。- 系统测试:对整个系统进行测试,包括单 元测试和集成测试等。- 系统发布:系统发布前需经过严格的 测试,确保软件用户可以正常使用,发布到生产环境。

Java计算器课程设计报告

《Java计算器》Java课程设计报告 姓名:******** 学号:******** 专业:************

一.程序要实现的功能: 基础功能:类似windows计算器-普通计算器所具有的,数的输入、加、减、乘、除、开根号、求倒数、退格、清空,以及数字储存器中的MR(显示)、MC (清空)、M+(相加)、MS(储存) 扩展功能: 类似windows计算器-科学计算器所具有的,各种函数(包括正三角反三角函数)计算,不同进制转换,逻辑与或非等操作。 二.程序算法&功能实现(大概) 以下为运算功能简易示意图: 不同进制转换: 此功能独立于计算器其他功能,计算器运行过程中设定一个变量carry储存当前进制转态,每次运算时先将屏幕显示的数字转化成十进制然后带入运算,对于要显示在计算器屏幕的结果也要先进行十进制转换为当前进制然后显示。

三.遇到问题及解决方案 1.普通计算器到科学计算器的界面转换: 科学计算器的界面显然比普通计算器界面要复杂,按钮要多,而无论怎样修改布局都无法完整得在科学计算器和普通计算器之间切换。 解决方案: 将计算器的界面布局的类设为扩展JPanel的类CreateButton,该类中设置两个方法,一个方法进行科学计算器的界面布局,一个方法进行普通计算器的界面布局,两个方法依靠CreateButton类构造函数种的参数决定调用哪个方法,在主的类里面若要在科学计算器和普通计算器之间切换,只要为当前面板new一个CreateButton,并设置好参数,就可以换一个界面。 2.不同进制输入输出与运算问题: 由于科学型计算器涉及不同进制的输入输出与运算,而不同的进制运算规则稍有不同,因此不同进制输入输出与运算就成了一个问题。 解决方案: 设置一个全局变量表示当前进制状态,而程序运行过程处理数据都以十进制形式,也就是仅在显示时,按照当前进制状态,将十进制转化为相应进制。 3.JAVA已有的函数计算精度不够: 例如sin函数计算,java对sin函数计算的参数是弧度制,但是如果用Math.sin ()计算Pi/6(即sin30度),那么结果是0.4999999999999999而不是0.5。同样,cos,tan也都出现这种情况。 查出原因:Java中对PI的计算只是估算,精度不够。 解决方案: 如果要计算 sin x ,(x是角度),那么先用Math.sin(x/180*Math.PI) 得到不精确的值sinx,再将用Math.rint(sinx*100000000)/100000000.0进行舍入处理。便得到想要的结果。 4.运算符重复输入:

Java课程设计报告-计算器

Java课程设计报告-计算器 第一部分设计的内容要求 1.1 Windows自带计算器版面设计 1.2计算器计算功能算法实现 第二部分设计思想 2.1根据图形用户界面设计方法设计计算器版面。 ①容器类(窗口--Window类,面板--Panel类),框架类--Frame, Button类,Label类,TextField类等类的构造方法,菜单(菜单栏、菜单项)的建立于应用。 ②事件处理机制:监听器类WinClose(),actionPerformed()。 2.2计算器计算功能实现,即按钮监听器的实现 自定义变量:x,y为操作数,op为操作符。根据单击按钮不同进行不同的操作,详见处理按钮单击事件方法actionPerformed (ActionEvent e)(计算功能算法)流程图。

第三部分详细设计

3.2处理按钮单击事件方法actionPerformed(ActionEvent e)(计算器计算功能算法)流程图:

第四部分运行效果图4.1运行初始图: 4.2 计算功能测试图: -1+23.4 将textp中数据赋给y N Y 单击”1”~”9” 将单击数字插入到textp中数据 后,并将textp中数据赋给y 将textp赋0,并str.stelength(0); 结束

4.2 数学分组功能测试图: 第五部分心得与体会 5.1 Java是一门实践性很强的编程语言,每学习到一个新的知识点应当及时动手编写程序,提高动手能力,加深对语言的理解。 5.2 根据Java图形用户界面设计方法设计计算器版面有很多种设计方法,学习过程中应灵活变通,使版面的设计更简单易懂。 5.3 本次设计的计算器还有不足之处,首先还没有实现科学型的计算功能,其次还没有键盘输入功能,因此还应继续努力,更加完善计算器的功能。

Java计算器课程设计报告 - 副本

JA V A课程设计 小型计算器 学生姓名: ******** 系别:计算机科学系 专业:计算机科学与技术 年级:2008 应用2班 提交时间:2010年 12 月 22日学号:

目录 一概述 (3) 二总体方案设计 (4) 三详细设计 (6) 四程序的调试与运行结果说明.. 10 五课程设计总结 (19) 六附录....... 错误!未定义书签。

一设计任务书 1.程序具备的功能: (1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮; (2)完成整数、实数的四则运算(加、减、乘、除); (3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。 2.课程设计的主要设计思想 对于此计算器程序,首先要设计其GUI 界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计

完成。 布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。 在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。 二总体方案设计 1.界面设计 界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt 中的BorderLayout和GridLayout布局管理方式,其图形界面如下:

java科学计算器(进制转换)

JAVA综合程序设计和分析 一、题目: 用java语言编写科学计算器,要求完成加、减、乘、除以及基本函数处理还有数的进制转换。 二、摘要: 本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(二进制,八进制,十进制)之间的相互转换,还有基本三角函数和平方根,对数等基本数学函数运算 三、功能说明: A.运用两个面板的叠加做出界面。 B.通过在按钮的单击事件处理方法中调用类的成员方法calculate ()来进行简易计算器的各种运算,并正确实现运算功能。 C.调用Math包中的方法实现各函数功能。 D.添加菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单选项,并分别实现‘选项’中‘退出’的功能,通过调用Integer包中的方法实现二进制、八进制的转换,‘帮助'菜单栏中‘用法’的提示对话框。 E.整个程序对话框可实现最小化、最大化、关闭。

四、详细设计 package计算器; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends Frame implements ActionListener, WindowListener { private private private GridBagConstraints constraints; private JTextField displayField; //计算结果显示区 private String lastCommand; //保存+,-,*,/,=命令0 private double result; //保存计算结果 private boolean start; //判断是否为数字的开始 private JMenuBar menubar; private JMenuItem m_exit,m2_ejz,m2_bjz; private Dialog dialog; private Label label_dialog; private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_ 2, button_3,button_4,button_5,button_6,button_7,button_8,button_9,button _0, button_plus,button_minus,button_multiply,button_divide,button_point, button_equal,button_log,button_tan,button_cos,button_sin,button_exp; public Calculator() //构造方法设置布局、为按钮注册事件监听器 { super("Calculator"); this.setLocation(240,200); this.setSize(350,300); this.setResizable(true); this.setLayout(new GridLayout(7,1)); this.addmyMenu(); //调用成员方法添加菜单 displayField=new JTextField(30); this.add(displayField); displayField.setEditable(true); start=true; result=0; lastCommand = "="; JPanel panel0=new JPanel(); panel0.setLayout(new GridLayout(1,4,4,4));

Java科学计算器程序代码

计算器布局显示: 功能举例: ①13+20=33 ②-7*14=-98:先输入7,再单击-/+将其变成负数,然后依次单击×号、14与= ③7!=5040 ④sin30°=0.5:先输入30,然后按下′″按钮转换成角度值,再按下sin即可显示结果 ⑤sqrt(4)=2:利用鼠标点击4后再点击sqrt按键即可显示结果 ⑥2*π=6.2832 …… 源程序如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JTextField;

java课程设计报告—计算器

1 Java实习报告--计算器 目录 一、课程设计目的2 二、课程设计任务2 2.1、设计任务2 2.2、课程设计要求:2 2.3、需求分析2 三、开发工具与平台3 3.1、开发工具3 3.2、开发平台3 四、设计思路4 4.1、界面设计4 、逻辑设计4 、程序流程图5 、主要代码展现及说明5 4.3、程序测试10 五、实验小结11 六、附录(程序代码)12

2 Java实习报告--计算器 一、课程设计目的 1、熟练掌握java面向对象编程。 2、选择适合的数据结构实现需求。 3、熟练使用各种控制结构。 4、GUI组件、事件办理技术。 二、课程设计任务 2.1、设计任务 设计一个简单的计算器,能够进行四则运算:加、减、乘、除等(限于 十进制下) 程序要求: (1)应拥有相应的界面,可参照Windows操作系统自带的计算器界面。 (2)操作符号定为:“+,”“-”,“*,”“/,”“+/-”等。(按国际常例设计)(3)用户经过点击程序界面上按钮,实现数字、运算符的输入操作。 (4)以上部分为一定完成的内容。 选作部分: (1)拥有操作符号“1/x,”“sqrt(”开方),“.(”小数功能)等。 2.2、课程设计要求: (1)应用自己所学课程知识完成对计算器的基本任务。 (2)查阅相关资料,学习和掌握项目中涉及的新知识,提高自学能力。 (3)经过应用java程序编写计算器来提高自己对简单的图形界面有 必然的掌握和认识。 2.3、需求分析 1.设计的计算器能够完成加法、减法、乘法、除法的简单运算。 2.实现一些简单的扩展运算,如:正负号、倒数、退格、清零等功能。

java课程设计报告-计算器的制作

河北工程大学科信学院 JAVA课程设计说明书 ——————计算器的设计 专业班级班 课设题目 学生姓名 学生** 指导教师 提交日期 2 一、内容摘要: 运用本学期所学知识设计一个能够完成简单四则运算的计算器;以Myeclipse作为开发环境,结合之前所学的Java根底知识共同完成。该计算器的计算结果保存了两位小数;这里简单介绍设计思想:构造出一个界面,然后往面板上粘贴各个组件,包括按钮、标签、文本框等。 二、设计目的: 通过课程设计加深对Java程序设计的理解,掌握Java程序开发的根本方法,把课堂上所学到的多个单元串到一起,提高解决问题和分析问题的能力,具体表达在以下几个方面: 1、了解Java开发一般应用程序的方法和步骤; 2、进一步强化类的定义,掌握类的继承、接口; 3、熟练掌握变量、数组的应用; 4、熟悉图形用户界面中常用组件的使用,掌握事件处理机制; 5、了解数据库连接技术JDBC、网络编程和多线程机制。

三、设计内容: 计算器的根本功能: 加法运算:用"+〞按钮进展运算; 减法运算:用"-〞按钮进展运算; 乘法运算:用 "*〞按钮进展运算; 除法运算:用 "/〞按钮进展运算; 清零键: 用〞清空〞按钮实现; 用户界面设计 该计算器程序的设计:用户界面包括Swing组件,不过程序中大都使用的是AWT组件. import java.awt.*; 在AWT组件中: (1)、使用了面板和按钮: mianban 1,2,3; private JPanel mianBan1 = new JPanel(); //面板1存放,窗 口、和清空按钮 chuangKou.add(mianBan1,BorderLayout.NORTH); //面板1,存放 窗口的北边private JPanel mianBan2 = new JPanel(); //存放其他按钮 mianBan2.add(s7); mianBan2.add(s8); mianBan2.add(s9); mianBan2.add(jia); mianBan2.add(s4); mianBan2.add(s5); mianBan2.add(s6); mianBan2.add(jian); mianBan2.add(s1); mianBan2.add(s2); mianBan2.add(s3); mianBan2.add(cheng); mianBan2.add(s0); mianBan2.add(dian); mianBan2.add(deng); mianBan2.add(chu); mianBan2.setLayout(new GridLayout(4,4)); //面板2的布局模式 Button s0,s1,s2,s3,s4,s5,s6,s7,s8,s9; Button jia,jian,cheng,chu;

java课程设计 设计一个图形界面的计算器,完成简单的算术运算

java课程设计设计一个图形界面的计算器,完成简单的算术运算 2.课设要求 要求使用Java语言编写程序,实现基本的加、减、乘、除四种运算,并且要求在图形界面中显示运算过程和结果。此外,还要求程序具有良好的用户交互性,能够处理用户的输入错误,并给出友好的提示信息。 二、需求分析 通过对计算器的功能和用户需求进行分析,我们确定了以下需求: 1.支持基本的加、减、乘、除四种运算; 2.支持小数和负数的运算; 3.支持多次连续运算; 4.支持括号运算; 5.支持清空、删除和撤销功能; 6.支持错误输入的提示和纠正。 三、设计思路

我们采用MVC架构设计模式,将程序分为三个模块:模型、视图和控制器。 1.模型:负责进行数学运算,计算结果并返回给控制器; 2.视图:负责显示运算过程和结果,以及处理用户的输入; 3.控制器:负责将用户输入传递给模型进行计算,并将计 算结果传递给视图进行显示。 四、详细设计 1.界面设计 我们采用Java Swing框架设计图形界面,主要包括以下 组件: 1)文本框:用于显示运算过程和结果; 2)按钮:用于输入数字、运算符和其他功能键; 3)菜单栏:用于提供设置和帮助等功能。 2.模型设计 我们设计了一个Calculator类,包括以下方法: 1)n:加法运算; 2)n:减法运算; 3)n:乘法运算; 4)n:除法运算;

5)calculate:根据用户输入的表达式进行计算。 3.控制器设计 我们设计了一个Controller类,负责将用户输入传递给模型进行计算,并将计算结果传递给视图进行显示。Controller 类包括以下方法: 1)handleInput:处理用户输入; 2)updateView:更新视图。 五、运行调试与分析讨论 在开发过程中,我们遇到了一些问题,如括号匹配、小数运算精度等,通过调试和讨论,最终解决了这些问题。在测试过程中,我们发现程序运行稳定,界面友好,能够满足用户的需求。 六、设计体会与小结 通过这次课程设计,我们深入了解了Java语言和GUI编程,掌握了MVC架构设计模式的应用,提高了团队合作和问题解决能力。同时,我们也发现了自己的不足之处,需要继续研究和提高。

java课程设计---计算器应用程序

课程设计

一、课程设计的目的 随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程。保存计算过程的计算器正是在这样的市场需求之下研发的,目的旨在帮助用户快速准确的得到计算结果。掌握Java语言编程的基础知识并能熟练运用,熟悉类声明与对象的使用,理解委托时间处理模型,了解Java语言的图形用户界面的设计知识,运用JCreator编写简单计算器程序,并实现其功能。 二、需求分析 设计一个图形界面的带保存过程的计算器应用程序,完成简单的算术过程。设计的计算器应用程序除了普通的计算功能外,还有n次方、算术平方根、正弦函数、对数、随机取值、退格、清零等功能。程序主要是设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关计算。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的过程将被显示在窗口右边的文本框中,另外使用程序自带的保存功能将计算过程保存到想要的地方。 三、设计思路 本应用程序继承自框架类(Frame),此程序不使用布局管理器,将单行输入显示文本框、各个按钮功能、计算过程显示区加入到同一个面板内,直接添加到各自区域。同时注册按钮时间监听器。如: b0 = new JButton("0"); b0.addActionListener(new ActionListener() 事件监听器中的事件处理方法void actionPerformed(ActionEvent e),完成主要事件的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(“1”,“2”,“3”,…,“9”,“0”)、运算符按钮事件(“+”,“-”,“*”,“/”)、正负号按钮事件

相关文档
最新文档