Windows程序设计作业报告-MFC多功能计算器_第1页
Windows程序设计作业报告-MFC多功能计算器_第2页
Windows程序设计作业报告-MFC多功能计算器_第3页
Windows程序设计作业报告-MFC多功能计算器_第4页
Windows程序设计作业报告-MFC多功能计算器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、Windows程序设计作业报告设计题目:MFC多功能计算器学 院:宿迁学院专业班级:软件工程(1)班学生姓名:学生学号:指导教师:提交时间:2011年 12月 15日成 绩:目录1. 课程设计目的及要求 31.1设计目的及问题描述 31.2设计要求31.3软件、硬件环境32. 课程设计步骤32.1 Windows消息处理机制的理解32.2界面的设计43. 课程设计内容53.1 概要设计53.1.1 程序总体框架描述83.1.2程序常用类声明8 3.2主要技术113.3系统设计结果 (界面截图、操作流程)224.课程设计总结234.1遇到的问题及如何解决23一、课程设计目的及要求1.1设计目的及

2、问题描述 能够熟练掌握MFC中的各个控件,消息的处理与添加,并且能够具体实现一些功能,真正可以利用功能比较强大的MFC编译出较好的程序代码。此次本人设计的是一个具有比较齐全运算功能的计算器。1.2设计要求 利用Microsoft Visual C+的MFC制作一个多功能计算器,要求:(1) 能够实现最基本的加、减、乘、除四则基本运算;(2) 计算机界面设置有A、B、C、D、E、F多功能按键;(3) 设置了运算结果转换功能,分别是十进制、八进制、二进制、十六进制;(4) 添加了计算类型,分别是弧度制、度数制;(5) 界面有清空、退格按钮,方便用户计算使用;(6) 重点是此计算器具有多次方、开方、

3、三角函数、反三角函数、取模等高级运算。1.3软件、硬件环境 本程序采用Microsoft Visual C+6.0的英文版本进行编译。VisualC+6.0是Microsoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C+规范,但仍有相当多的编程人员使用VisualC+6.0进行应用系统的开发。一、 课程设计步骤 2.1 Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要

4、用户参与的系统消息,比如异常处理等。2.2界面的设计仿照Windows附件里面的计算器,在Dialog视图中画好界面,如图: 主要使用的菜单中的相关控件,并合理布置各个按钮的位置,使界面更加整洁。在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可视计算器界面。以及关于本人和该MFC多功能计算器的相关介绍与信息。三、课程设计内容 3.1 概要设计 依次将各个功能按钮设置相关的ID和控件类以上为数字09的属性设置,及其ID和标题名称以上为功能A、B、C、D、E、F中的A的属性,及其ID和标题名称以上为四则运算加、减、乘、除中“*”的ID和标题名称以上为计算器中结果转换和计算类型的属性

5、设置以上为计算器中的次方运算的属性设置以上为计算器中三角函数和反三角函数的属性设置以上是做的一个简单的运算,结果如图中的显示,为double型。3.1.1 程序总体框架描述 MFC多功能计算器计算器的主要功能四则运算三角函数、三角反函数运算的实现二次方、三次方、多次方功能实现结果转换(二、八、十、十六)计算类型(弧度、度数)按键09按键AF3.1.2程序常用类声明按键09的ID设置IDC_BUTTON0 IDC_BUTTON1 IDC_BUTTON2IDC_BUTTON3 IDC_BUTTON4 IDC_BUTTON5IDC_BUTTON6 IDC_BUTTON7 IDC_BUTTON8IDC

6、_BUTTON9按键AF的ID设置IDC_BUTTONA IDC_BUTTONB IDC_BUTTONCIDC_BUTTOND IDC_BUTTONE IDC_BUTTONF结果转换的ID设置十进制:IDC_BTN_DEC二进制:IDC_BTN_BIN八进制:IDC_BTN_OCT十六进制:IDC_BTN_HEX计算类型的ID设置弧度:IDC_BTN_RADIANS度数:IDC_BTN_DEGRESS次方的ID设置xy:IDC_BTN_XY x3:IDC_BTN_CUBE x2:IDC_BTN_SQUARE三角函数的ID设置Sin:IDC_BTN_SIN Cos:IDC_BTN_COS Tan

7、:IDC_BTN_TAN Cot:IDC_BTN_COT反三角函数的ID设置arcSin:IDC_BTN_ARCSIN arcos:IDC_BTN_ARCCOS arcTan:IDC_BTN_ARCTAN arcCot:IDC_BTN_ARCCOT四则运算的ID设置+:IDC_BTN_ADD :IDC_BTN_DECREASE :IDC_BTN_MULTI /:IDC_BTN_DIV清空、等于、正负号、取模、退格ln、Log的ID设置/:IDC_BTN_SIGN =:IDC_BTN_EQUAL 清空:IDC_BTN_AC取模:IDC_BTN_MOD 退格: IDC_BTN_BACK 开方:ID

8、C_BTN_EXTLn: IDC_BTN_LN Log:IDC_BTN_LOG下图是在基本对话框中的所有类 3.2主要技术 计算器主要功能的实现09数字的代码(如下)void CMy7139Dlg:OnButton0() /TODO: Add your control notification handler code herem_EDIT=m_EDIT+0;SetDlgItemText(IDC_EDIT1,m_EDIT);void CMy7139Dlg:OnButton1() /TODO: Add your control notification handler code herem_ED

9、IT=m_EDIT+1;SetDlgItemText(IDC_EDIT1,m_EDIT);void CMy7139Dlg:OnButton2() /TODO: Add your control notification handler code herem_EDIT=m_EDIT+2;SetDlgItemText(IDC_EDIT1,m_EDIT);void CMy7139Dlg:OnButton9() /TODO: Add your control notification handler code herem_EDIT=m_EDIT+9;SetDlgItemText(IDC_EDIT1,m

10、_EDIT);加减乘除法的实现:void CMy7139Dlg:OnBtnAdd() / TODO: Add your control notification handler code heretemp=m_EDIT;op=+;m_EDIT=_T();point=false;void CMy7139Dlg:OnBtnDecrease() / TODO: Add your control notification handler code heretemp=m_EDIT;op=-;m_EDIT=_T();point=false;void CMy7139Dlg:OnBtnDecrease() /

11、 TODO: Add your control notification handler code heretemp=m_EDIT;op=*;m_EDIT=_T();point=false;void CMy7139Dlg:OnBtnDecrease() / TODO: Add your control notification handler code heretemp=m_EDIT;op=/;m_EDIT=_T();point=false;次方的实现:void CMy7139Dlg:OnBtnXy() / TODO: Add your control notification handler

12、 code herepotemp=m_EDIT;op=;m_EDIT=_T();int=false;三次方的实现(二次方的实现同理):void CMy7139Dlg:OnBtnCube() / TODO: Add your control notification handler code herechar ch250;int squ3;int squ4;double temp3;double temp4;switch(form)case H: squ3=_tcstoul(m_EDIT, 0, 16); squ4=pow(squ3,3); m_EDIT.Format(%X,squ4); Set

13、DlgItemText(IDC_EDIT1,m_EDIT); break;case D: temp3 = atof(LPCTSTR)m_EDIT); temp4=pow(temp3,3); m_EDIT.Format(%f,temp4); SetDlgItemText(IDC_EDIT1,m_EDIT); point=true; break; case O: squ3=_tcstoul(m_EDIT, 0, 8); squ4=pow(squ3,3); m_EDIT.Format(%o,squ4); SetDlgItemText(IDC_EDIT1,m_EDIT); break;case B:

14、squ3=_tcstoul(m_EDIT, 0, 2); squ4=pow(squ3,3); itoa(squ4,ch2,2); m_EDIT.Format(%s,ch2); SetDlgItemText(IDC_EDIT1,m_EDIT); break; default: return;三角函数的实现:void CMy7139Dlg:OnBtnSin() / TODO: Add your control notification handler code heredouble sintemp;switch(degngra)case 1:sintemp=atof(LPCTSTR)m_EDIT)

15、; m_EDIT.Format(%f,sin(sintemp * PI/180); SetDlgItemText(IDC_EDIT1,m_EDIT); break;case 2:sintemp=atof(LPCTSTR)m_EDIT); m_EDIT.Format(%f,sin(sintemp); SetDlgItemText(IDC_EDIT1,m_EDIT); break;void CMy7139Dlg:OnBtnCos() / TODO: Add your control notification handler code heredouble costemp;switch(degngr

16、a)case 1:costemp=atof(LPCTSTR)m_EDIT); m_EDIT.Format(%f,cos(costemp * PI/180); SetDlgItemText(IDC_EDIT1,m_EDIT); break;case 2:costemp=atof(LPCTSTR)m_EDIT); m_EDIT.Format(%f,cos(costemp); SetDlgItemText(IDC_EDIT1,m_EDIT); break;void CMy7139Dlg:OnBtnTan() / TODO: Add your control notification handler

17、code heredouble tantemp;switch(degngra)case 1:tantemp=atof(LPCTSTR)m_EDIT);if(tantemp!=90) m_EDIT.Format(%f,tan(tantemp * PI/180); SetDlgItemText(IDC_EDIT1,m_EDIT); else MessageBox(操作数范围错误,ERROR!); m_EDIT=_T(); point=false; SetDlgItemText(IDC_EDIT1,m_EDIT); break;case 2:tantemp=atof(LPCTSTR)m_EDIT);

18、 if(tantemp!=PI/2)m_EDIT.Format(%f,tan(tantemp); SetDlgItemText(IDC_EDIT1,m_EDIT);elseMessageBox(操作数范围错误,ERROR!); m_EDIT=_T();point=false;SetDlgItemText(IDC_EDIT1,m_EDIT);break;void CMy7139Dlg:OnBtnCot() / TODO: Add your control notification handler code heredouble cottemp;switch(degngra)case 1:cott

19、emp=atof(LPCTSTR)m_EDIT);if(cottemp!=0) m_EDIT.Format(%f,1/tan(cottemp * PI/180); SetDlgItemText(IDC_EDIT1,m_EDIT); else MessageBox(操作数范围错误,ERROR!); m_EDIT=_T(); point=false; SetDlgItemText(IDC_EDIT1,m_EDIT); break;case 2:cottemp=atof(LPCTSTR)m_EDIT); if(cottemp!=0) m_EDIT.Format(%f,1/tan(cottemp);

20、SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数范围错误,ERROR!); m_EDIT=_T(); point=false; SetDlgItemText(IDC_EDIT1,m_EDIT); break;反函数的实现:void CMy7139Dlg:OnBtnArcsin() / TODO: Add your control notification handler code heredouble arcsintemp;arcsintemp=atof(LPCTSTR)m_EDIT); if(arcsintemp=-1 & arcsin

21、temp=-1 & arccostemp0) m_EDIT.Format(%X,(int)log10(logt); SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break;case D: logtemp=atof(LPCTSTR)m_EDIT);if(logtemp0) m_EDIT.Format(%f,log10(logtemp); SetDlgItemText(IDC_EDIT1,m_EDIT);else Messa

22、geBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break; case O: logt=_tcstoul(m_EDIT, 0, 8);if(logt0) m_EDIT.Format(%o,(int)log10(logt); SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break;case B: logt=_tcstoul(m_EDIT,

23、 0, 2);if(logt0) itoa(log10(logt),logch,2); m_EDIT.Format(%s,logch); SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break; default: return;void CMy7139Dlg:OnBtnLn() / TODO: Add your control notification handler code heredouble lntemp;int

24、 lnt;char lnch50;switch(form)case H: lnt=_tcstoul(m_EDIT, 0, 16);if(lnt0) m_EDIT.Format(%X,(int)log(lnt); SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break;case D: lntemp=atof(LPCTSTR)m_EDIT);if(lntemp0) m_EDIT.Format(%f,log(lntemp); SetDlgItemText(IDC_EDIT1,m_EDIT);else MessageBox(操作数应大于零,ERROR!); m_EDIT=_T();point=false; UpdateData(false); break; case O: lnt=_tcstoul(m_EDIT, 0, 8);i

温馨提示

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

评论

0/150

提交评论