![[信息与通信]安卓计算器.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-2/22/5096fa6f-da89-4afe-b4d5-2dd697a1314d/5096fa6f-da89-4afe-b4d5-2dd697a1314d1.gif)
![[信息与通信]安卓计算器.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-2/22/5096fa6f-da89-4afe-b4d5-2dd697a1314d/5096fa6f-da89-4afe-b4d5-2dd697a1314d2.gif)
![[信息与通信]安卓计算器.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-2/22/5096fa6f-da89-4afe-b4d5-2dd697a1314d/5096fa6f-da89-4afe-b4d5-2dd697a1314d3.gif)
![[信息与通信]安卓计算器.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-2/22/5096fa6f-da89-4afe-b4d5-2dd697a1314d/5096fa6f-da89-4afe-b4d5-2dd697a1314d4.gif)
![[信息与通信]安卓计算器.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-2/22/5096fa6f-da89-4afe-b4d5-2dd697a1314d/5096fa6f-da89-4afe-b4d5-2dd697a1314d5.gif)
已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学年论文(课程论文、课程设计)题目:基于Android计算器的设计与实现 作者: 所在学院: 信息科学与工程学院 专业年级: 通 信 指导教师: 职称: 2012年6月24日1.Android开发平台1.1 Android操作系统概述系统环境Android SDK 所支持的操作系统:Windows XP(32 bit)or Vista(32/64 bit)Mac OS X 10.5.8 or later(x86 only)Linux(tested on Linux Ubuntu Dapper Drake)1.2 Android开发环境搭建 1.2.1软件下载1Java JDK下载Windows 32位操作系统选择版本jdk-7u4-windows-i586.exe下载,只下载JDK,无需下载jre。2.Eclipse下载3.下载Android SDKAndroid SDK两种下载版本,一种是包含具体版本的SDK的,一种是只有升级工具,而不包含具体的SDK版本,官方推荐下载第二种版本(能够上网)。在这里我下载android-sdk_r18-windows.zip。4.下载ADTAndroid SDK的版本号要与ADT的版本号一致,这里都是“r18”。这四个软件下载到本地,JDK可以直接安装到本机并完成其环境变量的配,Eclipse在完成JDK安装后才可以运行,ADT通过插件的方式安装到Eclipse里,SDK则需要在本地解压后在线升级获取相应的Android仿真器组件。这期间SDK会下载大量的数据到他所在目录,升级前后对比(升级之前50M左右,升级后2.3G)。1.2.2安装相关软件1.JDK安装配置安装Java的JDK至默认路径 D:Program FilesJava,一般需要300M的空间,硬盘空间充足的话,所有组件全部安装。然后完成环境变量的配置。配置系统环境变量,否则java编译器无法工作打开:我的电脑控制面板系统属性高级环境变量,对话框下半部分系统变量中,新增以下两个变量:变量名:JAVA_HOME变量值:D:Program FilesJavajdk1.7.0_04变量名:CLASSPATH 变量值如下所示:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar然后,修改以下变量:变量名:Path变量值:将“%JAVA_HOME%bin;”添加在原变量值之前。至此,在ms-dos窗口执行命令 java -version,看到如下结果,说明java环境正常。再运行查看编译器版本号命令javac -version 看到如下提示,就说明Java编译器工作正常,到此JDK安装、java环境配置完成。配置Eclipse开发环境设置代码字体大小,调整为12(或14)显示行号代码格式化改变一行能容纳的最大字符数设置智能提示,在“Auto activation triggers for Java”后面填入“.abcdefghijklmnopqrstuvwxyz”。若Eclipse启动时候报“Failed to create the Java Virtual Machine”错误,解决办法:找到eclipse目录下的eclipse.ini,修改内容如下:-startupplugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar-launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.duct-launcher.defaultActionopenFile-launcher.XXMaxPermSize128M-showsplashorg.eclipse.platform-launcher.XXMaxPermSize128m-launcher.defaultActionopenFile-vmC:Program FilesJavajdk1.7.0_04binjavaw.exe-vmargs-Dosgi.requiredJavaVersion=1.5-Xms40m-Xmx512m配置ADT运行eclipse.exe完成路径设置后,选择菜单HelpInstall New Software. 图准备安装ADT图Install工作界面打开上面图中的窗口:点击Add.,Name处输入(按自己的喜欢名字)我的Android ADT,关键是下面的Location处填写ADT的官方下载的网址:/android/eclipse/ 如下:图 修改ADT升级site点击OK后,等他Pending得下图:图 eclipse获取ADT列表点击Select All,然后Next.跳出如下界面图 Eclipse ADT许可选择I accept.,然后Finish软件会自动完成后继的下载任务,把ADT的插件安装到Eclipse中。如下所示的提示出现。图 Eclipse ADT安装过程图 Eclipse ADT的警告信息图 Eclipse ADT安装完成Restart Now即可,至此ADT安装完成。在Eclipse启动以后会看到他的操作菜单里出现了我们熟悉的小机器人图标,点击它们可以调用SDK的虚拟机管理器AVD或者是SDK管理器,但是这之前还需要完成SDK的在线升级安装。图 Eclipse重启界面 配置SDK路径注:无网络环境配置Android开发环境(1)安装java开发的JDK到本机,配置好环境变量,具体操作见前文步骤1-6。(2)解压Android SDK和Eclipse,配置Eclipse的SDK路径。系统默认的是在线安装新的SDK组件,我们不可能在没有网络连接的情形下升级应用组件!所以选取Use existing SDKs,然后点击下一步完成经一部的配置。完成配置到Windows里找到Android SDK Manager运行,检测是否可以正常启动。首次运行Eclipse配置SDK配置完成的Eclipse总体看来其操作也与有网络环境操作雷同,需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径。就可以使用了。至此Android开发环境就基本搭建完成了。总体看来其操作也与有网络环境操作雷同,需要先安装JDK后配置环境变了,然后完成SDK的解压,解压有ADT的Eclipse,最后在Eclipse里重新配置SDK路径就可以使用了。3.基于android平台计算器设计3.1系统总体设计根据要求,系统实现以下要求:计算器界面友好,具有基本的加、减、乘、除功能,具有小数运算、开方运算、正负运算、平方运算和清除功能,支持触屏手机,整个程序基于android技术开发。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据以及显示最终的计算结果,计算模块负责进行数据的运算以及一些其他的功能。3.2系统流程和设计知道系统的功能后,我们通过main.xml来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判定一次用户输入的类型,是数字还是运算符号或者是清除,判定完后分成不同类型如数字、符号、基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出结果并显示在显示区。3.2.1 输入模块详细设计系统如果想完成计算器中的各种功能,首先用户要能进行数据输入,由于是在触屏手机上开发计算器程序,所以要求输入可以直接使用触屏进行,所以在设计的时候就要充分的考虑要这一点。正是由于考虑到这个特殊的地方,所以在进行模块设计中,选择编写输入模块类的时候会特意选取使用了可以支持触屏输入的特殊增强型图形用户界面类。输入模块主要的任务是描述计算器键盘以及实现键盘的监听,即当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,本模块还需要为系统提供了一个较为直观的键盘图形用户界面。3.2.2显示模块详细设计作为手机计算器系统,显示部分也是必不可少的一部分。没有显示部分就没有办法显示用户输入的数字是否正确,甚至不能显示计算出的结果,由此可见显示模块即包括输入的部分也包括输出的部分。显示模块主要要完成的任务是描述计算器的显示区,该区域用于显示用户输入的数据以及最终的计算结果和一些其他信息。同时本模块还将提供调用和设置显示的具体方法。3.2.3计算模块详细设计 系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次系统设计中的重点。系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断,基本会通if else来实现逻辑判断4.计算器模块整个项目工程的目录文件Src文件存放的是文本中开发的所有java 文件,java文件时整个项目的代码,gen下面的R.java为Eclipse自动生成的系统文件。Src下java文件的内容package com.xju.Jisuanqi;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,无错为falseprivate Boolean flagBoolean=false;/一个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前面是数字才可以响应运算消息private Boolean flagDot=false; /小数点标志位 Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.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(strold=&act= &str=)/input.setText();/else /input.setText(strold+act+str);/if(act=k)input.setText(strold);else input.setText(strold+act+str);output.setText(String.valueOf(result); private void kaifang()/ TODO Auto-generated method stub if(flagBoolean) act=k; strold=str;/ str=; result(); private void zhengfu()/ TODO Auto-generated method stub if(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 stub if(!flagDot) str=str+.; flagBoolean=false; flagDot=true; / str=str+i;/ flagBoolean=false; 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 metho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心理学专业硕士考研复习资料社会心理学方向
- 2025年版权保护仲裁员遴选考试模拟题与解析参考
- 2025年网络安全工程师岗位应聘模拟题和答案解析
- 电力基础知识培训课件
- 2025年运维工程师中级考试模拟题集及实战经验
- 2025年特岗教师招聘美术学科考试重点难点解析与复习建议
- 2025年产品经理高级面试指南及实战模拟题解答
- 2025年炼钢工艺流程详解与中级考试模拟题
- 电催员基础知识培训总结
- 2025年焊接专业求职面试攻略钎焊热点模拟题及答案解析
- 售后服务转移合同协议
- 电气技术员试题及答案
- 航材包装、运输管理程序
- DB51-T 3251-2025 煤矿井下应急广播系统使用管理规范
- 静压植桩机钢管桩施工技术
- 高值耗材点评制度
- 防台防汛培训课件教学
- 2024年施工员题库含完整答案(必刷)
- 道路施工流程讲解
- 有限合伙企业合伙协议
- 保险资管合规风险管理-深度研究
评论
0/150
提交评论