计算器课程设计
- 格式:doc
- 大小:137.50 KB
- 文档页数:8
计算器设计
摘要:本程序设是应用java语言设计在JDK环境下运行编译的计算器系统。该系统的主要功能就是以鼠标和键盘两种方式均能操作实现整数、浮点数的加、减、乘、除、乘方、三角函数、指数、对数等运算。
关键字:Java计算器
1 前言
在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有一个计算器就会显得很麻烦。为了解决这种日常生活中的困难特意设计了这个计算器系统。
在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等运算。除此之外还可以进行乘方、三角函数、指数、对数等运算。人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量,价格以及总金额的统计和计算。学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。
在此次课程设计中我查阅了大量的书籍和信息,并参考了相关的事例让自己的系统更加的完善。但是毕竟本人知识有限,该系统还有很多不足之处还希望大家能够多多指点。
1.1 系统要求
1.设计一个直观的运算器界面。
2.通过点击界面的按钮可以进行数据运算。
3.可通过键盘在输入数据进行数据运算。
4.可实现整型和浮点数的加、减、乘、除等功能。
1.2 课程设计思路
设计的界面要求友好而方便,使用户用起来能够得心应手。该系统应用java语言来实现,具有对整数和浮点数进行加、减、乘、除以及乘方、三角函数、指数、对数等运算。
2 功能模块设计
2.1 功能模块的划分
界面模块:实现计算器的运算界面,该界面有表示数据的按钮、表示运算浮的按钮和实现键盘输入的文本域和显示运算结果的文本域。
窃听器模块:为每一个按钮安装一个窃听器,当鼠标点击按钮时通过窃听器来判断该按钮代表的是什么数据、实现的是什么运算功能等。
动作响应模块:该模块通过按钮事件,进行对应的处理功能。其主要是将运算数据存储在一个数组中,然后通过判断运算浮的类型对数组中的数据进行相应的运算。并将运算结果以String类型在结果显示文本域中显示出来。
主函数模块:调用已经设计好的函数,来实现运算器的全部功能。
2.2 系统流程图
根据系统要求和系统功能模块的划分可以得到如图1所示的流程图:
图1 程序流程图
3.功能模块的实现
3.1 计算器界面功能
在界面设计中,应用了Frame框架。Frame是独立于浏览器的可独立运行的主窗口,所以应用Frame框架来设计计算器界面是比较适合的。将主Frame定义为BorderLayout布局,在Frame框架中定义了两个面板Panel1和Panel2,并将它们分别放在north和center区域中。在面板Panel1中定义的是一个GridBagLayou布局,因为GridBagLayou布局将显示区域分成许多矩形小单元,每个组件可以占用一个或多个单元,从而可以指定每个组件所占的空间大小。在Panel1中只添加了一个lable和一个TextField,其作用是用来实现结果显示功能。Panel1布置在Frame框架的最顶端。Panel2面板使用的是GridLayout布局,因为GridLayout 布局将容器区域划分成m行*n列,即一个个大小相等的格子。可以整齐的排列组件。所以
非常适合用来排列计算器中的数字按钮和运算付按钮等。这样排版的界面就比较整齐美观。实现该功能的部分代码如下:
import java.awt.*;
import java.awt.event.*;
public class cal extends Frame implements ActionListener{ //继承Frame类和接口ActionListener Button l1=new Button("1");
Button l2=new Button("2");
…………………………….//定义各种组件
Button l0=new Button("0");
Button cos=new Button("cos");
TextField a1=new TextField(15);
Label txt=new Label("运行结果是:");
Label tx1=new Label("数字1:");
Label tx2=new Label("数字2:");
Panel b2=new Panel(new GridLayout(6,4)); //面板b2定义为GridLayout布局
Panel b1=new Panel(new GridBagLayout()); //面板b1定义为GridBagLayou布局
public cal(String ss) //构造函数
{ super(ss);
this.setLayout(new BorderLayout()); //将主Frame定义为BorderLayout布局
this.add(b1,BorderLayout.NORTH);
this.add(b2,BorderLayout.CENTER);
b1.add(txt);
b1.add(a1);
…………………………//在两个面板中添加组件
b2.add(l4);
3.2 窃听器模块
通过继承ActionListener接口来实现事件的监听。当在Button对象上用鼠标进行点击时。将发送一个ActionEvent事件。这个ActionEvent事件会被使用addActionListener()方法进行注册的所有ActionListener的actionPerformed()方法接收。首先为所有具有事件动作的组件用addActionListener(this)进行监听。当被监听的组件发生事件时就进行反馈同时进行动作事件处理。该模块的部分代码如下:
………………………
b2.add(l1);
b2.add(l2);
b2.add(l3);
b2.add(l4);
l1.addActionListener(this);//给对应的按钮添加窃听器
l2.addActionListener(this);
l3.addActionListener(this);
l4.addActionListener(this);
……………………
b2.add(zhi);