Java课程设计-保存计算过程的计算器.pdf
保存计算过程的计算器 1.课程设计的目的 随着计算机技术的飞速发展,人们已经不能满足于采用人工进行大量的计算,计算器快速的计算速度和稳定的准确率很好的满足了用户的需要,保存计算过程的计算器更是能够让用户随时随地的查找以前的计算过程。保存计算过程的计算器正是在这样的市场需求之下研发的,目的旨在帮助用户快速准确的得到计算结果。掌握 Java 语言编程的基础知识并能熟练运用,熟悉类声明与对象的使用,理解委托时间处理模型,了解 Java语言的图形用户界面的设计知识,运用 JCreator 编写简单计算器程序,并实现其功能。2.设计方案论证 需求分析 设计一个图形界面的带保存过程的计算器应用程序,完成简单的算术过程。设计的计算器应用程序除了普通的计算功能外,还有 n 次方、算术平方根、正弦函数、对数、随机取值、退格、清零等功能。程序主要是设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关计算。用户可以利用鼠标点击数值或操作符按键完成计算的输入,计算的过程将被显示在窗口右边的文本框中,另外使用程序自带的保存功能将计算过程保存到想要的地方。设计思路 本应用程序继承自框架类(Frame),此程序不使用布局管理器,将单行输入显示文本框、各个按钮功能、计算过程显示区加入到同一个面板内,直接添加到各自区域。同时注册按钮时间监听器。如:*b0=new JButton(0);(new ActionListener()事件监听器中的事件处理方法 void actionPerformed(ActionEvent e),完成主要事件的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(“1”,“2”,“3”,“9”,“0”)、运算符按钮事件(“+”,“-”,“*”,“/”)、正负号按钮事件(“”)、小数点按钮事件(“.”)、等号按钮事件(“=”)、n 次方按钮事件(“xy”)、算术平方根按钮事件(“”)、正弦函数按钮事件(“sin”)、对数函数按钮事件(“log”)、随机取值按钮事件(“R”)、PI 按钮事件(“”)、退格 按钮事件(“”)、清零按钮事件(“C”)、保存复制清除按钮事件(“保存”,“复制”,“清除”)。设计方法 将数字键与其他键分别进行监听,一个单行文本框用来显示输入的数据,str 用来存放每次录入的数据,数据与字符录入都通过按键来触发事件,单行文本框设置为不可编辑、下沉。然后对所有的 button 进行监听,当按到“+,-,*,/”按钮时,将之前输入的数字存储到 s 中,输入的运算符通过变量 operatorchar 来储存,当再输入数字后遇到“=”时,便将运算符后的数字存储到变量 s2 里,接着调用“+,-,*,/”运算函数进行运算,将结果用 s1 保存起来,并显示 在单行文本框中。退格按钮事件只需将输入的数据字符型重新编辑后,把最后一个数字消去再重新显示出来,清空按钮即是将所有变量初始化。求 n 次方、开方、正弦函数和对数函数可调用系统 Math 类的静态方法 t1(),随机取值设定当事件发生时 100 以内的正数随机出现。功能模块设计:按下数字键在文本框上会显示数字,这是计算器最基本的功能;在任何时候按下“+-”键,计算器文本框上的数字置相反数;右边一个文本框显示计算过程,上面一个文本框显示输入的数字;当按下的运算符号时前面已经按下过运算符号时,右边一个文本框显示上一个运算符号以及两个数之间的运算结果;按下清除“C”键,数据被全部清除;点击右侧“保存”按钮,可保存计算过程。基本运算模块功能(1)加法 else if(7)()+7);();else if(8)()+8);();else if(9)()+9);【();else if(清除)(null);else if(.)()+.);();)else if(C)();();if(复制)();if(清除)(null);if(保存)&JFileChooser chooser=new JFileChooser();int state=(null);File file=();if(file!=null&state=try String content=();StringReader read=new StringReader(content);BufferedReader in=new BufferedReader(read);。FileWriter outOne=new FileWriter(file);BufferedWriter out=new BufferedWriter(outOne);String str1=null;while(str1=()!=null)(str1);();();|();catch(IOException exc)else if()StringBuffer s=new StringBuffer();if()0)()-1,().toString();】else if()t=;(+t);();(+=+()+n);else if(+)s=();s1=+;();(s1);else if(/)s=();s1=/;();(s1);,else if(-)s=();s1=-;();(s1);else if(*)s=();s1=*;#();(s1);else if()s=();t1=(s);t=(t1);(t+);String process=sqrt(+s+)=+t;.(process);(+process+n);else if()s=();t=(s);if(t!=0)(t+);();else if(sin)s=();t1=/*(s);t=(t1);(t+);String process=sin(+s+)=+t;(process);(+process+n);else if(log)s=();t1=(s);t=(t1);(t+);String process=log(+s+)=+t;(process);(+process+n);else if(xy)s=();();s1=xy;(s1);else if(R)int m=(int)()*100/3);(m+);();else if(=)s2=();t1=(s);t2=(s2);if(s1=(+)t=t1+t2;else if(s1=(-)t=t1-t2;else if(s1=(*)t=t1*t2;else if(s1=(/)t=t1/t2;else if(s1=xy)t=(t1,t2);(+t);String process=s+s1+s2+=+t;(process);(+process+n);