计算器文档Word格式文档下载.docx
- 文档编号:19627981
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:15
- 大小:49.11KB
计算器文档Word格式文档下载.docx
《计算器文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算器文档Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
2.2功能设计2
3需求描述2
4操作说明3
4.运行环境说明Eclipse运行环境4
5.练习效果(如图1所示)5
6系统测试报告5
7收获及体会6
8总结6
1引言
1.1任务与分析
本软件应具有运算加减乘除四则基本运算,其中涉及到了JAVA的很多知
识点,例如:
在界面设计中应熟悉掌握各个控件的属性,各种循环语句,选择语句,控件组等等。
有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力;
1.2实验目的与要求
1.2.1实验目的
进一步掌握JAVA进行图形用户界面的定义和操作,进一步掌握类的继承和派生方法。
综合利用上述知识,学习设计并编写实用的JAVA简单GUI应用程序。
熟悉java,awt包中组件,掌握图形界面设计方法,理解委托事件处理模型。
设计并实现Windows系统中“计算器”的窗口及功能。
1.2.2实验要求
设计图形界添加菜单:
窗口上添加各种组件及菜单,并处理组建及菜单的事件监听程序。
运算:
实现多种运算,保证运算正确性。
2方案设计
2.1总体设计
本软件按照一般计算器的界面以及功能设计,具有最为基础的加减乘除四则运算。
先建立一个新的项目文件,里面包含一个Form1的窗体。
然后,添加控件,包括一个Text框(Text1)。
一个控件数组,包含16个按钮,这17个按钮使用的名称都是Command1,只是Index属性不同。
按下数字键在液晶屏上会出现数字,这是最基本的功能。
第一次按下运算键,再按下数字键,将重新输入第二个数字,再次按下运算键,将算出前两个数的结果,然后按下数字键,将又重新输入新的数字。
输入数字后,按下“等于键”将仍输出原来的数字,输入运算符和第二个数字后在按下“等于”,将得到二者的结果。
然后又重复第二、三步。
2.2功能设计
2.2.1main类是程序的核心类,也是入口类。
2.2.2对成员变量的初始化,包括存放表达式的字符串length、用来存放后缀表达式的数组output[]、用来存放处理完毕表达式的数组input[],以及一些为了将String类型的表达式字符串字符中数字与符号分开的必要的成员变量的声明等。
2.2.3优先级判断:
分别有两个方法,doOper1和doOper2,对不同符号的优先级进行判断,并作出相应操作。
2.2.4进行计算的calculate类,利用堆栈对表达式进行计算并输出结果。
2.2.5NewJFrame类,继承自javax.swing.JFrame,完成与图形化界面有关的设计。
2.2.6Stack类,有关堆栈的基本操作,方便其他类中对堆栈相关操作的方法调用
3需求描述
3.1、要有友好、易于操作的界面。
3.2、能够实现输入:
数学表达式(数字加、减、乘、除)输出:
表达式的正确结果
3.3、有错误提醒和报错处理功能
4操作说明
计算器以帮助用户完成数据的运算,我们制作的计算器是标准的计算器,既可以完成简单的计算。
使用时可以先输入所要运算的算式一个数,在数字显示区会显示相应的数,然后选择运算符,在输入第二个数,最后选择“=”按钮如1+1=,或者1+1+1=,即可得到运算结果。
4.1、本计算器支持十进制运算。
4.2、数字键0——9用于数字的键入,可键入个位数,也可连续键入多位数。
4.3、“(”及“)”用于左右括号的运算,加上括号即进行优先运算,内层的括号先于外层括号计算,有括号的计算先于没有括号的。
4.4、“.”用于小数点的键入
4.5、“+”“-”“*”“/”“=”分别用于加、减、乘、除及相等的运算。
功能结构图
4.运行环境说明Eclipse运行环境
5.练习效果(如图1所示)
本实例代码编写完毕,分别存盘为:
C:
j2sdk1.4.0\javaprograms\Calculator.java和CalculatorGUI.java。
打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javacCalculatorGUI.java来编译程序,用javaCalculatorGUI命令便可以看到制作效果。
图1练习效果
6系统测试报告
可以完成基本的加减乘除,同样在修改后也能完成连续的加减乘除,
问题
原因
解决方法
如果计算后按等号再按数据重新计算,数据不能清0,即使按了1+2=3再按12就会出现312
因为在等号后,再按数据会执行TextBox1.Text=CDbl(TextBox1&
btn.Text)则会直接将按下去的值append到结果上去
添加一下equalpressed变量,如果按了等号再按数字就会直接重新计算
智能计算1
+1不能计算1+1+1
操作键部分代码不能执行加号前的数据处理,只能通过等号来处理
添加一个caculated变量来控制,在数据输入时刻间断有没有按下操作键,则需要计算器,则在按下下一个操作键的时候将前一个操作键的数据处理,然后在保存于中间变量
7收获及体会
对Java数据结构有关堆栈和队列的内容有了更加深入和深刻的体会。
更加熟练了对Eclipse环境编写代码的运用。
编程过程中查找了相关资料,提高了搜集和整理资料的能力。
编写两个程序提高了对时间的统筹和策划能力。
提高了对开发文档的书写能力。
8总结
这个程序实现了简单的计算器功能。
进一步了解了面板容器,布局管理器,标签,按钮的使用方法以及内部类形式定义监听器类,让不同的组件注册不同的监听器等设计技巧。
通过这次课程设计,让我受到了很大的启发。
我觉得做好一个程序,灵活运用是关键。
这次题目设计让我对图形用户界面的相关知识有了更深一步的了解,对GUI的应用有了更多的体会。
做一个程序做重要的是思路清晰,只要把思路理顺了,就有利于在编程过程中少走弯路。
附加程序及注释
(1)编程思路:
本例因为要制作计算器,所以首先定义具有计算功能的类Calculator。
在类Calculator中定义处理加减乘除运算的函数,分别命名为opAdd(),opSubtract(),opMultiply(),opDivide()。
然后,因为要实现实现人机交互的效果,所以先要定义实现用户界面类CalculatorGUI。
通过Panel类的setLayout()函数进行用户界面的布局。
此外,要通过actionPerformed(ActionEventevent))函数来实现对按钮事件的监听,并根据不同的按钮事件进行不同的运算。
最后,因为要实现用户界面类与处理运算类的融合.,所以要在用户界面类(CalculatorGUI)中定义处理运算类(Calculator)的对象,这样,就完成了计算器的功能。
(2)程序实现及注释:
//Calculator.java
publicclassCalculator{
privatestaticfinalcharNO_OP='
\0'
;
privatestaticfinalcharPLUS='
+'
privatestaticfinalcharSUBTRACT='
-'
privatestaticfinalcharMULTIPLY='
*'
privatestaticfinalcharDIVIDE='
/'
privatefloatnumber1=0.0F;
//privatefloatnumber2=Float.NaN;
privatecharoperator=NO_OP;
//等于运算
publicStringopEquals(Stringnumber){
floatresult;
if(operator==NO_OP){
result=parseNumber(number);
}else{
result=performOperation(parseNumber(number));
}
operator=NO_OP;
number1=result;
returnFloat.toString(result);
//加法运算
publicStringopAdd(Stringnumber){
operator=PLUS;
//减法运算
publicStringopSubtract(Stringnumber){
operator=SUBTRACT;
//乘法运算
publicStringopMultiply(Stringnumber){
operator=MULTIPLY;
//除法运算
publicStringopDivide(Stringnumber){
operator=DIVIDE;
//处理运算符
privatefloatperformOperation(floatnumber2){
floatresult=0.0F;
switch(operator){
casePLUS:
result=number1+number2;
break;
caseSUBTRACT:
result=number1-number2;
caseMULTIPLY:
result=number1*number2;
caseDIVIDE:
result=number1/number2;
returnresult;
//将字符串类型转换为浮点型
privatestaticfloatparseNumber(Stringnumber){
floatreal_number;
try{
real_number=Float.parseFloat(number);
}catch(NumberFormatExceptione){
real_number=Float.NaN;
returnreal_number;
}
//CalculatorGUI.java
importjava.awt.*;
importjava.awt.event.*;
publicclassCalculatorGUI{
//定义按钮
privateButtonkey0,key1,key2,key3,key4;
privateButtonkey5,key6,key7,key8,key9;
privateButtonkeyequal,keyplus,keyminus;
privateButtonkeyperiod,keymult,keydiv;
//定义存放按钮的区域
privatePanelbuttonArea;
//定义存放运算结果的区域
privateLabelanswer;
//用来实现运算功能的类的对象实例化
privateCalculatorcalculator;
privatebooleanreadyForNextNumber;
publicCalculatorGUI(){
calculator=newCalculator();
readyForNextNumber=true;
answer=newLabel("
0.0"
Label.RIGHT);
key0=newButton("
0"
);
key1=newButton("
1"
key2=newButton("
2"
key3=newButton("
3"
key4=newButton("
4"
key5=newButton("
5"
key6=newButton("
6"
key7=newButton("
7"
key8=newButton("
8"
key9=newButton("
9"
keyequal=newButton("
="
keyplus=newButton("
+"
keyminus=newButton("
-"
keymult=newButton("
*"
keydiv=newButton("
/"
keyperiod=newButton("
."
buttonArea=newPanel();
publicvoidlaunchFrame(){
buttonArea.setLayout(newGridLayout(4,4));
buttonArea.add(key7);
buttonArea.add(key8);
buttonArea.add(key9);
buttonArea.add(keyplus);
buttonArea.add(key4);
buttonArea.add(key5);
buttonArea.add(key6);
buttonArea.add(keyminus);
buttonArea.add(key1);
buttonArea.add(key2);
buttonArea.add(key3);
buttonArea.add(keymult);
buttonArea.add(key0);
buttonArea.add(keyperiod);
buttonArea.add(keyequal);
buttonArea.add(keydiv);
//设置事件接收句柄
OpButtonHanlderop_handler=newOpButtonHanlder();
NumberButtonHanldernumber_handler=newNumberButtonHanlder();
key0.addActionListener(number_handler);
key1.addActionListener(number_handler);
key2.addActionListener(number_handler);
key3.addActionListener(number_handler);
key4.addActionListener(number_handler);
key5.addActionListener(number_handler);
key6.addActionListener(number_handler);
key7.addActionListener(number_handler);
key8.addActionListener(number_handler);
key9.addActionListener(number_handler);
keyperiod.addActionListener(number_handler);
keyplus.addActionListener(op_handler);
keyminus.addActionListener(op_handler);
keymult.addActionListener(op_handler);
keydiv.addActionListener(op_handler);
keyequal.addActionListener(op_handler);
//新建一个帧,并且加上消息监听
Framef=newFrame("
Calculator"
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
});
f.setSize(200,200);
f.add(answer,BorderLayout.NORTH);
f.add(buttonArea,BorderLayout.CENTER);
f.setVisible(true);
//响应按钮事件,并根据不同的按钮事件进行不同的运算
privateclassOpButtonHanlderimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
charoperator=event.getActionCommand().charAt(0);
Stringresult="
"
case'
:
result=calculator.opAdd(answer.getText());
result=calculator.opSubtract(answer.getText());
result=calculator.opMultiply(answer.getText());
result=calculator.opDivide(answer.getText());
='
result=calculator.opEquals(answer.getText());
answer.setText(result);
//处理连续运算时主界面的显示
privateclassNumberButtonHanlderimplementsActionListener{
if(readyForNextNumber){
answer.setText(event.getActionCommand());
readyForNextNumber=false;
answer.setText(answer.getText()+event.getActionCommand().charAt(0));
//主函数,也是该应用程序的执行入口处
publicstaticvoidmain(Stringargs[]){
CalculatorGUIcalcGUI=newCalculatorGUI();
calcGUI.launchFrame();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器 文档