ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:65.45KB ,
资源ID:6507298      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6507298.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c++课程设计作业.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c++课程设计作业.docx

1、c+课程设计作业学号:201205527姓名:刘新雯学院:数理学院专业:统计学一、设计名称:计算器二、基本功能:本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算(加、减、乘、除)和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、cot、sqrt、ln等),还可以支持带“(”,“)”符号的表达式的计算。三、程序运行结果分析(1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,

2、输入后的结果如下图所示: (3)在输入完表达式后,单击“=”后,开始对表达式进行计算,计算完成后,在编辑框中显示计算的结果。 (4)计算器可以实现十进制转化为十六进制或二进制,其实现的操作为先输入一个十进制整数,再单击按钮“转化为二进制”或“转化为十六进制。 (4)另外,计算器还可以实现一些简单的函数运算,实现的操作和十六进制/二进制转化类似,是先输入一个数字,在单击想要进行的函数的按钮,单击后就会在编辑框中显示运算的结果。 四、程序代码void CMyDlg:OnNo0() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(Operator

3、Pressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=0; /变量m_strResult的值为按下的按忸0 else /在按下数字键的情况下,则在m_strResult后加0 m_strResult+=0; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo1() UpdateData

4、(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=1; /变量m_strResult的值为按下的按忸1 else /在按下数字键的情况下,则在m_strResult后加1 m_strResult+=1; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符

5、串变量m_strResult传给编辑框void CMyDlg:OnNo2() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=2; /变量m_strResult的值为按下的按忸2 else /在按下数字键的情况下,则在m_strResult后加2 m_strResult+=2; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的

6、值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo3() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=3; /变量m_strResult的值为按下的按忸3 else /在按下数字键的情况下,则在m_strResult后加3 m_strResult+=3; Operator

7、Pressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo4() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=4; /变量m_strResult的值为按下的按忸4 else /在按下

8、数字键的情况下,则在m_strResult后加4 m_strResult+=4; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo5() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时,

9、 m_strResult=5; /变量m_strResult的值为按下的按忸5 else /在按下数字键的情况下,则在m_strResult后加5 m_strResult+=5; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo6() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPresse

10、d=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=6; /变量m_strResult的值为按下的按忸6 else /在按下数字键的情况下,则在m_strResult后加6 m_strResult+=6; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo7() UpdateData(TRUE)

11、; /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=7; /变量m_strResult的值为按下的按忸7 else /在按下数字键的情况下,则在m_strResult后加7 m_strResult+=7; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_s

12、trResult传给编辑框void CMyDlg:OnNo8() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=8; /变量m_strResult的值为按下的按忸8 else /在按下数字键的情况下,则在m_strResult后加8 m_strResult+=8; OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为fal

13、se Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnNo9() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult if(OperatorPressed=true|Restarted=true)/在按下了=,AC,sqrt,tan,sin等按忸时, m_strResult=9; /变量m_strResult的值为按下的按忸9 else /在按下数字键的情况下,则在m_strResult后加9 m_strResult+=9; OperatorPresse

14、d=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnAdd() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult m_strResult+=+; /在变量m_strResult后加+ OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; Upd

15、ateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnDec() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult m_strResult+=-; /在变量m_strResult后加- OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnMut() UpdateData(TR

16、UE); /把编辑框显示的字符串传给相应的变量m_strResult m_strResult+=*; /在变量m_strResult后加* OperatorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框void CMyDlg:OnDiv() UpdateData(TRUE); /把编辑框显示的字符串传给相应的变量m_strResult m_strResult+=/; /在变量m_strResult后加/ Op

17、eratorPressed=false; /把bool变量OperatorPressed和Restarted的值改为false Restarted=false; UpdateData(FALSE); /把字符串变量m_strResult传给编辑框/通过这个函数,实现把字符串中的数字和运算符读取出来,并分别储存在2个数组里void CMyDlg:GetStr(CString str) int i=0,z=0; double rate=10.0,itemp=0.0; for(i=0;i20;i+) ai=1000000.0; /对数组a20初始化 for(i=0;i10;i+) bi= ; /对数

18、组b10初始化 i=0; /把0赋给i for(;istr.GetLength();i+) if(isdigit(str.GetAt(i) /如果字符串str.GetAt(i)的内容是整数 if(rate=10.0) /整数部分 itemp=itemp*rate+(str.GetAt(i)-0);/获得整数 else /小数部分 itemp=itemp+rate*(str.GetAt(i)-0);/获得小数 rate=rate/10; /每次让rate小10倍 else if(str.GetAt(i)=.) /如果str.GetAt(i)是小数点 rate=0.1; /让rate=0.1,开始

19、计算小数部分 else if(str.GetAt(i)=+) /如果str.GetAt(i)是加号 az=itemp;itemp=0; /把itemp的值放入双精度数组a中,并把itemp的值改为0 z+; /让z自加一次 bz=+; /把加号放入字符数组b中 z+; /让z自加一次 rate=10.0; /把10赋给rate,确保读取下个数字时,先计算整数部分 else if(str.GetAt(i)=-) /如果str.GetAt(i)是减号 az=itemp;itemp=0; /把itemp的值放入双精度数组a中,并把itemp的值改为0 z+; /让z自加一次 bz=-; /把减号放入

20、字符数组b中 z+; /让z自加一次 rate=10.0; /把10赋给rate,确保读取下个数字时,先计算整数部分 else if(str.GetAt(i)=*) /如果str.GetAt(i)是乘号 az=itemp;itemp=0; /把itemp的值放入双精度数组a中,并把itemp的值改为0 z+; /让z自加一次 bz=*; /把减号放入字符数组b中 z+; /让z自加一次 rate=10.0; /把10赋给rate,确保读取下个数字时,先计算整数部分 else if(str.GetAt(i)=/) /如果str.GetAt(i)是除号 az=itemp;itemp=0; /把it

21、emp的值放入双精度数组a中,并把itemp的值改为0 z+; /让z自加一次 bz=/; /把除号放入字符数组b中 z+; /让z自加一次 rate=10.0; /把10赋给rate,确保读取下个数字时,先计算整数部分 az=itemp; /把最后一个整数itemp的值放入双精度数组a中s=z; /把z的值赋给变量s,用来控制计算结果的循环中的条件/*这个函数结束后编辑框的表达式被分成了数字和运算符2部分,数字保存在a0,a2,a4.中,运算符保存在b1,b3.中*/void CMyDlg:GetResult() int i=0,x=0,y=1,t,z=1;/这个循环的目的是把所有除法运算都

22、改为乘法计算 for(i=0;i=s;i+) if(bi=/) /当循环遇到除号时 ai+1=1/ai+1; /把ai+1的值改为1/ai+1 bi=*; /把bi的值改为乘号 /这个循环可以对所有乘法进行计算 for(i=0;i=s;i+) if(bi=*) /当循环遇到乘号时 /*如果i-t=2(再上次循环中,t被赋值成了i,这次2个值只相差2,说明表达式的情况是连续乘法,比如2*3*4)以2*3*4为例,在这个条件之前,函数已经进行了2*3的运算,其计算结果保存在原来的2中,把2的值覆盖了,这个条件的作用是让2*3的结果再和4相乘,结果保存在原来的2中*/ if(i-t=2) at-z=

23、at-z*ai+1; /进行乘法运算,把结果保存在前面的数组元素中 z=z+2; /这里引进变量z,可以解决很多数连续相乘的问题,比如2*2*2*2*2*2 ai-1=ai-1*ai+1; /碰到乘号后把乘号前后2个数字相乘,结果保存在前面的数组元素 ai+1=1000000.0; /对乘号后面的数字初始化为0.0 bi= ; /对乘号初始化为空格/*2数相乘后把乘号及其后面的数字初始化了,如果是2*3*4的情况,将会无法计算*4,所以要用开始的条件语句来解决*/ t=i; /把i的值赋给t /*这个循环的目的是对数组a和b进行整理,因为已经进行了乘法和除法运算,进行运算的时候,把一些数字和运

24、算符初始化了这个函数的作用可以使中间一些初始化了的数字和符号被后面的数字和符号代替,让数组可以重新排列*/ for(i=0;i=s;i+) if(ai!=1000000.0) /如果ai的值不为0.0 ax=ai; /把ai的值赋给ax x+=2; /x自加2 if(bi!= ) /如果bi的值不为空格 by=bi; /把bi的值赋给by y=y+2; /y自加2 /这个循环是进行最后的加减法运算 for(i=0;i1)/当m_strResult不等于0且m_strResult长度大于1时 m_strResult=m_strResult.Left(m_strResult.GetLength()-1);/使m_strResult长度减少1,去掉最右边的字符 else Restarted=true;/把bool变量Restarted的值改为true,再次输入数字时,覆盖掉现在的m_strResult m_strResult=0;/把字符串0赋给m_strResult UpdateData(FALSE);/把字符串变量m_strResult传给编辑框 void CMyDlg:OnSin() UpdateData(TRUE);/把编辑框显示的字符串传给相应的变量m_strResult double result;/定义一个双精度型变量result,用来获取进行了sin运算的结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1