模拟科学计算器课程设计手稿.docx

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

模拟科学计算器课程设计手稿.docx

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

模拟科学计算器课程设计手稿.docx

模拟科学计算器课程设计手稿

面向对象课程设计

题目

学院

专业

班级

学号

姓名

指导老师

编写日期

 

目录

面向对象课程设计-1-

目录-2-

一、需求分析-3-

二、系统运行环境-3-

三、简要设计-3-

四、详细设计-4-

五、程序调试-5-

六、总结-6-

七、附录-7-

1、需求分析

1.设计一个模拟科学计算器,界面要求模拟windows中的计算器程序。

2.要求实现基本数学运算、函数等功能,加、减、乘、除、阶乘、正弦、余弦和指数运算。

3.添加相关组件并进行按钮事件处理。

2、系统运行环境

Windows7以及Myeclipse8.6

3、简要设计

模拟科学计算器界面设计如下:

查看(V)

编辑(E)

帮助(H)

文本域【显示数据(输入、输出)】

Caluc

back

CE

C

MC

X^2

X^3

7

8

9

/

MR

N!

sqrt

4

5

6

*

MS

sin

ln

1

2

3

-

M+

cos

log

0

.

-/+

+

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("宋体",Font.PLAIN,12));

menuC.setFont(newFont("宋体",Font.PLAIN,12));

//**编辑栏**//

ed1=newJMenuItem("复制(C)Ctrl+C");

ed2=newJMenuItem("粘贴(P)Ctrl+V");

ed1.setFont(newFont("宋体",Font.PLAIN,12));

ed2.setFont(newFont("宋体",Font.PLAIN,12));

//**查看栏**//

seeItem1=newJRadioButtonMenuItem("标准型(S)Alt+1");

seeItem2=newJRadioButtonMenuItem("科学型(T)Alt+2");

seeItem3=newJCheckBoxMenuItem("数字分组(I)");

seeItem1.setFont(newFont("宋体",Font.PLAIN,12));

seeItem2.setFont(newFont("宋体",Font.PLAIN,12));

seeItem3.setFont(newFont("宋体",Font.PLAIN,12));

//**帮助栏**//

help1=newJMenuItem("查看主题(V)F1");

help2=newJMenuItem("关于计算器(A)");

help1.setFont(newFont("宋体",Font.PLAIN,12));

help2.setFont(newFont("宋体",Font.PLAIN,12));

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);

addButton(panelA,"CE",newClear(),Color.red);

addButton(panelA,"C",newClear(),Color.red);

addButton(panelB,"X^2",newSigns(),Color.magenta);

addButton(panelB,"X^3",newSigns(),Color.magenta);

addButton(panelB,"7",numActionListener,Color.blue);

addButton(panelB,"8",numActionListener,Color.blue);

addButton(panelB,"9",numActionListener,Color.blue);

addButton(panelB,"/",newSigns(),Color.black);

addButton(panelB,"N!

",newSigns(),Color.magenta);

addButton(panelB,"sqrt",newSigns(),Color.magenta);

addButton(panelB,"4",numActionListener,Color.blue);

addButton(panelB,"5",numActionListener,Color.blue);

addButton(panelB,"6",numActionListener,Color.blue);

addButton(panelB,"*",newSigns(),Color.black);

addButton(panelB,"sin",newSigns(),Color.magenta);

addButton(panelB,"ln",newSigns(),Color.magenta);

addButton(panelB,"1",numActionListener,Color.blue);

addButton(panelB,"2",numActionListener,Color.blue);

addButton(panelB,"3",numActionListener,Color.blue);

addButton(panelB,"-",newSigns(),Color.black);

addButton(panelB,"cos",newSigns(),Color.magenta);

addButton(panelB,"log10",newSigns(),Color.magenta);

addButton(panelB,"0",numActionListener,Color.blue);

addButton(panelB,".",newDot(),Color.blue);

addButton(panelB,"-/+",newClear(),Color.blue);

addButton(panelB,"+",newSigns(),Color.black);

addButton(panelB,"tan",newSigns(),Color.magenta);

addButton(panelB,"%",newSigns(),Color.magenta);

addButton(panelB,"π",numActionListener,Color.green);

addButton(panelB,"Exp",numActionListener,Color.green);

addButton(panelB,"angle",newSigns(),Color.green);

addButton(panelB,"=",newSigns(),Color.black);

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);

addButton(panelC,"MR",null,Color.gray);

addButton(panelC,"MS",null,Color.gray);

addButton(panelC,"M+",null,Color.gray);

addButton(panelC,"M-",null,Color.gray);

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;}

elseif(oper=="*"){result*=x;}

elseif(oper=="/"){result/=x;}

elseif(oper=="="){result=x;}

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

}

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

classSignsimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

Stringstr=e.getActionCommand();

if(str.equals("sqrt"))

{

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

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

else{tf.setText("负数不能开平方");}

}

elseif(str.equals("log10"))

{

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

if(i>0)

{

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

}

else

{

tf.setText("负数不能求对数");

}

}

elseif(str.equals("%"))

{

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

}

elseif(str.equals("ln"))

{

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

if(i>0)

{

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

}

else

{

tf.setText("负数不能求对数");

}

}

elseif(str.equals("sin"))

{

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

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

}

elseif(str.equals("cos"))

{

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

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

}

elseif(str.equals("tan"))

{

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

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

}

elseif(str.equals("N!

"))

{

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

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("无法进行阶乘");

}

}

elseif(str.equals("X^2"))

{

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

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

}

elseif(str.equals("X^3"))

{

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

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

}

elseif(str.equals("angle"))

{

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

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

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

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

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