基于JAVA小型计算器课程设计.docx
- 文档编号:25073758
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:19
- 大小:333.48KB
基于JAVA小型计算器课程设计.docx
《基于JAVA小型计算器课程设计.docx》由会员分享,可在线阅读,更多相关《基于JAVA小型计算器课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
基于JAVA小型计算器课程设计
课程设计报告
题目:
基于JAVA计算器小软件设计
学生姓名:
廖永治束翔陶善庆
学生学号:
090805022009080502290908050233
系别:
电气信息工程学院
专业:
电子信息科学与技术
届别:
2013届
指导教师:
李营
电气信息工程学院制
2012年5月
基于JAVA计算器小软件设计
学生:
廖永治束翔陶善庆
指导教师:
李营
电气信息工程学院
1课程设计的任务及要求
1.1课程设计的任务
(1)掌握JAVA语言。
(2)创建一个简单的计算器,具有简单人机交互界面,易于操作,便于进行
数据之间的简单运算。
(3)设计要完成设计、编码、测试等过程。
1.2课程设计的要求
(1)能够实现简单的加、减、乘、除四则运算。
(2)运算结果能够正常显示,并能够清零。
(3)实数运算中小数位的精度一致。
1.3课程设计的研究基础及主要设计思想
对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,19个按钮,总体界面用GridBagLayout布局。
文本框放置在JTextField,然后0到9以及+,-,×,÷的按钮放置一个面板container中,添加到整体布局中,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
2总体方案制定
2.1需求分析
日常生活中经常需要用到计算器,比如科学计算、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便的惊醒数据运算,可增加页面的实用性,同时让用户的操作也更加方便月快捷。
本项目需要实现一个具有四则运算的小型计算器,拥有加,减,乘,除功能。
2.2总体设计
(1)界面设计
界面设计要求用GUI,界面设计中有用到swing组件的JTextField,用到awt中的GridLayout布局管理方式,窗体名称Conclutor继承JFrame类,InsertAction实现ActionListener一个接口,并实现publicvoidactionPerformed(ActionEvente){}方法。
定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。
定义变量doubleresult;//使用内存中存储的数字和结果;JTextFieldresultfield;//显示计算结果。
使用privatevoidaddButton()方法添加按钮并给按钮命名;其图形界面如下图
(1):
图1:
图形界面
(2)功能介绍
这是计算器中的一种:
简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:
点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除求模四则运算;
还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按BackSpace撤销后重新输入新数据也可以通过CE清除所有数据。
3详细方案设计
3.1设计所需的环境及软件介绍
(1)JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。
JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。
(2)本次设计使用Eclipe开发平台。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组建构建开发环境。
3.2程序流程图如下:
图
(2):
程序设计流程图
3.3部分代码说明
(1)程序的主框架设计代码:
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFieldresultfield;//计算结果显示区
privateStringlastCommand;//保存+,-,×,÷,=命令
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
publicConclutor(){
//创建和定义计算器的图形界面;
setTitle("计算器");
setSize(300,500);
setVisible(true);
container=getContentPane();
layout=newGridBagLayout();
container.setLayout(layout);
constraints=newGridBagConstraints();
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=4;
constraints.gridheight=1;
constraints.fill=GridBagConstraints.BOTH;
constraints.weightx=300;
constraints.weighty=300;
resultfield=newJTextField(19);
resultfield.setHorizontalAlignment(JTextField.RIGHT);
start=true;
result=0;
lastCommand="=";
layout.setConstraints(resultfield,constraints);
container.add(resultfield);
(2)增加数字按钮以及符号按钮并对按钮进行监听的代码:
ActionListenerinsert=newInsertAction();
ActionListenercommand=newCommandAction();
addButton("Backspace",0,1,2,1,insert);
addButton("CE",2,1,2,1,insert);
addButton("7",0,2,1,1,insert);
addButton("8",1,2,1,1,insert);
addButton("9",2,2,1,1,insert);
addButton("÷",3,2,1,1,command);
addButton("4",0,3,1,1,insert);
addButton("5",1,3,1,1,insert);
addButton("6",2,3,1,1,insert);
addButton("×",3,3,1,1,command);
addButton("1",0,4,1,1,insert);
addButton("2",1,4,1,1,insert);
addButton("3",2,4,1,1,insert);
addButton("-",3,4,1,1,command);
addButton(".",0,5,1,1,insert);
addButton("+/-",2,5,1,1,insert);//实现负数输入
addButton("0",1,5,1,1,insert);
addButton("+",3,5,1,1,command);
addButton("=",0,6,4,1,command);
(3)程序运算过程的设计代码:
privateclassInsertActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
Stringinput=event.getActionCommand();
if(start){
resultfield.setText("");
start=false;
if(input.equals("+/-")){
//if(displayField.getText().charAt(0)!
='-'){
resultfield.setText("-"+resultfield.getText());
}
//}else{
//displayField.setText(displayField.getText().substring
(1));
//return;
//}
}
if(!
input.equals("+/-")){
if(input.equals("Backspace")){
Stringstr=resultfield.getText();
if(str.length()>0)
resultfield
.setText(str.substring(0,str.length()-1));
}elseif(input.equals("CE")){
resultfield.setText("0");
start=true;
}else
resultfield.setText(resultfield.getText()+input);
}
}
}
privateclassCommandActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevt){
Stringcommand=evt.getActionCommand();
if(start){
lastCommand=command;
}else{
calculate(Double.parseDouble(resultfield.getText()));
lastCommand=command;
start=true;
}
}
}
publicvoidcalculate(doublex){
if(lastCommand.equals("+"))
result+=x;
elseif(lastCommand.equals("-"))
result-=x;
elseif(lastCommand.equals("×"))
result*=x;
elseif(lastCommand.equals("÷"))
result/=x;
elseif(lastCommand.equals("="))
result=x;
resultfield.setText(""+result);
}
(4)计算器入口程序设计代码:
publicstaticvoidmain(String[]args){
Conclutorcalculator=newConclutor();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
4程序的调试与运行结果说明
示例1当乘数为0时的运行结果如下图(3)所示:
图(3)
示例2:
43.6+23.4预计结果67.0实际结果如下图(4)所示:
图(4)
示例3:
189/4预计结果47.25实际结果如下图(5)所示:
图(5)
示例4:
11-88预计结果-77.0实际结果如下图(6)所示:
图(6)
示例5:
-8*6预计结果-48.0实际结果如下图(7)所示:
图(7)
示例6:
当除数为0时的运行结果如下图(8)所示:
图(8)
5设计总结
通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。
这次课程设计,我们按照课程设计的要求,。
在实践中我遇到许多的问题,但我们都克服,最终我成功的完成了这次课程设计。
从中我充分理解了Java面对对象的特性,并体会到Java与C语言的不同之处。
在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。
通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。
这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。
由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。
6参考文献
[1]王鹏,零基础学Java[M],机械工业出版社,2008-1-1.
[2]王鹏,何昀峰.JavaSwing图形界面开发案例详解[M],清华大学出版社,2008-12-01.
7附录
packagecn.hn.school;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassConclutorextendsJFrame{
privateContainercontainer;
privateGridBagLayoutlayout;
privateGridBagConstraintsconstraints;
privateJTextFieldresultfield;//计算结果显示区
privateStringlastCommand;//保存+,-,×,÷,=命令
privatedoubleresult;//保存计算结果
privatebooleanstart;//判断是否为数字的开始
publicConclutor(){
//创建和定义计算器的图形界面;
setTitle("计算器");
setSize(300,500);
setVisible(true);
container=getContentPane();
layout=newGridBagLayout();
container.setLayout(layout);
constraints=newGridBagConstraints();
constraints.gridx=0;
constraints.gridy=0;
constraints.gridwidth=4;
constraints.gridheight=1;
constraints.fill=GridBagConstraints.BOTH;
constraints.weightx=300;
constraints.weighty=300;
resultfield=newJTextField(19);
resultfield.setHorizontalAlignment(JTextField.RIGHT);
start=true;
result=0;
lastCommand="=";
layout.setConstraints(resultfield,constraints);
container.add(resultfield);
//增加计算器的按钮
/**
*调用监听输入操作的命令;
*insert表示输入字符;
*command表示输入符号
*/
ActionListenerinsert=newInsertAction();
ActionListenercommand=newCommandAction();
addButton("Backspace",0,1,2,1,insert);
addButton("CE",2,1,2,1,insert);
addButton("7",0,2,1,1,insert);
addButton("8",1,2,1,1,insert);
addButton("9",2,2,1,1,insert);
addButton("÷",3,2,1,1,command);
addButton("4",0,3,1,1,insert);
addButton("5",1,3,1,1,insert);
addButton("6",2,3,1,1,insert);
addButton("×",3,3,1,1,command);
addButton("1",0,4,1,1,insert);
addButton("2",1,4,1,1,insert);
addButton("3",2,4,1,1,insert);
addButton("-",3,4,1,1,command);
addButton(".",0,5,1,1,insert);
addButton("+/-",2,5,1,1,insert);//实现负数输入
addButton("0",1,5,1,1,insert);
addButton("+",3,5,1,1,command);
addButton("=",0,6,4,1,command);
this.setResizable(false);
}
privatevoidaddButton(Stringlabel,introw,intcolumn,intwith,
intheight,ActionListenerlistener){
JButtonbutton=newJButton(label);
constraints.gridwidth=with;
constraints.gridheight=height;
constraints.gridx=row;
constraints.gridy=column;
constraints.fill=GridBagConstraints.BOTH;
button.addActionListener(listener);
layout.setConstraints(button,constraints);
container.add(button);
}
publicstaticvoidmain(String[]args){
Conclutorcalculator=newConclutor();
calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//实现ActionListener这样一个监听器接口
privateclassInsertActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
Stringinput=event.getActionCommand();
if(start){
resultfield.setText("");
start=false;
if(input.equals("+/-")){
//if(displayField.getText().charAt(0)!
='-'){
resultfield.setText("-"+resultfield.getText());
}
//}else{
//displayField.setText(displayField.getText().substring
(1));
//return;
//}
}
if(!
input.equals("+/-")){
if(input.equals("Backspace")){
Stringstr=resultfield.getText();
if(str.length()>0)
resultfield
.setText(str.substring(0,str.length()-1));
}elseif(input.equals("CE")){
resultfield.setText("0");
start=true;
}else
resultfield.setText(resultfield.getText()+input);
}
}
}
privateclassCommandActionimplementsActionListener{
publicvoidactionPerformed(ActionEven
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 小型 计算器 课程设计