标准型计算器版开发过程.docx

上传人:b****7 文档编号:8823274 上传时间:2023-02-01 格式:DOCX 页数:14 大小:32.59KB
下载 相关 举报
标准型计算器版开发过程.docx_第1页
第1页 / 共14页
标准型计算器版开发过程.docx_第2页
第2页 / 共14页
标准型计算器版开发过程.docx_第3页
第3页 / 共14页
标准型计算器版开发过程.docx_第4页
第4页 / 共14页
标准型计算器版开发过程.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

标准型计算器版开发过程.docx

《标准型计算器版开发过程.docx》由会员分享,可在线阅读,更多相关《标准型计算器版开发过程.docx(14页珍藏版)》请在冰豆网上搜索。

标准型计算器版开发过程.docx

标准型计算器版开发过程

第一讲

一、课堂教学

1、设计界面

2、为控件命名

控件名

说明

控件名

说明

1

jButtonDigit0~9

0~9

11

jButtonEvaluate

=

2

jButtonDecimal

.

12

jButtonBack

Back

3

jButtonSign

+/-

13

jButtonClearEntry

CE

4

jButtonDivide

/

14

jButtonClear

C

5

jButtonMultiply

*

15

jTextFieldDisplayer

显示窗

6

jButtonSubtract

-

16

jTextFieldMemory

存储器标志

7

jButtonAdd

+

17

jButtonMemoryClear

MC

8

jButtonSqrt

Sqrt

18

jButtonMemoryRecall

MR

9

jButtonPercent

%

19

jButtonMemorySave

MS

10

jButtonReciprocal

1/x

20

jButtonMemoryAdd

M+

3、为数字键1添加ActionPerfored事件处理过程。

privatevoidjButtonDigit1ActionPerformed(java.awt.event.ActionEventevt){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(!

s1.equals("0.")){

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2+"1.");

}else{

jTextFieldDisplayer.setText("1.");

}

}

4、为数字键2添加ActionPerformed事件处理过程。

privatevoidjButtonDigit2ActionPerformed(java.awt.event.ActionEventevt){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(!

s1.equals("0.")){

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2+"2.");

}else{

jTextFieldDisplayer.setText("2.");

}

}

5、考虑到数字键1和数字键2的ActionPerformed事件处理过程中大量代码是重复的,因此创建一个自定义的方法inputDigit,用于处理用户输入的数字键。

privatevoidinputDigit(Stringdigit){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(!

s1.equals("0.")){

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2+digit+".");

}else{

jTextFieldDisplayer.setText(digit+".");

}

}

6、使用inputDigit,为数字键3添加ActionPerformed事件处理过程。

privatevoidjButtonDigit3ActionPerformed(java.awt.event.ActionEventevt){

inputDigit(“3”);

}

7、为Back键添加添加ActionPerformed事件处理过程。

privatevoidjButtonBackspaceActionPerformed(java.awt.event.ActionEventevt){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(len>2){

s2=s1.substring(0,len-2);

jTextFieldDisplayer.setText(s2+".");

}else{

jTextFieldDisplayer.setText("0.");

}

}

二、实验内容

1、验证标准型计算器(第一版)中数字键、Back键的功能;

2、为“+/-”键、“.”键添加功能。

第二讲

一、课堂教学

1、所有数字键的ActionPerformed事件处理过程的代码均可改为

inputDigit(evt.getActionCommand());

2、”+/-”键的ActionPerformed事件处理过程。

privatevoidjButtonSignActionPerformed(java.awt.event.ActionEventevt){

Strings1=jTextFieldDisplayer.getText(),s2;

if(s1.equals("0.")){

return;

}

if(s1.substring(0,1).equals("-")){

s2=s1.substring(1,s1.length());

}else{

s2="-"+s1;

}

jTextFieldDisplayer.setText(s2);

}

3、”.”键。

考虑到一个数值中不允许出现1个以上的小数点。

(1)先为Calculator类添加inputDecimal字段。

privatebooleaninputDecimal=false;

(2)然后为”.”键添加ActionPerformed事件处理过程。

privatevoidjButtonDecimalActionPerformed(java.awt.event.ActionEventevt){

inputDecimal=true;

}

(3)最后修改inputDigit方法。

privatevoidinputDigit(Stringdigit){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(inputDecimal){

jTextFieldDisplayer.setText(s1+digit);

}else{

if(!

s1.equals("0.")){

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2+digit+".");

}else{

jTextFieldDisplayer.setText(digit+".");

}

}

}

4、为”CE”键添加ActionPerformed事件处理过程。

privatevoidjButtonClearEntryActionPerformed(java.awt.event.ActionEventevt){

jTextFieldDisplayer.setText("0.");

inputDecimal=false;

}

5、”Sqrt”键。

(1)为”Sqrt”键添加ActionPerformed事件处理过程。

privatevoidjButtonSqrtActionPerformed(java.awt.event.ActionEventevt){

doublen=Double.parseDouble(jTextFieldDisplayer.getText());

n=Math.sqrt(n);

jTextFieldDisplayer.setText(Double.toString(n));

}

(2)此时运行项目,看到点击”Sqrt”键后可以计算出显示窗内原有数字的算数平方根,但是再继续输入数字时就会出现问题。

要解决这个问题可以为Calculator类添加字段clearDisplayer。

privatebooleanclearDisplayer=false;

(3)修改”Sqrt”键的ActionPerformed事件处理过程。

privatevoidjButtonSqrtActionPerformed(java.awt.event.ActionEventevt){

doublen=Double.parseDouble(jTextFieldDisplayer.getText());

n=Math.sqrt(n);

jTextFieldDisplayer.setText(Double.toString(n));

clearDisplayer=true;

}

(4)修改inputDigit方法

privatevoidinputDigit(Stringdigit){

Strings1=jTextFieldDisplayer.getText(),s2;

if(clearDisplayer){

s1=("0.");

inputDecimal=false;

clearDisplayer=false;

}

intlen=s1.length();

if(inputDecimal){

jTextFieldDisplayer.setText(s1+digit);

}else{

if(!

s1.equals("0.")){

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2+digit+".");

}else{

jTextFieldDisplayer.setText(digit+".");

}

}

}

二、课堂测验

1、”Back”键在删除负数时删到最后会出问题,如何改正它?

2、对负数开放时显示窗会显示”NAN”,如何让它显示为”E”?

三、实验内容

1、为”1/x”键添加功能。

2、为”+”、”-”、”*”、”/”、”=”、”%”键添加功能。

第三讲

一、课堂教学

1、修改”Back”键的ActionPerformed事件处理程序。

privatevoidjButtonBackspaceActionPerformed(java.awt.event.ActionEventevt){

Strings1=jTextFieldDisplayer.getText(),s2;

intlen=s1.length();

if(s1.substring(0,1).equals("-")){//如果显示窗里的数为负数

if(len>3){//如果显示窗里的数总长度大于3

if(s1.substring(len-1,len).equals(".")){//如果显示窗里的数为整数

s2=s1.substring(0,len-2);

jTextFieldDisplayer.setText(s2+".");

inputDecimal=false;

}else{//如果显示窗里的数为实数

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2);

}

}else{//如果显示窗里的数总长度小于等于3

jTextFieldDisplayer.setText("0.");

}

}else{//如果显示窗里的数为正数

if(len>2){//如果显示窗里的数总长度大于2

if(s1.substring(len-1,len).equals(".")){//如果显示窗里的数为整数

s2=s1.substring(0,len-2);

jTextFieldDisplayer.setText(s2+".");

inputDecimal=false;

}else{//如果显示窗里的数为实数

s2=s1.substring(0,len-1);

jTextFieldDisplayer.setText(s2);

}

}else{//如果显示窗里的数总长度小于等于2

jTextFieldDisplayer.setText("0.");

}

}

}

2、修改”Sqrt”键的ActionPerformed事件处理过程。

privatevoidjButtonSqrtActionPerformed(java.awt.event.ActionEventevt){

doublen=Double.parseDouble(jTextFieldDisplayer.getText());

if(n<0){

jTextFieldDisplayer.setText("不可对负数开方!

");

}else{

n=Math.sqrt(n);

jTextFieldDisplayer.setText(Double.toString(n));

}

clearDisplayer=true;

}

3、”1/x”键的ActionPerformed事件处理程序过程。

privatevoidjButtonReciprocalActionPerformed(java.awt.event.ActionEventevt){

doublen=Double.parseDouble(jTextFieldDisplayer.getText());

if(Math.abs(n)<10E-16){

jTextFieldDisplayer.setText("不可对零求倒数!

");

}else{

n=1/n;

jTextFieldDisplayer.setText(Double.toString(n));

}

clearDisplayer=true;

}

4、”+”、”-”、”*”、”/”键

(1)先为Calculator类添加两个字段

privatedoublelastOperand=0;//上一次输入的操作数

privateStringlastOperator="";//上一次输入的运算符

(2)然后为Calculator类新建一个方法inputOperator。

privatevoidinputOperator(Stringoperator){

if(lastOperator.isEmpty()||inputEvaluate){//如果是第一次输入运算符或上一次运算符是等号

lastOperand=Double.parseDouble(jTextFieldDisplayer.getText());

lastOperator=operator;

clearDisplayer=true;

inputEvaluate=false;

return;

}

if(clearDisplayer){//如果是连续输入运算符

lastOperator=operator;

return;

}

doubleresult=0,operand=Double.parseDouble(jTextFieldDisplayer.getText());

switch(lastOperator.charAt(0)){

case'+':

result=lastOperand+operand;

break;

case'-':

result=lastOperand-operand;

break;

case'*':

result=lastOperand*operand;

break;

case'/':

result=lastOperand/operand;

break;

}

jTextFieldDisplayer.setText(Double.toString(result));

lastOperand=result;

lastOperator=operator;

clearDisplayer=true;

}

(3)为”+”、”-”、”*”、”/”键添加相同的ActionPerformed时间处理过程。

inputOperator(evt.getActionCommand());

5、”=”键

(1)先为Calculator类添加字段。

privatebooleaninputEvaluate=false;//用于判断用户是否连续输入等号

(2)”=”键的ActionPerformed事件处理过程。

privatevoidjButtonEvaluateActionPerformed(java.awt.event.ActionEventevt){

if(lastOperator.isEmpty()){

return;

}

doublet=0,result=0,operand=Double.parseDouble(jTextFieldDisplayer.getText());

if(inputEvaluate){//如果上一次输入的运算符是等号

t=operand;

operand=lastOperand;

lastOperand=t;

}

switch(lastOperator.charAt(0)){

case'+':

result=lastOperand+operand;

break;

case'-':

result=lastOperand-operand;

break;

case'*':

result=lastOperand*operand;

break;

case'/':

result=lastOperand/operand;

break;

}

jTextFieldDisplayer.setText(Double.toString(result));

lastOperand=operand;

clearDisplayer=true;

inputEvaluate=true;

}

6、为”%”键添加ActionPerformed事件处理过程。

privatevoidjButtonPercentActionPerformed(java.awt.event.ActionEventevt){

doublen=Double.parseDouble(jTextFieldDisplayer.getText());

n=lastOperand*n/100;

jTextFieldDisplayer.setText(Double.toString(n));

}

7、为”C”键添加ActionPerformed事件处理过程。

privatevoidjButtonClearActionPerformed(java.awt.event.ActionEventevt){

inputDecimal=false;

clearDisplayer=false;

lastOperand=0;

lastOperator="";

inputEvaluate=false;

jTextFieldDisplayer.setText("0.");

}

8、”M+”键的ActionPerformed事件处理过程。

privatevoidjButtonMemoryAddActionPerformed(java.awt.event.ActionEventevt){

memory+=Double.parseDouble(jTextFieldDisplayer.getText());

if(Math.abs(memory)<1E-16){

jTextFieldMemory.setText("");

}else{

jTextFieldMemory.setText("M");

}

clearDisplayer=true;

}

9、”MS”键的ActionPerformed事件处理过程。

privatevoidjButtonMemorySaveActionPerformed(java.awt.event.ActionEventevt){

memory=Double.parseDouble(jTextFieldDisplayer.getText());

if(Math.abs(memory)<1E-16){

jTextFieldMemory.setText("");

}else{

jTextFieldMemory.setText("M");

}

clearDisplayer=true;

}

10、”MR”键的Actionperformed事件处理过程。

privatevoidjButtonMemoryRecallActionPerformed(java.awt.event.ActionEventevt){

jTextFieldDisplayer.setText(Double.toString(memory));

clearDisplayer=true;

}

11、”MC”键的ActionPerformed事件处理过程。

privatevoidjButtonMemoryClearActionPerformed(java.awt.event.ActionEventevt){

memory=0;

jTextFieldMemory.setText("");

clearDisplayer=true;

}

二、实验内容

1、验证为”1/x”、”+”、”-”、”*”、”/”、”=”、”%”键添加的功能;

2、验证记忆功能。

3、为计

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

当前位置:首页 > 高中教育 > 小学教育

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

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