Android简单计算器课程设计
- 格式:doc
- 大小:114.00 KB
- 文档页数:16
简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的内部工作原理,掌握其基本功能操作。
2. 学生能运用计算器进行基本的算术运算,包括加、减、乘、除以及百分比计算。
3. 学生理解并掌握计算器上各个按键的功能及其在数学运算中的应用。
技能目标:1. 学生能够使用计算器辅助解决实际问题,如购物找零、面积计算等。
2. 学生通过计算器的使用,提高数据输入、结果读取和运算过程纠错的能力。
3. 学生能够结合数学知识,利用计算器进行数据的简单统计分析。
情感态度价值观目标:1. 培养学生对待科学技术的积极态度,认识到计算器在日常生活和学习中的便捷性。
2. 增强学生的团队协作意识,通过小组活动,学会分享和交流使用计算器的经验。
3. 培养学生遵守计算器使用的规则,养成良好的计算器使用习惯,珍惜公共资源。
本课程设计针对的学生群体为小学高年级学生,他们已经具备了一定的数学基础和操作简单电子设备的能力。
课程性质为实用技能型,旨在通过简易计算器的教学,将理论知识与实践操作相结合,提高学生解决实际问题的能力。
在教学要求上,注重培养学生的动手操作能力和创新思维,同时强调情感态度的培养,使学生在学习技能的同时,也能形成正确的价值观。
通过具体学习成果的分解,教师可进行有针对性的教学设计和学习效果评估。
二、教学内容本章节教学内容依据课程目标,结合教材内容,科学系统地组织以下部分:1. 简易计算器基础知识:介绍计算器的发展历程、种类及简易计算器的结构组成,对应教材第二章第一节。
2. 计算器按键功能:详细讲解各按键的功能及其在数学运算中的应用,对应教材第二章第二节。
3. 基本运算操作:教授如何使用计算器进行加、减、乘、除以及百分比计算,对应教材第二章第三节。
4. 计算器在实际应用中的使用:结合实际案例,如购物找零、面积计算等,展示计算器的实用性,对应教材第二章第四节。
5. 数据的简单统计分析:利用计算器进行数据输入、处理和简单统计分析,对应教材第二章第五节。
简易计算器设计的课程设计一、课程目标知识目标:1. 学生能够理解简易计算器的基本原理,掌握其设计流程。
2. 学生能够运用所学编程知识,实现简易计算器的功能。
3. 学生能够了解并掌握计算器界面设计的基本原则。
技能目标:1. 学生能够运用所学的编程技能,独立完成简易计算器的设计与开发。
2. 学生能够通过编写代码,实现计算器的加、减、乘、除等基本运算功能。
3. 学生能够运用调试工具,对计算器程序进行测试和优化。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,增强信息素养。
2. 学生通过团队协作,培养沟通能力和团队精神,学会共同解决问题。
3. 学生在设计与开发简易计算器的过程中,体验创新实践的过程,培养创新思维和动手能力。
课程性质:本课程为信息技术课程,旨在帮助学生将所学的编程知识运用到实际项目中,提高学生的编程实践能力和创新能力。
学生特点:六年级学生具备一定的编程基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践,培养创新思维。
在教学过程中,关注学生的个体差异,鼓励学生相互交流、合作,共同完成学习任务。
通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高解决问题的能力。
二、教学内容1. 计算器原理:介绍计算器的基本工作原理,包括算术运算逻辑、数据存储与处理等。
教材章节:第三章 计算机硬件基础2. 编程语言基础:回顾所学的编程语言(如Python),重点掌握变量定义、数据类型、运算符、条件语句和循环语句等。
教材章节:第二章 编程语言基础3. 界面设计:讲解计算器界面设计的原则和技巧,如布局、颜色、字体等。
教材章节:第四章 用户界面设计4. 编程实现计算器功能:引导学生运用所学知识,编写程序实现计算器的加、减、乘、除等基本运算功能。
教材章节:第五章 算法与程序设计5. 程序调试与优化:教授学生如何使用调试工具,对计算器程序进行测试、调试和优化。
数据结构课程设计-计算器数据结构课程设计计算器在计算机科学的学习中,数据结构是一门重要的基础课程。
通过这门课程的学习,我们能够深入理解和掌握如何有效地组织和管理数据,以提高程序的运行效率和性能。
本次课程设计的任务是开发一个简单的计算器程序,通过运用所学的数据结构知识,实现基本的算术运算功能。
一、需求分析首先,我们需要明确计算器程序的功能需求。
这个计算器应该能够支持常见的四则运算,即加法、减法、乘法和除法。
用户可以通过输入表达式,例如“2 +3”、“5 2”、“3 4”、“8 /2”等,程序能够正确计算并输出结果。
此外,为了提高用户体验,计算器还应该能够处理错误输入,例如输入的表达式不符合语法规则或者除数为 0 等情况,并给出相应的错误提示信息。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和处理输入的表达式。
在这个计算器程序中,我们可以使用栈这种数据结构。
栈是一种后进先出(Last In First Out,LIFO)的数据结构,非常适合处理表达式的计算。
我们可以创建两个栈,一个用于存储操作数,另一个用于存储操作符。
当用户输入一个表达式时,我们按照从左到右的顺序逐个字符进行处理。
如果是数字,则将其转换为整数并压入操作数栈;如果是操作符,则将其压入操作符栈。
在计算过程中,我们从操作符栈中取出操作符,从操作数栈中取出相应数量的操作数进行计算,将计算结果压回操作数栈。
三、算法设计1、表达式解析算法从左到右扫描表达式。
如果遇到数字,将其作为一个整数提取出来,并压入操作数栈。
如果遇到操作符(+、、、/),则将其压入操作符栈。
如果遇到左括号“(”,则将其压入操作符栈。
如果遇到右括号“)”,则从操作符栈中弹出操作符,从操作数栈中弹出操作数,进行计算,直到遇到左括号为止。
2、计算算法当操作符栈不为空时,从操作符栈中弹出一个操作符。
根据操作符的类型,从操作数栈中弹出相应数量的操作数。
进行计算,并将结果压回操作数栈。
安卓程序课程设计一、课程目标知识目标:1. 理解安卓应用程序的基本组成结构,掌握界面布局、组件使用、事件处理等基本知识;2. 学会使用Android Studio进行安卓应用程序的开发、调试与发布;3. 了解安卓应用程序的生命周期,掌握在不同生命周期阶段进行资源管理和任务调度的方法;4. 掌握安卓应用程序的存储方式,包括SharedPreferences、SQLite数据库等。
技能目标:1. 能够运用所学知识设计并开发具有基本功能的安卓应用程序;2. 熟练使用Android Studio进行代码编写、界面布局调试与应用发布;3. 能够根据实际需求,选择合适的存储方式对数据进行管理;4. 培养良好的编程习惯,编写出结构清晰、可读性强的代码。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习安卓开发的热情;2. 增强学生的团队协作意识,培养在团队中沟通、协作解决问题的能力;3. 引导学生关注移动应用开发领域的前沿动态,培养创新意识和探索精神;4. 强化学生的法律法规意识,遵循开发过程中的道德规范和版权规定。
课程性质:本课程为实践性较强的学科,旨在培养学生掌握安卓应用程序开发的基本知识和技能。
学生特点:学生具备一定的编程基础,对移动应用开发感兴趣,但实际操作经验不足。
教学要求:注重理论与实践相结合,强调动手实践,让学生在实际操作中掌握知识,提高技能。
同时,关注学生的情感态度价值观培养,使他们在学习过程中形成良好的编程习惯和团队协作精神。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 安卓基础入门- 安卓系统架构与开发环境搭建- 界面布局与常用组件的使用- 事件处理与界面交互2. 安卓高级特性- 安卓生命周期管理与资源调度- 数据存储与共享:SharedPreferences、SQLite数据库- 网络编程与数据传输:HTTP协议、JSON解析3. 实践项目与案例分析- 项目一:开发一个简单的计算器应用- 项目二:设计与实现一个天气查询应用- 案例分析:热门安卓应用的设计与实现4. 应用调试与发布- Logcat与调试技巧- 应用程序的打包与签名- 发布应用到应用商店教学内容安排与进度:第一周:安卓基础入门第二周:安卓高级特性第三周:实践项目一与案例分析第四周:实践项目二与案例分析第五周:应用调试与发布教材章节关联:1. 《Android基础教程》:第1-3章,涵盖安卓基础入门内容;2. 《Android进阶教程》:第4-6章,涵盖安卓高级特性内容;3. 《Android实战项目开发》:第1、3章,提供实践项目与案例分析;4. 《Android应用调试与优化》:第1、2章,涉及应用调试与发布。
为了深入理解和应用Android框架系统的控件以及更加熟练的掌握eclips的开发技巧,所以就决定做一个简单的计算器来了解和介绍一下Android界面设计的基本技巧。
界面的样子如下:这个界面由一个编辑框和很多按钮组成。
他的功能跟Windows下的计算其功能差不多,就是实现+-*/等功能。
这个还实现了一个菜单的功能。
按一下Exit就可以离开这个应用程序了。
Android框架定义了很多布局(Layout)架构。
布局就像容器,里面可以装下很多控件。
布局里面还可以套用其他的布局。
这样就可以实现界面的多样化以及设计的灵活性。
在这个界面中,我们应用了一个LinearLayout的布局,它是垂直向下扩展的。
在这个LinearLayout中,我们可以应用一个EditText和一个TableLayout 作为他的子控件。
在TableLayout布局可以实现以表格的形式来布局空间。
而TableRow是用来定义每一行。
在TableLayout中,列的宽度是取其中这一列中宽度最大的控件的宽度。
这个应用程序正好用到5x5的一个表格,TableLayout将是最好的选择了。
Android界面编程的一个优势是他的布局全部可以用xml文件来描述,实现了即改即现的方式。
ADT又在Eclips里面做了一个Outline的插件。
当你打开布局xml文件的时候,Outline就会显示布局的所有控件以及他们的结构。
双击其中的控件就会打开空间的属性。
你就可以直接编辑属性来轻松实现界面的布局。
所改的属性也将立刻在xml文件中显示出来。
以下是描述这个简单计算器的界面xml文件给大家做个参考:android:background="#ff808080"><EditText android:id="@+id/input"android:layout_width="fill_parent"android:layout_height="wrap_content"android:cursorVisible="false"android:gravity="right"android:editable ="false"/><TableLayout xmlns:android="/apk/res/android" android:layout_width="fill_parent"android:layout_height="fill_parent"><TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Button android:id="@+id/seven"android:text="7"android:layout_height="wrap_content"android:layout_width="63sp"/><Button android:id="@+id/eight"android:text="8"android:layout_width="63sp"android:layout_height="wrap_content" /><Button android:id="@+id/nine"android:text="9"android:layout_width="63sp"android:layout_height="wrap_content" /><Button android:id="@+id/divide"android:text="/"android:layout_width="63sp"android:layout_height="wrap_content" /><Button android:id="@+id/sqrt"android:text="sqrt"android:layout_width="63sp"android:layout_height="wrap_content" /></TableRow><TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Button android:id="@+id/four"android:text="4"android:layout_width="63sp"android:layout_height="wrap_content" /><Button android:id="@+id/five"android:text="5"<Button android:id="@+id/multiply"android:text="*"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/remainder"android:text="%"android:layout_width="63sp"android:layout_height="wrap_content" /></TableRow><TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Button android:id="@+id/one"android:text="1"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/two"android:text="2"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/three"android:text="3"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/minus"android:text="-"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/convert"android:text="1/x"android:layout_width="63sp"android:layout_height="wrap_content" /> </TableRow><TableRowandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Button android:id="@+id/zero"android:text="0"android:layout_width="63sp"android:layout_height="wrap_content" /> <Button android:id="@+id/digit"android:text="."。
基于安卓的计算器的设计与实现在设计和实现基于安卓的计算器时,需要考虑以下几个重要的方面:用户界面设计、计算逻辑实现和功能扩展。
首先,用户界面设计是一个计算器的重要组成部分。
一个简洁直观、易于使用的界面可以提供良好的用户体验。
可以考虑使用标准计算器的布局,包括数字键盘、运算符按钮和显示结果的文本框。
此外,还可以添加一些额外的功能,比如一键清除按钮、括号按钮和科学计算模式切换按钮等。
考虑到不同屏幕尺寸和定制化需求,应该使用相对布局或者网格布局来放置UI元素。
其次,计算逻辑实现是计算器的核心部分。
需要支持基本的四则运算,包括加法、减法、乘法和除法。
为了实现连续运算和操作优先级,可以使用栈或者逆波兰表示法。
在用户输入数字和运算符时,应该及时更新显示结果的文本框。
另外,还应该考虑异常情况的处理,比如除数为零的情况。
最后,功能扩展是一个好的设计的关键。
除了基本的四则运算,还可以考虑添加一些其他功能,比如开方、求平方、取余、倒数、阶乘等。
另外,还可以添加一个历史记录功能,记录用户的计算过程和结果,方便用户查看和回顾。
此外,还可以添加一个单位转换功能,支持常见的长度、重量、温度、时间、速度等单位之间的转换。
在实际开发中,可以使用Android Studio作为开发工具。
Android Studio提供了丰富的界面设计工具和模拟器,可以方便地进行界面布局和调试。
可以使用Java语言进行开发,使用Android提供的API来处理用户输入和展示结果。
在代码实现中,可以使用按钮点击事件来处理用户输入。
当用户点击数字按钮时,将所点击的数字添加到一个临时变量中,当用户点击运算符按钮时,将临时变量中的数字和运算符添加到运算式中,并清空临时变量。
当用户点击等号按钮时,根据运算式中的数字和运算符进行实际的计算,并将结果显示在结果文本框中。
当用户点击清空按钮时,将运算式和结果文本框清空。
除了基本逻辑实现外,还可以进行一些优化和改进。
在Android Studio中开发一个简单的计算器应用随着智能手机的普及,计算器应用成为了人们生活中不可或缺的工具之一。
为了满足用户的需求,我们决定在Android Studio中开发一个简单的计算器应用。
这个应用将提供基本的四则运算功能,并且界面简洁易用。
首先,在Android Studio中创建一个新的项目。
选择合适的应用名称和包名。
接下来,我们需要设计应用的用户界面。
我们希望用户界面简洁明了,方便用户使用。
可以考虑使用一个TextView显示计算结果,以及多个Button用于输入数字和操作符。
在开发计算器的过程中,我们需要处理用户的输入并进行相应的计算。
为此,我们可以使用一个EditText控件来接收用户的输入,并通过按钮的点击事件来获取用户点击的数字和操作符。
然后,我们可以使用Java中的数学库来进行四则运算,并将结果显示在TextView中。
通过Android Studio提供的布局编辑器,我们可以轻松地将TextView和Button布局在界面上。
可以使用LinearLayout或RelativeLayout进行布局,根据需要设置各个控件之间的位置和大小。
此外,还可以设置按钮的点击事件,使其能够响应用户的输入。
在处理用户输入时,需要考虑一些特殊情况。
例如,当用户输入非法字符或进行除法时需要进行错误处理。
可以通过在代码中添加条件判断语句来实现这些功能。
另外,还可以添加一些额外的功能,如清除输入、撤销操作等,以提升用户体验。
在开发过程中,可以使用Android Studio提供的调试工具来检查代码是否正常运行。
可以设置断点,逐步执行代码,并查看变量的值。
这些工具能够帮助我们快速定位和修复错误。
为了使应用具有良好的用户体验,我们还可以添加一些动画效果和过渡效果。
例如,当用户点击按钮时,可以添加按钮缩放、淡入淡出等动画效果,使界面更加生动有趣。
除了基本功能以外,我们还可以考虑添加更多的功能来完善应用。
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计算器的界面设计和事件处理、数据存储和运算逻辑的实现。
制作⼀个简易计算器——基于AndroidStudio实现⼀个计算器Android程序的源码部分分为主⼲和细节两部分。
⼀、主⼲1. 主⼲的构成计算器的布局事件(即计算器上的按钮、⽂本框)监听实现计算2. 详细解释 假设我们的项⽬名为Calculator,⽽布局名称(Layout Name)为默认的activity_main 。
即设置如下图所⽰: 在这种前提下,有:设置计算器布局的⽂件:Calculator/app/src/main/res/layout/activity_main.xml事件监听和计算实现在同⼀个⽂件⾥:Calculator/app/src/main/java/下的⼀个⼦⽬录⾥的MainActivity.java 即如下图所⽰:计算器布局代码(写在activity_main.xml⽂件⾥):1<?xml version="1.0" encoding="utf-8"?>2<ScrollView xmlns:android="/apk/res/android"3 android:layout_width="fill_parent"4 android:layout_height="wrap_content"5>6<LinearLayout7android:layout_width="fill_parent"8 android:layout_height="fill_parent"9 android:orientation="vertical">10<EditText11android:id="@+id/input"12 android:layout_width="fill_parent"13 android:layout_height="wrap_content"14 android:layout_gravity="center"15 android:editable="false"16 android:hint="@string/shuru"/>1718<EditText19android:id="@+id/output"20 android:layout_width="fill_parent"21 android:layout_height="wrap_content"22 android:layout_gravity="center"23 android:editable="true"24 android:gravity="right"25 android:hint="@string/shuchu"/>2627<RelativeLayout28android:layout_width="fill_parent"29 android:layout_height="wrap_content">3031<Button32android:id="@+id/seven"33 android:layout_width="80dp"34 android:layout_height="70dp"35 android:layout_alignParentLeft="true"36 android:text="@string/seven"37 android:textSize="40sp"/>3839<Button44 android:text="@string/eight"45 android:textSize="40sp"/>4647<Button48android:id="@+id/nine"49 android:layout_width="80dp"50 android:layout_height="70dp"51 android:layout_toRightOf="@id/eight"52 android:text="@string/nine"53 android:textSize="40sp"/>5455<Button56android:id="@+id/add"57 android:layout_width="80dp"58 android:layout_height="70dp"59 android:layout_alignParentRight="true"60 android:layout_toRightOf="@id/nine"61 android:text="@string/add"62 android:textSize="40sp"/>6364<Button65android:id="@+id/four"66 android:layout_width="80dp"67 android:layout_height="70dp"68 android:layout_alignParentLeft="true"69 android:layout_below="@id/seven"70 android:text="@string/four"71 android:textSize="40sp"/>7273<Button74android:id="@+id/five"75 android:layout_width="80dp"76 android:layout_height="70dp"77 android:layout_below="@id/eight"78 android:layout_toRightOf="@id/four"79 android:text="@string/five"80 android:textSize="40sp"/>8182<Button83android:id="@+id/six"84 android:layout_width="80dp"85 android:layout_height="70dp"86 android:layout_below="@id/nine"87 android:layout_toRightOf="@id/five"88 android:text="@string/six"89 android:textSize="40sp"/>9091<Button92android:id="@+id/subtract"93 android:layout_width="80dp"94 android:layout_height="70dp"95 android:layout_alignParentRight="true"96 android:layout_below="@id/add"97 android:layout_toRightOf="@id/six"98 android:text="@string/subtract"99 android:textSize="40sp"/>100101<Button102android:id="@+id/one"103 android:layout_width="80dp"104 android:layout_height="70dp"105 android:layout_alignParentLeft="true" 106 android:layout_below="@id/four"107 android:text="@string/one"108 android:textSize="40sp"/>109110<Button111android:id="@+id/two"112 android:layout_width="80dp"113 android:layout_height="70dp"114 android:layout_below="@id/five"115 android:layout_toRightOf="@id/one" 116 android:text="@string/two"117 android:textSize="40sp"/>118119<Button120android:id="@+id/three"121 android:layout_width="80dp"122 android:layout_height="70dp"123 android:layout_below="@id/six"128<Button129android:id="@+id/multiply"130 android:layout_width="80dp"131 android:layout_height="70dp"132 android:layout_alignParentRight="true" 133 android:layout_below="@id/subtract" 134 android:layout_toRightOf="@id/three" 135 android:text="@string/multiply"136 android:textSize="40sp"/>137138<Button139android:id="@+id/zero"140 android:layout_width="80dp"141 android:layout_height="70dp"142 android:layout_alignParentLeft="true" 143 android:layout_below="@id/one"144 android:text="@string/zero"145 android:textSize="40sp"/>146147<Button148android:id="@+id/clear"149 android:layout_width="80dp"150 android:layout_height="70dp"151 android:layout_below="@id/two"152 android:layout_toRightOf="@id/zero" 153 android:text="@string/clear"154 android:textSize="40sp"/>155156<Button157android:id="@+id/result"158 android:layout_width="80dp"159 android:layout_height="70dp"160 android:layout_below="@id/three"161 android:layout_toRightOf="@id/clear" 162 android:text="@string/result"163 android:textSize="40sp"/>164165<Button166android:id="@+id/divide"167 android:layout_width="80dp"168 android:layout_height="70dp"169 android:layout_alignParentRight="true" 170 android:layout_below="@id/multiply" 171 android:layout_toRightOf="@id/result" 172 android:text="@string/divide"173 android:textSize="40sp"/>174175<Button176android:id="@+id/dot"177 android:layout_width="80dp"178 android:layout_height="70dp"179 android:layout_alignParentLeft="true" 180 android:layout_below="@id/zero"181 android:text="@string/dot"182 android:textSize="40sp"/>183<Button184android:id="@+id/writeButton"185 android:layout_width="wrap_content" 186 android:layout_height="wrap_content" 187 android:layout_alignParentLeft="true" 188 android:layout_below="@id/dot"189 android:text="@string/write"190 android:textSize="40sp"/>191<Button192android:id="@+id/readButton"193 android:layout_width="wrap_content" 194 android:layout_height="wrap_content" 195 android:layout_alignParentRight="true" 196 android:layout_below="@id/dot"197 android:text="@string/read"198 android:textSize="40sp"/>199200<CheckBox201android:id="@+id/appendBox"202 android:text="@string/appendBox"203 android:layout_width="wrap_content" 204 android:layout_height="wrap_content" 205 android:layout_alignParentBottom="true" 206 android:layout_toLeftOf="@+id/divide" 207 android:layout_toStartOf="@+id/divide"212213<EditText214215android:layout_width="match_parent"216 android:layout_height="wrap_content"217 android:id="@+id/textView"/>218219<EditText220221android:layout_width="match_parent"222 android:layout_height="wrap_content"223 android:id="@+id/displayView"/>224225<EditText226android:id="@+id/errorzero"227 android:layout_width="fill_parent"228 android:layout_height="wrap_content"229 android:layout_gravity="center"230 android:editable="false"231 android:gravity="center"232/>233<EditText234android:id="@+id/resultText"235 android:layout_width="fill_parent"236 android:layout_height="wrap_content"237 android:layout_gravity="center"238 android:editable="false"239 android:gravity="left"240 android:text="@string/resultText"241/>242</LinearLayout>243</ScrollView>View Code事件监听和实现计算代码(写在MainActivity.java⽂件⾥)1package com.example.lenovo.calculator;2345import android.app.Activity;6import android.content.Context;7import android.os.Bundle;8import android.view.View;9import android.view.View.OnClickListener;10import android.widget.Button;11import android.widget.CheckBox;12import android.widget.EditText;1314import java.io.FileInputStream;15import java.io.FileNotFoundException;16import java.io.FileOutputStream;17import java.io.IOException;1819public class MainActivity extends Activity {20/**21 * Called when the activity is first created.22*/23private EditText output = null;24private EditText input = null;25private Button btn0 = null;26private Button btn1 = null;27private Button btn2 = null;28private Button btn3 = null;29private Button btn4 = null;30private Button btn5 = null;31private Button btn6 = null;32private Button btn7 = null;33private Button btn8 = null;34private Button btn9 = null;35private Button btnadd = null;36private Button btnsubtract = null;37private Button btnmultiply = null;38private Button btndivide = null;39private Button btnclear = null;40private Button btnresult = null;41private Button btndot = null;46private Button writeButton = null;47private Button readButton = null;48private CheckBox appendBox = null;49private EditText textView = null;50private EditText displayView = null;51public String FILE_NAME = "fileDemo.txt";525354private String str = "";//保存数字55private String strold = "";//原数字56private char act = ' ';//记录“加减乘除等于”符号57private int count = 0;//判断要计算的次数,如果超过⼀个符号,先算出来⼀部分58private Float result = null;//计算的输出结果59private Boolean errBoolean = false;//有错误的时候为true,⽆错为false60private Boolean flagBoolean = false;//⼀个标志,如果为true,可以响应运算消息,如果为false,不响应运算消息,只有前⾯是数字才可以响应运算消息 61private Boolean flagDot = false; //⼩数点标志位62636465 @Override66public void onCreate(Bundle savedInstanceState) {67super.onCreate(savedInstanceState);68 setContentView(yout.activity_main);6970 output = (EditText) findViewById(R.id.output);71 input = (EditText) findViewById(R.id.input);7273 errorzero = (EditText) findViewById(R.id.errorzero);74 resultText = (EditText) findViewById(R.id.resultText);75 writeButton = (Button) findViewById(R.id.writeButton);76 readButton = (Button) findViewById(R.id.readButton);77 textView = (EditText) findViewById(R.id.textView);78 displayView = (EditText) findViewById(R.id.displayView);79 appendBox = (CheckBox) findViewById(R.id.appendBox);8081 btn0 = (Button) findViewById(R.id.zero);82 btn1 = (Button) findViewById(R.id.one);83 btn2 = (Button) findViewById(R.id.two);84 btn3 = (Button) findViewById(R.id.three);85 btn4 = (Button) findViewById(R.id.four);86 btn5 = (Button) findViewById(R.id.five);87 btn6 = (Button) findViewById(R.id.six);88 btn7 = (Button) findViewById(R.id.seven);89 btn8 = (Button) findViewById(R.id.eight);90 btn9 = (Button) findViewById(R.id.nine);91 btnadd = (Button) findViewById(R.id.add);92 btnsubtract = (Button) findViewById(R.id.subtract);93 btnmultiply = (Button) findViewById(R.id.multiply);94 btndivide = (Button) findViewById(R.id.divide);95 btnclear = (Button) findViewById(R.id.clear);96 btnresult = (Button) findViewById(R.id.result);97 btndot = (Button) findViewById(R.id.dot);98//设置按钮侦听事件99 btn0.setOnClickListener(listener);100 btn1.setOnClickListener(listener);101 btn2.setOnClickListener(listener);102 btn3.setOnClickListener(listener);103 btn4.setOnClickListener(listener);104 btn5.setOnClickListener(listener);105 btn6.setOnClickListener(listener);106 btn7.setOnClickListener(listener);107 btn8.setOnClickListener(listener);108 btn9.setOnClickListener(listener);109//执⾏运算110 btnadd.setOnClickListener(listener);111 btnsubtract.setOnClickListener(listener);112 btnmultiply.setOnClickListener(listener);113 btndivide.setOnClickListener(listener);114 btnclear.setOnClickListener(listener);115 btnresult.setOnClickListener(listener);116117 btndot.setOnClickListener(listener);118119 writeButton.setOnClickListener(writelistener);120 readButton.setOnClickListener(readlistener);121122123// ATTENTION: This was auto-generated to implement the App Indexing API.124// See https://g.co/AppIndexing/AndroidStudio for more information.125 }130public void onClick(View v) {131// TODO Auto-generated method stub132switch (v.getId()) {133//输⼊数字134case R.id.zero:135 num(0);136break;137case R.id.one:138 num(1);139break;140case R.id.two:141 num(2);142break;143case R.id.three:144 num(3);145break;146case R.id.four:147 num(4);148break;149case R.id.five:150 num(5);151break;152case R.id.six:153 num(6);154break;155case R.id.seven:156 num(7);157break;158case R.id.eight:159 num(8);160break;161case R.id.nine:162 num(9);163break;164165case R.id.dot:166 dot();167break;168//执⾏运算169case R.id.add:170 add();171break;172case R.id.subtract:173 sub();174break;175case R.id.multiply:176 multiply();177break;178case R.id.divide:179 divide();180break;181case R.id.clear:182 clear();183break;184//计算结果185case R.id.result:186 result();187if (!errBoolean && flagBoolean) {188 output.setText(String.valueOf(result));189 }190 resultText.setText(strold + act + str + "=" + result+" "); 191break;192193default:194break;195196 }197 input.setText(strold + act + str);198 output.setText(String.valueOf(result));199200201 }202 };203204private OnClickListener writelistener = new OnClickListener() {205 @Override206public void onClick(View view) {207//textView.setText("");208209 FileOutputStream fos = null;214 fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE); 215 }216 String text = resultText.getText().toString();217 fos.write(text.getBytes());218 textView.setText("⽂件写⼊成功,写⼊长度:" + text.length()); 219//resultText.setText("");220221 } catch (FileNotFoundException e) {222 e.printStackTrace();223 } catch (IOException e) {224 e.printStackTrace();225 }226finally {227if (fos != null)228try {229 fos.flush();230 fos.close();231 } catch (IOException e) {232 e.printStackTrace();233 }234 }235 }236 };237private OnClickListener readlistener = new OnClickListener() {238 @Override239public void onClick(View view) {240241 displayView.setText("");242 FileInputStream fis = null;243try {244 fis = openFileInput(FILE_NAME);245if (fis.available() == 0) {246return;247 }248byte[] readBytes = new byte[fis.available()];249while (fis.read(readBytes) != -1) {250251 }252 String text = new String(readBytes);253 displayView.setText(text);254 textView.setText("⽂件读取成功,写⼊长度:" + text.length()); 255256 } catch (FileNotFoundException e) {257 e.printStackTrace();258 } catch (IOException e) {259 e.printStackTrace();260 }261262 }263 };264265private void dot() {266// TODO Auto-generated method stub267268if (!flagDot) {269 str = str + ".";270 flagBoolean = false;271 flagDot = true;272 }273 }274275private void clear() {276// TODO Auto-generated method stub277 str = strold = "";278 count = 0;279 act = ' ';280 result = null;281 flagBoolean = false;282 flagDot = false;283 input.setText(strold + act + str);284 output.setText("");285 errorzero.setText("");286 displayView.setText("");287 textView.setText("");288 resultText.setText("");289 }290291private void divide() {292// TODO Auto-generated method stub293if (flagBoolean) {299300private void multiply() {301// TODO Auto-generated method stub 302if (flagBoolean) {303 check();304 act = '*';305 flagBoolean = false;306 }307 }308309private void sub() {310// TODO Auto-generated method stub 311if (flagBoolean) {312 check();313 act = '-';314 flagBoolean = false;315 }316 }317318private void add() {319// TODO Auto-generated method stub 320if (flagBoolean) {321 check();322 act = '+';323 flagBoolean = false;324 }325 }326327private void check() {328// TODO Auto-generated method stub 329if (count >= 1) {330 result();331 str = String.valueOf(result);332 }333 strold = str;334 str = "";335 count++;336 flagDot = false;337 errorzero.setText("");338 }339340//计算输出结果341private void result() {342// TODO Auto-generated method stub 343if (flagBoolean) {344 Float a, b;345346 a = Float.parseFloat(strold);347 b = Float.parseFloat(str);348349if (b == 0 && act == '/') {350 clear();351 errorzero.setText("除数不能为零!"); 352//output.setText("除数不能为零!"); 353354355//errBoolean=true;356 }357358359if (!errBoolean) {360switch (act) {361case '+':362 result = a + b;363break;364case '-':365 result = a - b;366break;367case '*':368 result = a * b;369break;370case '/':371 result = a / b;372break;373374default:375break;376 }377 }383private void num(int i) {384// TODO Auto-generated method stub385 str = str + String.valueOf(i);386 flagBoolean = true;387 errorzero.setText("");388 }389390 }View Code⼆、细节 仅仅将主⼲部分代码copy下来并不能运⾏程序,因为主⼲代码调⽤了⼀些⽂件的代码,这些⽂件就是我们所说的细节。
android课程设计课程表一、教学目标本课程的教学目标是使学生掌握Android应用程序开发的基本知识和技能,能够独立完成简单的Android应用程序开发。
1.理解Android操作系统的基本原理和架构。
2.掌握Android开发环境搭建和应用程序调试的基本方法。
3.学习Android应用程序的生命周期和界面布局。
4.掌握Android基本组件的使用和自定义。
5.学习Android应用程序的存储和网络通信。
6.能够使用Android Studio进行应用程序开发。
7.能够编写基本的Android界面和逻辑代码。
8.能够使用Android的基本组件和API。
9.能够进行基本的Android应用程序调试和优化。
情感态度价值观目标:1.培养学生对计算机科学和软件开发的兴趣和热情。
2.培养学生独立思考和解决问题的能力。
3.培养学生团队协作和沟通的能力。
二、教学内容根据教学目标,我们选择和了以下教学内容:1.Android操作系统原理和架构。
2.Android开发环境搭建和应用程序调试。
3.Android界面布局和基本组件使用。
4.Android基本API和自定义组件。
5.Android应用程序存储和网络通信。
6.第1-2周:Android操作系统原理和架构。
7.第3-4周:Android开发环境搭建和应用程序调试。
8.第5-6周:Android界面布局和基本组件使用。
9.第7-8周:Android基本API和自定义组件。
10.第9-10周:Android应用程序存储和网络通信。
三、教学方法为了达到教学目标,我们选择以下教学方法:1.讲授法:用于讲解Android操作系统原理和架构,基本API和自定义组件等理论知识。
2.案例分析法:通过分析实际案例,让学生掌握Android界面布局和网络通信等实际应用。
3.实验法:让学生动手实践,完成Android应用程序的开发和调试。
四、教学资源我们选择和准备了以下教学资源:1.教材:《Android应用开发实战》。
Android简单计算器课程设计广东工业大学华立学院课程名称手机游戏开发题目名称简单计算器学生学部,系, 机电与信息工程学部专业班级 12计算机科学与技术2班学号学生姓名任课教师2015年 6月 20日一、课程考试,设计,的内容基于Android平台的简单计算器二、课程考试,设计,的要求清晰描述应用的策略和基本框架~并设计相关的类~描述各个类的作用和关系~画出类图关系~叙述使用到的技术点。
目录1课程综述 .............................................. 错误~未定义书签。
2 手机应用设计.......................................... 错误~未定义书签。
2.1 开发背景...................................................................... ........................................................................ 错误~未定义书签。
2.2 设计思想...................................................................... ........................................................................ 错误~未定义书签。
2.3 策略描述.............................................................................................................................................. 错误~未定义书签。
2.4 设计将达到的目标 ..................................................................... ....................................................... 错误~未定义书签。
3概要设计 .............................................. 错误~未定义书签。
3.1 需求分析...................................................................... ........................................................................ 错误~未定义书签。
3.2 基本框架...................................................................... ........................................................................ 错误~未定义书签。
3.3 类设计 ..................................................................... ........................................................................ ..... 错误~未定义书签。
4 详细设计 ............................................. 错误~未定义书签。
4.1 运行过程...................................................................... ........................................................................ 错误~未定义书签。
4.2 类实现 ..................................................................... ........................................................................ ..... 错误~未定义书签。
4.2.1 .............................................................. ........................................................................ .. (6)4.2.2 .............................................................. ........................................................................ ........................................................ 7 4.3 运行描述...................................................................... ........................................................................ ...................................... 8 5 测试 ............................................................... 9 5.1 运行效果 ..................................................................... ........................................................................ ..................................... 9 5.2 测试用例 ..................................................................... ........................................................................ ..................................... 9 总结 (11)参考文献 (12)1 课程综述Android是一种基于Linux内核、开放源代码的操作系统,主要使用于移动设备,如智能手机、平板电脑、电视等。
根据Gartner对智能手机操作系统占有市场份额的预期,到2015年Android操作系统的占有份额将达到50%左右,远高于其他操作系统。
开发程序的第一步便是开发环境的配置,首先是Java SDK的安装、配置和测试,然后是Eclipse的安装与测试,最后是搭建Android开发环境,也就是下载SDK和安装ADT,完成以上步骤便可以开始开发程序了。
本课程主要使用了赋值运算符和算术运算符。
赋值运算符,由于Java语言是强类型的语言,所以赋值时要求类型必须匹配,如果类型不匹配需要能自动转换为对应的类型,否则将报语法错误。
Java的算术运算符有加号(+)、减号(-)、乘号(*)、除号(/)以及模数(%,从整数除法中获得余数)。
整数除法会直接去掉小数,而不是进位。
Button控件主要用于单击操作,处理相应事件。
按钮的事件处理方式有两种,一种是直接给按钮注册监听器,另一种是直接指定处理单击事件的方法。
定义buttonClick方法时,注意两点,一是此类方法必须是public修饰,二是参数列表只能有一个View类型参数,当指定按钮被单击时,作为View传入此方法。
基本流程控制语句主要用到了分支控制语句中的if语句,通过判断输入的值来选择使用语句,使程序按正确顺序逐步执行,为程序提供了执行方向。
12 手机应用设计2.1 开发背景算术涉及人们生活方方面面,计算器能使人们快捷,准确的算账,提高工作效率。
2.2 设计思想本应用程序采用yout下的main布局文件进行布局,将单行文本加入相应区域,将数字按钮和运算符按钮及控制按钮添加到相应区域,同时注册按钮事件监听器。
2.3策略描述计算器的程序设计,必然有数据输入,其中数据包括运算符和数字,均要通过计算器上的button按钮选项输入进去,里面录入的必然是字符型的数据如果进行运算要将输入的数据转化成Double型,以防出错。
主要是通过将数字键和其他符号区别开来进行监听。
2.4 设计将要到达的目标解决日常生活中简单的算数问题,例如9*9=81(如下图)23 概要设计3.1 需求分析日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧的计算器,可以让用户的操作也更加方便和快捷。
本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,界面简洁适用。
3.2 基本框架该计算器是由一个显示输入数据和结果的显示区域,10个数字按钮,4个运算符按钮,一个等号按钮,,一个小数点按钮和一个清屏按钮组成的。
清屏按钮的作用是清除输入数据和结果。
3.3 类设计ActivityNumberAction CommandAction calculator34 详细设计4.1 运行过程4.2 类实现public class calculator extends Activity {private Button[] btnNum = new Button[11];private Button[] btnCommand = new Button[5];private EditText editText = null;private Button btnClear = null;private String lastCommand;private boolean clearFlag;private boolean firstFlag;private double result;public calculator() {result = 0;firstFlag = true;clearFlag = false;4lastCommand = "="; }@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.activity_main);btnCommand[0] = (Button) findViewById(R.id.plus); btnCommand[1] = (Button) findViewById(R.id.minus); btnCommand[2] = (Button) findViewById(R.id.multiply); btnCommand[3] = (Button) findViewById(R.id.divide); btnCommand[4] = (Button) findViewById(R.id.equal);btnNum[0] = (Button) findViewById(R.id.num0); btnNum[1] = (Button) findViewById(R.id.num1); btnNum[2] = (Button) findViewById(R.id.num2); btnNum[3] = (Button) findViewById(R.id.num3); btnNum[4] = (Button) findViewById(R.id.num4); btnNum[5] = (Button) findViewById(R.id.num5); btnNum[6] = (Button) findViewById(R.id.num6); btnNum[7] = (Button) findViewById(R.id.num7); btnNum[8] = (Button) findViewById(R.id.num8); btnNum[9] = (Button) findViewById(R.id.num9); btnNum[10] = (Button) findViewById(R.id.point); editText = (EditText) findViewById(R.id.print); editText.setText("0.0");// 实例化监听器对象NumberAction na = new NumberAction(); CommandAction ca = new CommandAction();for (Button bc : btnCommand) {bc.setOnClickListener(ca);}5for (Button bc : btnNum) {bc.setOnClickListener(na);}// clear按钮的动作btnClear = (Button) findViewById(R.id.clear); btnClear.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {editText.setText("0.0");// 初始化各项值result = 0; // x的值firstFlag = true; // 是首次运算clearFlag = false; // 不需要清空lastCommand = "="; // 运算符}});}4.2.1private class NumberAction implements OnClickListener { @Overridepublic void onClick(View view) {Button btn = (Button) view;String input = btn.getText().toString();if (firstFlag) {if (input.equals(".")) {return;}if (editText.getText().toString().equals("0.0")) {editText.setText("");6}firstFlag = false;} else {String editTextStr = editText.getText().toString();if (editTextStr.indexOf(".") != -1 && input.equals(".")) { return;}if (editTextStr.equals("-") && input.equals(".")) { return;}if (editTextStr.equals("0") && !input.equals(".")) { return;}}if (clearFlag) {editText.setText("");clearFlag = false;}editText.setText(editText.getText().toString() + input); }}4.2.2private class CommandAction implements OnClickListener {@Overridepublic void onClick(View view) {Button btn = (Button) view;String inputCommand = (String) btn.getText();7if (firstFlag) {if (inputCommand.equals("-")) {editText.setText("-");firstFlag = false;}} else {if (!clearFlag) {calculater(Double.parseDouble(editText.getText().toString()));}lastCommand = inputCommand;clearFlag = true;}}}4.3 运行描述先输入一个数字,再输入一个运算符,再输入另一个数字,然后按等号按钮,得到结果。