基于JavaJDK的简易计算器(含源文件)

基于JavaJDK的简易计算器(含源文件)
基于JavaJDK的简易计算器(含源文件)

Java课程设计

设计题目基于JavaJDK的计算器设计时间2017

学生姓名冯明宇

学生学号140404211

所在班级1402班

指导教师申静

摘要

计算器在我们的生活中常常会使用到,本次课程设计,利用课堂所学到的知识,通过界面以及其中的逻辑处理,完成了基本的四则运算的处理。通过awt 包或者swing包中的界面设计,实现了通过界面来显示输入过程和运算结果,同时也使设计出来的计算器符合人性化的基本要求。面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。

关键词java;计算器;四则运算;面向对象;

目录

一.课设题目及要求 (1)

1.1课设题目描述 (1)

1.2基本要求 (1)

二.功能描述及设计方案 (1)

2.1计算器功能描述 (1)

2.2设计思想及方案 (1)

三.程序说明 (3)

3.1界面设计 (3)

3.1.1UI组件创建与初始化 (3)

3.1.2在窗体中添加UI组件 (4)

3.2添加事件响应逻辑 (6)

3.3计算逻辑实现 (7)

四.运行效果及存在的不足 (9)

4.1运行效果 (10)

4.2存在的不足 (10)

五.结果分析及心得体会 (11)

六.参考文献 (12)

七.源程序附录 (12)

一.课设题目及要求

1.1课设题目描述

在JavaJDK 平台上设计并实现一个基于窗口界面的计算器

1.2基本要求

该计算器可以运算两个两位数的加减乘除运算,可以通过点击窗口的按键来实现所有操作(包括输入数字和运算符号以及作为计算等等),输入过程及运算结果都要与按键所在同一窗口中呈现

二.功能描述及设计方案

2.1计算器功能描述

本次课程设计的计算器具有能够进行加、减、乘、除四则基本运算的基本功能,并且通过自己的努力为此计算器添加了两个附加的功能:清零和异常处理机制,即除数为0以及只单击运算符运算的算法错误,并且能很好的实现其功能。

2.2设计思想及方案

2.2.1设计思想概述

要制作一个计算器,首先需要知道它由哪些部分组成。

结构上来说,一个简单的图形界面,需要由界面组件、组件的事件监听器(响应各类事件的逻辑)和具体的事件处理逻辑组成。

2.2.2设计方案结构图 基本运算功能方案图

界 面

界面组件事件响应逻 辑

数值计算逻 辑

响应按钮等到的 点击事件

调用具体算 法计算

更新文本框等组

件显示的值

传递计算

结果

异常处理机制功能方案图

设计好实现方案后,接下来,我们首先需要制作界面部分。这部分主要的工作就是创建各个界面组件对象,对其进行初始化,以及控制各组件之间的层次关系和布局大小

三.程序说明

3.1界面设计与实现

3.1.1 UI 组件创建和初始化

(1)、面板

JPanel txtpanel:用于放置文本框

Panel btnpanel:用于放置按钮(0-9和+,-,*,/,=)

(2)、显示部分

a.第一个面板:txtpanel

位置以及排列方式BorderLayout.NORTH

txtpanel.add(txtinput):添加文本框到txtpanel面板中

b.第二个面板:btnpanel

排列方式:setLayout(gl)

(3)、基本按钮

btnpanel.add(b7) btnpanel.add(b8) btnpanel.add(b9);

btnpanel.add(multiply) btnpanel.add(b4) btnpanel.add(b5);

btnpanel.add(b6) btnpanel.add(divide) btnpanel.add(b1);

btnpanel.add(b2) btnpanel.add(b3) btnpanel.add(add);

btnpanel.add(b0) .add(bdes) btnpanel.add(equal);

btnpanel.add(subtract)

以上是在第二个面板btnpanelH中添加的0到9和+,-,*,/,=的按钮。

首先我们需要将界面中要用到的 UI 组件作为 Calculator 类的成员变量在一开始声明。主要代码如下:

// 继承一个 JFrame 对象。JFrame 可以理解为程序的主窗体。

public class Calculator extends JFrame implements ActionListener

{

//txtpanel用于放置文本框,btnpanel用于放置按钮

JPanel txtpanel,btnpanel;

//创建文本框,用于显示内容

JTextField txtinput;

.

.

.

//声明各个UI组件对象并初始化

public Calculator()

{

super("基于JavaJDK的计算器");

txtpanel=new JPanel();

btnpanel=new JPanel();

// 参数 25 表明可以显示 25 列的文本内容

txtinput=new JTextField(25);

// 设置文本框不能编辑

txtinput.setEditable(false);

// 设置文本框为右对齐,使输入和结果都靠右显示

txtinput.setHorizontalAlignment(JTextField.RIGHT); txtinput.setText("");

// 数字键0到9

b1=new JButton("1");

b2=new JButton("2");

b3=new JButton("3");

b4=new JButton("4");

b5=new JButton("5");

b6=new JButton("6");

b7=new JButton("7");

b8=new JButton("8");

b9=new JButton("9");

b0=new JButton("0");

// 计算命令按钮,加减乘除以及小数点,清除等

bdes=new JButton(".");

add=new JButton("+");

subtract=new JButton("-");

multiply=new JButton("*");

divide=new JButton("/");

clear=new JButton("清零");

equal=new JButton("=");

什么是JPanel:JPanel 是一般轻量级容器。如上图所示,你可以将其理解为一个盛放其他UI 组件的“篮子”。JPanel 位于javax.swing包中,为面板容器,可以加入到JFrame 中,它自身是个容器,也可以把其他component (组件)加入到JPanel 中,例如JButton、JTextArea、JTextField 等。

在这个项目中,两个JPanel 分别对应这个计算器按键除“清零” 键外其他的键,另个面板则是文本框跟“清零” 键。

主要代码如下:

// 创建Jpanel 的两个对象并初始化

//txtpanel用于放置文本框,btnpanel用于放置按钮

JPanel txtpanel,btnpanel;

.

.

.

//将UI组件添加进容器内

getContentPane().add(txtpanel,BorderLayout.NORTH);

txtpanel.add(txtinput);

txtpanel.add(clear);

// 设置该容器的布局为四行四列,边距为5像素

gl=new GridLayout(4,4,5,5);

btnpanel.setLayout(gl);

getContentPane().add(btnpanel);

// 将用于计算的按钮添加到容器内

btnpanel.add(b7);

btnpanel.add(b8);

btnpanel.add(b9);

btnpanel.add(multiply);

btnpanel.add(b4);

btnpanel.add(b5);

btnpanel.add(b6);

btnpanel.add(divide);

btnpanel.add(b1);

btnpanel.add(b2);

btnpanel.add(b3);

btnpanel.add(add);

btnpanel.add(b0);

btnpanel.add(bdes);

btnpanel.add(equal);

btnpanel.add(subtract);

// 设置主窗口大小

setSize(400,250);

setVisible(true);

// 设置主窗口出现在屏幕上的位置

setLocation(300,200);

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

布局结束后,就是计算器的难点:事件处理程序

3.2、添加事件响应逻辑

对于计算器而言,涉及到的事件响应逻辑主要有:数字键、加减乘除运算、等于以及清除主要代码如下:

//绑定事件响应逻辑到各个UI组件上

public void btnCancelActionPerformed()

{ txtinput.setText("");}

public void actionPerformed(ActionEvent e)

{ try{

Object obj=e.getSource();

if(obj==b1)

txtinput.setText(txtinput.getText()+"1"); else if(obj==b2)

txtinput.setText(txtinput.getText()+"2"); else if(obj==b3)

txtinput.setText(txtinput.getText()+"3"); else if(obj==b4)

txtinput.setText(txtinput.getText()+"4"); else if(obj==b5)

txtinput.setText(txtinput.getText()+"5"); else if(obj==b6)

txtinput.setText(txtinput.getText()+"6"); else if(obj==b7)

txtinput.setText(txtinput.getText()+"7"); else if(obj==b8)

txtinput.setText(txtinput.getText()+"8"); else if(obj==b9)

txtinput.setText(txtinput.getText()+"9"); else if(obj==b0)

txtinput.setText(txtinput.getText()+"0"); else if(obj==bdes)

txtinput.setText(txtinput.getText()+"."); else if(obj==add)

{ d1=Double.parseDouble(txtinput.getText()); s="+";

txtinput.setText("");

}

else if(obj==subtract)

{ d1=Double.parseDouble(txtinput.getText()); s="-";

txtinput.setText("");

}

else if(obj==divide)

{ d1=Double.parseDouble(txtinput.getText()); s="/";

txtinput.setText("");

}

else if(obj==multiply)

{ d1=Double.parseDouble(txtinput.getText()); s="*";

txtinput.setText("");

}

计算的逻辑要针对输入的不同运算符来对操作数进行运算,同时还要考虑到除数为0这种不合理的以及只单击运算符运算的算法错误,。

主要代码如下:

double d1;//操作数1

double d2;// 操作数2

String s;// 运算符

.

.

.

//计算逻辑

else if(obj==equal)

{ if(s=="+")

{ d2=d1+Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2));

}

else if(s=="-")

{ d2=d1-Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2));

}

else if(txtinput.equals(txtinput.getText())&&obj==subtract)

{ d2=d1-Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2)); }

else if(s=="/")

{ if(Double.parseDouble(txtinput.getText())==0)

// 除数为零:当除数为零时,弹出“除数不能为零”窗体

JOptionPane.showMessageDialog(this, "除数不能为0");

d2=d1/Double.parseDouble(txtinput.getText());

txtinput.setText(Double.toString(d2));

}

else if(s=="*")

{ d2=d1*Double.parseDouble(txtinput.getText());

txtinput.setText(Double.toString(d2));

}

}

}

catch(Exception ouch)

//错误输入:当只单击运算符时,弹出“错误输入”窗体

{ JOptionPane.showMessageDialog(null,"错误输入","error", JOptionPane.ERROR_MESSAGE); }

}

四.效果及存在的问题

4.1运行效果

(1)加法运算功能:

例如12+14=

先输入12,在按+,在输入14在按=,结果如下图

(2)减法运算功能:

例如26-14=

先输入26,在按-,在输入14,在按=,结果如下图

(3)乘法运算功能:

例如25*15=

先输入25,在按*,在输入15,在按=,结果如下图

(4)除法运算功能:

例如125\5=

先输入125,在按\,在输入5,在按=,结果如下图(5)“清零按钮”数据清除功能

清除前

清除后

(6). 异常处理机制

当除数为0时

当只单击运算符号运算时

4.2本计算器存在的不足

在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。由于目前知识方面的匮乏,本次课程设计的计算器没能够顺利实现开方运算、正余弦正切运算、阶乘运算,进制转换等高级,

更复杂的数据计算功能,希望在以后的时间里丰富这方面的知识,以便更好的运用。

五.结果分析及心得体会

在这次课程设计中,我利用课堂所学的知识和通过查阅课外资料,顺利的实现了计算器的各个功能,并对其进行按键的排版、监听、处理、运算等各个步骤的亲力亲为,基本上完成了任务书上的各项内容。

虽然在这次的课程设计的过程和结果中,也存在一些的不足,但通过分析和解决,我也收获了很多。其次,在本次的课程设计中,通过与同学们的交流,解决了不少长久以来困扰我的java语言问题,让我深切体会到了大家共同努力的重要性。在设计这个系统的时候,我查阅了很多相关的书籍,并通过网络解决了不少问题。通过这次课程设计,我对eclipse的开发环境和使用也有了更多的认识和了解,让我对java语言的认识又加深了一步,不仅使我学会了如何查阅资料,同时也让我发现了网络这个好老师,总之收获了很多。

六.参考文献

[1]雍俊海《Java程序设计教程》(第三版)清华大学出版社

[2](美)埃克尔著,陈昊鹏译《Java编程思想》(第4版).机械工业出版社

[3]李兴华《Java从入门到精通》人民邮电出版社2010-4-1版

[4]温沿书《Java入门与实战教程》人民邮电出版社2010-03-01版

[5]李钟尉《Java范例完全自学手册》人民邮电出版社2009-10-1

七.源程序附录

package com.demo1;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Calculator extends JFrame implements ActionListener

{

JPanel txtpanel,btnpanel;//txtpanel用于放置文本框,btnpanel用于放置按钮JTextField txtinput;

JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,multiply,divide,add, subtract,clear,equal;

GridLayout gl;

double d1;//操作数1

double d2;// 操作数2

String s;// 运算符

//声明各个UI组件对象并初始化

public Calculator()

{

super("基于JavaJDK的计算器");

txtpanel=new JPanel();

btnpanel=new JPanel();

txtinput=new JTextField(25);

txtinput.setEditable(false);// 设置文本框不能编辑

txtinput.setHorizontalAlignment(JTextField.RIGHT); // 设置文本框为右对齐,使输入和结果都靠右显示

txtinput.setText("");

b1=new JButton("1");

b2=new JButton("2");

b3=new JButton("3");

b4=new JButton("4");

b5=new JButton("5");

b6=new JButton("6");

b7=new JButton("7");

b8=new JButton("8");

b9=new JButton("9");

b0=new JButton("0");

bdes=new JButton(".");

add=new JButton("+");

subtract=new JButton("-");

multiply=new JButton("*");

divide=new JButton("/");

clear=new JButton("清零");

equal=new JButton("=");

//清除键的逻辑(Clear)

clear.addActionListener(new ActionListener()//注册监听

{ public void actionPerformed(ActionEvent argh)

{ btnCancelActionPerformed();}

});

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

b0.addActionListener(this);

bdes.addActionListener(this);

multiply.addActionListener(this);

divide.addActionListener(this);

add.addActionListener(this);

subtract.addActionListener(this);

equal.addActionListener(this);

//将UI组件添加进容器内

getContentPane().add(txtpanel,BorderLayout.NORTH); txtpanel.add(txtinput);

txtpanel.add(clear);

gl=new GridLayout(4,4,5,5);

btnpanel.setLayout(gl);

getContentPane().add(btnpanel);

btnpanel.add(b7);

btnpanel.add(b8);

btnpanel.add(b9);

btnpanel.add(multiply);

btnpanel.add(b4);

btnpanel.add(b5);

btnpanel.add(b6);

btnpanel.add(divide);

btnpanel.add(b1);

btnpanel.add(b2);

btnpanel.add(b3);

btnpanel.add(add);

btnpanel.add(b0);

btnpanel.add(bdes);

btnpanel.add(equal);

btnpanel.add(subtract);

setSize(400,250);

setVisible(true);

setLocation(300,200);// 设置主窗口出现在屏幕上的位置setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

//注册各个监听器,即绑定事件响应逻辑到各个UI组件上

public void btnCancelActionPerformed()

{ txtinput.setText("");}

public void actionPerformed(ActionEvent e) { try{

Object obj=e.getSource();

if(obj==b1)

txtinput.setText(txtinput.getText()+"1"); else if(obj==b2)

txtinput.setText(txtinput.getText()+"2"); else if(obj==b3)

txtinput.setText(txtinput.getText()+"3"); else if(obj==b4)

txtinput.setText(txtinput.getText()+"4"); else if(obj==b5)

txtinput.setText(txtinput.getText()+"5"); else if(obj==b6)

txtinput.setText(txtinput.getText()+"6"); else if(obj==b7)

txtinput.setText(txtinput.getText()+"7"); else if(obj==b8)

txtinput.setText(txtinput.getText()+"8"); else if(obj==b9)

txtinput.setText(txtinput.getText()+"9"); else if(obj==b0)

txtinput.setText(txtinput.getText()+"0"); else if(obj==bdes)

txtinput.setText(txtinput.getText()+"."); else if(obj==add)

{ d1=Double.parseDouble(txtinput.getText()); s="+";

txtinput.setText("");

}

else if(obj==subtract)

{ d1=Double.parseDouble(txtinput.getText()); s="-";

txtinput.setText("");

}

else if(obj==divide)

{ d1=Double.parseDouble(txtinput.getText()); s="/";

txtinput.setText("");

}

else if(obj==multiply)

{ d1=Double.parseDouble(txtinput.getText()); s="*";

txtinput.setText("");

}

//计算逻辑

else if(obj==equal)

{ if(s=="+")

{ d2=d1+Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2));

}

else if(s=="-")

{ d2=d1-Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2));

}

else if(txtinput.equals(txtinput.getText())&&obj==subtract) { d2=d1-Double.parseDouble(txtinput.getText());

//显示结果

txtinput.setText(Double.toString(d2)); }

else if(s=="/")

{ if(Double.parseDouble(txtinput.getText())==0)

// 除数为零:当除数为零时,弹出“除数不能为零”窗体

JOptionPane.showMessageDialog(this, "除数不能为0");

d2=d1/Double.parseDouble(txtinput.getText());

txtinput.setText(Double.toString(d2));

}

else if(s=="*")

{ d2=d1*Double.parseDouble(txtinput.getText());

txtinput.setText(Double.toString(d2));

}

}

}

catch(Exception ouch)

//错误输入:当只单击运算符时,弹出“错误输入”窗体

{ JOptionPane.showMessageDialog(null,"错误输入","error", JOptionPane.ERROR_MESSAGE); }

}

//设置程序显示的界面风格

public static void main(String args[])

{ try {

UIManager.setLookAndFeel

("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");} catch(Exception e){}

new Calculator();

}

}

编写一个计算器程序课程设计报告-范例

学号 《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX 系 2017年月 3 日 目录 一.总体概述: 二.设计目标: 三.程序流程图: 四.程序代码: 评分细则 评分项优秀良好中等差 上课出勤 上课表现 上机情况 平时作业完成情况 期末大作业: (1)书写认真程度 题目:用Python编写简易计算器程序 学号: 专业: 班级: 姓名: 指导教师: 2016-2017学年第二学期

(2)内容详实程度(3)文字表达能力(4)是否体现观点 简短教师签名: 年月日 评 分 等 级 备 注 评分等级有五种:优秀、良好、中等、及格、不及格

一、设计内容 ------------------------------------------------------------------------------------------------- - 1 - 1. 课程设计目的:-------------------------------------------------------------------------------------- - 1 - 2.课程设计任务: --------------------------------------------------------------------------------- - 1 - 3.创新要求:---------------------------------------------------------------------------------------------- - 2 - 4.设计要求: ------------------------------------------------------------------------------------------------ - 2 - 二、原理和分析 ---------------------------------------------------------------------------------------------- - 2 - 1.开发的技术及功能 ----------------------------------------------------------------------------------- - 2 - 2.设计思路------------------------------------------------------------------------------------------------ - 2 - 3.设计效果图--------------------------------------------------------------------------------------------- - 2 - 三、设计过程 ------------------------------------------------------------------------------------------------- - 3 - 1. 程序思路: -------------------------------------------------------------------------------------------- - 3 - 2.功能实现:---------------------------------------------------------------------------------------------- - 4 - 1)加减乘除求余以及指数运算----------------------------------------------------------------- - 4 - 2)其他运算 ------------------------------------------------------------------------------------------ - 4 - 3)主要方法说明------------------------------------------------------------------------------------ - 5 - 4)程序流程图 --------------------------------------------------------------------------------------- - 5 - 3.算法思路:---------------------------------------------------------------------------------------------- - 6 - 4.数据分析:---------------------------------------------------------------------------------------------- - 7 - 四、设计结果和分析------------------------------------------------------------------------------------------ - 7 - ⒈运行调试------------------------------------------------------------------------------------------------ - 7 - 1)进行加减乘除求余以及指数运算----------------------------------------------------------- - 7 - 2)求倒 ------------------------------------------------------------------------------------------------ - 9 - 3)退格 ------------------------------------------------------------------------------------------------ - 9 - 4)清零 ---------------------------------------------------------------------------------------------- - 10 - 5)求余弦、求正切、对e求幂、求平方根、求自然对数、求倒运算 ------------- - 11 - 6)连续运算(例:2*3*4=24.0)------------------------------------------------------------- - 11 - 7)异常处理(例:求倒时输入数为0) --------------------------------------------------- - 11 - 五、设计体会和小结 -------------------------------------------------------------------------------------- - 12 - 六、参考文献 ----------------------------------------------------------------------------------------------- - 13 - 七、源程序--------------------------------------------------------------------------------------------------- - 13 - 一、设计内容 1.课程设计目的: 1)掌握Java语言的程序设计方法; 2)理论联系实际,进一步提高学生的软件开发技术; 3)培养学生分析、解决问题的能力; 4)提高学生实践论文撰写能力。 2.课程设计任务:

2017电子计算器的使用

电子计算器的使用 一、关于教材的分析 1、本节教材的特点及优势 由于电子计算器是一种小型电子计算工具,由于它体积小、重量轻、操作简便、运算迅速准确,已取代计算尺和数学用表,更是代替了手工计算,给人们带来很大的方便,成为一种很受人们欢迎的计算工具。所以学好“电子计算器的使用”这一节课,能给学生日常生活和日后的学习工作中带来许多便利之处,提高了他们的工作效率,从面可知学好本节刘意义之远大。 二、学情分析 学生对计算器的按键及功能其实早就有所了解,但程度参差不齐,且有的同学的原有理解是错误的,对于按键顺序的掌握也有所欠缺,所了解的知识不系统,不全面。 三、教学目标的确定 签于电子计算器在日常生活中所处地位和作用,我认为通过本节课的教学,应达到以下目的: (1)使学生了解计算器表面各部件的功能。 (2)了解电子计算器工作的基本过程,形成初步的程序意识。 (3)使学生学会用计算器进行有理数的四则运算,会求一个有理数的平方、立方。 (4)提高学生独立操作能力,使学生装体会到数学有它广泛的应用价值。 (5)培养学生运用数学意识以及运用知识解决实际问题的能力。 四、教学重点的确定 我认为本节重点是了解计算器工作的基本过程,并学会用电子计算器计算加、减、乘、除、平方和立方,这是因为使学生了解电子计算器工作的基本过程后,形成初步的程序意识,这对今后进一步学习电子计算器有重要意义。 五、教学难点的确定 我认为本节难点是例7求百分比和含有百分数的乘除运算,这是因为求两数的百分比时,在计算器显示的结果后面要加上百分号,而示一个数与百分数相乘除时,按类似程序操作,便得所求结果,其后不用加上百分号,而学生对于这一点比较容易混淆。 六、关于教学内容的设计思想 经过认真钻研大纲和教材,我选择了下列教学内容: (1)说明电子计算器工作的基本过程。 (2)介绍简易电子计算器的构造和表面各部件的功能。 (3)讲解利用计算器进行简单加、减、乘、除、乘方计算的操作方法,其中包括例1、例2 (9) (4)例题后的练习和课后练习,包括想一想。 由于这节课的特殊性,如果教师只在黑板上做文章,这堂课就变得枯燥乏味,缺少创意,不能很好激发学生的学习积极性,也无法集中学生注意力,所以在此我利用学校的电化教室中的电脑来进行教学。 利用多媒体教学,这正符合了美国心理学家和教育学家斯金纳所创的程序教学法。这样充分调动了学生积极性,集中学生注意力,有利于培养学生的动脑动手能力,有利于因材施教。 七、教学方法和教学手段 遵照以教师为主导,学生为主体,以训练为主线的教学原则。本节课采用启发式、讨论式、程序教学法、练习法、口诀法进行教学,并利用电脑、电视等电化教学手段提高课堂

AT89C51单片机简易计算器的设计

AT89C51单片机简易计算器的设计 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。显示采用字符LCD静态显示。软件方面使用C语言编程,并用PROTUES仿真。 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数

值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图: 二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

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);

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

JAVA课程设计 小型计算器 学生姓名: 指导教师:李明江 系别:计算机科学系 专业:计算机科学与技术 年级: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布局管理方

基于LabVIEW的简易计算器设计

第1章绪论 1.1 虚拟仪器简介 虚拟仪器(virtual instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。上面的框图反映了常见的虚拟仪器方案。 虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是国NI公司的LabVIEW。 虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在 Microsof t公司的 Windows 诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0 以前的版本。对虚拟仪器和 LabVIEW [2]长期、系统、有效的研究开发使得该公司成为业界公认的权威。目前LabVIEW 的最新版本为 LabVIEW2011,LabVIEW 2009 为多线程功能添加了更多特性,这种特性在1998 年的版本 5 中被初次引入。使用 LabVIEW 软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、LabVIEW Real-Time 工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。 普通的 PC 有一些不可避免的弱点。用它构建的虚拟仪器或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定VXI 标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的 VXI 机箱,再与计算机相连,就组成了一个测试系统。VXI仪器价格昂贵,目前又推出了一种较为便宜PXI 标准仪器。 1.2 LabVIEW简介 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C 和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语

java简单计算器源代码

简单计算器代码 package calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 * @author Fjsh */ public class CalcultorThree { //新建对象,在构造函数中进行初始化 JFrame frame;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=” JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮“0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanel panelwest,panelcenter,paneleast;//新建三个面板 TextField tf;//新建文本区域对象 public CalcultorThree(){ //初始化对象 tf=new TextField(30);//构造空文本字段,字符宽度为30 frame =new JFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

第02讲 简易计算器的设计

第02讲计算器 2.1 计算器简介 大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。 图2-1 Windows XP下的标准型计算器 图2-2 Windows XP下的科学型计算器 Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。 接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置 用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。 2.2.1 界面设计 打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。 图2-1 计算器用户界面 2.2.2 属性设置 窗体和各控件的属性设置如表2-1所示。 表2-1 窗体和各控件的属性

2.3 编写代码 本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量: //****************************************************************** double num1, num2, result; // 操作数及运算结果 bool decimalFlag = false; // 判断输入的是否为小数 string myOperator; // 操作类型 //******************************************************************

科学计算器程序Java代码

科学计算器程序Java代码

MC:清除独立内存里的数字 MR:读出独立内存数字 MS:将显示数字保存到独立内存,并取代内存中原有数字 M+:将显示数字向独立内存累加 (独立内存是一个临时寄放数字的存储器,方便计算) CE:纠错键(CLEAR ERROR).输入数字有错,按它可以重新输入 C:表示清零,将计算器恢复到开机状态 功能举例: 源程序如下: import java.awt.BorderLayout;

import javax.swing.JRadioButtonMenuItem; import javax.swing.JTextField; public class Calucator extends JFrame { private JTextField tf; private JPanel panel1, panel2, panel3, panel4; private JMenuBar myBar; private JMenu menu1, menu2, menu3; private JMenuItem editItem1, editItem2, help1, help2, help3; private JRadioButtonMenuItem seeItem1, seeItem2;//单选框 private JCheckBoxMenuItem seeItem3;//复选框 private ButtonGroup bgb; private String back; private boolean IfResult = true, flag = false;

LABVIEW计算器设计报告

虚拟仪器大作业——模拟计算器 班级:电1004 姓名: 学号:20102389

一、设计思想: .创建3个字符串显示控件num1,num2,num3,其中: 1、第一个输入数据存储在num1中 2、第二个输入数据存入num2中 3、将其赋给 num3,并使num2为空,以便输入的数据存入num2 4、所有的运算是在num1和 num3间进行 5、运算结果都赋给result,同时赋给num1,用于下一次的运算 .创建4个布尔开关按钮change,change1,change2,change3,其中: 1、Change的真假用来判断是第一个数据还是第二个数据 2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算 3、change2用来去掉数据小数末尾的0 4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效 .创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中: 1、type1用来存储运算符号 2、type2用来保证连续“+、-、*、/”的正确性 3、所有的运算结果都赋给result 4、result经过去零处理后得到result1,将数据显示在前面板上。 二、实现过程 1、面板按键的设计及感应 首先,在前面板上建立一个簇 然后在簇中再建立布尔量,复制20个以满足键的需求(0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个平方键,一个倒数键,一个反号键,一个清零键及一个退出键并注意按键的顺序)。 将按键给值并作适当的美化处理

在后面板中通过将簇中元素按产生的顺序组成一个一维数组,这样就实现了每个键与数字(0--20)之间的对应。每次按下一个键时,通过 查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程。 2、数字的键入(0~8键入1~9数字) 由于第一个输入和第二个输入所存放的地方不同(第一个存于num1,第二个存于num2→mun3再清空num2),所以有必要对此分开处理。创建2分支(真、假)的case结构。 用change控制分支的选择:在处创建局部变量并转换为读入。由于数字的键入是数据输入,change3用来保证backspace键仅对输入的数据有

单片机设计简易计算器

简易计算器 Simply Calculator 1 设计思想 此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以及输出数据;显示器部分主要完成单片机输出的显示。 本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的设计和调试;第三步,Protues 系统仿真。 硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬件的选取最为重要,包括选用的芯片,显示设备的选取,输入设备的选取等。本设计是通过单片机来实现的,因此选用了ATMEGA16单片机作为主体,输入设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使用的程序语言是C语言,在“ICC AVR”中运行,调试,直到运行出正确结果,然后输出后缀名为.HEX格式的文件,以备在Protues中仿真使用。程序是设计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就要求能掌握Protues的一些基本操作。2原理分析 2.1矩阵键盘的扫描 图2.1 矩阵键盘图

如图2.1所示,单片机的8个I/O口和矩阵键盘相连,用8个I/O口来控制矩阵键盘的16个按键是非常有意思的,首先我们设置单片机的PD0—PD7为输出,且PD0—PD3依次设置为低电平,而PD4—PD7设置为高电平,然后我们设置PD4—PD7为输入,而PD0—PD3仍然为输出,假如此时M1键按下,则PD0与PD4相连,因为PD0是低电平,而PD4是输入,所以PD4会被拉为低电平,同理,如果M2被按下,则PD5会被拉低,M3按下,PD6会被拉低,M4按下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按下时,我们首先设置8个I/O口为输出,输出为FE,即,PD0为低电平,其他全为高电平,然后我们设置PD4—PD7为输入,如果M1被按下,则PD4会比被拉为低电平,此时会变成EE,同理可以知道M2被按下时会变为DE,M3被按下时会变为BE,M4被按下时会变为7E。同理我们可以设置8个I/O口输出FD来检测M5—M8是否被按下,设置8个I/O口输出FC来来检测M9—M12,设置8个I/O口输出F7来检测M13—M16,如果M1—M4没有被按下,就继续检测M4—M8,一次类推,就可以检测出16个按键了。在这次设计中,16个按键M1—M16所对应检测值分别为:EE,DE,BE,7E,ED,DD,BD,7D,EB,DB,BB,7B,E7,D7,B7,77。 2.2 数字显示与计算 本次设计选用的显示器是1602液晶显示器,此液晶显示器能显示32个字符,VSS接地,VDD接电源正极,E为时使能信号,R/W为读写选择端(H/L),RS为数据/命令选择端(H/L),D0—D7为数据I/O口。 首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示出来的数换算成一个数,如果按下“+”号,则显示出“+”,并且同理显示出“+”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是“-”,则调用减子程序,如果按下“*”,则调用乘子程序,如果按下“/”,则调用除子程序。然后再调用显示结果子程序,显示出结果。

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

电子计算器的使用

电子计算器的使用 目的:了解常用电子计算器的基本类型及功能,为自主选择处理统计资料的计算器,提供依据。掌握程序型计算器(fx-350MS)的使用,为分析统计资料打下基础。 一、电子计算器的类型和功能 电子计算器(electronic calculator)已广泛应用于各行各业,它与电子计算机相比具有操作简便、可随身携带等优点。 电子计算器从功能方面可分四型: (一)简易型:可作四则运算、平方、开平方运算、百分比运算、常数运算及存储器运算。 (二)函数型:除简易型的功能外,还具有函数运算功能,如:三角函数、对数、指数、阶乘、双曲函数及统计运算和相关运算等,如:fx-100型、fx-140型。

(三)程序型:除函数型功能外,还具有编写程序和运行程序的功能,如fx-180P、fx-501P等。 (四)复合型:除有计算功能外,还附加其他功能,如时钟、日历显示、报时、打印等,如fx-6100、fx-8100等。

二、基本操作方法和注意事项 计算器:开电源键“ON”;显示屏出现“O”。运算结束后关闭计算器:关电源键“SHIFT+OFF”;显示屏上所有内容消失。如果长期不使用,应把电池取出。使用和携带时,避免太强的振动。 (一)键盘及键功能 1.显示窗:位于上方,用于显示输入的数字,计算结果和中间结果。 2.控制开关(键): (1)电源开关:开关置于ON 则接通电源,反之则切断电源。 (2)AC键:计算器的电源开关置ON 侧,若停止操作5 分钟以后,电源会自动断开,此时只要按一下AC 键就可以接通,或者重复操作一次电源开关,但此时存储器内容会被消除。 3.功能键: (1 有内容,包括出错显示E。 (2

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

java编写简单计算器源代码

import javax.swing.*; import java.awt.event.*; import java.awt.*; import https://www.360docs.net/doc/b015192081.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);

相关文档
最新文档