还剩7页未读,继续阅读
文本内容:
莆田学院新工科产业学院课程设计课程名称Java程序设计题目简易计算机2021年6月30日
1.概述Java的早期版本以来抽象窗口工具包为用户界面组件提供了平台独立的API在AWT中每个组件都由一个原生的等同组件生成和控制,这个原生组件是由当前的图形窗口系统决定的在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择Java语言最大的特点是具有跨平台性使其不受平台不同的影响,得到了广泛的应用该程序是一个图形界面的java计算器其界面主要采用了swing包程序实现简单加、减、乘、除的运算以及其他按钮功能
2.设计任务及要求设计任务要求计算器至少能够实现基本的加减乘除运算和清空功能Clear按钮用于实现全部输入的清空操作,直接将显示置零
2.2设计要求1应具有相应的界面可参考Windows操作系统自带的计算器界面2操作符号定为等按国际惯例设计3用户通过点击程序界面上按钮实现数字、运算符的输入操作.设计方案具体方案1根据所设计出来的界面首先要设计其GUI界面总体界面有一个文本框,20个按钮总体界面用BorderLayout布局,文本框放置在最NORTH然后0到9以及+-*/等按钮放置到一个面板Panel中完成界面设计2设计计算流程,首先点击数字按钮时将按钮数值添加到文本框当中并将该数值保存到一个字符串中,再次点击数字按钮时将之前保存的字符串与新的数值拼接起来再添加到文本框当中,直到点击运算符按钮时将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容将运算符号显示到文本框中随后输入第二个计算数据时,用同样的办法保存数据最后通过控制“二”运算符先将字符串数据转化成双精度类型,然后计算出结果并显示到文本框当中3基本运算设计完成以后则开始考虑其他个别功能的实现,例如倒数、清零、退格等功能的实现;清零直接重置文本框内容、退格功能则采用substring函数截取字符串长度.2运行代码packagehh;importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Font;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Arrays;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JOptionPane;importjavax.swing.JPancl;importjavax.swing.JTextField;publicclassCalculator449extendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=6761447410797743112L;//属性JTextFieldtxtResult;booleanfirstDigit=true;〃用于判断是否是数字Stringoperator==;〃先初始化为等号,等到执行相应运算时再更改booleanoperateValidFlag=true;〃判断除数是否为0doubleresultNum=
0.0;〃可以暂存目前的最终结果//方法publicCalculator449{setTitle〃计算器〃;setSize240270;setResizablefalse;setLocationRelativeTonull;setDefaultCloseOperationEXITONCLOSE;ContainercontentPane=this.getContentPane0;contcntPane.sctLayoutnewBordcrLayout15;JPanelpnlNorth=newJPanel;JPanelpnlCenter=newJPanel;pnlNorth.setLayoutnewBorderLayout;pnlCenter.setLayoutnewGridLayout4433;Fontfont=newFontTimesRoman”Font.BOLD20;contentpaneaddBorderLayout.NORTHpnlNorth;contentPane.addBorderLayout.CENTERpnlCenter;txtResult=newJTextField;txtResult.setFontfont;txtResult.setEnablcdfalse;JButtonbtnClear=newJButtonClear;btnClear.setFontfont;btnClear.addActionListenerthis;pnlNorth.addBorderLayout.CENTERtxtResult;pnlNorth.addBorderLayout.EASTbtnClear;String[]captions={〃7〃,〃8〃,〃9〃,〃+〃,〃4〃,〃5〃,〃6〃,〃」,〃1〃”〃,〃3〃,〃*〃,〃o〃,〃.〃,〃/〃,〃二〃,};forinti=0;icaptionslength;i++{JButtonbtn=newJButtoncaptions[i];btn.setFontfont;pnlCenter.addbtn;btn.addActionListenerthis;publicstaticvoidmainString[]args{JFrameframe=newCalculator449;frame.setVisibletrue;〃对按钮进行的反应©OverridepublicvoidactionPerformedActionEventevent{Stringlabel=event.getActionCommandO;iflabelequalsClear{handleCO;}elseifC
0123456789.indexOflabel=0{〃无论整数还是小数都一起提取出来hand1eNumber1abe1;}else〃将当前要执行的运算的运算符赋给operatorhandleOperatorlabel;〃提取数字voidhandleNumberStringkey{iffirstDigit{txtResult.setTextkey;〃在文本框中显示数字的字符串}elseifkey.equals〃.〃txtResult.getTextO.indexOf^.,z0{txtResult.setTexttxtResult.getText+〃.〃;〃在文本框中显示整数数字的字符串}elseif!key.equals〃.〃{txtResult.setTexttxtResult.getText+key;//在文本框中显示整数数字的字符串firstDigit=false;〃当数字显示完之后即可重置为false〃实现清零voidhandleCO{txtResult.setText〃0〃;firstDigit=true;operator=〃=〃;〃进行运算voidhandleOperatorStringkey{ifoperatorequals//*{〃判断除数是否为0ifgetNumberFromText==
0.0{operateValidFlag=false;txtResult.setText〃除数不能为零〃;}else{resultNum/=getNumberFromText;}elseifoperatorequals^+^{resultNum+=getNumberFromText;}elseifoperatorequals{resultNum一二getNumberFromText;}elseifoperatorequals,/*,/{rcsultNum*=gctNumberFroinTcxt;}elseifoperatorequals,/=,/{resultNum=getNumberFroniText;}ifoperateValidFlag{longtl;doublet2;t1=longresultNum;t2=resultNum-tl;ift2二二0{txtResult.setTextString.valueOftl;}else{txtResult.setTextString.valueOfresultNum;}operator=key;firstDigit=true;operateValidFlag=true;doublegctNumbcrFromTcxt{doubleresult=0;tryresult=Double.valueOftxtResult.getText.doubleValue;〃把String转化成Double类型的对象,并求double的原始值}catchNumberFormatExceptione{returnresult;}.结论分析该计算那基本运算没有问题,能完成一个计算器的基本功能但仍有许多地方需要改进,如小数点还未实现功能而且该计算器还没能很好的实现连续计算的功能改进的方法是在运算符上同时注册Result类让运算符同时拥有计算结果的功能运行图.参考文献
[1]张思民.java语言程序设计[M].清华大学出版社
2007.2
[2]杨树林.java语言最新实用案例教程(第2版)[M].清华大学出版社.
2010.7。