JAVA课程设计小型计算器学生姓名:指导教师:李明江系别:计算机科学系专业:计算机科学与技术年级:2008 应用2班提交时间:2010年 12 月 22日学号:目录一概述 (3)二总体方案设计 (4)三详细设计 (6)四程序的调试与运行结果说明.. 10 五课程设计总结 (19)六附录...... 错误!未定义书签。
一设计任务书1.程序具备的功能:(1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号;复位按钮;(2)完成整数、实数的四则运算(加、减、乘、除);(3)通过按钮点击实现数据的复位(清零);(4)实数运算中小数位的精度一致。
2.课程设计的主要设计思想对于此计算器程序,首先要设计其GUI 界面,总体界面有一个文本框,18个按钮,总体界面用BorderLayout布局。
文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel 中,添加到整体布局的CENTER,界面设计完成。
布局设计好后再添加按钮事件。
对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。
在进行加、减、乘、除计算时要把点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。
二总体方案设计1.界面设计界面设计要求用GUI,界面设计中有用到swing组件的TextField和Button,用到awt 中的BorderLayout和GridLayout布局管理方式,其图形界面如下:2.功能介绍这是计算器中的一种:简单计算器,本项目用到了Java中的GUI界面和swing组件以及awt布局,所以简单易用,它能完成如下的几个小功能:点击按钮中的数字键和运算符键就能进行简单的加、乘、乘、除求模四则运算;还能通过用户自己在文本框中输入数字,进行简单运算;如果输入有误时可以按Clear撤销后重新输入新数据三详细设计主题任务程序流程图如下:部分代码展示及说明:这段代码主要是对程序的主框架进行相应的设置。
Frame f=new Frame("计算器");f.setBackground(Color.lightGray);f.setForeground(Color.blue);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.SOUTH);f.setSize(350,300);//设置大小f.setVisible(true);//设置为可视这段代码是对程序如何进行运算的设计if(y==0&&command!="*"&&command! ="/"&&command!="+"&&command!="-"&&command!="=")//判断输入是否为数字{s1=s1.concat(command);tf.setText(s1);}if(command=="*"||command=="/"||command=="+"||command=="-")//判断是否输入运算符{y=1;s2=command;}if(y==1&&command!="*"&&command!="/"&&command!="+"&&command!="-"&&command!="=") {s3=s3.concat(command);tf.setText(s3);}if(command=="="){Double ob1=Double.valueOf(s1);Double ob3=Double.valueOf(s3);d1=ob1.doubleValue();d3=ob3.doubleValue();if(s2=="+") d4=d1+d3;if(s2=="-") d4=d1-d3;if(s2=="*") d4=d1*d3;Double ob4=new Double(d4);tf.setText(ob4.toString());if(s2=="/"){ if(d3==0)tf.setText("除数不能为零");else{ d4=d1/d3;ob4=new Double(d4);tf.setText(ob4.toString());}}y=0;}这段代码主要为窗口关闭按钮编写程序class closeWin extends WindowAdapter //为关闭按钮编写程序{public void windowClosing(WindowEvent e){ System.exit(0);}}四程序的调试与运行结果说明事例1 当除数为0时,程序运行结果如下:事例2:4561+8715 预计结果13276 实际结果事例3:189/2 预计结果94.5 实际结果:事例4:29-87 预计结果-58 实际结果:五设计源代码import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListener{ Panel p1=new Panel();Panel p2=new Panel();Panel p3=new Panel();TextField tf=new TextField(30);Stringa[]={"7","8","9","/","4","5","6","*","1","2","3 ","-","0",".","=","+"};Button B[];Button b1=new Button("CE");Button b2=new Button("退出");String s1=new String();String s2=new String();String s3=new String();//s1记录第一个数;s2记录运算符;s3记录第二个数;double d1,d3,d4;int y=0; // y用于控制运算符public void init(){Frame f=new Frame("计算器");f.setBackground(Color.lightGray);f.setForeground(Color.blue);p1.add(tf);p3.setLayout(newGridLayout(1,2));p3.add(b1);p3.add(b2);p2.setLayout(newGridLayout(4,4));B=new Button[a.length];for(int i=0;i<a.length;i++){B[i]=new Button(a[i]);p2.add(B[i]);}f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.SOUTH);f.setSize(350,300);//设置大小f.setVisible(true);//设置为可视B[0].addActionListener(this);//7B[1].addActionListener(this); //8B[2].addActionListener(this); //9B[3].addActionListener(this); //除B[4].addActionListener(this); //4B[5].addActionListener(this); //5B[6].addActionListener(this); //6B[7].addActionListener(this); //*B[8].addActionListener(this); //1B[9].addActionListener(this); //2B[10].addActionListener(this);//3B[11].addActionListener(this); // -B[12].addActionListener(this); //0B[13].addActionListener(this); //.B[14].addActionListener(this); //=B[15].addActionListener(this); //+b1.addActionListener(this);b2.addActionListener(this);f.addWindowListener(new closeWin());}public void actionPerformed(ActionEvent e){String command = e.getActionCommand();if(command=="CE") //清零键按下时返回初始状态{y=0;tf.setText("0.");s1="";s2="";s3="";//记录输入值的变量清空}else if(command=="退出") System.exit(0);//退出键关闭应用程序elseif(y==0&&command!="*"&&command!="/" &&command!="+"&&command!="-"&&command!="=")//判断输入是否为数字{s1=s1.concat(command);tf.setText(s1);}if(command=="*"||command=="/"||command=="+"||command=="-")//判断是否输入运算符{y=1;s2=command;}if(y==1&&command!="*"&&command!="/"&&command!="+"&&command!="-"&&command!="=") {s3=s3.concat(command);tf.setText(s3);}if(command=="="){Double ob1=Double.valueOf(s1);Double ob3=Double.valueOf(s3);d1=ob1.doubleValue();d3=ob3.doubleValue();if(s2=="+") d4=d1+d3;if(s2=="-") d4=d1-d3;if(s2=="*") d4=d1*d3;Double ob4=new Double(d4);tf.setText(ob4.toString());if(s2=="/"){ if(d3==0)tf.setText("除数不能为零");else{ d4=d1/d3;ob4=new Double(d4);tf.setText(ob4.toString());}}y=0;}}public static void main(String [] args){new Calculator().init();}}class closeWin extends WindowAdapter //为关闭按钮编写程序{public void windowClosing(WindowEvent e){System.exit(0);}}六课程设计总结在做本项目是时候,会遇到很多小问题,比如说:如何保存输入的数字和下一个数进行加、减、乘、除运算。