Java语言程序设计实训计算器.docx

上传人:b****5 文档编号:5787063 上传时间: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

Java语言程序设计实训计算器

 

目录

一、课程设计的目的与要求………………………………………………2

1.1课程设计目的…………………………………………………………2

1.2课程设计要求…………………………………………………………2

二、题目说明…………………………………………………………2

2.1题目说明…………………………………………………………2

2.2开发工具介绍…………………………………………………………2

三、总体设计…………………………………………………………3

3.1系统开发平台…………………………………………………………3

3.2系统结构图…………………………………………………………3

四、详细说明…………………………………………………………3

4.1计算器主界面…………………………………………………………3

4.2系统实施…………………………………………………………4

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

六、总结……………………………………………………………10

七、参考文献…………………………………………………………10

附录(源程序代码)…………………………………………………………11

八、教师评语………………………………………………………20

 

一、课程设计的目的与要求

1.1课程设计目的

1)复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握。

2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力。

3)培养学生在项目开发中团队合作精神,创新意识及能力。

1.2课程设计要求

◆功能要求:

该程序显示GUI用户界面,至少能实现整数的加,减,乘,除四则运算.

◆界面要示:

用图形界面实现

◆实训条件:

计算机房

◆硬件要求:

装有Winxp等操作系统的机器

◆软件要求:

JDK、JCreator等开发工具

二、题目说明

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]){

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

fuhao="-";

jsd=false;}

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

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

fuhao="*";

jsd=false;}

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

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

fuhao="/";

jsd=false;}

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

publicvoidjisuan(){

switch(jianshi)

{

case1:

result=result+some;break;

case2:

result=result-some;break;

case3:

result=Math.pow(result,some);break;

case4:

result=result*some;break;

case5:

result=result/some;break;

}

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++;jsd=false;

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(""+result);formart();

jianshi2=false;jianshi3=true;

}else{text.setText("0");}

D:

实现开平方的功能:

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

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

jsd=false;jianshiBackspase=true;

jianshi0++;if(jianshi0>1){this.jisuan();}

if(text.getText().equals("-")==false)

{b=text.getText();some=Double.parseDouble(b);

result=Math.sqrt(some);text.setText(""+result);

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)

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

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

}

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

}text.requestFocus();

}

 

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

问题:

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];//数组型按钮

JTextFieldtext;

inti;

Stringn[]={"1","2","3","4","5","6","7","8","9"};//按钮的名字

Panel2p2;StringgetE;

Panel1(JTextFieldtext,Panel1p1,Panel2p2)

{

this.text=text;this.p2=p2;

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();

if(text.getText().equals("0")==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;}

if((text.getText()+getE).length()<=30){

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

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];JTextFieldtext;

String

name[]={"+","0","CE","C","-","pow","sin","sqrt","*","log","cos","%","/",".","1/x","="};//按钮名字

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

intjianshi=0,/*用于监视"+","-","*","/","pow"*/jianshi0=0;//用于监视按钮被按次数的int型变量

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

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

Stringb;

Panel2(JTextFieldtext)

{this.text=text;

FlowLayoutflow=newFlowLayout();flow.setHgap(5);flow.setVgap(5);

setLayout(flow);

for(i=0;i<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])//如果按钮"+"被按下

{

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

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

jianshi0++;i

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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