




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01. 12微机上机报告用C编写计算器程序一、计算器介绍 1. 计算器主界面1.1、计算器打开运行后界面如下所示:1.2主界面的说明主界面主要由三部分组成: 文本框:用于数据的输入(可由下面的按钮或键盘输入),以及计 算结果的输出; 基本计算区:主要可用于数字的输入以及简单的加减乘除的计算,还有可用于清楚文本框的数据; 数学函数计算区:主用可实现基本常用的数学函数的计算,包括常用的三角函数和反三角函数以及e指数、开平方和以e和10为底对数的计算。 2.计算器的操作说明及注意事项2.1、基本操作:使用计算器进行基本数据计算时通过键盘及基本计算区的按钮输入数据,然后根据计算需要点击“+、-、*、/
2、”按钮,然后点击”=”按钮得出计算结果。若需使用函数计算时,可先输入数据,然后点击对应使用函数的按钮即可得出结果。特别的,对于三角函数的计算时,可点击单选框“弧度制”、“角度制”以实现弧度制及角度制数据的三角计算。2.2、注意事项: 使用除法计算时应注意不能使被除数为0,否则会出错: 出现此错误时只需点击确定即可继续之前的计算。 在使用三角函数时应先确定所输入的数据是角度制还是弧度制的数据,否则计算器会跳出提醒框,如下所示: 而计算反三角函数时只能计算弧度制数据得到角度制结果: 在使用常用函数进行计算时应特别注意所输入的数应满足函数的定义域,使函数有意义,否则会出错:16 另注:当所得数据很小
3、时会以科学计数法的形式输出:其中e-002即表示10-2。二、MFC编程的实现1. 计算器主界面的设计1.1、建立对话框1. 启动Visual C+ 6.0集成开发环境2. 创建对话框类型应用程序在【工程】选项卡中选择【MFC AppWizard】应用程序类型,工程文件名为Calculator。单击确定后选择【基本对话】建立基本对话框应用程序。1.2、添加控件,设计界面界面设计如下所示:2. 控件ID及变量u 控件: ID: IDC_NUM1 IDC_NUM2 IDC_NUM3 IDC_NUM4 IDC_NUM5消息函数: OnNum1 OnNum2 OnNum3 OnNum4 OnNum5u
4、 控件: ID: IDC_NUM6 IDC_NUM7 IDC_NUM8 IDC_NUM9 IDC_NUM12消息函数: OnNum6 OnNum7 OnNum8 OnNum9 OnNum12u 控件: ID: IDC_NUM10 IDC_ADD IDC_SUBTRACT IDC_MULPTIPLY IDC_DIVISION 消息函数: OnNum10 OnAdd OnSubtract OnMulptiply OnDivisionu 控件: ID: IDC_EQUAL IDC_BACKSPACE IDC_CLEAR1 IDC_Exit消息函数: OnEqual OnBackspace OnCle
5、ar1 OnExitu 控件: ID:IDC_RADIO1 IDC_RADIO2 IDC_SIN IDC_ARCSIN IDC_COS IDC_TAN消息函数: OnRadio1 OnRadio2 OnSin OnArcsin OnCos OnTanu 控件: ID:IDC_ARCCOS IDC_ARCTANV IDC_EXP IDC_SQRT IDC_LN IDC_LOG 消息函数: OnArccos OnArctan OnExp OnSqrt OnLn OnLogu 编辑框为IDC_EDIT1,定义类型为CEdit的变量m_Edit1.3. 程序代码的实现3.1、定义变量CString N
6、um; /用于按钮输入数字的连接的连接1) 向CalculatorDlg.h的CCalculatorDlg类定义中添加public型变量:2) 在CalculatorDlg.cpp中定义四个全局变量;double result=0;/存放结果数据,赋初值0,得出结果后清0int control=0; /用于判断是何种运算,注意得出结果后清0const double pi=3.14159265358979323846; /圆周率的值int math=0; /用于区分弧度制和角度制3) 控件函数代码的实现 数字输入按钮下函数的实现以下是数字键的函数的代码,其余以此类推void CCalculato
7、rDlg:OnNum1() / TODO: Add your control notification handler code hereCString t;GetDlgItem(IDC_NUM1)-GetWindowText(t); /获取按钮的数字t=Num+t; /字符串连接m_Edit1.SetWindowText(t);/在编辑框中显示Num=t; 退格键及清屏键函数代码的实现void CCalculatorDlg:OnBackspace() /退格Num=Num.Left(Num.GetLength()-1); /使Num的长度减1m_Edit1.SetWindowText(Num
8、);void CCalculatorDlg:OnClear1() /清楚屏幕/ TODO: Add your control notification handler code herem_Edit1.SetSel(0,-1);m_Edit1.ReplaceSel( );Num= ;result=0;control=0;UpdateData(FALSE); 计算的实现,按钮下程序代码的实现:void CCalculatorDlg:OnAdd() /加法运算/ TODO: Add your control notification handler code herechar cs30;doubl
9、e add;m_Edit1.GetWindowText(cs,30);add=atof(LPCTSTR)cs);switch(control) /每次计算之前前进行之前的运算case 0: result=add;break; /第一个数应存储case 1: result=result+add;break;case 2: result=result-add;break;case 3: result=result*add;break;case 4:if(add=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.Se
10、tWindowText(ed);Num= ;control=0; /control赋初值return;else result=result/add;break;control=1;char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;UpdateData(FALSE);void CCalculatorDlg:OnSubtract() /减法运算/ TODO: Add your control notification handler code herechar cs30;double sub;m_Edit1.GetWindo
11、wText(cs,30);sub=atof(LPCTSTR)cs);switch(control) /每次计算之前前进行之前的运算case 0: result=sub;break; /第一个数应存储case 1: result=result+sub;break;case 2: result=result-sub;break;case 3: result=result*sub;break;case 4:if(sub=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;
12、control=0; /control回到初值return;else result=result/sub;break;control=2;char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;void CCalculatorDlg:OnMulptiply() /乘法运算/ TODO: Add your control notification handler code herechar cs30;double sub;m_Edit1.GetWindowText(cs,30);sub=atof(LPCTSTR)cs);swit
13、ch(control) /每次计算之前前进行之前的运算case 0: result=sub;break; /第一个数应存储case 1: result=result+sub;break;case 2: result=result-sub;break;case 3: result=result*sub;break;case 4:if(sub=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;control=0; /control回到初值return;else res
14、ult=result/sub;break;control=3;char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;void CCalculatorDlg:OnDivision() /除法运算/ TODO: Add your control notification handler code herechar cs30;double sub;m_Edit1.GetWindowText(cs,30);sub=atof(LPCTSTR)cs);switch(control) /每次计算之前前进行之前的运算case 0: resu
15、lt=sub;break; /第一个数应存储case 1: result=result+sub;break;case 2: result=result-sub;break;case 3: result=result*sub;break;case 4:if(sub=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;control=0; /control回到初值return;else result=result/sub;break;control=4;char ed5
16、0;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ; 等于的实现 void CCalculatorDlg:OnEqual() /等于的实现/ TODO: Add your control notification handler code herechar cs30,seq50;double equal;switch(control)case 1:m_Edit1.GetWindowText(cs,30);equal=atof(LPCTSTR)cs);result=result+equal;_gcvt(result,50,seq);m_Ed
17、it1.SetWindowText(seq);Num= ;result=0;control=0;break;case 2:m_Edit1.GetWindowText(cs,30);equal=atof(LPCTSTR)cs);result=result-equal;_gcvt(result,50,seq);m_Edit1.SetWindowText(seq);Num= ;result=0;control=0;break;case 3:m_Edit1.GetWindowText(cs,30);equal=atof(LPCTSTR)cs);result=result*equal;_gcvt(res
18、ult,50,seq);m_Edit1.SetWindowText(seq);Num= ;result=0;control=0;break;case 4:m_Edit1.GetWindowText(cs,30);equal=atof(LPCTSTR)cs);if(equal=0)MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;control=0; /control回到初值return;elseresult=result/equal;_gcvt(result,50,se
19、q);m_Edit1.SetWindowText(seq);Num= ;result=0;control=0;break; 以下是角度制和弧度制的实现代码void CCalculatorDlg:OnRadio2() /角度制/ TODO: Add your control notification handler code heremath=2;void CCalculatorDlg:OnRadio1() /弧度制/ TODO: Add your control notification handler code heremath=1; 数学函数的实现,以下给出和的程序代码,其余函数依此类推即
20、可得到:void CCalculatorDlg:OnSin() /正弦函数计算的实现/ TODO: Add your control notification handler code herechar cs30;double sub;m_Edit1.GetWindowText(cs,30);sub=atof(LPCTSTR)cs);switch(control) /先进行判断之前是否有简单运算case 0: break;case 1: sub=result+sub;break;case 2: sub=result-sub;break;case 3: sub=result*sub;break;
21、case 4:if(sub=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;control=0; /control回到初值return;else sub=result/sub;break;switch(math)case 0: MessageBox(计算三角函数前请选择单位制!);return;case 1: break;case 2: sub=(sub*pi)/180;break;result=sin(sub);char ed50;_gcvt(result,5
22、0,ed);m_Edit1.SetWindowText(ed);Num= ;control=0;UpdateData(FALSE);void CCalculatorDlg:OnArcsin() /arcsin函数计算的实现/ TODO: Add your control notification handler code herechar cs30;double sub;m_Edit1.GetWindowText(cs,30);sub=atof(LPCTSTR)cs);switch(control) /先进行判断之前是否有简单运算case 0: break;case 1: sub=result
23、+sub;break;case 2: sub=result-sub;break;case 3: sub=result*sub;break;case 4:if(sub=0) MessageBox(除数不能为0!请重新输入.);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;control=0; /control回到初值return;else sub=result/sub;break;if(sub1|sub-1) MessageBox(所输入的数超出arcsin函数的定义域,请重新输入!);char ed50;_gcvt(result,50,ed);m_Edit1.SetWindowText(ed);Num= ;return;switch(math)case 0: break;case 1: break;case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年计算机二级考试重点知识试题及答案
- 2024年精算师高级考试复习与考前准备试题及答案
- 深层次的地理文化研究试题及答案
- 投资者行为分析试题及答案
- 全国人教版初中信息技术七年级上册第二单元第6课一、《加工图片素材》教学设计
- 2024年监理工程师面试技巧试题及答案
- 孩子心理疏导试题及答案
- 2025年第一季度可燃冰开采EPC总承包合同甲烷泄漏预案
- 投资咨询与管理的最佳实践试题及答案
- 安全用电教育主题班会
- GB/T 26480-2011阀门的检验和试验
- 案例:收球器盲板伤人事故
- 《员工思想培训》课件
- 网络主题 大锁孙天宇小品《时间都去哪儿了》台词
- 精神科症状学演示课件
- 文学类文本聂志红《在那桃花盛开的地方》阅读练习与答案
- DB13T 5080-2019 SBS改性沥青生产过程动态质量监控规范
- 义务教育物理课程标准(2022年版word版)
- 《CSS样式表的使用》教学设计
- 外环长安大道、东方大道段天然气管道工程管道试压吹扫方案资料(共13页)
- 中国花鸟画简史-共60页PPT课件
评论
0/150
提交评论