Java课程设计——基于Android的计算器实现
1、基本要求
功能:完成一个基本的计算器程序。界面可以是GUI方式,也可以是字符形式的命令行方式。能实现:加、减、乘、除、乘方(使用符号^)及括号的运算。运行对象是整数(能实现GUI界面的且带小数点的实数运算可以晋升为良好级别。)
2、系统需求分析
Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序了,而不再是以前只能用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
计算器通过算法实行简单的数学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。基于Android的计算器的设计,系统既有良好的界面、必要的交互信息,从而达到简约美观的效果。使用人员能快捷简单地进行操作,即可单击按钮进行操作,即时准确地获得需要的计算结果,充分降低了数学计算的难度,从而节约了时间。
3、总体设计
3.1 程序功能概要设计
根据需求,符合用户的实际要求,系统应实现以下功能:友好的界面、方便使用;具有基本的加、减、乘、除以及乘方功能,支持小括号更改优先级,能够判断用户输入运算数是否正确,支持小数运算和清除功能
3.2 程序系统结构
程序基于Android技术开发,除总体模块外,主要分为输入模块、显示模块以及运算模块三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能,具体地说,总体模块的作用主要是生成应用程序的主类,控制应用程序的周期。
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机动作。同时提供较为直观的键盘图形用户界面。
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时负责显示一些其他的信息。
计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、乘方等各种功能,记忆数据的相关功能、优先级判定的功能和清零的功能。
3.3 算法设计
输入包含+、-、×、÷、圆括号和实数组成的中缀算术表达式,以 ‘@’ 作为表达式的结束符,计算表达式的运算结果返回。
中缀表达式求值算法
首先必须设置两个栈:一个栈存放操作符,记作OPTR;另一个栈存放操作数,记作OPND。
初始时,操作数栈为空,操作符栈中有一个元素 ‘@’ 。在进行表达式求值时,从左到右扫描,依次读入表达式中的每个字符,直至表达式结束。
若读到的是操作数,则一律进入操作数栈,并读入下一个字符(若要处理实数,需创建一个方法进行处理,将读取到的实数入栈)。
若读到的是操作符c,则应用操作符栈的栈顶元素pre_op与之进行比较,会出现以下3种情况:
① 若pre_op < c,则将c入栈,读入下一个字符。
② 若pre_op = c,则将pre_op出栈,并读入下一个字符。
③ 若pre_op > c,则将pre_op出栈,并在操作数栈中退栈2次,依次得到操作数b、a(注意操作数次序)。然后进行a pre_op b运算,并将运算的结果压入操作数栈中。
扫描完毕时,操作数栈中只有一个元素,即为运算的结果。
若输入表达式违法,则返回 “Error!” 结果。
4、代码实现
4.1 Calculator类
1 | package com.example.calculator; |
4.2 activity_main.xml布局
1 |
|
4.3 MainActivity类
1 | package com.example.calculator; |
5、实现效果
更多请联系QQ:1277565476