Java课程设计模板

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java课程设计报告计算器软件设计学生姓名:薛艺学号:08142201111年级专业:08计算机升本指导老师:杨小东学院:继续教育学院1目录一、实验目的,运用的技术知识……………………………………………………2二、需求分析及要达到的功能………………………………………………………3三、类分析及实现……………………………………………………………………5a)类层次分析及构建…………………………………………………………5四、程序实现………………………………………………………………………10a)主要程序代码及必要的代码解释………………………………………10五、总结……………………………………………………………………………362一、实验目的,运用的技术知识1、目的:随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要,于此掌握一门计算机语言,也必须要通过日常不断的实践才能真正掌握它。2、运用的技术知识:Java语言、面向对象的程序设计、类继承机制、UI界面的设计、异常处理机制等。3二、需求分析及要达到的功能a、计算器功能功能1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。功能2:在任何时候按下“±”键,计算器文本框上的数字置反号。功能3:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下“运算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。功能4:输入数字后,按下“等于”键,将仍输出原来的数输入运算符和第二个数字后再按下“=”键,将得到二者运算的结果,然后又重复功能3和功能4。功能5:按下清除“C”键,数据被全部清楚。b、界面设计图1计算器面板c、类UML图ArrayStackCharUML图如图2.3A所示:4ArrayStackDoubleUML图如图2.3B所示图2图35三、类分析及实现a、类层次分析及构建类名:This_number_too_big作用:自定义的异常类,用来处理计算结果溢出继承的父类:Exception类实现的接口:没有classThis_number_too_bigextendsException{}//自定义的一个结果溢出异常类类名:Jsp2003作用:主类。继承的父类:Frame类实现的接口:ItemListener类,ActionListener类classJsp2003extendsFrameimplementsItemListener,ActionListener{publicintnumber=0,length=18;//number是用来记录输入的数字个数,//length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制publiccharmark='n';//设置运算符号为没有即为‘n’,它的值是‘+’‘-’‘*’‘/’publicdoubledata=0;//设置运算数据为零publiccharch;//用来临时存放所按按钮的第一个字符publicbooleanRefresh=false;//设置lab是否要在输入数据的时候刷新,初始为否6程序的设计参考了SunJava网站里的大量实例,比如Layout的使用、Event的处理、Components的添加与应用等等。其中:publicclassNewCalcextendsJFrameimplementsActionListener语句实现了ActionListener接口,因此可以调用addActionListener(this)方法对按钮进行点击监听,在下面的publicvoidactionPerformed(ActionEvente)方法里面对各个点击事件进行处理。b、处理按了运算符后的计算:publicvoidjs()throwsThis_number_too_big{if(mark=='n'){mark=ch;/data=Double.parseDouble(lab.getText());Refresh=true;}else{switch(mark){case'+':data+=Double.parseDouble(lab.getText());break;case'-':data-=Double.parseDouble(lab.getText());break;case'*':data*=Double.parseDouble(lab.getText());break;case'/':data/=Double.parseDouble(lab.getText());break;}lab.setText(Double.toString(data));mark=ch;Refresh=true;number=lab.getText().length();//System.out.println(lab.getText());if(dataDouble.MAX_VALUE){thrownewThis_number_too_big();}}}7处理输入字符:{if(Refresh==true){lab.setText(0);number=0;Refresh=false;}if(lab.getText().charAt(0)=='0'&&lab.getText().length()==1){lab.setText(Character.toString(ch));number++;}elseif(numberlength){number++;lab.setText(lab.getText()+ch);}}八进制或十六进制转换成十进制I:publicStringgoto_10(Strings,longl)//参数s:是要转换的字符串,由于输入的控制,保证了字符串的合法性;//参数l:使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16;{Stringstr=s;//用来转换的字符串longj=l;//表示进制longlg=0,jing=1;//lg用来记录权乘和,jing用来记录位权charcha;//临时记录要转换的字符for(inti=1;i=str.length();i++){cha=str.charAt(str.length()-i);switch(cha){case'1':lg=lg+1*jing;break;case'2':lg=lg+2*jing;break;case'3':lg=lg+3*jing;break;case'4':lg=lg+4*jing;break;case'5':lg=lg+5*jing;break;case'6':lg=lg+6*jing;break;8case'7':lg=lg+7*jing;break;case'8':lg=lg+8*jing;break;case'9':lg=lg+9*jing;break;case'A':lg=lg+10*jing;break;case'B':lg=lg+11*jing;break;case'C':lg=lg+12*jing;break;case'D':lg=lg+13*jing;break;case'E':lg=lg+14*jing;break;case'F':lg=lg+15*jing;break;}jing*=j;//位权升一级,为下次使用做好准备}returnLong.toString(lg);}//endStringgoto_10()method}9c、程序流程图图3绘制计算器方法PAD图d、运行结果图4计算结果显示计算结果显示接受用户输入是否再次计算退出是否处理异常开始选择你要计算运行的进制10.8.16十六进制八进制默认十进制进制转换刷新10四、程序具体实现a、主要程序代码及必要的代码解释importjava.awt.*;importjava.awt.event.*;classThis_number_too_bigextendsException{}//自定义的一个结果溢出异常类//ActionLintsner是所有监听器的父类,其它监听器可以监听的事件都可以被它捕获//ItemListener用于捕获带有item的组件产生的事件,如ComboBox,CheckBox,RadioButton,ToggleButtonclasshejiangextendsFrameimplementsItemListener,ActionListener{publichejiang(){addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){dispose();System.exit(0);}//给窗口注册一个事件监听器,当你点了窗口右上方的叉号时,此方法被调用});}statichejiangmainFrame=newhejiang();//创建一个mainFramestaticLabellab1=newLabel(0);staticLabellab=newLabel(0);staticPanelpnl1=newPanel(newGridLayout(4,3,3,3));//创建新的11面板.布局管理staticPanelpnl2=newPanel(newGridLayout(4,1,3,3));staticPanelpnl3=newPanel(newGridLayout(1,2,3,3));staticPanelpnl4=newPanel(newGridLayout(6,1,3,3));staticButtonbt9=newButton(9);staticButtonbt8=newButton(8);staticButtonbt7=newButton(7);staticButtonbt6=newButton(6);staticButtonbt5=newButton(5);staticButtonbt4=newButton(4);staticButtonbt3=newButton(3);staticButtonbt2=newButton(2);staticButtonbt1=newButton(1);staticButtonbt0=newButton(0);staticButtonbtdot=newButton(.);staticButtonbtequ=newButton(=);staticButtonbtadd=newButton(+);staticButtonbtsub=newButton(-);staticButtonbtmul=newButton(*);staticButtonbtdev=newButton(/);staticButtonbtA=newButton(A);staticButtonbtB=newButton(B);staticButtonbtC=newButton(C);staticButtonbtD=newButton(D);staticButtonbtE=newButton(E);staticButtonbtF=newButton(F);staticCheckboxckb8=newCheckbox(八进制);staticCheckboxckb10=newCheckbox(十进制);staticCheckboxckb16=newCheckbox(十六进制);staticButtonbtc=newButton(clear);12staticButtonbtt=newButton(backspace);publicintnumber=0,length=18;//number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制publiccha

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功