实验报告样板(软件一班李程)

上传人:第*** 文档编号:34251914 上传时间:2018-02-22 格式:DOC 页数:11 大小:75KB
返回 下载 相关 举报
实验报告样板(软件一班李程)_第1页
第1页 / 共11页
实验报告样板(软件一班李程)_第2页
第2页 / 共11页
实验报告样板(软件一班李程)_第3页
第3页 / 共11页
实验报告样板(软件一班李程)_第4页
第4页 / 共11页
实验报告样板(软件一班李程)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《实验报告样板(软件一班李程)》由会员分享,可在线阅读,更多相关《实验报告样板(软件一班李程)(11页珍藏版)》请在金锄头文库上搜索。

1、C#可视化程序设计实验报告实验一 计算器的制作软件学院 软件一班 李程 200631000112 一 实验要求1.参照 Windows 系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。2.控件的焦点以及 Tab 键的设置和使用3.多个控件(按钮)事件的共享4.键盘的事件的应用二 设计思路1. 创建主体框架:建立程序的主要界面后,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码。对于 inputbox,显示输入的信息和显示处理后的结果。2. 数字 1-9 的按键的事件处理都是在 inputbox 中分别添加相对应的数字字符,

2、把数字当成是字符串处理。对于加减乘除四则运算按键,事件触发后的处理是在 inputbox 中的字符串后加上相应的四则运算符,要说明的是计算器的显示是按了四则运算符后并不是清屏 inputbox 的,而是把四则运算符一起显示出来直到输入完了运算式,按了“=”按键才开始运算并显示结果。3. 程序使用时是先把整个运算的式子输入到 inputbox 当中,程序把这一表达式转化成字符串,然后入栈,得到一个栈,运行四则运算函数,把字符从栈中读出,根据出栈的符号确定该进行那种运算处理。4. 程序最主要的关键之处是在于以何种方式对 inputbox 中的表达式进行入栈处理,本程序可以处理一些简单的数字表达式的

3、简单的四则运算。数字 0-9 的优先级同级,加减同级,乘除同级,但是它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不同的优先级的四则运算符时,就要采用数据结构当中处理表达式的方法,对 inputbox 当中的信息进行处理变成后缀表达式入栈。题目班级,姓名,学号第二部分,文字说明,附上核心代码.切记勿贴上所有代码第一部分,实验说明C#可视化程序设计实验报告然后把栈返回到四则运算函数那里,对栈进行出栈处理分别对出栈的符号进行识别计算按优先级处理。通常地,计算机组成原理当中介绍的四则运算算法一般如下,在计算器编程当中可以从中获取可行的思想。四则运算算法的一般描述:1. 加法算法

4、首先假定两个操作数均为小数(其他情况可以看做这种情况的特殊情况) 。a) 通过界面输入获得两个操作数的值;b) 若两个数同号,则将两个操作数的整数部分和小数部分分别对应逐位相加,从最低位开始,若此位上的数字大于 10,则向前位进 1,此位减10;c) 若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作;d) 将计算结果保存并输出。e)2. 减法算法首先通过界面输入两个操作数,然后调用令第二个操作数取相反数,调用加法函数就可以实现减法计算。3. 乘法算法乘法

5、的算法就是简单的按照一般的乘法计算方法来进行的。考虑一般情况,两个操作数均为小数,从低位到高位,依次用第二个操作数的每一位上的数字乘以第一个操作数,然后将得出的结果调用加法函数相加即得到乘法的最后结果。4. 除法算法除法算法也是按照中学学到的除法算法进行。建立如下的除法算法:a) 输入两个操作数;C#可视化程序设计实验报告b) 若第二个操作数为 0,则输出除数不能为 0 的出错信息;c) 若第二个操作数不是 0,则将第二个操作数乘以适当的倍率使其整数化,第一个操作数也做相应的变化;d) 从高位到低位,依次寻找每一个位置上的商值(这个值在 0 到 9 之间) ,直到第一个操作数的末尾;e) 保存

6、并输出结果。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);C#可视化程序设计实验报告if (str2.CompareTo(0)=0 & str2.CompareTo(9)=0 & s

7、tr2.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);

8、elsestackprior = Precedence(stackstrtop - 1); /当前栈顶不为空时,C#可视化程序设计实验报告栈顶符运算符优先级为栈顶运算符的优先级currentprior = Precedence(str2); /当前运算符优先级为运算符优级if (currentprior stackprior)stackstrtop = str2;top = top + 1;elsewhile (stackprior = currentprior)/当栈顶的运算符优先级高于当前运算符优先级时,出栈sqeuestrlastsqeue = stackstrtop - 1;top =

9、 top - 1;lastsqeue = lastsqeue + 1;if (top = 0)stackprior = 0;elsestackprior = Precedence(stackstrtop - 1);stackstrtop = str2; /当前运算符入栈top = top + 1;text_length = text_length - 1;C#可视化程序设计实验报告text1_text = text1_text.Substring(1, text_length);else MessageBox.Show(表达式中出现非法字符!);return;for( i = top - 1;

10、 i=0;i-)sqeuestrlastsqeue = stackstri; /栈中的运算符入队列lastsqeue = lastsqeue + 1;if (sign = true)sqeuestr0 = - + sqeuestr0;sign = false;三 程序运行效果图1. 简单的四则混合运算:第三部分,运行效果图C#可视化程序设计实验报告式子的结果应该是 6,按了等号键后,结果如下:结果正确。2. 简单的有小数的四则混合运算:式子的结果应该是 0.3,按了等号键后,结果如下:C#可视化程序设计实验报告结果正确。3. ”1/x”按键的测试,随便输入验证可得。4 实验总结作为课程当中的第

11、二门面向对象程序语言,c#的与大二学的面向对象语言 JAVA 在思想上的大部分相同,同时我们在程序语言的学习上不再是刚起步,以前的编程学习使得我在学习这门课的时候轻松不上。一个好的程序除了好的算法以外,对程序的控制结构和数据结构的应用也很讲究。因此在做 C#计算器程序实验时,大二时数据结构的课程起了很大的帮助。先说一下我刚起步实验的时候所遇到困难,在开始的时候由于是第一次接触这种控件即拉即用的编程方法,以前学 JAVA 的时候都是直接使用类继承等方法来创建窗口等控件。因此相对 JAVA 来说,程序代码的编写量缩减了很多。在做好了大概的框架后,着手按钮的事件响应处理的设定,在四则运算的方法处理上

12、,刚开始的时候并不能进行运算符的优先级的处理,因此在处理 1+2*3 这样的有优先级不同的运算符时,并不能得出表达式的正确的值。在运行程序检查完以后,为了能够正确实现有优先级不同的表达式的运行,翻查了数据结构课本,拾起以前的知识,应用后缀表达式来处理输入的表达式的运算,因此定义一个函数把 inputbox 当中的输入表达式进行处理成后缀表达式并入栈,然后把栈传给四则运算的处理函数。处理函数出栈符号通过 switch 不断地进行四则运算的操作。也就是说程序最主要的关键之处是在于以何种方式对 inputbox 中的表达式进行入栈处理,本程序可以处理一些简单的数字表达式的简单的四则运算。数字 0-9 的优先级同级,加减同级,乘除同级,但是它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不同的优先级的四则运算符时,就要采用数据结构当中处理表达式的方法,对 inputbox 当第四部分,实验总结。可能是最重要的部分!C#可视化程序设计实验报告中的信息进行处理变成后缀表达式入栈。然后把栈返回到四则运算函数那里,对栈进行出栈处理分别对出栈的符号进行识别计算按优先级处理。在整个编程过程中,我遇到的其他非算法的编程问题,例如界面,控件上所遇到的一些问题,经过不断地调整和问同学,最终获得了解决。软件一班 李程 200631000112

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号