java计算器编程_第1页
java计算器编程_第2页
java计算器编程_第3页
java计算器编程_第4页
java计算器编程_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、Java课程设计-小型计算器姓名:郑建羊学号:专业:软件技术指导教师:姜子敬提交时间:2013年 1月 8日一 设计任务书1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号,“点”符号,“sqrt”符号,“1/x”符号,“退格”按钮和“%”符号;(2)完成整数、实数的四则运算以及两个数的取余运算和一个数的倒数运算;(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。2课程设计的主要设计思想对于此计算器程序,首先要设计其GUI界面,总体界面有一个文本框,20个按钮,按钮总体界面用GridLayout布局。按钮和文本框

2、则使用BorderLayout布局,文本框放置在最NORTH,然后按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。二 总体方案设计1.界面设计界面设计要求用GUI,界面设计中有用到s

3、wing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除四则运算和取余运算以及求倒数运算 ;如果输入有误时可以按“退格”重新输入数据。三详细设计主题任务程序流程图如下:四 程序的调试与运行结果说明事件1:加法:45+89预计结果134。事件2:减法 89-45预计结果44。事件3:乘法 45*4预计结果是180

4、。事件4:除法 48/4预计结果是12。事件5:取余 6/45预计结果6。事件6:求倒数 6的倒数预计结果。五 设计源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Jisuanqi implements ActionListenerdouble op1=0,op2=0;/操作数int preOp,currentOp=0;/标准位StringBuffer str=new StringBuffer();JTextField jg=new JTextField( ,30);boolean i

5、sDouble=false;/是否为实数;public Jisuanqi()JButton yi=new JButton(1);yi.setForeground(Color.blue);yi.addActionListener(this);JButton er=new JButton(2);er.setForeground(Color.blue);er.addActionListener(this);JButton san=new JButton(3);san.setForeground(Color.blue);san.addActionListener(this);JButton si=ne

6、w JButton(4);si.setForeground(Color.blue);si.addActionListener(this);JButton wu=new JButton(5);wu.setForeground(Color.blue);wu.addActionListener(this);JButton liu=new JButton(6);liu.setForeground(Color.blue);liu.addActionListener(this);JButton qi=new JButton(7);qi.setForeground(Color.blue);qi.addAct

7、ionListener(this);JButton ba=new JButton(8);ba.setForeground(Color.blue);ba.addActionListener(this);JButton jiu=new JButton(9);jiu.setForeground(Color.blue);jiu.addActionListener(this);JButton ling=new JButton(0);ling.setForeground(Color.blue);ling.addActionListener(this);JButton jia=new JButton(+);

8、jia.setForeground(Color.red); jia.addActionListener(this);JButton jian=new JButton(-); jian.setForeground(Color.red);jian.addActionListener(this);JButton cheng=new JButton(*);cheng.setForeground(Color.red);cheng.addActionListener(this);JButton chu=new JButton(/);chu.setForeground(Color.red);chu.addA

9、ctionListener(this);JButton qy=new JButton(%);qy.setForeground(Color.red);qy.addActionListener(this);JButton xy=new JButton(1/x); xy.setForeground(Color.red);xy.addActionListener(this);JButton fg=new JButton(sqrt);fg.setForeground(Color.red);fg.addActionListener(this);JButton bs=new JButton(退格);bs.s

10、etForeground(Color.red);bs.addActionListener(this);JButton deng=new JButton(=);deng.setForeground(Color.red);deng.addActionListener(this);JButton dian=new JButton(.);dian.setForeground(Color.red);dian.addActionListener(this); JPanel panel=new JPanel();JPanel panel2=new JPanel();JPanel panel3=new JPa

11、nel();panel2.setLayout(new FlowLayout(); panel2.setSize(50,300); panel2.add(jg);panel3.setLayout(new GridLayout(4,5,8,8); panel3.add(qi); panel3.add(ba); panel3.add(jiu); panel3.add(chu); panel3.add(fg); panel3.add(si); panel3.add(wu); panel3.add(liu); panel3.add(cheng); panel3.add(qy); panel3.add(y

12、i); panel3.add(er); panel3.add(san); panel3.add(jian); panel3.add(xy); panel3.add(ling); panel3.add(bs); panel3.add(dian); panel3.add(jia); panel3.add(deng); panel.setLayout(new BorderLayout(); panel.add(panel2,BorderLayout.NORTH); panel.add(panel3,BorderLayout.CENTER); JFrame frame=new JFrame(); fr

13、ame.add(panel); frame.setTitle(Java课程设计-计算器); frame.setSize(350,250); frame.setVisible(true); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); public void actionPerformed(ActionEvent e) String s = e.getActionCommand(); if(s.equals(退格) if(!jg.getText().trim().equals( ) /如果文本框中有内容 if(str.length()!

14、=1 & str.length()!=0) jg.setText(str.delete(str.length()-1,str.length().toString(); else jg.setText(); str.setLength(0); /op2 = Double.parseDouble(jg.getText().trim(); else if(s.equals(1/x) /如果按键为1/x则将文本框中的数据为它的倒数 String temp = jg.getText().trim(); double dtemp = Double.parseDouble(temp); jg.setText

15、(dtemp+的倒数是+1/dtemp); else if(s.equals(sqrt) /如果按键为sqrt则将文本框中的内容求平方根 String temp = jg.getText().trim(); double dtemp = Double.parseDouble(temp); jg.setText(temp+的开放根为+Math.sqrt(dtemp); else if(s.equals(+) str.setLength(0); if(currentOp=0) preOp = currentOp = 1; op2 = 0; jg.setText(+op1); else curren

16、tOp = preOp; preOp = 1; switch(currentOp) case 1: op1 += op2; jg.setText(+op1); break; case 2: op1 -= op2; jg.setText(+op1); break; case 3: op1 *= op2; jg.setText(+op1); break; case 4: op1 /= op2; jg.setText(+op1); case 5: op1=op1%op2; jg.setText(+op1); break; else if(s.equals(-) str.setLength(0); i

17、f(currentOp=0) preOp=currentOp=2;/op1=op2;op2=0; jg.setText(+op1); else currentOp =preOp; preOp =2; switch(currentOp) case 1:op1=op1+op2;jg.setText(+op1);break; case 2:op1=op1-op2;jg.setText(+op1);break; case 3:op1=op1*op2;jg.setText(+op1);break; case 4:op1=op1/op2;jg.setText(+op1);break; case 5:op1

18、=op1%op2;jg.setText(+op1);break; else if(s.equals(*)/* str.setLength(0); if(currentOp=0) preOp=currentOp=3;/op1=op2;op2=1; jg.setText(+op1);/op1=op2; else currentOp =preOp; preOp =3; switch(currentOp) case 1:op1=op1+op2;jg.setText(+op1);break; case 2:op1=op1-op2;jg.setText(+op1);break; case 3:op1=op

19、1*op2;jg.setText(+op1);break; case 4:op1=op1/op2;jg.setText(+op1);break; case 5:op1=op1%op2;jg.setText(+op1);break; else if(s.equals(/)/ / str.setLength(0); if(currentOp=0) preOp=currentOp=4;/op2=1; jg.setText(+op1);/op1=op2; else currentOp =preOp; preOp =4; switch(currentOp) case 1:op1=op1+op2;jg.s

20、etText(+op1);break; case 2:op1=op1-op2;jg.setText(+op1);break; case 3:op1=op1*op2;jg.setText(+op1);break; case 4:op1=op1/op2;jg.setText(+op1);break; case 5:op1=op1%op2;jg.setText(+op1);break; else if(s.equals(%) str.setLength(0); if(currentOp=0) preOp=currentOp=5; jg.setText(+op1);/op1=op2; else cur

21、rentOp =preOp; preOp =5 ; switch(currentOp) case 1:op1=op1+op2;jg.setText(+op1);break; case 2:op1=op1-op2;jg.setText(+op1);break; case 3:op1=op1*op2;jg.setText(+op1);break; case 4:op1=op1/op2;jg.setText(+op1);break; case 5:op1=op1%op2;jg.setText(+op1);break; else if(s.equals(=)/ = if(currentOp=0) st

22、r.setLength(0); jg.setText(+op2); else str.setLength(0); currentOp =preOp; switch(currentOp) case 1:op1=op1+op2;jg.setText(+op1);break; case 2:op1=op1-op2;jg.setText(+op1);break; case 3:op1=op1*op2;jg.setText(+op1);break; case 4:op1=op1/op2;jg.setText(+op1);break; case 5:op1=op1%op2;jg.setText(+op1);break; currentOp=0; op2=0; else if(s.equals(.) isDouble=true; if(jg.getText().trim().indexOf(.)!=-1); else if(jg.getText().trim().equals(0) str.setL

温馨提示

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

评论

0/150

提交评论