java计算器项目课程设计报告包涵源文件与类图.docx
- 文档编号:8740592
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:22
- 大小:128.24KB
java计算器项目课程设计报告包涵源文件与类图.docx
《java计算器项目课程设计报告包涵源文件与类图.docx》由会员分享,可在线阅读,更多相关《java计算器项目课程设计报告包涵源文件与类图.docx(22页珍藏版)》请在冰豆网上搜索。
java计算器项目课程设计报告包涵源文件与类图
《动态网站基础程序设计》课程设计
目录
任务描述2
任务分析2
任务解决过程及方法5
源程序清单5
执行结果截图16
总结17
一、任务描述
题目:
设计一个可以进行简单混合运算的计算器。
要求:
用户可以通过鼠标的点击依次输如参加计算的数值,进行混合运算。
设计结果:
设计一个可以进行简单混合运算的计算器,用户可以通过鼠标的点击依次输如参加计算的数值。
二、任务分析
OOA
在这次任务中,我们主要的目的就是一款可以加减乘除等运算方式的计算器,可以让用户通过点击数字按钮与符号按钮达到数字混合运算的要求。
本计算器程序共有3个java源文件具体如下表
java源文件及其功能
序号
文件名
主要功能
备注
1
ComputerPad.java
创建计算器的主窗口,为主类。
含有main方法
2
NumberButton.java
为主类创建数字按钮对象,达到输入。
3
OperationButton.java
为主类创建运算符号按钮,负责运算。
表1-1
类功能及任务分配说明如下
ComputerPad.java
该java源文件生成的类负责创建计算器的“主窗口”。
该类还有main方法,整个程序从该类开始执行。
ComputerPad类的窗口创建等可视化方法由潘伟卿、段宗义、罗聪负责
逻辑运算方法由陈雪、张梦薇、吴珍春负责。
NumberButton
该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可以依次输入参加运算的数值的各位数字。
NumberButton类主要负责数字按钮方面由张亚利负责。
OperationButton
该文件生成的类负责为主类创建运算符号按钮对象。
使用鼠标单击运算符按钮可选择要进行的运算
OperationButton负责符号按钮方面由戢苓、査璜坚负责。
OOD
ComputerPad类
图2-1
NumberButton类
图2-2
OperationButton类
图2-3
类之间的关系图
图2.4
详细设计
主类ComputerPad
1.成员变量
成员变量描述
变量类型
名称
数字按钮数组
NumberButton[]
NumberButton
运算符号按钮数组
OperationButton[]
operationButton
小数点按钮
JButton
小数点按钮
正负号按钮
JButton
正负号按钮
退格按钮
JButton
退格按钮
求倒数按钮
JButton
求倒数按钮
等号按钮
JButton
等号按钮
清零按钮
JButton
清零按钮
显示计算结果
JTextField
resultShow
存储数据的链表
LinkedList
链表
2.方法
名称
功能
备注
ComputerPad
创建窗口
构造方法
ActionPerformed
处理ActionEvent事件
接口方法
Main
程序开始运行
数NumButton
1.成员变量
描述
变量类型
名称
按钮代表的数字
int
number
2.方法
名称
功能
备注
Numbertton
创建数字按钮
构造方法
getNumber
获取按钮代表的数字
运算符号按钮OperationButton
1.成员变量
描述
变量类型
名称
按钮代表的符号
String
Operator
2.方法
名称
功能
备注
OperationButton
创建按钮符号
构造方法
getOperator
获取按钮代表的符号
三、任务解决过程及方法
源程序清单
主类ComputerPad:
潘伟卿、段宗义、罗聪
主要负责创建窗口
packagenet.wz1101.keshe_02;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.util.LinkedList;
importjava.text.NumberFormat;
publicclassComputerPadextendsJFrameimplementsActionListener{
NumberButtonnumberButton[];
OperationButtonoperationButton[];
JButton小数点按钮,正负号按钮,退格按钮,
求倒数按钮,等号按钮,清零按钮;
JPanelpanel;
JTextFieldresultShow;
String运算符号[]={"+","-","*","/"};
LinkedList链表;
boolean是否按下等号=false;
publicComputerPad(){
super("计算器");
链表=newLinkedList();
numberButton=newNumberButton[10];
for(inti=0;i<=9;i++){
numberButton[i]=newNumberButton(i);
numberButton[i].addActionListener(this);
}
operationButton=newOperationButton[4];
for(inti=0;i<4;i++){
operationButton[i]=newOperationButton(运算符号[i]);
operationButton[i].addActionListener(this);
}
小数点按钮=newJButton(".");
正负号按钮=newJButton("+/-");
等号按钮=newJButton("=");
求倒数按钮=newJButton("1/x");
退格按钮=newJButton("退格");
清零按钮=newJButton("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=newJPanel();
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);
}
});
*/
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setBounds(100,50,350,200);
setResizable(false);
validate();
}
主类ComputerPad:
陈雪、张梦薇、吴珍春
主要负责逻辑运算
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)
{
intnumber=b.getNumber();
链表.add(""+number);
resultShow.setText(""+number);
}
elseif(链表.size()==3)
{
intnumber=b.getNumber();
Stringnum=(String)链表.getLast();
Strings=num.concat(""+number);
链表.set(2,s);
resultShow.setText(s);
}
}
elseif(e.getSource()instanceofOperationButton)
{
OperationButtonb=(OperationButton)e.getSource();
if(链表.size()==1)
{
Stringfuhao=b.getOperator();
链表.add(fuhao);
}
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)链表.getLast();
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)链表.getLast();
try
{
doubled=Double.parseDouble(number2);
d=-2*d;
Stringstr=String.valueOf(d);
链表.set(2,str);
resultShow.setText(str);
}
catch(Exceptionee)
{
}
}}
elseif(e.getSource()==求倒数按钮)
{
if(链表.size()==1||链表.size()==2)
{
Stringnumber1=(String)链表.getFirst();
try
{
doubled=Double.parseDouble(number1);
d=1.0/d;
Stringstr=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
}
catch(Exceptionee)
{
}
}
elseif(链表.size()==3)
{
Stringnumber2=(String)链表.getLast();
try
{
doubled=Double.parseDouble(number2);
d=0.0/d;
Stringstr=String.valueOf(d);
链表.set(0,str);
resultShow.setText(str);
}
catch(Exceptionee)
{
}
}
}
elseif(e.getSource()==清零按钮)
{
是否按下等号=false;
resultShow.setText("0");
链表.clear();
}
}
publicstaticvoidmain(Stringargs[])
{
newComputerPad();
}
}
类NumberButtonOperationButton:
张亚利、戢苓、査璜坚
主要负责数字按钮与符号按钮
NumberButton
packagenet.wz1101.keshe_02;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassNumberButtonextendsJButton
{
intnumber;
publicNumberButton(intnumber)
{
super(""+number);
this.number=number;
setForeground(Color.blue);
}
publicintgetNumber()
{
returnnumber;
}
}
OperationButton
packagenet.wz1101.keshe_02;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 计算器 项目 课程设计 报告 包涵 源文件