JAVA课程设计计算机袁.docx

上传人:b****6 文档编号:5643593 上传时间:2022-12-30 格式:DOCX 页数:15 大小:133.29KB
下载 相关 举报
JAVA课程设计计算机袁.docx_第1页
第1页 / 共15页
JAVA课程设计计算机袁.docx_第2页
第2页 / 共15页
JAVA课程设计计算机袁.docx_第3页
第3页 / 共15页
JAVA课程设计计算机袁.docx_第4页
第4页 / 共15页
JAVA课程设计计算机袁.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

JAVA课程设计计算机袁.docx

《JAVA课程设计计算机袁.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计计算机袁.docx(15页珍藏版)》请在冰豆网上搜索。

JAVA课程设计计算机袁.docx

JAVA课程设计计算机袁

武汉理工大学华夏学院

课程设计报告书

课程名称:

JAVA课程设计

 

题目:

计算器的设计与实现

系名:

信息工程系

专业班级:

计算机1121班

姓名:

袁世杰

学号:

10210412102

指导教师:

刘春燕

 

2014年9月11日

 

课程设计任务书

学生姓名:

袁世杰专业班级:

计算机1121班

指导教师:

刘春燕工作单位:

信息工程系

设计题目:

计算器的设计与实现

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算

(1)完成加法,减法,乘法和除法的计算;

(2)具有小数点,正负号,退格和清零功能;

设计报告撰写格式要求:

1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。

严格要求自己,要独立思考,按时、独立完成课程设计任务。

2、设计报告:

要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)

时间安排:

消化资料、系统调查 1天

项目原型开发 1天

系统功能实现1天

系统验收1天

 

指导教师签字:

2014年9月5日

系主任签字:

2014年9月5日

1目标

设计一个图形界面(GUI)的计算器应用程序,完成简单的加、减、乘、除等算术运算。

通过对计算器的编辑来检测和提升自己的java编程能力。

2软件开发环境与技术简介

2.1开发工具介绍

NetBeans包括开源的开发环境和应用平台,NetBeansIDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeansIDE已经支持PHP、Ruby、JavaScript、Groovy、Grails和C/C++等开发语言。

NetBeans项目由一个活跃的开发社区提供支持,NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。

NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C++,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。

2.2硬件环境

带有windowsxp系统的计算机

2.3软件环境

NetBeansIDE6.9.1

3系统需求分析

(1)设计的计算器可以完成加法、减法、乘法、除法的简单运算。

(2)实现一些简单的扩展运算,如:

正负号、倒数、退格、清零等功能。

(3)添加小数点功能,用以实现浮点型数据的计算。

(4)使用布局管理器设计一个计算器的界面,使用事件监听器处理数据的输入,并完成相关的计算。

4系统总体设计

4.1系统功能简介

(1)完成加法,减法,乘法和除法的计算;

(2)具有小数点,正负号,退格和清零功能;

4.2系统功能模块规划

(1)根据所设计出来的界面,首先要设计其GUI界面,总体界面有一个文本框,20个按钮,总体界面用GridLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按钮放置到一个面板Panel中,完成界面设计。

(2)设计计算流程,首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容,将运算符号显示到文本框中,随后输入第二个计算数据时,用同样的办法保存数据,最后通过控制“=”运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到文本框当中。

5系统详细设计

5.1程序流程图

开始显示界面

输入数字

将数字赋给x

输入字符

将x的值给y,x取新数

将字符赋给operation

点“=”输出结果

退格或清零操作

5.2程序分析

(1)类Calculator继承自ActionListener接口,通过这一接口来处理界面中的按钮所触发的动作事件。

ActionListener接口可以接收ActionEvent,该接口有一个事件方法actionPerformed(ActionEvente),在该方法中将触发需要实现的功能。

(2)ActionEvent类继承自AWTEvent,代表的是一个语义事件,用来指出某组件(component)所定义“行动”发生了。

这种事件由一个组件(如Button)引发,而触动的时机则是当这组件的某种特定动作(如该Button被单击)发生之时。

此事件产生后,系统会将它分配给该组件所注册(用addActionListenert()方法实现注册)的每一个ActionListener(监听者),来接收并处理这种事件。

所以如果一个按钮组件注册一个addActionListener方法,那么当用户用鼠标单节此按钮时,就会产生ActionEvent事件。

(3)在程序运行中,每当单击数字按钮和运算符按钮,都会触发动作actionPerformed(ActionEvente),利用类ActionEvent得getActionCommand()方法确定是由哪一个按钮触发的,进行相应的计算操作。

(4)在AWT中提供了五种布局管理类。

布局管理器指明了容器中构件的位置和尺寸大小。

通过布局管理器,只需知道放置的构件同其他构件的相对应的位置即可,有助于实现软件的平台无关性。

本程序中用到的布局管理管理器的BorderLayout、GridLayout。

其中BorderLayout类使用地理上的方向North、South、West和Center来确定构件添加的位置。

其中前四个方向占据屏幕的四边,而Center方向占据剩下的空白;GridLayout是比较复杂但是却很灵活得AWT布局,可以精确地指定组件的放置位置,它是在将屏幕划分成网格的基础上,允许每个机构占据一个或多个单元(显示区域)。

在程序中用到GridLayout的构件函数GridLayout(introws,intcols,inthasp,intvgap)其中的参数分别表示行数,列数,水平间距和垂直间距。

(5)AWT中提供了可以用来盛装构件的面板(Panel),可以把对象放在面板上,在把面板镶到窗口中,每一个面板有颜色、大小,甚至页面设计等属性。

5.3部分代码及解析

1.需要调用的类

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.event.*;

publicclasshutestextendsJFrameimplementsActionListener,DocumentListener{

JTextFieldtext;//文本诓

Stringx="",y="",operation="";

booleanflag1=true,flag2=true,flag3=true,flag4=true,flag5=true;

}

2.主函数

publicstaticvoidmain(Stringargs[]){

newhutest();

}

3界面设计

publichutest(){

super("计算器");

Containerc=this.getContentPane();//获得一个容器

c.setLayout(null);//布局为空

text=newJTextField();

text.setSize(480,38);//大小

text.setLocation(10,50);//位置

text.setHorizontalAlignment(JTextField.RIGHT);//文本旷右边

c.add(text);

text.getDocument().addDocumentListener(this);//文本框注册事件

JPanelpan2=newJPanel();//面板

pan2.setSize(480,240);

pan2.setLocation(10,150);

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

Stringstr[]={"1","2","3","+","c","4","5","6","-","退格","7","8","9","*","倒数","0","+/-",".","/","="};

for(inti=0;i

JButtonbutton=newJButton(str[i]);

button.addActionListener(this);

pan2.add(button);

}

c.add(pan2);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setSize(500,450);

this.setVisible(true);

}

4运算符的控制和值的输入输出

publicvoidchangedUpdate(DocumentEvente){}

publicvoidinsertUpdate(DocumentEvente){

x=text.getText();//获得文本诓的内容

//System.out.println("y="+y+"x="+x);

}

publicvoidremoveUpdate(DocumentEvente){

}

publicvoidactionPerformed(ActionEvente){

Stringz=e.getActionCommand();//记录按纽上的字符

try{

if(Character.isDigit(z.charAt(0))){

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

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("+")&&flag1){

operation="+";y=x;text.setText("");flag1=false;

}

elseif(z.equals("-")&&flag2){

operation="-";y=x;text.setText("");flag2=false;

}

elseif(z.equals("*")&&flag3){

operation="*";y=x;text.setText("");flag3=false;

}

elseif(z.equals("/")&&flag4){

operation="/";y=x;text.setText("");flag4=false;

}

elseif(z.equals("倒数")){

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

y=x;Doubley2=Double.parseDouble(y);doubley22=1/y2;text.setText(y22+"");

}

elseif(z.equals("+/-")){

y=x;

doubleyy=-Double.parseDouble(y);text.setText(yy+"");

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals(".")){

if(x.indexOf(".")==-1){

text.setText(x+".");

}

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("=")){

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

Doubleop1=Double.parseDouble(y);

Doubleop2=Double.parseDouble(x);

if(operation.equals("+")){x=op1+op2+"";text.setText(x);}

elseif(operation.equals("-")){x=op1-op2+"";text.setText(x);}

elseif(operation.equals("*")){x=op1*op2+"";text.setText(x);}

elseif(operation.equals("/")){x=op1/op2+"";text.setText(x);}

elseif(operation.equals("%")){x=op1%op2+"";text.setText(x);}

}

elseif(z.equals("c")){

x="";text.setText("");

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("退格")){

text.setText(x.substring(0,x.length()-1));

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

}catch(Exceptionex){x="";y="";operation="";text.setText("");}

}

6系统测试与运行

(1)界面显示

(2)输入数字“13”

(3)点击“+”后输入“14”。

(4)点击“=”,获得结果。

(5)输入数字“10”

(6)取倒数运算后,获得结果。

(7)点击“退格”,获得结果

7总结

本次课程设计到此算是告一段落了,经过这次的学习,我学到了很多东西,在此基础上更加巩固了自己对java的认识与了解。

在做本项目是时候,会遇到很多小问题,比如说,在整个运算过程中要如何确保输入的计算数据哪个是第一个计算数据的,哪个是第二个计算数据的,同时也要区分运算符,因为该计算器程序应用的都是利用字符串来完成计算的,而且不能重复输出运算符,更不能将运算符错误的存储在了第一个计算数据的数值中,也得考虑到万一不小心重复点击了运算符按钮会不会造成第一个计算数据的重新赋值等等问题,最后想到利用布尔类型来很好的控制运算符的应用!

此次课程设计让我更了解熟悉了Java中的图形用户界面和它的编程方式。

在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大。

最大的收获就是对大学学习的总结和培养了解决困难的信心和能力,使我对所学知识能够融会贯通,又不断丰富了新知识。

Java计算器设计使得我们对所学的专业课有了更为深刻的认识,使得知识得到了巩固和提高。

在接下来的时间里,我觉得我要更加努力的往深一层次的方面看齐,了解更多有关java的知识,对java有更深一步的了解,我会一步一步的走下去!

8参考文献

[1]王建华.ASPNET2.0动态网站开发技术与实践[M].北京:

电子工业出版社,2007.

[2]徐迎晓《Java语法及网络应用设计》 清华大学出版社2002

[3]戴特尔(美)《Java大学简明教程——实例程序设计》  2005

附录A:

系统核心代码

publicvoidchangedUpdate(DocumentEvente){}

publicvoidinsertUpdate(DocumentEvente){

x=text.getText();//获得文本诓的内容

//System.out.println("y="+y+"x="+x);

}

publicvoidremoveUpdate(DocumentEvente){

}

publicvoidactionPerformed(ActionEvente){

Stringz=e.getActionCommand();//记录按纽上的字符

try{

if(Character.isDigit(z.charAt(0))){

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

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("+")&&flag1){

operation="+";y=x;text.setText("");flag1=false;

}

elseif(z.equals("-")&&flag2){

operation="-";y=x;text.setText("");flag2=false;

}

elseif(z.equals("*")&&flag3){

operation="*";y=x;text.setText("");flag3=false;

}

elseif(z.equals("/")&&flag4){

operation="/";y=x;text.setText("");flag4=false;

}

elseif(z.equals("倒数")){

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

y=x;Doubley2=Double.parseDouble(y);doubley22=1/y2;text.setText(y22+"");

}

elseif(z.equals("+/-")){

y=x;

doubleyy=-Double.parseDouble(y);text.setText(yy+"");

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals(".")){

if(x.indexOf(".")==-1){

text.setText(x+".");

}

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("=")){

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

Doubleop1=Double.parseDouble(y);

Doubleop2=Double.parseDouble(x);

if(operation.equals("+")){x=op1+op2+"";text.setText(x);}

elseif(operation.equals("-")){x=op1-op2+"";text.setText(x);}

elseif(operation.equals("*")){x=op1*op2+"";text.setText(x);}

elseif(operation.equals("/")){x=op1/op2+"";text.setText(x);}

elseif(operation.equals("%")){x=op1%op2+"";text.setText(x);}

}

elseif(z.equals("c")){

x="";text.setText("");

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

elseif(z.equals("退格")){

text.setText(x.substring(0,x.length()-1));

flag1=true;flag2=true;flag3=true;flag4=true;flag5=true;

}

}catch(Exceptionex){x="";y="";operation="";text.setText("");}

}

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

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

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

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