J A V A保存计算过程的计算器课程设计报告-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN保存计算过程的java计算器目录1 概述 ....................................................................................................... 错误!未定义书签。
课程设计目的....................................................................... 错误!未定义书签。
课程设计内容....................................................................... 错误!未定义书签。
2 系统需求分析 .......................................................................................... 错误!未定义书签。
系统目标............................................................................... 错误!未定义书签。
主体功能............................................................................... 错误!未定义书签。
开发环境............................................................................... 错误!未定义书签。
3 系统概要设计 .......................................................................................... 错误!未定义书签。
系统的功能模块划分........................................................... 错误!未定义书签。
系统流程图........................................................................... 错误!未定义书签。
4系统详细设计 .......................................................................................... 错误!未定义书签。
5 测试........................................................................................................... 错误!未定义书签。
测试方案............................................................................... 错误!未定义书签。
测试结果............................................................................... 错误!未定义书签。
6 小结........................................................................................................... 错误!未定义书签。
参考文献...................................................................................................... 错误!未定义书签。
附录 .......................................................................................................... 错误!未定义书签。
附录1 源程序清单 ...................................... 错误!未定义书签。
1 概述课程设计目的1.掌握JAVA语言编程的基础知识并能熟练运用。
2.熟悉类声明与对象的使用。
3.理解委托时间处理模型。
4.了解JAVA语言的图形用户界面JAVAS WING的设计知识。
5.运用JAVA SWING编写简单计算器程序,并实现其功能。
课程设计内容设计GUI界面的计算机程序,用户可以通过鼠标依次输入参加计算的数值,进行加,减,乘,除,等混合运算。
2 系统需求分析系统目标一个简单的计算器程序。
用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的结果将被显示在窗口上部的文本框中。
主体功能1.按下数字键在文本框上会显示数字,这是计算器最基本的功能2.在任何时候按下“+-”键,计算器文本框上的数字置反3.上面一个文本框显示计算过程,下面一个文本框显示输入的数字4.当按下的运算符号时前面已经按下过运算符号时,下面一个文本框显示上一个运算符号以及两个数之间的运算结果。
5. 按下清除“C”键,数据被全部清除。
开发环境JDK3 系统概要设计系统的功能模块划分1.主界面模块2.事件相应模块系统流程图4系统详细设计1.主界面模块详细设计顶层容器:ComputerPad类实现主窗口,顶层容器中包含了1个panel容器,1个resultshow文本框,1个process文本框。
各组件作用:其中panel容器用于放数字按钮,小数点,运算符按钮,清零按钮,正负转换按钮以及退格按钮。
两个文本框一个用于显示输入数据和计算结果,另一个用于显示计算过程。
布局方式:顶层容器用BroadLayOut布局,process和resultshow文本框以及panel容器分别放在定岑容器的noth,center以及south面,panel容器用GridLayOut布局部分代码如下数字按钮类:实现数字按钮的定义public class NumberButton extends Button{}运算符按钮类:实现运算符号的定义public class OperationButton extends Button{}主窗口类实现监视器的注册,窗口布局,组件颜色大小等的设置public class ComputerPad extends Frame implements ActionListener{NumberButton numberButton[];OperationButton oprationButton[];Button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;Panel panel;JTextField resultShow;JTextField process;String 运算符号[]={"+","-","*","/"};LinkedList 链表;boolean 是否按下等号=false;public ComputerPad(){super("计算器");链表=new LinkedList();ddActionListener(this);}oprationButton=new OperationButton[4];for(int i=0;i<4;i++){oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this);}小数点按钮=new Button(".");正负号按钮 =new Button("+/-");等号按钮=new Button("=");求倒数按钮=new Button("1/x");退格按钮=new Button("退格");清零按钮=new Button("C");清零按钮.setForeground;退格按钮.setForeground;等号按钮.setForeground;求倒数按钮.setForeground;正负号按钮.setForeground;小数点按钮.setForeground;退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);求倒数按钮.addActionListener(this);ize()==0) {}else if(链表.size()==1&&是否按下等号==false){}else if(链表.size()==1&&是否按下等号==true) {}else if(链表.size()==2) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==2) {}else if(链表.size()==3) {}}ize()==1||链表.size()==2) {}else if(链表.size()==3) {}}ize()==0) {}else if(链表.size()==1) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==3) {}}ize()==1) {}else if(链表.size()==3) {}}ize()==1||链表.size()==2) {}else if(链表.size()==3) {}}Java2实用教程(第三版)[M] . 北京:清华大学出版社,2006 [2]耿祥义.? Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004 [3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004附录附录1 源程序清单import .*;import .*;public class NumberButton extends Button{int number;public NumberButton(int number){super(""+number);=number;setForeground;}public int getNumber(){return number;}}import .*;import .*;public class OperationButton extends Button{String 运算符号;public OperationButton(String s){super(s);运算符号=s;setForeground;}public String get运算符号(){return 运算符号;}}import .*;import .*;import class ComputerPad extends Frame implements ActionListener {NumberButton numberButton[];OperationButton oprationButton[];Button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;Panel panel;JTextField resultShow;JTextField process;String 运算符号[]={"+","-","*","/"};LinkedList 链表;boolean 是否按下等号=false;public ComputerPad(){super("计算器");链表=new LinkedList();numberButton=new NumberButton[10];for(int i=0;i<=9;i++){numberButton[i]=new NumberButton(i);numberButton[i].addActionListener(this);}oprationButton=new OperationButton[4];for(int i=0;i<4;i++){oprationButton[i]=new OperationButton(运算符号[i]); oprationButton[i].addActionListener(this);}小数点按钮=new Button(".");正负号按钮 =new Button("+/-");等号按钮=new Button("=");求倒数按钮=new Button("1/x");退格按钮=new Button("退格");清零按钮=new Button("C");清零按钮.setForeground;退格按钮.setForeground;等号按钮.setForeground;求倒数按钮.setForeground;正负号按钮.setForeground;小数点按钮.setForeground;退格按钮.addActionListener(this);清零按钮.addActionListener(this);等号按钮.addActionListener(this);小数点按钮.addActionListener(this);正负号按钮.addActionListener(this);求倒数按钮.addActionListener(this);process=new JTextField(10);;;(new Font("TimesRoman",,14));(new SoftBevelBorder);;(false);resultShow=new JTextField(10);;;(new Font("TimesRoman",,14));(new SoftBevelBorder);;(false);panel=new Panel(); (new GridLayout(5,4));(清零按钮);(退格按钮);(numberButton[1]);(numberButton[2]);(numberButton[3]);(numberButton[4]);(numberButton[5]);(numberButton[6]);(numberButton[7]);(numberButton[8]);(numberButton[9]);(numberButton[0]);(oprationButton[0]);(oprationButton[1]);(oprationButton[2]);(oprationButton[3]);(求倒数按钮);(正负号按钮);(小数点按钮);(等号按钮);add(panel,;add(resultShow,;add(process,;addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){(0);}});setVisible(true);setBounds(100,50,170,190);setResizable(false);validate();}public void actionPerformed(ActionEvent e){if() instanceof NumberButton){NumberButton b=(NumberButton)();if(链表.size()==0){int number=();链表.add(""+number);(""+number);(""+number);是否按下等号=false;}else if(链表.size()==1&&是否按下等号==false) {int number=();String num=(String)链表.getFirst();String s=(""+number);链表.set(0,s);(s);(s);}else if(链表.size()==1&&是否按下等号==true) {int number=();链表.removeFirst();链表.add(""+number);是否按下等号=false;(""+number);(""+number);}else if(链表.size()==2){int number=();链表.add(""+number);(""+number);(""+((String)链表.get(0))+((String)链表.get(1))+number);}else if(链表.size()==3){int number=();String num=(String)链表.getLast();String s=(""+number);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+number);链表.set(2,s);(s);}}else if() instanceof OperationButton){OperationButton b=(OperationButton)();if(链表.size()==1){String fuhao=运算符号();(""+((String)链表.get(0))+fuhao);链表.add(fuhao);}else if(链表.size()==2){String fuhao=运算符号();链表.set(1,fuhao);(""+((String)链表.get(0))+((String)链表.get(1))); }else if(链表.size()==3){String fuhao=运算符号();String number1=(String)链表.getFirst();String number2=(String)链表.getLast();String 运算符号=(String)链表.get(1);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+运算符号);try{double n1=(number1);double n2=(number2);double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}链表.clear();链表.add(""+n);链表.add(fuhao);(""+n);}catch(Exception ee){}}}else if()==等号按钮){是否按下等号=true;if(链表.size()==1||链表.size()==2) {String num=(String)链表.getFirst();(""+num);(num+"=");}else if(链表.size()==3){String number1=(String)链表.getFirst();String number2=(String)链表.getLast();String 运算符号=(String)链表.get(1);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2))+"=");try{double n1=(number1);double n2=(number2);double n=0;if(运算符号.equals("+")){n=n1+n2;}else if(运算符号.equals("-")){n=n1-n2;}else if(运算符号.equals("*")){n=n1*n2;}else if(运算符号.equals("/")){n=n1/n2;}(""+n);链表.set(0,""+n);链表.removeLast();链表.removeLast();}catch(Exception ee){}}}else if()==小数点按钮){if(链表.size()==0){是否按下等号=false;}else if(链表.size()==1){String dot=小数点按钮.getLabel();String num=(String)链表.getFirst();String s=null;if(dot)==-1){s=(dot);链表.set(0,s);}else{s=num;}链表.set(0,s);(s);(s);}else if(链表.size()==3){String dot=小数点按钮.getLabel();String num=(String)链表.getLast();String s=null;if(dot)==-1){s=(dot);链表.set(2,s);}else{s=num;}(s);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}}else if()==退格按钮){if(链表.size()==1){String num=(String)链表.getFirst();if()>=1){num=(0,()-1);链表.set(0,num);(num);(""+((String)链表.get(0)) );}else{链表.removeLast();("0");}}else if(链表.size()==3){String num=(String)链表.getLast();if()>=1){ num=(0,()-1);链表.set(2,num);(num);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}else{链表.removeLast();("0");}}}else if()==正负号按钮){if(链表.size()==1){String number1=(String)链表.getFirst();try{double d=(number1);d=-1*d;String str=(d);链表.set(0,str);(str);(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=(number2);d=-1*d;String str=(d);链表.set(2,str);(str);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)) );}catch(Exception ee){}}}else if()==求倒数按钮){if(链表.size()==1||链表.size()==2){String number1=(String)链表.getFirst();try{double d=(number1);d=d;String str=(d);链表.set(0,str);(str);(str);}catch(Exception ee){}}else if(链表.size()==3){String number2=(String)链表.getLast();try{double d=(number2);d=d;String str=(d);链表.set(2,str);(str);(""+((String)链表.get(0))+((String)链表.get(1))+((String)链表.get(2)));}catch(Exception ee){}}}else if()==清零按钮){是否按下等号=false;("0");("0");链表.clear();}}public static void main(String args[]){new ComputerPad();}}。