模拟科学计算器课程设计手稿Word文件下载.docx

上传人:b****5 文档编号:20530410 上传时间:2023-01-23 格式:DOCX 页数:18 大小:93.31KB
下载 相关 举报
模拟科学计算器课程设计手稿Word文件下载.docx_第1页
第1页 / 共18页
模拟科学计算器课程设计手稿Word文件下载.docx_第2页
第2页 / 共18页
模拟科学计算器课程设计手稿Word文件下载.docx_第3页
第3页 / 共18页
模拟科学计算器课程设计手稿Word文件下载.docx_第4页
第4页 / 共18页
模拟科学计算器课程设计手稿Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

模拟科学计算器课程设计手稿Word文件下载.docx

《模拟科学计算器课程设计手稿Word文件下载.docx》由会员分享,可在线阅读,更多相关《模拟科学计算器课程设计手稿Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

模拟科学计算器课程设计手稿Word文件下载.docx

C

MC

X^2

X^3

7

8

9

/

MR

N!

sqrt

4

5

6

*

MS

sin

ln

1

2

3

-

M+

cos

log

.

-/+

+

M-

tan

%

π

Exp

angle

=

如上图所示,设计流程如下:

1.菜单栏设计.

2.文本域,即为计算器的屏幕显示区域

3.初始化操作

4.统一设置按钮的的使用方式

5.计算器的基础操作(+-*/)

6.运算符号的事件监听

7.清除按钮的事件监听

8.数字输入的事件监听

9.小数点的事件监听

10.main方法

4、详细设计

主要函数模块及功能:

1、主函数:

publicstaticvoidmain(String[]args){

newCalucator01().setVisible(true);

}

功能:

调用公共类Calucator01,启动计算器。

2、publicCalucator01(){

设计面板布局;

加入菜单栏(编辑、查看、帮助等);

Init();

对计算器面板进行设计,并对于各按钮添加事件监听。

3、privatevoidinit(){

各按钮加入各容器;

版面布局;

功能:

初始化。

4、privatevoidaddButton(JPanelpanel,Stringname,ActionListeneraction,Colorcolor){

按钮加入容器,并进行事件监听和颜色设置。

5、privatevoidgetResult(doublex){

基本运算,+-*/等运算。

6、classSignsimplementsActionListener

对于运算符号按钮进行事件监听。

7、classClearimplementsActionListener

对于清除按钮事件进行监听。

8、classNumimplementsActionListener

对于数字输入按钮进行事件监听。

9、classDotimplementsActionListener

对于小数点按钮事件进行监听。

5、程序调试

效果图如下:

1、按顺序点击按钮3、*、9、=,显示结果27,点击C清零;

2、按顺序点击按钮3、/、8、=,显示结果0.375,点击C清零;

3、按顺序点击按钮360、-/+、6、=,显示结果-60,点击C清零;

4、按顺序点击按钮30、angle、sin,显示结果0.5,点击C清零;

5、按顺序点击按钮π、cos,显示结果-1,点击C清零;

6、按顺序点击按钮100、log10,显示结果2,点击C清零;

7、按顺序点击按钮Exp、ln,显示结果1,点击C清零;

8、按顺序点击按钮2、X^2,显示结果4,点击C清零。

其中精确度达到小数点后十位。

六、总结

总的来说,这次的面向对象课程设计中学到不少图形界面设计方面的知识。

首先,我在老师上课没有涉及的知识领域中摸索着前进,一周下来的看书、上机操作以及和同学队友之间的交流,让我深深感受到java语言在图形界面设计上的优势和方便,从而获得强烈的求知欲,迫不及待地学完所涉及的章节;

其次,这次的模拟科学计算器虽然能够实现单步的基本数学运算、函数、指数等运算,但是由于时间关系,考试在即,很遗憾没能够深入拓展实现复杂的带有括号的四则运算;

最后,要感谢老师的指导和同学们的交流。

七、附录

源程序:

importjava.awt.*;

importjava.awt.event.*;

importjava.text.DecimalFormat;

importjavax.swing.*;

publicclassCalucator01extendsJFrame

{

privateJTextFieldtf;

privateJPanelpanelA,panelB,panelC,panelD;

privateJMenuBarmybar;

privateJMenumenuA,menuB,menuC;

privateJMenuItemed1,ed2,help1,help2,help3;

privateJRadioButtonMenuItemseeItem1,seeItem2;

privateJCheckBoxMenuItemseeItem3;

privateButtonGroupbgb;

privatebooleanIfResult=true,flag=false;

privateStringoper="

="

;

privatedoubleresult=0;

privateNumnumActionListener;

privateDecimalFormatdf;

publicCalucator01()

{

super("

模拟科学计算器"

);

//设置标题

df=newDecimalFormat("

#.##########"

//保留十位小数

this.setLayout(newBorderLayout(10,5));

panelA=newJPanel(newGridLayout(1,3,10,10));

//back,CE,C

panelB=newJPanel(newGridLayout(5,6,5,5));

//X^3X^2789/

//N!

sqrt456*

//sinln123-

//coslog0.-/++

//tan%πExpangle=

panelC=newJPanel(newGridLayout(6,1,5,5));

panelD=newJPanel(newBorderLayout(5,5));

/**菜单栏**/

mybar=newJMenuBar();

menuA=newJMenu("

查看(V)"

menuB=newJMenu("

编辑(E)"

menuC=newJMenu("

帮助(H)"

menuA.setFont(newFont("

宋体"

Font.PLAIN,12));

menuB.setFont(newFont("

menuC.setFont(newFont("

//**编辑栏**//

ed1=newJMenuItem("

复制(C)Ctrl+C"

ed2=newJMenuItem("

粘贴(P)Ctrl+V"

ed1.setFont(newFont("

ed2.setFont(newFont("

//**查看栏**//

seeItem1=newJRadioButtonMenuItem("

标准型(S)Alt+1"

seeItem2=newJRadioButtonMenuItem("

科学型(T)Alt+2"

seeItem3=newJCheckBoxMenuItem("

数字分组(I)"

seeItem1.setFont(newFont("

seeItem2.setFont(newFont("

seeItem3.setFont(newFont("

//**帮助栏**//

help1=newJMenuItem("

查看主题(V)F1"

help2=newJMenuItem("

关于计算器(A)"

help1.setFont(newFont("

help2.setFont(newFont("

bgb=newButtonGroup();

//选项组

menuA.add(seeItem1);

menuA.add(seeItem2);

menuA.addSeparator();

//添加一条分割线

menuA.add(seeItem3);

menuB.add(ed1);

menuB.add(ed2);

menuC.add(help1);

menuC.addSeparator();

menuC.add(help2);

mybar.add(menuA);

mybar.add(menuB);

mybar.add(menuC);

this.setJMenuBar(mybar);

numActionListener=newNum();

//实现数字监听

//**TextArea计算器屏幕显示区域**//

tf=newJTextField();

tf.setEditable(false);

//文本区域不可编辑

tf.setBackground(Color.white);

//文本区域的背景色

tf.setHorizontalAlignment(JTextField.RIGHT);

tf.setText("

0"

tf.setBorder(BorderFactory.createLoweredBevelBorder());

init();

//对计算器进行初始化

}

privatevoidinit()

addButton(panelA,"

Backspace"

newClear(),Color.red);

CE"

C"

addButton(panelB,"

X^2"

newSigns(),Color.magenta);

X^3"

7"

numActionListener,Color.blue);

8"

9"

/"

newSigns(),Color.black);

"

sqrt"

4"

5"

6"

*"

sin"

ln"

1"

2"

3"

-"

addButton(panelB,"

cos"

log10"

."

newDot(),Color.blue);

-/+"

newClear(),Color.blue);

+"

tan"

%"

π"

numActionListener,Color.green);

Exp"

angle"

newSigns(),Color.green);

JButtonbtns=newJButton();

JLabellb=newJLabel("

Caluc"

lb.setFont(newFont("

Font.BOLD,15));

btns.add(lb);

btns.setBorder(BorderFactory.createLoweredBevelBorder());

btns.setEnabled(false);

//按钮不可操作

btns.setPreferredSize(newDimension(20,20));

panelC.add(btns);

addButton(panelC,"

MC"

null,Color.gray);

MR"

MS"

M+"

M-"

panelD.add(panelA,BorderLayout.NORTH);

panelD.add(panelB,BorderLayout.CENTER);

this.add(tf,BorderLayout.NORTH);

this.add(panelC,BorderLayout.WEST);

this.add(panelD);

pack();

this.setResizable(false);

//窗口大小不可改变

this.setLocation(400,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

privatevoidaddButton(JPanelpanel,Stringname,ActionListeneraction,Colorcolor)

JButtonbt=newJButton(name);

panel.add(bt);

bt.setForeground(color);

bt.addActionListener(action);

//计算器的基础操作//

privatevoidgetResult(doublex)

if(oper=="

){result+=x;

elseif(oper=="

){result-=x;

){result*=x;

){result/=x;

){result=x;

tf.setText(df.format(result));

/**运算符号事件监听**/

classSignsimplementsActionListener

publicvoidactionPerformed(ActionEvente)

{

Stringstr=e.getActionCommand();

if(str.equals("

))

{

doublei=Double.parseDouble(tf.getText());

if(i>

=0){tf.setText(String.valueOf(df.format(Math.sqrt(i))));

else{tf.setText("

负数不能开平方"

}

elseif(str.equals("

0)

{

tf.setText(String.valueOf(df.format(Math.log10(i))));

}

else

tf.setText("

负数不能求对数"

tf.setText(df.format(Double.parseDouble(tf.getText())/100));

tf.setText(String.valueOf(df.format(Math.log(i))));

tf.setText(String.valueOf(df.format(Math.sin(i))));

tf.setText(String.valueOf(df.format(Math.cos(i))));

tf.setText(String.valueOf(df.format(Math.tan(i))));

if((i%2==0)||(i%2==1))

intj=(int)i;

intresult=1;

for(intk=1;

k<

=j;

k++)

result*=k;

tf.setText(String.valueOf(result));

else

tf.setText("

无法进行阶乘"

tf.setText(String.valueOf(df.format(i*i)));

tf.setText(String.valueOf(df.format(i*i*i)));

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

当前位置:首页 > 外语学习 > 英语考试

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

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