android计算器设计文档_第1页
android计算器设计文档_第2页
android计算器设计文档_第3页
android计算器设计文档_第4页
android计算器设计文档_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称Android或JAVA综合实训实验名称电子计算器专业计算机科学与技术班级1002班学号201003010234姓名吴超指导教师陈华光2013年12月18日.引言.需求分析1.状态定义2.计算器功能三.总体设计1.软件设计结构图2.程序设计流程图四.模板设计1.计算模块详细设计2.用户模型设计目录3.计算模板设计的实现4.计算器模板设计五.计算器演示10六.小结13七附录14 一:引言目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。手机上的软件也随着手机的发展

2、变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多.我们在此次系统中所做的工作主要是设计整个系统以及利用编程语言实现整个系统,使系统能够正确的运行计算功能。二:需求分析(一)状态定义:能满足基本的数学运算。具体要求如下:1刚启动计算器时的状态:开始计算按键开始键ON2清零:计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。2一个操作数:输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。3运算结果:键入了“=”键后计算器所处的状态,如

3、依次键入“35=”之后计算器的状态。在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。4一个操作数和一个两元符号:输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或,31x5之后计算器的状态。5操作数两元符操作数:输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30一4”或“3+5=一5”后计算器的状态。6操作数两元符运算结果:输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。7错误:执行非法计算后所处的状态,如执行8计算或者对负数的开方计算后的状态。比如6/0后计算的结果是“0不能做除

4、数”。二)本计算器具有以下功能:用表说明状态操作计算器响应结果状态清零键入数字键,如1显示键入的数字,操作数=键入的数字一个操作数键入减号键相当于键入了一0,但负号不显示,只显示0。一个操作数键入除减号键和数字键以外的键忽略键入的键,仍保留清零状态清零个操作数键入数字键显示新操作数,新操作数=当前操作数*10+键入的数字一个操作数键入回退键显示新操作数,新操作数=当前操作数除以10取整一个操作数清屏键显示0,但操作数不变一个操作数键入清零(任何状态下,键入清零键都会到清零状态下,以下的状态不再重复)清零清零键入加减乘除中任意键仍显示操作数,跳转到状态“一个操作数和一个两元符号”一个操作数和一个

5、两元符号键入开方键对操作数执行开方运算,显示运算结果运算结果键入=键显示操作数,如果操作数为负数,显示负号和操作数,如“一32”运算结果个操作数键入忽略,不做任何处理一个操作数和一个两元符号键入加减乘除之一用新操作符替换原操作符,如当前是“30+”,接着键入“一”则变为“30尹一个操作数和一个两元和个两元符号符号键入=如果操作符为加法,则加0,显示结果;如果操作符为减法,显示为负数;如果操作符为乘法,显示为第一个操作数相乘,如键入12*=,结果为144;如果键入为除法,结果为1。运算结果键入回退键第一个操作数回退一位,操作符保持不变,如:123+,键入回退键后显示12,操作符仍然为+一个操作数

6、和一个两元符号键入开方键执行开方操作,操作符保持不变;例如:当前是“9+”,键入开方键则显示3。运算结果键入数字键、小数点键入的为第一个操作数,例如:当前是“9+”,键入8,显示为8操作数2元操作符操作数运算结果键入加减乘除中任意键结果作为一个操作数,例如:当前是“45”,键入*,显示仍然是45,操作符是*,将执行乘法。一个操作数和一个两元符号键入数字和小数点清除结果,键入的数值作为新的操作数;例如当前是“16开方”后的运算结果,显示是“4”;键入56,显示“56”。一个操作数键入、=键显示结果。如:当前是“16+开方”后的运算结果,键入=,显示的结果为20。执行16+16开方的运算;当前显示

7、的结果9,或者任意其它值,输入,运算结果显示“0”。运算结果键入开方键运算结果再执行开方运算运算结果键入回退键结果回退一位,如当前显示“123”,键入回退键,显示“12”。运算结果操作键入加减乘除中任意键先执行前面的计算,显示结果并记下下一个操作符;例如:起始状态键入的是12*6,然一个操作数和一个两元数2元操作符操作数后键入+,则显示72符号键入例如输入:12+3%,结果0.36;12-3%,结果0.36;12*3%,结果0.36;12-3%,结果0.36;律按照乘法计算。运算结果键入=执行运算,得出结果。例如当前是键入了“1+2”,再键入“=”,显示“3”。运算结果键入数字键、回退键、小数

8、点键等待键入第二个操作数完毕操作数2元操作符操作数开方键第二个操作数开方操作数2元操作符运算结果操作符为除号,第二个操作数为0;负数开方不正确的运算错误操作数2元操作符运算结果键入数字键、小数点键忽略开方步骤,直接进行操作数与键入数字进行操作符的运算。例如:4+9开方32结果为36;5-9开方65结果为-60。操作数2元操作符操作数键入=计算结果。例如:12+9开方=,先计算9开方=3,再12+3=15;12*64开方=,结果96。运算结果键入例如输入:12+9开方,再键入结果0.36;12-9开方,再键入结果0.36;12*9开方,再键入结果0.36;12-9开方,再键入结果0.36;律按照

9、乘法计算。运算结果键入加减乘除中任意键得到运算结果,并记忆操作符;例如2+9开方,键入+得到15+。一个操作数和一个两元符号键入开方、回退键运算结果再次执行开方或者回退操作数2元操作符运算结果错误清零以外的任何键忽略,计算器不做任何响应错误清零键清零清零三:总体设计一)软件设计结构图本计算器主要可以实现基本的加减乘运算和其他的一些运算。包括:加法运算,减法运算,乘法运算,除法运算。其他运算包括开方运算,*2运算,正负运算,清除运算等。二)程序流程设计图运行程序后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基

10、本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。四.模板设计计算模块详细设计系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次系统设计中的重点。系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。同时系统想完成计算功能必须要处理用户的输入当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。这部分主要是对输入进行的逻辑判断,基本会通过ifelse来实现逻

11、辑判断。用户界面设计界面设计应该尽量简洁而美观,应该具有良好的交互性。当然,我们每个人可以根据自己的喜好来进行设计,根据我个人的喜好,我最终设计出来的计算器界面如图4-7所示:3568g*+/9:14cleardelete5554:LTBasicCcnlrls简单计尊器HardwareDPADrt&tnbkdinAVDHmrd悯自阳KeyboardUseyourptiydcalkeyboardtoprovideinput从上图中,我们可以很直观的看到,从上到下分别是:显示模块、输入模块、计算模块。(1)输入模块,主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,

12、当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,具体的处理办法会在相关的地方进行说明。在本项目中,在触屏上提供了各种功能的按键,分别是C,0,1,2,3,4,5,6,7,8,9,+,-,X,F,=,delete,clear,+/-,Vx,x2o(2)显示模块,主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其她信息。计算模块设计的实现计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,记忆相关功能的完成,加、

13、减、乘、除等各种计算功能的完成,运算符的替换,初始化系统等等。计算器的特殊功能键列表5-1计算器的特殊功能键列表5-1 # Orie.Base.Base.Weig.Meas.DividerShow.Divi.-ViewStyleTagLirLe:=Lt.按键名称按键功能clear计算清零键,重新开始计算delete本次输入清零键,按下后可以重输入本次数据按键监听同时监听了触屏上的按键和键盘上的按键,其中按键的监听使用了的松开为判断的标准,即用户松开按键的时候程序才会读取数据。计算模块是整个系统的主体部分计算器模板设计布局效果图:田_由崔mi1id田LayouOrienGravityGravit

14、yConte.EOiitline蘆EOiitline蘆 ?=?xml-LinearL:巧put:+id./zherLgfiiIEditText:+id/1extVi1-jTableLayuut:+id/1ablelaycnitLine:rLayuiit:+idi11ine:t-layou|kButton:+id/lm11one=E;uttun:+id/bu11unceTableRuw:+id/rowU|kButtuTl:|ohEiittun:|函Buttun:;Buttotl:+id/buttuTlI+id/butturi2+id/butturLS+id/buttorLlj1Fl-|-|Tab

15、leRuw:+id/ruw1|函Buttun:|kButtotl:|ohEiittun:|函Buttun:+id/buttuM+id/buttuTlS+id/buttunFi+id/butturLUZTableRuw:+id/rowS|ohEiittun:|函Buttun:|函Buttun:=|ohEuttijm+id/buttunT+id/butturLS+ii/button9+id/buttonLlSFl-|-|TableRuw:+id/rowS|函Buttun:|ohButton:|函Buttun:|函Buttun:+ii/buttonEI+id/buttunLlFi+id/buttur

16、LUS+ii/buttonl4白1ILirLe:ii-Laycmt:+iil/1ableRow1|函Buttun:+id/iheng|函Buttun:+id/pirLgf:rLg|ohEutton:+id/kai:辽电 五计算器演示6+3=?(进行运算时自动把结果转换成double型)6-2=?6*2=?6/2=?9的平方?16开方?六.小结这次项目android计算器项目设计是在eclipse平台下设计,到现在为止,该系统的功能基本符合了普通计算器的要求,整个系统界面简单明了,使用起来十分方便,具有普通计算器的基本功能,同时拓展了一些普通计算器上没有的部分科学计算功能。在整个开发过程中,从需

17、求分析到总体架构的构思,到最后代码的编写我投入了大量的时间和精力,对系统中的每个功能都进行了反复的调试,修改。因为这是我是第一次系统性的进行软件的开发,不论是在知识层面、开发平台的使用层面还是经验方面都有着很大的欠缺和不足,因此本软件难免会有一些功能不完善、界面不美观等一些不尽如人意的地方,但是再短短一个星期的时间内,我已经进行了很大的努力。通过这个android计算器项目设计,我不经巩固了我们在书本上学到和平时老师传授的知识,而且还学到了许多书本上学不到的知识,并运用了网络这个平台查询一些不明白的知识点。指导老师在我软件代码编写和后期软件调试期间,给我很大的帮助。要谢谢各位帮过我的老师和同学

18、。这次的实验让我对我的学过的知识有了深一步的了解。七.附录1:srcymqdemo03目录packageymq.demo03;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.*;importandroid.widget.*;publicclassdemo03extendsActivity/*Calledwhentheactivityisfirstcreated.*/Stringstr=皖西学院;EditTextet;intc=0,flag=0;doubleb=0.0,g=0.0,f=0.0;Viewvi

19、;/计算方法publicdoublecalculater()switch(c)case0:f=g;break;case1:f=b+g;break;case2:f=b-g;break;case3:f=b*g;break;case4:f=b/g;break;b=f;c=0;returnf;publicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/获得按键finalButtonnumber=newButton10;finalButtonfu

20、hao=newButton11;fuhao0=(Button)findViewById(R.id.button01);fuhao1=(Button)findViewById(R.id.button02);fuhao2=(Button)findViewById(R.id.button03);fuhao3=(Button)findViewById(R.id.button04);fuhao4=(Button)findViewById(R.id.button05);fuhao5=(Button)findViewById(R.id.button06);fuhao6=(Button)findViewByI

21、d(R.id.buttonce);fuhao7=(Button)findViewById(R.id.buttonc);fuhao8=(Button)findViewById(R.id.zheng);fuhao9=(Button)findViewById(R.id.kaifang);fuhao10=(Button)findViewById(R.id.pingfang);number0=(Button)findViewById(R.id.button0);number1=(Button)findViewById(R.id.button1);number2=(Button)findViewById(

22、R.id.button2);number3=(Button)findViewById(R.id.button3);number4=(Button)findViewById(R.id.button4);number5=(Button)findViewById(R.id.button5);number6=(Button)findViewById(R.id.button6);number7=(Button)findViewById(R.id.button7);number8=(Button)findViewById(R.id.button8);number9=(Button)findViewById

23、(R.id.button9);et=(EditText)findViewById(R.id.textView1);et.setText(str);fuhao6.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubstr=;et.setText(str);vi=v;);fuhao7.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedm

24、ethodstubb=0.0;c=0;g=0.0;str=;et.setText(str););fuhao8.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(vi!=fuhao5&str!=) ); charch=str.charAt(0);if(ch=-)str=str.replace(-,);elsestr=-+str;et.setText(str););fuhao9.setOnClickListener(newView.OnClickLi

25、stener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(str!=)doublea=Double.parseDouble(str);str=Math.sqrt(a)+;et.setText(str););fuhao10.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(str!=)doublea=Double.parseDouble(str);str=+a*a;et.setT

26、ext(str););/设定数字按键number0.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=0;et.setText(str);flag=0;elsecharch1;ch1=str.toCharArray();if(!(ch1.length=1&ch10=0)str+=0;et.setText(str);vi=v;);number1.setOnClickListener(newView.OnClickL

27、istener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=1;et.setText(str);flag=0;elsestr+=1;et.setText(str);vi=v;);number2.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=2;et.setText(str);flag=0;elsestr+=

28、2;et.setText(str);vi=v;number3.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=3;et.setText(str);flag=0;elsestr+=3;et.setText(str);vi=v;);number4.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generat

29、edmethodstubif(flag=1)str=;str+=4;et.setText(str);flag=0;elsestr+=4;et.setText(str); # vi=v;);number5.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=5;et.setText(str);flag=0;elsestr+=5;et.setText(str);vi=v;);number6.setOnClickList

30、ener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=6;et.setText(str);flag=0;elsestr+=6;et.setText(str);vi=v;);number7.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=7;et.setText(

31、str);flag=0;elsestr+=7;et.setText(str);vi=v;);number8.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(flag=1) # str=;str+=8;et.setText(str);flag=0;elsestr+=8;et.setText(str);vi=v;);number9.setOnClickListener(newView.OnClickListener()publicvoidonCli

32、ck(Viewv)/TODOAuto-generatedmethodstubif(flag=1)str=;str+=9;et.setText(str);flag=0;elsestr+=9;et.setText(str);vi=v;);/设定符号键/设定符号键 #/加fuhao0.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(str!=)if(vi=fuhao0|vi=fuhao1|vi=fuhao2|vi=fuhao3)c=1;elseg=D

33、ouble.parseDouble(str);calculater();str=+f;et.setText(str);c=1;flag=1;vi=v;);/减fuhao1.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif(str!=)if(vi=fuhao0|vi=fuhao1|vi=fuhao2|vi=fuhao3) # c=2;elseg=Double.parseDouble(str);calculater();str=+f;et.setText(str);c=2;flag=1;vi=v;);/乘fuhao2.setOnClickListener(newView.OnClickListener()publicvoidonClick(Viewv)/TODOAuto-generatedmethodstubif

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论