c++面向对象程序设计MFC简单计算器实验报告

合集下载

mfc计算器实验报告

mfc计算器实验报告

mfc计算器实验报告MFC计算器实验报告引言:MFC(Microsoft Foundation Class)是微软公司开发的一套用于Windows应用程序开发的类库,它提供了一系列的类和函数,方便开发者进行图形界面的设计和开发。

在本次实验中,我们将使用MFC来设计一个简单的计算器应用程序,并通过实验报告来总结我们的设计过程和结果。

1. 实验目的本次实验的主要目的是熟悉MFC框架的使用,了解MFC的基本原理和设计思路,并通过实际操作来掌握MFC应用程序的开发流程。

2. 实验环境本次实验使用的开发环境是Visual Studio 2019,该版本已经集成了MFC开发环境,方便我们进行MFC应用程序的设计和开发。

3. 实验步骤3.1 创建MFC项目首先,我们打开Visual Studio 2019,并选择创建一个新的MFC应用程序项目。

在创建项目的过程中,我们需要选择MFC应用程序向导,并设置一些基本的项目属性,如应用程序名称、目标平台等。

3.2 设计计算器界面在项目创建完成后,我们将进入MFC应用程序的设计界面。

在这个界面中,我们可以通过拖拽和调整控件的方式来设计应用程序的界面。

为了实现一个简单的计算器功能,我们需要添加一些按钮、文本框和标签等控件,并设置它们的属性和事件响应函数。

3.3 实现计算器功能在设计界面完成后,我们需要在代码中实现计算器的功能。

具体来说,我们需要编写一些函数来处理按钮的点击事件,并根据用户的输入来进行相应的计算操作。

在这个过程中,我们可以使用MFC提供的一些数学函数和操作符重载来简化计算的过程。

4. 实验结果经过我们的设计和开发,一个简单的计算器应用程序已经完成了。

在实验过程中,我们测试了该应用程序的基本功能,包括加法、减法、乘法和除法等运算操作,并对一些特殊情况进行了处理,如除数为零等。

实验结果表明,该计算器应用程序在功能和稳定性方面都达到了预期的效果。

5. 实验总结通过本次实验,我们对MFC框架的使用和应用程序的开发流程有了更深入的了解。

简单MFC程序设计(编写一个小型计算器)

简单MFC程序设计(编写一个小型计算器)
} void CTestDlg::OnButtonNum0() {
if(dotflag==1) {
quan= quan*10; m_Num += 0 / (double)quan; } else { if(numflag==1) {
m_Num = m_Num * 10 + 0; } else m_Num = 0; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonZhengfu() { UpdateData(); m_Num = 0-m_Num; UpdateData(FALSE); } void CTestDlg::OnButtonDengyu()
m_Num = m_Num * 10 + 8; } else m_Num = 8; } numflag = 1; mark=1; UpdateData(FALSE); } void CTestDlg::OnButtonNum9()
5
{ if(dotflag==1) { quan= quan*10; m_Num += 9 / (double)quan; } else { if(numflag==1) { m_Num = m_Num * 10 + 9; } else m_Num = 9; } numflag = 1; mark=1; UpdateData(FALSE);
是否为数字的 int 型标志 mark。
c) 然后考虑到在计算过程中 num1 和 num2 的储存状态有三种,num1==0 和
num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0 和
num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时

MFC计算器实验报告

MFC计算器实验报告

实验报告一——计算器一实验名称简易计算器二实验目的在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。

三编程思路计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。

给Dlg添加变量int m_operator; //运算符double m_result; //结果(含中间变量)另外添加编辑框的变量m_res1.对数字按钮的响应函数的编写1)由于每个按钮的响应函数相差不大,故用一个函数将其封装在每次输入时要先判断数据开头是否为0void CMy0710210202CalculateDlg::button(CString c){UpdateData(TRUE);m_res+=c;if(m_res.GetAt(0)=='0'&&m_res.Find(".")==-1){m_res.Empty();m_res+=c;}UpdateData(FALSE);}2)小数点按钮的响应函数。

首先要判断输入数据中是否已有小数点,数据是否为0,以及是否还没输入数据。

void CMy0710210202CalculateDlg::OnDian(){// TODO: Add your control notification handler code hereUpdateData(TRUE);int n=m_res.Find(".");if(n==-1&&m_res.GetLength()!=0) m_res+=".";else if(m_res.GetLength()==0)m_res+="0.";UpdateData(FALSE);}2.运算符按钮的响应函数的编写用m_operator指代要进行的运算,由于每次的运算结果m_result 都传入了编辑框的变量m_res里,故此程序可以实现连续运算。

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计MFC简单计算器实验报告

c面向对象程序设计M F C简单计算器实验报告Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

4. 屏幕、图形颜色、形状自定3 总体设计总体框架图1 系统框架系统功能说明在VC++中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

4 程序详细设计系统主调模块图5 程序流程图各模块详细设计建立的变量,控件的命名,对应的消息处理函数对应表double poz; 按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; && buffer[i+1]==0)之前那位}m_Dis=strtod(buffer,NULL);整个大的程序的实现分8个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

MFC设计简单的计算器范文

MFC设计简单的计算器范文

石家庄经济学院实验报告学院:专业: 计算机信息工程学院计算机实验中心制《Windows程序设计》实验报告姓名学号日期实验室计算机软件技术实验指导教师设备编号实验题目实验9 对话框一、实验目的1. 掌握对话框类的定义及使用2. 掌握对话框的数据交换和检验二、实验内容1.编写一个基于对话框的程序,当用户点击对话框上的按钮时弹出一个模态对话框,显示的对话框中央显示出当前时间。

程序界面如下图所示:2.试着编写一个可以完成计算器的基于对话框的应用程序,该应用程序具有“加”、“减”、“乘”、“除”的功能三、源代码及实验结果1.显示时间核心代码:class CMydialog : public CDialog{// Constructionpublic:C Mydialog(CWnd* pParent = NULL); // standard constructor// Dialog Data//{{AFX_DATA(CMydialog)e num { IDD = IDD_DIALOG1 };C String m_time;//}}AFX_DATA// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMydialog)p rotected:v irtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected:// Generated message map functions//{{AFX_MSG(CMydialog)a fx_msg void On_OK();a fx_msg void On_Cancel();//}}AFX_MSGD ECLARE_MESSAGE_MAP()};CMydialog::CMydialog(CWnd* pParent /*=NULL*/): CDialog(CMydialog::IDD, pParent){//{{AFX_DATA_INIT(CMydialog)m_time = _T("");//}}AFX_DATA_INIT}void CMydialog::DoDataExchange(CDataExchange* pDX) {C Dialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMydialog)D DX_Text(pDX, IDC_STA TIC1, m_time);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMydialog, CDialog)//{{AFX_MSG_MAP(CMydialog)O N_BN_CLICKED(IDC_BUTTON1, On_OK)O N_BN_CLICKED(IDC_BUTTON2, On_Cancel)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMydialog message handlersvoid CMydialog::On_OK(){// TODO: Add your control notification handler code here C Dialog::OnOK();}void CMydialog::On_Cancel(){// TODO: Add your control notification handler code here C Dialog::OnCancel();}void CTest10_1Dlg::OnButton1(){// TODO: Add your control notification handler code here C Time time = CTime::GetCurrentTime();C Mydialog dlg;d lg.m_time = time.Format("%Y-%m-%d %H:%M:%S");U pdateData(FALSE);d lg.DoModal();}结果:图一2.计算器核心代码:CTest10_2Dlg::CTest10_2Dlg(CWnd* pParent /*=NULL*/): CDialog(CTest10_2Dlg::IDD, pParent){n um1 = 0;n um2 = 0;//{{AFX_DATA_INIT(CTest10_2Dlg)// m_result = _T("");m_result.Format("%g",num1);//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);e = 0;o perate = 'N';_Flag = FALSE;D otFlag = FALSE;}void CTest10_2Dlg::DoDataExchange(CDataExchange* pDX){C Dialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTest10_2Dlg)D DX_Text(pDX, IDC_EDIT1, m_result);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CTest10_2Dlg, CDialog)//{{AFX_MSG_MAP(CTest10_2Dlg)O N_WM_SYSCOMMAND()O N_WM_PAINT()O N_WM_QUERYDRAGICON()O N_BN_CLICKED(IDC_BUTTON0, OnButton0)O N_BN_CLICKED(IDC_BUTTON1, OnButton1)O N_BN_CLICKED(IDC_BUTTON2, OnButton2)O N_BN_CLICKED(IDC_BUTTON3, OnButton3)O N_BN_CLICKED(IDC_BUTTON4, OnButton4)O N_BN_CLICKED(IDC_BUTTON5, OnButton5)O N_BN_CLICKED(IDC_BUTTON6, OnButton6)O N_BN_CLICKED(IDC_BUTTON7, OnButton7)O N_BN_CLICKED(IDC_BUTTON8, OnButton8)O N_BN_CLICKED(IDC_BUTTON9, OnButton9)O N_BN_CLICKED(IDC_BUTTON00, OnButton00)O N_BN_CLICKED(IDC_DOT, OnDot)O N_BN_CLICKED(IDC_BUTTON_, OnButton)O N_BN_CLICKED(IDC_ADD, OnAdd)O N_BN_CLICKED(IDC_MINUS, OnMinus)O N_BN_CLICKED(IDC_MUL, OnMul)O N_BN_CLICKED(IDC_DIV, OnDiv)O N_BN_CLICKED(IDC_COUNT, OnCount)//}}AFX_MSG_MAPEND_MESSAGE_MAP()void CTest10_2Dlg::OnButton0(){// TODO: Add your control notification handler code here P ress(0);}void CTest10_2Dlg::OnButton1(){// TODO: Add your control notification handler code here P ress(1);}void CTest10_2Dlg::OnButton2(){// TODO: Add your control notification handler code here P ress(2);}void CTest10_2Dlg::OnButton3(){// TODO: Add your control notification handler code here}void CTest10_2Dlg::OnButton4(){// TODO: Add your control notification handler code here P ress(4);}void CTest10_2Dlg::OnButton5(){// TODO: Add your control notification handler code here P ress(5);}void CTest10_2Dlg::OnButton6(){// TODO: Add your control notification handler code here P ress(6);}void CTest10_2Dlg::OnButton7(){// TODO: Add your control notification handler code here P ress(7);}void CTest10_2Dlg::OnButton8(){// TODO: Add your control notification handler code here P ress(8);}void CTest10_2Dlg::OnButton9(){// TODO: Add your control notification handler code here P ress(9);}void CTest10_2Dlg::OnButton00(){// TODO: Add your control notification handler code here // Flag00 = TRUE;P ress(0);}void CTest10_2Dlg::OnDot(){// TODO: Add your control notification handler code here D otFlag = TRUE;}void CTest10_2Dlg::OnButton(){// TODO: Add your control notification handler code here // operate = 'n';m_result = "-";U pdateData(FALSE);_Flag = TRUE;}void CTest10_2Dlg::OnAdd(){// TODO: Add your control notification handler code here o perate = '+';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnMinus(){// TODO: Add your control notification handler code here o perate = '-';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnMul(){// TODO: Add your control notification handler code here o perate = '*';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnDiv(){// TODO: Add your control notification handler code here o perate = '/';D otFlag = FALSE;_Flag = FALSE;}void CTest10_2Dlg::OnCount(){// TODO: Add your control notification handler code here s witch(operate){c ase '+':num1 += num2;break;c ase '-':num1 -= num2;break;c ase '*':num1 *= num2;break;c ase '/':if(num2 == 0){MessageBox("除数不可以是0!");return;}num1 /= num2;break;c ase 'n':num1 = 0 - num2;break;c ase 'N':break;}m_result.Format("%g",num1);U pdateData(FALSE);D otFlag = FALSE;_Flag = FALSE;n um1 = 0;n um2 = 0;e = 0;o perate = 'N';}void CTest10_2Dlg::Press(int n){i f(DotFlag){if(operate == 'N'){if(n){if(_Flag){num1 -= n*pow(0.1,e);}else{num1 += n*pow(0.1,e);}m_result.Format("%g",num1);}else{UpdateData(TRUE);m_result += '0';}}else{if(_Flag){num2 -= n*pow(0.1,e);}num2 += n*pow(0.1,e);m_result.Format("%g",num2);}}else{if(operate == 'N'){num1 *= 10;if(_Flag){num1 -= n;}else{num1 += n;}m_result.Format("%g",num1);}else{num2 *= 10;if(_Flag){num2 -= n;}else{num2 += n;}m_result.Format("%g",num2);}}++e;UpdateData(FALSE);}结果:整数加法:123+33小数加法:23.65+19.8 365.389*23 129.65/15负数-78+23四、实验总结计算器可以完成简单的整数、小数、正负数的加减乘除运算,不过结果不够精确,使用的数据类型是double型,格式转换时使用的“%g”。

mfc计算器的设计报告

mfc计算器的设计报告

MFC计算器课程设计题目: MFC计算器设计学院:计算机学院姓名:学号:指导教师:2015年5月20日目录1概述 (3)1.1课程设计目的 (3)1.2课程设计内容 (3)2系统需求分析 (4)2.1系统目标 (4)2.2主体功能 (4)2.3开发环境 (4)3系统概要设计 (4)3.1系统功能划 (4)4系统详细设计 (7)4.1 设计步骤 (7)4.2 界面设计 (9)5测试 (11)5.1 测试方案 (11)5.2 测试结果 (12)6小结 (14)参考文献 (14)附录 (15)附录1源程序清单 (15)计算器的设计1概述1.1 课程设计目的1、巩固并加深学生对C++语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++ 6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

1.2 课程设计内容课题名称:计算器的实现说明:实现一个计算器。

要求:用“计算器”的标准视图执行简单的计算。

32系统需求分析2.1 系统目标我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。

要计算功能有以下几个方面:加法,减法,乘法,除法,乘方。

2.2 主体功能十进制数的加、减、乘、除、乘方简单计算。

2.3 开发环境W indows操作系统,VC++ 6.0, OFFICE WORD3 系统概要设计3.1 系统功能划表3-1 系统功能表1)假设执行操作“+”,先输入一个数,再输入“+”,再输入另一个数,最后输入“+”。

整个功能“+”就执行完毕。

4四则代码如下void CCALDlg::OnButtonequal(){// TODO: Add your control notification handler code here UpdateData(TRUE);num2 =m_str;if(num2==0&&ope==3){m_str1="除数不能为零";m_str =0;num1 = 0;num2 = 0;UpdateData(FALSE);}else{// int f = 0;switch (ope){//加case 0:m_str = num1 + num2;break;//减case 1:m_str = num1 - num2;break;5case 2:m_str = num1 * num2;break;case 3:m_str = num1 / num2;break;case 4:m_str = num1 * num1;}UpdateData(FALSE);}64系统详细设计4.1 设计步骤打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名yeyahui及其所在位置,点击确定,如图4-1所示。

C++-MFC计算器编程课程设计实践报告

C++-MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013年7月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1) C++是一个更好的C,它保持了C S言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。

这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。

这对于设计、编制和调试一些大型的软件尤为重要。

⑶C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++ 程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++?序。

(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。

其优点是给用户编程带来书写上的方便。

其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。

次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。

在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。

通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。

(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。

用MFC制作简易计算器

用MFC制作简易计算器

面向对象编程技术课程设计课题名称:用VC++制作简单计算器用VC++制作简单计算器简述:该课程设计将实现一个简单计算器。

其类似于Windows附件中自带的计算器。

这个计算器可以实现简单的四则运算功能,而且具有简洁大方的图文外观。

系统具有良好的界面和必要的交互信息。

即时准确地获得需要的计算的结果,充分降低了数字计算的难度,从而节约了时间,对人们的生活有一定的帮助。

在课程设计中,程序设计设计语言采用Visual C++,在程序设计中,采用了面向对象解决问题的方法。

课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除简单运算的工具。

要实现计算功能,可以用VC++的知识编写程序来解决此问题。

该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。

该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。

功能说明系统具有良好的界面;必要的交互信息;简约美观的效果。

使用人员能快捷简单地进行操作。

可单机按钮进行操作即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

(1)包含的功能有:加、减、乘、除;(2)计算器上数字分为显示区,可以显示用户所点击的按键,最后显示结果;按键区,可以让用户选择所需的数字以及小数点;功能区,该区域提供用户所需的运算按钮;(3)计算功能基本上是用系统内部函数;(4)“AC”按钮可以清除所有已输入的数据从头计算;(5)“DEL”按钮可以删除所输入的最后以为数字;编辑资源创建步骤新建一个MFC基于对话框的工程VC++对话框界面右击按钮,修改按钮的属性建立类向导最后点击Edit Code就可以添加代码对其它按钮的操作与之类似,对编辑框的“建立类向导”有点区别,这里不附详细步骤代码展示“1”按钮对应的代码void CMyDlg::OnButton1(){UpdateData(1);if(pass1==1 )m_str="1";else m_str+="1";pass1=0;UpdateData(0);}“2”按钮对应的代码void CMyDlg::OnButton2(){UpdateData(1);if(pass1==1 )m_str="2";else m_str+="2";pass1=0;UpdateData(0);}“3”按钮对应的代码void CMyDlg::OnButton3(){UpdateData(1);if(pass1==1 )m_str="3";else m_str+="3";pass1=0;UpdateData(0);}“4”按钮对应的代码void CMyDlg::OnButton3(){UpdateData(1);if(pass1==1 )m_str="4";else m_str+="4";pass1=0;UpdateData(0);}“5、6、7、8、9、0”按钮对应的代码与“1、2、3、4”按钮对应的代码相近“=”按钮对应的代码void CMyDlg::Onresult(){UpdateData(1);int i,z,s,j,x=0,y=1,t,m=1;char b[10];double rate=10.0,itemp=0.0,a[20];for(i=0;i<20;i++)a[i]=1000000.0;for(i=0;i<10;i++)b[i]=' ';z=0;for(i=0;i<m_str.GetLength();i++) {if(isdigit(m_str.GetAt(i))){if(rate==10.0){ itemp=itemp*rate+(m_str.GetAt(i)-'0');if(i==m_str.GetLength()-1)a[z]=itemp;}else{itemp=itemp+rate*(m_str.GetAt(i)-'0');rate=rate/10;if(i==m_str.GetLength()-1)a[z]=itemp;}}else if(m_str.GetAt(i)=='.')rate=0.1;else if(m_str.GetAt(i)=='+') {a[z]=itemp;itemp=0;z++;b[z]='+';z++;rate=10.0;}else if(m_str.GetAt(i)=='-') {a[z]=itemp;itemp=0;z++;b[z]='-';z++;rate=10.0;}else if(m_str.GetAt(i)=='*')a[z]=itemp;itemp=0;z++;b[z]='*';z++;rate=10.0;}else if(m_str.GetAt(i)=='/'){a[z]=itemp;itemp=0;z++;b[z]='/';z++;rate=10.0;}}s=z;for(j=0;j<=s;j++){if(b[j]=='/'){a[j+1]=1/a[j+1];b[j]='*';}}for(j=0;j<=s;j++){if(b[j]=='*'){if(j-t==2){a[t-m]=a[t-m]*a[j+1];m=m+2;}elsea[j-1]=a[j-1]*a[j+1];a[j+1]=1000000.0;b[j]=' ';t=j;}}for(j=0;j<=s;j++){if(a[j]!=1000000.0) //如果a[i]的值不为0.0a[x]=a[j]; //把a[i]的值赋给a[x] x+=2; //x自加2}if(b[j]!=' ') //如果b[i]的值不为空格{b[y]=b[j]; //把b[i]的值赋给b[y]y=y+2; //y自加2}}for(j=0;j<=y-2;j++) {if(b[j]=='+') //如果b[i]等于加号a[0]=a[0]+a[j+1];else if(b[j]=='-') //如果b[i]等于减号a[0]=a[0]-a[j+1];}m_str.Format("%1f",a[0]);UpdateData(0);}“+”按钮对应的代码void CMyDlg::Onadd(){UpdateData(1);m_str+="+";UpdateData(0);}“-”按钮对应的代码void CMyDlg::Onjian(){UpdateData(1);m_str+="-";UpdateData(0);}“*”按钮对应的代码void CMyDlg::Oncheng(){UpdateData(1);m_str+="*";UpdateData(0);}“/”按钮对应的代码void CMyDlg::Onchu(){UpdateData(1);m_str+="/";UpdateData(0);}“AC”按钮对应的代码void CMyDlg::Onac(){UpdateData(1);m_str="0";pass1=1;UpdateData(0);}“DEL”按钮对应的代码void CMyDlg::Ondel(){UpdateData(1);if(m_str!="0" && m_str.GetLength()>1)m_str=m_str.Left(m_str.GetLength()-1);else{m_str="0";}UpdateData(0);}“.”按钮对应的代码void CMyDlg::Onpoint(){UpdateData(1);if(pass1==1)m_str=".";elsem_str+=".";pass1=0;UpdateData(0);}效果图。

MFC计算器设计实验报告.

MFC计算器设计实验报告.

计算机学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:基于Winform的多功能计算器的设计与实现姓名:专业:软件工程年级:08软件学号:指导教师:2010年12 月20 日目录1.设计目的 (3)2.设计要求 (3)3.设计方案 (3)(1)计算器的用例图: (3)(2)计算器的类图: (6)(3)计算器的顺序图: (6)(4)计算器协作图 (7)(5)计算器的状态图: (7)(6)计算器的活动图: (8)(7)计算器系统框图: (8)4设计内容: (9)(1)创建工程: (9)(2) 设计用户界面 (9)(3)添加代码 (11)5 测试结果: (15)6 总结: (17)7.参考文献: (17)1.设计目的利用C++语言,编写一个类似windows XP系统的计算器,实现计算器的基本功能,从而利用这次的设计,达到更加了解C++语言,了解面向对象的设计方法,加深对面向对象设计过程的了解等目的。

2.设计要求(1)利用面向对象的知识并参照Windows XP系统附件下的“科学型计算器”设计开发一个多功能的计算器;(2)不限制采用的开发平台和编程语言;(3)要求用UML描述设计过程;(4)要求用系统/程序运行时的截图描述实现的测试过程,系统的功能说明;(5)用原代码(加注释)描述主要的功能实现过程及算法;(6)提交纸质打印课程设计报告及项目工程原代码(所有人刻录在一张光碟中,两份,一份用以存档)。

3.设计方案(1)计算器的用例图:用例名称:四则运算。

参与执行者:用户。

前置条件:计算器已开启。

主事件流:用户输入操作数一。

用户选择加、减、乘、除四则运算中的一种算法。

用户输入操作数二,计算出结果,作为下一次计算的操作数一。

后置条件:显示计算结果。

用例名称:三角函数。

参与执行者:用户。

前置条件:计算器已开启。

主事件流:用户输入操作数一。

选择所要操作的三角函数,计算出结果。

所得的结果作为下一次计算的操作数一。

面向对象c 实验报告

面向对象c 实验报告

面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。

二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。

- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。

- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。

2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。

3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。

4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。

5. 运行程序:编译并运行C程序,观察程序的输出结果。

三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。

通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。

四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。

尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。

C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。

通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。

此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。

当然,C语言中实现面向对象编程也存在一些限制和不足。

相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。

此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。

C++-MFC计算器编程课程设计实践报告

C++-MFC计算器编程课程设计实践报告

中南大学本科生课程设计(实践)设计报告(程序设计基础)题MFC编程科学计算器目学生1104120502学号学生郭斌繁姓名指导蔡旭晖教师学院交通运输工程学院专业交通运输类1205班班级计算机基础教学实验中心2013 年 7 月1日程序设计(C++)实践报告1.引言C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1)C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。

这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。

(2)C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。

这对于设计、编制和调试一些大型的软件尤为重要。

(3)C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。

(4)C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。

其优点是给用户编程带来书写上的方便。

其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。

次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。

并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。

(1).设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。

在设计当中将综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。

通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。

(2).选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。

c++面向对象程序设计MFC简单计算器试验报告

c++面向对象程序设计MFC简单计算器试验报告

计算机与信息工程学院《程序设计基础》课程设计报告题目名称: 60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

屏幕、图形颜色、形状自定4.3 总体设计3.1 总体框架开始键入第一个按钮键入第二个按结系统框架1 图 3.2 系统功能说明在VC++6.0中绘制计算器界面,各控件的设置ID0~9对控件设定相应的和其他属性:“1”控件设置2 图 -+对“、、ID”控件设定相应的和其他属性:*、\“图 2 +”控件设置和其他属性:对其它控件设定相应的ID其它控件设置3图使界面更加整洁。

Align菜单中的Layout主要使用到功能对各个按钮进行对其,控件用于处理鼠标的ButtonEdit拖出的控件有上面的一个控件用于显示数字,消息。

4 程序详细设计系统主调模块4.1.图5 程序流程图4.2各模块详细设计变量定义:double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。

double m_Dis; //Edit控件上需要显示的数字BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。

double numfirst; //保存计算过程中的前一个数字,double numsecond;//保存计算过程中的第二个数字char op;//记录当前的计算符号,可以为'+','-','*','/','=','c','n'变量初始化:poz=1;m_Dis = 0.0;numfirst=0;numsecond=0;op=0;4.4.2 设计思路a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。

MFC实训_计算器

MFC实训_计算器

面向对象程序设计实训报告——简易计算器专业:电子信息工程学生姓名:唐伯虎学号: 9527指导教师:小行星2016年1月7 日1 总体设计1.1 设计任务使用Visual C++6.0 MFC编写一个计算器。

1.2 基本要求(1)按照题目要求独立设计计算器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。

(40分)(2)能够实现+、-、*、/计算。

(10分)(3)能够实现对数及幂函数计算。

(15分)(4)能够实现三角函数及反三角函数计算。

(15分)1.3 发挥部分能够实现8,16,10,2进制之间相互转换。

(20分)2 方案设计2.1 需求性分析所谓计算器,就是要进行数值运算,提供1-9数字按键,让用户按下不同的数字键,可以是组合输入,然后再按下运算符按键实现两个或者多个数值的计算,因此在计算器中除了需要定义数字按键之外运算符按键也是必不可少的,但是运算符按键类型众多,实现的功能也是五花八门,有双目运算符,比如+ - * /这些,也有单目运算符,比如x^2,ln,sqrt,所针对的数字个数也不一样,因此在设计计算器之前需要明确好该计算器大致要实现怎样的功能,需要定义多少个按键,而不是什么按键都要添加,企图复杂化,这样一来,就会造成很多麻烦。

应该先从四则运算开始,然后逐一增加功能,循序渐进的进行,根据题目的要求,划分好制作的步骤先后顺序。

我在基本的要求基础上希望添加几个功能,分别是清除按键,这是少不了的,作用是初始化数据,清屏,然后是退格按键,在输入错误的情况下能够实现退格再输入;再次是Ans按键,用以保留上一次的运算结果,以备下次运算时需要;最后是圆周率PI,在需要用到圆周运算时不用输入3.1415……这么长的一段数值……但是这都是在完成基本功能的基础上添加的功能。

2.2 可行性分析本设计是简单计算器。

日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。

实验报告5:MFC计算器

实验报告5:MFC计算器
贵州大学计算机科学与技术学院
计算机科学与技术系上机实验报告
课程名称:C++语言程序设计
班级:计科102
实验日期060075
指导教师:张永军
实验序号:05
实验成绩:
一、实验名称
MFC程序设计——计算器
二、实验目的及要求
本次上机实践所涉及并要求掌握的知识点
1.熟悉基于对话框形式的MFC程序设计
3.给按钮加上代码,设置属性
4.为实现操作添加必要函数
六、调试过程及实验结果
详细记录程序在调试过程中出现的问题及解决方法。
记录程序执行的结果。
对题目要求理解不好,导致开始没找到代码应添加的位置,没能加上计算结果功能,经重新审查得以解决。
七、总结
对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。
2.熟悉对界面操作的基本属性
3.编写用户界面的计算器程序
三、实验环境
本次上机实践所使用的平台和相关软件
Vs2010
四、实验内容
上机实践内容等
创建一个简单的计算器,实现简单的运算操作。
五、算法描述及实验步骤
用算法表示方法,流程图等形式表达算法设计思想与算法实现步骤
1.创建一个基于对话框的项目
2.给对话框加入相应的操作按钮
还是不熟悉相应属性的设置,导致程序运行出错,还有就是希望能改进材料的详细过程。
八、附录
源程序(核心代码)清单或使用说明书,可另附纸
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Sav="0.00";
m_S1=m_S2=m_S3;
UpdateData(FALSE);

《c 面向对象程序设计简单计算器的设计》

《c  面向对象程序设计简单计算器的设计》

面向对象程序设计----简单计算器的设计一、问题描述简单计算器的基本功能如下:1.四则运算,例如加减乘除等;2.除了整数的运算也可实现小数的各类运算;3.判断非法操作,例如判定1/0为非法操作;4.其他特性;这个简易计算器只实现以上所述功能,即实现简单计算。

二、设计思路计算器起始运行在归零状态,此时只接受数字输入,当按下一个数字按钮时,计算器只显示用户输入第一个操作数,用户在该状态下可以继续输入数字。

1.当第一个数字输入完成后,可以接受第二个操作数。

2.在数字输入结束进行运算后,按下=按钮可以根据前面按下的操作符计算结果显示,表示计算完成。

3.在上述计算过程中都可以接受双击等号回到清零状态。

三、功能函数设计:1.数字按钮这个是通过最基本的OnButton()将0~9十个数字按钮的单击消息处理函数用类向导全部关联到此,适文本框应该只是显示当前单击的数字;2.小数点按钮函数OnDecimal这个函数主要是实现小数点在计算器的相关功能3.列表在算法的函数OnSelchangeOperatorList()这一类按钮包括“+”“-”“*”“/”,它们的单击消息在同一个处理函数中进行处理,以同样的方法把这四个按钮的单击操作关联到此函数中,使四则运算法则在列表中通过选择去实现。

4.“=”符号函数OnEnquall()实现计算器中等号的功能,双击时也可使编辑框的数字归零。

四、编码实现:int calculator_type_i;double count=10,value=0;double Input_data_int=0,Input_data_dec=0;double Inputdata1=0,Inputdata2=0;char datatostr_buffer[10];bool decimal=FALSE;以上代码是添加的全局变量,为正确获取键盘输入供所有按钮函数使用。

// TODO: Add extra initialization herem_OperatorBox.AddString("-");m_OperatorBox.AddString("*");m_OperatorBox.AddString("/");m_OperatorBox.AddString("+");以上代码是初始化列表框,并使其在程序运行时具有“加”“减”“乘”“除”可选择功能。

MFC计算器课设报告

MFC计算器课设报告

(3)二进制
void CJisuanqiDlg::OnBtnerjinzhi() { char m_radix[16]={'0','1','2','3','4','5','6','7','8','9'};
CString s; m_base=2; int pos=0; long j,number=0; if(m_length==0) return; UpdateData(); number=atoi(m_s); j=number%m_base; while((number=number/m_base)!=0) { s.Insert(pos,m_radix[j]); pos++; j=number%m_base; } s.Insert(pos,m_radix[j]); s.MakeReverse(); SetDlgItemText(IDC_EDIT2,s的 问 题 及 解 决 情 况
编译错误: 1.简单编译语法错误,经过认真核对将语法修改正确。 2.编写代码过程中未声明
修改:请教同学、翻阅课本改正,对未声明部分进行声明。
五、系 统 运 行 报 告(测 试 的 结 果)
(1)加法
(2)减法
(3)乘法
(4)除法
(5)二进制
(4)其他
A 平方 void CJisuanqiDlg::OnBtnpingfang() { char c[100]; double res; UpdateData(); res=atof(m_s); res=res*res; gcvt(res,6,c); SetDlgItemText(IDC_EDIT2,c); } B:开方 void CJisuanqiDlg::OnBtnsqrt() { char c[100]; double res; UpdateData(); res=atof(m_s); res=sqrt(res); gcvt(res,6,c); SetDlgItemText(IDC_EDIT2,c); } C:阶乘 void CJisuanqiDlg::OnBtnjiecheng() { int n; char cr[100]; UpdateData(); n=atoi(m_s); int i=n-1; for(;i>=1;i--) { n=n*i; } gcvt(n,6,cr); SetDlgItemText(IDC_EDIT2,cr);

MFC课程设计报告一个简单的计算器应用程序

MFC课程设计报告一个简单的计算器应用程序

设计一个简朴的计算器应用程序一、设计目的与内容1.了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2.基本掌握面向对象程序设计的基本思绪和方法;3.掌握用VC++开发应用程序的的一般环节和方法;4.可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。

5.在程序中注意解决数据和运算符的输入,计算结果的显示。

二,设计规定1.用VC++进行编码,实现应用程序的功能。

注重编码质量,代码要有适当的注释;2.提交设计报告一份(课程设计任务书、目录、设计的基本思绪、设计的环节及重要代码、心得体会、参考文献)。

一个简朴的计算器应用程序总体设计可以运用所学的基本知识,设计一个简朴的计算器应用程序,实现基本的加、减、乘、除、求平方根,求倒数等基本运算(必须实现的功能),实现求角度的正弦、余弦、正切等基本运算、实现求指数、自然对数、常用对数等基本运算(这部分功能选做)。

在程序中注意解决数据和运算符的输入,计算结果的显示。

具体设计◆新建工程Counter新建工程,选择对话框应用程序。

◆程序运营主界面图2-1在对话框内添加相应的控件,分别给编辑框添加三个变量m_N1,m_N2和m_Result。

然后添加一个组合框,在里面添加十二个单选按钮设立第一个单选按钮为组,如图图2-2然后给对话框类添加一个int变量Operator用来作相应运算时的标记。

给控件添加相应的函数1、给单选按钮添加相应的函数void CCounterDlg::OnRadio1(){Operator=1;}void CCounterDlg::OnRadio2()Operator=2;}void CCounterDlg::OnRadio3() {Operator=3;}void CCounterDlg::OnRadio4() {Operator=4;}void CCounterDlg::OnRadio5() {Operator=5;}void CCounterDlg::OnRadio6() {Operator=6;void CCounterDlg::OnRadio7() {Operator=7;}void CCounterDlg::OnRadio8() {Operator=8;}void CCounterDlg::OnRadio9() {Operator=9;}void CCounterDlg::OnRadio10() {Operator=10;}void CCounterDlg::OnRadio11(){Operator=11;}void CCounterDlg::OnRadio12(){Operator=12;}用来作相应的操作时标记Operator的值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机与信息工程学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:刘沛东学生学号:2011508154 专业班级:电子信息工程(1)班指导教师:高攀1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。

2. 能实现加、减、乘、除及乘方的运算。

3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1 时,在计算器图形上的1键变为红色。

4. 屏幕、图形颜色、形状自定3 总体设计3.1 总体框架图1 系统框架3.2 系统功能说明在VC++6.0中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2 “1”控件设置对“+、-、*、\”控件设定相应的ID和其他属性:图2 “+”控件设置对其它控件设定相应的ID和其他属性:图3 其它控件设置主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。

拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。

4 程序详细设计4.1系统主调模块图5 程序流程图4.2各模块详细设计4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表double poz; //保存小数点的位置,初始化为1,表示poz-1个小数点。

double m_Dis; //Edit控件上需要显示的数字BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。

double numfirst; //保存计算过程中的前一个数字,double numsecond;//保存计算过程中的第二个数字char op;//记录当前的计算符号,可以为’+’,’-’,’*’,’/’,’=’,’c’,’n’变量初始化:poz=1;m_Dis = 0.0;numfirst=0;numsecond=0;op=0;4.4.2 设计思路a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。

数字在计算的过程中最多需要保存两个,所以定义了两个double型变量numfirst和numsecond来进行存储。

符号需要一个char op来存储。

b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是numfirst==0 && numsecond==0 也就是程序刚开始运行还没有开始录入数字的状态。

二种是numfirst!=0 && numsecond==0 也就是第一个数字已经录入,符号也已经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0&&numsecond!=0,表示可以通过op来把两数合并为一个数。

c)考虑到该计算器支持连续的计算,比如 3.33+1.33*88/96= ?。

所以必须在点符号Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字,方便下一次运算,功能近似于点=,所以把=也划分到符号类。

d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果,加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和整数。

4.2.3 成员函数及其释义因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。

void CCalcDlg::OnCal(double num){ //分三种状态来处理if(numfirst!=0 && numsecond!=0){if(point_flag==TRUE) //判定为小数{poz*=0.1; //小数进位m_Dis=m_Dis+poz*num;//递增UpdateData(false); //把结果从内存传递到屏幕}else{m_Dis=m_Dis*10+num;UpdateData(false);}}if(numfirst!=0 && numsecond==0){if(point_flag==TRUE){poz*=0.1;m_Dis=m_Dis+poz*num;UpdateData(false);}else//判定为整数{m_Dis=m_Dis*10+num;//递增UpdateData(false);}}if(numfirst==0 && numsecond==0){if(point_flag==TRUE){poz*=0.1;m_Dis=m_Dis+poz*num;UpdateData(false);}else{m_Dis=m_Dis*10+num;UpdateData(false);}}}4.2.4 以OnAdd()为例子讲解符号的处理函数,函数的功能是先判定之前按下字符时op的值,更具op的值来进行相应的运算。

void CCalcDlg::OnAdd(){ //根据numfirst和numsecond和op的值分为5种状态。

if(numfirst!=0 && numsecond==0&&op=='+'){numsecond=m_Dis;numfirst=numfirst+numsecond; //之前按的是加把两个数赋值到前一个数m_Dis=numfirst;//赋值给屏幕numsecond=0; //从新赋值为0,清空,不影响下一次判断UpdateData(FALSE);m_Dis=0; //屏幕的值同时清空}if(numfirst!=0 && numsecond==0&&op=='-'){numsecond=m_Dis;numfirst=numfirst-numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;}if(numfirst!=0 && numsecond==0&&op=='*'){numsecond=m_Dis;numfirst=numfirst*numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;}if(numfirst!=0 && numsecond==0&&op=='/'){numsecond=m_Dis;numfirst=numfirst/numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;}if(numfirst==0 && numsecond==0){ //该状态为程序启动还没有开始录入输入的状态numfirst=m_Dis; //屏幕的值赋值到numfirstUpdateData(FALSE);m_Dis=0;}op='+'; //最后记录最后一个操作是+poz=1;//小数点位置归位point_flag=FALSE;//默认小数点标志为整数,也就是0,也就是FALSE}“+/-“按钮的处理函数void CCalcDlg::OnNeg(){m_Dis=-m_Dis;//换个符号,其他都一样UpdateData(FALSE);poz=1;point_flag=FALSE;}‘.’按钮的处理函数void CCalcDlg::OnPt(){point_flag=TRUE; //把标志位改为“小数点”状态}“Backspace”按钮的处理void CCalcDlg::OnBackspace(){//主要通过_gcvt()和strtod()函数进行字符串和浮点数之间的转换char buffer[30]; //定义个装字符的数组_gcvt(m_Dis,sizeof(m_Dis),buffer); //把m_Dis存的数字转换为stringfor(int i=0;i<30;i++){if(buffer[i]=='.'&& buffer[i+1]==0)//判断是否为整数{point_flag=FALSE; //标志位设置为“整数位”break;}}if(point_flag==TRUE) //如果是小数{for(int j=0;j<30;j++){if(buffer[j]==0){buffer[j-1]=0; //把’\0’之前的字符赋值为’\0’,就相当于剪掉最后一位break;}}}else//如果是整数{buffer[i-1]=0; //剪掉’.’之前那位}m_Dis=strtod(buffer,NULL);//再用strtod弄成浮点数UpdateData(FALSE);poz=1;}‘CE’按钮处理函数void CCalcDlg::OnCe(){if(numfirst!=0 && numsecond==0)//CE只能修改第二个数字{m_Dis=0; //把屏幕的值赋值为0UpdateData(FALSE);//并显示出来}}‘C’按钮处理函数void CCalcDlg::OnClear(){op=NULL; //清空符号numfirst=0;//清空第一个数字numsecond=0;//清空第二个数字point_flag=FALSE;//改为默认整数位poz=1;//小数点归位m_Dis=0;UpdateData(FALSE); //屏幕显示归0}键盘响应:void CCalcDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {switch(nChar){case VK_NUMPAD0:OnNum0();break;case VK_NUMPAD1:OnNum1();break;case VK_NUMPAD2:OnNum2();break;case VK_NUMPAD3:OnNum3();break;case VK_NUMPAD4:OnNum4();break;case VK_NUMPAD5:OnNum5();break;case VK_NUMPAD6:OnNum6();break;case VK_NUMPAD7:OnNum7();break;case VK_NUMPAD8:OnNum8();break;case VK_NUMPAD9:OnNum9();break;case VK_ADD:OnAdd();break;case VK_SUBTRACT:OnMin();break;case VK_MULTIPLY:OnMul();break;case VK_DIVIDE:OnDiv();break;case VK_BACK:OnBackspace();break;case VK_DECIMAL:OnPt();break;case VK_DELETE:OnBackspace();break;case VK_RETURN:OnEqu();break;}CDialog::OnKeyDown(nChar, nRepCnt, nFlags);}BOOL CCalcDlg::PreTranslateMessage(MSG* pMsg){SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);return CDialog::PreTranslateMessage(pMsg);}5 程序运行结果6 课程设计总结通过这次课程设计,我又收获到很多,平时的在做作业时,因为题形与结构都是很简单的,并且每一章的内容都是有相应的例题可以参考,所以在做题时没有遇到过很麻烦的问题,而这次不同了,一个课题拿到手时,给我的感觉是无从下手,而且要求很多,使得题目要求更大了。

相关文档
最新文档