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

下载本文档

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

文档简介

1、JAVA程序设计计算器题 目 : 计算器 系 别: 计算机工程系 目 录1、设计目的32、设计题目分析321 题目简介33、课程设计内容431 总体设计:432 详细设计:533 调试与测试:64、设计心得与总结:9附录101、设计目的 (1)复习巩固java语言的基础知识,进一步加深对java语言的理解和掌控 (2)课程设计为大家提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机结合起来,锻炼我们的分析解决实际问题的能力。提高我们适应实际,实践编程的能力。 (3)培养我们在项目开发中创新意识及能力,通过亲身实践,利用所学编写简单的面向对象程序,提高对面向对象及JAVA语言的

2、理解。2、设计题目分析21 题目简介 利用JAVA语言设计一个简单的科学计算器,实现加减乘除及开根号、对数、平方、三角正/余弦、求倒数、进制转换的简单功能。22 设计要求及需求分析 设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。 需求分析:在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。所以我们想用自己所学设

3、计开发一个属于自己的简单计算器来完成日常学习生活的需求。3、课程设计内容31 总体设计: 系统总体设计框架PANEL0 PANEL2PANELPanel:5*6的数字及运算键Panel2:进制转换的单选按钮及倒退清空键Panel0:输入及运行结果32 详细设计: 以下是其中一些类功能的说明: JFrame frame;/构造新窗体 JPanel panel, panel0, panel2, panel3;/定义面板 JButton button;/定义按钮 JRadioButton/定义单选按钮 JLabel/定义标签 Container/定义容器方法参数说明:布尔型的border,设置当前选

4、中图形中一组文字单元的边框 frame.setVisible,设置窗口的可见性 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);设置 关闭窗口的默认执行动作(布尔型数据) frame.setIconImage;设置窗口最小化图标 frame.setSize(int,int);设置窗口尺寸方法调用:主函数中的new Calculator()调用了前面的public Calculator()流程图:33 调试与测试:包括程序调试过程、数据测试结果分析,测试过程中遇到的主要问题及采取的解决措施;(列出主要问题的出错现象、出错原因、解决方法及效

5、果等)。主要问题: 1.标点符号问题,经常出现漏打分号,忽略中英文标点转换等问题,所以一定要谨慎仔细. 2.进制转换的实现及正/余弦计算经常出现问题,结果不正确,经过查阅资料及反复调试,我们终于克服了这一难题. 3.界面设计,开始我们的设计不太合理,各类功能键排序不合理,看起来杂乱无章,既不美观也不实用。经过多次调整程序终于能使界面美观实用。 4.要注意类、成员变量、成员方法的命名,其中,class后的类名由一个或多个英文单词构成,每个单词的第一个字符必须是大写;而成员变量和成员方法名的第一个单词的第一个字母必须小写,其他单词第一个字母大写。以下是其中一些主要功能演示过程:初始界面: 计算界面

6、 4、设计心得与总结:通过此次的JAVA设计实践,我们不但进一步理解掌握了课上老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。在实践中我们遇到了很多问题,但我们都努力克服,并最终成功的完成了这次课程设计。 通过编写这个相对复杂的程序,我们认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我们充分理解了包和类的调用关系。由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我们学会把程

7、序分块,逐个编写、调试。附录 package calculate;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*;public class Calculator private JLabel display;private JPanel panel;private JPanel panel0;private JPanel panel2;private JPanel panel3;private Button b1,b2,b3;private JRadioButton a;priv

8、ate Integer jin,jinzhi1;private double result,qresult;private double q0,w0,displayText,qdisplayTest;private String lastCommand,qlastCommand;private String lastCommand1,qlastCommand1;private boolean start,T;private JLabel dis;JFrame frame;public Calculator()frame=new JFrame("科学计算器"); /窗口设置f

9、rame.setContentPane(createContentpane();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocation(250,200);String name="zyj.gif"Image image=Toolkit.getDefaultToolkit().getImage(name);frame.setIconImage(image);frame.setSize(370,330);frame.setVisible(true);public Container creat

10、eContentpane() /设计版面Container contentPane=new Container();contentPane.setLayout(new BorderLayout(5,10);result=0;lastCommand="="lastCommand1="="qlastCommand="="start=true;T=false;dis=new JLabel("",SwingConstants.RIGHT);/显示界面设置dis.setForeground(Color.BLACK);disp

11、lay=new JLabel("0",SwingConstants.RIGHT);display.setForeground(Color.RED);dis.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(5,5,5,5);display.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorde

12、r(Color.black),BorderFactory.createEmptyBorder(5,5,5,5);ActionListener insert=new InsertAction();ActionListener command=new CommandAction();ActionListener jinzhi=new JinzhiAction();panel0=new JPanel();panel0.setLayout(new GridLayout(2,1,3,3);panel0.add(dis);panel0.add(display);contentPane.add(panel0

13、,BorderLayout.NORTH);panel=new JPanel(); /数字键按钮以及操作按钮等panel.setLayout(new GridLayout(4,6);addButton("7",insert); addButton("8",insert); addButton("9",insert); addButton("/",command,Color.red); addButton("sin",command);addButton("cos",comman

14、d);addButton("4",insert);addButton("5",insert);addButton("6",insert);addButton("*",command,Color.red);addButton("+/-",command);addButton("x2",command);addButton("1",insert);addButton("2",insert);addButton("3",i

15、nsert);addButton("-",command,Color.red);addButton("(",command);addButton(")",command);addButton("0",insert);addButton(".",insert);addButton("=",command,Color.red);addButton("+",command,Color.red);addButton("Sqrt",command

16、);addButton("exp",command); contentPane.add(panel,BorderLayout.SOUTH);panel2=new JPanel();panel2.setLayout(new GridLayout(2,3,4,4);ButtonGroup group=new ButtonGroup();a=new JRadioButton3; /进制转换按钮a0 =new JRadioButton("二进制运算");a1 =new JRadioButton("十进制运算",true); a2 =new J

17、RadioButton("八进制运算"); for(int i=1;i<2;i+)group.add(ai);panel2.add(ai);ai.addActionListener(jinzhi);JButton b1=new JButton("Backspace"); /*Backspace键*/ JButton b2=new JButton("CE"); JButton b3=new JButton("C"); b1.addActionListener(new ActionListener() publi

18、c void actionPerformed(ActionEvent e) String s1=display.getText(); int l=s1.length(); display.setText(s1.substring(0 ,l-1); ); panel2.add(b1); /*C键监听*/ b3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) display.setText("0"); result=0; start=true; ); panel2

19、.add(b2); /*CE键监听*/ b2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) display.setText("0"); lastCommand="=" dis.setText(""); start=true; ); panel2.add(b3); contentPane.add(panel2,BorderLayout.CENTER); return contentPane;private void ad

20、dButton(String lable,ActionListener listener)/构造关于添加按钮的函数JButton button=new JButton(lable);button.addActionListener(listener);panel.add(button);private void addButton(String lable,ActionListener listener,Color color)/同上,函数的重写JButton button=new JButton(lable);button.addActionListener(listener);button

21、.setForeground(color);panel.add(button);private class InsertAction implements ActionListener/关于输入数字的监听public void actionPerformed(ActionEvent event)String input=event.getActionCommand();if(start)display.setText("");start=false;display.setText(display.getText()+input); private class JinzhiA

22、ction implements ActionListener/进制运算监听函数public void actionPerformed(ActionEvent e)String s=e.getActionCommand();Integer m= new Integer(display.getText().trim(); int a=new int32; int b=1,i,j=0,k=0; int c=0; if(s.equals("二进制运算")for(i=0;i<32;i+) ai=m%2; m=m/2; b=b*10; c=c+b/10*ai; if(m=0)

23、break; display.setText(""+c); if(s.equals("八进制运算")for(i=0;i<32;i+) ai=m%8; m=m/8; b=b*10; c=c+b/10*ai; if(m=0) break; display.setText(""+c); private class CommandAction implements ActionListener/各命令监听设置public void actionPerformed(ActionEvent evt)String command=evt.ge

24、tActionCommand();displayText=Double.parseDouble(display.getText(); if(command.equals("(")|command.equals("sin")|command.equals("+/-")|command.equals("cos")|command.equals("Sqrt")|command.equals("exp")dis.setText(dis.getText();else if(!qlast

25、Command.equals("=")dis.setText(dis.getText()+displayText);else if(lastCommand.equals("=") /在主显示窗口上方输入命令dis.setText(display.getText();elsedis.setText(dis.getText()+displayText);if(command.equals("(")/左括号的处理工作qresult=result;qlastCommand1=lastCommand1;qlastCommand=lastComm

26、and;qdisplayTest=displayText;result=0;lastCommand1="="lastCommand="="if(!(command.equals("sin")|command.equals("+/-")|command.equals("cos")|command.equals("Sqrt")|command.equals("exp")dis.setText(dis.getText()+command);/在主显示窗口上方输入

27、命令cal(command); /实现计算功能函数 if(command.equals(")")/右括号的处理工作cal(command);result=qresult;lastCommand1=qlastCommand1;lastCommand=qlastCommand;start=false;public void cal(String command)if(T)calculate(displayText);lastCommand=lastCommand1;lastCommand1="="T=false;result=w0; if(start)if(

28、command!="(")lastCommand=command; else if(command.equals("sin")|command.equals("+/-")|command.equals("cos")|command.equals("Sqrt")|command.equals("exp")calcul(displayText,command);else if(command.equals("=")displayText=Double.pars

29、eDouble(display.getText();calculate(displayText);lastCommand="="dis.setText(""+result);start=false;else if(command.equals(")")displayText=Double.parseDouble(display.getText();calculate(displayText);lastCommand="="start=false;else if(lastCommand.equals("*&

30、quot;)|lastCommand.equals("/")displayText=Double.parseDouble(display.getText();calculate(displayText);lastCommand=lastCommand1;lastCommand1="="lastCommand=command;start=true;else if(command.equals("+")|command.equals("-")calculate(Double.parseDouble(display.ge

31、tText();lastCommand=command;start=true;else if(command.equals("*")|command.equals("/")&&(!lastCommand.equals("=")lastCommand1=lastCommand;lastCommand=command;w0=result;result=Double.parseDouble(display.getText();start=true;T=true;else if(command.equals("*")|command.equals("/")&&lastCommand.equals("=")lastCommand1=lastCommand;lastCommand=command;result=displayText;start=true;public void calcul(double x,String command)/单目运算函数if(command.equals("+/-")x

温馨提示

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

评论

0/150

提交评论