迷你计算器设计说明书教材.docx
- 文档编号:15162703
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:41
- 大小:186.07KB
迷你计算器设计说明书教材.docx
《迷你计算器设计说明书教材.docx》由会员分享,可在线阅读,更多相关《迷你计算器设计说明书教材.docx(41页珍藏版)》请在冰点文库上搜索。
迷你计算器设计说明书教材
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年秋季学期
Java课程设计
题目:
迷你计算器设计
专业班级:
姓名:
学号:
指导教师:
成绩:
摘要
目前计算器应用很广泛,本程序利用面向对象分析方法设计的思想,结合面向对象语言JAVA设计迷你计算器,划分模块,模块的逐一实现,定义和使用类,并掌握内部类的使用,JAVA接口的实现。
此程序可以进行加、减、乘、除、阶乘、正弦、余弦和指数等运算,并且有删除和归零等功能。
关键词:
JAVA;面向对象设计;迷你计算器
序言
计算器作为日常生活中常用工具,它已经深入到生活中的每一个地方及场合。
此次通过Java语言来实现,该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作。
及时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
可以进行简单的四则运算(加,减,乘,除,以及求倒数,求相反数等),有删除等功能,归零表示初始化。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器,任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行,最受欢迎的一种程序开发语言。
Java程序设计是一门应用性很强的专业课,在学习时必须注意理论与实践相结合,为此开设了本课程设计,其目的是通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
摘要……………………………………………………………………………Ⅰ
序言……………………………………………………………………………Ⅱ
一.系统分析与设计………………………………………………………….1
二.详细设计………………………………………………………………….3
三.系统测试………………………………………………………………….8
四.软件使用说明书…………………………………………………………13
设计总结………………………………………………………………………14
参考文献………………………………………………………………………15
致谢……………………………………………………………………………16
源代码…………………………………………………………………………17
一.系统分析与设计
(一)系统分析
日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。
本程序需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计等。
1.1基本需求
主要支持的数字:
0、1、2、3、4、5、6、7、8、9,主要支持的算子:
+、-、*、/、sqrt,tan,sin,cos,log等,要求提供图形化操作界面。
1.2特殊需求
具备归零,退格,退出等功能。
1.3课程设计的实验环境
硬件要求能运行Windows7操作系统的微机系统。
JAVA程序设计语言,Eclipse开发工具。
(二)系统设计
此程序使用GFrame窗体,将单行文本放在窗体的NORTH,接着在窗体添加panel3,然后在panel3的NORTH添加panel1,在panel3的SOUTH添加panel2,最后将数字按钮和运算符按钮添加到panel2和panel3中同时注册按钮事件监听器
该程序实现对用户输入数据,显示数据,在选择运算符号,并且进行计算,最后显示计算结果。
本计算器提供了sqrt、tan、log、sin、cos等函数的计算功能,以及归零和删除等功能。
本程序的可视化界面清晰明了,对于一般运算均可。
所以此界面为程序默认第一界面。
(三)类的描述
本程序共有五个类:
MyCalucator是主类,main方法里会建立一个MyCalucator对象。
Signs类为内部类,是一个监听器类,实现Actionlistener,实现运算符号的事件监听。
当运算符号为一目运算符(sin,cos,n!
)时,实现该类的actionPerformed方法,对sin,cos,n!
按钮进行事件处理。
Clear类为内部类,是一个监听器类,实现Actionlistener,实现清除按钮的事件监听。
当按钮为"AC"(清零)或"DEL"时,实现该类的actionPerformed方法,对AC,DEL按钮进行事件处理。
Num类为内部类,是一个监听器类,实现Actionlistener,实现数字输入的事件监听。
当点击0-9这十个数字按钮时,如果是要输入的运算数则将文本框清空后将数字显示在文本框中。
Dot类为内部类,是一个监听器类,实现Actionlistener,实现小数点的事件监听。
当点击小数点按钮时,如果文本框中输入值中没有小数点则在文本后加一个小数点。
(四)类之间的关系
类MyCalucator与Signs类、Clear类、Num类、Dot类是依赖关系,MyCalucator依赖于Signs类、Clear类、Num类、Dot类。
MyCalucator类中初始化go方法,其中创建了Signs类、Clear类、Num类、Dot类的实例,以实现MyCalucator类的实例的创建。
Signs类、Clear类、Num类、Dot类与Calculator类有关联关系。
Signs类、Clear类、Num类、Dot类中的actionPerformed方法中调用了MyCalucator类中的私有变量f、tf、IfResult、oper、result、df,与MyCalucatorr类中这些变量值相关联。
二.详细设计
计算器的程序设计,必然有数据输入,其中数据包括运算符和数字,均要通过计算器上的Button按钮选项按钮输入进去,里面录入的必然是字符型的数据,如果进行运算要将输入的数据转化成Double型,以防出错。
运用面板的叠加做出界面。
通过在按钮的单击事件处理方法中调用类的成员方法来进行简易计算器的各种运算,并正确实现运算功能。
调用Math包中的方法实现各函数功能。
此程序使用GFrame窗体,将单行文本放在窗体的NORTH,接着在窗体添加panel3,然后在panel3的NORTH添加panel1,在panel3的SOUTH添加panel2,最后将数字按钮和运算符按钮添加到panel2和panel3中同时注册按钮事件监听器。
2.1面板设计
利用JavaGUI布局,使用其中的Swing:
导入swing:
importjavax.swing.*;
JFramef;//JFrame是带有标题和边框的顶层窗口。
JTextFieldtf;//JTextField是一个轻量级组件,它允许编辑单行文本。
JPanelpanel1,panel2,panel3;//JPanel是一般轻量级容器。
JButton“+”,”-”,”*”,”/”,”sqrt”等//JButton"sqrt"按钮的实现,通过Action可配置按钮,并进行一定程度的控制。
NumnumActionListener;
DecimalFormatdf;
2.2设置各个按钮行为
能够实现基本的加、减、乘、除、阶乘、正弦、余弦和指数等运算,并且有退格和归零和退出等其它的辅助功能,界面简洁适用。
1)数字按钮功能的实现
如图2.1所示,该计算器主要支持的数字:
0、1、2、3、4、5、6、7、8、9
图2.1
2)操作符(+、*、/、=、tan、log、sin、cos、sqrt)按钮功能实现
主要支持的算子:
+、-、*、/。
要求提供图形化操作界面。
操作设计如下:
if(oper=="+"){result+=x;}
elseif(oper=="-"){result-=x;}
elseif(oper=="×"){result*=x;}
elseif(oper=="÷"){result/=x;}
elseif(oper=="="){result=x;}
tf.setText(df.format(result));
if(str.equals("sqrt"))
{
doublei=Double.parseDouble(tf.getText());
if(i>=0)
{
tf.setText(String.valueOf(df.format(Math.sqrt(i))));
}
else
{
tf.setText("负数不能开平方根");
}
}
elseif(str.equals("log"))
{
doublei=Double.parseDouble(tf.getText());
if(i>0)
{
tf.setText(String.valueOf(df.format(Math.log(i))));
}
else
{
tf.setText("负数不能求对数");
}
}
elseif(str.equals("%"))
{
tf.setText(df.format(Double.parseDouble(tf.getText())/100));
}
elseif(str.equals("1/x"))
{doublei=Double.parseDouble(tf.getText());
if(i==0)
{
tf.setText("除数不能为零");
}
else
{
tf.setText(df.format(1/Double.parseDouble(tf.getText())));
}
}
elseif(str.equals("sin"))
{
doublei=Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.sin(i))));
}
elseif(str.equals("cos"))
{
doublei=Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.cos(i))));
}
elseif(str.equals("tan"))
{
doublei=Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(Math.tan(i))));
}
elseif(str.equals("n!
"))
{
doublei=Double.parseDouble(tf.getText());
if((i%2==0)||(i%2==1))
{
intj=(int)i;
intresult=1;
for(intk=1;k<=j;k++)
result*=k;
tf.setText(String.valueOf(result));
}
else
{
tf.setText("无法进行阶乘");
}
}
elseif(str.equals("x^2"))
{
doublei=Double.parseDouble(tf.getText());
tf.setText(String.valueOf(df.format(i*i)));
}
elseif(str.equals("退出"))
{System.exit(0);}
elseif(str.equals("′″"))
{
doublei=Double.parseDouble(tf.getText());
tf.setText(String.valueOf(i/180*Math.PI));}
else
{
if(flag)
{IfResult=false;}
if(IfResult)
{oper=str;}
else{
getResult(Double.parseDouble(tf.getText()));
oper=str;
IfResult=true;}}}}
3)撤销清除按钮的实现
按下'DEL'键,利用循环将当前字符串中的最后一个字母删除;
按下'AC'按钮,文本框内数据清除,并清0。
操作设计如下:
if(str=="AC")
{
tf.setText("0");
IfResult=true;
result=0;
}
elseif(str=="DEL")
{if(Double.parseDouble(tf.getText())>0)
{
if(tf.getText().length()>1)
{
tf.setText(tf.getText().substring(0,tf.getText().length()-1));
}
else
{tf.setText("0");
IfResult=true;}}
else
{if(tf.getText().length()>2)
{tf.setText(tf.getText().substring(0,tf.getText().length()-1));}
else
{tf.setText("0");
IfResult=true;}}
2.3类图
MyCalucator类
成员变量:
JFramef
JTextFieldtf
JPanelpanel1
JPanelPanel2
JPanelPanel3
booleanIfResult
booleanflag
Stringoper
doubleresult
成员函数:
go()
addButton()
getResult()
main()
Signs类
成员函数:
actionPerformed()
Clear类
成员函数:
actionPerformed()
图2.4Clear类
图2.3Signs类
Num类
成员函数:
actionPerformed()
Dot类
成员函数:
actionPerformed()
图2.6Dot类
图2.5Num类
图2.2MyCalucator类
三.系统测试
3.1加法运算如图所示。
图3.1
图3.2
图3.3
图3.4
3.2平方根运算如图所示。
图3.5
图3.6
图3.7
3.2tan运算如图所示。
图3.8
图3.9
图3.10
四.软件使用说明书
该软件是运用三个面板的叠加做出界面,通过在按钮的单击事件处理方法中调用类的成员方法来进行简易计算器的各种运算,并正确实现运算功能。
系统运行步骤如下:
1)在Java中调试并运行程序,显示出计算器界面。
2)进行运算输入,若输入有误,则按‘DEL’键,进行完一次运算,按‘AC
键,退出重新运行程序,进行其他运算。
3)运算完后,选择‘退出’,即可退出界面。
在输入时我们应注意一下几点:
1)连续输入运算符。
输入中如果有操作非法,比如按下两次'+',系统默认一次进行运算。
2)做除法运算时除数不为“0”。
3)开根号运算"负数不能开根号"。
4)程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),本次设计精度采用double浮点数,占用8byte,范围:
4.9e^-324~1.8e-308(16个数字(16digits))满足一般使用。
除此之外,该软件调用了Math包中的方法实现各函数功能,此外,整个程序对话框可实现最小化、最大化、关闭等。
设计总结
这次Java课设我的题目是迷你计算器设计,这个程序主要是针对我们Java中学的布局管理器,由于有一定的基础,所以设计起来也不是很难,不过在设计中也遇到了好多问题,通过查阅和求助老师同学,使得我对这一块的内容有了更深入的了解。
通过两周的课程设计,对于我这个编程新手来说,多少有些困难.不过有志者事竟成。
首先,我需要了解一些基本的术语。
然后,我还要去图书馆查阅资料,找一些与这次课设有关的内容作参考,以便能更方便的完成课设的内容。
另外,我还去网上查阅了一些资料,充实一下自己,一切都准备好了,我就可以完成我的计算器程序设计报告了。
在编程的过程中,有时时候会遇到一些不懂的地方,还有程序中的错误的改正,但是在问老师和同学之后,再加上自己的思考,和看书,就把问题解决了。
这些问题是我在从低级的程序员向高级程序设计师过度的过程必须要解决的。
而我个人认为我越早接触,越多接触,越快解决对我本人缩短这次过程有重要的意义。
其实这次程序设计中,进制转换这一块,我认为做的还是不够完善。
系统并没很好的完成转换功能,并且也没进制转换的相关用法,这也是我这个小程序员的不足。
以后通过更深一步的学习,我相信我可以做得更好的。
我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。
我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习工作中去。
参考文献
[1]曲朝阳,杨杰明等.Java程序设计.北京:
清华大学出版社,2008.10
[2]耿祥以,张跃平.Java大学生实用教程.北京:
电子工业出版社,2012.6
[3]明日科技.Java经典编程.北京:
清华大学出版社,2012.10
[4]李尊朝,苏军.Java语言程序设计.北京:
中国铁道出版社,2004.2
[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.
致谢
短短的两周,Java课程设计结束了。
在这期间,我想感谢很多人给予我的帮助。
首先,是我的老师,因为您的指导和教诲,在设计中我基本能按照规范的方法和步骤进行,并通过查阅有关资料和生活中的计算器功能来确定迷你计算器的方案,然后设计并制作;除此之外我要感谢我的同学、朋友,因为他们的帮助,我才完成了这次课程设计,才让我有信心、有勇气去面对实践中遇到的种种困难。
在实践过程中我学到了很多Java中的知识,并巩固了学过的知识。
源程序
Application程序:
packagelianxi3;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.text.DecimalFormat;
publicclassMyCalucator
{
privateJFramef;
privateJTextFieldtf;
privateJPanelpanel1,panel2,panel3;
privatebooleanIfResult=true,flag=false;
privateStringoper="=";
privatedoubleresult=0;
privateNumnumActionListener;
privateDecimalFormatdf;
publicvoidgo()
{
f=newJFrame("科学计算器");
df=newDecimalFormat("#.#####");
f.setLayout(newBorderLayout(5,5));
panel3=newJPanel(newBorderLayout(5,5));
numActionListener=newNum();
tf=newJTextField();
tf.setEditable(false);
tf.setBackground(Color.white);
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setText("0");
tf.setBorder(BorderFactory.createLoweredBevelBorder());
panel1=newJPanel(newGridLayout(2,6,5,5));
panel2=newJPanel(newGridLayout(4,5,5,5));
addButton(panel1,"1/x",newSigns(),Color.orange);
addButton(panel1,"x^2",newSigns(),Color.orange);
addButton(panel1,"sqrt",newSigns(),Color.orange);
addButton(panel1,"e",numActionListener,Color.orange);
addButton(panel1,"log",newSigns(),Color.orange);
addButton(panel1,"退出",newSigns(),Color.red);
addButton(panel1,"-/+",newClear(),Color.orange);
addButton(panel1,"′″",newSigns(),Color.orange);
addButton(panel1,"sin",newSigns(),Color.orange);
addButton(panel1,"cos",newSigns(),Color.orange);
addButton(panel1,"tan",newSigns(),Color.orange);
addButton(panel1,"n!
",newSigns(),Color.orange);
addButton(panel2,"7",numActionL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 迷你 计算器 设计 说明书 教材