C语言数据结构栈计算器的实现课题设计报告书

C语言数据结构栈计算器的实现课题设计报告书

ID:41527652

大小:72.23 KB

页数:10页

时间:2019-08-27

C语言数据结构栈计算器的实现课题设计报告书_第1页
C语言数据结构栈计算器的实现课题设计报告书_第2页
C语言数据结构栈计算器的实现课题设计报告书_第3页
C语言数据结构栈计算器的实现课题设计报告书_第4页
C语言数据结构栈计算器的实现课题设计报告书_第5页
资源描述:

《C语言数据结构栈计算器的实现课题设计报告书》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、目录1、课程设计任务12、需求分析13、概要设计1〜24、详细设计3〜55、小结课程设计任务・利用堆栈设计一个计算器。需求分析・首先,以字符列的形式,从终端输入语法止确、不含变量的整数表达式。利用已知的运算符优先关系,实现对算术四则混合运算表达式的求值。・对该程序而言,主耍的利用应是栈,并将运算的先后步骤经分析后实现为简单运算。・不同于单纯表达式的运算,计算器有直接计算最近输入数据的特性,故只需一个栈对其进行操作数和操作符的存储即可。・除通常的四则运算(加减乘除)夕卜,计算器还应有求相反数、百分数、开

2、根、倒数等功能。概要设计・由于运算符有优先级別Z差,所以一个表达式的运算不可能总是从左至右的循序执行。每次操作的数据或运算符都是最近输入的,这与栈的特性相吻合,故本程序借助栈來实现按操作符的优先级完成表达式的求值计算。算法概要:1、栈的抽象数据定义:ADTSqStack{数据对象:D二{aj&EElemSet,i=l,2,3,n,心0}数据关系:Rl={

3、aw,aieD,i=l,2,3,,n}约定其中&端为栈底,缶端为栈顶。2、栈的实现和操作集合:为不同于C#编译库中自带的类库Sta

4、ck,这里使用CStack进行区分。classCStackprivateintp_index;privateArrayListlist;relurnlist.Count;publicCSlack(沪初始化引list=newArrayList();pjndex=publicintCountpublicvoidPush(objectitem)/*Alisl.Add(item);pjndex++;publicobjectPop(沪出栈objectobj=listfpjndex];list.

5、ReinoveAt(pJndex);pjndex-;returnobj:3、运算:计算器在输入一个操作符后,文本框内的数据会清空,故只需一个栈即可完成相应的运算。因此,对以使用变^_insct判断计算是否完成,并根据按F的按钮进一步判断栈中的数字是否为运算的中间结果。以加号按钮为例:粘丫船煤做稱驟,重新输入以记录第二个数字呵if(calc.Count==2)ProcessOperation(nbutton_equar,y;/^计算前两个数的结果勺calc.PiishCbiitt(m_adA)”*将加号

6、入fS^/Jastoper=nbutton_addu;elseif(calc.Count==1)产如果栈中有一•个元素,表明是之前计算的中间结果勺calc.Fush("biitton);/*将运算符入栈勺Jastoper=f9button_addu;elseif(calc.Count==0沪如果栈中没冇元素,表示是第一,次运算*/calc.Push(textBoxi.Text);/^^—个数入悔/calc.Push(Hbiitton_addu);/^^—个运算符入栈泳/Jastoper=f9butto

7、n_addu;break;详细设计源代码:usingSystem;usingSystem.Componen(Mode1:usingSystem.Data;usingSystom.Drawing;usingSystem.Linq;usingSystem.Text;usingSystom.Windows.Forms;usingMicrosoft.VisualBasic;usingSystem.Collections;namespaceCaleulatorStatckpublicpartialclassCa

8、lculator:FormpublicCalculatorOInitializeComponent();privatestringtestbox;privateboolinset=Mse;/*判断一次计算是否完成/*/=0;/astoper-privatedouble^memoryprivatestringprivatestringclassCStacksecondNum=privateintpindex;privatcArrayListlist;publicCStack()/*初始化*/lis

9、t=newArrayList();pindex-一];publicintCountget{returnlist.Count]^publicvoidPush(objectitem)/*A^*/list.Add(itom);pindex++;publicobjectPopobjectobj=list[p_indcx];list.RemoveAt(pindex);pindex一;roturnobj;CStackcalc=nowCSlack〈st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。