JAVA课程设计-计算器设计.doc_第1页
JAVA课程设计-计算器设计.doc_第2页
JAVA课程设计-计算器设计.doc_第3页
JAVA课程设计-计算器设计.doc_第4页
JAVA课程设计-计算器设计.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书 NO. 11课 程 设 计 任 务 书专 业计算机科学与技术班 级13计(专升本)姓 名王飞飞设 计 起 止 日 期2014年6月23日-2014年6月27日设计题目: 计算器设计设计任务(主要技术参数):硬件环境: CPU:Intel Core i3-350M(2.13GHz) 硬盘:320G 内存:2G软件环境:Microsoft Visual C+ 6.0操作系统:Windows XP 开发语言 Visual C+指导教师评语:成绩: 签字:年 月 日计算器设计1. 课程设计目的复习巩固java语言的基础知识,进一步加深对Java语言的理解和掌控。课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的理解。2.功能设计2.1功能介绍(1) 在日常生活中经常要用到计算器,比如科学计算器、数值计算、会计业务等,在Applet中实现一个精巧实用的计算器,可以让用户在使用网站服务的同时,可以很方便地进行数据运算,可增加页面的实用性,同时让用户的操作也更方便与快捷。本次实验要求实现一个具有四则运算的计算器,拥有加、减、乘、除功能,并且还要求具备清零等功能。3.设计思路本应用程序继承自框架类(Frame),此程序使用Frame布局管理器BorderLayout,将单行文本框加入到“North”区域,包含各种按钮的面板Panel p加入到”Center”区域。 包含各种按钮的面板Panel p 采用4行5列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中。同时注册按钮事件监听器。如:Button b=new Button();b.addActionListener(事件监听器);事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”8”,”9”)、运算符按钮事件(”+”,”“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”)、求倒按钮事件(”1/x”)、退格按钮事件(”退格”)、清楚按钮事件(“C”)。在事件处理。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。计算器完成的是一个数学表达式,如:32,所以可以采用一个链表(LinkedList类)来存储数字或字符,如3,2分别存储在链表中,最后运算时,可以一一取出来进行运算。本应用程序中的数字按钮和运算符按钮可以分别定义以下两个类的对象组件数字按钮NumberButton类如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class NumberButton extends Button int number;public NumberButton(int number) super(+number); this.number=number; setForeground(Color.blue); public int getNumber() return number; 运算符按钮OperationButton类如下import java.awt.*;import java.awt.event.*;import javax.swing.*;public class OperationButton extends Button String 运算符号; public OperationButton(String s) super(s); 运算符号=s; setForeground(Color.red); public String get运算符号() return 运算符号; 4.详细设计本程序主要包含两部分分别为主类和附类,程序详细设计如下:1. 数据分析计算器的程序设计,必然有数据的输入,当中就包含运算符和数字,都要通过计算器上的button按钮选项按键输入进去,里面录入的为字符型的数据,若要进行运算,要将输入的字符转换成double型,以防运算出错。2. 类的设计class Calculator extends JFrame implements ActionListener/Calculator 是初始化界面,以及响应用户的操作。Calculate是个内部类,功能是进行进制的转换。3. 功能设计数字键按钮,输入所需计算的数字。算数符按钮,输入所需的算数符号。等号按钮,输出运算的结果。C按钮,执行清零。 4. 程序代码主类:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;class SwingCalculator public static void main(String args) JFrame frame = new Calculator(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); 附类:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*; class Calculator extends JFrame private final Font BIGGER_FONT = new Font(monspaced, Font.PLAIN, 20); private JTextField textfield; private boolean number = true; private String equalOp = =; private CalculatorOp op = new CalculatorOp(); public Calculator() textfield = new JTextField(0, 12); textfield.setHorizontalAlignment(JTextField.RIGHT); textfield.setFont(BIGGER_FONT); ActionListener numberListener = new NumberListener(); String buttonOrder = 1234567890 ; JPanel buttonPanel = new JPanel();buttonPanel.setLayout(new GridLayout(4, 4, 4, 4); for (int i = 0; i buttonOrder.length(); i+) String key = buttonOrder.substring(i, i+1); if (key.equals( ) buttonPanel.add(new JLabel(); else JButton button = new JButton(key); button.addActionListener(numberListener); button.setFont(BIGGER_FONT);buttonPanel.add(button); ActionListener operatorListener = new OperatorListener(); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(4, 4, 4, 4); String opOrder = +, -, *, /,=,C; for (int i = 0; i opOrder.length; i+) JButton button = new JButton(opOrderi); button.addActionListener(operatorListener); button.setFont(BIGGER_FONT);panel.add(button); JPanel pan = new JPanel(); pan.setLayout(new BorderLayout(4, 4); pan.add(textfield, BorderLayout.NORTH ); pan.add(buttonPanel , BorderLayout.CENTER); pan.add(panel , BorderLayout.EAST ); this.setContentPane(pan); this.pack(); this.setTitle(Calculator); this.setResizable(false); private void action() number = true; textfield.setText(0); equalOp = =; op.setTotal(0);class OperatorListener implements ActionListener public void actionPerformed(ActionEvent e) if (number) action(); textfield.setText(0); else number = true; String displayText = textfield.getText(); if (equalOp.equals(=) op.setTotal(displayText); else if (equalOp.equals(+) op.add(displayText); else if (equalOp.equals(-) op.subtract(displayText); else if (equalOp.equals(*) op.multiply(displayText); else if (equalOp.equals(/) op.divide(displayText); textfield.setText( + op.getTotalString(); equalOp = e.getActionCommand(); class NumberListener implements ActionListener public void actionPerformed(ActionEvent event) String digit = event.getActionCommand(); if (number) textfield.setText(digit); number = false; else textfield.setText(textfield.getText() + digit); public class CalculatorOp private int total; public CalculatorOp() total = 0; public String getTotalString() return +total; public void setTotal(String n) total = convertToNumber(n); public void add(String n) total += convertToNumber(n); public void subtract(String n) total -= convertToNumber(n); public void multiply(String n) total *= convertToNumber(n); public void divide(String n) total /= convertToNumber(n); private int convertToNumber(String n) return Integer.parseInt(n); 五、运行调试与分析讨论程序运行中所遇到的错误:例如:程序在运行中遇到很多的困难和错误,上述为列举错误中的两个,实际上程序在刚开始编译完成时遇到很多的错误,在通过自身努力和同学们的帮助下错误得以一一解决。以下就不一一举例所遇到的错误了。程序运行如下:运行状况如下:例如 运行39先输入3,在按*,在输入9 六、设计体会与小结本次的Java课程设计使我对Java的知识有了更深一步的了解,同时在编译程序的时候对知识系统进行了更加全面的梳理,并通复习,和同学的帮助,终于熟练的掌握了基本理论知识,从而完成程序的编译。本次课程设计还使我收获很大,使我对Java的设计过程有了更深的了解,和对知识的笑话和吸收,同时也巩固了Java课程的知识。当然在设计编译程序是遇到了不少的

温馨提示

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

评论

0/150

提交评论