实验报告样板(软件一班李程).doc_第1页
实验报告样板(软件一班李程).doc_第2页
实验报告样板(软件一班李程).doc_第3页
实验报告样板(软件一班李程).doc_第4页
实验报告样板(软件一班李程).doc_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

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

文档简介

C#可视化程序设计实验报告第一部分,实验说明题目实验一 计算器的制作班级,姓名,学号 软件学院 软件一班 李程 200631000112 一 实验要求1.参照Windows系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。2.控件的焦点以及Tab键的设置和使用第二部分,文字说明,附上核心代码.切记勿贴上所有代码3.多个控件(按钮)事件的共享4.键盘的事件的应用二 设计思路1. 创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。对于inputbox,显示输入的信息和显示处理后的结果。2. 数字1-9的按键的事件处理都是在inputbox中分别添加相对应的数字字符,把数字当成是字符串处理。对于加减乘除四则运算按键,事件触发后的处理是在inputbox中的字符串后加上相应的四则运算符,要说明的是计算器的显示是按了四则运算符后并不是清屏inputbox的,而是把四则运算符一起显示出来直到输入完了运算式,按了“=”按键才开始运算并显示结果。3. 程序使用时是先把整个运算的式子输入到inputbox当中,程序把这一表达式转化成字符串,然后入栈,得到一个栈,运行四则运算函数,把字符从栈中读出,根据出栈的符号确定该进行那种运算处理。4. 程序最主要的关键之处是在于以何种方式对inputbox中的表达式进行入栈处理,本程序可以处理一些简单的数字表达式的简单的四则运算。数字0-9的优先级同级,加减同级,乘除同级,但是它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不同的优先级的四则运算符时,就要采用数据结构当中处理表达式的方法,对inputbox当中的信息进行处理变成后缀表达式入栈。然后把栈返回到四则运算函数那里,对栈进行出栈处理分别对出栈的符号进行识别计算按优先级处理。通常地,计算机组成原理当中介绍的四则运算算法一般如下,在计算器编程当中可以从中获取可行的思想。四则运算算法的一般描述:1. 加法算法首先假定两个操作数均为小数(其他情况可以看做这种情况的特殊情况)。a) 通过界面输入获得两个操作数的值;b) 若两个数同号,则将两个操作数的整数部分和小数部分分别对应逐位相加,从最低位开始,若此位上的数字大于10,则向前位进1,此位减10;c) 若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作;d) 将计算结果保存并输出。e)2. 减法算法首先通过界面输入两个操作数,然后调用令第二个操作数取相反数,调用加法函数就可以实现减法计算。3. 乘法算法乘法的算法就是简单的按照一般的乘法计算方法来进行的。考虑一般情况,两个操作数均为小数,从低位到高位,依次用第二个操作数的每一位上的数字乘以第一个操作数,然后将得出的结果调用加法函数相加即得到乘法的最后结果。4. 除法算法除法算法也是按照中学学到的除法算法进行。建立如下的除法算法:a) 输入两个操作数;b) 若第二个操作数为0,则输出除数不能为0的出错信息;c) 若第二个操作数不是0,则将第二个操作数乘以适当的倍率使其整数化,第一个操作数也做相应的变化;d) 从高位到低位,依次寻找每一个位置上的商值(这个值在0到9之间),直到第一个操作数的末尾;e) 保存并输出结果。5. 取倒数的算法有了除法的算法,取倒数的算法就很简单了,直接用1和输入的操作数做除法运算,输出结果即可。四则运算核心代码:private void processString()double stacknum=new double30; /利用栈stacknum(30)计算队列sqeuestr(30)中的后缀表达式int top; int i;top = 0;tryfor(i=0;i 0)str2 = text1_text.Substring(0,1);if (str2.CompareTo(0)=0 & str2.CompareTo(9)=0 & str2.CompareTo(9)0)text1_text = text1_text.Substring(1,text_length);str2=text1_text.Substring(0,1);elsebreak;lastsqeue = lastsqeue + 1; else if (str2 = + | str2 = - | str2 = / | str2 = * | str2 = | str2 = &) if (top = 0) /当前栈顶为空时,栈顶符运算符优先级为零,当前运算符优先级为运算符优级 stackprior = 0; currentprior = Precedence(str2); else stackprior = Precedence(stackstrtop - 1); /当前栈顶不为空时,栈顶符运算符优先级为栈顶运算符的优先级 currentprior = Precedence(str2);/当前运算符优先级为运算符优级 if (currentprior stackprior) stackstrtop = str2; top = top + 1; else while (stackprior = currentprior)/当栈顶的运算符优先级高于当前运算符优先级时,出栈 sqeuestrlastsqeue = stackstrtop - 1; top = top - 1; lastsqeue = lastsqeue + 1; if (top = 0) stackprior = 0; else stackprior = Precedence(stackstrtop - 1); stackstrtop = str2;/当前运算符入栈 top = top + 1; text_length = text_length - 1; text1_text = text1_text.Substring(1, text_length); else MessageBox.Show(表达式中出现非法字符!); return; for( i = top - 1; i=0;i-)sqeuestrlastsqeue = stackstri; /栈中的运算符入队列lastsqeue = lastsqeue + 1;if (sign = true)sqeuestr0 = - + sqeuestr0;sign = false;第三部分,运行效果图三 程序运行效果图1. 简单的四则混合运算:式子的结果应该是6,按了等号键后,结果如下:结果正确。2. 简单的有小数的四则混合运算:式子的结果应该是0.3,按了等号键后,结果如下:结果正确。第四部分,实验总结。可能是最重要的部分!3. ”1/x”按键的测试,随便输入验证可得。4实验总结作为课程当中的第二门面向对象程序语言,c#的与大二学的面向对象语言JAVA在思想上的大部分相同,同时我们在程序语言的学习上不再是刚起步,以前的编程学习使得我在学习这门课的时候轻松不上。一个好的程序除了好的算法以外,对程序的控制结构和数据结构的应用也很讲究。因此在做C#计算器程序实验时,大二时数据结构的课程起了很大的帮助。先说一下我刚起步实验的时候所遇到困难,在开始的时候由于是第一次接触这种控件即拉即用的编程方法,以前学JAVA的时候都是直接使用类继承等方法来创建窗口等控件。因此相对JAVA来说,程序代码的编写量缩减了很多。在做好了大概的框架后,着手按钮的事件响应处理的设定,在四则运算的方法处理上,刚开始的时候并不能进行运算符的优先级的处理,因此在处理1+2*3这样的有优先级不同的运算符时,并不能得出表达式的正确的值。在运行程序检查完以后,为了能够正确实现有优先级不同的表达式的运行,翻查了数据结构课本,拾起以前的知识,应用后缀表达式来处理输入的表达式的运算,因此定义一个函数把inputbox当中的输入表达式进行处理成后缀表达式并入栈,然后把栈传给四则运算的处理函数。处理函数出栈符号通过switch不断地进行四则运算的操作。也就是说程序最主要的关键之处是在于以何种方式对inputbox中的表达式进行入栈处理,本程序可以处理一些简单的数字表达式的简单的四则运算。数字0-9的优先级同级,加减同级,乘除同级,但是它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不

温馨提示

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

评论

0/150

提交评论