基于JAVA的小型计算器课程设计.doc

上传人:xin****828 文档编号:6684156 上传时间:2020-03-02 格式:DOC 页数:17 大小:466KB
返回 下载 相关 举报
基于JAVA的小型计算器课程设计.doc_第1页
第1页 / 共17页
基于JAVA的小型计算器课程设计.doc_第2页
第2页 / 共17页
基于JAVA的小型计算器课程设计.doc_第3页
第3页 / 共17页
点击查看更多>>
资源描述
课程设计报告题 目: 基于JAVA计算器小软件设计 学生姓名: 廖永治 束翔 陶善庆 学生学号: 0908050220 0908050229 0908050233 系 别: 电气信息工程学院 专 业: 电子信息科学与技术 届 别: 2013届 指导教师: 李营 电气信息工程学院制2012年5月 基于JAVA计算器小软件设计学生:廖永治 束翔 陶善庆指导教师:李营电气信息工程学院 1 课程设计的任务及要求 1.1课程设计的任务 (1)掌握JAVA语言。 (2)创建一个简单的计算器,具有简单人机交互界面,易于操作,便于进行 数据之间的简单运算。 (3)设计要完成设计、编码、测试等过程。 1.2 课程设计的要求 (1) 能够实现简单的加、减、乘、除四则运算。 (2) 运算结果能够正常显示,并能够清零。 (3)实数运算中小数位的精度一致。 1.3 课程设计的研究基础及主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,19个按钮,总体界面用GridBagLayout布局。 文本框放置在JTextField,然后0到9以及+,-,的按钮放置一个面板container中,添加到整体布局中,界面设计完成。布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。2 总体方案制定 2.1需求分析日常生活中经常需要用到计算器,比如科学计算、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便的惊醒数据运算,可增加页面的实用性,同时让用户的操作也更加方便月快捷。本项目需要实现一个具有四则运算的小型计算器,拥有加,减,乘,除功能。 2.2 总体设计(1)界面设计界面设计要求用GUI,界面设计中有用到swing组件的JTextField,用到awt中的GridLayout布局管理方式,窗体名称Conclutor继承JFrame类,InsertAction实现ActionListener一个接口,并实现public void actionPerformed(ActionEvent e)方法。定义菜单、菜单条、菜单项、按钮、文本框、容器,设置为private类型。定义变量double result;/使用内存中存储的数字和结果;JTextField resultfield;/显示计算结果。使用private void addButton()方法添加按钮并给按钮命名;其图形界面如下图(1): 图1:图形界面(2)功能介绍 这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除求模四则运算 ;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按BackSpace撤销后重新输入新数据也可以通过CE清除所有数据。 3 详细方案设计3.1 设计所需的环境及软件介绍(1)JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。JDK是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。 (2)本次设计使用Eclipe开发平台。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务, 用于通过插件组建构建开发环境。3.2 程序流程图如下: 图(2):程序设计流程图3.3 部分代码说明 (1)程序的主框架设计代码: private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField resultfield;/ 计算结果显示区 private String lastCommand;/ 保存+,-,=命令 private double result;/ 保存计算结果 private boolean start;/ 判断是否为数字的开始public Conclutor() /创建和定义计算器的图形界面;setTitle(计算器);setSize(300, 500);setVisible(true);container = getContentPane();layout = new GridBagLayout();container.setLayout(layout);constraints = new GridBagConstraints();constraints.gridx = 0;constraints.gridy = 0;constraints.gridwidth = 4;constraints.gridheight = 1;constraints.fill = GridBagConstraints.BOTH;constraints.weightx = 300;constraints.weighty = 300;resultfield = new JTextField(19);resultfield.setHorizontalAlignment(JTextField.RIGHT);start = true;result = 0;lastCommand = =;layout.setConstraints(resultfield, constraints);container.add(resultfield); (2)增加数字按钮以及符号按钮并对按钮进行监听的代码: ActionListener insert = new InsertAction();ActionListener command = new CommandAction();addButton(Backspace, 0, 1, 2, 1, insert);addButton(CE, 2, 1, 2, 1, insert);addButton(7, 0, 2, 1, 1, insert);addButton(8, 1, 2, 1, 1, insert);addButton(9, 2, 2, 1, 1, insert);addButton(, 3, 2, 1, 1, command);addButton(4, 0, 3, 1, 1, insert);addButton(5, 1, 3, 1, 1, insert);addButton(6, 2, 3, 1, 1, insert);addButton(, 3, 3, 1, 1, command);addButton(1, 0, 4, 1, 1, insert);addButton(2, 1, 4, 1, 1, insert);addButton(3, 2, 4, 1, 1, insert);addButton(-, 3, 4, 1, 1, command);addButton(., 0, 5, 1, 1, insert);addButton(+/-, 2, 5, 1, 1, insert); / 实现负数输入addButton(0,1, 5, 1, 1, insert);addButton(+, 3, 5, 1, 1, command);addButton(=, 0, 6, 4, 1, command); (3)程序运算过程的设计代码 :private class InsertAction implements ActionListener public void actionPerformed(ActionEvent event) String input = event.getActionCommand();if (start) resultfield.setText();start = false;if (input.equals(+/-)/if(displayField.getText().charAt(0)!=-)resultfield.setText( - + resultfield.getText() );/else /displayField.setText(displayField.getText().substring(1);/return;/if (!input.equals(+/-) if (input.equals(Backspace) String str = resultfield.getText();if (str.length() 0)resultfield.setText(str.substring(0, str.length() - 1); else if (input.equals(CE) resultfield.setText(0);start = true; elseresultfield.setText(resultfield.getText() + input);private class CommandAction implements ActionListener public void actionPerformed(ActionEvent evt) String command = evt.getActionCommand();if (start) lastCommand = command; else calculate(Double.parseDouble(resultfield.getText();lastCommand = command;start = true;public void calculate(double x) if (lastCommand.equals(+)result += x;else if (lastCommand.equals(-)result -= x;else if (lastCommand.equals()result *= x;else if (lastCommand.equals()result /= x;else if (lastCommand.equals(=)result = x;resultfield.setText( + result);(4)计算器入口程序设计代码:public static void main(String args) Conclutor calculator = new Conclutor();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);4 程序的调试与运行结果说明 示例1 当乘数为0时的运行结果如下图(3)所示: 图(3)示例2:43.6+23.4 预计结果 67.0 实际结果如下图(4)所示: 图(4) 示例3: 189/4 预计结果47.25 实际结果如下图(5)所示: 图(5) 示例4: 11-88 预计结果-77.0 实际结果如下图(6)所示: 图(6)示例5: -8*6 预计结果 -48.0 实际结果如下图(7)所示: 图(7) 示例 6:当除数为0时的运行结果如下图(8)所示: 图(8)5 设计总结通过此次的课程设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。 这次课程设计,我们按照课程设计的要求,。在实践中我遇到许多的问题,但我们都克服,最终我成功的完成了这次课程设计。从中我充分理解了Java面对对象的特性,并体会到Java与C语言的不同之处。在实践的同时,我又从中成长了许多,特别是在对程序的编译和调试中掌握了许多的技巧和方法,为今后的其他计算机语言的学习奠定了一定的基础。通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类调用的关系。由于这次编写的程序相对比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。6 参考文献1 王鹏,零基础学JavaM,机械工业出版社,2008-1-1. 2 王鹏,何昀峰.Java Swing图形界面开发案例详解M,清华大学出版社,2008-12-01.7 附录 package cn.hn.school; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Conclutor extends JFrame private Container container; private GridBagLayout layout;private GridBagConstraints constraints;private JTextField resultfield;/ 计算结果显示区 private String lastCommand;/ 保存+,-,=命令private double result;/ 保存计算结果private boolean start;/ 判断是否为数字的开始public Conclutor() /创建和定义计算器的图形界面;setTitle(计算器);setSize(300, 500);setVisible(true);container = getContentPane();layout = new GridBagLayout();container.setLayout(layout);constraints = new GridBagConstraints();constraints.gridx = 0;constraints.gridy = 0;constraints.gridwidth = 4;constraints.gridheight = 1;constraints.fill = GridBagConstraints.BOTH;constraints.weightx = 300;constraints.weighty = 300;resultfield = new JTextField(19);resultfield.setHorizontalAlignment(JTextField.RIGHT);start = true;result = 0;lastCommand = =;layout.setConstraints(resultfield, constraints);container.add(resultfield);/增加计算器的按钮/* * 调用监听输入操作的命令; * insert 表示输入字符; * command 表示输入符号 */ActionListener insert = new InsertAction();ActionListener command = new CommandAction();addButton(Backspace, 0, 1, 2, 1, insert);addButton(CE, 2, 1, 2, 1, insert);addButton(7, 0, 2, 1, 1, insert);addButton(8, 1, 2, 1, 1, insert);addButton(9, 2, 2, 1, 1, insert);addButton(, 3, 2, 1, 1, command);addButton(4, 0, 3, 1, 1, insert);addButton(5, 1, 3, 1, 1, insert);addButton(6, 2, 3, 1, 1, insert);addButton(, 3, 3, 1, 1, command);addButton(1, 0, 4, 1, 1, insert);addButton(2, 1, 4, 1, 1, insert);addButton(3, 2, 4, 1, 1, insert);addButton(-, 3, 4, 1, 1, command);addButton(., 0, 5, 1, 1, insert);addButton(+/-, 2, 5, 1, 1, insert); / 实现负数输入addButton(0,1, 5, 1, 1, insert);addButton(+, 3, 5, 1, 1, command);addButton(=, 0, 6, 4, 1, command);this.setResizable(false);private void addButton(String label, int row, int column, int with,int height, ActionListener listener) JButton button = new JButton(label);constraints.gridwidth = with;constraints.gridheight = height;constraints.gridx = row;constraints.gridy = column;constraints.fill = GridBagConstraints.BOTH;button.addActionListener(listener);layout.setConstraints(button, constraints);container.add(button);public static void main(String args) Conclutor calculator = new Conclutor();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 实现ActionListener这样一个监听器接口 private class InsertAction implements ActionListener public void actionPerformed(ActionEvent event) String input = event.getActionCommand();if (start) resultfield.setText();start = false;if (input.equals(+/-)/if(displayField.getText().charAt(0)!=-)resultfield.setText( - + resultfield.getText() );/else /displayField.setText(displayField.getText().substring(1);/return;/if (!input.equals(+/-) if (input.equals(Backspace) String str = resultfield.getText();if (str.length() 0)resultfield.setText(str.substring(0, str.length() - 1); else if (input.equals(CE) resultfield.setText(0);start = true; elseresultfield.setText(resultfield.getText() + input);private class CommandAction implements ActionListener public void actionPerformed(ActionEvent evt) String command = evt.getActionCommand();if (start) lastCommand = command; else calculate(Double.parseDouble(resultfield.getText();lastCommand = command;start = true;public void calculate(double x) if (lastCommand.equals(+)result += x;else if (lastCommand.equals(-)result -= x;else if (lastCommand.equals()result *= x;else if (lastCommand.equals()result /= x;else if (lastCommand.equals(=)result = x;resultfield.setText( + result);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!