




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山西大学工程学院操作系统课程设计S计本1205班刘航成山西大学工程学院 操作系统 课程设计报告书题 目 安卓计算器的开发与设计 系 别 计算机工程系 专 业 计算机科学与技术 班 级 S计本1205 姓 名刘航成指导教师尹老师下达日期 2013年 6 月 13 日设计时间自2013 年 7 月 1 日 至 2013 年 7 月 4 日目录摘 要3一、设计概述41.设计背景42.设计目的43.设计要求44.开发环境6二、设计细节71.整体思想72.容错处理73.数据结构的设计84.用户界面的实现85.文件结构96.界面组件设计10(1) XML文件生成11(2)用户界面在程序代码实现11(3)用户自定义页面组件117.程序流程12三、详细设计与实现131.开发环境搭建13(1)安装Android 开发插件13(2)配置android sdk152.图形界面设计173.程序功能实现22四、测试分析281.模拟器创建282.计算功能293.应用卸载303.应用导出为.APK文件30小结31致 谢32摘 要Android成功地成为了最具有潜力的新一代的手机应用软件。正如了标准化PC和Macintosh平台上创建的桌面和服务器软件市场,在Android上,通过提供一个标准的手机应用环境,将增加移动应用程序和应用开发商的利润。Android给开发人员提供了一种独特的,创造性的应用开发方式,并且应用到客户手机中。现在出现了成千上万的Android手机用户,正在寻找最优秀的手机应用程序。然后把这些优秀的应用程序应用到手机中。本程序是一个基于现有手机计算器开发的在触屏手机上运行的简单计算器,使用户可以更加简单便捷的使用计算器的功能,在此次程序设计中所做的工作主要是设计程序的图形化操作界面,以及利用编程语言实现整个程序的计算功能,使其能够正确地运行。关键词:应用程序,操作系统,Android,应用开发,计算器一、设计概述1.设计背景随着社会的发展,经济水平的提高,手机越来越普及。同时伴随着移动互联网技术的发展,手机的功能也变得越来越丰富。从原来只具有简单通信功能的非智能手机到现在具有手机操作系统,除通话功能以外,还集上网、聊天、炒股、收发邮件等功能于一身的智能手机系统。Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。2.设计目的通过此次课程设计,巩固所学操作系统与Java语言的基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。3.设计要求根据用户的实际要求,程序应实现以下功能:计算器界面友好,方便使用,具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有退格功能,能够删除最后一个输入,具有清除功能,即“C”。整个程序基于Android技术开发,除总体模块外主要分为输入模块、显示模块以及计算模块这三大部分。在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算机模块部分负责进行数据的运算以及一些其他的功能。下面较为详细的做了说明。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机动作以及用指针事件处理方法处理触屏的单击动作。同时提供了较为直观的键盘图形用户界面。显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时负责显示一些其他的信息。计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除等各种功能,记忆数据的相关功能,退格以及清零的功能。系统除了总体模块以外主要由三大模块来组成,即输入模块、显示模块和计算模块,如下图所示:总体系统输入模块显示模块计算模块 三大模块输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其他的信息。计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。4.开发环境Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。可以把它简单理解成 Linux上套了一个 JAVA 的壳。 Android 的平台基本上是免费的,虽然有部份原生链接库会要求费用,但大部份是免权利金。 Android 的程序可以采用 JAVA 开发, 因为它的虚拟机(Virtual Machine) Dalvik,只是它将 JAVA 的 bytecode 转成自己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。因此,Android 开发环境是需要 JDK 的。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM Rational Software Architect,它构成了 IBM Java 开发工具系列的基础。 二、设计细节1.整体思想在整个过程中,首先应该对输入进行容错处理,这样有利于提高用户体验。对于用户的按键输入,需要及时地显示在第一个EditView中。在EditView中显示的是一个字符串,用户每输入一个操作,字符串发生相应改变,然后在EditView中反映出来。接着便是对第一个EditView中的字符串进行处理。通过程序设计,可以将字符串中的数据和操作符分别存在两个栈中。然后需要设计算法处理两个栈,通过算法得出字符串表达式的运算结果,再将运算结果反映在第二个EditView中的字符串中。2.容错处理用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。在设计的应用程序中,设计了几个标记flag,每按下一个按键,若是按键是合理的话,都会引起标记flag的改变。标记flag将会限制接下来的输入是否有效,无效则不做任何处理。flag0=0:处理0的输出,为1则表示数字的开头有一个0。当flag0=1时,不能再输入0,当再输入数字或者操作符时,flag0重新置0。flag1=0:处理0的输出,每个数字开头的标志 数值为0表示为数字开头。当flag1=0时,如果先输入0再输入1的话,前面的0自动消除。还有当flag1=0时,不能输入小数点等等。flag2=0:处理小数点,一个数字最多只能有一个小数点。当数字中有小数点时,flag2变为1,此后不能再输入小数点,输入操作符等操作后,flag2又变为0。flag3=0:处理运算符的输出。很明显不能连续输入操作符,用此标志,来限制连续操作符的输入。flag4=0:处理ON/OFF问题。当OFF之后,flag变为1,只有当flag等于1时,ON按钮才能进行操作。flag5=0:处理等号问题。很明显操作符之后不能按下等号按钮,等号按钮按下之后要在第二个EditView中显示结果、将显示输出的EditView清空。3.数据结构的设计在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记,在本程序中使用了栈,对这些数据进行了存储。4.用户界面的实现每一个应用程序,我们都要设计一个图标,可以说图标是应用程序的名片,好的图标能够很快地吸引用户。本人在网上寻找了一个图标作为计算器应用的图标,如图所示。由于不同的android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置,drawable-hdpi中放置分辨率最高的图标,drawable-mdpi中放置分辨率中等的图标,drawable-ldpi中放置分辨率最低的图标,实现效果如下。5.文件结构在Eclipse建立计算器的Android项目工程,计算器的工程文件名为Calculator。然后创建存放源文件、资源文件、页面文件等各个文件夹。整个工程项目的目录结构如图所示。其中src和gen文件夹下是整个项目的源文件,所有的java代码都在这两个文件夹下。src文件夹存放的是本文中开发的所有java文件。这java文件是整个项目的代码。gen下面的R.java文件为Eclipse自动生成的系统文件,此文件中包含了本文开发过程中所吸引的资源的标示。res是存放整个系统中所用到的所有资源,其中, Drawble文件夹存放的是本文开发过程中所用到的所有图片。Drawble包括drawable-hdpi,drawable-ldpi,drawable-mdpi三个文件夹,这是Adroid2.1版本的改进,是为了适应Android手机系统不同的屏幕大小而设计的。用高分辨率的屏幕时,页面所需要的图片在drawable-hdpi中,用地分辨率的屏幕时,则采用drawable-ldpi文件夹下的资源图片;而普通分辨率时采用drawable-mdpi文件夹下的图片资源。因此这种设计具有很好的版本适应性及兼容性,大大提高了用户体验。AndroidManifest.xml是每个Android程序中所必需的,它位于Android工程的根目录,描述了package中的全局数据,包括package中的组件,各自的实现类,各种能被处理的类和启动位置等。Manifest文件的主要功能是声明应用程序的组件。例如,一个activitiy必须要有一个标志对应,无论它是供应外部使用还是只用于自己的package中。如果一个Activity没有对应的标记,他将不能被运行。Layout文件夹下面存放了本文所用到的所有用户界面的XML布局文件。这些用户界面资源文件定义后系统会在gen文件夹下的R.java文件中生成对应的资源引用符号。当系统调用生成用户界面时,只需要引用对应的引用符号即可。Values文件夹下存放的是本系统所用到的文字及数字资源,这些资源以键值得形式存放。如The file has been saved。这些文字或数值资源对放在,为开头结尾的标签对xml文件中。Values-zh-rCN文件夹存放的是资源的英文形式,当程序所运行的系统平台为英文系统时,调用values文件夹下资源;当程序所运行的平台为中文时,调用Values-zh-rCN文件夹下资源,显示中文方式。6.界面组件设计基于Android的手机计算器,是以用户为中心的。因此构建良好的用户界面是很重要的。Android构建用户界面有以下三种方式:(1) XML文件生成根据MVC原则,UI应该与程序逻辑相分离,因此,在XML中定义UI结构是强烈推荐的。常用的方式是用图形化的方式来编写布局Layout,这些布局保存在XML文件中,然后编译成资源,在程序中Activity通过setContentView()方法来加载,然后通过findViewByld()方式来获得每一个界面组件的引用。实现过程及步骤。在layout文件夹下定义自己的XML页面。用XML实现用户界面具有以下优点:1)XML文件结构清晰,易于扩展,系统可扩展性好。2) 用户界面与业务逻辑完全分离,降低了系统界面与业务逻辑的耦合性。3)XML文件简单易懂,可维护性好。缺点是:XML文件构建的界面已在配置文件中实现,无法在系统运行时动态更新页面。(2) 用户界面在程序代码实现对于一些开发者而言,喜欢最直观的方式,既代码中动态生成的方式。这种方式和XML定义是完全等价的。在程序中代码构建的方式还可以在系统运行时动态更改页面布局及效果(3) 用户自定义页面组件由于Android应用程序中的用户界面都是View及View的各个子类如Button,TextView等子View及各种容器ViewGroup如LinearLayout、RealtiveLayout等ViewGroup构成。因此要实现自己定制化的界面及页组件只需要继承View类。自定义组件的步骤是:a)创建类,并继承Android.view.View。b) 重写构造函数,wtNumber()、wtOperater()等方法。c) 注册构件到页面布局文件中。7.程序流程输入模块支持触屏描述计算器键盘实现按键监听定义键盘按键和画法设置按键监听按键功能获取输入模块计算模块输入容错逻辑判断运算输入判断数值输入判断普通运算功能高级功能记忆相关功能清零复位功能计算模块显示模块显示区的相关设置调用显示区数据方法设置显示区数据方法显示模块三、详细设计与实现1.开发环境搭建(1)安装Android 开发插件打开Eclipse,在菜单栏上选择help-InstallNewSoftWare点击Add按钮,出现如下界面输入网址:/android/eclipse/名称:Android,点击确定。点击Next-Next按钮选择I accept the terms of the license agreements,点击Next,进入安装插件界面。安装完成后,重启Eclipse。(2)配置android sdk点击菜单window-preferences, 选择Android SDK解压后的目录升级SDK版本,选择菜单 window-Android sdk and avd manager 出现如下界面选择updateall按钮,进入安装安装完成如下:2.图形界面设计图形化设计框架代码:MAIN.XML 3.程序功能实现CalculatorActivity.javapackage com.he;import android.app.Activity;import android.os.Bundle;import android.text.InputType;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class CalculatorActivity extends Activity /加plus 减subtract 乘multiply 除divideprivate EditText etResult;private Button btPlus;private Button btSub;private Button btMultiply;private Button btDivide;private Button btDelete;private Button btCe;private Button btPoint;private Button btDeng;private Button bt0;private Button bt1;private Button bt2;private Button bt3;private Button bt4;private Button bt5;private Button bt6;private Button bt7;private Button bt8;private Button bt9; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); etResult=(EditText)findViewById(R.id.etResult); btPlus=(Button)findViewById(R.id.btPlus); btSub=(Button)findViewById(R.id.btSubtract); btMultiply=(Button)findViewById(R.id.btMultiply); btDivide=(Button)findViewById(R.id.btDivide); btDelete=(Button)findViewById(R.id.btDelete); btDeng=(Button)findViewById(R.id.btDeng); btPoint=(Button)findViewById(R.id.btPoint); btCe=(Button)findViewById(R.id.btCe); bt0=(Button)findViewById(R.id.bt0); bt1=(Button)findViewById(R.id.bt1); bt2=(Button)findViewById(R.id.bt2); bt3=(Button)findViewById(R.id.bt3); bt4=(Button)findViewById(R.id.bt4); bt5=(Button)findViewById(R.id.bt5); bt6=(Button)findViewById(R.id.bt6); bt7=(Button)findViewById(R.id.bt7); bt8=(Button)findViewById(R.id.bt8); bt9=(Button)findViewById(R.id.bt9); etResult.setInputType(InputType.TYPE_NULL); /* .按钮*/ btPoint.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();if(str1.equals()etResult.setText();elseetResult.setText(str1+btPoint.getText().toString();); /* 0-9的数字按钮*/ bt0.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();if(str1.equals()etResult.setText();elseetResult.setText(str1+bt0.getText().toString();); bt1.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt1.getText().toString();); bt2.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt2.getText().toString();); bt3.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt3.getText().toString();); bt4.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt4.getText().toString();); bt5.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt5.getText().toString();); bt6.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt6.getText().toString();); bt7.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt7.getText().toString();); bt8.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt8.getText().toString();); bt9.setOnClickListener(new OnClickListener() public void onClick(View arg0) String str1=etResult.getText().toString();etResult.setText(str1+bt9.getText().toString();); /* ce键 清空*/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育机器人技术在特殊教育中的运用
- 教育技术中的交互设计-以包容性为核心
- 公交优先战略下2025年城市交通拥堵治理成本效益分析报告
- 福建省泉州市2024-2025学年九上化学期末经典模拟试题含解析
- 嵩山少林武术职业学院《企业文化建设》2023-2024学年第一学期期末试卷
- 承德护理职业学院《汽车造型设计2》2023-2024学年第一学期期末试卷
- 宿迁职业技术学院《网页设计与制作实验》2023-2024学年第一学期期末试卷
- 陕西科技大学镐京学院《建筑火灾防治与风险评估》2023-2024学年第一学期期末试卷
- 云南弥勒市2024年化学九上期末综合测试模拟试题含解析
- 藁城舒卿培训课件
- WST821-2023托育机构质量评估标准
- 2025至2030中国循环肿瘤细胞(CTC)行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国大型连锁超市行业发展趋势分析与未来投资战略咨询研究报告
- T-GDMDMA 0044-2025 一次性使用血液灌流器的临床使用指南
- 2025-2030年中国鳕鱼肠行业市场发展分析及发展前景与投资策略研究报告
- 2025-2030年中国智慧应急行业市场深度调研及市场前瞻与投资策略研究报告
- 2025年全国统一高考语文试卷(全国一卷)含答案
- 2025年调解员职业技能考试试卷及答案
- 喷粉技术质量协议书
- 2025年自考有效沟通技巧试题及答案
- 商场物业外包合同协议
评论
0/150
提交评论