Android计算器设计报告
Android平台上的计算器设计
重庆邮电大学《移动计算》实验报告设计题目:Android平台上的计算器设计学生班级:专业姓名:学生学号:学生成绩:指导教师(职称):目录摘要........................................................................................................................................................ - 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 -附录............................................................................................................................... 错误!未定义书签。
安卓计算器开发实验报告
嵌入式WebOS应用开发实验报告实验名称:使用An droid Developer SDK开发应用程序专业:_________________________姓名:__________________________________班级:_______________________________学号:______________________________一、作品的运行环境及安卓SDK基础操作SDK An droid Developer 是一款在windows系统上运行的针对An droid应用开发的谷歌官方软件(需要JAVA环境支持)。
1、导入工程2、建立虚拟机在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB因为部分程序如果调用资源过大会导致虚拟机无法运行。
3、虚拟机界面二、作品介绍我的应用是一个计算器。
能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。
加应用图标 1.首先在我的桌面上添加你应 用的图标以及文字,双击图标后项中自行进行挑选;也可以添加自己的图片,只要将图片放到对应的文件夹之下在刷新就可 以,但不建议放分辨率 过高图片可能会出现超 出界面的等错误。
要在xml 界面中添加排版:xml 代码首末的 </AbsoluteLayout> 格式较为自由可以直接在界面中拖动图标位置以及修改大小,而其他layout 则更会自动排列, 各有优劣。
三、 编程以及运行调试(一)、在MyDesktop 主界面中添 fin^_ok,prig 世IF it launchiWipng32E img'O.png jdE im^il.png] 3Eimg?.pHg 血 imql.pngi 32E img4.png 血 im^S.pngi Tn? imgg.png JJL -mgT.pngj ..1. imy^.png..1. uiHiprxg就可以看见对应的代码, 可直接在代码中进行修改图片文字的 大小颜色等等。
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()用户可以开始与活动进行交互时调用。
安卓计算器开发试验报告
上海电力学院应用开发嵌入式WebOS 实验报告Android Developer SDK开发应用程序实验名称:使用专业:姓名:班级:学号:作品的运行环境及安卓SDK基础操作一、SDK Android Developer是一款在windows系统上运行的针对Android 应用开发的谷歌官方软件(需要JAVA环境支持)。
1、导入工程2、建立虚拟机在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB,因为部分程序如果调用资源过大会导致虚拟机无法运行。
.3、虚拟机界面二、作品介绍我的应用是一个计算器。
能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。
三、编程以及运行调试(一)、在MyDesktop主界面中添加应用图标. 首先在我的桌面上添加你应用的图标以及文字,双击1图标后就可以看见对应的代码,可直接在代码中进行修改图片文字的大小颜色等等。
以下是对应图像图标的代码图片可以在左侧的选;项中自行进行挑选也可以添加自己的图片,只要将图片放到对应的文件夹之下在刷新就可以,但不建议放分辨率过高图片可能会出现超出界面的等错误。
由于计算器的按钮很多,,.xml(二)、在res/layout目录下新建文件界面中添加排版:要在xml</AbsoluteLayout> xml代码首末的格式较为自由可以直接在界面中拖动图标位置以及修改大小,而其他layout则更会自动排列,各有优劣。
计算器的按钮,文件.java目录下新建src/weibo.test.ui、在)三( 算法等都在此实现。
工程名、声明(三)1、在应用中有三处需要声明,首先是在AndroidManifest.xmlMainActivity.java2、然后是在代码展示四、界面代码、.xml(一)?>encoding=甥晴?=<?xml version??\xmlns:android=<LinearLayout晜汩彬慰敲瑮android:layout_width= 晜汩彬慰敲瑮android:layout_height=>癜牥楴慣屬android:orientation=<TableLayoutandroid:id=?椫層琯扡敬慌潹瑵就android:layout_width=浜瑡档灟牡湥屴android:layout_height=睜慲彰潣瑮湥屴android:collapseColumns=?><TableRowandroid:id=?椫層琯扡敬潒彷瑥android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮><EditTextandroid:id=?椫層支屴晜汩彬慰敲瑮=android:layout_widthandroid:layout_height=晜汩彬慰敲瑮android:layout_span=?android:focusable=晜污敳android:gravity=牜杩瑨android:inputType=瑜硥屴android:singleLine=瑜畲履></EditText></TableRow><TableRowandroid:id=?椫層琯扡敬潒?android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮><Buttonandroid:id=?椫層戯彴尷android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴尸android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴尹android:layout_width=?硰android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴慢正android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=扜捡屫/></TableRow><TableRowandroid:id=?椫層琯扡敬潒?android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮><Buttonandroid:id=?椫層戯彴尴android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴尵android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴尶android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴楤楶敤android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=屜尯/></TableRow><TableRowandroid:id=?椫層琯扡敬潒?android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮><Buttonandroid:id=?椫層戯彴就android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴尲android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Button?椫層戯彴尳=android:idandroid:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴畭瑬灩祬android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/></TableRow><TableRowandroid:id=?椫層琯扡敬潒?android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮><Buttonandroid:id=?椫層戯彴尰android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=ぜ/><Buttonandroid:id=?椫層戯彴潰湩屴android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴摡層android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/><Buttonandroid:id=?椫層戯彴畳屢android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=?/></TableRow><TableRowandroid:id=?椫層琯扡敬潒?晜汩彬慰敲瑮=android:layout_widthandroid:layout_height=晜汩彬慰敲瑮><Buttonandroid:id=?椫層戯彴煥慵屬android:layout_width=晜汩彬慰敲瑮android:layout_height=晜汩彬慰敲瑮android:layout_span=?android:text=?/><Buttonandroid:id=?椫層戯彴汣慥屲android:layout_width=?瀰屸android:layout_height=?瀰屸android:text=捜敬牡/></TableRow></TableLayout></LinearLayout>(二)、.java功能代码package weibo.test.ui;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener; import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import weibo.lixiaodaoaaa.ui.R;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager; import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener; import android.widget.Button;import android.widget.ListView;import com.zsy.flipper.AppInfUtil;import com.zsy.flipper.AppInfo;public class fffActivity extends Activity {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; // 减private Button bt_multiply; // 乘private Button bt_divide; // 除private Button bt_back;private Button bt_equal; // 等于private Button bt_point; // 点private Button bt_clear; // 清除private EditText et_play; // 显示private String str_oper = +; // 运算符private StringBuffer str_display = new StringBuffer();; // 显示private String str_result; // 结果显示private double num1;private double num2;private boolean flag = true; // 小数点个数开关控制;private boolean b_sub, b_mul, b_div; // 运算符开关控制@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.activity_fff);bt_0 = (Button) findViewById(R.id.bt_0);bt_1 = (Button) findViewById(R.id.bt_1);bt_2 = (Button) findViewById(R.id.bt_2);bt_3 = (Button) findViewById(R.id.bt_3);bt_4 = (Button) findViewById(R.id.bt_4);bt_5 = (Button) findViewById(R.id.bt_5);bt_6 = (Button) findViewById(R.id.bt_6);bt_7 = (Button) findViewById(R.id.bt_7);bt_8 = (Button) findViewById(R.id.bt_8);bt_9 = (Button) findViewById(R.id.bt_9);bt_add = (Button) findViewById(R.id.bt_add);bt_sub = (Button) findViewById(R.id.bt_sub);bt_multiply = (Button) findViewById(R.id.bt_multiply);bt_divide = (Button) findViewById(R.id.bt_divide);bt_back = (Button) findViewById(R.id.bt_back);bt_equal = (Button) findViewById(R.id.bt_equal);bt_point = (Button) findViewById(R.id.bt_point);bt_clear = (Button) findViewById(R.id.bt_clear);et_play = (EditText) findViewById(R.id.et);et_play.setText(bt_0.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append(et_play.setText(str_display.toString());}});bt_1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append();et_play.setText(str_display.toString());}bt_2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append();et_play.setText(str_display.toString());}});bt_3.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append( );et_play.setText(str_display.toString());}});bt_4.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append();et_play.setText(str_display.toString());}});bt_5.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append(_x0005_);et_play.setText(str_display.toString());}});bt_6.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append();et_play.setText(str_display.toString());}});bt_7.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append(_x0007_);et_play.setText(str_display.toString());}});bt_8.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append(8);et_play.setText(str_display.toString());}});bt_9.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append(9);et_play.setText(str_display.toString());}});bt_point.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (flag){str_display.append(.);flag = false;}});bt_back.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_display.length() != 0){str_display.deleteCharAt(str_display.length() - 1); et_play.setText(str_display.toString());}}});bt_add.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = +;if (!(str_display.toString() == \)){num1 += Double.parseDouble(str_display.toString());str_display = new StringBuffer(\);}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;et_play.setText(String.valueOf(num1));flag = true;}});bt_sub.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = -;if (!b_sub && !(str_display.toString() == \)){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer(\);b_sub = true;} else{if (!(str_display.toString() == \)){-=num1Double.parseDouble(str_display.toString());str_display = new StringBuffer(\);}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_multiply.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = *;if (!b_mul && !(str_display.toString() == \)){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer(\);b_mul = true;} else{if (!(str_display.toString() == \)){*=num1Double.parseDouble(str_display.toString());str_display = new StringBuffer(\);}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_divide.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = \/;if (!b_div && !(str_display.toString() == \)){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer(\);b_div = true;} else{if (!(str_display.toString() == \)){== (Double.parseDouble(str_display.toString()) if0){Toast.makeText(fffActivity.this,!,能除数不为0Toast.LENGTH_LONG).show();} else{num1/=Double.parseDouble(str_display.toString());str_display = new StringBuffer(\);}}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_clear.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = +;str_display = new StringBuffer(\);str_result = null;num1 = 0;num2 = 0;flag = true;b_sub = false;b_mul = false;b_div = false;et_play.setText(}});bt_equal.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_oper.equals(+)){num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf((num1 + num2));et_play.setText(str_result);str_display = new StringBuffer(\);}if (str_oper.equals(-)){num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf((num1 - num2));et_play.setText(str_result);str_display = new StringBuffer(\);}if (str_oper.equals(*)){num2 = Double.parseDouble(str_display.toString()); str_result = String.valueOf((num1 * num2));et_play.setText(str_result);str_display = new StringBuffer(\);}if (str_oper.equals(\/)){num2 = Double.parseDouble(str_display.toString());if (!(num2 == 0)){str_result = String.valueOf((num1 / num2));et_play.setText(str_result);} else{Toast.makeText(fffActivity.this,除数不能为 , Toast.LENGTH_LONG).show();0 !}str_display = new StringBuffer(\);}}});}}五、实验小结通过此次Android应用的开发,使我学会了很多在其他理论课上所无法学到的东西。
Android课程实验报告
Android课程实验报告实验题目:实现一个简单的Android计算器应用实验目的:通过实现一个简单的Android计算器应用,掌握Android 应用的开发流程和常用控件的使用方法。
一、实验要求1. 实现一个包含加减乘除四则运算功能的Android计算器应用。
2.应用界面至少包含一个显示结果的文本框和15个按钮(包括数字按钮0-9、小数点按钮“.”、加减乘除按钮和等号按钮“=”)。
3. 按钮点击事件的处理采用Lambda表达式实现。
二、实验过程1. 创建一个新的Android项目,并在activity_main.xml文件中添加一个显示结果的文本框(TextView)和15个按钮(Button)。
2. 在MainActivity.java文件中,通过findViewById(方法获取文本框和按钮的实例。
3. 使用Lambda表达式为按钮注册点击事件的处理程序,在处理程序中根据按钮的ID执行相应的操作。
4. 使用StringBuilder类来拼接用户输入的数字和运算符,并将结果显示在文本框中。
三、实验代码1. activity_main.xml```xmlandroid:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="10dp" android:textSize="20sp"android:textStyle="bold"android:textAlignment="center" /><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content" android:layout_weight="1"android:text="0" /><!--其他按钮的布局与此类似,省略--> <Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="." /><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="=" /></RelativeLayout>```2. MainActivity.java```javaprivate TextView resultTextView;private StringBuilder expression;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(yout.activity_main); resultTextView = findViewById(R.id.resultTextView);Button btn0 = findViewById(R.id.btn0);Button btn1 = findViewById(R.id.btn1);//其他按钮的初始化与此类似,省略Button btnDot = findViewById(R.id.btnDot);Button btnEq = findViewById(R.id.btnEq);expression = new StringBuilder(;btn0.setOnClickListener(v -> expression.append("0"));btn1.setOnClickListener(v -> expression.append("1"));//其他按钮的点击事件注册与此类似,省略btnDot.setOnClickListener(v -> expression.append(".")); btnEq.setOnClickListener(v ->double result = evaluateExpression(expression.toString(); resultTextView.setText(String.valueOf(result));});}private double evaluateExpression(String exp)//解析并计算表达式的值//省略}```四、实验结果和分析通过运行实验代码,可以在模拟器或真机上打开一个包含加减乘除四则运算功能的Android计算器应用。
安卓计算器设计报告
数学与信息技术学院嵌入式系统课程设计报告设计题目:数字计算器的设计与实现班级:学号:姓名:指导教师:完成日期:成绩:目录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计算器功能的实现摘要随着移动通信技术和网络技术的迅速发展,手机系统发生了巨大的变化,从进行简单通话功能的非智能手机到现在集上网、聊天、收发邮件、视屏电话会议等各种服务于娱乐为一身的智能手机系统。
由Google公司牵头众多实力雄厚的软硬件厂商加盟成立了OMS联盟,并推出的Android平台手机系统。
作为时代的新生儿,Android手机操作平台有着得天独厚的优势广阔的发展前景。
本文正是基于Android平台开发的计算器。
论文主要阐述以面向对象的程序开发语言eclipse为开发工具, 设计并实现基于Android的计算器。
论文首先介绍了Android开发平台和环境以及Android 工程的重要部分,其次对计算器系统和程序进行了分析和设计,再次对计算器进行了系统的实现,并对系统进行了严格的验证,最后本文对所做工作进行了总结。
关键词:手机,Android,用户界面,计算器THE CALCULATOR FUNCTION REALIZATION BASEDON ANDROIDABSTRACTWith the development of mobile communication technology and network technology, great changes have taken place on the mobile phone system. The original mobile phone only has the functions of communication and Smartphone has the functions of internet, chat, video conferencing and other services and entertainment. Android mobile phone platform which was developed by Google Company and many equipment manufacturers of hardware and software vendors, as the era of neonatal has a unique advantage and prospects for development. This article is based on the Android platform calculator. The thesis describes object-oriented programming language eclipse development tools, design and implement a calculator based on the Android. The paper first introduces the Android development platform and environment as well as an important part of the Android project, followed by the calculator systems and procedures analysis and design, the realization of the system once again the calculator, and strict verification, Finally, a summary of the work done.Key words: mobile phone, Android, UI, calculator毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
课程设计-安卓计算器的开发与设计
.工程学院操作系统课程设计报告书题目安卓计算器的开发与设计系别计算机工程系专业计算机科学与技术班级S计本1205姓名指导教师下达日期2013年6 月13 日设计时间自2013 年7 月 1 日至2013 年7 月 4 日目录摘要 (3)一、设计概述 (4)1.设计背景 (4)2.设计目的 (4)3.设计要求 (4)4.开发环境 (6)二、设计细节 (7)1.整体思想 (7)2.容错处理 (7)3.数据结构的设计 (8)4.用户界面的实现 (8)5.文件结构 (9)6.界面组件设计 (10)(1)XML文件生成 (11)(2)用户界面在程序代码实现 (11)(3)用户自定义页面组件 (11)7.程序流程 (12)三、详细设计与实现 (13)1.开发环境搭建 (13)(1)安装Android 开发插件 (13)(2)配置android sdk (15)2.图形界面设计 (17)3.程序功能实现 (22)四、测试分析 (28)1.模拟器创建 (28)2.计算功能 (29)3.应用卸载 (30)3.应用导出为.APK文件 (30)小结 (31)致谢 (32)摘要Android成功地成为了最具有潜力的新一代的手机应用软件。
正如了标准化PC和Macintosh平台上创建的桌面和服务器软件市场,在Android上,通过提供一个标准的手机应用环境,将增加移动应用程序和应用开发商的利润。
Android给开发人员提供了一种独特的,创造性的应用开发方式,并且应用到客户手机中。
现在出现了成千上万的Android手机用户,正在寻找最优秀的手机应用程序。
然后把这些优秀的应用程序应用到手机中。
本程序是一个基于现有手机计算器开发的在触屏手机上运行的简单计算器,使用户可以更加简单便捷的使用计算器的功能,在此次程序设计中所做的工作主要是设计程序的图形化操作界面,以及利用编程语言实现整个程序的计算功能,使其能够正确地运行。
关键词:应用程序,操作系统,Android,应用开发,计算器一、设计概述1.设计背景随着社会的发展,经济水平的提高,手机越来越普及。
安卓计算器开发实验报告
上海电力学院嵌入式WebOS应用开发实验报告实验名称:使用Android Developer SDK开发应用程序专业:姓名:班级:学号:一、作品的运行环境及安卓SDK基础操作SDK Android Developer是一款在windows系统上运行的针对Android应用开发的谷歌官方软件(需要JAVA环境支持)。
1、导入工程2、建立虚拟机在运行虚拟机是为保证机器的顺畅运行建议选择分辨率较低的虚拟机,但是其RAM最好设为512MB,因为部分程序如果调用资源过大会导致虚拟机无法运行。
3、虚拟机界面二、作品介绍我的应用是一个计算器。
能实现包括小数的加减乘除运算,结果过大会自动用科学记数法表示,另外还有退格跟清屏功能键。
三、编程以及运行调试(一)、在MyDesktop主界面中添加应用图标1. 首先在我的桌面上添加你应用的图标以及文字,双击图标后就可以看见对应的代码,可直接在代码中进行修改图片文字的大小颜色等等。
以下是对应图像图标的代码图片可以在左侧的选项中自行进行挑选;也可以添加自己的图片,只要将图片放到对应的文件夹之下在刷新就可以,但不建议放分辨率过高图片可能会出现超出界面的等错误。
(二)、在res/layout目录下新建.xml文件,由于计算器的按钮很多,要在xml界面中添加排版:xml代码首末的</AbsoluteLayout>格式较为自由可以直接在界面中拖动图标位置以及修改大小,而其他layout则更会自动排列,各有优劣。
(三)、在src/weibo.test.ui目录下新建.java文件,计算器的按钮算法等都在此实现。
(三)、声明工程名1、在应用中有三处需要声明,首先是在AndroidManifest.xml2、然后是在MainActivity.java四、代码展示(一)、.xml界面代码<?xml version="1.0"encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TableLayoutandroid:id="@+id/tableLayout1"android:layout_width="match_parent"android:layout_height="wrap_content"android:collapseColumns="4"><TableRowandroid:id="@+id/tableRow_et"android:layout_width="fill_parent"android:layout_height="fill_parent"><EditTextandroid:id="@+id/et"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_span="4"android:focusable="false"android:gravity="right"android:inputType="text"android:singleLine="true"></EditText></TableRow><TableRowandroid:id="@+id/tableRow1"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_7"android:layout_width="80px"android:layout_height="80px"android:text="7"/><Buttonandroid:id="@+id/bt_8"android:layout_width="80px"android:layout_height="80px"android:text="8"/><Buttonandroid:id="@+id/bt_9"android:layout_width="1px"android:layout_height="80px"android:text="9"/><Buttonandroid:id="@+id/bt_back"android:layout_width="80px"android:layout_height="80px"android:text="back"/></TableRow><TableRowandroid:id="@+id/tableRow2"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_4"android:layout_width="80px"android:layout_height="80px"android:text="4"/><Buttonandroid:id="@+id/bt_5"android:layout_width="80px"android:layout_height="80px"android:text="5"/><Buttonandroid:id="@+id/bt_6"android:layout_width="80px"android:layout_height="80px"android:text="6"/><Buttonandroid:id="@+id/bt_divide"android:layout_width="80px"android:layout_height="80px"android:text="/"/></TableRow><TableRowandroid:id="@+id/tableRow3"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_1"android:layout_width="80px"android:layout_height="80px"android:text="1"/><Buttonandroid:id="@+id/bt_2"android:layout_width="80px"android:layout_height="80px"android:text="2"/><Buttonandroid:id="@+id/bt_3"android:layout_width="80px"android:layout_height="80px"android:text="3"/><Buttonandroid:id="@+id/bt_multiply"android:layout_width="80px"android:layout_height="80px"android:text="*"/></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_0"android:layout_width="50px"android:layout_height="80px"android:text="0"/><Buttonandroid:id="@+id/bt_point"android:layout_width="50px"android:layout_height="80px"android:text="."/><Buttonandroid:id="@+id/bt_add"android:layout_width="50px"android:layout_height="80px"android:text="+"/><Buttonandroid:id="@+id/bt_sub"android:layout_width="50px"android:layout_height="80px"android:text="-"/></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="fill_parent"android:layout_height="fill_parent"><Buttonandroid:id="@+id/bt_equal"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_span="3"android:text="="/><Buttonandroid:id="@+id/bt_clear"android:layout_width="50px"android:layout_height="80px"android:text="clear"/></TableRow></TableLayout></LinearLayout>(二)、.java功能代码package weibo.test.ui;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import weibo.lixiaodaoaaa.ui.R;import android.app.Activity;import android.content.Intent;import android.content.pm.PackageManager;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ListView;import com.zsy.flipper.AppInfUtil;import com.zsy.flipper.AppInfo;public class fffActivity extends Activity{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; // 减private Button bt_multiply; // 乘private Button bt_divide; // 除private Button bt_back;private Button bt_equal; // 等于private Button bt_point; // 点private Button bt_clear; // 清除private EditText et_play; // 显示private String str_oper = "+"; // 运算符private StringBuffer str_display = new StringBuffer();; // 显示private String str_result; // 结果显示private double num1;private double num2;private boolean flag = true; // 小数点个数开关控制;private boolean b_sub, b_mul, b_div; // 运算符开关控制@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.activity_fff);bt_0 = (Button) findViewById(R.id.bt_0);bt_1 = (Button) findViewById(R.id.bt_1);bt_2 = (Button) findViewById(R.id.bt_2);bt_3 = (Button) findViewById(R.id.bt_3);bt_4 = (Button) findViewById(R.id.bt_4);bt_5 = (Button) findViewById(R.id.bt_5);bt_6 = (Button) findViewById(R.id.bt_6);bt_7 = (Button) findViewById(R.id.bt_7);bt_8 = (Button) findViewById(R.id.bt_8);bt_9 = (Button) findViewById(R.id.bt_9);bt_add = (Button) findViewById(R.id.bt_add);bt_sub = (Button) findViewById(R.id.bt_sub);bt_multiply = (Button) findViewById(R.id.bt_multiply); bt_divide = (Button) findViewById(R.id.bt_divide);bt_back = (Button) findViewById(R.id.bt_back);bt_equal = (Button) findViewById(R.id.bt_equal);bt_point = (Button) findViewById(R.id.bt_point);bt_clear = (Button) findViewById(R.id.bt_clear);et_play = (EditText) findViewById(R.id.et);et_play.setText("0");bt_0.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("0");et_play.setText(str_display.toString());}});bt_1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("1");et_play.setText(str_display.toString());}});bt_2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v)str_display.append("2");et_play.setText(str_display.toString());}});bt_3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("3");et_play.setText(str_display.toString());}});bt_4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("4");et_play.setText(str_display.toString());}});bt_5.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("5");et_play.setText(str_display.toString());}});bt_6.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){str_display.append("6");et_play.setText(str_display.toString());}bt_7.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("7");et_play.setText(str_display.toString());}});bt_8.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("8");et_play.setText(str_display.toString());}});bt_9.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_display.append("9");et_play.setText(str_display.toString());}});bt_point.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){if (flag){str_display.append(".");flag = false;}}});bt_back.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_display.length() != 0){str_display.deleteCharAt(str_display.length() - 1);et_play.setText(str_display.toString());}}});bt_add.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "+";if (!(str_display.toString() == "")){num1 += Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));flag = true;}});bt_sub.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "-";if (!b_sub && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_sub = true;} else{if (!(str_display.toString() == "")){num1 -= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_multiply.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "*";if (!b_mul && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_mul = true;} else{if (!(str_display.toString() == "")){num1 *= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_divide.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "/";if (!b_div && !(str_display.toString() == "")){num1 = Double.parseDouble(str_display.toString());et_play.setText(String.valueOf(num1));str_display = new StringBuffer("");b_div = true;} else{if (!(str_display.toString() == "")){if (Double.parseDouble(str_display.toString()) == 0){Toast.makeText(fffActivity.this,"除数不能为0!", Toast.LENGTH_LONG).show();} else{num1 /= Double.parseDouble(str_display.toString());str_display = new StringBuffer("");}}if (!(str_result == null)){num1 = Double.parseDouble(str_result);str_result = null;}et_play.setText(String.valueOf(num1));}flag = true;}});bt_clear.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "+";str_display = new StringBuffer("");str_result = null;num1 = 0;num2 = 0;flag = true;b_sub = false;b_mul = false;b_div = false;et_play.setText("0");}});bt_equal.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){if (str_oper.equals("+")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 + num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("-")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 - num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("*")){num2 = Double.parseDouble(str_display.toString());str_result = String.valueOf((num1 * num2));et_play.setText(str_result);str_display = new StringBuffer("");}if (str_oper.equals("/")){num2 = Double.parseDouble(str_display.toString());if (!(num2 == 0)){str_result = String.valueOf((num1 / num2));et_play.setText(str_result);} else{Toast.makeText(fffActivity.this,"除数不能为0!", Toast.LENGTH_LONG).show();}str_display = new StringBuffer("");}}});}}五、实验小结通过此次Android应用的开发,使我学会了很多在其他理论课上所无法学到的东西。
基于安卓开发的计算器课程设计报告复习资料
《ANDROID应用设计》课程设计报告题目:简易计算器专业班级:计算机科学与技术一班设计者:指导老师:设计时间:报告完成日期年月日1设计任务及要求设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,以及清零操作。
本人学习Android有近半年的时间。
由于不同的Android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置。
Drawable-hdpi中放置分辨率最高的图标,drawable--ldpi中放置分辨率中等的图标,drawable-mdpi中放置在分辨率最低的图标。
界面设计应该就尽量简洁而美观,应该具有良好的交互性。
在整个过程中,首先应该对输入进行容错处理,这样有利于提高用户体验。
对于用户的按键输入,需要及时的现实在第一个EditView中。
用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。
容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。
在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记,在本文中使用了栈,对这些数据进行了存储。
2设计原理及总体框图将表达式转为字符串类进行存储。
将表达式的字符串进行处理,将数字和运算符分别存放在两个栈中(也可以使用队列,理论上使用队列更为合理,在这我使用栈来实现)。
由于栈是后进先出的,所以先将两个栈进行逆序。
设计方法来处理两个栈从而得到相应的计算结果。
原理:将操作符设计优先级,乘除优先级设置为2,加减优先级设置为1。
一、从操作符栈中弹出两个操作符,假设为symbol1和symbol2,比较两个操作付的优先级,如果symbol1的优先级大于等于symbol2的则执行二,否则执行三。
二、从数字栈中弹出两个数字,计算这两个数字在操作符symbol1下的运算结果,结束后将结果压入数字栈,将symbol2压入操作符栈,最后返回一。
三、从数字栈中弹出三个数字,计算后两个数字在操作符symbol2下的运算结果,结束后将运算结果压入栈,将剩下的第一个数字压入栈,将操作符symbol1压入站,最后返回一。
基于android的计算器毕业设计报
基于Android的计算器毕业设计报告一、引言随着移动设备的普及,人们对于计算器的需求已经不再局限于桌面电脑。
特别是在Android平台上,由于其开放性和灵活性,使得开发人员可以方便地为其开发各种应用。
本次毕业设计就是开发一款基于Android平台的计算器应用,以满足人们在移动设备上进行基本数学计算的需求。
二、系统分析1.功能需求:本计算器应用需要满足基本数学计算需求,包括加减乘除四则运算,以及括号、百分比、平方、立方等特殊运算。
同时,还需要提供清除、撤销等便捷操作。
2.性能需求:为了保证应用的流畅性和稳定性,需要保证应用的响应速度和计算准确性。
同时,考虑到移动设备的电池寿命,还需要优化电量消耗。
3.用户界面需求:界面需要简洁明了,易于操作。
色彩和图标设计也需要符合Android平台的规范和用户习惯。
三、系统设计1.界面设计:采用Material Design风格,主界面包括数字按键区和操作符选择区。
为了方便用户操作,还添加了滑动输入功能,用户可以通过滑动数字或运算符来选择所需的数字或运算符。
2.算法设计:为了保证计算的准确性,我们采用了双精度浮点数存储数据,并使用Java的BigDecimal类进行运算。
这样既可以保证计算的精度,又可以避免由于浮点数运算产生的误差。
3.数据库设计:为了保存用户的计算历史记录,我们使用了Android的SQLite数据库来存储数据。
每个记录包括计算式和计算结果两个字段。
四、系统实现1.界面实现:我们使用了Android的原生开发方式,通过XML布局文件定义界面结构,通过Java代码实现界面逻辑。
同时,为了提高用户体验,我们还添加了一些动画效果和音效。
2.算法实现:我们使用了Java的BigDecimal类进行数学运算。
通过BigDecimal的multiply()和divide()方法可以实现乘法和除法运算,通过add()和subtract()方法可以实现加法和减法运算。
安卓计算器实验报告
安卓计算器实验报告一、实验目的本次实验的目的是开发一款功能齐全、操作便捷的安卓计算器应用程序,以满足用户在日常生活和工作中对基本计算和科学计算的需求。
二、实验环境1、操作系统:Windows 102、开发工具:Android Studio3、编程语言:Java 和 XML4、测试设备:安卓手机(型号:_____ ,操作系统版本:_____ )三、实验步骤(一)需求分析在开始开发之前,对计算器的功能需求进行了详细的分析。
确定了以下主要功能:1、基本四则运算(加、减、乘、除)2、百分比计算3、平方根计算4、幂运算5、括号优先级计算6、历史记录功能7、清除和撤销操作(二)界面设计使用 XML 布局文件设计计算器的用户界面。
界面包括数字按钮、运算符按钮、等号按钮、清除按钮、撤销按钮和显示计算结果和表达式的文本框。
(三)功能实现1、数字和运算符的点击事件处理为每个数字按钮和运算符按钮设置点击事件监听器。
当用户点击数字按钮时,将数字添加到表达式中;点击运算符按钮时,根据当前的计算状态进行相应的处理。
2、计算逻辑使用 Java 中的数学运算方法实现四则运算、百分比计算、平方根计算和幂运算。
根据运算符的优先级进行计算,确保计算结果的准确性。
3、括号处理通过栈数据结构来处理括号,确保括号内的表达式先计算。
4、历史记录使用数据库来存储计算的历史记录,包括表达式和结果。
用户可以查看历史记录,并重新使用其中的表达式进行计算。
5、清除和撤销操作实现清除按钮的功能,将表达式和结果清空;撤销按钮的功能则是回退上一步的操作。
(四)测试与优化1、功能测试对计算器的各项功能进行了全面的测试,包括基本运算、复杂表达式计算、括号计算、历史记录查看等。
确保每个功能都能正常工作,计算结果准确无误。
2、性能测试对计算器的响应速度进行了测试,优化了计算算法和数据结构,提高了计算的效率。
3、兼容性测试在不同型号和操作系统版本的安卓手机上进行了测试,确保计算器应用在各种设备上都能正常运行,界面布局合理。
android开发计算器设计开发报告..
《安卓开发》程序设计报告题目简单计算器开发专业(班级)网工111班姓名张波波学号952937885 (qq)指导教师赵(老师)日期2014.5.7目录一、设计说明: (3)1•设计内容:An droid简单应用程序开发,简单计算器。
(3)2程序说明: (3)二、开发环境: (3)三、概要设计: (3)3.1系统的总体 (3)四、程序流程和系统功能设计 (4)4.1程序流程设计 (4)4.2.系统功能设计 (5)4.3 基于An droid 平台系统具体设计 (5)4.3.1总体模块详细设计 (5)4.3.2输入模块详细设计 (6)4.3.3显示模块详细设计 (7)4.3.4计算模块详细设计 (7)五、计算器系统实现 (8)5.1 An droid应用程序构成 (8)六、截图说明 (9)1、图标 (9)2界面 (9)3运算界面 (10)4错误输入 (10)5设计平台界面 (11)6签名导出apk (11)七、总结 (12)课程设计任务书亠、设计说明:1.设计内容:An droid简单应用程序开发,简单计算器。
2程序说明:1计算器界面友好,方便使用。
2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。
3、能够判断用户输入运算数是否正确。
4、4、支持小数运算。
5、具有退格功能,能够删除最后一个输入,ce。
6、具有清除功能,删除所有,c。
7、具有结果存储功能,能够显示存储器状态,支持触屏手机。
8、支持最低版本2.0,最高版本4.4。
开发时为4.2二、开发环境:开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT 作为开发平台。
事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。
三、概要设计:3.1系统的总体整个程序基于an droid技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。
计算器报告
移动互联A P P课程实验报告(2)班级:姓名学号:实验项目名称: Android计算器App设计与实现实验项目性质:设计性实验所属课程:《移动互联APP》实验室(中心):指导教师:实验完成时间: 2016 年 10 月 13 日一、实验内容1) 熟悉Android Studio下App界面设计和常用GUI组件属性、使用方法。
2) 创建一个简单的计算器App,实现以下基本功能:(a)对输入的两个整数/小数的加、减、乘、除基本运算;比如: 3.141+1.407(b)对输入的多个整数/小数的加、减、乘、除混合运算式进行计算;比如: 50+6*7-20/2(c)满足常见的几种用户数据输入习惯,比如清零、累加等;比如:90+85+78+59.5+100+61+....3)如果能进一步完成目前手机计算器App不常有的某些功能,可获得附加奖励分,比如以下功能(之一):(d)能将十进制转换为二进制或十六进制数;(e)具备undo功能(例如发现连续累加中的上一个输入数字有误,用此功能进行回退,而不是从头重新开始);(f) 能根据手机横屏、竖屏状态自动调整界面布局。
4)熟悉和掌握软件版本管理技术,CVS、GIT、GitHub等,并将设计项目代码利用GitHub进行版本控制与维护;实验心得体会部分须包含此部分的心得感受。
5)编程实现并在模拟器或手机上运行、调试和发布。
二、实验要求1) 分组要求:每个学生独立完成,即1人1组。
2) 程序及报告文档要求:具有较好的可读性,包括设计流程图、代码注释、代码正确缩进、代码语法高亮、截图清晰等等。
三、实验步骤、程序关键代码及说明1、系统设计要求:创建一个简单的计算器App,实现以下基本功能:对输入的两个整数/小数的加、减、乘、除基本运算;对输入的多个整数/小数的加、减、乘、除混合运算式进行计算;满足常见的几种用户数据输入习惯,比如清零、累加等;能将十进制转换为二进制或十六进制数。
移动应用开发实验---简单计算器
“移动应用开发”实验报告1而受至到众多开发者的欢迎,成为真正意义上的开放式操作系统。
计算器通过算法实行简单的或学计算从而提高了数学计算的效率,实现计算器的界面优化,使界面更加友好,操作更加方便。
基于android的计算器的设计系统具有良好的界面;必要的英互信息:简约美观的效票,使用人员能快捷简单地进行操作,即可单机按钮进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间。
2.系统概要设计2.1计算器功能概要设计根据需求,符合用户的实际需求,系统应实现以下功能:计算器界面友好,方便使用,具有基本的加,减,乘,除功能。
能够判断用户输入运算数是否正确,支持小数运算,具有清除功能。
整个程序基于Android 技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。
在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其他的功能。
具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。
输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。
同时提供了较为直观的键盘图形用户界面。
显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时负责显示一些其他的信息。
计算器模块主要描述了计算器的整体,实现了计算器的界面,负责用户2输入数据,计算,显示,清零等功能。
2.2输入模块设计系统如果想完成计算器中各种功能,首先用户要能进行数据输入,由于是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑这一点。
正是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用可以支持触屏输入的特殊增强型图形用户界面类。
基于android的计算器毕业设计报告
基于android的计算器毕业设计报告1. 引言计算器是一种常用的电子设备,用于进行各种数学计算和运算,如加减乘除、平方根、百分比等。
随着智能手机的普及,人们越来越倾向于使用手机上的计算器应用进行数学计算,因此开发一款基于Android平台的计算器应用成为一项有意义的毕业设计。
2. 设计目标本计算器应用的设计目标是满足用户对于高效、准确计算需求的同时,具备友好的用户界面和良好的用户体验。
3. 功能设计3.1 基本计算功能用户可以通过输入数字和运算符,进行基本的加减乘除运算。
计算器应能正确解析用户输入的表达式,并给出准确的结果。
3.2 科学计算功能计算器还应该具备科学计算功能,如平方根、立方根、指数运算、对数运算等。
用户可以通过在界面上选择相应的按钮进行科学计算。
3.3 历史记录功能计算器应能保存用户的历史计算记录,以便用户可以回顾之前的计算过程和结果。
用户可以随时查看特定的历史记录,并可以清除历史记录。
3.4 单位转换功能计算器还应该具备单位转换功能,如长度单位之间的转换,重量单位之间的转换等。
用户可以在界面上选择需要进行的单位转换,并输入相应的数值,计算器将给出转换后的结果。
4. 用户界面设计4.1 主界面主界面应该简洁清晰,并具备直观明了的操作按钮,供用户选择进行不同的计算。
4.2 科学计算界面科学计算界面应该设计为可选展示的,用户可以通过选择按钮在主界面和科学计算界面之间切换。
4.3 历史记录界面历史记录界面应该能够展示用户之前的计算过程和结果,并提供删除历史记录的功能。
4.4 单位转换界面单位转换界面应该设计为可选展示的,用户可以通过选择按钮在主界面和单位转换界面之间切换。
5. 开发技术和工具本计算器应用基于Android平台进行开发,开发工具可选用Android Studio。
开发语言选择Java,使用Android SDK进行开发。
设计界面可以使用XML或者Android布局进行设计。
计算器安卓设计
成绩课程设计报告题目ANDROID开发课程名称简单计算器院部名称计算机工程学院专业计算机科学与技术班级15计算机科学与技术学生姓名周江成学号1513902035课程设计地点 1416课程设计学时指导教师叶崧金陵科技学院教务处制课程设计报告书写要求课程设计报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
课程设计报告书写说明课程设计报告应包含以下七部分内容:1、摘要2、目录3、 5. 结论 6. 参考文献7. 附录,每部分的书写要求参见具体条目要求。
填写注意事项(1)准确说明,层次清晰。
(2)尽量采用专用术语来说明事物。
(3)外文、符号、公式要准确,应使用统一规定的名词和符号。
(4)应独立完成课程设计报告的书写,严禁抄袭、复印,一经发现,以零分论处。
课程设计报告批改说明课程设计报告的批改要及时、认真、仔细,一律用红色笔批改。
课程设计报告的批改成绩采用五级计分制或百分制,具体评分标准由各院部自行制定。
课程设计报告装订要求报告批改完毕后,任课老师应将课程设计报告以自然班为单位、按学号升序排列,并附上一份该课程设计的教学大纲。
课程设计题目:简单计算器一、摘要(所进行设计工作的主旨、缘起、目的,设计工作的主要内容、过程,采用的方法及取得的成果。
关键字(Key Words): 一般3~5个,最能代表报告内容特征,或在报告起关键作用,最能说明问题的词组)目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。
手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多.我在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
} 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了,要处理这种异常
3.int precision,设置默认精度为6位小数
4.int equal_flag,设置flag值判断是否需要清空mathNow进行新的运算
5.ScienceCalculator scienceCalculator,实例化一个科学计算器
图3.1竖屏界面
3.1.2
包含控件
1.文本框TextView:tvNow, tvPast分别显示当前和过去的运算过程;
2.Android系统集成了很好的文本框内容复制功能,设置setTextIsSelectable(true)即可实现文本框的长按复制功能;
tvPast.setTextIsSelectable(true);
3.由于计算器具有2个界面,当前的界面可能是从竖屏界面切换来(如果当前界面是竖屏,界面也有可能是从横屏界面切换而来),通过Intent类在两个Activity间传递tvPast的内容,至于用for循环逐行添加过去的运算过程是为了满足(1)使内容自动滚动到最新的一行。
@Override
public void onClick(View view) {
if (equal_flag == 1) {
}
tvPast.append(maths[i]); //最后一个math不用加换行
}
}
响应场景设置:
1.因为tvPast文本框高度有限,为了使用户每次都可以看到最新的运算过程,设置setMovementMethod(ScrollingMovementMethod.getInstance())方法使内容自动滚动到最新的一行;tvPast.setMovementMethod(ScrollingMovementMethod.getInstance());
mathNow += "0";
} else if (mathNow.length() == 1) { //2.mathNow长度为1
if (mathNow.charAt(0) == '0') { //2.1如果该字符为0,不加
mathNow += "";
} else if (isNum(mathNow.charAt(0))) { //2.2如果该字符为1-9,+0
}
tvPast.append(maths[i]); //最后一个math不用加换行
}
3.2.2
按钮需要设置监听事件的应用场景,是为了避免一些错误的math格式。因为不同的数字有不同的处理方式。主要归为以下几类:
1. btn_0
btn_0根据响应事件场景在当前math表达式中添加0
btn0.setOnClickListener(new View.OnClickListener() {
3.单击“保存”按钮可以将文本区中的全部计算过程保存到文件;单击“复制”按钮可以将文本区中选中的文本复制到剪贴本;单击“清除”按钮可以清除文本区的全部内容。
1.2设计思路
考虑到计算器的美观和易用性,可以把计算器做在Android端,Android系统的App的底层功能由Java实现,所有工作主要分为两部分:
6.运算器基本Button:btn_del退格,btn_clc清空当前math
7.文本框切换按钮tvRad,tvDeg实现弧度制和角度值的切换
8.精度选择器NumberPicker
成员常量
1.final int DEG = 0,DEG表示角度制
2.final int RAD = 1,RAD表示弧度制
如2 + 3×0,此时也不添加0
o除此之外,添加0
2. btn_[1-9]
btn_1 ~ btn_9的响应场景相同,根据响应事件场景在当前math表达式添加[1-9]
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
3.数字Button:0-9,小数点
4.运算符Button:+ -×/ ( ) =
5.运算器基本Button:btn_del退格,btn_clc清空当前math
成员变量
1.String mathPast,用于存储过去的运算过程
2.String mathNow,用于存储当前的运算过程,即用户正在输入的部分
mathNow最后一个char是[0-9],oper,(,小数点这4种情况时,+[1-9];
除此之外,不+[1-9]
3. btn_dot
小数点操作要比普通数字要多一点,有时点击添加的是“0.”
btn_dot根据响应事件场景在当前math表达式中添加“.”或者“0.”
btnDot.setOnClickListener(new View.OnClickListener() {
1.设计计算器界面(activity_main.xml)
计算器界面用xml文件编写,包括手机竖屏和横屏两个布局文件:
竖屏:activity_main.xml布局为portrait
横屏:activity_main_land.xml布局为landscape
竖屏模式可以完成基本的四则运算,不涉及科学计算
横屏模式除了完成基本的四则运算,还添加了科学运算
《Android课程实践》报告
课设题目
Android计算器程序设计
学院
班级
学生姓名
学号
序号
指导教师
时间
2019.11.21
一、设计分析
1.1实现功能
本次实验进行设计可保存计算过程的计算器,实现功能如下:
1.仿照真实的计算器实现其功能。
2.在左上方的文本框中显示当前的计算过程,在右边的文本区中显示以往的计算过程。
if (equal_flag == 1) {
mathNow = "";
equal_flag = 0;
}
if (mathNow.length() == 0) {
mathNow += "1";
} else {
//math的最后一个字符是:1-9, oper, (, .
char ch = mathNow.charAt(mathNow.length() - 1);
2.功能Buttion:btn_save,btn_copy,btn_clear用于保存,复制,清空tvPast中的运算过程;
3.数字Button:0-9,小数点
4.基本运算符Button:+ -×/ ( ) =
5.科学运算符Button:(12个)
sin,cos,tan,√x,e,π,1/x,ln,log,x2,ex,xy
2.编写计算接口(ScienceCalculator.java)
ScienceCalculator可以完成包含科学运算函数的math,先实现可以完成基本四则运算的BaseCalculator,在此基础上,实现ScienceCalculator。
运算的思路是先通过ScienceCalculator完成math中需要科学计算函数的部分,再用这些部分计算的结果替换原math中的这些部分,使包含科学计算函数的math转变成可用BaseCalculator计算的math。
5.ScienceCalculator scienceCalculator,实例化一个科学计算器
6.int angle_metric,角度制参数,默认为DEG
图3.2横屏界面
3.2
由于横屏界面包括了竖屏界面所有的模块,下文代码功能描述按照LandActivity.java文件,即横评界面对应的Activity。
图2.1程序结构流程图
图2.2横屏程序界面
三、各模块Leabharlann 功能及程序说明3.13.1.1
包含控件
1.文本框TextView:tvNowt,vPast分别显示当前和过去的运算过程;