设计器综合的设计.docVIP

  • 1
  • 0
  • 约1.04万字
  • 约 14页
  • 2018-12-08 发布于安徽
  • 举报
实用标准文案 精彩文档 计算器设计 一、项目的背景及意义 随着信息时代的步伐加快,日常生活的开支、大额数字、多倍小数或是加了三角函数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。计算器的出现大大减轻了我们的脑力负担,让我们的工作学习有了更高的效率。 二、需求分析 2.1 整体思想 在整个过程中,首先应该对输入进行容错处理,这样有利于提高用户体验。对于用户的按键输入,需要及时地显示在第一个EditView中。在EditView中显示的是一个字符串,用户每输入一个操作,字符串发生相应改变,然后在EditView中反映出来。 接着便是对第一个EditView中的字符串进行处理。通过程序设计,可以将字符串中的数据和操作符分别存在两个栈中。 然后需要设计算法处理两个栈,通过算法得出字符串表达式的运算结果,再将运算结果反映在第二个EditView中的字符串中。 (注:数据和操作符也可以储存在队列中,实际上储存在队列中更为合理。) 2.2 容错处理 用户在输入过程中,肯定会存在一定的错误,程序设计过程中需要对应用程序进行容错处理。容错设计比如:在输入过程中小数的话只能有一个小数点,操作符不能连续输入,整数数据的开头不能出现0等等。 在设计的应用程序中,设计了几个标记flag,每按下一个按键,若是按键是合理的话,都会引起标记flag的改变。标记flag将会限制接下来的输入是否有效,无效则不做任何处理。 flag0=0:处理0的输出,为1则表示数字的开头有一个0。当flag0=1时,不能再输入0,当再输入数字或者操作符时,flag0重新置0。 flag1=0:处理0的输出,每个数字开头的标志 数值为0表示为数字开头。当flag1=0时,如果先输入0再输入1的话,前面的0自动消除。还有当flag1=0时,不能输入小数点等等。 flag2=0:处理小数点,一个数字最多只能有一个小数点。当数字中有小数点时,flag2变为1,此后不能再输入小数点,输入操作符等操作后,flag2又变为0。 flag3=0:处理运算符的输出。很明显不能连续输入操作符,用此标志,来限制连续操作符的输入。 flag4=0:处理ON/OFF问题。当OFF之后,flag变为1,只有当flag等于1时,ON按钮才能进行操作。 flag5=0:处理等号问题。很明显操作符之后不能按下等号按钮,等号按钮按下之后要在第二个EditView中显示结果、将显示输出的EditView清空。 2.3 数据结构的设计 在程序设计过程中,需要设计数据结构来存储数字、操作符和容错标记,在本文中使用了栈,对这些数据进行了存储。 容错标记flag的存储结构如下所示: class Flag { privateint a0; privateint a1; privateint a2; privateint a3; publicint a0() { return a0; } publicint a1() { return a1; } publicint a2() { return a2; } publicint a3() { return a3; } public Flag(inta,intb,intc,int d) { a0=a; a1=b; a2=c; a3=d; } public Flag next; } classFlagList { private Flag first; publicFlagList(inta,intb,intc,int d) { first=null; } publicbooleanisEmpty() { return (first==null); } publicvoidinsertFirst(inta,intb,intc,int d) { Flag newFlag = newFlag(a,b,c,d); newFlag.next = first; first = newFlag; } public Flag deleteFirst() { Flag temp = first; first = first.next; return temp; } } classFlagStack { privateFlagListtheFlagList; privateint count; publicFlagStack() { theFlagList = newFlagList(0,0,0,0); count=0; } publicvoid push(inta,intb,intc,int d) { theFlagList.

文档评论(0)

1亿VIP精品文档

相关文档