....................................23
附录1:主界面设计:..........................................................................................................28
Ⅰ
一、综合训练目的与要求
1.巩固和加深对课堂所学知识的理解与应用;2.
学习掌握一般的
软件的设计方法和查阅、运用资料的能力;3.掌握JAVA
程序设计语言,面向对象的软件设计思想、方法。
二、综合训练任务
1.设计一个简易的计算器;功能要求:能实现基本的加、减、乘、除运算,以及表达式计算(加减乘除括号负号);二、八、十、十六进制间的相互转化,带符号的左移右移;逻辑与或非异或的运算;其他功能:开方、求倒数、化百分数、求平方、求立方、求x的y次方、求阶乘、取余、取整(取小数点之前的)、求
常用对数、求三角函数;界面简洁适用。2.设计任务要完成设计、编码、测试等过程,给出设计思路、主要的代码及其说明。3.整个过程要体现面向对象的思想。
三、总体设计
开始
主界面
输入
运算数据
运算符号
结果输出
继续
简易计算器总设计图图1
1
计算器
表达式计算
进制间相互转换
其他基本功能
左右移位
与或非异或运算
求倒数
化百分数
取余、取整
平方、立方、开方
求阶乘
求对数、求指数
求三角函数
功能结构图图2
主界面设计图(见附录1)
用户点击按钮或键盘输入
触发事件
文本框接收
表达式不合法时提醒
调用计算函数
文本框显示结果
运算流程图图3
2
获取合法表达式,计算开始Post第二个数组
将字符串表达式,正确拆分放入input数组,遍历input数组
判断是运算符还是数值
数值直接放入第二个数组
左括号直接入栈
运算符右括号来了,while循环判断,如果栈顶不是左括号,将栈顶元素出栈放入第二个数组;如果栈顶是左括号了,直接将其出栈
如果是+-*/
Stack栈
判断栈是否空
采用while循环,如果栈不空,且栈顶元素优先级高于当前数组元素中对应运算符号的优先级,同时栈顶不是左括号,则将栈顶元素出栈放入第二个数组中
最后如果栈中还有元素,将其出栈放入第二个数组,然后将栈清空
如果栈空,则将input[i]元素入栈
Post第二个数组
最后遍历第二个数组,如果是数字,直接入栈,遇到运算符号,出栈两个数,用第二次出来的作为第一操作数,先出来的作为第二操作数,运算完成后入栈,继续循环
Stack栈(被清空的)
最后返回运算结果表达式运算过程图4
3
四、详细设计说明
(一)界面设计:一界面设计界面设计:
1.先将窗体分为两大块,添加菜单栏,在菜单栏中添加菜单,在菜单中添加菜单项;均以数组的形式添加;2.第二块添加文本显示框于窗体北部,令添加一个面板jp于窗体中心,将这个面板布局为边界布局管理器,分为上下两部分,上部分jpup添加到该面板北部,下部分jpdown添加到jp面板中心;3.将jpup面板布局为一行两列的网格布局管理器,在左边添加面板jp1,在jp1分别为四种进制,用来控制进制转换。右边添加面板jp2,面板中放四个按钮,jp2面板中放七个按钮,分别为三个控制角度弧度梯度转换的,四字、双字、单字、字节按钮,控制输入的二进制位数;4.将jpdown面板布局为一行两列的网格布局管理器。将jp3面板和jp4面板分别添加进去。jp3和jp4面板均设为边界布局管理器。5.将jp5面板和jp6面板分别加入jp3面板的北部和中部;jp5面板中放两个复选框和两个文本框(做填充效果,不可编辑);6.将jp6面板布局为五行五列的网格布局管理器,以数组的方式添加25个按钮jb1[i]=newJButton(s1[i]);7.将jp7和jp8分别添加到jp4面板的北部和中部,jp7面板里添加四个按钮,第一个是用来做填充效果的按钮,其余三个分别是(Back)退格、(CE)清除、(C)清除。8.将jp8面板布局为五行六列的网格布局管理器,,以