计算器(Java)课设

文章目录

  • 摘要
    • 目录
  • 1概述
    • 1.1 题目内容
  • 2需求分析
    • 2.1课设任务
      • 2.1.1任务一
      • 2.1.2任务二
      • 2.1.3任务三
    • 2.2学习要点
    • 2.3自主创新
    • 2.4设计要求
      • 2.4.1要求一
      • 2.4.2要求二
      • 2.4.3要求三
  • 3设计思路
    • 3.1思路一
    • 3.2思路二
    • 3.3思路三
    • 3.4思路四
    • 3.5思路五
    • 3.6思路六
  • 4详细设计
    • 4.1主要代码展示及说明
      • 4.1.1功能实现
      • 4.1.2算法思路
      • 4.1.3数据分析
  • 5运行调试
    • 5.1进行加减乘除求余以及指数运算
      • 5.1.1带负数的浮点加法运算
      • 5.1.2求倒
      • 5.1.3退格
      • 5.1.4清零
      • 5.1.5求余弦
      • 5.1.6异常处理
  • 总结
  • 参考文献
  • 致谢

以下是我自己的在JAVA课设写的说明书,希望可以帮助每一个需要的人

摘要

本文档是关于对Java版计算器的功能进行描述和介绍,该程序是要个图形界面的简单 Java计算器,具有良好的界面使用人员能快捷简单的进行操作。即时准确的获得需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算( 加、减、乘、除等)。界面简单易操作具体程序实现了:
1.实现简单的加 、 减 、 乘 、 除 、 运算 。
2.实现了除 了 加 、 减 、 乘 、 除 、清零、删除按钮外其他按钮功能,如 正切( tan )、余弦( cos ),以及求平方根( sqrt )、指数( pow )、对 e 的指数( exp )、对数运算( log )的功能。
3.实现了连续运算的能力 。
关键词 :Java 语言;四则运算;计算器

目录

1概述.....................................1
     1.1题目内容...........................1
     1.2用途及特点.........................1
2需求分析..................................2
	 2.1课设任务...........................2
	 	2.1.1任务一........................2
	 	2.1.2任务二........................2
		2.1.3任务三........................2
	 2.2学习要点...........................2
	 2.3自主创新...........................2
	 2.4设计要求...........................2
		2.4.1要求一........................2
		2.4.2要求二........................2
		2.4.3要求三........................2
3设计思路..................................3
	 3.1思路一.............................3
	 3.2思路二.............................3
	 3.3思路三.............................3
	 3.4思路四.............................4
	 3.5思路五.............................4
	 3.6思路六.............................4
4详细设计..................................5
	 4.1主要代码展示及说明..................5
		 4.1.1功能实现.....................5
	 	 4.1.2算法思路.....................8
	 	 4.1.3数据分析.....................9
5运行调试.................................10
	 5.1进行加减乘除求余以及指数运算........11
 		 5.1.1带负数的浮点加法运算.........11
		 5.1.2求倒........................13
		 5.1.3退格........................14
		 5.1.4清零........................15
		 5.1.5求余弦......................15
		 5.1.6异常处理....................16
总结......................................17
参考文献..................................18
致谢......................................19
目录只是一个参照。

1概述

1.1 题目内容

计算器一般指的是电子计算器。计算器是日常生活中十分便携有效的工具,能够实现加减乘除等简单的运算功能。采用了java编程语言实现计算机的功能。该计算器大大降低了数字计算的难度并且提高了计算准确度和精确度。使用简单,适合广大工作人员和学生使用。
随着信息时代的步伐,越来越得多的数字需要我们去处理,然而在我们日常生活中遇到的一些基本数字运算,以往简单的口算笔算,然而现在不同了,人们对计算机手机的依赖越来越高,遇到计算机问题不愿意用脑去思考,而是交由计算机或者手机来完成。为了给自己设计一个能够胜任自己学习的工作机会的计算器,决定自己通过所学的知识来编写一个简单的计算机。
1.2用途及特点
Java是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用围广泛。根据课程设计要求使用Java语言设计设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算,使用较为简单方便。该计算器应用程序为使用者本人创建,软件使用过程中可以进行设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

2需求分析

2.1课设任务

2.1.1任务一

设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运算(可以进行浮点数和负数的运算)。

2.1.2任务二

有求倒数、退格和清零功能。

2.1.3任务三

设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。

2.2学习要点

本程序主要练习使用布局管理器设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关的计算。

2.3自主创新

能进行正切、余弦,以及求平方根、指数(包括对 e )、自然对数运算。

2.4设计要求

2.4.1要求一

设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。

2.4.2要求二

课程设计可选用 Eclipse 、 JBuilder 、 NetBeans 等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。

2.4.3要求三

认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

3设计思路

3.1思路一

本应用程序继承自框架类( JFrame ),容器 Container c 采用BorderLayout 边缘布局,将单行文本框加入到“ North ” 区域,包含各种按钮的面板 JPanel p 加入到 ” Center ” 区域。包含各种按钮的面板 JPanel p 采用 4 行 7 列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个 for 循环添加到面板中同时注册按钮事件监听器。如:
Button b=new Button();
b.addActionListener( 事件监听器 ) ;

3.2思路二

事件监听器中的事件处理方法 void actionPerformed(ActionEvent evt) 完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件( ” 0 ” , ” 1 ” , ” 2 ”…” 8 ” , ” 9 ” )、运算符按钮事件( ” + ” , ” - “ , ” * ” , ” / ” , ” % ” )、正负号按钮事件( ” +/- “ )、小数点按钮事件( ” . ” )、等号按钮事件( ” = ” )、求倒按钮事件( ” 1/x” )、退格按钮事件( ” ← ” )、清除按钮事件 ( “ C ” ) 、正切( tan )、余弦( cos ),以及求平方根( sqrt )、指数 ( pow )、对 e 的指数( exp )、对数运算( log )。

3.3思路三

在事件处理,触发按钮事件时,先判断是或是数字是或是“ -/+ ”是或是“ . ”,是的话就将负号“ - ” 、数字、小数点“ . ”分别写入文本框并存放在 sum 中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到 doOperation() 执行运算同时将运算符存放在 preOperater 中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。

3.4思路四

计算器完成的是一个数学表达式,如: 3 + 2 ,所以可以采用一个数组来存储数字或字符,如 3 ,+, 2 分别存储在数组中,最后运算时,可以一一取出来进行运算。

3.5思路五

利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。

3.6思路六

利用文本框显示操作数和运算结果。

4详细设计

4.1主要代码展示及说明

4.1.1功能实现

①加减乘除求余以及指数运算

void doOperation(){
 double m=Double.parseDouble(x.getText());
 if(preOperater.equals("")) sum=m; // 无前一操作,结果为刚输入数
  // 将结果与文本框中的数据按照前一个运算符运算
  if(preOperater.equals("+")) sum=sum+m; // 加法运算
  if(preOperater.equals("-")) sum=sum-m; // 减法运算
  if(preOperater.equals("*")) sum=sum*m; // 乘法运算
  if(preOperater.equals("/")) sum=sum/m; // 除法运算
  if(preOperater.equals("%")) sum=sum%m; // 求余
  if(preOperater.equals("pow")) sum=Math.pow(sum, m); // 求幂,指数运算
}

②其他运算

.求平方根
        Void sqrt () {
        double m=Double.parseDouble(x.getText());
        if (m<0) 
        x.setText(" 负数不能开根号 ");  
        else
        x.setText(""+Math.sqrt(m));
   }.对数运算
        Void log () {
        double m=Double.parseDouble(x.getText());
        if (m<0) 
        x.setText(" 负数不能进行自然对数运算 ");
        else
        x.setText(""+Math.log(m));
   }.余弦运算
      Void cos () {
      double m=Double.parseDouble(x.getText());
     x.setText(""+Math.cos(m));
   }.正切运算
      Void tan () {
      double m=Double.parseDouble(x.getText());
     x.setText(""+Math.tan(m));
   }.e 的指数运算
      Void exp () {
      double m=Double.parseDouble(x.getText());
     x.setText(""+Math.exp(m));
   }.倒数运算
        Void daoshu () {
        if (Double.parseDouble(x.getText())==0) 
          x.setText(" 除数不能为零 ");  
        else{
         x.setText(""+1/(Double.parseDouble(x.getText())));
         preOperater="";
       }  
   }

③主要方法说明

public cos(double x)  // 求 x 的余弦函数
public tan (double x)  // 求 x 的正切函数
public sqrt(double x)  // 求 x 的平方根
public log (double x)  // 求 x 的自然对数运算
public exp (double x)  // 求 e 的 x 次幂
public pow (double a , double b)  // 求 a 的 b 次幂
public daoshu (double x)  // 求 x 的倒数

4.1.2算法思路

这是一个简单的计算器,里面所涉及到的功能就是加、减、乘、除、等基本功能。在输入数据之后 Character.isDigit(Command.charAt(0)) 判断输入的数据是否符合要求。不符合要求给出提示,符合要求以后将判断点击的运算符,执行相应的操作。
对于单运算操作要进一步判断是否符合要求,如果是就进入下步计算,如果不是就弹出相应的提示: “负数不能开根号 " ; " 除数不能为零 " ;用 try … .catch 捕获异常 , 如果有异常则中止活动。在进行开方( sqrt )运算时,如果输入数为负数,则弹出 " 负数不能开根号 " ,中止运算。在进行自然对数运算时( log )如果输入数为负数,则弹出 " 负数不能进行自然对数运算”。在进行三角函数运算时( cos 、 tan )不必考虑输入的数字是否符合规范,对于任意输入的数函数本身有一个判断的过程,都能把输入的数转化为合适的范围,进而得到正确的结果。对于加减乘除等双运算操作,每个功能都由每一个模块来实现,当按下加按钮时,进行相应的加法操作,这一块对相应的操作数没有要求;当点击减号时,则进行减法操作,由 jTextField.getText() 得到数字按钮的值显示在相应的文本框中;乘法操作在点击一个操作数然后点击乘号再点击另一个时得出相应的结果显示在文本框中;在作除法运算时,当被除数点击为零时,调用 catch 进行异常处理,弹“ Infinity ”。

4.1.3数据分析

在事件处理,触发按钮事件时,先判断是或是数字是或是“ -/+ ”是或“ . ”,是的话就将负号“ - ” 、数字、小数点“ . ”分别写入文本框并存放在 sum 中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到 doOperation() 执行运算同时将运算符存放在 preOperater 中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。

5运行调试

设计时先在设计界面中添加按钮等控件,后在按钮的 actionPerformed 事件中添加代码完成其功能其中调用了 Java 类中的 Math 函数库以及各种字符串操作。设计的界面如下:
计算器(Java)课设_第1张图片

图 1 计算器运行界面

5.1进行加减乘除求余以及指数运算

5.1.1带负数的浮点加法运算

(例: -1.2+2=0.8 )
依次按“ +/- ”(也可以最后按),“ 1 ”,“ . ”,“ 2 ”键。
计算器(Java)课设_第2张图片

按下“ + ”键
计算器(Java)课设_第3张图片

按下“ 2 ”键
计算器(Java)课设_第4张图片

按下“ = ”键
计算器(Java)课设_第5张图片
其余运算同理,鉴于篇幅此处就不再一一列举。

5.1.2求倒

(例:4求到数等于0.25)
先按下“4”键
计算器(Java)课设_第6张图片

再按下“求到”键

计算器(Java)课设_第7张图片

5.1.3退格

先输入“1111”
计算器(Java)课设_第8张图片

按下“退格”键
计算器(Java)课设_第9张图片

5.1.4清零

按下“ c ”键
计算器(Java)课设_第10张图片

5.1.5求余弦

也可以进行求正切、对 e 求幂、求平方根、求自然对数、求倒等运算;
这以求余弦进行测试。(例: cos4 )
按下“ 4 ”键
计算器(Java)课设_第11张图片

按下“ cos ”键
计算器(Java)课设_第12张图片

其余运算同理,鉴于篇幅此处就不再一一列举。

5.1.6异常处理

(例:求倒时输入数为 0 )
按“ 0 ”键再按“求倒”键
计算器(Java)课设_第13张图片

其余异常鉴于篇幅此处就不再一一列举。

总结

在本次课程设计的过程中,我碰到了很多问题,比如求倒时,最先我是把按钮 新建成“ 1/x ”,但是出现问题,怎么找都没找出问题来,其后重新整理思绪才 发现不能设成“ 1/x ”,因为“ 1/x ”中第一个字符是数字,其中应用到的方法 Character.isDigit(Command.charAt(0)) 会将“ 1/x ”当做数字键写入文本框。 还有就是实现退格功能时不知道怎样处理,最后上网百度了一下才找到了方法,这 也让我深刻体会到了网络的作用。当然还遇到了其他的困难,这些花费了我很多时 间,使我失败了很多次,但是通过我们不解的努力还是一一克服了这些问题,最终 还是成功了。当然在这次试验中也暴露自己一些问题,发现了自己的很多不足,自 己知识的很多漏洞,基础知识的不牢固,看到了自己的实践经验还是比较缺乏,理 论联系实际的能力还急需提高。
这次课程设计,除了全面系统的理解了 JAVA 面向对象编程原理的一般原理和基本实现方法,还把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的编程原理的知识强化,把课堂上学的知识通过自己设计的程序表示出来,这加深 了对理论知识的理解。 课程设计中程序比较复杂,在调试时应该仔细,在程序调试 时,注意尽力寻 找程序中存在的不足之处,进而使功能更加完善。 当然在做课程设计要有很大的耐心,做的过程就是不断的调试 — 修改 — 调 试过程,只有静下心来才能把问题解决。

参考文献

[1] 李尊朝.Java语言程序设计(第三版):中国铁道出版社,2013
[2] 陈明.Java语言程序设计课程实践:清华大学出版社,2009
[3] 朱福喜,黄方胜编著.Java项目开发实训教程 . 北京:中国电力出版社,2007
[4] 刘兆宏等编著.Java语言程序设计案例教程.北京:中国铁道出出版社,2014
[5] 袁然,邹丰义编著.Java案例开发集锦.北京:机械工业出版社,2008
[6] 李明,吴琼著. Java程序设计案例教程. 北京:清华大学出版社, 2013
[7] 赵凤芝编著. Java程序设计案例教程. 北京:清华大学出版社,2011
[8] 杨小平编著.Java项目案例导航 .上海:同济大学出版社,2011

致谢

在本次课设的撰写过程中,我得到了许多人的帮助,首先我要感谢老师在课程 设计上给予我的指导、支持和帮助。虽然在检查运行程序的过程中老师提出了问题, 但是我能理解老师的用意,老师的目的并不是难为我们,或许可以说老师要的并不 是让我们完成这次课程设计的设计题目,而是让我们能够掌握好这门语言。
这个设计是将自己对 Java 程序设计所学的知识的一个检验过程,在这个过程 中可以体验到自己去尝试的快乐,也有功能实现不了的困惑,老师,同学的宝贵意 见都给了我很多帮助,在此十分感谢他们。通过课程设计自己动手可以增强实践能 力,而且对系统开发有了一个比较清楚的了解,知道了应该怎么样去分析问题、解 决问题,收获很多。在老师悉心的关怀和大力支持下我的课程设计才能得以顺利完 成,在这里我衷心的感谢老师对我的关怀和支持。老师认真负责的工作态度、严谨 的治学风格,使我深有感触是在老师的帮助下,我才能顺利的完成这个系统。
另外,在此期间,我不仅学到了许多新知识,而且也开阔了视野,提高了自己 的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白 的设计过程中的难题,同时也非常感谢学院为我提供了良好的课程设计的环境,最 后在一次感谢所有在此次 Java 课程设计中曾经帮助过我的老师和同学们!

你可能感兴趣的:(课设,Java,java,规格说明书)