java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx

上传人:b****8 文档编号:22129691 上传时间:2023-02-02 格式:DOCX 页数:35 大小:204.46KB
下载 相关 举报
java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx_第1页
第1页 / 共35页
java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx_第2页
第2页 / 共35页
java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx_第3页
第3页 / 共35页
java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx_第4页
第4页 / 共35页
java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx

《java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。

java课程设计 设计一个图形界面的计算器完成简单的算术运算Word格式文档下载.docx

3.系统设计原则

基于计算器系统要具有适用性广、操作简便等特点.本系统预计要达到以下几个目标:

(1)、满足以上的功能要求;

(2)、能够运行在常见的计算机及其配置上;

三、设计思路

1.关于布局问题

本次课程设计程序继承来自框架类(Frame),总体布局上选用布局管理器BorderLayout:

(1)将单行文本框加入到“North”区域

(2)将面板panel加入到“Center”区域,同时panel包含了各种数字按钮和符号按钮。

面板panel采用Girdlayout布局,选用5行*5列,将各种按钮添加到面板panel,并增加按钮监听事件。

布局完成后的效果图如下:

2.关于数据存储问题

计算器完成的是一个数学表达式,本次课程设计我选用的是使用链表(Linkedlist类)来存储数字和运算符号。

程序运行后,输入的所有数字及运算符号都全部存储在链表中,待最后运算时,再一一求出来进行计算。

3.关于事件监听的处理问题

计算器的各种按钮都需要一个对象来进行监视,以便对发生的事件做出处理。

计算器的各种按钮通过调用相应的方法将某个对象作为自己的监视器。

例如计算器中的数字按钮,其方法为:

AddActionListener(监视器);

对于获取了监视器的数字按钮,通过相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。

四、详细设计

1.计算器系统主要功能模块

(1)、系统主要模块实现的功能

系统输入模块实现数字以及计算符号输入的功能,输出模块的结果在文本框中实现显示。

(2)、系统输入窗体实现的效果

系统输入窗体设计效果如图所示:

上图为按数字键1234567890后,在文本框中的显示

(3)、系统主要模块功能描述

功能描述:

菜单项“计算器”主要服务于使用者.它包含了“输入”、“输出”、

两个功能。

输入功能:

当使用者将数字输入后,会出现数字的显示;

当使用者将计算符号输入时候会有计算符号的录入。

输出功能:

点击“输出”选项后.可实现计算的结果。

2.系统的实现

(1)系统源文件类之间的关系

计算器系统共有3个java源文件:

Calculator,NumberButton,OperationButton。

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

计算器系统的类关系图

2、系统源文件类实现的功能

Calculator.java文件生成的类该JAVA文件生成的类负责创建计算器的主窗口及各种运算的实现。

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

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

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

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

下表为表格形式

序号

文件名

主要功能

1

Calculator.java

该JAVA文件生成的类负责创建计算器的主窗口。

2

NumberButton.java

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

3

OperationButton.java

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

 

.

3.系统类的成员变量及方法描述

(1)主类Calculator

①成员变量

Calculator类成员变量表

成员变量描述

变量类型

名称

数字按钮数组

NumberButton[]

NumberButton

运算符号按钮数组

OperationButton[]

OperationButton

小数点按钮

JButton

正负号按钮

退格按钮

平方按钮

清零按钮

等号按钮

显示计算结果

JTextField

resultShow

储存数据的链表

LinkedList

mylist

求平方根

sqrt

判断素数

素数

log

立方按钮

倒数按钮

②方法

Calculator类方法

功能

备注

Calculator

创建窗口

构造方法

ActionPerfomed

处理ActionPerfomed事件

接口方法

Main

程序开始运行

(2)NumberButton类

NumberButton类变量

按钮代表的数字

Int

number

NumberButton类方法

方法名

创建数字按钮

getNumber

获取按钮代表的数字

(3)OperationButton类

①成员变量

OperationButton类成员变量

按钮代表的符号

String

Operator

OperationButton类方法

创建符号按钮

getOperator

获取按钮代表的符号

五、运行调试与分析讨论

1.测试加法运算按键12+20得出的结果如下图

2.测试减法运算按键12-20得出的结果如下图

3.测试乘法运算按键12*20得出的结果如下图

4.测试除法运算按键12/20得出的结果如下图

5测试退格运算,按键123456789,按退格键3次,得到的结果如下图

6.测试倒数运算,按键5,再按倒数键“1/X”,得到的结果如下图

7.测试平方键,按键4,再按平方键,得到的结果如下图

8.测试立方键,按键4,再按立方键,得到的结果如下图

9.测试开平方键,按键4,再按键“sqrt”,得到的结果如下图

10..测试素数键,按键29,再按键“素数”,得到的结果如下图

六、设计体会与小结

这次课程设计总体上来说难度不大,但是个别细节遇到很多的问题。

在课设过程中,我自己学习了swing的使用以及数据结构中的链表用java的实现。

在这次课程设计中,我学习到了很多布局方面的知识,还有就是链表的实现。

数据结构已经很久没有用过了,刚上手时感觉有些生疏,但是随着时间的推移,用java实现链表也渐渐的变得顺手了。

这次课程设计的程序构架很简单,没有用到很困难的算法,但是这样编写出来的程序也有优点,就是修改的时候一目了然。

总的来说,时间虽紧,这次课程设计学习的东西很是挺多的。

最后感谢在课程设计中帮助过我的同学和老师。

七、参考文献

[1]耿祥义.《Java2实用教程(第三版)》北京清华大学出版社2006.8

[2]朱福喜.《Java语言程序设计》.北京清华大学出版社.2005

[3]朱福喜,尹为民,余振坤.《Java语言与面向对象程序设计》.武汉武汉大学出版社.2002

附录

程序代码

packageTZB;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.border.*;

importjava.util.LinkedList;

publicclassCalculatorextendsJFrameimplementsActionListener{

NumberButtonnumberButton[];

OperationButtonoprationButton[];

JButton小数点按钮,正负号按钮,退格按钮,平方按钮,等号按钮,清零按钮,sqrt,素数,log,立方按钮,倒数按钮;

JPanelpanel;

JTextFieldresultShow;

String运算符号[]={"

+"

"

-"

*"

/"

};

LinkedList<

String>

mylist;

boolean等号=false;

JTextAreablank;

//GUI的设计及监视器的添加

publicCalculator(){

super("

计算器"

);

mylist=newLinkedList<

();

numberButton=newNumberButton[10];

for(inti=0;

i<

=9;

i++){

numberButton[i]=newNumberButton(i);

numberButton[i].addActionListener(this);

}

oprationButton=newOperationButton[4];

4;

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

oprationButton[i].addActionListener(this);

小数点按钮=newJButton("

."

正负号按钮=newJButton("

+/-"

等号按钮=newJButton("

="

平方按钮=newJButton("

平方"

立方按钮=newJButton("

立方"

倒数按钮=newJButton("

1/x"

退格按钮=newJButton("

退格"

清零按钮=newJButton("

C"

sqrt=newJButton("

sqrt"

log=newJButton("

log"

素数=newJButton("

素数"

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

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

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

平方按钮.setForeground(Color.blue);

立方按钮.setForeground(Color.blue);

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

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

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

sqrt.setForeground(Color.blue);

log.setForeground(Color.blue);

素数.setForeground(Color.blue);

退格按钮.addActionListener(this);

清零按钮.addActionListener(this);

等号按钮.addActionListener(this);

小数点按钮.addActionListener(this);

正负号按钮.addActionListener(this);

平方按钮.addActionListener(this);

立方按钮.addActionListener(this);

倒数按钮.addActionListener(this);

sqrt.addActionListener(this);

log.addActionListener(this);

素数.addActionListener(this);

resultShow=newJTextField(10);

resultShow.setHorizontalAlignment(JTextField.RIGHT);

resultShow.setForeground(Color.blue);

resultShow.setFont(newFont("

TimesRoman"

Font.PLAIN,24));

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

resultShow.setBackground(Color.white);

resultShow.setEditable(false);

panel=newJPanel();

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

//GridLayout布局5*5

panel.add(numberButton[1]);

panel.add(numberButton[2]);

panel.add(numberButton[3]);

panel.add(oprationButton[0]);

panel.add(清零按钮);

panel.add(numberButton[4]);

panel.add(numberButton[5]);

panel.add(numberButton[6]);

panel.add(oprationButton[1]);

panel.add(退格按钮);

panel.add(numberButton[7]);

panel.add(numberButton[8]);

panel.add(numberButton[9]);

panel.add(oprationButton[2]);

panel.add(倒数按钮);

panel.add(numberButton[0]);

panel.add(正负号按钮);

panel.add(小数点按钮);

panel.add(oprationButton[3]);

panel.add(等号按钮);

panel.add(sqrt);

panel.add(立方按钮);

panel.add(素数);

panel.add(log);

panel.add(平方按钮);

add(panel,BorderLayout.CENTER);

add(resultShow,BorderLayout.NORTH);

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

setVisible(true);

setBounds(400,240,400,300);

setResizable(true);

validate();

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()instanceofNumberButton)//触发数字

{

NumberButtonb=(NumberButton)e.getSource();

if(mylist.size()==0){

intnumber=b.getNumber();

mylist.add("

"

+number);

//查看链表动态变化

for(inti=0;

mylist.size();

System.out.print(mylist.get(i)+"

"

}

System.out.println();

resultShow.setText("

等号=false;

elseif(mylist.size()==1&

&

等号==false){

Stringnum=(String)mylist.getFirst();

Strings=num.concat("

mylist.set(0,s);

resultShow.setText(s);

}elseif(mylist.size()==1&

等号==true){

mylist.removeFirst();

}elseif(mylist.size()==2){

}elseif(mylist.size()==3){

Stringnum=(String)mylist.getLast();

mylist.set(2,s);

}elseif(e.getSource()instanceofOperationButton)//触发运算符

OperationButtonb=(OperationButton)e.getSource();

if(mylist.size()==1){

Stringfuhao=b.get运算符号();

mylist.add(fuhao);

mylist.set(1,fuhao);

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

当前位置:首页 > 求职职场 > 简历

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

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