JAVA实现计算器课程设计.docx

上传人:b****6 文档编号:12713736 上传时间:2023-06-07 格式:DOCX 页数:19 大小:128.43KB
下载 相关 举报
JAVA实现计算器课程设计.docx_第1页
第1页 / 共19页
JAVA实现计算器课程设计.docx_第2页
第2页 / 共19页
JAVA实现计算器课程设计.docx_第3页
第3页 / 共19页
JAVA实现计算器课程设计.docx_第4页
第4页 / 共19页
JAVA实现计算器课程设计.docx_第5页
第5页 / 共19页
JAVA实现计算器课程设计.docx_第6页
第6页 / 共19页
JAVA实现计算器课程设计.docx_第7页
第7页 / 共19页
JAVA实现计算器课程设计.docx_第8页
第8页 / 共19页
JAVA实现计算器课程设计.docx_第9页
第9页 / 共19页
JAVA实现计算器课程设计.docx_第10页
第10页 / 共19页
JAVA实现计算器课程设计.docx_第11页
第11页 / 共19页
JAVA实现计算器课程设计.docx_第12页
第12页 / 共19页
JAVA实现计算器课程设计.docx_第13页
第13页 / 共19页
JAVA实现计算器课程设计.docx_第14页
第14页 / 共19页
JAVA实现计算器课程设计.docx_第15页
第15页 / 共19页
JAVA实现计算器课程设计.docx_第16页
第16页 / 共19页
JAVA实现计算器课程设计.docx_第17页
第17页 / 共19页
JAVA实现计算器课程设计.docx_第18页
第18页 / 共19页
JAVA实现计算器课程设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA实现计算器课程设计.docx

《JAVA实现计算器课程设计.docx》由会员分享,可在线阅读,更多相关《JAVA实现计算器课程设计.docx(19页珍藏版)》请在冰点文库上搜索。

JAVA实现计算器课程设计.docx

JAVA实现计算器课程设计

JAVA实现计算器课程设计

计算机科学系

计应0701班

指导老师:

刘其昌

设计人员:

陈秀桃

设计日期:

2009年11月10日——2009年12月20日

计算器的设计

第一章绪论.........................................................................................2

1.1开发环境.....................................................................................2

1.2基本功能介绍..............................................................................2第二章系统设计.................................................................................3

2.1系统流程图..................................................................................3

2.2系统功能框图..............................................................................3

2.3需求分析.....................................................................................4第三章软件设计.................................................................................5

3.1界面设计.....................................................................................5

3.2代码设计.....................................................................................5第四章测试分析...............................................................................10

3.1程序运行情况:

...........................................................................10

3.2程序异常处理:

...........................................................................10

3.3测试用例...................................................................................11

3.3.1加法测试.........................................................................11

3.3.2减法测试.........................................................................11

3.3.3乘法测试.........................................................................12

3.3.4除法测试.........................................................................13第五章结束语...................................................................................14第六章参考文献...............................................................................14

第1页共15页

计算器的设计

第一章绪论

1.1开发环境

本系统是利用Java语言在NetBeansIDE6.5环境下开发的,Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。

面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。

使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

1.2基本功能介绍

本系统实现了一个简单而实用的计算器,通过这个计算器我们可以进行一些基本的运算操作,它可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。

它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。

使用人员能快捷简单地进行操作。

即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

第2页共15页

计算器的设计

第二章系统设计2.1系统流程图

2.2系统功能框图

第3页共15页

计算器的设计

说明:

在程序中构建类testZ,在其中封装起界面、文本框、按钮、数字、运算符等等成员,再引入成员函数testZ()进行计算器的模拟界面设计;其次设计出事件处理函数,如:

运算事件、符号事件、等号事件等等;最后设计运算函数的响应事件。

这样设计的好处在于使得程序的实现思维更清晰,易懂,可读性增强。

反之则不然。

2.3需求分析

首先分析这个说要完成的功能,它的主要任务是完成十六进制、十进制、八进制和二进制之间的相互转化,需要包含负数,但不用考虑小数。

其次,确定接口参数。

根据功能可知,它传递给外部的就是一个转后的数据,而外部除了需要传递给转化前的数据以外,是否还需要其他参数呢,我们都知道,十进制的负数同样可以利用其他进制进行表示,例如二进制,转化方法是:

求十进制数的绝对值对应的二进制数,最高位为1;然后对二进制逐位求反,最高位除外;接着最低一位加1,需要进位的话依次进位,最高位除外。

如今的问题就摆在了我们面前,我们如何知道这个数的最高位是第几位呢,也许有人会说,那就用转化后的前面再加上一位,好,即使这样可以成立,那么-1转化后就是11,3转化后也为11,现在如果需要现在的把这个数二进制数再转化为十进制,那么我们如何知道原来的是正数还是负数呢,如果要转化为十六进制,八进制又当如何呢,经过以上的分析发现,还应该有另外一个参数——二进制时的宽度,只有这样才能知道谁是最高位,因此就称这个参数为位宽。

最后,设计类。

根据第二步的分析,因为位宽对每一个方法都是一样,所以可能把它作为类的成员变量,而另外两个参数转化前的值和转化后的值就分别作为输入参数和返回值。

而类对外的接口只有各个转化的方法,因此这几个方法设计为public权限,而其它所有的辅助方法都为private权限。

位宽通过构造函数传递,外部不能直接访问和修改,设置也设置为private权限。

为了减少计算量,所有的转化都以二进制为中介。

例如十六进制到十进制,是十六进制?

二进制?

十进制。

第4页共15页

计算器的设计

第三章软件设计

3.1界面设计

这个就是计算器界面,简洁易用,我们可以从中的数字按键和运算符按钮

进行相应的数学计算,总共由,,个按钮(,,个数字符+,个运算符号+,个

,一个标签、再加一个文本框组成。

小数点+,个“clear”按钮)

3.2代码设计

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassCaculator

{

publicstaticvoidmain(String[]args)

{

JFrameframe=newJFrame("Caculator");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(newCaculatorPanel());

frame.pack();

frame.setVisible(true);

}

}

classCaculatorPanelextendsJPanel

{

privateJLabelnamelabel,resultlabel;

privateJTextFieldresultField;

第5页共15页

计算器的设计

privateJPanellabelPanel,numberPanel,toolPanel;

privateJButtons1,s2,s3,s4,s5,s6,s7,s8,s9,s0,

p1,p2,t1,t2,t3,t4,clear;

privatebooleanend,add,sub,mul,div;

privateStringstr;

privatedoublenum1,num2;

publicCaculatorPanel()

{

namelabel=newJLabel("计算器");

resultField=newJTextField(10);

ButtonListenerlistener=newButtonListener();

clear=newJButton("clear");

clear.addActionListener(listener);

s1=newJButton("1");s1.addActionListener(listener);

s2=newJButton("2");s2.addActionListener(listener);

s3=newJButton("3");s3.addActionListener(listener);

s4=newJButton("4");s4.addActionListener(listener);

s5=newJButton("5");s5.addActionListener(listener);

s6=newJButton("6");s6.addActionListener(listener);

s7=newJButton("7");s7.addActionListener(listener);

s8=newJButton("8");s8.addActionListener(listener);

s9=newJButton("9");s9.addActionListener(listener);

s0=newJButton("0");s0.addActionListener(listener);

p1=newJButton(".");p1.addActionListener(listener);

p2=newJButton("=");p2.addActionListener(listener);

t1=newJButton("+");t1.addActionListener(listener);

t2=newJButton("-");t2.addActionListener(listener);

t3=newJButton("*");t3.addActionListener(listener);

t4=newJButton("/");t4.addActionListener(listener);

labelPanel=newJPanel();

labelPanel.add(namelabel);

labelPanel.add(resultField);

labelPanel.add(clear);

numberPanel=newJPanel();

numberPanel.setLayout(newGridLayout(4,3));

numberPanel.add(s1);

numberPanel.add(s2);

numberPanel.add(s3);

numberPanel.add(s4);

numberPanel.add(s5);

numberPanel.add(s6);

numberPanel.add(s7);

第6页共15页

计算器的设计

numberPanel.add(s8);

numberPanel.add(s9);

numberPanel.add(s0);

numberPanel.add(p1);

numberPanel.add(p2);

toolPanel=newJPanel();

toolPanel.setLayout(newGridLayout(4,1));

toolPanel.add(t1);

toolPanel.add(t2);

toolPanel.add(t3);

toolPanel.add(t4);

setPreferredSize(newDimension(500,200));

setBackground(Color.cyan);

add(labelPanel);

add(numberPanel);

add(toolPanel);

}

publicvoidnum(inti){

Strings=null;

s=String.valueOf(i);

if(end){

//如果数字输入结束,则将文本框置零,重新输入

resultField.setText("0");

end=false;

}

if((resultField.getText()).equals("0")){

//如果文本框的内容为零,则覆盖文本框的内容

resultField.setText(s);

}

else{

//如果文本框的内容不为零,则在内容后面添加数字

str=resultField.getText()+s;

resultField.setText(str);

}

}

privateclassButtonListenerimplementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{//数字事件

if(e.getSource()==clear)

第7页共15页

计算器的设计

resultField.setText("0");

elseif(e.getSource()==s1)

num

(1);

elseif(e.getSource()==s2)

num

(2);

elseif(e.getSource()==s3)

num(3);

elseif(e.getSource()==s4)

num(4);

elseif(e.getSource()==s5)

num(5);

elseif(e.getSource()==s6)

num(6);

elseif(e.getSource()==s7)

num(7);

elseif(e.getSource()==s8)

num(8);

elseif(e.getSource()==s9)

num(9);

elseif(e.getSource()==s0)

num(0);

//符号事件

elseif(e.getSource()==t1)

sign

(1);

elseif(e.getSource()==t2)

sign

(2);

elseif(e.getSource()==t3)

sign(3);

elseif(e.getSource()==t4)

sign(4);

//等号

elseif(e.getSource()==p1){

str=resultField.getText();

if(str.indexOf(".")<=1){

str+=".";

resultField.setText(str);

}

}

elseif(e.getSource()==p2){

num2=Double.parseDouble(resultField.getText());

if(add){

num1=num1+num2;}

第8页共15页

计算器的设计

elseif(sub){

num1=num1-num2;}

elseif(mul){

num1=num1*num2;}

elseif(div){

num1=num1/num2;}

resultField.setText(String.valueOf(num1));

end=true;

}

}

publicvoidsign(ints){

if(s==1){

add=true;

sub=false;

mul=false;

div=false;

}

elseif(s==2){

add=false;

sub=true;

mul=false;

div=false;

}

elseif(s==3){

add=false;

sub=false;

mul=true;

div=false;

}

elseif(s==4){

add=false;

sub=false;

mul=false;

div=true;

}

num1=Double.parseDouble(resultField.getText());

end=true;

}

}

}

第9页共15页

计算器的设计

第四章测试分析

4.1程序运行情况:

程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if语句,如果结果大于某一个值就抛出一个This_number_too_big类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。

然后进行,重制归零的处理。

4.2程序异常处理:

当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big

类的异常对象,这个是我自定义的一个异常类它继承自Exception类,然后使用try-catch去捕捉这个异常,异常的处理如下:

try

{js();}

catch(This_number_too_bige){

lab.setText("0");

number=0;

mark='n';

Refresh=false;

System.out.println("Thenumberistoobig");

}//如果出现异常则初始化效果如同clear键

第10页共15页

计算器的设计

4.3测试用例

4.4.1加法测试

(1),,,,,,,,,.,,运行结果如下:

(2),(,,,(,,(,,,)运行结果如下:

4.4.2减法测试

(1),,,(,,,,,,,运算结果如下:

第11页共15页

计算器的设计

(2),,,(,,,运算结果如下:

4.4.3乘法测试

(1),,,,(,,,(,,,)运算结果如下:

(2),,,,(,运算结果如下:

第12页共15页

计算器的设计4.4.4除法测试

(1),,(,,,(,,运算结果如下:

(2),,,,,,,(,运算结果如下:

(3),,,,运算结果如下:

第13页共15页

计算器的设计

第五章结束语

终于做完了这次的作业,有一种如释重担的感觉,但还是有一点点的留恋。

这次做的《计算器》的实现算是一个比较简单的设计,它牵涉的知识面并不是很多,实现的功能简单,对界面要求也不高,很适合我们做一些个人的程序开发。

做起来虽然不是很吃力但有时还是比较烦躁的,可是在精力完全投入之后又发现自己已经被它深深吸引住,它有一股莫名的魅力在吸引我去完善。

从绪论到最后的总结,都是一步一个脚印走过来的,在这其中有很多的困难,但是还是自己给一个一个地突破,没有半途而废。

老师给我们的时间是很充足的,在足够的时间里我们就没有理由不去做好它,通过此次课程设计,我们将本学期所学的JAVA知识得到巩固和应用,在设计的过程中遇到了很到问题,不过在自己向别人请教或网上找资料,最后还是很好的完成了。

这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。

它还让我学会了在网上查阅那些无限的资料。

通过对此课题的开发,使我对用JBuilder9.0开发系统有了一个比较清楚的认识,体会到理论和实践的重要性。

由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,是在最后的测试中还是存

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

当前位置:首页 > 自然科学 > 物理

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

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