java课程设计计算器Word下载.docx
- 文档编号:20364279
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:21
- 大小:309.58KB
java课程设计计算器Word下载.docx
《java课程设计计算器Word下载.docx》由会员分享,可在线阅读,更多相关《java课程设计计算器Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
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
正负号按钮
退格按钮
求倒数按钮
等号按钮
清零按钮
显示计算结果
JTextField
resultShow
存储数据的链表
LinkedList
链表
②方法
功能
备注
ComputerPad
创建窗口
构造方法
ActionPerformed
处理ActionEvent事件
接口方法
Main
程序运行入口
③代码
见附录Ⅰ。
4.2NumberButton
按钮代表的数字
Int
number
创建数字按钮
getNumber
获取按钮代表的数字
见附录Ⅱ。
4.3OperationButton
String
Operator
创建符号按钮
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].北京:
[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个运算符号。
4;
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("
是否按下等号=false;
}
elseif(链表.size()==1&
&
是否按下等号==false)
Stringnum=(String)链表.getFirst();
Strings=num.concat("
//将两个数字首尾相接。
链表.set(0,s);
resultShow.setText(s);
是否按下等号==true)
链表.removeFirst();
"
elseif(链表.size()==2)//链表中已有2个节点。
//链表添加第三个节点,注意:
第2个节点是运算符号。
elseif(链表.size()==3)//链表中已有3个节点。
Stringnum=(String)链表.getLast();
//与链表第3个节点中的数字首尾相接。
链表.set(2,s);
elseif(e.getSource()instanceofOperationButton)//如果单击运算符号按钮。
OperationButtonb=(OperationButton)e.getSource();
if(链表.size()==1)
Stringfuhao=b.getOperator();
链表.add(fuhao);
//链表添加第2个节点:
运算符号。
elseif(链表.size()==2)
链表.set(1,fuhao);
//改变运算符号。
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;
n=n1*n2;
n=n1/n2;
链表.clear();
//根据链表内已有的数进行运算,其结果作为新的运算数值。
链表.add("
+n);
链表.add(fuhao);
//添加下一次计算的运算符。
resultShow.setText("
}
catch(Exceptionee)
elseif(e.getSource()==等号按钮)
是否按下等号=true;
if(链表.size()==1||链表.size()==2)
+num);
链表.set(0,"
链表.removeLast();
//将链表中第二个运算数删除。
//再将运算符号删除。
elseif(e.getSource()==小数点按钮)
if(链表.size()==0)//链表中还没有节点。
elseif(链表.size()==1)
Stringdot=小数点按钮.getLabel();
//获取按钮上的小数点。
Strings=null;
if(num.indexOf(dot)==-1)//加入数字中不含有小数点。
s=num.concat(dot);
链表.set(0,s);
else//如果数字中已含有小数点。
s=num;
if(num.indexOf(dot)==-1)
链表.set(2,s);
else
elseif(e.getSource()==退格按钮)
if(num.length()>
=1)
num=num.substring(0,num.length()-1);
链表.set(0,num);
resultShow.setText(num);
0"
链表.set(2,num);
elseif(e.getSource()==正负号按钮)
doubled=Double.parseDouble(number1);
d=-1*d;
Stringstr=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
Stringnumber2=(String)链表.getFirst();
doubled=Double.parseDouble(number2);
链表.set(2,str);
elseif(e.getSource()=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 计算器