- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机学院信管08级JAVA程序设计报告
JAVA语言课程设计报告
题 目:带函数功能和数制转换功能的计算器制作
设 计 者:
专业班级:
学 号:
指导教师:
2011 年 12 月 12 日
计算机学院
1、系统需求分析
1.1系统名称:
带函数功能和数制转换功能的计算器
1.2系统介绍
制作一个计算器,主要有以下功能:
1.可以连续输入运算,对于输入的表达式能够按算符优先级进行处理。如输入2+3*2时输出为8,而不是10。
2.可以处理含括号的表达式,Sin、Cos、Tan、平方、倒数、开方等操作可以与表达式结合进行运算,不用单独运算。
3.科学计数法表示,当输入值或者计算结果超过一定范围时会自动以科学计数法表示。
4.增加了科学计算器的一些设施,如清空,求平方,求根号,求倒数,求三角函数,正负值,显示括号嵌套层数等。
5.错误提示,除数为0,应算超过范围等在下方将有文字提示,并将当前结果置零。
6.支持小数点,支持正负运算。
1.3开发背景
计算器作为计算工具被应用于方方面面,为人类的计算提供了便利。原来的计算器有很多不完善的地方,比如说三角函数和错误提示,本计算器制作期间考虑到这些点,将很多东西融入了这个小软件,给运算和使用提供了更多的功能。
1.4 系统面向的用户人群
本计算器为计算量中等,对函数要求不太高的人群所开发。适合于简单计算数据,不适合科研工作。
1.5开发环境
Eclipse
2.系统设计
2.1总体设计
本程序在设计时,参照了Windows自带的科学计算器的界面设计和功能模式。在界面上与其非常相似。利用Eclipse编程环境,通过对按钮和菜单添加监听,并重载actionPerformed函数实现相应事件的响当当应。
程序的内核采用栈来处理,从而不仅可以处理表达式,而且可以按优先级来计算。同时还可以将Sin、Cos、Tan、平方、倒数、开方等操作与表达式结合进行运算,在算符优先级的比较方面,本程序抛弃了传统的建立一个二维数组的方式来查询比较算符优先级,而是设一个ENUM类型的变量,将优先级别小的操作符放在前面,优先级别大的操作符放在后面,如:privateenumOperator{OpNone,OpLeft,OpAdd,OpSub,OpMul,OpDiv,OpRight},分别代表等号、左括号、加、减、乘、除、右括号。比较优先级时只要通过比较Operator成员的ordinal方法反回值就可以了,如:this.m_Operator.ordinal()=this.o_Stack.peek().ordinal()。
2.2源文件说明
CalcDemo.java:主类
CalcFrame.java:程序界面类
CalcFunc.java:程序运算类,实现数值的输入显示和计算
CalcMenu.java:程序菜单类
2.3相关函数和变量说明
CalcFunc.java
publicintm_Left=0;左括号与右括号相差数
publicintm_Bits=0;小数点后位数
publicdoublem_Operand=0;当前操作数
publicdoublem_Accum=0;计算结果
publicbooleanm_Operable=false;决定当前是显示当前操作数还是运算结果
publicbooleanm_Dot=false;是否已经输入小数点
publicStringStr;输出框显示字符串
StackDoublem_Stack=null;操作数栈
StackOperatoro_Stack=null;操作符栈
privateenumOperator{OpNone,OpLeft,OpAdd,OpSub,OpMul,OpDiv,OpRight};自定义操作符类型
publicOperatorm_Operator=Operator.OpNone;操作符的实例
2.4详细设计
双击计算器根目录calc.exe执行应用程序,运行界面如下所示:
数值输入和显示
程序中数据的输入都是由ClacFunc.java中的input函数完成的。函数的代码如下:
publicvoidInput(Stringstr)
{
if(str.equals(.))
{
this.m_Dot=true;
this.m_Operable=true;
return;
}
if(str.equals(+))
{
this.m_Operable=false;
this.m_Operator=Operator.OpAdd;
Run();
return;
}
if(str.equals(-))
{
this
文档评论(0)