Java面向对象程序设计设计性实验报告.docx

上传人:b****0 文档编号:9200218 上传时间:2023-05-17 格式:DOCX 页数:21 大小:220.16KB
下载 相关 举报
Java面向对象程序设计设计性实验报告.docx_第1页
第1页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第2页
第2页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第3页
第3页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第4页
第4页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第5页
第5页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第6页
第6页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第7页
第7页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第8页
第8页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第9页
第9页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第10页
第10页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第11页
第11页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第12页
第12页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第13页
第13页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第14页
第14页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第15页
第15页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第16页
第16页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第17页
第17页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第18页
第18页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第19页
第19页 / 共21页
Java面向对象程序设计设计性实验报告.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java面向对象程序设计设计性实验报告.docx

《Java面向对象程序设计设计性实验报告.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计设计性实验报告.docx(21页珍藏版)》请在冰点文库上搜索。

Java面向对象程序设计设计性实验报告.docx

Java面向对象程序设计设计性实验报告

《8251086-Java面向对象程序设计》设计性实验报告

 

实验题目:

小组成员:

专业年级:

日期:

指导教师:

吴春胤

评分表

评分项

分数

1.小组独立完成的情况

2.程序的功能丰富程度(工作量)

3.程序界面的合理性、友好性

4.程序运行正确性和错误处理能力

5.实验报告格式规范性、内容详细程序、文字表达能力

总评:

评分说明:

1.如果发现抄袭现象或不按时提交实验报告,可直接评定为不合格。

2.先按单项评分,再求各项的平均分,再定总评等级。

总评分为:

优、良、中、及格和不及格。

标准计算器

1、系统目标

开发一个界面和谐,简单易用的标准计算器,实现基本的四则运算和求余、取反、求倒数、开根号等功能。

2、基本功能

a.0-9等10个数字键,实现输入数字;

b.“+”、“-”、“*”、“/”四个功能键,实现输入数字的四则运算;

c.“√”、“%”、“1/X”、“+/-”四个功能键,分别实现输入数字的开根号、求余、求倒数、取相反数的功能;

d.“Backspace”、“CE”、“C”三个功能键,分别实现退格、删除、归零的功能。

3、系统设计

在第一部分完成添加按钮以及面板设计与整合,第二部分实现各算法的具体实现过程,第三部分定义接口的具体内容,显示说明窗,第四部分主方法定义主界面的属性。

具体实现方法参考以下代码及说明注解。

第一部分:

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.JOptionPane;

publicclassCalculatorextendsJFrameimplementsActionListener{

//按钮的定义

JButtonn1,n2,n3,n4,n5,n6,n7,n8,n9,n0,

t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,

m1,m2,m3,s1,s2,s3,s4,s5;

JTextFieldjtextfield;

//计算器界面的布局以及添加监听器

publicCalculator(){

//添加第一个面板,存放数字键跟运算键

JPanelp1=newJPanel();

Fontfont=newFont("楷体",Font.BOLD,20);

p1.setLayout(newGridLayout(4,5,10,10));

n1=newJButton("7");n1.setFont(font);

p1.add(n1);n1.addActionListener(this);

n2=newJButton("8");n2.setFont(font);

p1.add(n2);n2.addActionListener(this);

n3=newJButton("9");n3.setFont(font);

p1.add(n3);n3.addActionListener(this);

t1=newJButton("/");t1.setFont(font);

p1.add(t1);t1.addActionListener(this);

t2=newJButton("√");t2.setFont(font);

p1.add(t2);t2.addActionListener(this);

n4=newJButton("4");n4.setFont(font);

p1.add(n4);n4.addActionListener(this);

n5=newJButton("5");n5.setFont(font);

p1.add(n5);n5.addActionListener(this);

n6=newJButton("6");n6.setFont(font);

p1.add(n6);n6.addActionListener(this);

t3=newJButton("*");t3.setFont(font);

p1.add(t3);t3.addActionListener(this);

t4=newJButton("%");t4.setFont(font);

p1.add(t4);t4.addActionListener(this);

n7=newJButton("1");n7.setFont(font);

p1.add(n7);n7.addActionListener(this);

n8=newJButton("2");n8.setFont(font);

p1.add(n8);n8.addActionListener(this);

n9=newJButton("3");n9.setFont(font);

p1.add(n9);n9.addActionListener(this);

t5=newJButton("-");t5.setFont(font);

p1.add(t5);t5.addActionListener(this);

t6=newJButton("1/x");t6.setFont(font);

p1.add(t6);t6.addActionListener(this);

n0=newJButton("0");n0.setFont(font);

p1.add(n0);n0.addActionListener(this);

t7=newJButton("+/-");t7.setFont(font);

p1.add(t7);t7.addActionListener(this);

t8=newJButton(".");t8.setFont(font);

p1.add(t8);t8.addActionListener(this);

t9=newJButton("+");t9.setFont(font);

p1.add(t9);t9.addActionListener(this);

t10=newJButton("=");t10.setFont(font);

p1.add(t10);t10.addActionListener(this);

//添加第二个面板,存放退格,归零等功能键

JPanelp2=newJPanel();

p2.setLayout(newGridLayout(1,3,10,10));

m1=newJButton("Backspace");m1.setFont(font);

p2.add(m1);m1.addActionListener(this);

m2=newJButton("CE");m2.setFont(font);

p2.add(m2);m2.addActionListener(this);

m3=newJButton("C");m3.setFont(font);

p2.add(m3);m3.addActionListener(this);

//添加第三个面板,整合第一跟第二个面板

JPanelp3=newJPanel(newBorderLayout(10,10));

p3.add(p1,BorderLayout.CENTER);

p3.add(p2,BorderLayout.NORTH);

//添加第四个面板,添加四个功能键

JPanelp4=newJPanel();

p4.setLayout(newGridLayout(4,1,10,10));

s1=newJButton("MC");s1.setFont(font);

p4.add(s1);s1.addActionListener(this);

s2=newJButton("MR");s2.setFont(font);

p4.add(s2);s2.addActionListener(this);

s3=newJButton("MS");s3.setFont(font);

p4.add(s3);s3.addActionListener(this);

s4=newJButton("M+");s4.setFont(font);

p4.add(s4);s4.addActionListener(this);

//添加第五个面板,存放说明键

JPanelp5=newJPanel();

p5.setLayout(newGridLayout(1,1,10,10));

s5=newJButton("说明");

ExplainClasslistenerExplain=newExplainClass();

s5.addActionListener(listenerExplain);

p5.add(s5);

//添加第六个面板,整合第四跟第五个面板

JPanelp6=newJPanel(newBorderLayout(10,10));

p6.add(p4,BorderLayout.CENTER);

p6.add(p5,BorderLayout.NORTH);

//添加第七个面板,整合以上六个面板

JPanelp7=newJPanel(newBorderLayout(10,10));

p7.add(p3,BorderLayout.CENTER);

p7.add(p6,BorderLayout.WEST);

setLayout(newBorderLayout(10,10));

add(p7,BorderLayout.CENTER);

jtextfield=newJTextField();

jtextfield.setEnabled(false);

jtextfield.setHorizontalAlignment(JTextField.RIGHT);

jtextfield.setFont(font);

add(jtextfield,BorderLayout.NORTH);

}

 

第二部分:

//实现功能键的方法

publicvoidactionPerformed(ActionEvente){

Objecttarget=e.getSource();

Stringconstant=e.getActionCommand();

if("0123456789.".indexOf(constant)>0||"0123456789.".indexOf(constant)==0)

Number(constant);//判断输入的第一个数是否为数字

elseif(target==t7)

isAS();//对输入的数字取反

elseif(target==t6){

jtextfield.setText(""+(1.0/(Double.parseDouble(jtextfield.getText()))));//对输入的数字取倒数

}

elseif(target==t2){

jtextfield.setText(""+Math.sqrt(Double.parseDouble(jtextfield.getText())));//对输入的数字开根号

}

elseif(target==m1)

isBackspace();//调用退格方法

elseif(target==m2)

isCE();

elseif(target==m3)

isC();

elseif(target==s1)

isMC();

elseif(target==s2)

isMR();

elseif(target==s3)

isMS();

elseif(target==s4)

isMA();

else

Result(constant);

}

booleanisFirstDigit=true;

//判断第一个输入的字符是否为数字

publicvoidNumber(Stringbutton){

if(isFirstDigit)

jtextfield.setText(button);

elseif((button.equals("."))&&(jtextfield.getText().indexOf(".")<0))

jtextfield.setText(jtextfield.getText()+".");

elseif(!

button.equals("."))

jtextfield.setText(jtextfield.getText()+button);

isFirstDigit=false;

}

//退格方法的具体实现过程

publicvoidisBackspace(){

Stringtemp=jtextfield.getText();

intk=temp.length();

if(k!

=0){

temp=temp.substring(0,k-1);

jtextfield.setText(temp);

}elsejtextfield.setText("0");

}

publicvoidisCE(){

jtextfield.setText("0");

isFirstDigit=true;

}

//归零方法的具体实现过程

publicvoidisC(){

jtextfield.setText("0");

isFirstDigit=true;

Mnumber=0;

if(M)

s5.setText(String.valueOf(Mnumber));

}

doubleMnumber=0;

booleanM=false;

publicvoidisMC(){

Mnumber=0;

s5.setText(String.valueOf(Mnumber));

M=true;

}

publicvoidisMR(){

Stringlen=String.valueOf(Mnumber);

intk=len.length();

if(k>7)

JOptionPane.showMessageDialog(null,"具体数字为:

"

+Mnumber,"缓存区数字过长",JOptionPane.INFORMATION_MESSAGE);

else

s5.setText(String.valueOf(Mnumber));M=true;

}

publicvoidisMS(){

Mnumber-=Double.valueOf(jtextfield.getText());

s5.setText("M-");M=true;

}

publicvoidisMA(){

Mnumber+=Double.valueOf(jtextfield.getText());

s5.setText("M+");M=true;

}

publicvoidisAS(){

doubleOnumber=-Double.valueOf(jtextfield.getText());

jtextfield.setText(String.valueOf(Onumber));

}

doublenumber=0;

Stringoperator="=";

publicvoidResult(Stringbutton){

if(operator.equals("+"))

number+=Double.valueOf(jtextfield.getText());

elseif(operator.equals("-"))

number-=Double.valueOf(jtextfield.getText());

elseif(operator.equals("*"))

number*=Double.valueOf(jtextfield.getText());

elseif(operator.equals("/")){

if(Double.valueOf(jtextfield.getText())==0){

jtextfield.setText("");

JOptionPane.showMessageDialog(null,"分母输入违法",

"标准计算器",JOptionPane.ERROR_MESSAGE);}

else

number/=Double.valueOf(jtextfield.getText());

}

elseif(operator.equals("="))

number=Double.valueOf(jtextfield.getText());

elseif(operator.equals("1/x"))

number=1/Double.valueOf(jtextfield.getText());

elseif(operator.equals("sqrt"))

number=Math.sqrt(Double.valueOf(jtextfield.getText()));

elseif(operator.equals("%"))

number%=Double.valueOf(jtextfield.getText());

jtextfield.setText(String.valueOf(number));

operator=button;

isFirstDigit=true;

}

}

第三部分:

//添加一个接口,显示说明内容的窗口

classExplainClassimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

Stringoutput="说明:

"+"此计算器由陈景伦和王永晶共同开发。

"+"\n"+"①MC,MR,MS,M+功能键正在开发中,敬请期待。

"

+"\n"+"②因为时间紧迫,在测试中还存在一些问题;"

+"\n"+"③按键功能说明:

"

+"\n"+"C:

归零,清除当前的计算;"

+"\n"+"+/-:

对输入数字取相反数;"+"\n"+"√:

开平方;"

+"\n"+"%:

对计算结果求余;"+"\n"+"1/x:

求倒数";

JOptionPane.showMessageDialog(null,output,"说明",JOptionPane.DEFAULT_OPTION);

}

}

第四部分:

//主方法publicstaticvoidmain(String[]args){

Calculatorframe=newCalculator();

frame.setTitle("标准计算器");

frame.setSize(500,300);

frame.setResizable(false);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

4、系统的程序结构

Calculator

n1:

JButton

n2:

JButton

n3:

JButton

n4:

JButton

n5:

JButton

n6:

JButton

n7:

JButton

n8:

JButton

n9:

JButton

n0:

JButton

t1:

JButton

t2:

JButton

t3:

JButton

t4:

JButton

t5:

JButton

t6:

JButton

t7:

JButton

t8:

JButton

t9:

JButton

t10:

JButton

m1:

JButton

m2:

JButton

m3:

JButton

s1:

JButton

s2:

JButton

s3:

JButton

s4:

JButton

jtextfield:

JTextField

+Calculator()

+main(args:

String[]):

void

ExplainClass()

+actionPerformed(e:

ActionEvent):

void

+Number(button:

String):

void

+isAS():

void

+isBackspace():

void

+isCE():

void

+isC():

void

+isMC():

void

+isMR():

void

+isMS():

void

+isMA():

void

number:

double

operator:

String

+Result(button:

String):

void

ActionListener

ExplainClass

+actionPerformed(e:

ActionEvent):

void

5、系统测试

以下将演示各个功能的实现,虽然在测试过程中仍存在许多没有发现的BUG,但在后续的学习中我们会陆续改进。

1.数字界面显示:

2.(加法测试)依次按下“10”“+”“3”“=”按钮,屏幕结果显示如图:

3.(减法测试)依次按下“10”“-”“6”“=”按钮,屏幕结果显示如图:

4.(乘法测试)依次按下“2”“*”“7”“=”按钮,屏幕结果显示如图:

5.(除法测试)依次按下“10”“/”“2”“=”按钮,屏幕结果显示如图:

6.(根号测试)依次按下“9”“√”“=”按钮,屏幕结果显示如图:

7.(求余测试)依次按下“

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2