




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海南省陵水黎族自治县2025年上半年公开招聘城市协管员试题含答案分析
- 2025年二手房交易佣金支付标准协议
- 2025年度高科技企业采购法务与合同管理综合服务合同
- 2025房地产无底薪业务员营销服务及佣金分配合同
- 2025年度大型活动专用场馆租赁服务合同
- 2025年医疗设备采购与售后服务合同
- 2025版商铺租赁委托与市场拓展合作合同
- 2025年出租车行业新能源技术研发合作协议
- 2025版建筑废弃物填土处理工程合同
- 2025年度图书出版翻译与校对服务合同
- 2025-2026秋季中小学第一学期升旗仪式22周校长演讲稿:第1周 烽火记忆照前路秋风为序启新程
- 2025年山东省菏泽市中考英语真题(无答案)
- 2025劳动合同书示范文本下载
- 急性阑尾炎病人护理课件
- 水利水电工程单元工程施工质量验收标准第8部分:安全监测工程
- 2026年高考政治一轮复习:高考政治主观题背诵提纲汇编
- 2025年高考山东卷化学试题讲评及备考策略指导(课件)
- 2022森林防火道路建设基本要求
- 寻找消失的滇缅路:松山战痕课件
- 部编人教版《道德与法治》九年级上册教材介绍课件
- 政府预算理论与实务(第四版)全套教学课件
评论
0/150
提交评论