java计算器课程设计.doc
《java计算器课程设计.doc》由会员分享,可在线阅读,更多相关《java计算器课程设计.doc(32页珍藏版)》请在沃文网上搜索。
1、课程设计说明书 NO.1Java简单计算器课程设计1.功能描述本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。2.方案论证2.1概要设计2.1.1自定义类说明 * 类名: This_number_too_big 作用: 自定义的异常类,用来处理计算结果溢出 继承的父类: Exception类 实现的接口: 没有 * c
2、lass This_number_too_big extends Exception /自定义的一个结果溢出异常类 * 类名: Jsp2003 作用: 主类继承的父类: Frame类 实现的接口: ItemListener类,ActionListener类 * class Jsp2003 extends Frame implements ItemListener,ActionListener public int number=0,length=18; 沈 阳 大 学课程设计说明书 NO.2/number是用来记录输入的数字个数, /length是用来设置在不同进制下允许输入的最多数字位数,默
3、认为十进制 public char mark=n; /设置运算符号为没有即为n,它的值是+-*/ public double data=0; /设置运算数据为零 public char ch; /用来临时存放所按按钮的第一个字符 public boolean Refresh=false; /设置lab是否要在输入数据的时候刷新,初始为否 2.1.2主要方法说明:/用来处理按了运算符后的计算- public void js() throws This_number_too_big /指定由method抛出异常 if (mark=n) /没有运算符 mark=ch; /,则设置运算符为刚刚输入的字
4、符, data=Double.parseDouble(lab.getText();/则设置运算数据为lab的值 Refresh=true;/则设置下一次输入的时候要刷新lab else /如果采用的是连续运算(即没有使用=号)则运行下面的语句 switch (mark) /根据运算符计算结果,并把结果保存到data case +: data+=Double.parseDouble(lab.getText(); break; case -: data-=Double.parseDouble(lab.getText(); break; case *: data*=Double.parseDoubl
5、e(lab.getText(); break; case /: data/=Double.parseDouble(lab.getText(); break; lab.setText(Double.toString(data); /显示运算结果 mark=ch;/设置运算符为刚刚按下的运算符 Refresh=true;/则设置下一次输入的时候要刷新lab number=lab.getText().length();/设置输入的字符个数 沈 阳 大 学课程设计说明书 NO.3/ System.out.println(lab.getText();/用来调试用的 if (dataDouble.MAX_
6、VALUE) /如果data超过double类型的最大值则抛出自定义的一个异常类 throw new This_number_too_big(); /end js() method public void enter()/处理输入字符 if(Refresh=true) /如果已经设置了 运算符则在下一次输入数据的时候要把以前lab的内容清除掉 lab.setText(0); number=0; Refresh=false; if(lab.getText().charAt(0)=0& lab.getText().length()=1) /如果lab的内容为0则,lab的内容将被所输入的字符代替,
7、 /否则直接在lab的内容后面加上所输入的字符 lab.setText(Character.toString(ch); number+; else if(numberlength) number+;lab.setText(lab.getText()+ch); /end enter() method /八进制或十六进制转换成十进制I public String goto_10(String s,long l) /参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性; /参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16; String str=s; /用来
8、转换的字符串 long j=l; /表示进制 long lg=0,jing=1;/lg用来记录权乘和,jing用来记录位权 char cha;/临时记录要转换的字符 for(int i=1;i=str.length();i+) 沈 阳 大 学课程设计说明书 NO.4 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
9、=lg+5*jing;break; case 6: lg=lg+6*jing;break; case 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;bre
10、ak; jing*=j; /位权升一级,为下次使用做好准备 return Long.toString(lg); /end String goto_10() method 2.1.3系统流程图 沈 阳 大 学课程设计说明书 NO.5图1 系统流程图2.2详细设计2.2.1具体设计首先分析这个说要完成的任务,它的主要任务是完成十六进制、十进制、八进制和二进制之间的相互转化,需要包含负数,但不用考虑小数。 其次,确定接口参数。根据功能可知,它传递给外部的就是一个转后的数据,而外部除了需要传递给转化前的数据以外,是否还需要其他参数呢?我们都知道,十进制的负数同样可以利用其他进制进行表示,例如二进制,转
11、化方法是:求十进制数的绝对值对应的二进制数,最高位为1;然后对二进制逐位求反,最高位除外;接着最低一位加1,需要进位的话依次进位,最高位除外。如今的问题就摆在了我们面前,我们如何知道这个数的最高位是第几位呢,也许有人会说,那就用转化后的前面再加上一位,好,即使这样可以成立,那么-1转化后就是11,3转化后也为11,现在如果需要现在的把这个数二进制数再转化为十进制,那么我们如何知道原来的是正数还是负数呢,如果要转化为十六进制,八进制又当如何呢?经过以上的分析发现,还应该有另外一个参数 沈 阳 大 学课程设计说明书 NO.6二进制时的宽度,只有这样才能知道谁是最高位,因此就称这个参数为位宽。 最后
12、,设计类。根据第二步的分析,因为位宽对每一个方法都是一样,所以可能把它作为类的成员变量,而另外两个参数转化前的值和转化后的值就分别作为输入参数和返回值。而类对外的接口只有各个转化的方法,因此这几个方法设计为public权限,而其它所有的辅助方法都为private权限。位宽通过构造函数传递,外部不能直接访问和修改,设置也设置为private权限。为了减少计算量,所有的转化都以二进制为中介。例如十六进制到十进制,是十六进制二进制十进制。2.2.2主要模块说明1把文本框和清空按钮加在第一个板上p1.add(text1);p1.add(bclear);bclear.addActionListener(
13、this);for(int i=0;i10;i+)bi=new Button(Integer.toString(i);bpoint=new Button(.);beq=new Button(=);2把所有数字按钮和.及=加在第二个板上for(int i=0;i10;i+)p2.add(bi);bi.addActionListener(this);p2.add(bpoint);p2.add(beq);bpoint.addActionListener(this); beq.addActionListener(this);3把运算符号按钮加在第三个板上badd=new Button(+);bsbb=
14、new Button(-);bmult=new Button(*); 沈 阳 大 学课程设计说明书 NO.7bdiv=new Button(/);p3.add(badd);p3.add(bsbb);p3.add(bmult);p3.add(bdiv);badd.addActionListener(this);bsbb.addActionListener(this);bmult.addActionListener(this);bdiv.addActionListener(this);add(p1);add(p2);add(p3);add(new Label( );public void acti
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 计算器 课程设计
