Java课程设计报告1.doc_第1页
Java课程设计报告1.doc_第2页
Java课程设计报告1.doc_第3页
Java课程设计报告1.doc_第4页
Java课程设计报告1.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖湖 南南 农农 业业 大大 学学 java 课程设计报告课程设计报告 计算器软件设计计算器软件设计 学生姓名:学生姓名: 学学 号:号: 年级专业:年级专业: 指导老师:指导老师: 学学 院:院: 1 目目 录录 1. 前言前言2 2概要设计概要设计3 2.1 开发环境开发环境3 2.2 计算器功能计算器功能3 2.3 界面设计界面设计3 2.4 类类 uml 图图4 3. 详细设计详细设计4 3.1 使用的使用的 java 类的说明类的说明4 3.2 类的主要方法类的主要方法5 3.2.1 处理按了运算符后的计算处理按了运算符后的计算5 3.2.2 处理输入字符处理输入字符6 3.2.3 进制的转换进制的转换6 3.2.4 设计总体认识设计总体认识7 3.2.5 程序流程图程序流程图8 4. 运行结果运行结果8 5. 测试分析测试分析9 5.1 程序运行情况程序运行情况9 5.2 程序异常处理程序异常处理9 6. 源程序源程序9 参考文献参考文献27 致致 谢谢27 2 摘要:摘要:该程序是一个图形界面的简单的 java 计算器,具有良好的界面,使 用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低 了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单 的四则运算(加、减、乘、除,以及开平方)但仅限于十进制下,还可以进行 (八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入 19 位数, 十进制最多可以输入 18 位数,十六进制最多可以输入 14 位数,backspace 表示 退格, clear 表示初始化,sqrt 表示开平方,界面为灰白对称。 关键字:关键字:java、计算器类、方法、事件 1 前言前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺 少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了 java 语言之后,我决定使用 java 语言编写一个简单的计算器,可以实现简单的运 算功能,满足日常基本的工作学习和娱乐需要。 java 是由 sun 公司开发的新一代纯面向对象的网络编程语言。其目标是建 立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的 “程序写一次,到处运行”的目标。正因为如此,java 已成为当今 internet 上最流行、最受欢迎的一种程序开发语言。 java 开发小组把 java 按特性分为基本版、移动版、企业版,每个版本有 一个软件开发包。java 基本版本叫 java 2 标准版(java 2 standard edition,j2se),它包含建立 java 应用程序或者是 applet 所需的应用程序编程 接口(api) 。java 2 移动版(the java 2 mobile edition,j2me)包含创建 无线 java 应用程序的 api。还有 java 2 企业版(the java 2 enterprise,j2ee)是 j2se 的增强版本,包含建立多层架构应用程序 api。 java 语言是由 c+语言发展起而来的,是一种彻底的面向对象的程序设计 语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。 java 语言去掉了 c+语言的一些容易引起错误的特性。java 语言的特点有:面 向对象、跨平台、安全性、多线程和图形功能强。 3 2 概要设计概要设计 2.1 开发环境开发环境 开发平台:microsoft windows xp professional service pack 2 开发工具:jbuilder 2007 + jdk 1.6.0_02 2.2 计算器功能计算器功能 功能 1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。 功能 2:在任何时候按下“”键,计算器文本框上的数字置反号。 功能 3:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下 “运 算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。 功能 4:输入数字后,按下“等于”键,将仍输出原来的数 输入运算符和第二个数字 后再按下“=”键,将得到二者运算的结果,然后又重复功能 3 和功能 4 。 功能 5:按下清除“c”键,数据被全部清楚。 2.32.3 界面设计界面设计 图 2.3 计算器面板 4 2.4 类类 uml 图图 arraystackchar uml 图如图 2.3a 所示: arraystackdouble uml 图如图 2.3b 所示 图 2.4a 图 2.4b 3 详细设计详细设计 3.1 计算器使用的计算器使用的 java 类的说明类的说明 类名: this_number_too_big 作用: 自定义的异常类,用来处理计算结果溢出 继承的父类: exception 类 实现的接口: 没有 class this_number_too_big extends exception /自定义的一个结果溢出异常类 5 类名: jsp2003 作用: 主类。 继承的父类: frame 类 实现的接口: itemlistener 类,actionlistener 类 class jsp2003 extends frame implements itemlistener,actionlistener public int number=0,length=18; /number 是用来记录输入的数字个数, /length 是用来设置在不同进制下允许输入的最多数字位数,默认为十 进 制 public char mark=n; /设置运算符号为没有即为n,它的值是+-*/ public double data=0; /设置运算数据为零 public char ch; /用来临时存放所按按钮的第一个字符 public boolean refresh=false; /设置 lab 是否要在输入数据的时候刷新,初始为否 程序的设计参考了 sun java 网站里的大量实例,比如 layout 的使用、 event 的处理、components 的添加与应用等等。其中: public class newcalc extends jframe implements actionlistener 语句实现了 actionlistener 接口,因此可以调用 addactionlistener(this) 方法对按钮进行点击监听,在下面的 public void actionperformed(actionevent e)方法里面对各个点击事件进行处理。 3.2 类的主要方法 3.2.1 处理按了运算符后的计算: public void js() throws this_number_too_big if (mark=n) mark=ch; / data=double.parsedouble(lab.gettext(); refresh=true; else 6 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) throw new this_number_too_big(); 3.2.2 处理输入字符: if(refresh=true) lab.settext(“0“); number=0; refresh=false; if(lab.gettext().charat(0)=0 number+; else if(number= 16) ch = lg % 16; k = (int) ch; switch (k) case 10: st = “a“ + st; break; case 11: st = “b“ + st; break; case 12: st = “c“ + st; break; case 13: st = “d“ + st; break; case 14: st = “e“ + st; break; case 15: st = “f“ + st; break; default: st = long.tostring(ch) + st; lg = lg / 16; k = (int) lg; switch (k) case 10: st = “a“ + st; break; case 11: st = “b“ + st; 23 break; case 12: st = “c“ + st; break; case 13: st = “d“ + st; break; case 14: st = “e“ + st; break; case 15: st = “f“ + st; break; default: st = long.tostring(lg) + st; return st; / end goto10_16() method / 十进制转换成八进制? public string goto10_8(string s) / 参数 s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性; string str = s; if (str.charat(0) = -) / 如果有负号则出去负号 str = str.substring(1, str.length() - 1); if (str.indexof(e) != -1)/ 如果是科学计数值则出去小数点和 e 后面的数 str = str.charat(0) + str.substring(2, str.indexof(e); if (str.indexof(.) != -1)/ 如果有小数点则出去小数点及小数点 后面的内容 str = str.substring(0, str.indexof(.); lg = long.parselong(str); while (lg = j) ch = lg % j; st = long.tostring(ch) + st; lg = lg / j; st = long.tostring(lg) + st; return st; / end goto10_8() method / 输入字符 public void enter() if (refresh = true) 24 / 如果已经设置了 运算符则在下一次输入数据的时候要把以前 lab 的 内容清除掉 lab.settext(“0“); number = 0; refresh = false; if (lab.gettext().charat(0) = 0 number+; else if (number double.max_value) / 如果 data 超过 double 类型的最大值则抛出自定义的一个异常 类 throw new this_number_too_big(); / end js() method public void answer() throws this_number_too_big / 指定由 method 抛出异常 if (mark = n) 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 = n; if (data double.max_value) / 如果 data 超过 double 类型的最大 值则抛出自定义的一个异常类 throw new this_number_too_big(); 26 refresh = false; number = lab.gettext().length(); / end answer() method string display=“; private void deposit(char code) switch (code) case c: display=“; break;/ 初始化 case +: display=display+code; break; case -: display=display+code; break; case *: display=display+code; break; case /: display=display+code; break; case 1: display=display+code; break; case 2: display=display+code; break; case 3: display=display+code; break; case 4: display=display+code; break; case 5: display=display+code; break; case 6: display=display+code; break; case 7: display=display+code; break; case 8: 27 display=display+code; break; case 9: display

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论