- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可视化程序设计计算器设计报告
可视化程序设计-计算器
设 计 报 告
学 号:
姓 名:
学 院:陕西师范大学远程教育学院
层 次:高起专
目 录
一、 需求分析 2
二、 程序结构 3
三、 各模块功能及程序说明 4
3.1加法算法 4
3.2减法算法 4
3.3乘法算法 5
3.4除法算法 5
四、 源程序代码说明 5
4.1 算术符号点击事件: 5
4.2 等号点击事件 9
五、 操作方法流程及程序试验结果 11
5.1 加法运算 12
5.2 减法运算 12
5.3 乘法运算 13
5.4 除法运算 13
5.5 乘方运算 13
5.6 开方运算 14
5.7 混合运算 14
六、 设计体会 15
设计需求分析
编写一个类似于windows 提供的计算器功能的计算器界面,能够实现加、减、乘、除、乘方、开方等功能,在操作过程中熟悉控件的焦点的设置和使用及键盘的事件的应用。
程序结构
创建主体框架:主要是对计算器的外观进行手动的设计,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码,在label标签中,显示输入的信息和显示处理后的结果。
其中标签的上面显示的是运算式子,下面是当前输入或者是结果。
数字1-9的按键的事件处理都是在label标签中分别添加相对应的数字字符,把数字当成是字符串处理。对于加减乘除四则运算按键,事件触发后的处理是在label标签中显示相应的四则运算符,是清屏label标签的,按了“=”按键才开始运算并显示结果。
程序使用时是先把整个运算的式子输入到两个计数器中,程序把这一表达式转化成字符串和double数值数组,运行四则运算函数,把字符从数组中读出,根据所选的模式进行相应的运算。
数字0-9的优先级同级,加减同级,乘除、求模同级,由于它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不同的优先级的四则运算符时,就要采用数据结构当中处理表达式的方法,对label当中的信息进行处理通过相应的模式运算得到结果。程序功能结构图如下:
各模块功能及程序说明
通常地,计算机组成原理当中介绍的四则运算算法一般如下,在计算器编程当中可以从中获取可行的思想。四则运算算法的一般描述:
3.1加法算法
首先假定两个操作数均为小数(其他情况可以看做这种情况的特殊情况)。
通过界面输入获得两个操作数的值;
若两个数同号,则将两个操作数的整数部分和小数部分分别对应逐位相加,从最低位开始,若此位上的数字大于10,则向前位进1,此位减10;
若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作;
将计算结果保存并输出。
3.2减法算法
首先通过界面输入两个操作数,然后调用令第二个操作数取相反数,调用加法函数就可以实现减法计算。
3.3乘法算法
乘法的算法就是简单的按照一般的乘法计算方法来进行的。考虑一般情况,两个操作数均为小数,从低位到高位,依次用第二个操作数的每一位上的数字乘以第一个操作数,然后将得出的结果调用加法函数相加即得到乘法的最后结果。
3.4除法算法
除法算法也是按照中学学到的除法算法进行。建立如下的除法算法:
输入两个操作数;
若第二个操作数为0,则输出除数不能为0的出错信息;
若第二个操作数不是0,则将第二个操作数乘以适当的倍率使其整数化,第一个操作数也做相应的变化;
从高位到低位,依次寻找每一个位置上的商值(这个值在0到9之间),直到第一个操作数的末尾;
保存并输出结果。
源程序代码说明
一共分为以下一个比较重要的部分组成
初始化:
charch=;//判断前一次输入的是符号还是数字,空表示前一次输入的是数字
StringBuildersb=newStringBuilder();//记录已经输入的符号
double[]dl=newdouble[100];//记录已经输入的数值
intl=0;//记录输入的数值的个数
charch1=1;//判断当前是采取什么方式进行运算1表示微软;2表示运算优先
doublesum=0;//计算微软方式的最终值
publicForm1()
{
InitializeComponent();
label.Text=0;
4.1 算术符号点击事件:
#region算术符号的点击事件
privatevoidadd_Click(objectsender,EventArgse)
{
button11.Focus();
Buttonobjbutton=(Button)sender;
switch(objbutton.Text)
{
case+:
if(ch==||ch==!||ch==^||ch===)
{
dl[l+
文档评论(0)