java课程设计计算器.docx

上传人:b****5 文档编号:7257476 上传时间:2023-01-22 格式:DOCX 页数:21 大小:309.58KB
下载 相关 举报
java课程设计计算器.docx_第1页
第1页 / 共21页
java课程设计计算器.docx_第2页
第2页 / 共21页
java课程设计计算器.docx_第3页
第3页 / 共21页
java课程设计计算器.docx_第4页
第4页 / 共21页
java课程设计计算器.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

java课程设计计算器.docx

《java课程设计计算器.docx》由会员分享,可在线阅读,更多相关《java课程设计计算器.docx(21页珍藏版)》请在冰豆网上搜索。

java课程设计计算器.docx

java课程设计计算器

java课程设计--计算器

 

 

Java程序设计课程设计报告

(2011--2012年度第1学期)

 

计算器

 

专业

计算机科学与技术(网络工程)

学生姓名

赵宝文

班级

B计算机102

学号

1010704227

指导教师

徐森

完成日期

2012年1月8日

 

题目

1概述

1.1课程设计目的

1.熟悉Java的运行环境及其使用;

2.掌握Java图形界面的使用;

3.加强Java程序的分析能力;

4.加强使用Java知识解决实际问题的能力。

1.2课程设计内容

设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。

2系统需求分析

2.1系统目标

要求所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等混合运算。

2.2主体功能

用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。

2.3开发环境

Eclipse集成开发环境

3系统概要设计

3.1系统的功能模块划分

本计算机文件共有3个java源文件。

类之间的主要关系如下图所示

ComputerPad(主类)

NumberButton

OperationButton

ComputerPad.java

该java源文件生成的类负责创建计算器的“主窗口”。

该类含有main方法,整个程序从该类开始执行。

NumberButton.java

该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字。

OperationButton.java

该文件生成的类负责为主类创建运算符号按钮对象。

使用鼠标单击运算符号按钮可选择所要进行的运算。

3.2系统流程图

4系统详细设计

4.1ComputerPad(主类)

①成员变量

成员变量描述

变量类型

名称

数字按钮数组

NumberButton[]

numberButton

运算符号按钮数组

OperationButton[]

operationButton

小数点按钮

Button

小数点按钮

正负号按钮

Button

正负号按钮

退格按钮

Button

退格按钮

求倒数按钮

Button

求倒数按钮

等号按钮

Button

等号按钮

清零按钮

Button

清零按钮

显示计算结果

JTextField

resultShow

存储数据的链表

LinkedList

链表

②方法

名称

功能

备注

ComputerPad

创建窗口

构造方法

ActionPerformed

处理ActionEvent事件

接口方法

Main

程序运行入口

③代码

见附录Ⅰ。

4.2NumberButton

①成员变量

成员变量描述

变量类型

名称

按钮代表的数字

Int

number

②方法

名称

功能

备注

NumberButton

创建数字按钮

构造方法

getNumber

获取按钮代表的数字

③代码

见附录Ⅱ。

4.3OperationButton

①成员变量

成员变量描述

变量类型

名称

按钮代表的数字

String

Operator

②方法

名称

功能

备注

OperationButton

创建符号按钮

构造方法

getOperator

获取按钮代表的符号

③代码

见附录Ⅲ。

5测试

5.1测试方案

图5-1

5.1.1加法测试:

1+2=?

图5-1-1

5.1.2乘法测试:

2*3=?

图5-1-2

5.2测试结果

加法测试结果:

1+2=

图5-2-1

乘法测试结果:

2*3=

图5-2-2

6小结

本文利用Java语言编写了一个计算器程序,其中涉及到很多的基础内容,如类、构造方法、继承、接口、GUI等。

通过对这些内容的综合运用,加深了对Java的理解,为进一步学习打下基础。

参考文献

[1]耿祥义,张跃平. Java2实用教程(第三版)[M].北京:

清华大学出版社,2006

[2]耿祥义. Java课程设计(第三版)[M].北京:

清华大学出版社,2004

[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M].北京:

清华大学出版社,2004

[4]JacquieBarker,Java面向对象编程指南,电子工业出版社,2001

附录

附录Ⅰ源程序清单

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.border.*;

importjava.util.LinkedList;

publicclassComputerPadextendsFrameimplementsActionListener

{

NumberButtonnumberButton[];//数字按钮数组。

OperationButtonoperationButton[];//运算符号按钮数组。

Button小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;

Panelpanel;//添加各种按钮的面板。

JTextFieldresultShow;//显示计算结果的文本条。

String运算符号[]={"+","-","*","/"};

LinkedList链表;//负责存储数据的链表。

boolean是否按下等号=false;

publicComputerPad()

{

super("计算器");

链表=newLinkedList();

numberButton=newNumberButton[10];//共有10个数字按钮。

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

{

numberButton[i]=newNumberButton(i);

numberButton[i].addActionListener(this);

}

operationButton=newOperationButton[4];//共有4个运算符号。

for(inti=0;i<4;i++)

{

operationButton[i]=newOperationButton(运算符号[i]);

operationButton[i].addActionListener(this);

}

小数点按钮=newButton(".");

正负号按钮=newButton("+/-");

等号按钮=newButton("=");

求倒数按钮=newButton("1/x");

退格按钮=newButton("退格");

清零按钮=newButton("C");

清零按钮.setForeground(Color.red);

退格按钮.setForeground(Color.red);

等号按钮.setForeground(Color.red);

求倒数按钮.setForeground(Color.blue);

正负号按钮.setForeground(Color.blue);

小数点按钮.setForeground(Color.blue);

退格按钮.addActionListener(this);

清零按钮.addActionListener(this);

等号按钮.addActionListener(this);

求倒数按钮.addActionListener(this);

正负号按钮.addActionListener(this);

小数点按钮.addActionListener(this);

resultShow=newJTextField(10);

resultShow.setHorizontalAlignment(JTextField.RIGHT);

resultShow.setForeground(Color.blue);

resultShow.setFont(newFont("TimesRoman",Font.PLAIN,14));

resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));

resultShow.setBackground(Color.white);

resultShow.setEditable(false);

panel=newPanel();//放置按钮的面板容器。

panel.setLayout(newGridLayout(4,5));

//面板中的第一行:

panel.add(numberButton[1]);

panel.add(numberButton[2]);

panel.add(numberButton[3]);

panel.add(operationButton[0]);

panel.add(清零按钮);

//面板中的第二行:

panel.add(numberButton[4]);

panel.add(numberButton[5]);

panel.add(numberButton[6]);

panel.add(operationButton[1]);

panel.add(退格按钮);

//面板中的第三行:

panel.add(numberButton[7]);

panel.add(numberButton[8]);

panel.add(numberButton[9]);

panel.add(operationButton[2]);

panel.add(求倒数按钮);

//面板中的第四行:

panel.add(numberButton[0]);

panel.add(正负号按钮);

panel.add(小数点按钮);

panel.add(operationButton[3]);

panel.add(等号按钮);

add(panel,BorderLayout.CENTER);

add(resultShow,BorderLayout.NORTH);

addWindowListener(newWindowAdapter()

{publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

setVisible(true);

setBounds(100,50,240,180);

setResizable(false);

validate();

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()instanceofNumberButton)//如果鼠标单击数字按钮。

{

NumberButtonb=(NumberButton)e.getSource();

if(链表.size()==0)

{

intnumber=b.getNumber();//获取按钮上的数字。

链表.add(""+number);//将数据添加到链表。

resultShow.setText(""+number);

是否按下等号=false;

}

elseif(链表.size()==1&&是否按下等号==false)

{

intnumber=b.getNumber();

Stringnum=(String)链表.getFirst();

Strings=num.concat(""+number);//将两个数字首尾相接。

链表.set(0,s);

resultShow.setText(s);

}

elseif(链表.size()==1&&是否按下等号==true)

{

intnumber=b.getNumber();

链表.removeFirst();

链表.add(""+number);//将数据添加到链表。

是否按下等号=false;

resultShow.setText(""+number);

}

elseif(链表.size()==2)//链表中已有2个节点。

{

intnumber=b.getNumber();//获取按钮上的数字。

链表.add(""+number);//链表添加第三个节点,注意:

第2个节点是运算符号。

resultShow.setText(""+number);

}

elseif(链表.size()==3)//链表中已有3个节点。

{

intnumber=b.getNumber();

Stringnum=(String)链表.getLast();

Strings=num.concat(""+number);//与链表第3个节点中的数字首尾相接。

链表.set(2,s);

resultShow.setText(s);

}

}

elseif(e.getSource()instanceofOperationButton)//如果单击运算符号按钮。

{

OperationButtonb=(OperationButton)e.getSource();

if(链表.size()==1)

{

Stringfuhao=b.getOperator();

链表.add(fuhao);//链表添加第2个节点:

运算符号。

}

elseif(链表.size()==2)

{

Stringfuhao=b.getOperator();

链表.set(1,fuhao);//改变运算符号。

}

elseif(链表.size()==3)

{

Stringfuhao=b.getOperator();

Stringnumber1=(String)链表.getFirst();

Stringnumber2=(String)链表.getLast();

String运算符号=(String)链表.get

(1);

try

{

doublen1=Double.parseDouble(number1);

doublen2=Double.parseDouble(number2);

doublen=0;

if(运算符号.equals("+"))

{

n=n1+n2;

}

elseif(运算符号.equals("-"))

{

n=n1-n2;

}

elseif(运算符号.equals("*"))

{

n=n1*n2;

}

elseif(运算符号.equals("/"))

{

n=n1/n2;

}

链表.clear();//根据链表内已有的数进行运算,其结果作为新的运算数值。

链表.add(""+n);

链表.add(fuhao);//添加下一次计算的运算符。

resultShow.setText(""+n);

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()==等号按钮)

{

是否按下等号=true;

if(链表.size()==1||链表.size()==2)

{

Stringnum=(String)链表.getFirst();

resultShow.setText(""+num);

}

elseif(链表.size()==3)

{

Stringnumber1=(String)链表.getFirst();

Stringnumber2=(String)链表.getLast();

String运算符号=(String)链表.get

(1);

try

{

doublen1=Double.parseDouble(number1);

doublen2=Double.parseDouble(number2);

doublen=0;

if(运算符号.equals("+"))

{

n=n1+n2;

}

elseif(运算符号.equals("-"))

{

n=n1-n2;

}

elseif(运算符号.equals("*"))

{

n=n1*n2;

}

elseif(运算符号.equals("/"))

{

n=n1/n2;

}

resultShow.setText(""+n);

链表.set(0,""+n);

链表.removeLast();//将链表中第二个运算数删除。

链表.removeLast();//再将运算符号删除。

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()==小数点按钮)

{

if(链表.size()==0)//链表中还没有节点。

{

是否按下等号=false;

}

elseif(链表.size()==1)

{

Stringdot=小数点按钮.getLabel();//获取按钮上的小数点。

Stringnum=(String)链表.getFirst();

Strings=null;

if(num.indexOf(dot)==-1)//加入数字中不含有小数点。

{

s=num.concat(dot);

链表.set(0,s);

}

else//如果数字中已含有小数点。

{

s=num;

}

链表.set(0,s);

resultShow.setText(s);

}

elseif(链表.size()==3)

{

Stringdot=小数点按钮.getLabel();//获取按钮上的小数点。

Stringnum=(String)链表.getFirst();

Strings=null;

if(num.indexOf(dot)==-1)

{

s=num.concat(dot);

链表.set(2,s);

}

else

{

s=num;

}

resultShow.setText(s);

}

}

elseif(e.getSource()==退格按钮)

{

if(链表.size()==1)

{

Stringnum=(String)链表.getFirst();

if(num.length()>=1)

{

num=num.substring(0,num.length()-1);

链表.set(0,num);

resultShow.setText(num);

}

else

{

链表.removeLast();

resultShow.setText("0");

}

}

elseif(链表.size()==3)

{

Stringnum=(String)链表.getLast();

if(num.length()>=1)

{

num=num.substring(0,num.length()-1);

链表.set(2,num);

resultShow.setText(num);

}

else

{

链表.removeLast();

resultShow.setText("0");

}

}

}

elseif(e.getSource()==正负号按钮)

{

if(链表.size()==1)

{

Stringnumber1=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number1);

d=-1*d;

Stringstr=String.valueOf(d);

链表.set(0,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

elseif(链表.size()==3)

{

Stringnumber2=(String)链表.getFirst();

try

{

doubled=Double.parseDouble(number2);

d=-1*d;

Stringstr=String.valueOf(d);

链表.set(2,str);

resultShow.setText(str);

}

catch(Exceptionee)

{

}

}

}

elseif(e.getSource()=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1