1、下面较为详细的做了说明。具体的说,总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。输入模块 主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。显示模块 描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其他的信息。计算模块 则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能以及清零的功能。用系统框图来表示即如图 2-0。 图2-0系统框图2
2、、 软件开发环境 论文主要阐述以面向对象的程序开发语言eclipse为开发工具, 设计并实现基于 Android的计算器。步骤1 安装JDK步骤2 安装Tomcat步骤3 安装AndroidSDK步骤4 安装Eclipse步骤5 安装Eclipse的ADT插件 步骤6 Eclipse的SDK配置步骤7 建立AVD虚拟机3、 软件功能说明系统包括普通计算功能,基本的加减乘除,小数运算以及清零功能。如图2-1。对任意两个数据进行相加的操作对任意两个数据进行相减的操作对任意两个数相乘的操作任意两个数相除的操作,但要符合运算逻辑清除已经被记忆的数据 如图2-1 功能图4、 程序流程图知道了系统的功能以
3、后,我们通过main.xml来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图2-2所示: 5、 软件介面及程序主要代码1:(1)XML文件生成Main.xml的代码:根据MVC原则,UI应该与程序逻辑相分离,因此,在XML中定义UI结构是强烈推荐的。常用的方式是用图形化的方式来编写布局Layout,这些布局保存在XML文件中,然后编译成资源,在程序中Activity通过setC
4、ontentView()方法来加载,然后通过findViewByld()方式来获得每一个界面组件的引用。实现过程及步骤。在layout文件夹下定义自己的XML页面。如计算器属性界面的实现如下所示部分代码LinearLayout xmlns:android= android:orientation=verticallayout_width=fill_parentlayout_height= ./LinearLayoutLinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消
5、失。android: / 定义了布局的变量名称为txt_input,会自动写进R.java; 在R.Java文件中会生成内部类id,可在主程序里面调用R.id.txt_input来获取这个布局变量实体。 /这个布局是垂直布局;(水平horizontal)/设置一个顶部布局或控件强制性让它布满整个屏幕;(设置一个顶部布局或控件强制性让它布满整个屏幕) /限定里面的内容向右对齐;(android:layout_gravity= 表示在界面上的位置向右对齐)用XML实现用户界面具有以下优点:a)XML文件结构清晰,易于扩展,系统可扩展性好。b) 用户界面与业务逻辑完全分离,降低了系统界面与业务逻辑的
6、耦合性。c)XML文件简单易懂,可维护性好。2:计算器控制逻辑设计与实现代码:CountMain.java用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。所以设计了如下代码: / 数字监听 public void xianshi(final Button but, final EditText t1) but.setOnClickListener(new OnClickListener() public void onClick(View v) /判断开始是否
7、可以按操作符 if (but.getText().toString().equals(.) if (strBuff.indexOf(+) != -1 | strBuff.indexOf(-*/= -1) strBuff.append(but.getText().toString(); t1.setText(strBuff); /判断一个操作数中是否可以按多个点 else if (strBuff.indexOf() = -1 & strBuff.length() != 0) strBuff.append(but.getText().toString(); t1.setText(strBuff);
8、 /判断在什么情况下可以按多个零 else if (but.getText().toString().equals(0 if (strBuff.indexOf() = 0 & strBuff.indexOf() = 1) else if (strBuff.length() = 0) /判断第一个按零,接着再按整数的情况时,屏幕的显示 else if (strBuff.indexOf() = 0 &) = -1) strBuff.delete(0, strBuff.length(); strBuff.append(but.getText().toString(); t1.setText(strB
9、uff); else ); 运算部分代码: / 符号监听 public void jisuan(final Button but1, final EditText t1) but1.setOnClickListener(new OnClickListener() /存放输入的字符 String newchar1 = but1.getText().toString(); /判断开始是否为等号,输入一个数字后在输入等号没有反映 String newchar = ; if (!(newchar1.equals(=) newchar = newchar1; float per1 = 0;/用来存放截取
10、字符串的第一个操作数 float per2 = 0;/用来存放截取字符串的第二个操作数 /判断按的字符是否为清除键 if (newchar.equalsIgnoreCase(c t1.setText(); return; /判断按的操作符是什么计算字符 /判断是否为加法) 0 & (0= strBuff.charAt(strBuff.length() - 1) &9 = strBuff.charAt(strBuff.length() - 1) Override public void onCreate(Bundle savedInstanceState) /这是Activity建立的时候一定会
11、调用的onCreate()方法,第一行是声明 super.onCreate(savedInstanceState); /然后是继承原来的onCreate()方法 setContentView(R.layout.main); /然后是载入main这个视图,一般来说是在XML里定义的/ 下面为变量赋值 final EditText t1 = (EditText) findViewById(R.id.txt_input); final Button but1 = (Button) findViewById(R.id.but1); xianshi(but1, t1); final Button but
12、2 = (Button) findViewById(R.id.but2); . / 符号 final Button but4 = (Button) findViewById(R.id.but4); jisuan(but4, t1);6、 设计总结到现在为止,系统的设计和开发已基本完成。本系统的功能基本符合了普通用户对于计算器的要求,整个系统界面良好,简单明了,使用起来十分方便,具有普通计算器的基本功能。整个过程中,从总体架构的构思,到最后的完成都投入了大量的时间和精力,对系统中的每个功能都进行了反复的调试,修改。由于是第一次独立的完成软件的开发,不论是在知识层面还是经验方面都有着很大的欠缺和不足,因此本系统难免会有一些不尽如人意的地方,但是由于时间的关系,只能在日后再进行完善了。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1