基于安卓开发的计算器
课程设计报告
Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT
大庆师范学院《ANDROID应用设计》
课程设计报告
题目:简易计算器
专业班级:计算机科学与技术一班
设计者: \\\\\\\\\\\\\\\\\\\\\\\\\\\\
指导老师: P’P’P’P’
设计时间:2016-2017(1)
报告完成日期 2016 年12月30日
1 设计任务及要求
设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,以及清零操作。
本人学习Android有近半年的时间。
由于不同的Android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置。
Drawable-hdpi中放置分辨率最高的图标,drawable--ldpi中放置分辨率中等的图标,drawable-mdpi中放置在分辨率最低的图标。
界面设计应该就尽量简洁而美观,应该具有良好的交互性。
在整个过程中,首先应该对输入进行容错处理,这样有利于提高用户体验。
对于用户的按键输入,
需要及时的现实在第一个EditView中。
用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。
容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。
在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记,在本文中使用了栈,对这些数据进行了存储。
2设计原理及总体框图
将表达式转为字符串类进行存储。
将表达式的字符串进行处理,将数字和运算符分别存放在两个栈中(也可以使用队列,理论上使用队列更为合理,在这我使用栈来实现)。
由于栈是后进先出的,所以先将两个栈进行逆序。
设计方法来处理两个栈从而得到相应的计算结果。
原理:将操作符设计优先级,乘除优先级设置为2,加减优先级设置为1。
一、从操作符栈中弹出两个操作符,假设为symbol1和symbol2,比较两个操作付的优先级,如果symbol1的优先级大于等于symbol2的则执行二,否则执行三。
二、从数字栈中弹出两个数字,计算这两个数字在操作符symbol1下的运算结果,结束后将结果压入数字栈,将symbol2压入操作符栈,最后返回一。
三、从数字栈中弹出三个数字,计算后两个数字在操作符symbol2下的运算结果,结束后将运算结果压入栈,将剩下的第一个数字压入栈,将操作符symbol1压入站,最后返回一。
结构框图如下所示:
图1:简易计算器整体结构框图
小组分工:组长:ukuk责程序算法查找及编写,仿真环境调试及运行;
组员:ukuk负责定义按键代码及其他代码查找,编写;
uk负责材料汇总、文档报告编写、及相关书籍资料查询。
3 详细设计
部分源代码:
private Button bt_1;
private Button bt_2;
private Button bt_3;
private Button bt_4;
private Button bt_5;
private Button bt_6;
private Button bt_7;
private Button bt_8;
private Button bt_9;
private Button bt_0;
private Button bt_add;
private Button bt_sub; />
设计按键的大小
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
计算器执行各项运算功能语句(小数点,加减乘除,清零...)
(new OnClickListener()
{
@Override
public void onClick(View v)
{
str_oper = "+";
if (!() == ""))
{
num1 += ());
str_display = new StringBuffer("");
}
if (!(str_result == null))
{
num1 = (str_result);
str_result = null;
}
(num1));
flag = true;
}
});
计算器进行加法运算的子程序代码如上
,
"除数不能为0!", .show();
此段注意除数不能为0!!!
, "被乘数或乘数不能为空!", .show();
4 测试与分析
测试过程:
安装相关软件,JDK安装配置
安装Java的JDK至默认路径 D:\Program Files\Java\,一般需要300M的空间,硬盘空间充足的话,所有组件全部安装。
然后完成环境变量的配置。
配置Eclipse开发环境,设置代码字体大小,调整为12(或14),显示行号,代码格式化,改变一行能容纳的最大字符数,设置智能提示,运行完成路径设置后,选择菜单Help—Install New Software...
图2:Install工作界面
配置SDK路径:
(1)安装java开发的JDK到本机,配置好环境变量,具体操作见前文步骤1-6。
(2)解压Android SDK和Eclipse,配置Eclipse的SDK路径。
系统默认的是在线安装新的SDK组件,我们不可能在没有网络连接的情形下升级应用组件!所以选取Use existing SDKs,然后点击下一步完成经一部的配置。
完成配置到Windows里找到Android SDK Manager运行,检测是否可以正常启动。
图3:配置完成的Eclipse
总结:需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径。
就可以使用了。
至此Android开发环境就基本搭建完成了。
总体看来其操作也与有网络环境操作雷同,需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径就可以使用了。
测试情况如下图:
图4:简易计算器的代码编译及运行
图5:eclipse环境下运行程序(计算器界面)
接下来演示实际算法:7+9(如图6、7、8)
图6 图7
图8
在实现此过程中,输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应功能的按键,分别是清零,0,1,2,3,4,5,6,7,8,9,+,-,*,/,.=,返回。
显示模块主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。
整体上大致分为这两个模块,其中存在的不足,我们日后会努力改进,进一步提升计算器的性能,使其功能更加完整,丰富!
5 参考文献
[1] 郭克华.JavaME移动开发实例精讲.北京:清华大学出版社,
[2] 李新力.J2ME实用教程.北京:人民邮电出版社,
[3] 孙更新,宾晟,孙海轮.Java ME手机应用开发大全.北京:科学出版社,。