1、基于mfc编程的计算器开发与实现本科学位论文提供全套,各专业毕业设计 PINGDINGSHAN UNIVERSITY 实训论文(设计) 题 目: 基于MFC编程的计算器 开发与实现 院(系): 软件学院 专业年级: 13级网络工程师 姓 名: 姚龙龙 学 号: 131530439 指导教师: 徐向艺 2014年 11月 2 日基于MFC编程的计算器开发与实现摘 要关键词:Vc+6.0 MFC 代码编辑器 结构功能图 程序流程图 类向导 目 录(采用系统自动生成目录)1 绪论 11.1 项目设计的目的 11.2 项目设计的意义 11.3 项目的主要内容和基本结构 11.4 本章小结 12 工具及
2、核心功能介绍 22.1 开发工具 2 2.1. 1 Visual C+的概述 2 2.1.2 Visual C+的特点 2 2.1.3 项目和项目工作区 2 2.1.4 代码编辑器 22.2 项目结构和程序流程 22.2.1 结构功能图 32.2.2 程序流程图 32.3 核心模块功能实现 4 2.3.1 四则运算模块实现 4 2.3.2 特殊运算模块实现 5 2.3.3 删除整个字符串模块实现 63 系统运行环境及截图 73.1 窗口数字和元素按钮的类向导建立 73.2按钮响应函数 73.3运行函数 10附 录 10心 得 16参考文献 161 绪论1.1 项目设计的目的 1、巩固并加深学生
3、对C+语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、灵活应用类库模式下编写程序的技巧。4、能够熟练掌握MFC中的各个控件,消息的添加和处理,能够独立完成一些简单的算法,并且能够具体实现一些功能。 5、掌握书写程序设计开发文档的能力。 6、掌握将具体问题抽象为类与对象的方法。 1.2 项目设计的意义 通过这次实训使我们掌握基本软件开发的能力,增强对相关专业知识的感性认识,提高应用所学知识在实践中发现问题,分析问题,解决问题的能力。1.3 项目的主要内容和基本结构课题名称:计算器的实现说明:利用MFC实现一个计算器基本的功能,能执行
4、简单的运算。要求: (1)用“计算器”的标准视图执行简单的计算。基本结构:(1)组成:简易计算器由编辑框,数字按钮,功能按钮组成。1.4 本章小结在前面已经基本明确了本课程报告制作的目的,要求,以及简易计算器的功能,外形的要求,为后期的制作,明确了努力方向。2 工具及核心功能介绍2.1 开发工具2.1.1 Visual C+的概述 Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持
5、数据库接口、OLE2,WinSock网络、3D控制界面。它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结花费的时间,在大型软件计划上尤其显著。2.1.2 Visual C+的特点 (1)VC+6.0作为一个主流的开发平台一直深受编程爱好者的喜爱,是当下主流的Windows平台上的编程环境。(2)VC+6.0必须具备良好的C/C+的基础,必要的英语阅
6、读能力也是必不可少的,因为大量的技术文档多以英文形式发布。2.1.3 项目和项目工作区 (1)项目截图 (2)项目工作区 Visual C+ 6.0有自己的项目工作管理区,方便用户在进行项目开发时的对项目的管理和操作。项目管理区提供三种视图供用户选择,分别是Class view,Resource view ,和File view。在实际的操作中给用户提供了很大的方便。2.1.4 代码编辑器V C+6.0的代码编辑器使用起来也是十分的方便。用户可以同时打开多个文档,这适用于用户在进行多文件操作,可以对多个文件内的代码进行编辑。当然用户也可以最大化当前正在浏览的文件,这样只能对当前文件内的代码进行
7、编辑操作。2.2 项目结构和程序流图2.2.1 结构功能图 序号文件名主要功能备注1+加法求和两个操作数2-减法求差两个操作数3*乘法求积两个操作数4/除法求商两个操作数5%求模两个操作数6Sqrt求平方根一个操作数71/x求导数 一个操作数 8 Back退格一个操作数 9 +/-转换正负 一个操作数 10C/CE寄存器清零 11 = 等于 2.2.2 程序流程图 2.3 核心模块功能实现2.3.1 四则运算模块实现1. 加法void CCalcDlg:OnBnClickedAdd() if (!b_Start) return; if (en_LastSignl=en_none) en_Las
8、tSignl=en_add; RunOperation(en_LastSignl); en_LastSignl=en_add;2. 减法void CCalcDlg:OnBnClickedAdd() if (!b_Start) return; if (en_LastSignl=en_none) en_LastSignl=en_add; RunOperation(en_LastSignl); en_LastSignl=en_add;3. 乘法void CCalcDlg:OnBnClickedMul() if (!b_Start) return; if (en_LastSignl=en_none)
9、cs_Num1=1; en_LastSignl=en_mul; RunOperation(en_LastSignl); en_LastSignl=en_mul;4. 除法void CCalcDlg:OnBnClickedDivide() if (!b_Start) return; if (en_LastSignl=en_none) cs_Num1=1; en_LastSignl=en_div; RunOperation(en_LastSignl); en_LastSignl=en_div;2.3.2 特殊运算模块void CCalcDlg:RunOperation(eum_signl e_si
10、gnl) double sum=0; double nAdd1; double nAdd2; nAdd1=atof(cs_Num0); nAdd2=atof(cs_Num1); switch(e_signl) case en_add: sum=nAdd1+nAdd2; break; case en_sub: sum=nAdd1-nAdd2; break; case en_mul: sum=nAdd1*nAdd2; break; case en_div: sum=nAdd1/nAdd2; break; case en_none: sum=nAdd1; break; cs_Num0.Format(
11、%.3lf,sum); SetDlgItemText(IDC_EDIT_SHOW,cs_Num0); if (!b_Hasport & -1=cs_Num0.Find(.) CString temp; GetDlgItemText(IDC_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW,temp); m_i = 1; b_Hasport=FALSE; b_Start=FALSE; cs_Numm_i=0;void CCalcDlg:PutIntoNum(int n) CString tem_i; tem_i.Format(%d,n)
12、; CString temp; if (!b_Start) cs_Numm_i=tem_i; b_Start=TRUE; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i); if (!b_Hasport) GetDlgItemText(IDC_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW,temp); return; cs_Numm_i+=tem_i; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i); if (!b_Hasport) GetDlgItemText(IDC
13、_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW,temp); 2.3.3 删除整个字符串模块实现void CCalcDlg:InitAllDate() en_LastSignl=en_none; b_Hasport=FALSE; b_Start=FALSE; b_Hasmul=FALSE; b_Hasdiv=FALSE; cs_Num0=0; cs_Num1=0; m_i=0; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i+.); 3 系统运行环境及截图3.1 窗口数字和元素按钮类向导的建立3.1.
14、1 窗口数字 在窗口输入数字后,编辑框内会显示操作者输入的操作数,即可实现基本的算数要求。3.1.2 元素按钮的类向导建立 1)元素按钮建立在中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,在该对话框中输入控件的ID值和标题属性,如下图所示。按照上面的操作过程编辑其他按钮和编辑框等对象的属性。表3-1各按钮和编辑框等对象的属性对象ID标题或说明编辑框IDC_EDIT1结果显示按钮IDC_BUTTON00按钮IDC_
15、BUTTON11按钮IDC_BUTTON22按钮IDC_BUTTON33按钮IDC_BUTTON44按钮IDC_BUTTON55按钮IDC_BUTTON66按钮IDC_BUTTON77按钮IDC_BUTTON88按钮IDC_BUTTON99按钮IDC_zhengfuhao+/-按钮IDC_BUTTONPoint.按钮IDC_BTN_ADD+按钮IDC_BTN_SUB-按钮IDC_BTN_MUL*按钮IDC_BTN_DIV/按钮IDC_Sqrtsqrt按钮IDC_daoshu1/x按钮IDC_equal=按钮IDC_BackBackspace按钮IDC_CECE按钮IDC_CC完成后界面如下图所
16、示: 2) 元素类向导的建立: 在中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button类向导对话框,在该对话框中设置单击函数,如下图所示: 依次将每个按钮按照上面的方法创建类向导,建立单击函数即可。3.2 按钮响应函数 控件消息函数功能IDC_zhengfuhaoBN_CLICKED处理正负号单击按钮IDC_BUTTONPointBN_CLICKED处理小数点单击按钮IDC_equalBN_CLICKED处理等于单击按钮IDC_d
17、aoshuBN_CLICKED处理倒数单击按钮IDC_baifenbiBN_CLICKED处理百分比单击按钮IDC_SqrtBN_CLICKED处理开平方单击按钮IDC_BTN_ADDBN_CLICKED处理加号单击按钮IDC_BTN_SUBBN_CLICKED处理减号单击按钮IDC_BTN_MULBN_CLICKED处理乘号单击按钮IDC_BTN_DIVBN_CLICKED处理除号单击按钮IDC_BackBN_CLICKED处理退格键单击按钮IDC_CEBN_CLICKED处理清零单击按钮IDC_CBN_CLICKED处理归零单击按钮3.3 运行函数 virtual BOOL OnInitD
18、ialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnButton5(); afx_msg void OnButton7(); afx_msg void Onzhengfuhao(); afx_msg void OnBUTTONPoint(); afx_msg void OnButton1(); afx_msg void OnButton0(); afx_msg void OnBu
19、tton2(); afx_msg void OnButton3(); afx_msg void OnBack(); afx_msg void Onbaifenbi(); afx_msg void OnButton4(); afx_msg void OnButton6(); afx_msg void OnButton8(); afx_msg void OnButton9(); afx_msg void OnC(); afx_msg void OnCe(); afx_msg void Ondaoshu(); afx_msg void Onequal(); afx_msg void OnSqrt()
20、; afx_msg void OnBtnDiv(); afx_msg void OnBtnMul(); afx_msg void OnBtnSub(); afx_msg void OnBtnAdd();附 录计算器所在类的核心代码:void CJisuan3Dlg:OnButton5() / TODO: Add your control notification handler code here PutIntoNum(5);void CJisuan3Dlg:OnButton7() / TODO: Add your control notification handler code here
21、PutIntoNum(7);/-+void CJisuan3Dlg:Onzhengfuhao() / TODO: Add your control notification handler code here if (!b_Start) return; CString temp; GetDlgItemText(IDC_EDIT_SHOW,temp); num=atof(temp); num=0-num; temp.Format(%lf,num); SetDlgItemText(IDC_EDIT_SHOW ,temp); cs_Numm_i=temp;void CJisuan3Dlg:OnBUT
22、TONPoint() / TODO: Add your control notification handler code here /已有小数点时 if (b_Hasport) return; /无小数点 cs_Numm_i+=.; b_Hasport=TRUE; b_Start=TRUE; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i);void CJisuan3Dlg:OnButton1() / TODO: Add your control notification handler code here PutIntoNum(1);void CJisuan3
23、Dlg:OnButton0() / TODO: Add your control notification handler code here if(cs_Numm_i=0) return ; cs_Numm_i+=0; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i); if(!b_Hasport) CString temp; GetDlgItemText(IDC_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW,temp); void CJisuan3Dlg:OnButton2() / TODO: A
24、dd your control notification handler code here PutIntoNum(2);void CJisuan3Dlg:OnButton3() / TODO: Add your control notification handler code here PutIntoNum(3);/ 退格键void CJisuan3Dlg:OnBack() / TODO: Add your control notification handler code here if (!b_Start) return; double num; CString temp; int l
25、en; CHAR temp_ch32; GetDlgItemText(IDC_EDIT_SHOW,temp); /AfxMessageBox(temp); num=atof(temp); sprintf(temp_ch,%g,num); num=0; /AfxMessageBox(temp_ch); len=strlen(temp_ch); int te_i=len-1; if(temp_chte_i=.) te_i-=1,b_Hasport=FALSE; temp_chte_i=0; / /AfxMessageBox(temp_ch); if (strlen(temp_ch)=0) temp
26、_ch0=0; temp_ch1=0; / sscanf(temp_ch,%lf,&num); temp.Format(%g,num); /AfxMessageBox(temp); SetDlgItemText(IDC_EDIT_SHOW,b_Hasport?temp:temp+.); cs_Numm_i=temp; / %void CJisuan3Dlg:Onbaifenbi() / TODO: Add your control notification handler code here if (!b_Start) return; double num; CString temp; Get
27、DlgItemText(IDC_EDIT_SHOW,temp); num=atof(temp); num/=100; temp.Format(%lf,num); if (temp.Find(.)=-1) SetDlgItemText(IDC_EDIT_SHOW,temp+.); else SetDlgItemText(IDC_EDIT_SHOW,temp);void CJisuan3Dlg:OnButton4() / TODO: Add your control notification handler code here PutIntoNum(4);void CJisuan3Dlg:OnButton6() / TODO: Add your control notification handler code here PutIntoNum(6);void CJisuan3Dlg:OnButton8() / TODO: Add your control notification handl
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2