Java语言程序设计实训计算器文档格式.docx

上传人:b****5 文档编号:18774124 上传时间:2023-01-01 格式:DOCX 页数:25 大小:264.75KB
下载 相关 举报
Java语言程序设计实训计算器文档格式.docx_第1页
第1页 / 共25页
Java语言程序设计实训计算器文档格式.docx_第2页
第2页 / 共25页
Java语言程序设计实训计算器文档格式.docx_第3页
第3页 / 共25页
Java语言程序设计实训计算器文档格式.docx_第4页
第4页 / 共25页
Java语言程序设计实训计算器文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

Java语言程序设计实训计算器文档格式.docx

《Java语言程序设计实训计算器文档格式.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计实训计算器文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

Java语言程序设计实训计算器文档格式.docx

2.1题目说明

随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。

该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。

即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。

可以进行简单的四则运算(加、减、乘、除,以及求倒数,求相反数),以及常用的数学函数(sin,cos,log,1/x,pow,sqrt,%,)和记忆处理功能,有退格,清零,归零等应用。

界面颜色为白色,数字字体颜色为蓝色,函数及其他功能键为红色。

该程序支持键盘操作。

2.2开发工具介绍

此次实训采用JCreator这一Java程序设计的集成开发环境。

它具有编辑、调试、运行Java程序的功能。

当前最新版本是Jcreator5.00。

这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。

具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。

特点:

1.可无限撤销、代码缩进、自动类库方法提示、按所选智能定位查阅JavaAPI文档等功能。

2.新版采用仿VS2005界面设计,体验感觉更快更好更易用。

  3.支持JSP、Ant、CVS。

4.小巧、易用、美观,是Java初级程序员的理想IDE。

三、总体设计

3.1系统开发平台

本系统使用Java语言设计,开发平台为JDK1.5。

3.2系统结构图

四、详细说明

4.1计算器的主界面

图2计算器的主界面

4.2系统实施

1、实现简单的加法、减法、乘法、除法

功能解释:

当进行数值运算时,先单击计算器面板数字键,按纽响应由方法e.getSource()完成,再单击符号按钮,然后再单击面板上数值,最后单击等于号,计算器输出运算结果。

例如当计算一个简单的加法时35+55;

如下图:

图4-1-2图4-1-3图4-1-4

图4-1-2(先输入35)

图4-1-3(输入“+”后再输入55)

图4-1-4(显示结果)

当进行减、乘、除的简单运行,其方法和数值的加法运算过程相似,但是当进行除法的时候,在计算器界面上弹出一个消息框。

实现简单的加、减、乘、除功能的关键代码如下:

if(ee.getSource()==cs[0]){

qian=Double.parseDouble(text.getText());

fuhao="

+"

;

jsd=false;

}

if(e.egetSource()==cs[4]){

-"

}

if(e.egetSource()==cs[8]){

*"

if(e.egetSource()==cs[11]){

/"

//公共的用于计算的方法

publicvoidjisuan(){

switch(jianshi)

{

case1:

result=result+some;

break;

case2:

result=result-some;

case3:

result=Math.pow(result,some);

case4:

result=result*some;

case5:

result=result/some;

}

secendNumjanshi=false;

text.setText("

"

+result);

formart();

}

当单击等于时,进行数值之间的符号选择并输出计算的值

elseif(ee.getSource()==cs[15])//如果按钮"

="

被按下

{

this.jisuan();

jsd=false;

jianshi0=0;

jianshiBackspase=true;

jianshi2=false;

jianshi3=true;

}text.requestFocus();

2.常用的数学函数(sin,cos,log,1/x,pow,sqrt,%,)功能。

这几个方法都是从Maths类中调用,sqrt()的方法功能是将数值开平方;

pow()的方法是输出x的y次幂的值;

sin,cos是正,余弦函数。

当计算数值的进行这几个方法应用时,先单击计算器面板上的数值,按钮响应即用e.getSource()方法实现,再单击想要计算数值的方法,按钮响应,最后单击等于,计算器上输出结果。

例如:

sqart(a)当a=16;

如图图4-1-5图4-1-6

图4-1-5(先输入16)

图4-1-6(键入sqrt,最后结果显示)

A:

如果按钮"

pow"

elseif(ee.getSource()==cs[5]){jianshi0++;

if(secendNumjanshi==false){jianshiBackspase=true;

}

B:

如果第二个数没被输入值,设置“退格”键无效

if(secendNumjanshi==true){this.jisuan();

jianshi=3;

jianshi2=true;

jianshi3=false;

C:

sin"

被按下,其他例如cos,log,函数原理相同,此处不作详细解释。

elseif(ee.getSource()==cs[6]){

jsd=false;

jianshiBackspase=true;

jianshi0++;

if(jianshi0>

1){this.jisuan();

if(text.getText().equals("

)==false)

{b=text.getText();

some=Double.parseDouble(b);

result=Math.sin(some);

text.setText("

}else{text.setText("

0"

);

D:

实现开平方的功能:

通过sqrt(Double.parseDouble(text.getText()))从计算器上获得数值然后用sqrt()方法实现

elseif(ee.getSource()==cs[7]){

jianshi0++;

if(jianshi0>

{b=text.getText();

some=Double.parseDouble(b);

result=Math.sqrt(some);

formart();

jianshi2=false;

jianshi3=true;

3、实现正负数的使用,以及计算器的记忆功能

当数据出现正负号时,也能提供有力支持。

摒弃普通计算器只能计算正数的弊端。

而且所添加的记忆功能能在我们处理多数据时,应付自如。

不用害怕,忘记结果;

也不用害怕重新计算结果。

减少了工作生活中的许多麻烦。

(-3)+(-12);

如图图4-1-7图4-1-8图4-1-9

图4-1-7(先输入-3)

图4-1-8(键入“+”,输入-12)

图4-1-9(显示结果)

A:

正负号的使用

classPanel3extendsJPanelimplementsActionListener

{

JTextFieldtext;

JButtonzhuanhuan,BackSpase;

//按钮"

+/-"

和"

退格"

StringbackSpase;

Panel1p1;

Panel2p2;

Panel3(JTextFieldtext,Panel1p1,Panel2p2)

{setLayout(null);

this.p1=p1;

this.text=text;

this.p2=p2;

zhuanhuan=newJButton("

zhuanhuan.setForeground(Color.red);

zhuanhuan.setMargin(newInsets(0,0,0,0));

zhuanhuan.addActionListener(this);

add(zhuanhuan);

zhuanhuan.setBounds(0,0,30,30);

BackSpase=newJButton("

BackSpase"

BackSpase.setForeground(Color.red);

BackSpase.setMargin(newInsets(0,0,0,0));

BackSpase.addActionListener(this);

backSpase=newString();

add(BackSpase);

BackSpase.setBounds(35,0,65,30);

B:

记忆功能按钮

if(e4.getSource()==mr[0])//“清除记忆”按钮被按下

{memory=0;

mr[2].setForeground(Color.blue);

elseif(e4.getSource()==mr[1])//“显示记忆”按钮被按下

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

p2.formart();

p2.tokenizerPoint();

elseif(e4.getSource()==mr[2])//“记忆”按钮被按下

{mr[2].setForeground(Color.red);

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

elseif(e4.getSource()==mr[3])//"

记忆加"

按钮被按下

{if(mr[2].getForeground()==Color.blue)

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

五、遇到的问题和解决方法

问题:

1、给各个控件用网格布局的时候,出了点错,计算器的界面没有调整好.

2、在异常操作处理时,代码不够完整.

解决方法:

1、从新把课本布局的那一段复习了一遍,又向同学和老师请教,最后经过老师指导,弄懂了布局的方法,调整好布局.

2、请老师指导,并请了同学帮助,并且在网上和课本上参考相关的知识,最后在老师指导下,进行了异常处理.

3、请同学和老师帮忙,编程时时刻不能心浮气躁,要细心,

六、总结

回顾该应用程序从选题收集材料到需求分析、设计、编码实现、测试等,文档的撰写,这系列连贯的过程,感想颇多,收获也很多。

大致的总结几点,如下:

1.设计开发一个软件,首先要了解所涉及到使用人群,一定要想办法进行规划,从不同途径获取材料。

合理安排系统设计开发时间,进行实际开发会发现需求分析与系统设计占主要的时间,如果前面的工作做好了,编码实现占用的时间很短。

所以我们要借助软件工程的思想对软件开发过程进行控制。

2.在开发一个系统时,前期的分析准备工作非常的重要。

对于系统的需求要明确,这样才能做到有的放矢。

特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响代码可读性。

3.在设计的初期,对一个功能模块的设计,要想出两种或两种以上方案,这样可以进行比较,从而获得更佳的设计方案,设计开发过程中一定要吸取经验教训,避免返工。

尤其是一些重要算法或功能。

在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试程序带来很大的方便。

4.独立思考的同时,要虚心向别人请教,可以达到事半功倍的效果。

在具体编程实现系统功能的过程中,我遇到了不少的问题,我曾通过不同渠道向老师、同学、上相关网站寻求答案,收到了很好的效果。

5.懂得充分利用网络资源,因为实验的内容有些不太理解,只好在浩瀚的网络中寻找我所需要的资料,这无形当中培养了我通过网络获取资料信息的能力。

通过独立完成学生信息管理系统的分析设计开发后,发现自己在进行软件开发方面提高不少,同时积极利用所学到的新技术用于自己的设计开发过程。

由于本人是初次开发系统,在知识、经验方面都存在着不足。

另外,在整个开发的过程中,时间也比较仓促。

因此,该系统必然会存在一些缺陷和不足。

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

由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。

当程序运行结束看到弹出的计算器的界面时,感到很欣慰,虽然只是一个小小的东西,但却是自己起步的成就,从中学到了很多书本知识不能体现的东西,对JAVA的学习有了一定的兴趣。

七、参考文献

1.赵景辉,迟勇.《Java语言程序设计》.大连理工大学出版社.2008。

2.於东军[等]著.《Java程序设计与应用开发》.清华大学出版社.2005。

附录(源程序代码)

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.util.StringTokenizer;

classPanel1extendsJPanelimplementsActionListener{

JButtonbase[]=newJButton[9];

//数组型按钮

inti;

Stringn[]={"

1"

"

2"

3"

4"

5"

6"

7"

8"

9"

};

//按钮的名字

Panel2p2;

StringgetE;

Panel1(JTextFieldtext,Panel1p1,Panel2p2)

this.text=text;

FlowLayoutflow=newFlowLayout();

setLayout(flow);

for(i=0;

i<

9;

i++){

base[i]=newJButton(n[i]);

add(base[i]);

base[i].setForeground(Color.blue);

//设置按钮前景色

base[i].setMargin(newInsets(0,0,0,0));

//设置按钮标签与边框间的空白

base[i].addActionListener(this);

base[i].setPreferredSize(newDimension(30,30));

publicvoidactionPerformed(ActionEvente)//监视数字按钮

{getE=e.getActionCommand();

)==false){this.shuru();

else{text.setText(null);

this.shuru();

publicvoidshuru()//公共的用于数字输入的方法

p2.jianshiBackspase=false;

try{if(p2.jianshi2==false)

{if(p2.jianshi3==true){text.setText(null);

p2.jianshi3=false;

if((text.getText()+getE).length()<

=30){

text.setText(text.getText()+getE);

else{text.setText(text.getText());

p2.b=text.getText();

p2.result=Double.parseDouble(p2.b)

p2.some=Double.parseDouble(p2.b);

else

{if(p2.jianshi3==false){text.setText(null);

p2.jianshi3=true;

else{text.setText(text.getText());

p2.b=text.getText();

p2.some=Double.parseDouble(p2.b);

p2.secendNumjanshi=true;

catch(NumberFormatExceptione){}

text.requestFocus();

classPanel2extendsJPanelimplementsActionListener

{inti;

JButtoncs[]=newJButton[16];

String

name[]={"

CE"

C"

sqrt"

log"

cos"

%"

."

1/x"

//按钮名字

doubleresult,some;

/*用于存储所输入的两个double型变量*/

intjianshi=0,/*用于监视"

*/jianshi0=0;

//用于监视按钮被按次数的int型变量

booleanjsd=false,/*用于监视"

*/jianshi2=false,jianshi3=false,/*用于判断应该往哪一个变量里赋值*/

secendNumjanshi=false,/*用于监视第二个数是否被输入*/jianshiBackspase=false;

//监视“退格”键

Stringb;

Panel2(JTextFieldtext)

{this.text=text;

flow.setHgap(5);

flow.setVgap(5);

setLayout(flow);

for(i=0;

16;

i++)

{cs[i]=newJButton(name[i]);

add(cs[i]);

cs[i].setForeground(Color.red);

cs[i].setMargin(newInsets(0,0,0,0));

cs[i].addActionListener(this);

cs[i].setPreferredSize(newDimension(30,30));

cs[1].setForeground(Color.blue);

cs[2].setForeground(Color.blue);

cs[13].setForeground(Color.blue);

cs[3].setForeground(Color.blue);

cs[15].setForeground(Color.blue);

publicvoidactionPerformed(ActionEventee)//监视Panel2的所有按钮

{jianshiBackspase=false;

if(ee.getSource()==cs[0])//如果按钮"

//如果第二个数没被输入值,设置“退格”键无效

jianshi0++;

i

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

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

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

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