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

下载本文档

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

文档简介

1 1 设计任务与目标设计任务与目标 1 用图形界面编写一个计算器 界面美观大方 2 实现连续的 运算 计算功能符合四则运算法则 3 实现小数 正负 开方 求幂运算功能 2 2 方案设计与论证方案设计与论证 本课题主要用到图形界面的编程 计算器 首先要用让用户看到一个窗口 也就是与用户的交互界面 所以可在创建计算器这个类 Calculate 类 时便 继承 JFrame 类 使其具有窗体的所有特性 可以使用 JFrame 的所有方法 然后是将该界面分成四大面板 Jpanel 主面板用于存放其他三个面板 显示面板用于存放文本显示框 也就是计算器的输入输出框 数字面板用来存 放数字按钮 操作面板用来存放操作按钮 最后将主面板放在窗体中显示出来 最基本的界面就做出来了 最后便是对事件的处理 如何实现计算器的功能 这里可将运算符做个归类 然后分类处理 像小数点 开方 等于号这些 符号的处理基本类似 3 3 程序系统框图 类图 流程图等 程序清单与调用关系程序系统框图 类图 流程图等 程序清单与调用关系 Calculate 类JFrame 类 继承 构造方法 public Calculate Stri ng title 内部类 class ButtonListene r ActionListener 接口 实现 创建面板 按钮处理按钮的事件监听 主方法 public static void main String args 创建 Calculate 对象 程序清单 public class Calculate extends JFrame 创建主类 继承窗体类 public Calculate String title 构造方法 完成界面的设计 并添加上事件监听 class ButtonListener implements ActionListener 内部类 对事件监听的处理 实现 ActionListener 接口 public ButtonListener 内部类构造方法 做出第一次按下的是否为操作符的判断 public void actionPerformed ActionEvent e 获取出发事件的按钮上的字符并作相应处理 public void calculate String op 判断是一元操作符还是二元操作符 根据操作符类型做计算 public boolean isUnary String s 判断是否一元操作符 public void handleUnaryOp String op 处理一元操作符 public void handleBinaryOp String op 处理二元运算符 public void handleNumber String s 处理数字按钮的事件 public void handleDecPoint 处理小数点所触发的事件 public double negate String s 处理正负号所触发的事件 public double getNumberOnDisplay 将显示框中的值转换成 Double 型 public void clear 清除屏幕并设置所有的标识 public static void main String args 主方法 4 4 全部源程序清单全部源程序清单 package Calculator import java awt BorderLayout import java awt Dimension import java awt GridLayout import java awt Toolkit import java awt event ActionEvent import java awt event ActionListener import javax swing JButton import javax swing JFrame import javax swing JPanel import javax swing JTextField 2013 11 25 星期一 author public class Calculate extends JFrame 继承 JFrame 类 public static final int WIDTH 500 定义计算器的宽度 public static final int HEIGHT 400 定义计算器的高度 private JTextField result 输入输出文本域 private JPanel mainPane 主面板 private JPanel numPane 数字面板 private JPanel operatePane 操作符面板 private JPanel showPane 显示面板 private JButton numB 数字按钮 private JButton operateB 操作符面板 public Calculate String title setTitle title 设置该 Frame 的名称 result new JTextField 0 0 22 创建该文本域 并定义该文本域 的列数和初始化数值 0 0 result setEditable false 该文本不可编辑 mainPane new JPanel 创建主面板 numPane new JPanel 创建数字面板 operatePane new JPanel 创建操作面板 showPane new JPanel 创建显示面板 numB new JButton 12 定义一个长度为 12 的对象数组 并赋值给 numB for int i 0 i 9 i numB i new JButton new Integer i 1 toString 创建 一个带文本的按钮 将数字强转为 Integer 型后调用 toString 方法转为字符串型 numB 9 new JButton 0 创建一个数字 0 的按钮 numB 10 new JButton cls 创建一个 cls 清空文本域 的按钮 numB 11 new JButton 创建一个 小数点 的按钮 将数字按钮加到数字面板上 numPane setLayout new GridLayout 4 3 1 1 设置数字面板的布 局管理器 网格布局管理器 GridLayout 行数为 4 列数为 3 上下左右按钮间距为 1 for int i 0 i 12 i numPane add numB i 在数字面板中添加上面的 12 个按钮 operateB new JButton 8 定义一个长度为 8 的对象数组 并赋值给 operateB operateB 0 new JButton 以下创建 8 个按钮 并给按钮附上 不同的文字 operateB 1 new JButton operateB 2 new JButton operateB 3 new JButton operateB 4 new JButton pow operateB 5 new JButton sqrt operateB 6 new JButton operateB 7 new JButton 把操作符按钮添加到操作面板上 operatePane setLayout new GridLayout 4 2 1 1 设置操作面板 的布局管理器 网格布局管理器 GridLayout 行数为 4 列数为 2 上下左右按钮间距为 1 for int i 0 i 8 i operatePane add operateB i 在操作面板中添加上面的 8 个按钮 showPane setLayout new BorderLayout 设置显示面板的布局管理器 边界布局管理器 BorderLayout showPane add result BorderLayout NORTH 将 result 文本域添加到 显示面板的北边 也就是正上方 mainPane setLayout new BorderLayout 设置主面板的布局管理器 边界布局管理器 BorderLayout mainPane add showPane BorderLayout NORTH 将显示面板放在主面 板的北边 上方 mainPane add numPane BorderLayout WEST 将数字面板放在主面板 的西边 左边 mainPane add operatePane BorderLayout EAST 将操作面板放在主 面板的东边 右边 this add mainPane BorderLayout CENTER 将主面板放在 Frame 窗口 的正中央 this setSize WIDTH HEIGHT 设置 Frame 窗口的宽和高 try 将 LookAndFeel 设置成 windows 样式 UIManager setLookAndFeel com sun java swing plaf windows WindowsLookAndFeel catch Exception e e printStackTrace Toolkit too Toolkit getDefaultToolkit 定义 Toolkit 类 获取 默认工具包 对象 Dimension 类封装单个对象中组件的宽度和高度 精确到整数 Dimension screenSize too getScreenSize 定义 Dimension 类 得 到当前屏幕的尺寸 this setLocation screenSize width WIDTH 2 2 screenSize height HEIGHT 2 2 设置该计算器显示在计算机中的位置 这 里是正中央 this setDefaultCloseOperation JFrame EXIT ON CLOSE 设置该窗口 关闭时关闭该程序 this setResizable false 关闭该窗口后设置该窗口不可见 this pack pack 方法 调整此窗口的大小 以适合其子组件的首选大小和布局 如果该窗口和 或其所有者还不可显示 则在计算首选大小 之前都将变得可显示 在计算首选大小之后 将会验证该窗口 ButtonListener button new ButtonListener 创建按钮监听类对象 以下对数字按钮和操作按钮进行监听 for int i 0 i numB length i numB i addActionListener button for int i 0 i operateB length i operateB i addActionListener button ActionListener 用于接收操作事件的侦听器接口 class ButtonListener implements ActionListener 定义按钮监听类 并实现 ActionListener 借口 private String last 存储上一此操作符 private String strVal 存储数字对应的字符串 private double total 总数 private double number 存储新输入的数 private boolean firsttime 判断是否第一次按下的是操作符按钮 private boolean operatorPressed 判断是否已经按过操作符按钮 public ButtonListener 构造方法 firsttime true true 为第一次按下的不是操作符按钮 strVal 事件处理 public void actionPerformed ActionEvent e String str JButton e getSource getText trim 获 取按钮上的字符 if Character isDigit str charAt 0 handleNumber str 按钮上为数字则调用处理数字按钮的方法 else calculate str 按钮上为字符则调用处理字符按钮的方法 判断是一元操作符还是二元操作符 并根据操作符类型做计算 public void calculate String op operatorPressed true if firsttime firsttime false if isUnary op handleUnaryOp op else if last null handleBinaryOp last if isUnary op last op 判断是否一元操作符 public boolean isUnary String s return s equals s equals cls s equals sqrt s equals s equals 处理一元操作符 public void handleUnaryOp String op if op equals number negate getNumberOnDisplay result setText result setText number return else if op equals handleDecPoint return else if op equals sqrt number Math sqrt getNumberOnDisplay result setText result setText number return else if op equals if last null last null firsttime true return else clear 处理二元运算符 public void handleBinaryOp String op if op equals total number else if op equals total number else if op equals total number else if op equals try total number catch ArithmeticException ae else if op equals pow total Math pow total number result setText last null strVal number 0 result setText total 该方法用于处理数字按钮 public void handleNumber String s if operatorPressed strVal s else operatorPressed false strVal s number new Double strVal doubleValue result setText result setText strVal 该方法用于按下 按钮 public void handleDecPoint operatorPressed false if strVal indexOf 0 strVal result setText result setText strVal 该方法用于将一个数求反 public double negate String s operatorPressed false 如果是一个整数 去掉小数点后面的 0 if number int

温馨提示

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

评论

0/150

提交评论