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

下载本文档

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

文档简介

湖湖 南南 农农 业业 大大 学学 Java 课程设计报告课程设计报告 计算器软件设计计算器软件设计 学生姓名 学生姓名 学学 号 号 年级专业 年级专业 指导老师 指导老师 学学 院 院 湖南 长沙 提交日期 2007 年 12 月 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 data Double 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 length number lab setText lab getText ch 3 2 3 八进制或十六进制转换成十进制 I public String goto 10 String s long l 参数 s 是要转换的字符串 由于输入的控制 保证了字符串的合法 性 参数 l 使用来设置是将 8 进制还是 16 进制转换成 10 进制 它的有 7 效值为 8 或 16 String str s 用来转换的字符串 long j l 表示进制 long lg 0 jing 1 lg 用来记录权乘和 jing 用来记录位权 char cha 临时记录要转换的字符 for int i 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 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 break jing j 位权升一级 为下次使用做好准备 return Long toString lg end String goto 10 method 8 3 2 4 设计的总体认识 JAVA 设计的摘要 JAVA 设计的目录结构 JAVA 设计的概要和详细设计 JAVA 设计的版权意识 JAVA 设计需要编译的环境 JAVA 设计的实用性 3 2 5 程序流程图程序流程图 计算结果显示 接受用户输入 是否再 次计算 退出 是 否 处理异常 图 3 绘制计算器方法 PAD 图 开始 选择你要计算运行的进制 10 8 16 十六进制八进制默认十进制 进制转换 刷新 9 4 运行结果运行结果 图 4 计算结果显示 5 测试分析测试分析 5 1 程序运行情况程序运行情况 程序正常的响应按钮事件 输入的数值长度受变量 length 的限定 进行混合四 则运算的时候 结果如果不是很大 可以正常显示 但如果结果很大 就可能 采用科学记数方式 这样带来了进制转换时的麻烦 需要特殊的处理科学记数 里的 E 当结果太大的时候 有可能超出可能表示的最大值 结果溢出 这 个时候就要对结果进行必要的异常处理 我在输出结果的方法内设置 if 语句 如果结果大于某一个值就抛出一个 This number too big 类型的类 再使用 try catch 捕捉输出结果的方法抛出的异常对象 然后进行 重制归零的处理 5 2 程序异常处理程序异常处理 当结果超出 Double MAX VALUE 时 将抛出一个 This number too big 类 的异常对象 这个是我自定义的一个异常类它继承自 Exception 类 然后使 用 try catch 去捕捉这个异常 异常的处理如下 try 10 js catch This number too big e lab setText 0 number 0 mark n Refresh false System out println The number is too big 如果出现异常则初始化效果如同 clear 键 6 6 程序清单 程序清单 import java awt import java awt event class This number too big extends Exception 自定义的一个结果溢出异常类 ActionLintsner 是所有监听器的父类 其它监听器可以监听的事件都可以被 它捕获 ItemListener 用于捕获带有 item 的组件产生的事件 如 ComboBox CheckBox RadioButton ToggleButton class hejiang extends Frame implements ItemListener ActionListener public hejiang addWindowListener new WindowAdapter public void windowClosing WindowEvent e dispose System exit 0 给窗口注册一个事件监听器 当你点了窗口右上方的叉号时 此方法被调用 static hejiang mainFrame new hejiang 创建一个 mainFrame static Label lab1 new Label 0 static Label lab new Label 0 static Panel pnl1 new Panel new GridLayout 4 3 3 3 创建新 的面板 布局管理 11 static Panel pnl2 new Panel new GridLayout 4 1 3 3 static Panel pnl3 new Panel new GridLayout 1 2 3 3 static Panel pnl4 new Panel new GridLayout 6 1 3 3 static Button bt9 new Button 9 static Button bt8 new Button 8 static Button bt7 new Button 7 static Button bt6 new Button 6 static Button bt5 new Button 5 static Button bt4 new Button 4 static Button bt3 new Button 3 static Button bt2 new Button 2 static Button bt1 new Button 1 static Button bt0 new Button 0 static Button btdot new Button static Button btequ new Button static Button btadd new Button static Button btsub new Button static Button btmul new Button static Button btdev new Button static Button btA new Button A static Button btB new Button B static Button btC new Button C static Button btD new Button D static Button btE new Button E static Button btF new Button F static Checkbox ckb8 new Checkbox 八进制 static Checkbox ckb10 new Checkbox 十进制 static Checkbox ckb16 new Checkbox 十六进制 static Button btc new Button clear static Button btt new Button backspace 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 是否要在输入数据的时候刷新 初始为否 public static void main String args System out println Starting hejiang lab setAlignment Label RIGHT 对齐方式 lab setBackground Color lightGray 背景色 12 lab setForeground Color BLUE 前景色 lab setFont new Font Serief Font BOLD 18 字体设置 lab setBounds 14 33 216 40 lab1 setAlignment Label RIGHT 对齐方式 lab1 setBackground Color lightGray 背景色 lab1 setForeground Color BLUE 前景色 lab1 setFont new Font Serief Font BOLD 18 字体设置 lab1 setBounds 14 75 216 40 mainFrame add lab mainFrame add lab1 CheckboxGroup grp new CheckboxGroup ckb8 setCheckboxGroup grp ckb10 setCheckboxGroup grp ckb16 setCheckboxGroup grp ckb8 setBounds 14 115 55 25 setBounds 方法是可以设定 控件的大小和位置 ckb10 setBounds 69 115 55 25 ckb16 setBounds 124 115 65 25 ckb8 setState false ckb10 setState true ckb16 setState false mainFrame add ckb8 mainFrame add ckb10 mainFrame add ckb16 pnl1 setBounds 18 180 120 150 pnl2 setBounds 144 180 40 150 pnl3 setBounds 14 140 170 36 pnl4 setBounds 190 140 40 190 pnl1 add bt7 pnl1 add bt8 pnl1 add bt9 pnl1 add bt4 pnl1 add bt5 pnl1 add bt6 pnl1 add bt1 pnl1 add bt2 pnl1 add bt3 pnl1 add bt0 pnl1 add btdot pnl1 add btequ pnl2 add btadd pnl2 add btsub pnl2 add btmul pnl2 add btdev 13 pnl3 add btt pnl3 add btc pnl4 add btA pnl4 add btB pnl4 add btC pnl4 add btD pnl4 add btE pnl4 add btF btA enable false btB enable false btC enable false btD enable false btE enable false btF enable false mainFrame add pnl1 mainFrame add pnl2 mainFrame add pnl3 mainFrame add pnl4 mainFrame setResizable false 窗口可以最小化和关闭 但是不 能被任意改变大小 mainFrame setLayout null mainFrame setSize 240 350 mainFrame setTitle 小型计算器 mainFrame setVisible true 组件可见 ckb8 addItemListener mainFrame ckb10 addItemListener mainFrame ckb16 addItemListener mainFrame 把事件聆听者向各个组键注册 bt1 addActionListener mainFrame bt2 addActionListener mainFrame bt3 addActionListener mainFrame bt4 addActionListener mainFrame bt5 addActionListener mainFrame bt6 addActionListener mainFrame bt7 addActionListener mainFrame bt8 addActionListener mainFrame bt9 addActionListener mainFrame bt0 addActionListener mainFrame btadd addActionListener mainFrame btsub addActionListener mainFrame btmul addActionListener mainFrame btdev addActionListener mainFrame btt addActionListener mainFrame btc addActionListener mainFrame 14 btdot addActionListener mainFrame btequ addActionListener mainFrame btA addActionListener mainFrame btB addActionListener mainFrame btC addActionListener mainFrame btD addActionListener mainFrame btE addActionListener mainFrame btF addActionListener mainFrame end main mothed checkbox 事件的处理 public void itemStateChanged ItemEvent e mark n Refresh false 规定当进制转换时以前输入的运算符失效 if ckb8 getState true btA enable false btB enable false btC enable false btD enable false btE enable false btF enable false bt9 enable false bt8 enable false btdot enable false btadd enable false btmul enable false btsub enable false btdev enable false btequ enable false 在八进制的情况下对有些按件的管理 if length 18 lab setText goto10 8 lab getText number lab getText length if length 14 lab setText goto 10 lab getText 16L lab setText goto10 8 lab getText number lab getText length 将其他进制转换成八进制 length 19 在八进制下允许输入数字个数最多为 19 位 15 if ckb10 getState true btA enable false btB enable false btC enable false btD enable false btE enable false btF enable false bt9 enable true bt8 enable true btdot enable true btadd enable true btmul enable true btsub enable true btdev enable true btequ enable true 在十进制的情况下对有些控件的管理 if length 19 lab setText goto 10 lab getText 8L number lab getText length if length 14 lab setText goto 10 lab getText 16L number lab getText length if length 19 lab1 setText goto 10 lab1 getText 8L number lab1 getText length if length 14 lab1 setText goto 10 lab1 getText 16L number lab1 getText length length 18 if ckb16 getState true btA enable true btB enable true btC enable true btD enable true btE enable true btF enable true bt9 enable true bt8 enable true btdot enable false 16 btadd enable false btmul enable false btsub enable false btdev enable false btequ enable false 在十六进制的情况下对有些按件的管理 if length 18 lab setText goto10 16 lab getText number lab getText length if length 19 lab setText goto 10 lab getText 8L lab setText goto10 16 lab getText number lab getText length 将其他进制转换成十六进制 length 14 在十六进制下允许输入数字个数最多为 14 位 end itemStateChanged ItemEvent e method 按钮事件的处理 public void actionPerformed ActionEvent m 鼠标点激就触发事件监 听 Button btn Button m getSource ch btn getLabel charAt 0 deposit ch switch ch case c lab setText 0 number 0 mark n Refresh false break 初始化 case 1 enter break case 2 enter break case 3 enter 17 break case 4 enter break case 5 enter break case 6 enter break case 7 enter break case 8 enter break case 9 enter break case 0 if Refresh true lab setText 0 number 0 Refresh false if lab getText charAt 0 0 if number length number lab setText lab getText ch else break break case A enter break case B enter break case C enter break 18 case D enter break case E enter break case F enter break case if Refresh true lab setText 0 number 0 Refresh false if lab getText indexOf 1 number lab setText lab getText ch else break break case b if number 0 break else if number 0 lab setText 0 number 0 else if number 1 lab setText lab getText substring 0 number else lab setText Character toString lab getText charAt 0 break case try js catch This number too big e 19 lab setText 0 number 0 mark n Refresh false System out println The number is too big break 如果出现异常则初始化效果如同 clear 键 case try js catch This number too big e lab setText 0 number 0 mark n Refresh false System out println The number is too big break 如果出现异常则初始化效果如同 clear 键 case try js catch This number too big e lab setText 0 number 0 mark n Refresh false System out println The number is too big break 如果出现异常则初始化效果如同 clear 键 case try js catch This number too big e lab setText 0 number 0 mark n Refresh false System out println The number is too big break 如果出现异常则初始化效果如同 clear 键 20 case try js catch This number too big e lab setText 0 number 0 mark n Refresh false System out println The number is too big break 如果出现异常则初始化效果如同 clear 键 end actionPerformed ActionEvent e method 八进制或十六进制转换成十进制 I public String goto 10 String s long l 参数 s 是要转换的字符串 由于输入的控制 保证了字符串的合法性 参数 l 使用来设置是将 8 进制还是 16 进制转换成 10 进制 它的有效值 为 8 或 16 String str s 用来转换的字符串 long j l 表示进制 long lg 0 jing 1 lg 用来记录权乘和 jing 用来记录位权 char cha 临时记录要转换的字符 for int i 1 i 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

温馨提示

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

评论

0/150

提交评论