java-计算器实验报告.doc_第1页
java-计算器实验报告.doc_第2页
java-计算器实验报告.doc_第3页
java-计算器实验报告.doc_第4页
java-计算器实验报告.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

计算器实验报告一、 实验目的1.熟悉java图形用户界面的设计原理和程序结构2.能设计复核问题要求的图形用户界面程序3.熟悉java awt和swing的组合4.掌握常用组建的事件借口5.会应用awt和swing组件进行应用程序设计二、 实验内容运用所学的java语言,实现计算器的基础功能,及科学计算器的一些功能。三、 实验设计主要成员变量及属性成员变量描述变量类型名称运算按纽JButtonbutton功能按纽JMenuBarbarJButton组件表示了两类按钮,第一类按钮是数字按钮,包括0-9等10个按钮。第二类按钮式功能式按钮,例如+、-、*、/、%等按钮。JMenuBar按钮设置了工具条菜单栏,这次总共设置了两个菜单。这两种按钮需要注册监听,需要实现public void actionPerformed(ActionEvent e)函数,通过e.getSource()可以识别注册监听的按钮,并进行相应的操作。计算器界面如下所示:菜单栏代码如下:jmb=new JMenuBar();jm1=new JMenu(选项(V);/助记符,Alt+vjm1.setMnemonic(v);jm2=new JMenu(关于(A);jm2.setMnemonic(a);jmi1=new JMenuItem(标准);/注册监听jmi1.addActionListener(this);jmi1.setActionCommand(标准);jmi2=new JMenuItem(科学);jmi2.addActionListener(this);jmi2.setActionCommand(科学);jmi3=new JMenuItem(关于计算器);jmi3.addActionListener(this);jmi3.setActionCommand(about);窗体设置的代码:this.setIconImage(new ImageIcon(images/计算器图片.jpg).getImage();this.setTitle(计算器);this.setBounds(500, 180,300,300);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);时间监听处理函数代码:/通常在按钮被按下,或双击一个列表项或选中某个菜单时发生Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb18)/等于double result=0;num2=Double.parseDouble(jtf.getText();switch(ch)case +:result=num1+num2;break;case -:result=num1-num2;break;case *:result=num1*num2;break;case /:if(num2!=0)result=num1/num2;elsejtf.setText(0);break;case %:if(num2!=0)result=num1%num2;elsejtf.setText(0);break;case e:result=num1*Math.pow(10, num2);break;if(num2!=0)if(result=(int)(result)jtf.setText(int)(result)+);elsejtf.setText(result+);isdecnum=false;四、实验总结:通过对计算器窗体的编写我熟悉java图形用户界面的设计原理和程序结构熟悉java awt和swing的组合。学会将书本上的知识运用在实际中,提升了编程能力。五代码:package com.java;import java.io.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Calculator_1 extends JFrame implements ActionListener/* * param args */JTextField jtf=null; /文本框JButton jb=null;/按钮JPanel jp1=null;JPanel jp2=null;JMenuBar jmb=null; /菜单条JMenu jm1=null,jm2=null; /菜单项JMenuItem jmi1=null,jmi2=null,jmi3=null; /菜单子选项boolean isdecnum=false; /判断目前是否为小数char ch; /获得运算符号double num1=0,num2=0;public static void main(String args) / TODO Auto-generated method stubCalculator_1 cal=new Calculator_1();public Calculator_1()jmb=new JMenuBar();jm1=new JMenu(选项(V);/助记符,Alt+vjm1.setMnemonic(v);jm2=new JMenu(关于(A);jm2.setMnemonic(a);jmi1=new JMenuItem(标准);/注册监听jmi1.addActionListener(this);jmi1.setActionCommand(标准);jmi2=new JMenuItem(科学);jmi2.addActionListener(this);jmi2.setActionCommand(科学);jmi3=new JMenuItem(关于计算器);jmi3.addActionListener(this);jmi3.setActionCommand(about);jm1.add(jmi1);jm1.add(jmi2);jm2.add(jmi3);this.setJMenuBar(jmb);jmb.add(jm1);jmb.add(jm2);jtf=new JTextField(0,20);jtf.setHorizontalAlignment(JTextField.RIGHT);jtf.setEditable(false);this.add(jtf,North);jb=new JButton32;jp1=new JPanel();jp1.setLayout(new GridLayout(5,4,5,5);/jp1中的按钮jb0=new JButton(C);jb1=new JButton(-);jb2=new JButton(+/-);jb3=new JButton(sqrt);jb4=new JButton(7);jb5=new JButton(8);jb6=new JButton(9);jb7=new JButton(/);jb8=new JButton(4);jb9=new JButton(5);jb10=new JButton(6);jb11=new JButton(*);jb12=new JButton(1);jb13=new JButton(2);jb14=new JButton(3);jb15=new JButton(-);jb16=new JButton(0);jb17=new JButton(.);jb18=new JButton(=);jb19=new JButton(+);/添加到jp1中for(int i=0;i=19;i+)jp1.add(jbi,i);jbi.addActionListener(this);this.add(jp1);jp2=new JPanel();jp2.setLayout(new GridLayout(3,4,5,5);/jp2中的按钮jb20=new JButton(sin);jb21=new JButton(cos);jb22=new JButton(tan);jb23=new JButton();jb24=new JButton(pow);jb25=new JButton(x);jb26=new JButton();jb27=new JButton(ln);jb28=new JButton(Int);jb29=new JButton(n!);jb30=new JButton(%);jb31=new JButton(1/x);for(int i=20;ijb.length;i+)jp2.add(jbi,i-20);jbi.addActionListener(this);this.setIconImage(new ImageIcon(images/计算器图片.jpg).getImage();this.setTitle(计算器);this.setBounds(500, 180,300,300);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setResizable(false);public void Num(int num)if(jtf.getColumns()=20)String s_num=jtf.getText();if(s_num.equals(0)s_num=num+;jtf.setText(s_num);elses_num+=num;jtf.setText(s_num);/通常在按钮被按下,或双击一个列表项或选中某个菜单时发生Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=jb4)Num(7);else if(e.getSource()=jb5)Num(8);else if(e.getSource()=jb6)Num(9);else if(e.getSource()=jb7)/除法num1=Double.parseDouble(jtf.getText();ch=/;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb8)Num(4);else if(e.getSource()=jb9)Num(5);else if(e.getSource()=jb10)Num(6);else if(e.getSource()=jb11)/乘法num1=Double.parseDouble(jtf.getText();ch=*;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb12)Num(1);else if(e.getSource()=jb13)Num(2);else if(e.getSource()=jb14)Num(3);else if(e.getSource()=jb15)/减法num1=Double.parseDouble(jtf.getText();ch=-;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb16)Num(0);else if(e.getSource()=jb17)/小数点if(!isdecnum)if(jtf.getColumns()=20)String s_num=jtf.getText();s_num+=.;jtf.setText(s_num);isdecnum=true;else if(e.getSource()=jb18)/等于double result=0;num2=Double.parseDouble(jtf.getText();switch(ch)case +:result=num1+num2;break;case -:result=num1-num2;break;case *:result=num1*num2;break;case /:if(num2!=0)result=num1/num2;elsejtf.setText(0);break;case %:if(num2!=0)result=num1%num2;elsejtf.setText(0);break;case e:result=num1*Math.pow(10, num2);break;if(num2!=0)if(result=(int)(result)jtf.setText(int)(result)+);elsejtf.setText(result+);isdecnum=false;else if(e.getSource()=jb19)/加法num1=Double.parseDouble(jtf.getText();ch=+;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb0)/Cjtf.setText(0);num1=0;num2=0;else if(e.getSource()=jb1)/1)s_num=s_num.substring(0,s_num.length()-1);jtf.setText(s_num);elsejtf.setText(0);else if(e.getSource()=jb2)/+/-double d_num=Double.parseDouble(jtf.getText();if(d_num!=0)d_num=0-d_num;if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);elsejtf.setText(0);else if(e.getSource()=jb3)/sqrtdouble d_num=Double.parseDouble(jtf.getText();if(d_num=0)d_num=Math.sqrt(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb20)/sindouble d_num=Double.parseDouble(jtf.getText();if(d_num=0)d_num=Math.sin(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb21)/cosdouble d_num=Double.parseDouble(jtf.getText();if(d_num=0)d_num=Math.cos(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb22)/tandouble d_num=Double.parseDouble(jtf.getText();if(d_num=0)d_num=Math.tan(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb23)/jtf.setText(Math.PI+);else if(e.getSource()=jb24)/pownum1=Double.parseDouble(jtf.getText();ch=e;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb25)/平方double d_num=Double.parseDouble(jtf.getText();d_num*=d_num;if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb26)/logdouble d_num=Double.parseDouble(jtf.getText();d_num=Math.log10(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb27)/lndouble d_num=Double.parseDouble(jtf.getText();d_num=Math.log1p(d_num);if(d_num=(int)(d_num)jtf.setText(int)(d_num)+);elsejtf.setText(d_num+);else if(e.getSource()=jb28)/IntString s_num=jtf.getText();String ss_num=new String2;ss_num=s_num.split(.);jtf.setText(ss_num0+);else if(e.getSource()=jb29)/n!double d_num=Double.parseDouble(jtf.getText();if(d_num=(int)(d_num)int i=1;int i_num=1;while(i=(int)(d_num)i_num*=i;i+;jtf.setText(i_num+);else if(e.getSource()=jb30)/%num1=Double.parseDouble(jtf.getText();ch=%;isdecnum=false;jtf.setText(0);else if(e.getSource()=jb31)/1/xif(jtf.getText()!=0)double d_num=Double.parseDouble(jtf.getText();d_num=1/d_num;if(d_num

温馨提示

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

评论

0/150

提交评论