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

合集下载

安卓计算器开发实验报告

安卓计算器开发实验报告

嵌入式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开发——简易计算器的设计报告

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

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

android开发计算器课程设计

android开发计算器课程设计

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

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

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

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

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

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

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

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

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

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

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

android开发计算器课程设计

android开发计算器课程设计

android开发计算器课程设计一、教学目标本课程旨在通过学习Android开发计算器,使学生掌握Android应用开发的基本知识和技能,能够独立设计和开发简单的Android计算器应用。

1.理解Android开发的基本概念和框架。

2.掌握Android计算器的界面设计和事件处理。

3.熟悉Android计算器的数据存储和运算逻辑。

4.能够使用Android Studio进行基本的Android应用开发。

5.能够设计并实现一个简单的Android计算器应用。

6.能够对Android计算器应用进行调试和优化。

情感态度价值观目标:1.培养学生的创新意识和问题解决能力。

2.培养学生对Android开发技术的兴趣和热情。

3.培养学生的团队合作精神和自主学习能力。

二、教学内容本课程的教学内容主要包括Android开发的基本概念和框架、Android计算器的界面设计和事件处理、Android计算器的数据存储和运算逻辑等。

1.Android开发的基本概念和框架:介绍Android Studio的使用、Android应用的结构和生命周期、Activity和Service的概念和用法。

2.Android计算器的界面设计:介绍布局文件的使用、控件的属性和事件处理。

3.Android计算器的数据存储和运算逻辑:介绍SharedPreferences和SQLite数据库的使用、运算器的实现和数据的存储。

三、教学方法本课程将采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过讲解和演示,使学生理解Android开发的基本概念和框架、Android计算器的界面设计和事件处理、Android计算器的数据存储和运算逻辑。

2.案例分析法:通过分析典型的Android计算器应用案例,使学生掌握Android计算器的界面设计和事件处理、数据存储和运算逻辑的实现。

3.实验法:通过实际操作和调试,使学生掌握Android计算器的界面设计和事件处理、数据存储和运算逻辑的实现。

科学计算器安卓实训报告

科学计算器安卓实训报告

一、实训背景随着科技的发展,移动设备已经成为我们日常生活中不可或缺的一部分。

为了提高学习效率,许多学生选择使用科学计算器进行数学、物理、化学等科目的学习。

然而,市场上的科学计算器功能单一,无法满足不同用户的需求。

为了解决这个问题,本实训项目旨在开发一款功能强大、操作简便的科学计算器安卓应用程序。

二、实训目标1. 掌握Android开发环境搭建与配置;2. 熟悉Android应用程序开发流程;3. 学习科学计算器功能模块的设计与实现;4. 提高编程能力和团队协作能力。

三、实训内容1. 环境搭建与配置(1)安装Android Studio:下载并安装Android Studio,配置Android SDK和NDK。

(2)创建新项目:打开Android Studio,创建一个名为“Scientific Calculator”的新项目,选择“Empty Activity”模板。

2. 功能模块设计(1)主界面设计:设计一个简洁明了的主界面,包含数字键、运算符键、功能键等。

(2)计算器核心功能实现:实现加、减、乘、除等基本运算,以及科学计算器特有的三角函数、指数、对数等运算。

(3)单位转换:实现长度、质量、面积、体积、温度、速度等常用单位的转换。

(4)概率计算:实现概率分布、期望、方差等概率计算功能。

(5)历史记录:记录用户最近的计算结果,方便用户查阅。

3. 界面交互设计(1)按键震动反馈:当用户按下按键时,计算器产生震动反馈,提高用户体验。

(2)输入提示:当用户输入错误时,计算器提供输入提示,帮助用户纠正错误。

4. 优化与调试(1)优化代码:对代码进行优化,提高程序运行效率。

(2)调试程序:使用调试工具,查找并修复程序中的错误。

四、实训成果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/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 设计将达到的目标 ..................................................................... ....................................................... 错误~未定义书签。

安卓计算器

安卓计算器

Android实验报告题目:简易计算机专业:软件工程班级: 1101学号: 1130070120姓名:陈佳妍指导教师:傅龙天完成日期:2014年 3月 30 日一、课程设计目的二、目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。

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

三、课程设计内容实现计算机简单的四则运算三、课程设计过程功能实现:加法:减法:乘法:除法:7.附录源代码:package com.example.cjy;import android.os.Bundle;import android.app.Activity;import android.view.Gravity;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {Button b1;Button b2;Button b3;Button b4;Button b5;Button b6;Button b7;Button b8;Button b9;Button b10;Button b11;Button b12;Button b13;Button b14;Button b15;Button b16;Button b17;EditText t;float a,b,c;String all = "";int x = 0,y = 0,z = 0,k = 0;int clear = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.activity_main);//t.setGravity(Gravity.RIGHT);b1 = (Button)findViewById(R.id.button1);b2 = (Button)findViewById(R.id.button2);b3 = (Button)findViewById(R.id.button3);b4 = (Button)findViewById(R.id.button4);b5 = (Button)findViewById(R.id.button5);b6 = (Button)findViewById(R.id.button6);b7 = (Button)findViewById(R.id.button7);b8 = (Button)findViewById(R.id.button8);b9 = (Button)findViewById(R.id.button9);b10 = (Button)findViewById(R.id.button10);b11 = (Button)findViewById(R.id.button11);b12 = (Button)findViewById(R.id.button12);b13 = (Button)findViewById(R.id.button13);b14 = (Button)findViewById(R.id.button14);b15 = (Button)findViewById(R.id.button15);b16 = (Button)findViewById(R.id.button16);b17 = (Button)findViewById(R.id.button17);t = (EditText)findViewById(R.id.editText1);b1.setOnClickListener(new Button.OnClickListener(){//1@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b1.getText();t.setText(all);clear = 0;}else{all = all + b1.getText();t.setText(all);}}});b2.setOnClickListener(new Button.OnClickListener(){//2@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b2.getText();t.setText(all);clear = 0;}else{all = all + b2.getText();t.setText(all);}}});b3.setOnClickListener(new Button.OnClickListener(){//3@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b3.getText();t.setText(all);clear = 0;}else{all = all + b3.getText();t.setText(all);}}});b4.setOnClickListener(new Button.OnClickListener(){//4@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b4.getText();t.setText(all);clear = 0;}else{all = all + b4.getText();t.setText(all);}}});b5.setOnClickListener(new Button.OnClickListener(){//5@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b5.getText();t.setText(all);clear = 0;}else{all = all + b5.getText();t.setText(all);}}});b6.setOnClickListener(new Button.OnClickListener(){//6@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b6.getText();t.setText(all);clear = 0;}else{all = all + b6.getText();t.setText(all);}}});b7.setOnClickListener(new Button.OnClickListener(){//7@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b7.getText();t.setText(all);clear = 0;}else{all = all + b7.getText();t.setText(all);}}});b8.setOnClickListener(new Button.OnClickListener(){//8@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b8.getText();t.setText(all);clear = 0;}else{all = all + b8.getText();t.setText(all);}}});b9.setOnClickListener(new Button.OnClickListener(){//9@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b9.getText();t.setText(all);clear = 0;}else{all = all + b9.getText();t.setText(all);}}});b10.setOnClickListener(new Button.OnClickListener(){//.@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b10.getText();t.setText(all);clear = 0;}else{all = all + b10.getText();t.setText(all);}}});b11.setOnClickListener(new Button.OnClickListener(){//0@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";all = all + b11.getText();t.setText(all);clear = 0;}else{all = all + b11.getText();t.setText(all);}}});b12.setOnClickListener(new Button.OnClickListener(){//=@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(x == 1){b =Float.parseFloat(all.substring(all.indexOf("+")+1,all.length()));c = a + b;all = String.valueOf(c);}else if(y == 1){b =Float.parseFloat(all.substring(all.indexOf("-")+1,all.length()));c = a - b;all = String.valueOf(c);}else if(z == 1){b =Float.parseFloat(all.substring(all.indexOf("*")+1,all.length()));c = a * b;all = String.valueOf(c);}else if(k == 1){b =Float.parseFloat(all.substring(all.indexOf("/")+1,all.length()));c = a / b;all = String.valueOf(c);}elseall = "输入不正确";t.setText(all);clear = 1;x = 0;y = 0;z = 0;k = 0;}});b13.setOnClickListener(new Button.OnClickListener(){///@Overridepublic void onClick(View v) {// TODO Auto-generated method stubk = 1;if(clear == 1){all = "";all = all + b13.getText();t.setText(all);clear = 0;}else{a = Float.parseFloat(all);all = all + b13.getText();t.setText(all);}}});b14.setOnClickListener(new Button.OnClickListener(){//*@Overridepublic void onClick(View v) {// TODO Auto-generated method stubz = 1;if(clear == 1){all = "";all = all + b14.getText();t.setText(all);clear = 0;}else{a = Float.parseFloat(all);all = all + b14.getText();t.setText(all);}}});b15.setOnClickListener(new Button.OnClickListener(){//-@Overridepublic void onClick(View v) {// TODO Auto-generated method stuby = 1;if(clear == 1){all = "";all = all + b15.getText();t.setText(all);clear = 0;}else{a = Float.parseFloat(all);all = all + b15.getText();t.setText(all);}}});b16.setOnClickListener(new Button.OnClickListener(){//+@Overridepublic void onClick(View v) {// TODO Auto-generated method stubx = 1;if(clear == 1){all = "";all = all + b16.getText();t.setText(all);clear = 0;}else{a = Float.parseFloat(all);all = all + b16.getText();t.setText(all);}}});b17.setOnClickListener(new Button.OnClickListener(){//del@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(clear == 1){all = "";}else{all = all.substring(0,all.length()-1);}t.setText(all);}});}@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;}}四、课程设计体会这次项目android计算器项目设计是在eclipse平台下设计,到现在为止,该系统的功能基本符合了普通计算器的要求,整个系统界面简单明了,使用起来十分方便,具有普通计算器的基本功能,同时拓展了一些普通计算器上没有的部分科学计算功能。

安卓计算器设计报告

安卓计算器设计报告

硬件综合课程设计实验日志指导教师实验时间: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的计算器毕业设计报告一、引言随着移动设备的普及,人们对于计算器的需求已经不再局限于桌面电脑。

特别是在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()方法可以实现加法和减法运算。

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

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

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

(4)2程序说明: (4)二、开发环境: (5)三、概要设计: (5)3.1系统的总体 (5)四、程序流程和系统功能设计 (6)4.1程序流程设计 (6)4.2.系统功能设计 (6)4.3基于Android平台系统具体设计 (6)4.3.1总体模块详细设计 (7)4.3.2输入模块详细设计 (7)4.3.3显示模块详细设计 (7)4.3.4计算模块详细设计 (8)五、计算器系统实现 (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开发,只需要配置下环境变量,无需要关联等操作。

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的文本。

安卓计算器实验报告

安卓计算器实验报告

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

二、实验环境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的计算器毕业设计报告

基于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应用设计》课程设计报告题目:简易计算器专业班级:计算机科学与技术一班设计者:\\\\\\\\\\\\\\\\\\\\\\\\\\\\指导老师: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)。

基于安卓开发的计算器
课程设计报告
Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT
大庆师范学院《ANDROID应用设计》
课程设计报告
题目:简易计算器
专业班级:计算机科学与技术一班
设计者: \\\\\\\\\\\\\\\\\\\\\\\\\\\\
指导老师: P’P’P’P’
设计时间:2016-2017(1)
报告完成日期 2016 年12月30日
1 设计任务及要求
设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,以及清零操作。

本人学习Android有近半年的时间。

由于不同的Android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置。

Drawable-hdpi中放置分辨率最高的图标,drawable--ldpi中放置分辨率中等的图标,drawable-mdpi中放置在分辨率最低的图标。

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

在整个过程中,首先应该对输入进行容错处理,这样有利于提高用户体验。

对于用户的按键输入,
需要及时的现实在第一个EditView中。

用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。

容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。

在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记,在本文中使用了栈,对这些数据进行了存储。

2设计原理及总体框图
将表达式转为字符串类进行存储。

将表达式的字符串进行处理,将数字和运算符分别存放在两个栈中(也可以使用队列,理论上使用队列更为合理,在这我使用栈来实现)。

由于栈是后进先出的,所以先将两个栈进行逆序。

设计方法来处理两个栈从而得到相应的计算结果。

原理:将操作符设计优先级,乘除优先级设置为2,加减优先级设置为1。

一、从操作符栈中弹出两个操作符,假设为symbol1和symbol2,比较两个操作付的优先级,如果symbol1的优先级大于等于symbol2的则执行二,否则执行三。

二、从数字栈中弹出两个数字,计算这两个数字在操作符symbol1下的运算结果,结束后将结果压入数字栈,将symbol2压入操作符栈,最后返回一。

三、从数字栈中弹出三个数字,计算后两个数字在操作符symbol2下的运算结果,结束后将运算结果压入栈,将剩下的第一个数字压入栈,将操作符symbol1压入站,最后返回一。

结构框图如下所示:
图1:简易计算器整体结构框图
小组分工:组长:ukuk责程序算法查找及编写,仿真环境调试及运行;
组员:ukuk负责定义按键代码及其他代码查找,编写;
uk负责材料汇总、文档报告编写、及相关书籍资料查询。

3 详细设计
部分源代码:
private Button bt_1;
private Button bt_2;
private Button bt_3;
private Button bt_4;
private Button bt_5;
private Button bt_6;
private Button bt_7;
private Button bt_8;
private Button bt_9;
private Button bt_0;
private Button bt_add;
private Button bt_sub; />
设计按键的大小
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
(new OnClickListener()
计算器执行各项运算功能语句(小数点,加减乘除,清零...)
(new OnClickListener()
{
@Override
public void onClick(View v)
{
str_oper = "+";
if (!() == ""))
{
num1 += ());
str_display = new StringBuffer("");
}
if (!(str_result == null))
{
num1 = (str_result);
str_result = null;
}
(num1));
flag = true;
}
});
计算器进行加法运算的子程序代码如上
,
"除数不能为0!", .show();
此段注意除数不能为0!!!
, "被乘数或乘数不能为空!", .show();
4 测试与分析
测试过程:
安装相关软件,JDK安装配置
安装Java的JDK至默认路径 D:\Program Files\Java\,一般需要300M的空间,硬盘空间充足的话,所有组件全部安装。

然后完成环境变量的配置。

配置Eclipse开发环境,设置代码字体大小,调整为12(或14),显示行号,代码格式化,改变一行能容纳的最大字符数,设置智能提示,运行完成路径设置后,选择菜单Help—Install New Software...
图2:Install工作界面
配置SDK路径:
(1)安装java开发的JDK到本机,配置好环境变量,具体操作见前文步骤1-6。

(2)解压Android SDK和Eclipse,配置Eclipse的SDK路径。

系统默认的是在线安装新的SDK组件,我们不可能在没有网络连接的情形下升级应用组件!所以选取Use existing SDKs,然后点击下一步完成经一部的配置。

完成配置到Windows里找到Android SDK Manager运行,检测是否可以正常启动。

图3:配置完成的Eclipse
总结:需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径。

就可以使用了。

至此Android开发环境就基本搭建完成了。

总体看来其操作也与有网络环境操作雷同,需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径就可以使用了。

测试情况如下图:
图4:简易计算器的代码编译及运行
图5:eclipse环境下运行程序(计算器界面)
接下来演示实际算法:7+9(如图6、7、8)
图6 图7
图8
在实现此过程中,输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应功能的按键,分别是清零,0,1,2,3,4,5,6,7,8,9,+,-,*,/,.=,返回。

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

整体上大致分为这两个模块,其中存在的不足,我们日后会努力改进,进一步提升计算器的性能,使其功能更加完整,丰富!
5 参考文献
[1] 郭克华.JavaME移动开发实例精讲.北京:清华大学出版社,
[2] 李新力.J2ME实用教程.北京:人民邮电出版社,
[3] 孙更新,宾晟,孙海轮.Java ME手机应用开发大全.北京:科学出版社,。

相关文档
最新文档