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

合集下载

Android开发实现的简单计算器功能【附完整demo源码下载】

Android开发实现的简单计算器功能【附完整demo源码下载】

Android开发实现的简单计算器功能【附完整demo源码下载】本⽂实例讲述了Android开发实现的简单计算器功能。

分享给⼤家供⼤家参考,具体如下:这个Android计算器虽然还有点⼩bug,不过简单的计算功能还是没问题的哦;先上图看效果⽐较简单,所以我就没怎么写注释,应该⼀看就能明⽩的有不明⽩的可以发信问我先贴MainActivity.java代码package com.example.calculator;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, bp, bs, bm, bd, bc, be;ImageView delete;TextView tv;EditText show;String showString = "", option = "";int showfirst = 0;String exception = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);b0 = (Button) findViewById(R.id.bt_0);b1 = (Button) findViewById(R.id.bt_1);b2 = (Button) findViewById(R.id.bt_2);b3 = (Button) findViewById(R.id.bt_3);b4 = (Button) findViewById(R.id.bt_4);b5 = (Button) findViewById(R.id.bt_5);b6 = (Button) findViewById(R.id.bt_6);b7 = (Button) findViewById(R.id.bt_7);b8 = (Button) findViewById(R.id.bt_8);b9 = (Button) findViewById(R.id.bt_9);bp = (Button) findViewById(R.id.bt_plus);bs = (Button) findViewById(R.id.bt_sub);bm = (Button) findViewById(R.id.bt_mutilate);bd = (Button) findViewById(R.id.bt_div);bc = (Button) findViewById(R.id.bt_c);be = (Button) findViewById(R.id.bt_equ);b1.setOnClickListener(this);b2.setOnClickListener(this);b3.setOnClickListener(this);b4.setOnClickListener(this);b5.setOnClickListener(this);b6.setOnClickListener(this);b7.setOnClickListener(this);b8.setOnClickListener(this);b9.setOnClickListener(this);b0.setOnClickListener(this);bp.setOnClickListener(this);bs.setOnClickListener(this);bm.setOnClickListener(this);bd.setOnClickListener(this);bc.setOnClickListener(this);be.setOnClickListener(this);show = (EditText) findViewById(R.id.et_show);delete = (ImageView) findViewById(R.id.iv_delete);delete.setOnClickListener(this);tv=(TextView) findViewById(R.id.author);tv.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_0:showString += "0";break;case R.id.bt_1:showString += "1";break;case R.id.bt_2:showString += "2";break;case R.id.bt_3:showString += "3";break;case R.id.bt_4:showString += "4";break;case R.id.bt_5:showString += "5";break;case R.id.bt_6:showString += "6";break;case R.id.bt_7:showString += "7";break;case R.id.bt_8:showString += "8";break;case R.id.bt_9:showString += "9";break;case R.id.bt_plus:if (showString.equals(""))exception = "先输⼊数值哦";else {showfirst = Integer.parseInt(showString);showString = "";option = "+";}break;case R.id.bt_sub:if (showString.equals(""))exception = "先输⼊数值哦";else {showfirst = Integer.parseInt(showString);showString = "";option = "-";}break;case R.id.bt_mutilate:if (showString.equals(""))exception = "先输⼊数值哦";else {showfirst = Integer.parseInt(showString);showString = "";option = "*";}break;case R.id.bt_div:if (showString.equals(""))exception = "先输⼊数值哦";else {showfirst = Integer.parseInt(showString);showString = "";option = "/";}break;case R.id.bt_equ:if (option.equals("+"))showString = showfirst + Integer.parseInt(showString) + "";else if (option.equals("-")) {showString = showfirst - Integer.parseInt(showString) + "";} else if (option.equals("*")) {showString = showfirst * Integer.parseInt(showString) + "";} else if (option.equals("/")) {if (showString.equals("0")) {exception = "除数不能为0!";} elseshowString = showfirst / Integer.parseInt(showString) + "";}break;case R.id.bt_c:showString = "";break;case R.id.iv_delete:Toast.makeText(MainActivity.this, showString + "已被清空",Toast.LENGTH_SHORT).show();showString = "";break;case R.id.author:Toast.makeText(MainActivity.this, "郑明亮\n软件⼯程\nQQ:1072307340", Toast.LENGTH_SHORT).show();break;default:break;}if (exception.equals(""))show.setText(showString);else {show.setText(exception);exception = "";}// 设置⽂本框颜⾊;if (!show.getText().toString().equals("")) {delete.setBackgroundColor(R.drawable.delete_gray);}else {delete.setBackgroundResource(R.drawable.delete);}}}再贴布局activity_main.xml:<LinearLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.calculator.MainActivity" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><EditTextandroid:id="@+id/et_show"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="请输⼊数字" /><ImageViewandroid:id="@+id/iv_delete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignRight="@id/et_show"android:src="@drawable/delete_and_deletegray" > </ImageView></RelativeLayout><GridLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@+id/et_show"android:focusable="false"android:gravity="center"android:layout_marginTop="25dp"android:columnCount="4"android:horizontalSpacing="0dp"android:orientation="horizontal"android:stretchMode="none" ><Buttonandroid:id="@+id/bt_1"android:layout_height="wrap_content"android:text="1" /><Buttonandroid:id="@+id/bt_2"android:text="2" /><Buttonandroid:id="@+id/bt_3"android:text="3" /><Buttonandroid:id="@+id/bt_div"android:text="/" /><Buttonandroid:id="@+id/bt_4"android:text="4" /><Buttonandroid:id="@+id/bt_5"android:text="5" /><Buttonandroid:id="@+id/bt_6"android:text="6" /><Buttonandroid:id="@+id/bt_mutilate"android:text="X" /><Buttonandroid:id="@+id/bt_7"android:text="7" /><Buttonandroid:id="@+id/bt_8"android:text="8" /><Buttonandroid:id="@+id/bt_9"android:text="9" /><Buttonandroid:id="@+id/bt_sub"android:text="-" /><Buttonandroid:id="@+id/bt_0"android:layout_columnSpan="2"android:layout_gravity="fill_horizontal"android:text="0"android:width="2dp" /><Buttonandroid:id="@+id/bt_c"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="C" /><Buttonandroid:id="@+id/bt_plus"android:layout_gravity="fill_vertical"android:layout_rowSpan="2"android:text="+" /><Buttonandroid:id="@+id/bt_equ"android:layout_columnSpan="3"android:layout_gravity="fill_horizontal"android:text="=" /></GridLayout><TextViewandroid:id="@+id/author"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Author:Bri"/><TextViewandroid:id="@+id/test"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="test:"/></LinearLayout>我还写了⼀个drawable的xml,⾃⼰看吧delete_and_deletegray.xml:<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="/apk/res/android"><item android:drawable="@drawable/delete_gray" android:state_focused="false" android:state_pressed="false"></item><item android:drawable="@drawable/delete" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/> <item android:drawable="@drawable/delete" android:state_pressed="true" android:state_selected="false"/><item android:drawable="@drawable/delete" android:state_focused="true" android:state_pressed="true"/></selector>附:完整实例代码点击此处。

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简易计算器的实现

android简易计算器的实现最近接触了android开发就试着写了⼀个计算器的⼩程序:在xml⽂件中的布局代码如下:1<?xml version="1.0" encoding="utf-8"?>2<LinearLayout xmlns:android="/apk/res/android"3 xmlns:tools="/tools"4 android:id="@+id/activity_ji_suan02"5 android:layout_width="match_parent"6 android:layout_height="match_parent"7 android:orientation="vertical"8 tools:context="com.example.whs.sample01_1_activity.JiSuanActivity02">910<TextView11android:id="@+id/tv"12 android:layout_width="match_parent"13 android:layout_height="40dp"14 android:textSize="30dp"15 android:text="0"16 android:textColor="#ff0000"17 android:gravity="center_vertical|right"18 android:layout_marginRight="5dp"19 android:layout_marginLeft="5dp"20 android:background="#FFFF00"21/>22<!--7 8 9 + -->23<LinearLayout24android:layout_width="match_parent"25 android:layout_height="wrap_content"26 android:paddingTop="5dp"27 android:orientation="horizontal"28>2930<Button31android:id="@+id/Button07"32 android:text="7"33 android:textSize="25dp"34 android:layout_width="80dp"35 android:layout_height="wrap_content"/>36<Button37android:id="@+id/Button08"38 android:text="8"39 android:textSize="25dp"40 android:layout_width="80dp"41 android:layout_height="wrap_content"/>42<Button43android:id="@+id/Button09"44 android:text="9"45 android:textSize="25dp"46 android:layout_width="80dp"47 android:layout_height="wrap_content"/> 48<Button49android:id="@+id/ButtonJia"50 android:text="+"51 android:textSize="25dp"52 android:layout_width="80dp"53 android:layout_height="wrap_content"/> 5455</LinearLayout>5657<!--4 5 6 - -->58<LinearLayout59android:layout_width="match_parent"60 android:layout_height="wrap_content"61 android:paddingTop="5dp"62 android:orientation="horizontal"63>6465<Button66android:id="@+id/Button04"67 android:text="4"68 android:textSize="25dp"69 android:layout_width="80dp"70 android:layout_height="wrap_content"/> 71<Button72android:id="@+id/Button05"73 android:text="5"74 android:textSize="25dp"75 android:layout_width="80dp"76 android:layout_height="wrap_content"/> 77<Button78android:id="@+id/Button06"79 android:text="6"80 android:textSize="25dp"81 android:layout_width="80dp"82 android:layout_height="wrap_content"/> 83<Button84android:id="@+id/ButtonJian"85 android:text="-"86 android:textSize="25dp"87 android:layout_width="80dp"88 android:layout_height="wrap_content"/> 8990</LinearLayout>9192<!--1 2 3 * -->93<LinearLayout94android:layout_width="match_parent"95 android:layout_height="wrap_content"96 android:paddingTop="5dp"97 android:orientation="horizontal"98>99100<Button101android:id="@+id/Button01"102 android:text="1"103 android:textSize="25dp"104 android:layout_width="80dp"105 android:layout_height="wrap_content"/> 106<Button107android:id="@+id/Button02"108 android:text="2"109 android:textSize="25dp"110 android:layout_width="80dp"111 android:layout_height="wrap_content"/> 112<Button113android:id="@+id/Button03"114 android:text="3"115 android:textSize="25dp"116 android:layout_width="80dp"117 android:layout_height="wrap_content"/> 118<Button119android:id="@+id/ButtonCheng"120 android:text="*"121 android:textSize="25dp"122 android:layout_width="80dp"123 android:layout_height="wrap_content"/> 124125</LinearLayout>126127<!--0 C = / -->128<LinearLayout129android:layout_width="match_parent"130 android:layout_height="wrap_content"131 android:paddingTop="5dp"132 android:orientation="horizontal"133>134135<Button136android:id="@+id/Button00"137 android:text="0"138 android:textSize="25dp"139 android:layout_width="80dp"140 android:layout_height="wrap_content"/>141<Button142android:id="@+id/ButtonC"143 android:text="C"144 android:textSize="25dp"145 android:layout_width="80dp"146 android:layout_height="wrap_content"/>147<Button148android:id="@+id/ButtonDeng"149 android:text="="150 android:textSize="25dp"151 android:layout_width="80dp"152 android:layout_height="wrap_content"/>153<Button154android:id="@+id/ButtonChu"155 android:text="/"156 android:textSize="25dp"157 android:layout_width="80dp"158 android:layout_height="wrap_content"/>159160</LinearLayout>161162163164165166</LinearLayout>在activity中实现具体的功能1package com.example.whs.sample01_1_activity;23import android.provider.Settings;4import android.support.v7.app.AppCompatActivity;5import android.os.Bundle;6import android.view.View;7import android.widget.Button;8import android.widget.TextView;9import android.widget.Toast;1011public class JiSuanActivity02 extends AppCompatActivity {1213 TextView tv;14int[] buttons; //数字按钮数组15int result;16int result0;17int result1;1819//按钮对象声明20 Button buttonC;21 Button buttonJia;22 Button buttonJian;23 Button buttonCheng;24 Button buttonChu;25 Button buttonDengyu;2627 String str1; //旧输⼊的值28 String str2; //新输⼊的值2930int flag=0; //计算标志位,0第⼀次输⼊;1加; 2减; 3乘; 4除; 5等于 31 Button temp;3233 @Override34protected void onCreate(Bundle savedInstanceState) {35super.onCreate(savedInstanceState);36 setContentView(yout.activity_ji_suan02);3738 initButton();39//清空按钮点击事件40 buttonC.setOnClickListener(new View.OnClickListener() {41 @Override42public void onClick(View view) {43 str1 = "";44 str2 = "";45 tv.setText("0");46 result = 0;47 result1 = 0;48 result0 = 0;49 flag = 0;50 }51 });5253//监听54for (int i = 0; i < buttons.length; i++){55 temp = getBtnForId(buttons[i]);56 temp.setOnClickListener(new View.OnClickListener() {57 @Override58public void onClick(View view) {59if (flag != 0){60 str1 = "";61 }else {62 str1 = tv.getText().toString().trim();63if (str1.equals("0")){64 str1 = "";65 }66 }6768 str1 = str1 + String.valueOf(((Button)view).getText()); //获取新值69 tv.setText(str1);70 }71 });72 }7374 buttonListener(buttonJia, 1);75 buttonListener(buttonJian, 2);76 buttonListener(buttonCheng, 3);77 buttonListener(buttonChu, 4);7879 buttonDengyu.setOnClickListener(new View.OnClickListener() {80 @Override81public void onClick(View view) {8283 result1 = Integer.parseInt(str1);8485if (flag == 1){86 result = result0 + result1;87 }else if (flag == 2){88 result = result0 - result1;89 }else if (flag == 3){90 result = result0 * result1;91 }else if (flag == 4){92if (result1 == 0){93 Toast.makeText(JiSuanActivity02.this, "除数不能为0", Toast.LENGTH_SHORT).show();94 }else {95 result = result0 / result1;96 }9798 }else if (flag == 0){99 result = result1;100 }101 String str = (result + "").trim();102103if (result1 == 0 && flag == 4){104 str = "错误";105 }106 tv.setText(str);107 Toast.makeText(JiSuanActivity02.this, "结果是:" + result, Toast.LENGTH_SHORT).show(); 108 }109 });110 }111112//初始化控件资源113public void initButton(){114 tv = (TextView)this.findViewById();115 str1 = String.valueOf(tv.getText());116 str2 = "";117 buttonC = getBtnForId(R.id.ButtonC);118 buttonJia = getBtnForId(R.id.ButtonJia);119 buttonJian = getBtnForId(R.id.ButtonJian);120 buttonCheng = getBtnForId(R.id.ButtonCheng);121 buttonChu = getBtnForId(R.id.ButtonChu);122 buttonDengyu = getBtnForId(R.id.ButtonDeng);123124 buttons = new int[]{125 R.id.Button00,R.id.Button01,R.id.Button02,126 R.id.Button03,127 R.id.Button04,R.id.Button05,R.id.Button06,128 R.id.Button07,R.id.Button08,R.id.Button09129 };130 }131//根据id获取Button132public Button getBtnForId(int rID){133 Button btn = (Button)this.findViewById(rID);134return btn;135 }136//按钮监听137public void buttonListener(Button button, final int id){138 button.setOnClickListener(new View.OnClickListener() { 139 @Override140public void onClick(View view) {141 String str = tv.getText().toString().trim();142 result0 = Integer.parseInt(str);143//tv.setText("");144 flag = id;145 }146 });147 }148 }。

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计算器应用。

在Android Studio中开发一个简单的计算器应用

在Android Studio中开发一个简单的计算器应用

在Android Studio中开发一个简单的计算器应用随着智能手机的普及,计算器应用成为了人们生活中不可或缺的工具之一。

为了满足用户的需求,我们决定在Android Studio中开发一个简单的计算器应用。

这个应用将提供基本的四则运算功能,并且界面简洁易用。

首先,在Android Studio中创建一个新的项目。

选择合适的应用名称和包名。

接下来,我们需要设计应用的用户界面。

我们希望用户界面简洁明了,方便用户使用。

可以考虑使用一个TextView显示计算结果,以及多个Button用于输入数字和操作符。

在开发计算器的过程中,我们需要处理用户的输入并进行相应的计算。

为此,我们可以使用一个EditText控件来接收用户的输入,并通过按钮的点击事件来获取用户点击的数字和操作符。

然后,我们可以使用Java中的数学库来进行四则运算,并将结果显示在TextView中。

通过Android Studio提供的布局编辑器,我们可以轻松地将TextView和Button布局在界面上。

可以使用LinearLayout或RelativeLayout进行布局,根据需要设置各个控件之间的位置和大小。

此外,还可以设置按钮的点击事件,使其能够响应用户的输入。

在处理用户输入时,需要考虑一些特殊情况。

例如,当用户输入非法字符或进行除法时需要进行错误处理。

可以通过在代码中添加条件判断语句来实现这些功能。

另外,还可以添加一些额外的功能,如清除输入、撤销操作等,以提升用户体验。

在开发过程中,可以使用Android Studio提供的调试工具来检查代码是否正常运行。

可以设置断点,逐步执行代码,并查看变量的值。

这些工具能够帮助我们快速定位和修复错误。

为了使应用具有良好的用户体验,我们还可以添加一些动画效果和过渡效果。

例如,当用户点击按钮时,可以添加按钮缩放、淡入淡出等动画效果,使界面更加生动有趣。

除了基本功能以外,我们还可以考虑添加更多的功能来完善应用。

Android简单计算器课程设计

Android简单计算器课程设计

Android简单计算器课程设计广东工业大学华立学院课程名称手机游戏开发题目名称简单计算器学生学部,系, 机电与信息工程学部专业班级 12计算机科学与技术2班学号学生姓名任课教师2015年 6月 20日一、课程考试,设计,的内容基于Android平台的简单计算器二、课程考试,设计,的要求清晰描述应用的策略和基本框架~并设计相关的类~描述各个类的作用和关系~画出类图关系~叙述使用到的技术点。

目录1课程综述 .............................................. 错误~未定义书签。

2 手机应用设计.......................................... 错误~未定义书签。

2.1 开发背景...................................................................... ........................................................................ 错误~未定义书签。

2.2 设计思想...................................................................... ........................................................................ 错误~未定义书签。

2.3 策略描述.............................................................................................................................................. 错误~未定义书签。

2.4 设计将达到的目标 ..................................................................... ....................................................... 错误~未定义书签。

安卓计算器开发实验报告

安卓计算器开发实验报告

上海电力学院嵌入式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简单计算器课程设计

Android简单计算器课程设计

Android简单计算器课程设计广东工业大学华立学院课程名称手机游戏开发题目名称简单计算器学生学部,系, 机电与信息工程学部专业班级 12计算机科学与技术2班学号学生姓名任课教师2015年 6月 20日一、课程考试,设计,的内容基于Android平台的简单计算器二、课程考试,设计,的要求清晰描述应用的策略和基本框架~并设计相关的类~描述各个类的作用和关系~画出类图关系~叙述使用到的技术点。

目录1课程综述 .............................................. 错误~未定义书签。

2 手机应用设计.......................................... 错误~未定义书签。

2.1 开发背景...................................................................... ........................................................................ 错误~未定义书签。

2.2 设计思想...................................................................... ........................................................................ 错误~未定义书签。

2.3 策略描述.............................................................................................................................................. 错误~未定义书签。

2.4 设计将达到的目标 ..................................................................... ....................................................... 错误~未定义书签。

安卓计算器设计报告

安卓计算器设计报告

硬件综合课程设计实验日志指导教师实验时间:2014年12月12日学院计算机学院专业信息安全班级0441103 学号2011211774 姓名张轶实验室信科402实验题目:智能终端----计算器程序实验目的:该课程设计的目的主要是锻炼学生利用已学习的各种语言及计算机综合知识来设计一个与具体类IT产品相关的一个硬件、软件综合系统,并在其系统上开发一定的应用程序,实际调试运行通过,达到提高实际动手能力的作用,尤其是软硬结合的能力。

实验要求:任务:利用键盘输入数字及运算符,在LCD屏幕上显示计算结果。

要求:1)熟悉开发板环境;2)熟悉LCD驱动原理,键盘驱动原理;3)设置各个按键,使其代表一定的数字及运算符,实现加减乘除运算。

主要代码:布局<RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><EditTextandroid:text="TextView"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:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/one" android:id="@+id/button1"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/two" android:id="@+id/button2"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/three" android:id="@+id/button3"></Button><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:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/fore" android:id="@+id/button4"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/five" android:id="@+id/button5"></Button><Buttonandroid:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/six" android:id="@+id/button6"></Button><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:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/seven" android:id="@+id/button7"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/eight" android:id="@+id/button8"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:layout_weight="1"android:textSize="25sp" android:text="@string/nine" android:id="@+id/button9"></Button><Buttonandroid:layout_width="40dip"android:layout_height="fill_parent"android:textSize="25sp" android:text="@string/cheng" android:id="@+id/button03"></Button></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></RelativeLayout>算法package com.zy.jsq;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {String str="";EditText et;int c=0,flag=0;double b=0.0,g=0.0,f=0.0;View vi;public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stubmenu.add(0, 1, 1, "退出");return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stubif(item.getItemId()==1){finish();}return super.onOptionsItemSelected(item);}//计算方法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;}@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.activity_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;}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;}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);}}}});}}实验结果:1、软件界面2、软件计算结果心得体会:通过这次实验,熟悉了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 实验名称:计算器班级:11201221 姓名:林平君同组人:指导教师评定:签名:一.实验目的1.熟悉Android的项目的开发2.理解最少一种布局方式,本实验利用RelativeLayout3.理解后台代码如何控制前台的控件4.实现两个activity间进行切换二.实验要求1.完成计算器的四则法则运算2.要有清屏3.布局比较美观4.两个activity正常的切换三.源代码与分析布局:本实验用的RelativeLayout布局:关键点是要掌握RelativeLayout布局的设置属性,要熟记于心。

对起始页的设计:<ImageButtonandroid:id="@+id/imageButtonId"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@drawable/smile"/><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center_horizontal"android:layout_below="@id/imageButtonId"android:textSize="30dp"android:textColor="#808000"android:background="#DCDCDC"android:layout_marginTop="30dp"android:layout_marginBottom="15dp"android:padding="5dp"android:text="欢迎使用Beyond的计算器"/> <Buttonandroid:id="@+id/button"android:layout_below="@id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="5dp"android:text="开始使用"/>效果如图:计算器主要界面:Xml代码:<TextViewandroid:id="@+id/blanktextView1"android:layout_width="match_parent"android:layout_height="80dp"android:textSize="30sp"android:background="#D2B48C"android:hint="请输入"/><Buttonandroid:id="@+id/blankButton"android:layout_width="260dp"android:layout_height="50dp"android:background="#8B4513"android:layout_below="@id/blanktextView1"android:layout_alignParentLeft="true"/> <Buttonandroid:id="@+id/deleteButton"android:layout_width="96dp"android:layout_height="50dp"android:background="#5F9EA0"android:layout_below="@id/blanktextView1"android:layout_alignParentRight="true"android:text="清屏"android:textColor="#F5F5F5"/><Buttonandroid:id="@+id/numberButton7"android:layout_width="85dp"android:layout_height="106dp"android:background="#696969"android:layout_below="@id/blankButton"android:layout_alignParentLeft="true"android:layout_marginTop="2dp"android:text="7"android:textColor="#F5F5F5"android:textSize="35sp"/>效果如图:在computer_main.java中1.数字按钮代码分析:class button0Listener implements OnClickListener{@Overridepublic void onClick(View arg0) {button0=(Button)findViewById(R.id.numberButton0);blankTextView=(TextView)findViewById(R.id.blanktextView1);String text = button0.getText().toString();String early=blankTextView.getText().toString();blankTextView.setText(early+text);}}代码分析:以上是一个单击按钮0时,可以获取0的文本。

android开发计算器设计开发报告

android开发计算器设计开发报告

a n d r o i d开发计算器设计开发报告Revised by Petrel at 2021《安卓开发》程序设计报告题目简单计算器开发专业(班级)网工111班姓名张波波学号指导教师赵(老师)日期2014.5.7目录一、设计说明: (4)1.设计内容:Android简单应用程序开发,简单计算器。

(4)2程序说明: (4)二、开发环境: (4)三、概要设计: (4)3.1系统的总体 (4)四、程序流程和系统功能设计 (5)4.1程序流程设计 (5)4.2.系统功能设计 (6)4.3基于Android平台系统具体设计 (6)4.3.1总体模块详细设计 (6)4.3.2输入模块详细设计 (6)4.3.3显示模块详细设计 (7)4.3.4计算模块详细设计 (7)五、计算器系统实现 (8)5.1Android应用程序构成 (8)六、截图说明 (9)1、图标 (9)2界面 (9)3运算界面 (9)4错误输入 (9)5设计平台界面 (9)6签名导出apk (9)七、总结 (9)课程设计任务书一、设计说明:1.设计内容:Android简单应用程序开发,简单计算器。

2程序说明:1、计算器界面友好,方便使用。

2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。

3、能够判断用户输入运算数是否正确。

4、4、支持小数运算。

5、具有退格功能,能够删除最后一个输入,ce。

6、具有清除功能,删除所有,c。

7、具有结果存储功能,能够显示存储器状态,支持触屏手机。

8、9、支持最低版本2.0,最高版本4.4。

开发时为4.2二、开发环境:开发环境:本系统是采用Eclipse+EclipseMe+JDK+ADT作为开发平台。

事实上为了节约时间就直接用Google公司安给的直接绑定好的adt-bundle-windows-x86_64开发,只需要配置下环境变量,无需要关联等操作。

三、概要设计:3.1系统的总体整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其她功能)这三大部分。

安卓计算器实验报告

安卓计算器实验报告

安卓计算器实验报告一、实验目的本次实验的目的是开发一款功能齐全、操作便捷的安卓计算器应用程序,以满足用户在日常生活和工作中对基本计算和科学计算的需求。

二、实验环境1、操作系统:Windows 102、开发工具:Android Studio3、编程语言:Java 和 XML4、测试设备:安卓手机(型号:_____ ,操作系统版本:_____ )三、实验步骤(一)需求分析在开始开发之前,对计算器的功能需求进行了详细的分析。

确定了以下主要功能:1、基本四则运算(加、减、乘、除)2、百分比计算3、平方根计算4、幂运算5、括号优先级计算6、历史记录功能7、清除和撤销操作(二)界面设计使用 XML 布局文件设计计算器的用户界面。

界面包括数字按钮、运算符按钮、等号按钮、清除按钮、撤销按钮和显示计算结果和表达式的文本框。

(三)功能实现1、数字和运算符的点击事件处理为每个数字按钮和运算符按钮设置点击事件监听器。

当用户点击数字按钮时,将数字添加到表达式中;点击运算符按钮时,根据当前的计算状态进行相应的处理。

2、计算逻辑使用 Java 中的数学运算方法实现四则运算、百分比计算、平方根计算和幂运算。

根据运算符的优先级进行计算,确保计算结果的准确性。

3、括号处理通过栈数据结构来处理括号,确保括号内的表达式先计算。

4、历史记录使用数据库来存储计算的历史记录,包括表达式和结果。

用户可以查看历史记录,并重新使用其中的表达式进行计算。

5、清除和撤销操作实现清除按钮的功能,将表达式和结果清空;撤销按钮的功能则是回退上一步的操作。

(四)测试与优化1、功能测试对计算器的各项功能进行了全面的测试,包括基本运算、复杂表达式计算、括号计算、历史记录查看等。

确保每个功能都能正常工作,计算结果准确无误。

2、性能测试对计算器的响应速度进行了测试,优化了计算算法和数据结构,提高了计算的效率。

3、兼容性测试在不同型号和操作系统版本的安卓手机上进行了测试,确保计算器应用在各种设备上都能正常运行,界面布局合理。

安卓计算器开发实验报告

安卓计算器开发实验报告

上海电力学院嵌入式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/目录下新建.java文件,计算器的按钮算法等都在此实现。

(三)、声明工程名1、在应用中有三处需要声明,首先是在2、然后是在四、代码展示(一)、.xml界面代码<?xml version=""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: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: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功能代码import 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; ;flag = false;}}});(new OnClickListener(){@Overridepublic void onClick(View v){if () != 0){() - 1);());}}});(new OnClickListener(){@Overridepublic 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;}});(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "-";if (!b_sub && !() == "")){num1 = ());(num1));str_display = new StringBuffer("");b_sub = true;} else{if (!() == "")){num1 -= ());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = (str_result);str_result = null;}(num1));}flag = true;}});(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "*";if (!b_mul && !() == "")){num1 = ());(num1));str_display = new StringBuffer("");b_mul = true;} else{if (!() == "")){num1 *= ());str_display = new StringBuffer("");}if (!(str_result == null)){num1 = (str_result);str_result = null;}(num1));}flag = true;}});(new OnClickListener(){@Overridepublic void onClick(View v){str_oper = "/";if (!b_div && !() == "")){num1 = ());(num1));str_display = new StringBuffer("");b_div = true;} else{if (!() == "")){if ()) == 0){,"除数不能为0!", .show();} else{num1 /= ());str_display = new StringBuffer("");}}if (!(str_result == null)){num1 = (str_result);str_result = null;}(num1));}flag = true;}});(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;("0");}});(new OnClickListener(){@Overridepublic void onClick(View v){if ("+")){num2 = ());str_result = ((num1 + num2));(str_result);str_display = new StringBuffer("");}if ("-")){num2 = ());str_result = ((num1 - num2));(str_result);str_display = new StringBuffer("");}if ("*")){num2 = ());str_result = ((num1 * num2));(str_result);str_display = new StringBuffer("");}if ("/")){num2 = ());if (!(num2 == 0)){str_result = ((num1 / num2));(str_result);} else{,"除数不能为0!", .show();}str_display = new StringBuffer("");}}});}}五、实验小结通过此次Android应用的开发,使我学会了很多在其他理论课上所无法学到的东西。

Android开发实战:创建一个简单的计算器应用(四)

Android开发实战:创建一个简单的计算器应用(四)

Android开发实战:创建一个简单的计算器应用现在,随着智能手机的普及,Android操作系统成了最受欢迎的移动操作系统之一。

作为一个开发者,学习如何创建Android应用是非常有用的。

在本篇文章中,我将详细介绍如何创建一个简单的计算器应用。

1. 概述在本节中,我们将概述我们将要创建的计算器应用。

我们的应用将有一个简洁而直观的用户界面,用户可以输入数字和进行简单的四则运算。

我们将使用Java编程语言和Android Studio开发工具来实现这个应用。

2. 设计用户界面在这一节中,我们将讨论如何设计应用的用户界面。

我们将使用Android Studio的布局编辑器来创建一个用于输入数字和进行运算的界面。

界面应该简洁、易于使用,并且在不同尺寸的设备上都能正常显示。

3. 实现基本功能在这一节中,我们将介绍如何实现应用的基本功能。

我们需要编写代码来处理用户输入,进行运算,并将结果显示在屏幕上。

我们将使用Java编程语言来编写这些代码,并使用Android Studio的调试工具来调试代码。

4. 添加高级功能在这一节中,我们将讨论如何添加一些高级功能到我们的应用中。

例如,我们可以添加一个功能来处理浮点数运算,或者添加一个功能来处理百分比计算。

我们还可以为用户提供选择不同的主题颜色的选项,以使应用更加个性化。

5. 优化性能在这一节中,我们将介绍如何优化应用的性能。

我们将使用一些技巧和技术来减少应用的内存使用和CPU占用,并提高应用的响应速度。

我们还将介绍如何使用Android设备的硬件功能来提高应用的性能。

6. 调试和测试在这一节中,我们将讨论如何进行应用的调试和测试。

我们将介绍一些常用的调试和测试工具,并提供一些建议来帮助您更好地调试和测试您的应用。

我们还将介绍如何使用Android设备的模拟器来测试应用。

7. 发布应用在这一节中,我们将介绍如何发布您的应用。

我们将讨论如何准备应用的发布版本,并提供一些发布应用时应注意的事项。

Android开发实战:创建一个简单的计算器应用(一)

Android开发实战:创建一个简单的计算器应用(一)

Android开发实战:创建一个简单的计算器应用在当今的移动应用开发领域,Android平台凭借其广泛的用户群体和开放的生态系统成为了最受关注和热门的开发平台之一。

本文将引导读者通过实际案例,学习如何使用Android Studio和Java语言开发一个简单的计算器应用。

第一步:创建项目打开Android Studio并选择“创建新项目”,然后填写应用的名称和包名等信息。

选择适当的最低API级别和目标API级别,这取决于您所需的最低兼容版本和目标用户群。

第二步:设计界面在项目结构中打开“res”文件夹,然后右击“layout”文件夹并选择“新建布局资源文件”。

在弹出的对话框中输入布局文件的名称,并选择“约束布局”作为根布局。

通过拖拽和调整视图的位置和大小,设计一个简洁明了的计算器界面,包括数字按钮、运算符按钮和显示结果的文本框。

第三步:编写代码在“java”文件夹下的包名文件夹中,找到并打开“”文件。

在类的内部,创建必要的成员变量和UI元素的引用,如按钮和文本框。

然后,在“onCreate”方法中使用“findViewById”方法将UI元素与代码中的实例进行关联。

接下来,编写计算逻辑的代码。

您可以使用Java语言提供的数学运算方法,例如“add”、“subtract”、“multiply”和“divide”等。

在用户点击等号按钮时,获取用户输入的数字和运算符,并将其传递给计算方法进行计算。

最后,将计算结果显示在文本框中。

第四步:测试和调试使用模拟器或真实设备运行应用,并在计算器界面上测试各种场景和功能。

确保计算逻辑和用户交互的一致性,并处理各种可能的异常情况。

如果发现问题或错误,使用调试工具和日志输出来跟踪和修复错误。

第五步:发布应用一旦您对应用的功能和用户体验感到满意,您可以将其准备以APK文件的形式发布到Google Play商店或其他应用市场。

在发布前,确保应用的版本号、应用图标、应用截图和应用描述等信息准备完备。

基于安卓开发的计算器课程设计报告

基于安卓开发的计算器课程设计报告

大庆师范学院《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压入操作符栈,最后返回一。

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

简易计算机的设计摘要: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()用户可以开始与活动进行交互时调用。

如动画播放和音乐播放;void onPause()活动将要进入后台运行时调用。

(此时前台启动了另一个活动);void onStop()不需要某个活动了,就调用;void onDestroy()销毁活动。

(2)多个Activity之间的跳转:通过Intent类实现屏幕之间的跳转(包括没有参数关系和需要传递参数两种情况)。

(3)两个Activity之间进行数据交换:startActivity() 只有Intent一个参数;public void startSubActivity(Intent intent, int requestCode) (requestCode:用来标识某一个调用,一般定义一个常量)。

传过去:函数原型为: public Intent setData(ContentURI data) 然后,参数带到新的Activity 后,同样用Activity.getIntent()函数可得到当前过来的Intent对象,然后用getData()就取到参数了。

传回来:函数原型为:public final void setResult(int resultCode, String data)。

2、Intent的相关知识Intent 是描述应用想要做什么。

Android 使用了Intent 这个特殊类,实现在屏幕与屏幕之间移动。

Intent 数据结构两个最重要的部分是动作和动作对应的数据。

Intent类绑定一次操作,它负责携带这次操作所需要的数据以及操作的类型等。

3、Layout用于用户界面设计。

包含AbsoluteLayout, FrameLayout,GridView,LinearLayout, ListLayout, RadioGroup, TableLayout等等。

(1)线性布局LinearLayout:垂直:android:orientation="vertical“;水平:android:orientation="horizontal"(2)相对布局RelativeLayout:让子元素指定它们相对于其他元素的位置(通过ID 来指定)或相对于父布局对象。

在RelativeLayout布局里的控件包含丰富的排列属性:Layout above:控件在指定控件的上方;Layout below:控件在指定控件的下方;Layout to left of……根据要求,系统实现以下功能:计算器界面友好,具有基本的加、减、乘、除功能,支持触屏手机,整个程序基于android技术开发。

三、设计流程1、系统的软件结构图2、功能的操作流程得出程序结果后,输入数据,选择运算符号,再输入数据,选择等号,即可得到结果。

3、计算器模块整个项目工程的目录文件Src 文件存放的是文本中开发的所有java 文件,java 文件时整个项目的代码,gen 下面的R.java 为Eclipse 自动生成的系统文件。

Res 是存放整个系统所有到的所有资源。

Layout 文件下main.xml 文件的配置生成内容。

计算器 基本加减乘除运算 加法 减法 除法 乘法 其他运算开方 *2运算 正负运算 清除运算四、程序源代码1、主文件JisuanqiActivity.javaSrc/jisuqi.a/JisuanqiActivity.java文件时此项目的主要文件,它调用各个公用文件来实现具体的功能。

文件JisuanqiActivity.java的具体代码如下:package jisuanqi.a;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;public class JisuanqiActivity extends Activity {/** Called when the activity is first created. */private EditText output=null;private EditText input=null;private Button btn0=null;private Button btn1=null;private Button btn2=null;private Button btn3=null;private Button btn4=null;private Button btn5=null;private Button btn6=null;private Button btn7=null;private Button btn8=null;private Button btn9=null;private Button btnadd=null;private Button btnsubtract=null;private Button btnmultiply=null;private Button btndivide=null;private Button btnclear=null;private Button btnresult=null;private Button btndot=null;private Button btnzhengshu=null;private Button btnkaifang=null;private Button btnpingfang=null;private String str="";//保存数字private String strold="";//原数字private char act=' ';//记录“加减乘除等于”符号private int count=0;//判断要计算的次数,如果超过一个符号,先算出来一部分private Double result=0.0;//计算的输出结果private Boolean errBoolean=false;//有错误的时候为true,无错为false private Boolean flagBoolean=false;//一个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前面是数字才可以响应运算消息private Boolean flagDot=false; //小数点标志位@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);output=(EditText)findViewById(R.id.output);input=(EditText)findViewById(R.id.input);btn0=(Button)findViewById(R.id.zero);btn1=(Button)findViewById(R.id.one);btn2=(Button)findViewById(R.id.two);btn3=(Button)findViewById(R.id.three);btn4=(Button)findViewById(R.id.four);btn5=(Button)findViewById(R.id.five);btn6=(Button)findViewById(R.id.six);btn7=(Button)findViewById(R.id.seven);btn8=(Button)findViewById(R.id.eight);btn9=(Button)findViewById(R.id.nine);btnadd=(Button)findViewById(R.id.add);btnsubtract=(Button)findViewById(R.id.subtract);btnmultiply=(Button)findViewById(R.id.multiply);btndivide=(Button)findViewById(R.id.divide);btnclear=(Button)findViewById(R.id.clear);btnresult=(Button)findViewById(R.id.result);btndot=(Button)findViewById(R.id.dot);btnzhengshu=(Button)findViewById(R.id.zhengfu);btnkaifang=(Button)findViewById(R.id.kaifang);btnpingfang=(Button)findViewById(R.id.pingfang);//设置按钮侦听事件btn0.setOnClickListener(listener);btn1.setOnClickListener(listener);btn2.setOnClickListener(listener);btn3.setOnClickListener(listener);btn4.setOnClickListener(listener);btn5.setOnClickListener(listener);btn6.setOnClickListener(listener);btn7.setOnClickListener(listener);btn8.setOnClickListener(listener);btn9.setOnClickListener(listener);//执行运算btnadd.setOnClickListener(listener);btnsubtract.setOnClickListener(listener);btnmultiply.setOnClickListener(listener);btndivide.setOnClickListener(listener);btnclear.setOnClickListener(listener);btnresult.setOnClickListener(listener);btndot.setOnClickListener(listener);btnzhengshu.setOnClickListener(listener);btnkaifang.setOnClickListener(listener);btnpingfang.setOnClickListener(listener);}private OnClickListener listener=new OnClickListener() {public void onClick(View v){// TODO Auto-generated method stubswitch (v.getId()){//输入数字case R.id.zero:num(0) ;break;case R.id.one:num(1) ;break;case R.id.two:num(2) ;break;case R.id.three:num(3) ;break;case R.id.four:num(4) ;break;case R.id.five:num(5) ;break;case R.id.six:num(6) ;break;case R.id.seven:num(7) ;break;case R.id.eight:num(8) ;break;case R.id.nine:num(9) ;break;case R.id.dot:dot();break;//执行运算case R.id.zhengfu:zhengfu();break;case R.id.kaifang:kaifang();break;case R.id.add:add();break;case R.id.subtract: sub() ;break;case R.id.multiply: multiply() ; break;case R.id.divide: divide() ; break;case R.id.clear: clear();break;//计算结果case R.id.result:result();if(!errBoolean&&flagBoolean){output.setText(String.valueOf(result));}default:break;}if(act=='k'){input.setText(strold);}else {input.setText(strold+act+str);}output.setText(String.valueOf(result));}private void kaifang(){// TODO Auto-generated method stubif(flagBoolean) {act='k';strold=str;result();}}private void zhengfu(){// TODO Auto-generated method stubif(strold==""){result=Double.valueOf(str);}else{result=Double.valueOf(strold);}result=result*(-1);strold=String.valueOf(result);output.setText(String.valueOf(result));}private void dot(){// TODO Auto-generated method stubif(!flagDot){str=str+".";flagBoolean=false;flagDot=true;}}private void clear() {// TODO Auto-generated method stubstr=strold="";count=0;act=' ';result=0.0;flagBoolean=false;flagDot=false;input.setText(strold+act+str);output.setText("");}private void divide() {// TODO Auto-generated method stubif(flagBoolean){check();act='/';flagBoolean=false;}}private void multiply() {// TODO Auto-generated method stubif(flagBoolean){check();act='*';flagBoolean=false;}}private void sub() {// TODO Auto-generated method stubif(flagBoolean){check();act='-';flagBoolean=false;}}private void add() {// TODO Auto-generated method stubif(flagBoolean){check();act='+';flagBoolean=false;}}private void check() {// TODO Auto-generated method stubif(count>=1){result();str=String.valueOf(result);}strold=str;str="";count++;flagDot=false;}//计算输出结果private void result() {// TODO Auto-generated method stubif(flagBoolean){Double a,b;a=Double.parseDouble(strold);b=Double.parseDouble(str);if(b==0&&act=='/') {clear();output.setText("除数不能为零!");errBoolean=true;}if(!errBoolean){switch(act){case'+':result=a+b;break;case'-':result=a-b;break;case'*':result=a*b;break;case'/':result=a/b;break;case'k':result=Math.sqrt(a);break;default:break;}}}}private void num(int i) {// TODO Auto-generated method stubstr=str+String.valueOf(i);flagBoolean=true;}};}2、布局文件main.xml布局文件main.xml的具体代码如下所示:<?xml version="1.0"encoding="utf-8"?><ScrollView xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><LinearLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><EditTextandroid:id="@+id/input"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:editable="false"android:hint="@string/shuru"/><EditTextandroid:id="@+id/output"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_gravity="center"android:editable="false"android:gravity="right"android:hint="@string/shuchu"/><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/seven"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentLeft="true"android:text="@string/seven"android:textSize="40sp"/><Buttonandroid:id="@+id/eight"android:layout_height="70dp"android:layout_toRightOf="@id/seven"android:text="@string/eight"android:textSize="40sp"/><Buttonandroid:id="@+id/nine"android:layout_width="80dp"android:layout_height="70dp"android:layout_toRightOf="@id/eight"android:text="@string/nine"android:textSize="40sp"/><Buttonandroid:id="@+id/add"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentRight="true"android:layout_toRightOf="@id/nine"android:text="@string/add"android:textSize="40sp"/><Buttonandroid:id="@+id/four"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentLeft="true"android:layout_below="@id/seven"android:text="@string/four"android:textSize="40sp"/><Buttonandroid:id="@+id/five"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/eight"android:layout_toRightOf="@id/four"android:text="@string/five"android:textSize="40sp"/><Buttonandroid:id="@+id/six"android:layout_width="80dp"android:layout_below="@id/nine"android:layout_toRightOf="@id/five"android:text="@string/six"android:textSize="40sp"/><Buttonandroid:id="@+id/subtract"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentRight="true"android:layout_below="@id/add"android:layout_toRightOf="@id/six"android:text="@string/subtract"android:textSize="40sp"/><Buttonandroid:id="@+id/one"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentLeft="true"android:layout_below="@id/four"android:text="@string/one"android:textSize="40sp"/><Buttonandroid:id="@+id/two"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/five"android:layout_toRightOf="@id/one"android:text="@string/two"android:textSize="40sp"/><Buttonandroid:id="@+id/three"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/six"android:layout_toRightOf="@id/two"android:text="@string/three"android:textSize="40sp"/><Buttonandroid:id="@+id/multiply"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentRight="true"android:layout_below="@id/subtract"android:layout_toRightOf="@id/three"android:text="@string/multiply"android:textSize="40sp"/><Buttonandroid:id="@+id/zero"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentLeft="true"android:layout_below="@id/one"android:text="@string/zero"android:textSize="40sp"/><Buttonandroid:id="@+id/clear"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/two"android:layout_toRightOf="@id/zero"android:text="@string/clear"android:textSize="40sp"/><Buttonandroid:id="@+id/result"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/three"android:layout_toRightOf="@id/clear"android:text="@string/result"android:textSize="40sp"/><Buttonandroid:id="@+id/divide"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentRight="true"android:layout_below="@id/multiply"android:layout_toRightOf="@id/result"android:text="@string/divide"android:textSize="40sp"/><Buttonandroid:id="@+id/dot"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentLeft="true"android:layout_below="@id/zero"android:text="@string/dot"android:textSize="40sp"/><Buttonandroid:id="@+id/zhengfu"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/clear"android:layout_toRightOf="@id/dot"android:text="@string/zhengfu"android:textSize="40sp"/><Buttonandroid:id="@+id/kaifang"android:layout_width="80dp"android:layout_height="70dp"android:layout_below="@id/result"android:layout_toRightOf="@id/zhengfu"android:text="@string/kaifang"android:textSize="40sp"/><Buttonandroid:id="@+id/pingfang"android:layout_width="80dp"android:layout_height="70dp"android:layout_alignParentRight="true"android:layout_below="@id/divide"android:layout_toRightOf="@id/kaifang"android:text="@string/pingfang"android:textSize="40sp"/></RelativeLayout></LinearLayout></ScrollView>3、Strings.xml文件Valuas文件下Strings.xml文件的具体实现代码如下:<?xml version="1.0"encoding="utf-8"?><resources><string name="app_name">wzt的计算器</string><string name="zero">0</string><string name="one">1</string><string name="two">2</string><string name="three">3</string><string name="four">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="add">+</string><string name="subtract">-</string><string name="multiply">*</string><string name="divide">/</string><string name="clear">CE</string><string name="result">=</string><string name="shuru">请按数字键盘输入数字</string> <string name="shuchu">计算器输出结果</string><string name="dot">.</string><string name="zhengfu">+/-</string><string name="kaifang">√</string><string name="pingfang">X2</string></resources>五、设计结果1、加法运算结果2、减法运算结果3、乘法运算结果4、除法运算结果5、开方运算结果6、正负运算结果六、总结通过一周的实训课程设计,使我学习到了许多新的认识。

相关文档
最新文档