android计算器设计文档.

合集下载

Android平台上的计算器设计

Android平台上的计算器设计

武汉工程大学计算机科学与工程学院综合设计报告设计名称:信息系统综合设计设计题目:Android平台上的计算器设计学生学号:专业班级:学生姓名:学生成绩:指导教师(职称):吴静(讲师)课题工作时间:2012年3月19日至2012年5月25日说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。

2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。

3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。

4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。

答辩小组成员应由2人及以上教师组成。

5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。

6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。

7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。

成绩评定表学生姓名:学号:班级:答辩记录表指导教师评语目录摘要........................................................................................................................................................ - 1 -ABSTRACT ............................................................................................................................................... - 2 -第一章引言.............................................................................................................................................. - 3 -1.1课题背景及意义 (3)1.1.1课题背景................................................................................................................................ - 3 -1.1.2课题相关的技术知识.............................................................................................................. - 4 -1.2智能手机平台系统 (7)1.3课题来源 (8)第二章系统分析...................................................................................................................................... - 9 -2.1系统可行性分析 (9)2.2系统的开发语言的选择 (9)2.3系统的开发工具简介 (9)2.3.1 JDK .......................................................................................................................................... - 9 -2.3.2 WTK ....................................................................................................................................... - 10 -2.3.3 Eclipse .................................................................................................................................... - 10 -2.3.4 EclipseMe ................................................................................................................................- 11 -第三章基于ANDROID平台计算器相关技术概述............................................................................ - 12 -3.1A NDROID手机平台 (12)3.1.1Android起源及优势 .............................................................................................................. - 12 -3.1.2Android体系结构 .................................................................................................................. - 12 -3.1.3Android平台功能特征 .......................................................................................................... - 14 -3.2A NDROID SDK介绍 (15)3.3XML技术 (16)3.4JNI技术 (16)第四章基于ANDROID平台计算器设计............................................................................................ - 18 -4.1系统的总体设计 (18)4.2程序流程和系统功能设计 (18)4.2.1 程序流程设计....................................................................................................................... - 18 -4.2.2 系统功能设计....................................................................................................................... - 19 -4.3基于A NDROID平台系统具体设计 (20)4.3.1 总体模块详细设计............................................................................................................... - 20 -4.3.2 输入模块详细设计............................................................................................................... - 20 -4.3.3 显示模块详细设计............................................................................................................... - 21 -4.3.4 计算模块详细设计............................................................................................................... - 21 -第五章计算器系统实现........................................................................................................................ - 23 -5.1A NDROID应用程序构成 (23)5.2A NDROID应用系统文件结构 (23)5.3构建A NDROID应用程序用户界面 (25)5.3.1 Android应用程序界面组件.................................................................................................. - 25 -5.3.2 Android应用系统界面组件.................................................................................................. - 26 -5.3.3 Android用户界面的实现...................................................................................................... - 27 -5.4计算模块的实现 (30)武汉工程大学计算机科学与工程学院综合设计报告5.5计算器演示 (33)总结...................................................................................................................................................... - 35 -致谢...................................................................................................................................................... - 36 -参考文献.................................................................................................................................................. - 37 -附录.......................................................................................................................................................... - 38 -摘要目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。

android开发——简易计算器的设计报告

android开发——简易计算器的设计报告

简易计算机的设计摘要:Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。

Android的功能十分强大,成为当今软件行业的一股新兴力量。

Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行。

一、实训目的1、了解Android系统,学会Android开发环境的搭建。

2、了解E clipse,学会用E clipse和Java 开发一个Android程序。

3、进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,能够熟练的应用面向对象的思想和设计方法解决实际问题的能力。

4、巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。

二、实训任务1、Activity的相关知识简单理解Activity 代表一个用户所能看到的屏幕,Activity 主要是处理一个应用的整体性工作。

Activity是最基本的Android 应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。

每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应。

大多数的应用是由多个屏幕显示组成,因而要用到多个Activity。

(1)Activity的相关方法及相关函数:void onCreate(Bundle)首次启动时调用,接受参数:Null or savedInstanceState(保存的以前某些状态信息);void onStart() 说明了将要显示给用户的活动;void onRestart()将处于停止状态的活动重新显示给用户;void onResume()用户可以开始与活动进行交互时调用。

《Android编程技术》---基于Android的简易的计算器的设计与实现

《Android编程技术》---基于Android的简易的计算器的设计与实现
clear_flag=false;
etinput="";
etInput.setText("");
}
etInput.setText(etinput+((Button)v).getText());//点击数字和小数点直接显示内容
break;
caseR.id.btJia:
caseR.id.btJian:
caseR.id.btMul:
btMul.setOnClickListener(this);
btDivide.setOnClickListener(this);
btEqu.setOnClickListener(this);
btClear.setOnClickListener(this);
btDel.setOnClickListener(this);
cleБайду номын сангаасr_flag=false;
return;
}
clear_flag=true;
doubleresult=0;
String s1=exp.substring(0,exp.indexOf(" "));//运算符前面的字符串
String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);//运算符,是根据运算符前边的空格计算的
privateButtonbtJian;
privateButtonbtMul;
privateButtonbtDivide;
privateButtonbtEqu;
privateButtonbtClear;

安卓Android 编写一个简单的计算器

安卓Android 编写一个简单的计算器

<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:id="@+id/LayoutMain"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><EditTextandroid:id="@+id/inputString"android:layout_width="fill_parent"android:layout_height="60dp"android:layout_weight="1"android:ems="10"android:inputType="none" ><requestFocus /></EditText><LinearLayoutandroid:id="@+id/LayoutButtons1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/clear"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/clear" /><Buttonandroid:id="@+id/delete"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/delete" /><Buttonandroid:id="@+id/divided"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/divided" /><Buttonandroid:id="@+id/multi"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/multi" /></LinearLayout><LinearLayoutandroid:id="@+id/LayoutButtons2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/seven"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/seven" /><Buttonandroid:id="@+id/eight"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/eight" /><Buttonandroid:id="@+id/nine"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/nine" /><Buttonandroid:id="@+id/minus"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/minus" /></LinearLayout><LinearLayoutandroid:id="@+id/LayoutButtons3"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/four"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/four" /><Buttonandroid:id="@+id/five"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/five" /><Buttonandroid:id="@+id/six"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/six" /><Buttonandroid:id="@+id/plus"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/plus" /></LinearLayout><LinearLayoutandroid:id="@+id/LayoutButtons4"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="2"android:orientation="horizontal" ><LinearLayoutandroid:id="@+id/LayoutButtons41"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="3"android:orientation="vertical" ><LinearLayoutandroid:id="@+id/LayoutButtons411"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/one"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/one" /><Buttonandroid:id="@+id/two"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/two" /><Buttonandroid:id="@+id/three"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/three" /></LinearLayout><LinearLayoutandroid:id="@+id/LayoutButtons412"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/doublezero"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/double_zero" /><Buttonandroid:id="@+id/zero"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/zero" /><Buttonandroid:id="@+id/point"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/point" /></LinearLayout></LinearLayout><LinearLayoutandroid:id="@+id/LayoutButtons42"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"android:orientation="horizontal" ><Buttonandroid:id="@+id/equal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:text="@string/equal" /></LinearLayout></LinearLayout></LinearLayout>package com.nullpointer.calculator.buttons;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import mon.constants.AppConstants; import mon.utils.StringUtils;/***** @author Null Pointer**/public class FunctionButton extends CalculatorButton {/***** @param originalText** @param buttonValue** @return*/@Overridepublic String getResult(String originalText, String buttonValue) { if (AppConstants.CLEAR_STRING.equals(buttonValue)) {return AppConstants.EMPTY_STRING;} else if (AppConstants.DELETE_STRING.equals(buttonValue)) { if (StringUtils.isNotEmpty(originalText)) {return originalText.substring(0, originalText.length() - 1);} else {return AppConstants.EMPTY_STRING;}} else if (AppConstants.EQUAL_STRING.equals(buttonValue)) { return eval(originalText);} else {return AppConstants.EMPTY_STRING;}}/***** @param expression** @return*/private String eval(String expression) {List<String> items = new ArrayList<String>(Arrays.asList(expression .split("\\+|\\-|×|÷")));char[] operators = expression.replaceAll("[^\\+\\-×÷]",AppConstants.EMPTY_STRING).toCharArray();if (items.size() != operators.length + 1) {return AppConstants.ERROR_MESSAGE;}double result = 0d;for (int i = operators.length - 1; i >= 0; i--) {switch (operators[i]) {case AppConstants.OPERATOR_MULTI:result = this.multi(Double.valueOf(items.get(i)),Double.valueOf(items.get(i + 1)));items.remove(i + 1);items.set(i, String.valueOf(result));break;case AppConstants.OPERATOR_DIVIDED:result = this.divided(Double.valueOf(items.get(i)),Double.valueOf(items.get(i + 1)));items.remove(i + 1);items.set(i, String.valueOf(result));break;default:break;}}if (items.size() == 1) {return items.get(0);}operators = expression.replaceAll("[^\\+\\-]",AppConstants.EMPTY_STRING).toCharArray(); for (int i = operators.length - 1; i >= 0; i--) {switch (operators[i]) {case AppConstants.OPERATOR_PLUS:result = this.plus(Double.valueOf(items.get(i)),Double.valueOf(items.get(i + 1)));items.remove(i + 1);items.set(i, String.valueOf(result));break;case AppConstants.OPERATOR_MINUS:result = this.minus(Double.valueOf(items.get(i)),Double.valueOf(items.get(i + 1)));items.remove(i + 1);items.set(i, String.valueOf(result));break;default:break;}}if (items.size() == 1) {return items.get(0);} else {return AppConstants.ERROR_MESSAGE;}}private double plus(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doubleValue();}private double minus(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doubleValue();}private double multi(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doubleValue();}private double divided(double v1, double v2) {BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2, 10, BigDecimal.ROUND_HALF_UP).doubleValue();}}需要完整的源代码私信我或者发我邮箱*****************明情况(注:下载才发!)。

Android计算器设计报告

Android计算器设计报告
mathNow += "0";
}
} else if (!isNum(mathNow.charAt(mathNow.length() - 2)) && mathNow.charAt(mathNow.length() - 1) == '0') {
mathNow += ""; //3.属于2.1的一般情况,在math中间出现比如:×0 +0
//获取界面切换的tvPast的内容
Intent intent = this.getIntent();
String tvPastContent = intent.getStringExtra("main");
//如果当前的界面是启动界面,不是从MainActivity切换来的,上面的mathPast就为null了,要处理这种异常
if (tvPastContent == null) {
tvPast.setText("");
} else {
String[] maths = tvPastContent.split("\n");
int i;
for (i = 0; i < maths.length - 1; i++) {
tvPast.append(maths[i] + "\n");
//获取界面切换的tvPast的内容
Intent intent = this.getIntent();
String tvPastContent = intent.getStringExtra("main");
//如果当前的界面是启动界面,不是从MainActivity切换来的,上面的mathPast就为null了,要处理这种异常

安卓计算器设计报告

安卓计算器设计报告

数学与信息技术学院嵌入式系统课程设计报告设计题目:数字计算器的设计与实现班级:学号:姓名:指导教师:完成日期:成绩:目录1 绪论 (1)1.2 研究的范围及达到的技术要求 (1)1.3 解决的主要问题 (1)1.4 设计的指导思想 (1)2 需求分析 (2)2.1 设计需求分析 (2)2.2 系统目标 (2)2.3 主体功能 (2)2.4 开发环境 (2)3 总体设计 (3)3.1 程序流程和系统功能设计 (3)3.1.1 程序流程设计 (3)3.3 程序设计的基本思路 (4)3.3.2 总体布局 (5)3.3.3 按钮事件处理 (6)4 详细设计 (6)4.1 输入模块详细设计 (6)4.2 显示模块详细设计 (7)4.3 计算模块详细设计 (7)5 编码 (8)5.1 用户界面代码设计 (8)5.1.1 activity_main.xml布局文件 (8)5.1.2 MainActivity.java主要功能文件 (9)6 结论 (12)6.1 实现的功能 (12)6.2 主要的问题 (12)数字计算器的设计与实验1 绪论1.1 设计的目的及意义(1)本课程设计的目的是通过开发一个数字计算机器,了解嵌入式产品开发的主要步骤,包括需求分析、系统结构设计、图形界面设计、驱动设计、功能优化、系统测试等,培养独立完成比较复杂的实际设计的能力。

(2)本课程设计主要是实现Android计算器,用于Android系统的用户的使用,本计算器可以实现加、减、乘、除、开方、平方等运算功能,方便了用户对于一些简单数据的计算,节省了用户的时间。

1.2 研究的范围及达到的技术要求本课程设计主要研究计算器的实现方法,应达到计算器界面友好,方便使用,具有基本的加、减、乘、除功能,支持小数运算,具有退格功能,能够删除最后一个输入,具有清除功能,即“C”。

1.3解决的主要问题随着信息时代的步伐加快,日常生活的开支、大额数字、多倍小数等的计算都需要计算器的帮助,处理数字的开方、平方同样也离不开计算器。

基于安卓的计算器的设计与实现

基于安卓的计算器的设计与实现在设计和实现基于安卓的计算器时,需要考虑以下几个重要的方面:用户界面设计、计算逻辑实现和功能扩展。

首先,用户界面设计是一个计算器的重要组成部分。

一个简洁直观、易于使用的界面可以提供良好的用户体验。

可以考虑使用标准计算器的布局,包括数字键盘、运算符按钮和显示结果的文本框。

此外,还可以添加一些额外的功能,比如一键清除按钮、括号按钮和科学计算模式切换按钮等。

考虑到不同屏幕尺寸和定制化需求,应该使用相对布局或者网格布局来放置UI元素。

其次,计算逻辑实现是计算器的核心部分。

需要支持基本的四则运算,包括加法、减法、乘法和除法。

为了实现连续运算和操作优先级,可以使用栈或者逆波兰表示法。

在用户输入数字和运算符时,应该及时更新显示结果的文本框。

另外,还应该考虑异常情况的处理,比如除数为零的情况。

最后,功能扩展是一个好的设计的关键。

除了基本的四则运算,还可以考虑添加一些其他功能,比如开方、求平方、取余、倒数、阶乘等。

另外,还可以添加一个历史记录功能,记录用户的计算过程和结果,方便用户查看和回顾。

此外,还可以添加一个单位转换功能,支持常见的长度、重量、温度、时间、速度等单位之间的转换。

在实际开发中,可以使用Android Studio作为开发工具。

Android Studio提供了丰富的界面设计工具和模拟器,可以方便地进行界面布局和调试。

可以使用Java语言进行开发,使用Android提供的API来处理用户输入和展示结果。

在代码实现中,可以使用按钮点击事件来处理用户输入。

当用户点击数字按钮时,将所点击的数字添加到一个临时变量中,当用户点击运算符按钮时,将临时变量中的数字和运算符添加到运算式中,并清空临时变量。

当用户点击等号按钮时,根据运算式中的数字和运算符进行实际的计算,并将结果显示在结果文本框中。

当用户点击清空按钮时,将运算式和结果文本框清空。

除了基本逻辑实现外,还可以进行一些优化和改进。

android开发计算器课程设计

Android应用程序开发实验报告学号: 131006105学生姓名:冯会会指导教师: 齐兵辉提交时间: 2015、11、10目录第一章系统分析与设计..................................................................................... 错误!未定义书签。

1、1系统得可行性分析ﻩ错误!未定义书签。

1、2系统得需求分析ﻩ错误!未定义书签。

第二章系统详细设计 ........................................................................................ 错误!未定义书签。

2、1ACTIVITY得详细设计ﻩ错误!未定义书签。

2、2 XML文件得详细设计.................................................................................... 错误!未定义书签。

第三章测试运行及总结..................................................................................... 错误!未定义书签。

3、1界面截图 ................................................................................................... 错误!未定义书签。

3、2运行界面截图ﻩ错误!未定义书签。

3、3运行结果截图............................................................................................ 错误!未定义书签。

3、4总结ﻩ错误!未定义书签。

计算器安卓设计定稿版

计算器安卓设计精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】题目 ANDROID开发课程名称简单计算器院部名称计算机工程学院专业计算机科学与技术班级15计算机科学与技术学生姓名周江成学号课程设计地点 1416课程设计学时指导教师叶崧金陵科技学院教务处制课程设计报告原则上要求学生手写,要求书写工整。

若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。

纸张一律采用A4的纸张。

课程设计报告书写说明课程设计报告应包含以下七部分内容:1、摘要?2、目录?3、前言/引言4.正文5. 结论6. 参考文献7. 附录,每部分的书写要求参见具体条目要求。

填写注意事项(1)准确说明,层次清晰。

(2)尽量采用专用术语来说明事物。

(3)外文、符号、公式要准确,应使用统一规定的名词和符号。

(4)应独立完成课程设计报告的书写,严禁抄袭、复印,一经发现,以零分论处。

课程设计报告批改说明课程设计报告的批改要及时、认真、仔细,一律用红色笔批改。

课程设计报告的批改成绩采用五级计分制或百分制,具体评分标准由各院部自行制定。

课程设计报告装订要求报告批改完毕后,任课老师应将课程设计报告以自然班为单位、按学号升序排列,并附上一份该课程设计的教学大纲。

简单计算器一、摘要(所进行设计工作的主旨、缘起、目的,设计工作的主要内容、过程,采用的方法及取得的成果。

关键字(Key Words): 一般3~5个,最能代表报告内容特征,或在报告起关键作用,最能说明问题的词组)目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。

手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多.我在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。

Android简单计算器

Android简单计算器---word文档说明学校:专业:计算机科学与技术学号:姓名:一.界面布局设计界面效果图:整个布局采用AbsoluteLayout绝对布局,考虑到线性布局+表格布局的不美观,相对布局的复杂,综合考虑采用了绝对布局。

绝对布局的缺点是可移植行太差,在不同的机器上可能布局就不一样了。

优点就是简单美观。

整个界面包括了一个TextView控件,一个EditText控件以及22个Button 按钮。

其中,TextView用于显示这个程序的名称。

EditText 用于显示数字和计算结果。

22个按钮分别对应计算器常用的按键,包括数字键和运算符号键。

每一个控件用x和y的坐标方式通过尝试找到合适的位置。

例如:EditText 控件的位置为android:layout_x="15dip"android:layout_y="60dip"通过改变这种而为坐标就可以把每一个控件放到你认为合适的位置。

二.后台计算处理设计首先在我的Activity中定义每个控件的对象,然后用findViewById方法将我在main.xml中定义的每个控件通过id将它们连接起来。

然后为每个控件创建监听者,然后用大量的if else语句编写每个按键按下后的动作。

用equalclick 来辨别是否按下了运算符号。

例如:当我按下数字键1的时候代码如下if(v.equals(dig1)){String temp = display.getText().toString();if(equalclick){temp = "1";equalclick = false;}else if(display.length()!=0){double te;if(!temp.equals("-"))te = Double.parseDouble(temp);elsete = 1;if(te == 0&&(temp.charAt(temp.length()-1)!='.')){if(!temp.contains("."))temp="1";elsetemp=temp+"1";}elsetemp=temp+"1";}elsetemp=temp+"1";display.setText(temp);}加减乘除运算也是通过if else语句将他们分别对应A,S,D,P最后按等号时进行计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告课程名称Android或JA V A综合实训实验名称电子计算器专业计算机科学与技术班级1002班学号201003010234姓名吴超指导教师陈华光2013年12 月18 日目录一.引言 1二.需求分析 11.状态定义 12.计算器功能 2三.总体设计 51.软件设计结构图 52.程序设计流程图 6四.模板设计 71.计算模块详细设计 72.用户模型设计 73.计算模板设计的实现 84.计算器模板设计 9五.计算器演示 10六.小结 13 七.附录 14一:引言目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。

手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多.我们在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。

二:需求分析(一)状态定义:能满足基本的数学运算。

具体要求如下:1,刚启动计算器时的状态:开始计算按键开始键"ON"2.清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。

2.一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。

3.运算结果:键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。

在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。

4.一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。

5.操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。

6.操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。

7.错误:执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。

比如6/0后计算的结果是“0不能做除数”。

(二)本计算器具有以下功能:用表说明三:总体设计(一)软件设计结构图本计算器主要可以实现基本的加减乘运算和其他的一些运算。

包括:加法运算,减法运算,乘法运算,除法运算。

其他运算包括开方运算,*2运算,正负运算,清除运算等。

(二)程序流程设计图运行程序后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。

四.模板设计1.计算模块详细设计系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。

没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。

所以计算模块的设计也是本次系统设计中的重点。

系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。

同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。

这部分主要是对输入进行的逻辑判断,基本会通过if else来实现逻辑判断。

2.用户界面设计界面设计应该尽量简洁而美观,应该具有良好的交互性。

当然,我们每个人可以根据自己的喜好来进行设计,根据我个人的喜好,我最终设计出来的计算器界面如图4-7所示:从上图中,我们可以很直观的看到,从上到下分别是:显示模块、输入模块、计算模块。

(1)输入模块,主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,具体的处理办法会在相关的地方进行说明。

在本项目中,在触屏上提供了各种功能的按键,分别是C,0,1,2,3,4,5,6,7,8,9,+,-,×,÷,=,delete, clear,+/-,√x,x²。

(2)显示模块,主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其她信息。

3.计算模块设计的实现计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,记忆相关功能的完成,加、减、乘、除等各种计算功能的完成,运算符的替换,初始化系统等等。

计算器的特殊功能键列表5-1按键监听同时监听了触屏上的按键和键盘上的按键,其中按键的监听使用了的松开为判断的标准,即用户松开按键的时候程序才会读取数据。

计算模块是整个系统的主体部分。

4.计算器模板设计布局效果图:五.计算器演示6+3=?(进行运算时自动把结果转换成double 型)6-2=?6*2=?6/2=?9的平方?16开方?这次项目android计算器项目设计是在eclipse平台下设计,到现在为止,该系统的功能基本符合了普通计算器的要求,整个系统界面简单明了,使用起来十分方便,具有普通计算器的基本功能,同时拓展了一些普通计算器上没有的部分科学计算功能。

在整个开发过程中,从需求分析到总体架构的构思,到最后代码的编写我投入了大量的时间和精力,对系统中的每个功能都进行了反复的调试,修改。

因为这是我是第一次系统性的进行软件的开发,不论是在知识层面、开发平台的使用层面还是经验方面都有着很大的欠缺和不足,因此本软件难免会有一些功能不完善、界面不美观等一些不尽如人意的地方,但是再短短一个星期的时间内,我已经进行了很大的努力。

通过这个android计算器项目设计,我不经巩固了我们在书本上学到和平时老师传授的知识,而且还学到了许多书本上学不到的知识,并运用了网络这个平台查询一些不明白的知识点。

指导老师在我软件代码编写和后期软件调试期间,给我很大的帮助。

要谢谢各位帮过我的老师和同学。

这次的实验让我对我的学过的知识有了深一步的了解。

1:src\ymq\demo03目录package ymq.demo03;import android.app.Activity;import android.os.Bundle;import android.view.*;import android.widget.*;public class demo03 extends Activity {/** Called when the activity is first created. */String str="皖西学院";EditText et;int c=0,flag=0;double b=0.0,g=0.0,f=0.0;View vi;//计算方法public double calculater(){switch(c){case 0:f=g;break;case 1:f=b+g;break;case 2:f=b-g;break;case 3:f=b*g;break;case 4:f=b/g;break;}b=f;c=0;return f;}public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.main);//获得按键final Button number[]=new Button[10];final Button fuhao[]=new Button[11];fuhao[0]=(Button)findViewById(R.id.button01);fuhao[1]=(Button)findViewById(R.id.button02);fuhao[2]=(Button)findViewById(R.id.button03);fuhao[3]=(Button)findViewById(R.id.button04);fuhao[4]=(Button)findViewById(R.id.button05);fuhao[5]=(Button)findViewById(R.id.button06);fuhao[6]=(Button)findViewById(R.id.buttonce);fuhao[7]=(Button)findViewById(R.id.buttonc);fuhao[8]=(Button)findViewById(R.id.zheng);fuhao[9]=(Button)findViewById(R.id.kaifang);fuhao[10]=(Button)findViewById(R.id.pingfang);number[0]=(Button)findViewById(R.id.button0);number[1]=(Button)findViewById(R.id.button1);number[2]=(Button)findViewById(R.id.button2);number[3]=(Button)findViewById(R.id.button3);number[4]=(Button)findViewById(R.id.button4);number[5]=(Button)findViewById(R.id.button5);number[6]=(Button)findViewById(R.id.button6);number[7]=(Button)findViewById(R.id.button7);number[8]=(Button)findViewById(R.id.button8);number[9]=(Button)findViewById(R.id.button9);et=(EditText) findViewById(R.id.textView1);et.setText(str);fuhao[6].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubstr="";et.setText(str);vi=v;}});fuhao[7].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubb=0.0;c=0;g=0.0;str="";et.setText(str);}});fuhao[8].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(vi!=fuhao[5]&&str!=""){char ch=str.charAt(0);if(ch=='-')str=str.replace("-","");elsestr="-"+str;et.setText(str);}}});fuhao[9].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){double a=Double.parseDouble(str);str=Math.sqrt(a)+"";et.setText(str);}}});fuhao[10].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){double a=Double.parseDouble(str);str=""+a*a;et.setText(str);}}});//设定数字按键number[0].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=0;et.setText(str);flag=0;}else{char ch1[];ch1=str.toCharArray();if(!(ch1.length==1&&ch1[0]=='0')){str+=0;et.setText(str);}}vi=v;}});number[1].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=1;et.setText(str);flag=0;}else{str+=1;et.setText(str);}vi=v;}});number[2].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=2;et.setText(str);flag=0;}else{str+=2;et.setText(str);}vi=v;}});number[3].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=3;et.setText(str);flag=0;}else{str+=3;et.setText(str);}vi=v;}});number[4].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=4;et.setText(str);flag=0;}else{str+=4;et.setText(str);}vi=v;}});number[5].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=5;et.setText(str);flag=0;}else{str+=5;et.setText(str);}vi=v;}});number[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=6;et.setText(str);flag=0;}else{str+=6;et.setText(str);}vi=v;}});number[7].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=7;et.setText(str);flag=0;}else{str+=7;et.setText(str);}vi=v;}});number[8].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=8;et.setText(str);flag=0;}else{str+=8;et.setText(str);}vi=v;}});number[9].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(flag==1){str="";str+=9;et.setText(str);flag=0;}else{str+=9;et.setText(str);}vi=v;}});//设定符号键//加fuhao[0].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){if(vi==fuhao[0]||vi==fuhao[1]||vi==fuhao[2]||vi==fuhao[3]){ c=1;}else{g=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=1;flag=1;vi=v;}}}});//减fuhao[1].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){if(vi==fuhao[0]||vi==fuhao[1]||vi==fuhao[2]||vi==fuhao[3]){c=2;}else{g=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=2;flag=1;vi=v;}}}});//乘fuhao[2].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){if(vi==fuhao[0]||vi==fuhao[1]||vi==fuhao[2]||vi==fuhao[3]){ c=3;}else{g=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=3;flag=1;vi=v;}}}});//除fuhao[3].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(str!=""){if(vi==fuhao[0]||vi==fuhao[1]||vi==fuhao[2]||vi==fuhao[3]){c=4;}else{g=Double.parseDouble(str);calculater();str=""+f;et.setText(str);c=4;flag=1;vi=v;}}}});//等号fuhao[4].setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif(str!=""&&vi!=fuhao[0]&&vi!=fuhao[1]&&vi!=fuhao[2]&&vi!=fuhao[3]){g=Double.parseDouble(str);calculater();str=""+f;et.setText(str);flag=1;vi=v;}}});//小数点fuhao[5].setOnClickListener(new View.OnClickListener() { public void onClick(View v) {// TODO Auto-generated method stubif(str==""){str+=".";et.setText(str);}else{char ch1[];int x=0;ch1=str.toCharArray();for(int i=0;i<ch1.length;i++)if(ch1[i]=='.')x++;if(x==0){str+=".";et.setText(str);}}}});}}2:res\layout\main.xml 文件,代码如下:<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:background="#ff808080"xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:layout_gravity="center_vertical"android:id="@+id/zhengfu"><EditTextandroid:text="皖西计算器"android:id="@+id/textView1"android:textSize="25sp"android:textColor="#000000"android:layout_gravity="center"android:gravity="left"android:cursorVisible="false"android:editable = "false"android:layout_height="wrap_content"android:layout_width="fill_parent"android:layout_marginLeft="4dip"android:layout_marginRight="4dip"android:layout_marginTop="4dip"android:layout_weight="1.5"></EditText><TableLayoutandroid:id="@+id/tablelayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="4dip" android:layout_weight="10"><LinearLayoutandroid:id="@+id/linearlayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"><Buttonandroid:layout_width="50dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:id="@+id/buttonc"android:text="@string/shan"></Button><Buttonandroid:layout_width="50dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:id="@+id/buttonce"android:text="@string/shanchu"></Button></LinearLayout><TableRowandroid:id="@+id/row0"android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"><Buttonandroid:id="@+id/button1"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/one"android:textSize="25sp" /><Buttonandroid:id="@+id/button2"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/two"android:textSize="25sp" /><Buttonandroid:id="@+id/button3"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/three"android:textSize="25sp" /><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:text="@string/jia"android:id="@+id/button01"></Button></TableRow><TableRowandroid:id="@+id/row1"android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"><Buttonandroid:id="@+id/button4"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/fore"android:textSize="25sp" /><Buttonandroid:id="@+id/button5"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/five"android:textSize="25sp" /><Buttonandroid:id="@+id/button6"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/six"android:textSize="25sp" /><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:text="@string/jian"android:id="@+id/button02"></Button></TableRow><TableRowandroid:id="@+id/row2"android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"><Buttonandroid:id="@+id/button7"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/seven"android:textSize="25sp" /><Buttonandroid:id="@+id/button8"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/eight"android:textSize="25sp" /><Buttonandroid:id="@+id/button9"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/nine"android:textSize="25sp" /><Buttonandroid:id="@+id/button03"android:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:text="@string/cheng"android:textSize="25sp" /></TableRow><TableRowandroid:id="@+id/row3"android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:text="@string/zero"android:id="@+id/button0"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:id="@+id/button06"android:text="@string/dihao"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:text="@string/dengyu"android:id="@+id/button05"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp"android:text="@string/chu"android:id="@+id/button04"></Button></TableRow><LinearLayoutandroid:id="@+id/tableRow1"android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"android:layout_weight="1"><Buttonandroid:textSize="25sp"android:layout_height="fill_parent"android:layout_width="50dp"android:layout_weight="1"android:text="@string/zhengfu"android:id="@+id/zheng"></Button><Buttonandroid:id="@+id/pingfang"android:textSize="25sp"android:layout_height="fill_parent"android:layout_width="50dp"android:layout_weight="1"android:text="@string/ping"></Button><Buttonandroid:id="@+id/kaifang"android:textSize="25sp"android:layout_height="fill_parent"android:layout_width="50dp"android:layout_weight="1"android:text="@string/kai"></Button></LinearLayout></TableLayout></LinearLayout>3:res\values\strings.xml 文件,代码如下:<?xml version="1.0" encoding="utf-8"?><resources><string name="hello">Hello World, deom03!</string> <string name="app_name">简单计算器</string><string name="one">1</string><string name="two">2</string><string name="three">3</string><string name="fore">4</string><string name="five">5</string><string name="six">6</string><string name="seven">7</string><string name="eight">8</string><string name="nine">9</string><string name="zero">0</string><string name="jia">+</string><string name="jian">-</string><string name="cheng">*</string><string name="chu">/</string><string name="dengyu">=</string><string name="zhengfu">+/-</string><string name="dihao">.</string><string name="ping">x²</string><string name="kai">√x</string><string name="shanchu">delete</string><string name="shan">clear</string></resources>。

相关文档
最新文档