android计算器设计.docx

上传人:b****8 文档编号:10325094 上传时间:2023-02-10 格式:DOCX 页数:43 大小:403.80KB
下载 相关 举报
android计算器设计.docx_第1页
第1页 / 共43页
android计算器设计.docx_第2页
第2页 / 共43页
android计算器设计.docx_第3页
第3页 / 共43页
android计算器设计.docx_第4页
第4页 / 共43页
android计算器设计.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

android计算器设计.docx

《android计算器设计.docx》由会员分享,可在线阅读,更多相关《android计算器设计.docx(43页珍藏版)》请在冰豆网上搜索。

android计算器设计.docx

android计算器设计

课程实训报告

课程名称计算机系统综合实训

课题名称电子计算器

专业计算机科学与技术

班级

学号

姓名

指导教师陈华光黄鲲

2013年12月24日

 

湖南工程学院

课程实训任务书

 

课程名称计算机系统综合实训

课题基于Android的电子计算器

专业班级

学生姓名

学号

指导老师陈华光黄鲲

审批

 

任务书下达日期2013年12月4日

任务完成日期2013年12月24日

 

一、设计内容和设计要求1

1.设计内容1

2.设计内容1

二、需求分析2

1.状态定义2

2.计算器功能3

三、总体设计6

1.软件设计结构图6

2.程序设计流程图7

四、模板设计8

1.计算模块详细设计8

2.用户模型设计8

3.计算模板设计的实现9

4.计算器模板设计10

五、程序调试与运行截图11

六、总结12

七、附录13

 

一、设计内容与设计要求

1.设计内容:

通过计算器实现简单的加减乘除的运算计算器。

在手机屏幕上设计一个计算器,有10个数字1,2,3,4,5,6,7,8,9,0和4个运算+,-,*,/等基本按钮,还包括和清除按钮和显示结果的文本框,实现加、减、乘、除四个简单的运算。

并有清除功能。

2.设计要求:

(1)论述课题的性质、内容以及本次课程实训的目的和要求。

(2)系统对计算机软、硬件环境的基本要求,对JAVA或Android应用程序作简要的说明。

(3)界面设计和游戏操作设计:

界面要求美观和友好(可使用图片资源文件),使用手机键盘上的4个方向键控制方向,按照手机上的操作习惯进行设计。

(4)核心数据结构设计:

主要是界面控制信息和逻辑控制信息。

(5)编写代码、上机输入、调试、修改并运行通过。

(6)编写实训说明书。

说明书是总结性的技术文件,应全面叙述整个设计的内容及过程(可参考上述5条),发现的问题及解决方法等。

(7)源代码和参考书目应作为说明书的附录。

(8)说明书应采用A4纸张,文字说明不少于4000字。

说明书中应包括系统结构示意图。

二、需求分析

目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了。

手机上的软件也随着手机的发展变得丰富起来了,时至今日已经出现了很多专门制作手机软件的公司,虽然制作的多是游戏软件,但是一些辅助性的工具软件也有了很多。

如电子计算器,此类计算器以软件存在,能在PC电脑或者智能手机,平板电脑上使用。

它功能多,功能可以通过软件升级进行扩展。

随着平板与智能手机有普及,软件形式的计算器的应用会越来越多,最终有望取代传统的手持式计算器。

1.状态定义

能满足基本的数学运算,具体要求如下:

(1)刚启动计算器时的状态:

开始计算按键开始键"ON"

(2)清零:

计算刚启动时,或者任何时候键入了清零键,计算器所处的状态。

2.一个操作数:

输入了一个操作数时计算器所处的状态,如键入“2”后的状态,此时操作数为“2”,或者依次键入“3”、“8”后的状态,此时操作数为“38”。

(3)运算结果:

键入了“=”键后计算器所处的状态,如依次键入“3+5=”之后计算器的状态。

在此状态如果输入数字,输入的数字将作为第一个操作数,开始一次新的计算。

(4)一个操作数和一个两元符号:

输入了一个操作数和加减乘除中的一个键后计算器的状态,如依次输入“2+”或“31×5=÷”之后计算器的状态。

(5)操作数两元符操作数:

输入了一个操作数、一个加减乘除符号和另一个操作数后计算器所处的状态,如依次键入“30÷4”或“3+5=÷5”后计算器的状态。

(6)操作数两元符运算结果:

输入了一个操作数、一个加减乘除符号和另一个操作数后紧接着键入开方键计算器所处的状态。

(7)错误:

执行非法计算后所处的状态,如执行÷0计算或者对负数的开方计算后的状态。

比如6/0后计算的结果是“0不能做除数”。

 

2.计算器功能列表

状态

操作

计算器响应

结果状态

清零

键入数字键,如1

显示键入的数字,操作数=键入的数字

一个操作数

键入减号键

相当于键入了-0,但负号不显示,只显示0。

一个操作数

键入除减号键和数字键以外的键

忽略键入的键,仍保留清零状态

清零

一个操作数

键入数字键

显示新操作数,新操作数=当前操作数*10+键入的数字

一个操作数

键入回退键

显示新操作数,新操作数=当前操作数除以10取整

一个操作数

清屏键

显示0,但操作数不变

一个操作数

键入清零(任何状态下,键入清零键都会到清零状态下,以下的状态不再重复)

清零

清零

键入加减乘除中任意键

仍显示操作数,跳转到状态“一个操作数和一个两元符号”

一个操作数和一个两元符号

键入开方键

对操作数执行开方运算,显示运算结果

运算结果

键入=键

显示操作数,如果操作数为负数,显示负号和操作数,如“-32”

运算结果

一个操作数和一个两元符号

键入%

忽略,不做任何处理

一个操作数和一个两元符号

键入加减乘除之一

用新操作符替换原操作符,如当前是“30+”,接着键入“÷”则变为“30÷”

一个操作数和一个两元符号

键入=

如果操作符为加法,则加0,显示结果;如果操作符为减法,显示为负数;如果操作符为乘法,显示为第一个操作数相乘,如键入12*=,结果为144;如果键入为除法,结果为1。

运算结果

键入回退键

第一个操作数回退一位,操作符保持不变,如:

123+,键入回退键后显示12,操作符仍然为+

一个操作数和一个两元符号

键入开方键

执行开方操作,操作符保持不变;例如:

当前是“9+”,键入开方键则显示3。

运算结果

键入数字键、小数点

键入的为第二个操作数,例如:

当前是“9+”,键入8,显示为8

操作数2元操作符操作数

运算结果

键入加减乘除中任意键

结果作为一个操作数,例如:

当前是“45”,键入*,显示仍然是45,操作符是*,将执行乘法。

一个操作数和一个两元符号

键入数字和小数点

清除结果,键入的数值作为新的操作数;例如当前是“16开方”后的运算结果,显示是“4”;键入56,显示“56”。

一个操作数

键入%、=键

显示结果。

如:

当前是“16+开方”后的运算结果,键入=,显示的结果为20。

执行16+16开方的运算;当前显示的结果9,或者任意其它值,输入%,运算结果显示“0”。

运算结果

键入开方键

运算结果再执行开方运算

运算结果

键入回退键

结果回退一位,如当前显示“123”,键入回退键,显示“12”。

运算结果

操作数2元操作符操作数

键入加减乘除中任意键

先执行前面的计算,显示结果并记下下一个操作符;例如:

起始状态键入的是12*6,然后键入+,则显示72

一个操作数和一个两元符号

键入%

例如输入:

12+3%,结果0.36;12-3%,结果0.36;12*3%,结果0.36;

12÷3%,结果0.36;一律按照乘法计算。

运算结果

键入=

执行运算,得出结果。

例如当前是键入了“1+2”,再键入“=”,显示“3”。

运算结果

键入数字键、回退键、小数点键

等待键入第二个操作数完毕

操作数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;一律按照乘法计算。

运算结果

键入加减乘除中任意键

得到运算结果,并记忆操作符;例如12+9开方,键入+得到15+。

一个操作数和一个两元符号

键入开方、回退键

运算结果再次执行开方或者回退

操作数2元操作符运算结果

三、总体设计

1.软件设计结构图

本计算器主要可以实现基本的加减乘运算和其他的一些运算。

包括:

加法运算,减法运算,乘法运算,除法运算。

其他运算包括开方运算,*2运算,正负运算,清除运算等。

 

2.

程序流程设计图

 

 

 

 

 

运行程序后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。

 

四、模板设计

1.计算模块详细设计

系统要完成整个的计算器的计算功能,那么计算模块就是整个系统的重点模块。

没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。

所以计算模块的设计也是本次系统设计中的重点。

系统想要能在屏幕上显示出计算器的样子要有整体的布局,在本模块中要完成布局的具体设计,使用户能够看到整个计算器的画面。

同时系统想完成计算功能必须要处理用户的输入,当输入模块的监听传到计算模块中时,计算模块就要根据相应的方法进行进一步的处理。

这部分主要是对输入进行的逻辑判断,基本会通过ifelse来实现逻辑判断。

2.用户界面设计

电子计算器界面设计应该尽量简洁而美观,应该具有良好的交互性。

当然,我们每个人可以根据自己的喜好来进行设计,根据我个人的喜好,我最终设计出来的计算器界面如图4-7所示:

从上图中,我们可以很直观的看到,从上到下分别是:

显示模块、输入模块、计算模块。

(1)输入模块,主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,当用户点击按键或者屏幕的时候监听器会去调用相应的处理办法,具体的处理办法会在相关的地方进行说明。

在本项目中,在触屏上提供了各种功能的按键,分别是C,0,1,2,3,4,5,6,7,8,9,+,-,×,÷,=,delete,clear,+/-,√x,x²。

(2)显示模块,主要描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果和一些其她信息。

3.计算模块设计的实现

计算模块则主要描述了计算器的整体,实现了计算器的界面,定义了用户单击的处理办法,通过定义的处理办法来完成用户的操作命令,实现用户的计算要求,这些计算要求包括了数值的输入,小数点的输入,正负号的输入,记忆相关功能的完成,加、减、乘、除等各种计算功能的完成,运算符的替换,初始化系统等等。

计算器的特殊功能键列表5-1

按键名称

按键功能

clear

计算清零键,重新开始计算

delete

本次输入清零键,按下后可以重输入本次数据

按键监听同时监听了触屏上的按键和键盘上的按键,其中按键的监听使用了的松开为判断的标准,即用户松开按键的时候程序才会读取数据。

计算模块是整个系统的主体部分。

4.计算器模板设计

布局效果图:

 

五、程序调试与运行截图

(1)6+3=?

(进行运算时自动把结果转换成double型)截图如下:

(2)6-2=?

(3)6*2=?

(4)6/2=?

六、总结

这次项目android计算器项目设计是在eclipse平台下设计,到现在为止,该系统的功能基本符合了普通计算器的要求,整个系统界面简单明了,使用起来十分方便,具有普通计算器的基本功能,同时拓展了一些普通计算器上没有的部分科学计算功能。

在整个开发过程中,从需求分析到总体架构的构思,到最后代码的编写我投入了大量的时间和精力,对系统中的每个功能都进行了反复的调试,修改。

因为这是我是第一次系统性的进行软件的开发,不论是在知识层面、开发平台的使用层面还是经验方面都有着很大的欠缺和不足,因此本软件难免会有一些功能不完善、界面不美观等一些不尽如人意的地方,但是再短短一个星期的时间内,我已经进行了很大的努力。

通过这个android计算器项目设计,我不经巩固了我们在书本上学到和平时老师传授的知识,而且还学到了许多书本上学不到的知识,并运用了网络这个平台查询一些不明白的知识点。

指导老师在我软件代码编写和后期软件调试期间,给我很大的帮助。

要谢谢各位帮过我的老师和同学。

这次的实验让我对我的学过的知识有了深一步的了解。

 

七、附录

1:

src\ymq\demo03目录

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;

//计算方法

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[]=newButton[10];

finalButtonfuhao[]=newButton[11];

fuhao[0]=(Button)findViewById(R.id.button01);

fuhao[1]=(Button)findViewById(R.id.button02);

fuhao[2]=(Button)findViewById(R.id.button03);

fuhao[3]=(Button)findViewById(R.id.button04);

fuhao[4]=(Button)findViewById(R.id.button05);

fuhao[5]=(Button)findViewById(R.id.button06);

fuhao[6]=(Button)findViewById(R.id.buttonce);

fuhao[7]=(Button)findViewById(R.id.buttonc);

fuhao[8]=(Button)findViewById(R.id.zheng);

fuhao[9]=(Button)findViewById(R.id.kaifang);

fuhao[10]=(Button)findViewById(R.id.pingfang);

number[0]=(Button)findViewById(R.id.button0);

number[1]=(Button)findViewById(R.id.button1);

number[2]=(Button)findViewById(R.id.button2);

number[3]=(Button)findViewById(R.id.button3);

number[4]=(Button)findViewById(R.id.button4);

number[5]=(Button)findViewById(R.id.button5);

number[6]=(Button)findViewById(R.id.button6);

number[7]=(Button)findViewById(R.id.button7);

number[8]=(Button)findViewById(R.id.button8);

number[9]=(Button)findViewById(R.id.button9);

et=(EditText)findViewById(R.id.textView1);

et.setText(str);

fuhao[6].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

str="";

et.setText(str);

vi=v;

}

});

fuhao[7].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

b=0.0;c=0;g=0.0;

str="";

et.setText(str);

}

});

fuhao[8].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(vi!

=fuhao[5]&&str!

=""){

charch=str.charAt(0);

if(ch=='-')

str=str.replace("-","");

else

str="-"+str;

et.setText(str);

}

}

});

fuhao[9].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(str!

=""){

doublea=Double.parseDouble(str);

str=Math.sqrt(a)+"";

et.setText(str);

}}

});

fuhao[10].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(str!

=""){

doublea=Double.parseDouble(str);

str=""+a*a;

et.setText(str);

}}

});

//设定数字按键

number[0].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(flag==1){

str="";

str+=0;

et.setText(str);

flag=0;

}

else{

charch1[];

ch1=str.toCharArray();

if(!

(ch1.length==1&&ch1[0]=='0'))

{str+=0;

et.setText(str);}

}

vi=v;

}

});

number[1].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(flag==1){

str="";

str+=1;

et.setText(str);

flag=0;

}

else{

str+=1;

et.setText(str);

}

vi=v;

}

});

number[2].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(flag==1){

str="";

str+=2;

et.setText(str);

flag=0;

}

else{

str+=2;

et.setText(str);

}

vi=v;

}

});

number[3].setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewv){

//TODOAuto-generatedmethodstub

if(flag==1){

str="";

str+=3;

et.setText(str);

flag=0;

}

else{

str+=3;

et.setText(str);

}

vi=v;

}

});

number[4].setOnClickListener(newView.OnClickListener(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1