Java课程设计-基于JavaJDK的简易计算器.doc_第1页
Java课程设计-基于JavaJDK的简易计算器.doc_第2页
Java课程设计-基于JavaJDK的简易计算器.doc_第3页
Java课程设计-基于JavaJDK的简易计算器.doc_第4页
Java课程设计-基于JavaJDK的简易计算器.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

Java课程设计设计题目 基于JavaJDK的计算器 设计时间 2017 学生姓名 学生学号 所在班级 1402班 指导教师 摘要计算器在我们的生活中常常会使用到,本次课程设计,利用课堂所学到的知识,通过界面以及其中的逻辑处理,完成了基本的四则运算的处理。通过awt包或者swing包中的界面设计,实现了通过界面来显示输入过程和运算结果,同时也使设计出来的计算器符合人性化的基本要求。面向对象的思想从很大程度上可以让程序的思路更加清晰,而且可重用性很高。关键词 java;计算器;四则运算;面向对象;目 录一课设题目及要求.11.1课设题目描述.11.2基本要求.1二功能描述及设计方案.12.1计算器功能描述.12.2设计思想及方案.1三程序说明.33.1界面设计.33.1.1UI组件创建与初始化.33.1.2在窗体中添加UI组件.43.2添加事件响应逻辑.63.3计算逻辑实现.7四运行效果及存在的不足.94.1运行效果.104.2存在的不足.10五结果分析及心得体会11六参考文献.12七源程序附录12一.课设题目及要求1.1课设题目描述在JavaJDK平台上设计并实现一个基于窗口界面的计算器1.2基本要求该计算器可以运算两个两位数的加减乘除运算,可以通过点击窗口的按键来实现所有操作(包括输入数字和运算符号以及作为计算等等),输入过程及运算结果都要与按键所在同一窗口中呈现二功能描述及设计方案2.1计算器功能描述本次课程设计的计算器具有能够进行加、减、乘、除四则基本运算的基本功能,并且通过自己的努力为此计算器添加了两个附加的功能:清零和异常处理机制,即除数为0以及只单击运算符运算的算法错误,并且能很好的实现其功能。2.2设计思想及方案2.2.1设计思想概述要制作一个计算器,首先需要知道它由哪些部分组成。调用具体算法计算数值计算逻 辑界面组件事件响应逻 辑界 面响应按钮等到的点击事件 更新文本框等组件显示的值 传递计算结果结构上来说,一个简单的图形界面,需要由界面组件、组件的事件监听器(响应各类事件的逻辑)和具体的事件处理逻辑组成。2.2.2设计方案结构图基本运算功能方案图异常处理机制功能方案图运行输入计算的数值值单击运算符号,再单击等于符号单击运算符号,弹出一个消息框,提醒错误输出结果YN设计好实现方案后,接下来,我们首先需要制作界面部分。这部分主要的工作就是创建各个界面组件对象,对其进行初始化,以及控制各组件之间的层次关系和布局大小三程序说明3.1界面设计与实现3.1.1 UI 组件创建和初始化(1)、面板 JPanel txtpanel:用于放置文本框 Panel btnpanel: 用于放置按钮(0-9和+,-,*,/,=) (2)、显示部分 a.第一个面板:txtpanel 位置以及排列方式BorderLayout.NORTH txtpanel.add(txtinput):添加文本框到txtpanel面板中 b.第二个面板:btnpanel 排列方式:setLayout(gl)(3)、基本按钮 btnpanel.add(b7) btnpanel.add(b8) btnpanel.add(b9); btnpanel.add(multiply) btnpanel.add(b4) btnpanel.add(b5); btnpanel.add(b6) btnpanel.add(divide) btnpanel.add(b1); btnpanel.add(b2) btnpanel.add(b3) btnpanel.add(add); btnpanel.add(b0) .add(bdes) btnpanel.add(equal); btnpanel.add(subtract) 以上是在第二个面板btnpanelH中添加的0到9和+,-,*,/,=的按钮。首先我们需要将界面中要用到的 UI 组件作为 Calculator 类的成员变量在一开始声明。主要代码如下:/ 继承一个 JFrame 对象。JFrame 可以理解为程序的主窗体。public class Calculator extends JFrame implements ActionListener/txtpanel用于放置文本框,btnpanel用于放置按钮JPanel txtpanel,btnpanel;/创建文本框,用于显示内容 JTextField txtinput;./声明各个UI组件对象并初始化public Calculator()super(基于JavaJDK的计算器);txtpanel=new JPanel();btnpanel=new JPanel();/ 参数 25 表明可以显示 25 列的文本内容txtinput=new JTextField(25);/ 设置文本框不能编辑txtinput.setEditable(false); / 设置文本框为右对齐,使输入和结果都靠右显示txtinput.setHorizontalAlignment(JTextField.RIGHT); txtinput.setText();/ 数字键0到9b1=new JButton(1);b2=new JButton(2);b3=new JButton(3);b4=new JButton(4);b5=new JButton(5);b6=new JButton(6);b7=new JButton(7);b8=new JButton(8);b9=new JButton(9);b0=new JButton(0);/ 计算命令按钮,加减乘除以及小数点,清除等bdes=new JButton(.);add=new JButton(+);subtract=new JButton(-);multiply=new JButton(*);divide=new JButton(/);clear=new JButton(清 零);equal=new JButton(=);3.1.2 在窗体中添加 UI 组件这个计算器有两个 JPanel JPanel文本框按钮按钮什么是 JPanel:JPanel 是一般轻量级容器。如上图所示,你可以将其理解为一个盛放其他 UI 组件的“篮子”。 JPanel 位于javax.swing包中,为面板容器,可以加入到 JFrame 中 , 它自身是个容器,也可以把其他 component (组件) 加入到 JPanel 中,例如 JButton、JTextArea、JTextField 等。在这个项目中,两个 JPanel 分别对应这个计算器按键除 “清零” 键外其他的键,另个面板则是文本框跟 “清零” 键。主要代码如下:/ 创建Jpanel 的两个对象并初始化/txtpanel用于放置文本框,btnpanel用于放置按钮JPanel txtpanel,btnpanel;./将UI组件添加进容器内getContentPane().add(txtpanel,BorderLayout.NORTH);txtpanel.add(txtinput);txtpanel.add(clear); / 设置该容器的布局为四行四列,边距为5像素gl=new GridLayout(4,4,5,5);btnpanel.setLayout(gl);getContentPane().add(btnpanel); / 将用于计算的按钮添加到容器内btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(multiply);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(divide);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(add);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(equal);btnpanel.add(subtract);/ 设置主窗口大小setSize(400,250);setVisible(true);/ 设置主窗口出现在屏幕上的位置setLocation(300,200); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);布局结束后,就是计算器的难点:事件处理程序3.2、添加事件响应逻辑对于计算器而言,涉及到的事件响应逻辑主要有:数字键、加减乘除运算、等于以及清除主要代码如下:/绑定事件响应逻辑到各个UI组件上public void btnCancelActionPerformed() txtinput.setText();public void actionPerformed(ActionEvent e) tryObject obj=e.getSource();if(obj=b1)txtinput.setText(txtinput.getText()+1);else if(obj=b2)txtinput.setText(txtinput.getText()+2);else if(obj=b3)txtinput.setText(txtinput.getText()+3);else if(obj=b4)txtinput.setText(txtinput.getText()+4);else if(obj=b5)txtinput.setText(txtinput.getText()+5);else if(obj=b6)txtinput.setText(txtinput.getText()+6);else if(obj=b7)txtinput.setText(txtinput.getText()+7);else if(obj=b8)txtinput.setText(txtinput.getText()+8);else if(obj=b9)txtinput.setText(txtinput.getText()+9);else if(obj=b0)txtinput.setText(txtinput.getText()+0);else if(obj=bdes)txtinput.setText(txtinput.getText()+.);else if(obj=add) d1=Double.parseDouble(txtinput.getText();s=+;txtinput.setText();else if(obj=subtract) d1=Double.parseDouble(txtinput.getText();s=-;txtinput.setText(); else if(obj=divide) d1=Double.parseDouble(txtinput.getText();s=/;txtinput.setText();else if(obj=multiply) d1=Double.parseDouble(txtinput.getText();s=*;txtinput.setText();3.3、计算逻辑的实现计算的逻辑要针对输入的不同运算符来对操作数进行运算,同时还要考虑到除数为0这种不合理的以及只单击运算符运算的算法错误,。主要代码如下:double d1;/操作数1double d2;/ 操作数2String s;/ 运算符./计算逻辑else if(obj=equal) if(s=+) d2=d1+Double.parseDouble(txtinput.getText();/显示结果txtinput.setText(Double.toString(d2);else if(s=-) d2=d1-Double.parseDouble(txtinput.getText();/显示结果txtinput.setText(Double.toString(d2);else if(txtinput.equals(txtinput.getText()&obj=subtract) d2=d1-Double.parseDouble(txtinput.getText();/显示结果txtinput.setText(Double.toString(d2); else if(s=/) if(Double.parseDouble(txtinput.getText()=0)/ 除数为零:当除数为零时,弹出“除数不能为零”窗体JOptionPane.showMessageDialog(this, 除数不能为0);d2=d1/Double.parseDouble(txtinput.getText();txtinput.setText(Double.toString(d2);else if(s=*) d2=d1*Double.parseDouble(txtinput.getText();txtinput.setText(Double.toString(d2); catch(Exception ouch)/错误输入:当只单击运算符时,弹出“错误输入”窗体 JOptionPane.showMessageDialog(null,错误输入,error,JOptionPane.ERROR_MESSAGE); 四效果及存在的问题4.1运行效果(1)加法运算功能:例如12+14=先输入12,在按+,在输入14在按=,结果如下图(2)减法运算功能:例如26-14=先输入26,在按-,在输入14,在按=,结果如下图(3)乘法运算功能:例如25*15=先输入25,在按*,在输入15,在按=,结果如下图(4)除法运算功能:例如1255=先输入125,在按,在输入5,在按=,结果如下图(5) “清零按钮”数据清除功能清除前清除后(6). 异常处理机制当除数为0时当只单击运算符号运算时4.2本计算器存在的不足在完成课程设计的期间,参阅了相关的书籍并在网络上查找相关的资料,对实现这个设计提供了很大的帮助。由于目前知识方面的匮乏,本次课程设计的计算器没能够顺利实现开方运算、正余弦正切运算、阶乘运算,进制转换等高级,更复杂的数据计算功能,希望在以后的时间里丰富这方面的知识,以便更好的运用。五结果分析及心得体会在这次课程设计中,我利用课堂所学的知识和通过查阅课外资料,顺利的实现了计算器的各个功能,并对其进行按键的排版、监听、处理、运算等各个步骤的亲力亲为,基本上完成了任务书上的各项内容。虽然在这次的课程设计的过程和结果中,也存在一些的不足, 但通过分析和解决,我也收获了很多。其次,在本次的课程设计中,通过与同学们的交流,解决了不少长久以来困扰我的java语言问题,让我深切体会到了大家共同努力的重要性。在设计这个系统的时候,我查阅了很多相关的书籍,并通过网络解决了不少问题。通过这次课程设计,我对eclipse的开发环境和使用也有了更多的认识和了解,让我对java语言的认识又加深了一步,不仅使我学会了如何查阅资料,同时也让我发现了网络这个好老师,总之收获了很多。六参考文献1雍俊海Java程序设计教程(第三版)清华大学出版社2(美)埃克尔著,陈昊鹏译Java编程思想(第4版).机械工业出版社3李兴华Java从入门到精通人民邮电出版社2010-4-1版4温沿书Java入门与实战教程人民邮电出版社2010-03-01版5李钟尉Java范例完全自学手册人民邮电出版社2009-10-1七源程序附录package com.demo1;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListenerJPanel txtpanel,btnpanel;/txtpanel用于放置文本框,btnpanel用于放置按钮JTextField txtinput;JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,multiply,divide,add,subtract,clear,equal;GridLayout gl;double d1;/操作数1double d2;/ 操作数2String s;/ 运算符/声明各个UI组件对象并初始化public Calculator()super(基于JavaJDK的计算器);txtpanel=new JPanel();btnpanel=new JPanel();txtinput=new JTextField(25);txtinput.setEditable(false);/ 设置文本框不能编辑txtinput.setHorizontalAlignment(JTextField.RIGHT); / 设置文本框为右对齐,使输入和结果都靠右显示txtinput.setText();b1=new JButton(1);b2=new JButton(2);b3=new JButton(3);b4=new JButton(4);b5=new JButton(5);b6=new JButton(6);b7=new JButton(7);b8=new JButton(8);b9=new JButton(9);b0=new JButton(0);bdes=new JButton(.);add=new JButton(+);subtract=new JButton(-);multiply=new JButton(*);divide=new JButton(/);clear=new JButton(清 零);equal=new JButton(=);/清除键的逻辑(Clear)clear.addActionListener(new ActionListener()/注册监听 public void actionPerformed(ActionEvent argh) btnCancelActionPerformed(););b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bdes.addActionListener(this);multiply.addActionListener(this);divide.addActionListener(this);add.addActionListener(this);subtract.addActionListener(this);equal.addActionListener(this);/将UI组件添加进容器内getContentPane().add(txtpanel,BorderLayout.NORTH);txtpanel.add(txtinput);txtpanel.add(clear);gl=new GridLayout(4,4,5,5);btnpanel.setLayout(gl);getContentPane().add(btnpanel);btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(multiply);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(divide);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(add);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(equal);btnpanel.add(subtract);setSize(400,250);setVisible(true);setLocation(300,200);/ 设置主窗口出现在屏幕上的位置setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);/注册各个监听器,即绑定事件响应逻辑到各个UI组件上public void btnCancelActionPerformed() txtinput.setText();public void actionPerformed(ActionEvent e) tryObject obj=e.getSource();if(obj=b1)txtinput.setText(txtinput.getText()+1);else if(obj=b2)txtinput.setText(txtinput.getText()+2);else if(obj=b3)txtinput.setText(txtinput.getText()+3);else if(obj=b4)txtinput.setText(txtinput.getText()+4);else if(obj=b5)txtinput.setText(txtinput.getText()+5);else if(obj=b6)txtinput.setText(txtinput.getText()+6);else if(obj=b7)txtinput.setText(txtinput.getText()+7);else if(obj=b8)txtinput.setText(txtinput.getText()+8);else if(obj=b9)txtinput.setText(txtinput.getText()+9);else if(obj=b0)txtinput.setText(txtinput.getText()+0);else if(obj=bdes)txtinput.setText(txtinput.getText()+.);else if(obj=add) d1=Double.parseDouble(txtinput.getText();s=+;txtinput.setText();else if(obj=subtract) d1=Double.parseDouble(txtinput.getText();s=-;txtinput.setText(); else if(obj=divide) d1=Double.parseDouble(txtinput.getT

温馨提示

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

评论

0/150

提交评论