( 2010 -- 2011 年度第 1 学期)
保存计算过程的计算器
专业 | 网络工程 |
学生姓名 | 陆春燕 |
班级 | B计算机092 |
学号 | 0970704211 |
指导教师 | 徐 森 |
完成日期 | 2011年1月13日 |
1.1 课程设计目的
课程设计是课程学习的一个重要环节,通过课程设计使学生加深对Java程序设计的理解,掌握Java程序开发的基本方法,把课堂上所学到的多个单元串到一起,提高解决问题和分析问题的能力,具体体现在以下几个方面:
1、了解Java开发一般应用程序的方法和步骤;
2、进一步强化类的定义,掌握类的继承、接口;
3、熟练掌握变量、数组的应用;
4、熟悉图形用户界面中常用组件的使用,掌握事件处理机制;
5、学习掌握一般的软件的设计方法和查阅、运用资料的能力;
6、掌握JAVA程序设计语言,面向对象的软件设计思想、方法。
7、设计一个简单的计算器程序能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面美观、简洁、适用。
8掌握JAVA语言编程的基础知识并能熟练运用。
9.熟悉类声明与对象的使用。
。
10.运用JAVA SWING编写简单计算器程序,并实现其功能 。
1.2 课程设计内容
设计GUI界面的计算机程序,用户可以通过鼠标依次输入参加计算的数值,进行加,减,乘,除,等混合运算。
2 系统需求分析
2.1 系统目标
一个简单的计算器程序。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。
2.2 主体功能
(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;
(2)完成整数、实数的四则运算(加、减、乘、除);
(3)通过按钮点击实现数据的复位(清零);
(4)实数运算中小数位的精度一致。
2.课程设计的主要设计思想
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
2.3 开发环境
JDK
3 系统概要设计
3.1 系统的功能模块划分
1.主界面模块
2.事件相应模块
3.2 系统流程图
1二 总体方案设计
1.界面设计
界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:
2.功能介绍
这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:
点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算 ;
还能通过用户自己在文本框中输入数字,进行简单运算 ;
如果输入有误时可以按Clear撤销后重新输入新数据
三详细设计主题任务
程序流程图如下:
4系统详细设计
1.主界面模块详细设计
顶层容器:ComputerPad类实现主窗口,顶层容器中包含了1个mainpanel容器,1个结果显示 textfield, 1个centerpanel。
各组件作用:其中centerpanel容器用于放数字按钮,小数点,运算符按钮;显示区panel用于放清零按钮,退格按钮和一个文本框。文本框用于显示输入数据和计算结果。
布局方式:顶层容器用BroadLayOut布局,显示区文本框以及清零按钮和退格按钮放在mainpanel容器的north即显示区panel,显示区panel用FlowLayout布局,centerpanel容器 用GridLayOut布局
部分代码如下
数字按钮类:实现数字按钮的定义
public class NumberButton extends Button{}
运算符按钮类:实现运算符号的定义
public class OperationButton extends Button{}
主窗口类实现监视器的注册,窗口布局,组件颜色大小等的设置
public class ComputerPad extends Frame implements ActionListener
{
NumberButton numberButton[];
OperationButton oprationButton[];
Button 小数点按钮,正负号按钮,退格按钮,
求倒数按钮,等号按钮,清零按钮;
Panel panel;
JTextField 显示区
String 运算符号[]={"+
boolean 是否按下等号=false;
public ComputerPad()
{
super("计算器");
//进行组件的声明,初始化设置,对数字符和运算符注册
JButton[] buttons = new JButton[18];
{
buttons[0] = new JButton("1");
buttons[1] = new JButton("2");
buttons[2] = new JButton("3");
buttons[3] = new JButton("+");
buttons[4] = new JButton("4");
buttons[5] = new JButton("5");
buttons[6] = new JButton("6");
buttons[7] = new JButton("-");
buttons[8] = new JButton("7");
buttons[9] = new JButton("8");
buttons[10] = new JButton("9");
buttons[11] = new JButton("*");
buttons[12] = new JButton("0");
buttons[13] = new JButton(".");
buttons[14] = new JButton("=");
buttons[15] = new JButton("/");
buttons[16] = new JButton("CE");
buttons[17] = new JButton("BACK");
}
centerpanel.setLayout(new GridLayout(4,4,8,8));
for (int i = 0; i < 16; i++) {
centerpanel.add(buttons[i]);
buttons[i].addActionListener(this);
}
A.setLayout(new FlowLayout());
A.add(txt);
对清零按钮和退位按钮 进行监听
for (int i = 16; i < 18; i++) {
A.add(buttons[i]);
buttons[i].addActionListener(this);
}
;
//对显示过程的文本框进行设置
JTextField=new JTextField(14);
process.setEditable(false);
//对面板进行设置
this.setTitle("我的计算器");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(mainpanel);
this.setResizable(false);
BorderLayout bl = new BorderLayout();
mainpanel.setLayout(bl);
mainpanel.add(A,BorderLayout.NORTH);
mainpanel.add(centerpanel,BorderLayout.CENTER);
txt.setText("0");
2.事件响应模块详细设计
模块功能:事件响应模块用于实现数据输入,保存,运算以及显示。
具体实现:将主窗口作为窗口中所有组件的监视器 ,链表用来存储输入的数字以及操作符以便运算时提取出来, public void actionPerformed(ActionEvent e){
按下数字按钮时的事件处理
JButton jb = (JButton)e.getSource();
char c = jb.getText().charAt(0);
switch(c){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':{
addNum(c);
break;
}
5 测试
5.1 测试方案
进行各种情况的输入检测进行加,减,乘,除运算,数字很大,小数,整数以及先按下“=”等非法输入情况。
5.2 测试结果
进行四则运算
Case1 :18+20 预计结果38 实际结果如下
Case2:20-50 预计结果 -30实际结果
Case3:5/3 预计结果 1.67 实际结果如下
Case4 12*8 预计结果96 实际结果如下
Case5 开始数字57 按退位按钮 预计结果5 执行 结果 如下
Case6 开始数字78 按清零按钮 预计结果0 执行结果 如下
6 小结
在做本项目是时候,会遇到很多问题,最大的问题的如何保存已经输入的数字或者符号进行运算,如何显示运算过程,经过多次研究和查询发现运可以运用链表进行存储和提取数据,用栈也是可以的。
此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。最大的收获是在弯完成过程中培养的解决问题的能力,在做项目时必然会遇到困难,会有不会的东西,重要的不是现在会不会,而是遇到问题知道如何找到解决的途径。还使我对所学知识能够融会贯通,又不断丰富了新知识。Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。
参考文献
[1]耿祥义,张跃平. Java2实用教程(第三版)[M] . 北京:清华大学出版社, 2006 [2]耿祥义. Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004
[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004