版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学校代码: 10128学 号: 课程设计说明书题 目: 移动版计算器学生姓名: 学 院: 信息工程学院班 级: 计12-1班指导教师: 庄旭菲 2015 年 7 月 目录第一章 总体功能介绍11.1功能介绍11.2软件设计11.2.1系统软件的结构图11.2.2功能的操作流程11.2.3计算器模块1第二章 各功能模块的具体实现32.1系统主界面32.2基本加减乘除界面92.3其他运算界面12第三章 调试及运算结果163.1加法运算结果163.2减法运算结果163.3乘法运算结果173.4除法运算结果173.5带括号运算结果173.6复合运算结果17第四章 总结18 摘要:Android是当今最
2、重要的手机开发的平台之一,它是建立在Java基础上的,能够迅速建立手机软件的解决方案。Android的功能十分强大。成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、用户界面和应用软件组成,具有以下特点:开放性、应用程序无界限、应用程序是在平等条件下创建的、应用程序可以轻松的嵌入网络、应用程序可以并行运行。 第一章 总体功能介绍1.1功能介绍计算器软件的系统功能介绍:(1) 实现简单的要实现基本的加、减、乘、除四则运算。 (2) 可以实现在前一步计算结果上继续作加、减、乘、除,即连加、减、乘、 除。(3) 有清空功能,即清除所有数据,重新开始计算。(4) 拥有后退按
3、键,可以实现清除单个错误数据。(5) 可以实现复合运算。1.2软件设计1.2.1系统软件的结构图1.2.2功能的操作流程 首先用户根据自己的实际需要选择计算,得出程序结果,输入数据,选择运算符号,再输入数据,选择等号,即可以得出结果。1.2.3计算器模块图1-1 MyOntouchListener 类图图1-2 Utils类图图1-3 MainActivity类图程序中的类图如图1-1,1-2,1-3所示。Utils中主要包含了两个方法。分别是逆波兰式的生成以及计算结果的输出。这两个方法为utiNi()以及calculate()图1-1中的类是MainActivity中的子类MainActiv
4、ity中包含了按钮的点击事件以及触摸设置背景颜色,按钮字体颜色等功能。第二章 各功能模块的具体实现2.1系统主界面 本界面是用来线性布局与网格布局,控件有文本框与按钮 <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ccd0d1" android:orientation="v
5、ertical" android:paddingBottom="dimen/activity_vertical_margin" android:paddingLeft="dimen/activity_horizontal_margin" android:paddingRight="dimen/activity_horizontal_margin" android:paddingTop="dimen/activity_vertical_margin" ><LinearLayout android
6、:layout_width="match_parent" android:layout_height="116dp" android:background="#ccd0d1" android:orientation="vertical" > <EditText android:id="+id/et_number" android:layout_width="match_parent" android:layout_height="58dp"an
7、droid:layout_weight="1"android:textColor="android:color/black" android:background="drawable/et_bg1_01" android:gravity="right|bottom" android:paddingRight="10dp" android:paddingBottom="5dp" android:focusable="false" android:single
8、Line="true" android:textSize="20sp" /> <EditText android:id="+id/et_number1" android:layout_marginTop="0dp" android:layout_width="match_parent" android:layout_height="58dp"android:layout_weight="1"android:textColor="and
9、roid:color/black" android:background="drawable/et_bg1_02" android:gravity="right|bottom" android:paddingRight="10dp" android:paddingBottom="5dp" android:hint="0" android:focusable="false"android:singleLine="true" android:text
10、Size="40sp" /> </LinearLayout> <Switch android:id="+id/switchButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:thumb="drawable/thumb" android:track="drawable/track" android:layout_gravity=&
11、quot;left|top" android:layout_weight="1" android:checked="false" android:textOff="" android:textOn="" /> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="5" and
12、roid:background="#ccd0d1" android:columnCount="5" android:orientation="horizontal" android:rowCount="6" > <Button android:id="+id/bt_left" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616
13、A73" android:background="drawable/bg_bt2" android:layout_row="1" android:text="(" /> <Button android:id="+id/bt_right" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:backgro
14、und="drawable/bg_bt2" android:text=")" /> <Button android:id="+id/bt_C" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#F07E21" android:background="drawable/bg_bt2" android:text="C" /&g
15、t; <Button android:id="+id/bt_DEL" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt2" android:layout_columnSpan="2" android:layout_gravity="fill_horizontal"
16、 android:text="DEL" /> <Button android:id="+id/bt_7" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="7" /> <Button android:id=&quo
17、t;+id/bt_8" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="8" /> <Button android:id="+id/bt_9" android:layout_width="60dp" android
18、:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="9" /> <Button android:id="+id/bt_cf" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A
19、73" android:background="drawable/bg_bt2" android:layout_columnSpan="2" android:layout_gravity="fill_horizontal" android:text="/" /> <Button android:id="+id/bt_4" android:layout_width="60dp" android:layout_height="48dp"
20、android:textColor="#616A73" android:background="drawable/bg_bt1" android:layout_row="5" android:text="4" /> <Button android:id="+id/bt_5" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A
21、73" android:background="drawable/bg_bt1" android:text="5" /> <Button android:id="+id/bt_6" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" androi
22、d:text="6" /> <Button android:id="+id/bt_mul" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt2" android:layout_columnSpan="2" android:layout_gravity=&qu
23、ot;fill_horizontal" android:text="*" /> <Button android:id="+id/bt_1" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="1" /> <
24、Button android:id="+id/bt_2" android:layout_width="60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="2" /> <Button android:id="+id/bt_3" android:layout_width=&q
25、uot;60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="3" /> <Button android:id="+id/bt_jf" android:layout_width="60dp" android:layout_height="48dp" android
26、:textColor="#616A73" android:background="drawable/bg_bt2" android:layout_columnSpan="2" android:layout_gravity="fill_horizontal" android:text="-" /> <Button android:id="+id/bt_0" android:layout_width="60dp" android:layout_he
27、ight="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:layout_columnSpan="2" android:layout_gravity="fill_horizontal" android:text="0" /> <Button android:id="+id/bt_point" android:layout_width=&
28、quot;60dp" android:layout_height="48dp" android:textColor="#616A73" android:background="drawable/bg_bt1" android:text="." /> <Button android:id="+id/bt_add" android:layout_width="60dp" android:layout_height="48dp" andro
29、id:textColor="#616A73" android:background="drawable/bg_bt2" android:layout_columnSpan="2" android:layout_gravity="fill" android:layout_rowSpan="2" android:text="+" /> <Button android:id="+id/bt_sum" android:layout_width=&quo
30、t;60dp" android:layout_height="48dp" android:textColor="#FFFDFD" android:background="drawable/ic_launcher" android:layout_columnSpan="3" android:layout_gravity="fill" android:text="=" /> </GridLayout></LinearLayout>2.2基本
31、加减乘除界面用户在文本框中输入参加运算的数据,并且点击要进行的运算符号,点击等号之后,会显示出计算结果。点击清除按钮,可以将文本框的内容以及显示的结果一起清空,用户可以输入新的数据按钮计算。复合运算中的表达式先生成中缀表达式,然后转换为逆波兰式。求逆波兰式的流程图如下:0图1-4 逆波兰式生成的流程图代码实现:public static String utiNi(String str)boolean b = Pattern.matches("(|*/.).+()|-+*/.)", str);if (b)String srcStr = str;String desStr =
32、""boolean errorFlag = true, isIncreaceFlag = false;char stack = new char100;int postion = 0, top = 0;while (postion <= srcStr.length() - 1)char temch = srcStr.charAt(postion);if (temch = '(')top+;stacktop = temch;isIncreaceFlag = false; else if (temch = ')')while (stackt
33、op != '(')if (top = 0)errorFlag = false;break; elsedesStr += ','desStr += stacktop;top-;top-;isIncreaceFlag = false; else if (temch = '+' | temch = '-')while (top != 0 && stacktop != '(')desStr += ','desStr += stacktop;top-;if (postion = 0)desS
34、tr += temch;else if(postion = 1&&str.charAt(0)='(')desStr += temch;elsetop+;stacktop = temch;isIncreaceFlag = false;else if (temch = '*' | temch = '/')while (stacktop = '*' | stacktop = '/')desStr += ','desStr += stacktop;top-;top+;stacktop = t
35、emch;isIncreaceFlag = false; elseif (isIncreaceFlag = false)&& postion > 0&& srcStr.charAt(postion - 1) != '(')if(postion=2)&&(str.charAt(0)='(');else if(postion=1)&&(str.charAt(0)='+'|str.charAt(0)='-');else desStr += ','des
36、Str += temch;isIncreaceFlag = true;postion+;while (top != 0)if (stacktop = '(')errorFlag = false;break;elsedesStr += ','desStr += stacktop;top-;if (errorFlag = true)return desStr;return null;2.3其他运算界面可以实现的是切换界面风格。括号的实现以及清除和后退: else if ("".equals(opera) if (firstNumber.equal
37、s("") ed_out.setText("根号内不Null");firstNumber = ""SecondNumber = ""numberString = ""text = ""ed_in.setText(""); else result = Math.sqrt(Double.parseDouble(firstNumber);ed_out.setText(" " + firstNumber + " = "+ S
38、tring.valueOf(result);ed_in.setText(""); else if ("".equals(opera) if (firstNumber.equals("") ed_out.setText("底数不Null");firstNumber = ""SecondNumber = ""numberString = ""text = ""ed_in.setText(""); else if (Sec
39、ondNumber.equals("") ed_out.setText("指数不Null");firstNumber = ""SecondNumber = ""numberString = ""text = ""ed_in.setText(""); else result = exponentFun(Double.parseDouble(firstNumber),Double.parseDouble(SecondNumber);ed_out.setText
40、(firstNumber + " "+ SecondNumber + " = "+ String.valueOf(result);ed_in.setText(""); else if ("".equals(opera) if (firstNumber.equals("") firstNumber = ""SecondNumber = ""numberString = ""text = ""ed_in.setText(
41、""); else result = factorialFun(Double.parseDouble(firstNumber); else if ("".equals(text) opera = ""firstNumber = numberString;numberString = ""ed_in.setText(numberString);ed_out.setText(" " + firstNumber); else if ("".equals(text) opera =
42、""firstNumber = numberString;numberString = ""ed_in.setText(numberString);ed_out.setText(firstNumber + " "); else if ("".equals(text) opera = ""firstNumber = numberString;numberString = ""ed_in.setText(numberString);ed_out.setText(firstNumb
43、er + " ");sound(); else if ("c".equals(text) opera = ""firstNumber = ""SecondNumber = ""numberString = ""text = ""ed_in.setText("");ed_out.setText(""); else if ("".equals(text) if (!numberString.equals("") numberString = String.copyValueOf(numberString.toCharArray(), 0,numberString.length() - 1);ed_in.setText(numberString); else if ("".equals(text) numberString = numberString;ed_in.setText(numberString); else numberString = numberStri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年湖南省发展和改革委员会直属事业单位招聘4人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南益阳市广播电视台招聘事业单位工作人员12人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南湘西州古丈县教育事业单位引进人才历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南永州蓝山县事业单位招聘122人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南永州市广播电视台招聘4人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南株洲炎陵县事业单位招聘16人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南怀化洪江市部分事业单位引进人才46名历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南张家界金海实验学校招聘教师42名历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南常德临澧县招聘全日制本科及以上学历人才92人历年高频500题难、易错点模拟试题附带答案详解
- 2024年湖南娄底市娄星区直事业单位招聘38人历年高频500题难、易错点模拟试题附带答案详解
- 消防专业校企合作方案
- 免疫学发展史History课件
- NY∕T 3349-2021 畜禽屠宰加工人员岗位技能要求
- 水利工程竣工结算书模板
- 海底两万里 作品简介名著导读PPT模板
- 透析患者左心衰护理个案
- 教职工体检项目
- 2021年英语专业四级真题(含答案)
- 风险评估与风险应对
- 4.2怎样实现创新设计(20张PPT)
- T-CCIAT 0032-2021 墙体饰面砂浆应用技术规程
评论
0/150
提交评论