编写一个计算器程序课程设计报告范例.docx

上传人:b****6 文档编号:8698771 上传时间:2023-02-01 格式:DOCX 页数:19 大小:910.13KB
下载 相关 举报
编写一个计算器程序课程设计报告范例.docx_第1页
第1页 / 共19页
编写一个计算器程序课程设计报告范例.docx_第2页
第2页 / 共19页
编写一个计算器程序课程设计报告范例.docx_第3页
第3页 / 共19页
编写一个计算器程序课程设计报告范例.docx_第4页
第4页 / 共19页
编写一个计算器程序课程设计报告范例.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

编写一个计算器程序课程设计报告范例.docx

《编写一个计算器程序课程设计报告范例.docx》由会员分享,可在线阅读,更多相关《编写一个计算器程序课程设计报告范例.docx(19页珍藏版)》请在冰豆网上搜索。

编写一个计算器程序课程设计报告范例.docx

编写一个计算器程序课程设计报告范例

学号

2016-2017学年第二学期

 

《金融IT入门-程序设计》

课程设计报告

 

题目:

用Python编写简易计算器程序

学号:

专业:

班级:

姓名:

指导教师:

 

 

中国地质大学长城学院XX系

2017年月3日

 

1.总体概述:

2.设计目标:

3.程序流程图:

4.程序代码:

5.设计体会:

评分细则

评分项

优秀

良好

中等

上课出勤

上课表现

上机情况

平时作业完成情况

期末大作业:

(1)书写认真程度

(2)内容详实程度

(3)文字表达能力

(4)是否体现观点

简短评语

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

 

 

1、?

?

?

1.?

程?

?

目的:

1)掌握Java?

言的程序?

?

方法;

2)理?

?

系?

?

,?

一步提高?

生的?

件?

?

技?

3)培?

?

生分析、解?

?

?

的能力;

4)提高?

生?

?

?

文撰?

能力。

2.?

程?

?

任?

  

1)?

?

的?

算器?

用程序可以完成加法、?

法、乘法、除法以及取余?

算(可以?

行浮?

?

和?

?

的?

算);

2)有求倒?

、退格和清零功能。

3.?

新要求:

能?

行正切、余弦,以及求平方根、指?

(包括?

e)、自然?

?

?

算。

?

形界面采用?

承windowadapter?

,采取?

用?

方法?

注?

?

听!

4.?

?

要求:

1)?

?

的?

算器?

用程序可以完成加法、?

法、乘法、除法和取余?

算。

且有小?

?

、正?

?

、求倒?

、退格和清零功能。

2)?

程?

?

可?

用Eclipse、JBuilder、NetBeans等作?

?

?

平台以提高?

?

效率,通?

?

料查?

和?

?

?

可能熟?

掌握其中一种集成?

?

?

境。

3)?

真按?

完成?

程?

?

?

告,?

程?

?

?

告?

容包括:

?

?

任?

与要求、需求分析、?

?

思路、?

?

?

?

、?

行?

?

与分析?

?

和?

?

体?

与小?

六?

部分。

2、原理与分析

1.?

?

的技?

及功能

本?

程?

?

是要做一?

?

形界面的?

算器,其界面主要是由swing?

件中的控件构成。

程序?

?

了?

算器的基本功能有:

加、?

、乘、除基本算?

?

算(可以?

行浮?

和?

?

?

算)和sin、cos、tan等三角函?

求值?

算,同?

能?

行指?

?

算和自然?

?

?

算,?

有求倒?

、退格和清零功能。

2.?

?

思路

?

?

?

?

?

算器主要是?

考Windows操作系?

中自?

的?

算器,由于?

者水平和?

?

的限制,不能?

?

算器?

?

到科?

型及其他更复?

的?

型,在?

?

?

程中?

?

考了一些其他的优秀?

?

但本?

算器除了常用的加?

乘除(可以?

行浮?

和?

?

?

算)?

些基本?

算外,?

有求余、求倒、退格、清零,甚至?

能?

行一些复?

科?

的?

算,比如余弦(cos)、正切(tan)、指?

?

算(pow)、自然?

?

?

算(log)、求平方根(sqrt)以及?

e的指?

?

算(exp),并且?

能?

行?

?

?

算。

?

体上?

?

,本?

算器?

?

?

?

,代?

很少,程序很小,但功能?

很?

大,?

是同?

?

算器所不具?

的。

3.?

?

效果?

?

?

?

先在?

?

界面中添加按?

等控件,后在按?

的actionPerformed事件中添加代?

完成其功能其中?

用了Java?

中的Math函?

?

以及各种字符串操作。

?

?

的界面如下:

?

一?

算器?

行界面

3、?

?

?

1.程序思路:

1)本?

用程序?

承自框架?

(JFrame),容器Containerc采用BorderLayout?

?

布局,?

?

行文本框加入到“North¡¨?

域,包含各种按?

的面板JPanelp加入到¡¨Center¡¨?

域。

包含各种按?

的面板JPanelp采用3行6列的网格布局,然后?

?

字按?

和?

算符按?

以及控制按?

用一?

for循?

添加到面板中同?

注?

按?

事件?

听器。

如:

Buttonb=newButton();

b.addActionListener(事件?

听器);

2)事件?

听器中的事件?

理方法voidactionPerformed(ActionEventevt)完成主要的按?

事件的?

理。

事件?

理分以下几种情?

?

字按?

事件(¡¨0¡¨,¡¨1¡¨,¡¨2¡¨¡K¡¨8¡¨,¡¨9¡¨)、?

算符按?

事件(¡¨+¡¨,¡¨-¡§,¡¨*¡¨,¡¨/¡¨,¡¨%¡¨)、正?

?

按?

事件(¡¨+/-¡§)、小?

?

按?

事件(¡¨.¡¨)、等?

按?

事件(¡¨=¡¨)、求倒按?

事件(¡¨求倒¡¨)、退格按?

事件(¡¨退格¡¨)、清除按?

事件(¡§C¡¨)、正切(tan)、余弦(cos),以及求平方根(sqrt)、指?

(pow)、?

e的指?

(exp)、?

?

?

算(log)。

3)在事件?

理,触?

按?

事件?

,先判?

是或是?

字是或是“-/+”是或是“.”,是的?

就?

?

?

“-”、?

字、小?

?

“.”分?

?

入文本框并存放在sum中,然后判?

是或是“退格”、“求倒”等,是的?

?

行相?

的?

理,都不是的?

?

跳到doOperation()?

行?

算同?

?

?

算符存放在preOperater中。

触?

按?

事件?

,要?

一步分析,是重新?

始?

算?

触?

的按?

事件?

是?

算中?

触?

的按?

事件。

4)?

算器完成的是一?

?

?

表?

式,如:

3+2,所以可以采用一?

?

?

?

存?

?

字或字符,如3,+,2分?

存?

在?

?

中,最后?

算?

,可以一一取出?

?

行?

算。

5)利用按?

?

?

?

算器的各?

?

算符和操作符,通?

按?

的事件?

理?

?

按?

?

算功能。

6)利用文本框?

示操作?

和?

算?

果。

 

2.功能?

?

1)加?

乘除求余以及指?

?

voiddoOperation(){

doublem=Double.parseDouble(x.getText());

if(preOperater.equals(""))sum=m;//?

前一操作,?

果?

?

?

入?

//?

?

果与文本框中的?

据按照前一?

?

算符?

if(preOperater.equals("+"))sum=sum+m;//加法?

if(preOperater.equals("-"))sum=sum-m;//?

法?

if(preOperater.equals("*"))sum=sum*m;//乘法?

if(preOperater.equals("/"))sum=sum/m;//除法?

if(preOperater.equals("%"))sum=sum%m;//求余

if(preOperater.equals("pow"))sum=Math.pow(sum,m);//求?

,指?

?

}

2)其他?

Ⅰ、求平方根

Voidsqrt(){

doublem=Double.parseDouble(x.getText());

if(m<0)

x.setText("?

?

不能?

根?

");

else

x.setText(""+Math.sqrt(m));

}

Ⅱ、?

?

?

Voidlog(){

doublem=Double.parseDouble(x.getText());

if(m<0)

x.setText("?

?

不能?

行自然?

?

?

算");

else

x.setText(""+Math.log(m));

}

Ⅲ、余弦?

Voidcos(){

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.cos(m));

}

Ⅳ、正切?

Voidtan(){

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.tan(m));

}

Ⅴ、e的指?

?

Voidexp(){

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.exp(m));

}

Ⅵ、倒?

?

Voiddaoshu(){

if(Double.parseDouble(x.getText())==0)

x.setText("除?

不能?

零");

else{

x.setText(""+1/(Double.parseDouble(x.getText())));

preOperater="";

}

}

3)主要方法?

publiccos(doublex)//求x的余弦函?

publictan(doublex)//求x的正切函?

publicsqrt(doublex)//求x的平方根

publiclog(doublex)//求x的自然?

?

?

publicexp(doublex)//求e的x次?

publicpow(doublea,doubleb)//求a的b次?

publicdaoshu(doublex)//求x的倒?

4)程序流程?

3.算法思路:

?

是一?

?

?

的?

算器,里面所涉及到的功能就是加、?

、乘、除、?

方?

算、等基本功能。

?

?

定?

?

?

?

量?

保存?

?

算操作的前一?

?

和?

前在?

算器上?

示的?

字即可,而?

于?

?

算的操作要求更加?

?

,只需要一?

?

量就可以了。

?

然?

?

据?

行判?

是必不可少的。

在?

入?

据之后Character.isDigit(Command.charAt(0))判?

?

入的?

据是否符合要求。

不符合要求?

出提示,符合要求以后?

判?

?

?

的?

算符,?

行相?

的操作。

?

于?

?

算操作要?

一步判?

是否符合要求,如果是就?

入下步?

算,如果不是就?

出相?

的提示:

“?

?

不能?

根?

";"除?

不能?

零";用try….catch

捕?

异常,如果有异常?

中止活?

在?

行?

方(sqrt)?

算?

,如果?

入?

?

?

?

,?

?

出"?

?

不能?

根?

",中止?

算。

在?

行自然?

?

?

算?

(log)如果?

入?

?

?

?

,?

?

出"?

?

不能?

行自然?

?

?

算”。

在?

行三角函?

?

算?

(cos、tan)不必考?

?

入的?

字是否符合?

范,?

于任意?

入的?

函?

本身有一?

判?

的?

程,都能把?

入的?

?

化?

合适的范?

,?

而得到正确的?

果。

?

于加?

乘除等?

?

算操作,每?

功能都由每一?

模?

?

?

?

,?

按下加按?

?

,?

行相?

的加法操作,?

一?

?

相?

的操作?

?

有要求;?

?

?

?

?

?

,?

?

行?

法操作,由jTextField.getText()得到?

字按?

的值?

示在相?

的文本框中;乘法操作在?

?

一?

操作?

然后?

?

乘?

再?

?

另一?

?

得出相?

的?

果?

示在文本框中;在作除法?

算?

,?

被除?

?

?

?

零?

,?

用catch?

行异常?

理,?

出“Infinity”。

4.?

据分析:

在事件?

理,触?

按?

事件?

,先判?

是或是?

字是或是“-/+”是或是“.”,是的?

就?

?

?

“-”、?

字、小?

?

“.”分?

?

入文本框并存放在sum中,然后判?

是或是“退格”、“求倒”等,是的?

?

行相?

的?

理,都不是的?

?

跳到doOperation()?

行?

算同?

?

?

算符存放在preOperater中。

触?

按?

事件?

,要?

一步分析,是重新?

始?

算?

触?

的按?

事件?

是?

算中?

触?

的按?

事件。

四、?

?

?

果与分析

?

?

行?

?

1)?

行加?

乘除求余以及指?

?

?

?

?

的浮?

加法?

算(例:

-1.2+4=2.8)

依次按“+/-”(也可以最后按),“1.2”,“+”,“4”?

按下“+”?

按下“4”?

按下“=”?

分析:

?

出的?

果如?

所示,?

算器可以直接?

入“-”,?

算比?

?

便,?

?

?

的浮?

?

加法做起?

?

有?

?

2)求倒

先?

入1.25,再按下“求倒”?

分析:

?

出的?

果如?

所示,倒?

功能?

?

,?

算?

,不?

是?

果,?

入的?

据同?

可以先?

?

倒?

功能后再?

行相?

的?

算,?

有影?

 

3)退格

?

入?

字1265

按下“退格”?

分析:

?

出的?

果如?

所示,本?

算器退格?

有一?

特?

是,就算是是?

算后得出的?

果也能?

?

退格,缺?

是不能很好的?

理小?

?

的?

?

,因?

小?

?

也是字符串的一部分。

 

4)清零

按下“c”?

分析:

?

出的?

果如?

所示,按清零?

后?

据全部消除。

5)求余弦、求正切、?

e求?

、求平方根、求自然?

?

、求倒?

(例:

cos30)先按下“30”?

再按下“cos”?

6)?

?

?

算(例:

2*3*4=24.0)

依次按下“3”、“*”、“4”、“/”、“6”、“=”?

7)异常?

理(例:

求倒?

?

入?

?

0)

先按“0”?

再按“求倒”?

 

5、?

?

体?

与小?

作?

一名?

算机科?

与技?

?

?

的?

生,我?

得能做?

似的?

程?

?

是十分有意?

,而且是十分必要的。

?

?

一段?

?

的努力,?

算器?

程?

?

?

于?

束了,?

然很忙碌、很疲?

,但是收?

很大。

?

些天我几乎每天的?

注和辛?

,?

回了我?

Java?

?

?

言的重新的?

?

,?

Java?

?

?

程?

言也有了深刻的理解。

?

然在本次?

程?

?

的?

程中,我碰到了很多?

?

,比如求倒?

,最先我是把按?

新建成“1/x”,但是出?

?

?

,怎么找都?

找出?

?

?

,其后重新整理思?

才?

?

不能?

成“1/x”,因?

“1/x”中第一?

字符是?

字,而Character.isDigit(Command.charAt(0))?

?

“1/x”?

做?

字?

?

入文本框。

?

有就是?

?

退格功能?

不知道怎?

?

理,最后上网XX了一下才找到了方法,?

也?

我深刻体?

到了网?

的作用。

?

然?

遇到了其他的困?

,?

些花?

了我很多?

?

,使我失?

了很多次,但是通?

我?

不解的努力?

是一一克服了?

些?

?

,最?

?

是成功了。

?

然在?

次?

?

中也暴露自己一些?

?

,?

?

了自己的很多不足,自己知?

的很多漏洞,基?

知?

的不牢固,看到了自己的?

?

?

?

?

是比?

缺乏,理?

?

系?

?

的能力?

急需提高。

?

次?

程?

?

,除了全面系?

的理解了JAVA面向?

象?

程原理的一般原理和基本?

?

方法,?

把死板的?

本知?

?

得生?

有趣,激?

了?

?

的?

极性。

把?

?

的?

程原理的知?

?

化,把?

堂上?

的知?

通?

自己?

?

的程序表示出?

,?

加深了?

理?

知?

的理解。

?

程?

?

中程序比?

复?

,在?

?

?

?

?

仔?

,在程序?

?

?

,注意?

力?

找程序中存在的不足之?

,?

而使功能更加完善。

?

然在做?

程?

?

要有很大的耐心,做的?

程就是不?

的?

?

—修改—?

?

?

程,只有?

下心?

才能把?

?

解?

 

6、?

考文?

[1]於?

?

等《Java程序?

?

与?

用?

?

》(第二版)清?

大?

出版社2009.5

[2]BruceEckel《Java?

程思想》机械工?

出版社2007.6

[3]?

?

林等《Java?

言最新?

用案例教程》(第2版)清?

大?

出版社2010.7

 

7、源程序

importjava.util.*;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassCalculaterextendsJFrameimplementsActionListener{

JTextFieldx;//文本框

StringpreOperater="";//上一次的?

算符

doublesum=0;//?

算?

publicCalculater(Stringtitle){

super(title);

Containerc=getContentPane();//容器

c.setLayout(newBorderLayout());//容器采用?

?

布局

x=newJTextField(50);

c.add("North",x);

Stringbuttoned[]={"0","1","2","3","+/-",".","C","退格","求倒","4","5","6","7","+","-","*","/","%","8","9","=","sqrt","pow","log","cos","tan","exp"};

JPanelp=newJPanel();//面板

p.setLayout(newGridLayout(3,9,10,10));//面板采用行列?

3,6的网格布局

for(intk=0;k

for循?

?

按?

添加?

面板并注?

?

听器

JButtonb=newJButton(buttoned[k]);

p.add(b);

b.addActionListener(this);

}

c.add("Center",p);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//?

?

用?

事件,根据?

?

按?

?

?

相?

操作

publicvoidactionPerformed(ActionEvente){

StringCommand=e.getActionCommand();

try{

if(Character.isDigit(Command.charAt(0))){//如果按?

事件?

?

字?

x.setText(x.getText()+Command);//添加?

}

elseif(Command.equals(".")){//如果按?

事件?

"."?

xiaoshu();

}

elseif(Command.equals("+/-")){//如果按?

事件?

"+/-"?

fuhao();

}

elseif(Command.equals("退格")){//如果按?

事件?

"退格"?

backspace();

}

elseif(Command.equals("=")){//如果按?

事件?

"="?

dengyu();

}

elseif(Command.equals("sqrt")){//如果按?

事件?

"sqrt"?

sqrt();

}

elseif(Command.equals("log")){//如果按?

事件?

"log"?

log();

}

elseif(Command.equals("cos")){//如果按?

事件?

"cos"?

cos();

}

elseif(Command.equals("tan")){//如果按?

事件?

"tan"?

tan();

}

elseif(Command.equals("exp")){//如果按?

事件?

"exp"?

exp();

}

elseif(Command.equals("求倒")){//如果按?

事件?

"求倒"?

qiudao();

}

elseif(Command.equals("C")){//如果按?

事件?

"C"?

clear();

}

else{doOperation();//?

?

?

算符和?

入的?

x.setText("");

preOperater=Command;

}

}catch(Exceptionex){sum=0;x.setText("");}

}

voidxiaoshu(){//添加小?

?

Strings=x.getText();

if(s.indexOf(".")==-1)

x.setText(s+".");

}

voidfuhao(){//添加?

?

Strings=x.getText();

if(s.indexOf("-")==-1)

x.setText("-"+x.getText());

}

voidbackspace(){//退格

Strings=x.getText();

if(s.length()>0)

x.setText(s.substring(0,s.length()-1));//?

除最后一?

字符

}

voiddengyu(){//等?

,?

示?

算?

doOperation();

x.setText(""+sum);

preOperater="";

}

voidsqrt(){//求?

?

的平方根

doublem=Double.parseDouble(x.getText());

if(m<0)

x.setText("?

?

不能?

根?

");

else

x.setText(""+Math.sqrt(m));

}

voidlog(){//求?

?

的自然?

?

doublem=Double.parseDouble(x.getText());

if(m<0)

x.setText("?

?

不能?

行自然?

?

?

算");

else

x.setText(""+Math.log(m));

}

voidcos(){//求?

?

的余弦

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.cos(m));

}

voidtan(){//求?

?

的正切

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.tan(m));

}

voidexp(){//求e的?

doublem=Double.parseDouble(x.getText());

x.setText(""+Math.exp(m));

}

voidqiudao(){//求倒

if(Double.parseDouble(x.getText())==0)

x.setText("除?

不能?

零");

else{

x.setText(""+1/(Double.parseDouble(x.getText())));

preOperater="";

}

}

voidclear(){//清零

sum=0;

x.setText("");

preOperater="";

}

//根据?

?

的?

算符?

前面?

?

的?

果sum与文本框中的?

据?

行?

voiddoOperation(){

doublem=Double.parseDouble(x.getText());

if(preOperater.equals(""))sum=m;

//?

?

果与文本框中的?

据按照前一?

?

算符?

if(preOperater.equals("+"))sum=sum+m;//加法?

if(preOperater.equals("-"))sum=sum-m;//?

法?

if(preOperater.equals("*"))sum=sum*m;//乘法?

if(preOperater.equals("/"

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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