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

java科学计算器(进制转换)
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));

JPanel panel1=new JPanel();

panel1.setLayout(new GridLayout(1,5,4,4));

this.add(panel1);

button_sqrt=new JButton("sqrt");

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

button_exp=new JButton("exp");

button_CE=new JButton("退格");

button_cancel=new JButton("C");

JPanel panel2=new JPanel();

panel2.setLayout(new GridLayout(1,5,4,4));

this.add(panel2);

button_7=new JButton("7");

button_8=new JButton("8");

button_9=new JButton("9");

button_log=new JButton("log");

button_divide=new JButton("/");

JPanel panel3=new JPanel();

panel3.setLayout(new GridLayout(1,5,4,4));

this.add(panel3);

button_4=new JButton("4");

button_5=new JButton("5");

button_6=new JButton("6");

button_tan=new JButton("tan");

button_multiply=new JButton("*");

JPanel panel4=new JPanel();

panel4.setLayout(new GridLayout(1,5,4,4));

this.add(panel4);

button_1=new JButton("1");

button_2=new JButton("2");

button_3=new JButton("3");

button_cos=new JButton("cos");

button_minus=new JButton("-");

JPanel panel5=new JPanel();

panel5.setLayout(new GridLayout(1,5,4,4));

this.add(panel5);

button_0=new JButton("0");

button_point=new JButton(".");

button_equal=new JButton("=");

button_sin=new JButton("sin");

button_plus=new JButton("+");

panel1.add(button_sqrt);

panel1.add(button_plusminus);

panel1.add(button_exp);

panel1.add(button_CE);

panel1.add(button_cancel);

panel2.add(button_7);

panel2.add(button_8);

panel2.add(button_9);

panel2.add(button_log);

panel2.add(button_divide);

panel3.add(button_4);

panel3.add(button_5);

panel3.add(button_6);

panel3.add(button_tan);

panel3.add(button_multiply);

panel4.add(button_1);

panel4.add(button_2);

panel4.add(button_3);

panel4.add(button_cos);

panel4.add(button_minus);

panel5.add(button_0);

panel5.add(button_point);

panel5.add(button_equal);

panel5.add(button_sin);

panel5.add(button_plus);

button_sqrt.addActionListener(this);

button_plusminus.addActionListener(this);

button_exp.addActionListener(this);

button_CE.addActionListener(this);

button_cancel.addActionListener(this);

button_7.addActionListener(this);

button_8.addActionListener(this);

button_9.addActionListener(this);

button_log.addActionListener(this);

button_divide.addActionListener(this);

button_4.addActionListener(this);

button_5.addActionListener(this);

button_6.addActionListener(this);

button_tan.addActionListener(this);

button_multiply.addActionListener(this);

button_1.addActionListener(this);

button_2.addActionListener(this);

button_3.addActionListener(this);

button_cos.addActionListener(this);

button_minus.addActionListener(this);

button_0.addActionListener(this);

button_point.addActionListener(this);

button_equal.addActionListener(this);

button_sin.addActionListener(this);

button_plus.addActionListener(this);

this.addWindowListener(new WinClose()); //注册窗口监听器

this.setVisible(true);

}

private void addmyMenu() //菜单的添加

{

JMenuBar menubar=new JMenuBar();

this.add(menubar);

JMenu m1=new JMenu("选项");

JMenu m2=new JMenu("进制转换");

JMenuItem m1_exit=new JMenuItem("退出");

m1_exit.addActionListener(this);

JMenuItem m2_ejz=new JMenuItem("二进制");

m2_ejz.addActionListener(this);

JMenuItem m2_bjz=new JMenuItem("八进制");

m2_bjz.addActionListener(this);

JMenu m3 = new JMenu(" 帮助");

JMenuItem m3_Help = new JMenuItem("用法");

m3_Help.addActionListener(this);

dialog = new Dialog(this,"提示",true); //模式窗口

dialog.setSize(240,80);

label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐

dialog.add(label_dialog);

dialog.addWindowListener(this); //为对话框注册窗口事件监听器

m1.add(m1_exit);

menubar.add(m1);

m2.add(m2_ejz);

m2.add(m2_bjz);

menubar.add(m2);

m3.add(m3_Help);

menubar.add(m3); }

public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法

{

if(e.getSource().equals(button_1)||e.getSource().equals(button_2) ||

e.getSource().equals(button_3)||e.getSource().equals(button_4)||

e.getSource().equals(button_5)|| e.getSource().equals(button_6)||

e.getSource().equals(button_7)|| e.getSource().equals(button_8)||

e.getSource().equals(button_9) ||e.getSource().equals(button_0)||

e.getSource().equals(button_point)||e.getSource().equals(button_plusm inus)||

e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)) { //非运算符的处理方法

String input=e.getActionCommand();

if (start)

{

displayField.setText("");

start=false;

if(input.equals("+/-"))

displayField.setText(displayField.getText()+"-");

}

if(!input.equals("+/-"))

{

String str=displayField.getText();

if(input.equals("退格")) //退格键的实现方法

{

if(str.length()>0)

displayField.setText(str.substring(0,str.length()-1));

}

else if(input.equals("C")) //清零键的实现方法

{

displayField.setText("0");

start=true;

}

else

displayField.setText(displayField.getText()+input);

}

}

else if (e.getActionCommand()=="二进制") //二进制的转换

{

int n=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toBinaryString(n));

}

else if (e.getActionCommand()=="八进制") //八进制的转换

{

int n=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toOctalString(n));

}

else if (e.getActionCommand()=="退出") //选项中退出的处理方法

{

System.exit(0);

}

else if(e.getActionCommand()=="用法") //按下'帮助'菜单栏中用法的处理方法

{

label_dialog.setText("sqrt,exp等键是先输运算符再输数字\n");

dialog.setLocation(400,250);

dialog.setVisible(true);

}

else//各运算符的识别

{

String command=e.getActionCommand();

if(start)

{

lastCommand=command;

}

else

{

calculate(Double.parseDouble(displayField.getText()));

lastCommand=command;

start=true;

}

}

}

public void calculate(double x) //各运算符的具体运算方法

{

double d=0;

if (lastCommand.equals("+"))

result+= x;

else if (lastCommand.equals("-"))

result-=x;

else if (lastCommand.equals("*"))

result*=x;

else if (lastCommand.equals("/"))

result/=x;

else if (lastCommand.equals("="))

result=x;

else if (lastCommand.equals("sqrt"))

{

d=Math.sqrt(x);

result=d;

}

else if (lastCommand.equals("exp"))

{

d=Math.exp(x);

result=d;

}

else if (lastCommand.equals("log"))

{

d=Math.log(x);

result=d;

}

else if (lastCommand.equals("tan"))

{

d=Math.tan(x);

result=d;

}

else if (lastCommand.equals("cos"))

{

d=Math.cos(x);

result=d;

}

else if (lastCommand.equals("sin"))

{

d=Math.sin(x);

result=d;

}

displayField.setText(""+ result);

}

public void windowClosing(WindowEvent e)

{

if(e.getSource()==dialog)

dialog.setVisible(false); //隐藏对话框

else

System.exit(0);

}

public void windowOpened(WindowEvent e) { }

public void windowActivated(WindowEvent e) { }

public void windowDeactivated(WindowEvent e) { }

public void windowClosed(WindowEvent e) { }

public void windowIconified(WindowEvent e) { }

public void windowDeiconified(WindowEvent e) { }

public static void main(String args[])

{

Calculator calculator=new Calculator();

}

}

class WinClose implements WindowListener

{

public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口中的方法

{

System.exit(0); //结束程序运行

}

public void windowOpened(WindowEvent e){}

public void windowActivated(WindowEvent e){}

public void windowDeactivated(WindowEvent e){}

public void windowClosed(WindowEvent e){}

public void windowIconified(WindowEvent e){}

public void windowDeiconified(WindowEvent e){}

}

五、程序运行结果

1.界面

2.基本运算,如54 -12 =42:

3.数学函数运算,如9的开平方为3:

六、总结与体会

总结:

(1)通过编写这个相对复杂的程序,让我认识解决实际问题前应现建立模型,再通过建立的模型使问题简单化,从而解决问题。(2)这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。

(3)由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。

体会:

在此次的课程设计实践中,我学到了教科书上没有的东西。这次课程设计,我按照课程设计的要求,分块实现程序的功能。在实践中我遇到许多的问题,但我都克服,最终我成功的完成了这次课程设计。从中我充分理解了Java面对对象的特性,并体会到Java与C语言的

不同之处

在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。

计算机考试中各种进制转换的计算方法

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0 第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。

八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839 2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 +

简单计算器JAVA

浙江科技学院 经济管理学院 JAVA语言课程设计报告 选题名称简单计算器 学生学号 专业班级信管101 学生姓名 学生成绩 指导教师朱军 工作时间2013-7-5

目录 第一章选题简介 第二章需求分析 1.系统要实现的目标分析 2.对输入输出数据及流程的分析 3.开发环境及运行环境分析 第三章系统设计 1.系统功能模块设计 2.类设计 3.数据库的设计(如果有) 4.界面设计 第四章测试 1.测试用例及结果 2.程序功能的评价 第五章总结 1.遇到的问题及解决的方法 2.开发体会及自评成绩 参考文献 第一章选题简介:简单计算器

第二章需求分析 1.系统要实现的目标分析:设计一个简单计算器,点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;如果输入有误时可以按Clear撤销后重新输入新数据。 2.对输入输出数据及流程的分析:输入的符号有JiSuanQi、File、Edit、Help、on、off、close、copy、0、1、2、3、4、5、6、7、8、9、+、-、*、/、=、Backspace、CE、C,中文意思依次是计算器、文件夹、项目、帮助、开、关、复制、0、1、2、3、4、5、6、7、8、9、加、减、乘、除、等于、退格; 3.开发环境及运行环境分析:Microsoft Windows2000、jdk1.7.0_25、JCreator Pro; 第三章系统设计 1.系统功能模块设计:加、减、乘、除运算;“等于”符号;复位; 2.类设计:public void disp() 创建无值函数disp(),用来存放界面所需要展示的元素,包 括有面板,按钮,弹出对话框,显示框等。 public void actionPerformed(ActionEvent e) 创建无值函数actionPerformed(ActionEvent e),其允许的输入 值类型为ActionEvent e,在里面编写的是加减乘除等一些算 法。 public void setSum() 创建无值函数setSum(),显示出经过算法计算出的结果, public void windowClosing(WindowEvent e)

计算器使用方法

内置的计算器每个键的使用方法 INV 是什么意思。 设置 “sin” 、 “cos” 、 “tan” 、 “PI” 、 “x^y” 、 “x^2” 、 “x^3” 、 “ln” 、 “log” 、 “Ave” 、 “Sum” 和 “s” 的反函 数。完成一次计算后自动关闭反函数功能。 HYP 是什么意思。 设置 “sin” 、 “cos”

“tan” 的双曲函数。完成一次计算后自动关闭双曲函数功能。 sta 是什么意思。 计算显示数 字的正 切。若要 计算反正 切,请 使用 “Inv”+“tan” 。若 要计算双 曲正切 ,请使用 “Hyp”+“tan” 。若要计算反双曲正切,请使用 “Inv”+“Hyp”+“tan” 。 “tan” 只能用于十进制数字系 统。 AVE 是什么意思。 计算 “ 统计框 ” 对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave” 。只有先单 击 “Sta”

,该按钮才可用。 sum 是什么意思。 计算 “ 统计框 ” 对话框中显示数值的总和。若要计算平方和,请使用“Inv”+“Sum” 。只有先单击 “Sta” ,该按钮才可用。 DAT 是什么意思。 在 “ 统计框 ” 对话框内输入显示的数字。只有先单击 “Sta” ,该按钮才可用。 十进制 将显示数字转换为十进制数字系统。 度数 在十进制模式下将三角函数输入设置为度数。

DMS 是什么意思。 将显示数字转换为度 - 分 - 秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度 数表示的格式(假设显示数字是用度 - 分 - 秒格式表示的) ,请使用 “Inv”+“dms” 。 dms 只能用于 十进制数字系统。 F-E 是什么意思。打开或关闭科学计数法。大于 10^32 的数总是以指数形式表示。 F-E 只能用 于十进制数字系统 表描述了计算器的功能: 按钮 功能

VC6_C++计算器与进制转换工具设计步骤加代码

成都信息工程学院 面向对象程序设计开发文档 题目:计算器和进制转换工具 学院:控制工程学院 班级:自动化 学生姓名: 学号:2011 指导教师:姚 禁止除作者外他人复制上传本文档到百度文库和豆丁网这类网站!!!

二〇一二年十二月十三日 课程名称:面向对象的程序设计学院:控制工程学院班级:自动化学生姓名:学号: 2011 指导教师:

摘要 本设计实现了一个简单的计算器,该计算器不仅实现了简单的四则运算功能,还实现了三角函数计算功能,而且具有简洁大方的图文外观。此设计按照软件工程的方法进行,系统具有良好的界面和必要的交互信息,使操作人员能快捷简单地进行操作,充分降低了数字计算的难度和节约了时间。 编写一个简单的DOS窗口运行的工具,实现将任意的十进制整数转换成R进制数(R在2-16之间)。本系统开发平台为Windows 7,程序设计语言采用C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。 关键词:程序设计;计算器;MFC;按钮控件;进制转换

目录 引言 (1) 第一章概述 (2) 1.1 可行性分析 (2) 1.2 需求分析 (2) 第二章总体设计 (2) 2.1 功能说明 (2) 第三章软件设计 (3) 3.1 计算器工程创建 (3) 3.2 计算器开发步骤 (5) 3.3 进制转换工具设计步骤 (13) 结论 (18)

引言 计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求平方等简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。用。 在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。 本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算。 在日常工作中,有时会需要对数字进行进制的转换,但是笔算往往速度慢,而且有时会计算错误,所以编译一个简单的进制转换工具能使得计算变得简单。

计算器用法

计算器的用法 C 清除当前的计算。 CE 清除显示数字。 按钮功能 % 按百分比的形式显示乘积结果。输入一个数,单击“*”,输入第二个数,然后单击“%”。例如,50 * 25% 将显示为12.5。也可执行带百分数的运算。输入一个数,单击运算符(“+”、“-”、“*”或“/”),输入第二个数,单击“%”,然后单击“=”。例如,50 + 25%(指的是50 的25%)= 62.5。 ( 开始括号的新层。当前的层数显示在“)”按钮上方的框中。括号的最多层数为25。 ) 结束括号的当前层。 * 乘法。 + 加法。 +/- 改变显示数字的符号。 - 减法。 . 插入小数点。 / 除法。 0–9 将此数字置于计算器的显示区。 1/x 计算显示数字的倒数。 = 对上两个数字执行任意运算。若要重复上一次的运算,请再次单击“=”。 A–F 在数值中输入选中字母。只有在十六进制模式为开启状态时该按钮才可用。 And 计算按位AND。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先单击“Sta”,该按钮才可用。 Backspace 删除当前显示数字的最后一位。

站将显示数字转换为二进制数字系统。最大的无符号二进制数值是将64 位全都设置为1。 C 清除当前的计算。 CE 清除显示数字。 cos 计算显示数字的余弦。若要计算反余弦,请使用“Inv”+“cos”。若要计算双曲余弦,请使用“Hyp”+“cos”。若要计算反双曲余弦,请使用“Inv”+“Hyp”+“cos”。cos 只能用于十进制数字系统。 Dat 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。 十进制将显示数字转换为十进制数字系统。 度数在十进制模式下将三角函数输入设置为度数。 dms 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分-秒格式表示的),请使用“Inv”+“dms”。dms 只能用于十进制数字系统。 Exp 允许输入用科学计数法表示的数字。指数限制为四位数。指数中只能使用十进制数(键0-9)。Exp 只能用于十进制数字系统。 F-E 打开或关闭科学计数法。大于10^32 的数总是以指数形式表示。F-E 只能用于十进制数字系统。 梯度在十进制模式中,将三角函数输入设置为梯度。 十六进制将显示数字转换为十六进制数字系统。最大的无符号十六进制数值是将64 位全都设置为1。 Hyp 设置“sin”、“cos”和“tan”的双曲函数。完成一次计算后自动关闭双曲函数功能。Int 显示十进制数值的整数部分。若要显示十进制数值的小数部分,请使用“Inv”+“Int”。Inv 设置“sin”、“cos”、“tan”、“PI”、“x^y”、“x^2”、“x^3”、“ln”、“log”、“Ave”、“Sum”和“s”的反函数。完成一次计算后自动关闭反函数功能。 In 计算自然对数(以e 为底)。若要计算e 的x 次方(其中x 是当前数字),请使用“Inv”+“ln”。 日志计算常用对数(以10 为底)。若要计算10 的x 次方,请使用“Inv”+“log”。 Lsh 左移。若要右移,请使用“Inv”+“Lsh”。在单击该按钮后,必须指定(以二进制形式)要将显示区中的数字左移或右移多少位,然后单击“=”。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 M+ 将显示的数字与内存中已有的任何数字相加,但不显示这些数字的和。 MC 清除内存中的所有数字。 Mod 显示x/y 的模数或余数。此按钮为二进制运算符。例如,计算5 除以3 的模数,单击“5 MOD 3 =”,结果为2。 MR 重调用存内存中的数字。该数字保留在内存中。 MS 将显示数字保存在内存中。 n! 计算显示数字的阶乘。 Not 计算按位取反。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 八进制将显示的数字转换为八进制数字系统。最大的无符号八进制数值是将64 位全都设置为1。 OR 计算按位OR。逻辑运算符在执行任何按位运算时将截断数字的小数部分。 pi 显示pi 的值(3.1415...)。若要显示2 * pi (6.28...),请使用“Inv”+“pi”。“pi”只能用于十进制数字系统。 弧度在十进制模式下将三角函数输入设置为弧度。 s 计算总体参数为–1 的标准偏差。若要计算总体参数为n 的标准偏差,请使用“Inv”+

java编写的简单的计算器程序

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化 参考代码: import .*;

import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

8位二进制加法计算器

一:本实验设计的是一个8为二进制加法计算器,其功能就是对两个八位的二进制数执行加法运算,并可以异步清零。 二:电路可划分为三部分:半加器、全加器和复位电路。 1、半加器: 真值表 a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 电路图 2全加器:由半加器和或门组成 电路图 3复位电路: 复位电路通过en控制,当en为‘1’时,执行加法运算,输出正确的值,当en为‘0’时,输输出及结果为全0. 三:实验波形仿真和VHDL 1、仿真图:

2、VHDL代码 1)半加器h_adder: library ieee; use ieee.std_logic_1164.all; entity h_adder is port (a,b :in std_logic; co,so :out std_logic); end entity h_adder; architecture fh1 of h_adder is begin so <= not(a xor (not b));co <= a and b ; end architecture fh1; 2)或门or2a: library ieee; use ieee.std_logic_1164.all; entity or2a is port (a,b :in std_logic; c: out std_logic); end entity or2a; architecture one of or2a is begin c <= a or b ; end architecture one; 3)全加器f_adder: library ieee;

进制转换计算+ASCII表

一、二进制转化成其他进制 1. 二进制(BINARY)——>八进制(OCTAL) 例子1:将二进制数(10010)2转化成八进制数。 (10010)2=(010 010)2=(2 2)8=(22)8 例子2:将二进制数()2转化为八进制数。 ()2=(0. 101 010)2=(0. 5 2)8=()8 诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。 2. 二进制(BINARY)——>十进制(DECIMAL) 例子1:将二进制数(10010)2转化成十进制数。 (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10 例子2:将二进制数()2转化为十进制数。 ()2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+++++)10=()10 诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。

3. 二进制(BINARY)——>十六进制(HEX) 例子1:将二进制数(10010)2转化成十六进制数。 (10010)2=(0001 0010)2=(1 2)16=(12) 16 例子2:将二进制数()2转化为十六进制数。 ()2=(0. 1010 1000)2=(0. A 8)16=()16 诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。 (10010)2=(22)8=(18) 10=(12)16 ()2=()8=()10=()16 二、八进制转化成其他进制 1. 八进制(OCTAL)——>二进制(BINARY) 例子1:将八进制数(751)8转换成二进制数。 (751)8=(7 5 1)8=(111 101 001)2=(1)2 例子2:将八进制数()8转换成二进制数。 ()8=(0. 1 6)8=(0. 001 110)2=()2 诀窍:八进制转换成二进制与二进制转换成八进制相反。

java编写的加法计算器

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author asus */ import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator implements ActionListener { JFrame sb; String s1,s2; int T1,T2,T3; JTextField t1,t2,t3; JLabel jl1,jl2; public Calculator() { sb=new JFrame("加法计算器"); sb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); sb.setSize(260,100); Container a=sb.getContentPane(); a.setLayout(new FlowLayout()); t1=new JTextField(5); t2=new JTextField(5); t3=new JTextField(5); t1.setEditable(true); t2.setEditable(true); t3.setEditable(false); jl1=new JLabel("+"); jl2=new JLabel("="); JButton he=new JButton("求和"); he.addActionListener(this); a.add(t1); a.add(jl1); a.add(t2); a.add(jl2); a.add(t3); a.add(he);

用Windows计算器进行小数数制转换的方法

用Win7和Win8的计算器实现小数数制转换的方法 北京师范大学珠海分校林昌华 微软Windows XP、Win7和Win8操作系统附件中的计算器只能进行整数之间的数制转换,不能进行小数之间的数制转换。Win7和Win8的计算器更是将Windows XP计算器里的二进制、八进制和十六进制计算从科学型模式搬移到了程序员模式,十进制计算仍然保留在科学型模式里。这种变化给小数之间的数制转换带来了更多的麻烦。 作者在2012年推出了利用Windows XP的计算器进行小数数制之间转换的方法。在此基础上,作者又研究出利用Win7和Win8附件中的计算器进行十进制小数与二进制、八进制和十六进制小数转换的方法。希望对有需要的读者有所帮助。 对于二进制、八进制和十六进制小数相互之间的转换,可以先将它们转换成十进制小数,然后再将十进制小数转换成相应的非十进制小数。 1.十进制小数转换成非十进制的R进制小数的数学原理和方法 首先确定作为转换目标的非十进制的R进制数(z.x)R需要保留的小数位数i。于是可以写出数学转换公式:[(z.x)D· R i ] · R-i ≈Z D ·R-i =Z R ·R-i =(z.x)R 按照上述公式揭示的数学转换原理利用计算器进行转换操作的方法如下: a)利用计算器的科学型模式,将十进制数(z.x)D乘以R i 。如果积有小数,将小数部分四 舍五入到个位,得到一个十进制整数Z D。 b)利用计算器的程序员模式,将Z D转换成R进制整数Z R。 c)将R进制整数Z R的小数点(默认在个位右侧)向左移动i位,得到转换结果(z.x)R。 1.1 将十进制小数转换成二进制小数的方法 例1.1,转换(865.1277)D→(含12位小数)B方法如下。以下的1)、2)、3)在计算器的科学型模式下操作;4)、5)、6)在计算器的程序员模式下操作;7)手动点小数点。 1)如图1.1.1,点击“查看”→“科学型”→计算212×865.1277=3543563.0592。 2)如图1.1.2,将计算结果3543563.0592减去小数0.0592。 3)如图1.1.3,点击“=”,仅保留整数3543563。鼠标右键点击计算器显示框→“复 制”。准备将十进制整数3543563粘贴到程序员模式。 4)如图1.1.4,点击“查看”→“程序员”。 5)如图1.1.5,点击“十进制”→右键点击计算器显示框→“粘贴”。将3543563粘 贴到程序员模式显示框。 6)如图 1.1.6,点击“二进制”,得到3543563转换成的二进制整数 (1101100001001000001011)B。 7)将小数点向左移动12位,即将其乘以2-12,得到最终转换结果为 (1101100001.001000001011)B。 图1.1.2 减去小数0.059

进制转换计算

二进制、八进制、十进制与十六进制 一、进制的概念 在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。 基数:基数是指一种进制中组成的基本数字,也就是不能再进行拆分的数字。二进制是0和1;八进制是0-7;十进制是0-9;十六进制是0-9+A-F(大小写均可)。也可以这样简单记忆,假设是n进制的话,基数就是【0,n-1】的数字,基数的个数和进制值相同,二进制有两个基数,十进制有十个基数,依次类推。 运算规则:运算规则就是进位或错位规则。例如对于二进制来说,该规则是“满二进一,借一当二”;对于十进制来说,该规则是“满十进一,借一当十”。其他进制也是这样。 三、二进制转化成其他进制 1. 二进制(Binary)——>八进制(Octal) 例子:将二进制数(10010)2转化成八进制数。(10010)2=(010 010)2=(2 2)8=(22)8 将二进制数(0.1010)2转化为八进制数。(0.10101)2=(0. 101 010)2=(0. 5 2)8=(0.52)8 诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。 2. 二进制(Binary)——>十进制(Decimal) 例子:将二进制数(10010)2转化成十进制数。 (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10将二进制数(0.10101)2转化为十进制数。 (0.10101)2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+0.5+0.25+0.125+0.0625+0.03125)10=(0.96875)10 诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。 3. 二进制(Binary)——>十六进制(Hex) 例子:将二进制数(10010)2转化成十六进制数。(10010)2=(0001 0010)2=(1 2)16=(12) 16将二进制数(0.1010)2转化为十六进制数。 (0.10101)2=(0. 1010 1000)2=(0. A 8)16=(0.A8)16 诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。 四、八进制转化成其他进制 1. 八进制(Octal)——>二进制(Binary) 例子1:将八进制数(751)8转换成二进制数。 (751)8=(7 5 1)8=(111 101 001)2=(111101001)2 例子2:将八进制数(0.16)8转换成二进制数。 (0.16)8=(0. 1 6)8=(0. 001 110)2=(0.00111)2 诀窍:八进制转换成二进制与二进制转换成八进制相反。 2. 八进制(Octal)——>十进制(Decimal) 例子1:将八进制数(751)8转换成十进制数。 (751)8=(7x82+5x81+1x80)10=(448+40+1)10=(489)10 例子2:将八进制数(0.16)8转换成十进制数。

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

简易计算器Java实训报告

实训名称: Java程序设计实训 系(部):信息工程系 专业班级:计算机科学与技术学生姓名: 学号: 指导教师:张民 完成日期:

山东科技大学泰山科技学院

目录 1 实训目的 (2) 2 简易计算机的分析与设计 (2) 系统功能描述 (2) 系统模块设计 (2) 数据库结构设计 (3) 3 主要代码清单 (4)

4 程序运行与测试 (8) 5 实训总结 (10)

简易计算机的设计与实现 1 实训目的 通过本课程设计能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 2 简易计算机的分析与设计 系统功能描述 1)可进行“+”、“-”、“*”、“/”以及混合运算。 2)支持()改变运算的优先级 3)可进行二、十六和十进制数的相互转换 4)支持复制和粘贴操作

单片机 十进制计算器

姓名学号 时间 2015.05.14 地点 B526 实验题目简易十进制计算器 一、实验目的 1. 掌握单片机编程和调试方法。 2. 掌握键盘、LED显示接口工作原理及编程方法。 二、实验内容 利用MCS-51单片机,设计一个简易十进制计算器,完成一位十进制有符号数的加、减、乘、除运算。 16个按键的安排:10个数字键(0-9),用于输入运算的数字;5个功能键:+、-、×、÷、=、清零(符号选择)。 本实验要求显示:输入的十进制数字及符号,正数不显示符号,负数在数的前面显示“-”;运算符显示(显示字形自定);运算结果显示,包括数字和符号。 三、实验电路连线 P0 P1 P2.0-P2.3

四、实验说明 本实验采用动态显示电路,即6个数码管分时循环工作,刷新频率≥25Hz 。键盘采用矩阵式电路,L1-L4作为输出,H1-H4作为输入。(详细工作原理请参考教材第10章)。 要求所有的程序预先在WA VE 仿真调试通过,达到设计要求后下载程序到单片机芯片在实验板上实际运行。 程序的下载由实验室提供编程器统一烧写,单片机芯片由实验室提供,调试完成后交回。 五、实验仪器和设备 PC 机、WA VE 软件、仿真器、实验板、编程器、电源等。 六、程序流程图及程序 P2.4-P2.7

YJ EQU 50H ;结果存放 YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放 ORG 00H START: MOV R3,#0 ;初始化显示为空MOV GONG,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MLOOP: CALL DISP ;调显示子程序WAIT: CALL TESTKEY ;判断有无按键JZ WAIT CALL GETKEY ;读键 INC R3 ;按键个数 CJNE A,#0,NEXT1 ;判断是否数字键 LJMP E1 ;转数字键处理NEXT1: CJNE A,#1,NEXT2

java编写简单计算器源代码

import javax.swing.*; import java.awt.event.*; import java.awt.*; import https://www.360docs.net/doc/f43943253.html,ng.Math; class ring extends JFrame implements ActionListener { //定义成员变量: //JFrame frame;//定义一个窗口类; JTextField text;//定义一个文本框类; JLabel label;//定义一个标签类; JPanel p1,p2,p3,p4,p5,p6;//定义面板类; String s1,s,s2;//定义三个字符串变量; int count=0; JButton a1,a2,a3,a4,a5,a6,b1,b2,b3,b4,b5,b6,c1,c2,c3,c4,c5,c6,d1,d2,d3,d4 ,d5,d6; //ring的构造函数; ring() { this.setTitle("计算器"); // super("计算器"); JMenuBar menubar1=new JMenuBar();//新建菜单条; this.setJMenuBar(menubar1); JMenu menu1=new JMenu("编辑(E)"); JMenu menu2=new JMenu("查看(V)"); JMenu menu3=new JMenu("帮助(H)"); menubar1.add(menu1); menubar1.add(menu2); menubar1.add(menu3); JMenuItem item1=new JMenuItem("复制(c) ctrl+c"); JMenuItem item2=new JMenuItem("粘贴(p) ctrl+v"); JMenuItem item3=new JMenuItem("标准型(T)"); JMenuItem item4=new JMenuItem("科学型(s)"); JMenuItem item5=new JMenuItem("数字分组(I)"); JMenuItem item6=new JMenuItem("帮助主题(H)"); JMenuItem item7=new JMenuItem("关于计算机(A)"); menu1.add(item1); menu1.add(item2); menu2.add(item3); menu2.add(item4); menu2.add(item5); menu3.add(item6);

电脑计算器解释

INV是什么意思 设置“sin”、“cos”、“tan”、“PI”、“x^y”、“x^2”、“x^3”、“ln”、“log”、“Ave”、“Sum”和“s”的反函数。完成一次计算后自动关闭反函数功能。 HYP是什么意思 设置“sin”、“cos”和“tan”的双曲函数。完成一次计算后自动关闭双曲函数功能。 STA是什么意思 计算显示数字的正切。若要计算反正切,请使用“Inv”+“tan”。若要计算双曲正切,请使用“Hyp”+“tan”。若要计算反双曲正切,请使用“Inv”+“Hyp”+“tan”。“tan”只能用于十进制数字系统。 A VE是什么意思 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只有先单击“Sta”,该按钮才可用。 SUM是什么意思 计算“统计框”对话框中显示数值的总和。若要计算平方和,请使用“Inv”+“Sum”。只有先单击“Sta”,该按钮才可用。 DAT是什么意思。 在“统计框”对话框内输入显示的数字。只有先单击“Sta”,该按钮才可用。十进制将显示数字转换为十进制数字系统。度数在十进制模式下将三角函数输入设置为度数。 DMS是什么意思。 将显示数字转换为度-分-秒格式(假设显示数字是用度数表示的)。若要将显示数字转换为用度数表示的格式(假设显示数字是用度-分-秒格式表示的),请使用“Inv”+“dms”。dms 只能用于十进制数字系统。 F-E是什么意思。 打开或关闭科学计数法。大于10^32 的数总是以指数形式表示。F-E 只能用于十进制数字系统表描述了计算器的功能: 按钮功能% 按百分比的形式显示乘积结果。输入一个数,单击“*”,输入第二个数,然后单击“%”。例如,50 * 25% 将显示为12.5。也可执行带百分数的运算。输入一个数,单击运算符(“+”、“-”、“*”或“/”),输入第二个数,单击“%”,然后单击“=”。例如,50 + 25%(指的是50 的25%)= 62.5。 ( 开始括号的新层。当前的层数显示在“)”按钮上方的框中。括号的最多层数为25。) 结束括号的当前层。* 乘法。+ 加法。+/- 改变显示数字的符号。- 减法。. 插入小数点。/ 除法。0–9 将此数字置于计算器的显示区。1/x 计算显示数字的倒数。= 对上两个数字执行任意运算。若要重复上一次的运算,请再次单击“=”。A–F 在数值中输入选中字母。只有在十六进制模式为开启状态时该按钮才可用。 And 计算按位AND。逻辑运算符在执行任何按位运算时将截断数字的小数部分。Ave 计算“统计框”对话框中显示数值的平均值。若要计算平均方值,请使用“Inv”+“Ave”。只

进制转换计算器

一.功能概述 本应用是讲从数字键盘输入的某进制的数据按要求转换成其他进制的数据,以实现进制转换。本例程是基于对话框的工程,用一个对话框作为应用程序的主窗口,同时实例通过各种控件实现进制转换功能。其中,控件主要包括以下类型:编辑框,命令按钮、静态文本、群组框、单选按钮、复选框。 其中主要控件功能为: ·“输入数据”和“转换数据”编辑框,分别用于显示输入的数矩和转换的结果。 ·“转换为八进制”、“转换为十六进制”、“转换为十进制”三个命令按钮。用于将输入的数据转换为其他的进制。“重新开始” 按钮用于将输入的数据和转换的数据清空。 ·“八进制”、“十进制”、“十六进制”单选按钮对应输入数据的进制。同时为防止输入某进制下无效的按钮,对进制无效的按钮 施予静止。本实例中默认输入为十进制。 ·0-9按钮和A-F按钮做为数字键盘 ·“输入数据加进制符号”和“转换数据加进制符号” ·“数据格式显示选择”群组框中两个复选框作为一组。

应用程序实例界面 二.实现步骤 步骤一 选择file | new 命令,打开new对话框,选择project选项卡,设置工程名为Calculator,然后单击OK按钮。如下图所示:

步骤二 打开下图所示对话框,选择基本对话框,其余设置均采用默认操作,单击“完成”按钮完成整个工程的创建,如下图:

步骤三 在应用程序的主窗口的对话框资源中添加控件,并为对话框中的各个控件添加成员变量和消息响应函数。 添加成员变量和消息响应函数

步骤四 通过上述步骤完成各个控件的添加和控制,下面将对对话框进和控件进行编程,以实现目标功能 ①数字键按钮初始状态的设定。由于默认的进制为十进制,所以0~9折十个数字的默认状态是enable。因为系统的所有命令按钮的默认状态是enable,所以需要在初始化的时候将A~F的状态设置为disable。选择class view 选项卡,双击CCalculatorDig 下面的OnInitDialog()并在return钱添加如下代码: m_button_A.EnableWindow(FALSE); m_button_B.EnableWindow(FALSE); m_button_C.EnableWindow(FALSE); m_button_D.EnableWindow(FALSE); m_button_E.EnableWindow(FALSE); m_button_F.EnableWindow(FALSE); ②在程序运行过程中,数字键按钮的状态需要根据对三个单选按钮的选择而定。它们的事件函数代码分别如下: void CCalculatorDig::OnRADIOo() { char_radio='O'; value=0; m_button_8.EnableWindow(FALSE); m_button_9.EnableWindow(FALSE); m_button_A.EnableWindow(FALSE); m_button_B.EnableWindow(FALSE); m_button_C.EnableWindow(FALSE); m_button_D.EnableWindow(FALSE); m_button_E.EnableWindow(FALSE); m_button_F.EnableWindow(FALSE); } void CCalculatorDig::OnRADIOd() { char_radio='D'; value=0; m_button_8.EnableWindow(TRUE); m_button_9.EnableWindow(TRUE); m_button_A.EnableWindow(FALSE); m_button_B.EnableWindow(FALSE);

相关文档
最新文档