文档视界 最新最全的文档下载
当前位置:文档视界 › MFC计算器程序报告

MFC计算器程序报告

MFC计算器程序报告
MFC计算器程序报告

C++课程设计实验报告

学号姓名

院系专业

一、课题名称

简易的计算器设计。

二、问题陈述

编写一个计算器程序,能够进行四则运算、取模等运算

要求:

1、个人完成;

2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显

示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。

3、四则运算、取模运算是最低要求,程序能正确执行;

4、界面设计美观、合理;

5、独立完成;

三、设计目标和设计任务

编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。

四、解题算法思想

1.创建一个基于对话框的项目

2. 给对话框加入相应的操作按钮

3. 给按钮加上代码,设置属性

4. 为实现四则运算、取模等操作添加必要函数

五、程序算法过程

①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。多次单击next,最后单击Finish后,系统弹出一对话框,如下图:

②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局)

③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下:

ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零

IDC_BUTTON1 1 IDC_ADD +

IDC_BUTTON2 2 IDC_PLUS -

IDC_BUTTON3 3 IDC_MULTIPL Y *

IDC_BUTTON4 4 IDC_DEVIDE /

IDC_BUTTON5 5 IDC_EQUALL =

IDC_BUTTON6 6 IDC_QUM 取模

|IDC_BUTTON7 7 IDC_SQU 平方

IDC_BUTTON8 8 IDC_CUB 立方

IDC_BUTTON9 9

④在对话框非控件部分单击鼠标右键,打开类向导ClassWizard,将数字按钮0~9关联到函数OnEnternum(),方法为单击数字按钮ID,然后单击Message中的BN_CLICKED,最后单击右侧的Add Function,在其中输入函数名即可。如下图:

用相同的方法,将运算符+、-、*、/ 按钮关联到函数OnComputer(),将清零按钮关联到函数OnButtoncls(),将等号按钮关联到函数OnEquall(),将取模按钮关联到函数OnQum (),将平方按钮关联到函数OnSqu(),将立方按钮关联到函数OnCub()。

⑤为文本编辑框IDC_EDIT1添加关联float型变量m_nnum。方法为打开类向导,单击Member Variables选项卡,选中IDC_EDIT1,单击右侧的Add Variable...,在弹出的对话框中添加变量。如下图:

添加类成员变量,它们的名称及用途为:

private:

BOOL m_bnext;//记录在键入数据后是否键入过运算符

int m_ncomflag;//记录键入运算符次数

float m_numold;//记录上次运算的结果

operation m_oper;//记录上次运算符号

方法为在Class View 选项卡中打开CCalculatorDlg,在

class CCalculatorDlg : public CDialog 中添加上述代码。

如下图:

同时添加代码:

typedef enum{add,plus,multiply,devide}operation;//定义一个数据类型,该类型的变量值只

//能在enum定义的范围内取,即add,plus,multiply,devide。

⑥接下来为各个函数添加代码。代码内容及解释如下:

void CCalculatorDlg::OnEnternum()

{

// TODO: Add your control notification handler code here

CString strnum,strold;//定义两个CString类型的变量,方便之后字符串的拼接。

this->GetDlgItemText(IDC_EDIT1,strold);//获得编辑框控件内显示的标题,并将它赋

//给strold。

this->GetFocus()->GetWindowText(strnum);//将所按下的数字符的标题内容赋给strnum。if(m_bnext)//bnext变量在此的作用是判断输入数字符前,是否已输入操作符。m_bnext

//的初始值为TURE。

{this->SetDlgItemText(IDC_EDIT1,strnum);//如果m_bnext的值为TURE,即已输入//操作符,则将编辑框控件内的正文直接重置为strnum的值。

m_bnext=FALSE;//由于按下了数字符,故将m_bnext的值设为FALSE,为下一次数

//字的输入做好准备。

}

else

{if(strold=="0")

this->SetDlgItemText(IDC_EDIT1,strnum);//若编辑框内的数字显示为零(即第一次//按下的数字符是0),也要将编辑框的正文重置。

else

this->SetDlgItemText(IDC_EDIT1,strold+strnum);//将编辑框控件内的正文设

//置为strold+strnum,即将新按下的数字符拼接在原编辑框正文之后。

}

UpdateData(TRUE);//将编辑框显示的内容传递给m_nnum。

}

void CCalculatorDlg::OnComputer()

{

// TODO: Add your control notification handler code here

CString stroper;

m_ncomflag++;//变量m_ncomflag的作用是记录操作符的键入次数。

m_bnext=TRUE;//由于按下了操作符,故将m_bnext的值置为TRUE。

if(m_ncomflag>1)//以下代码是为了应对出现的连续运算而设计的。

{m_numold=computer(m_numold,m_oper);//m_numold的作用是记录下上次运算的结

//果。

this->GetFocus()->GetWindowText(stroper);//将所按下的操作符的标题内容赋给

//stroper。

if(stroper=="+")m_oper=add;

if(stroper=="-")m_oper=plus;

if(stroper=="*")m_oper=multiply;

if(stroper=="/")m_oper=devide;//四种符号对应四种运算,方便接下来在computer函数

//中的运算执行过程。

}

else//以下代码应对出现的简单运算过程,例如执行1+1= 。

{ this->GetFocus()->GetWindowText(stroper);

if(stroper=="+")m_oper=add;

if(stroper=="-")m_oper=plus;

if(stroper=="*")m_oper=multiply;

if(stroper=="/")m_oper=devide;

m_numold=m_nnum;//将当前m_nnum的值保存在m_numold中。

}

m_nnum=m_numold;//这句代码也是为了能将连续运算中的中间结果显示到编辑框内

//而设计的。

UpdateData(FALSE);//刷新编辑框的显示内容。

}

其中函数computer()是添加的一个成员函数,其代码为:

float CCalculatorDlg::computer(float num,operation m_oper)//computer函数是运算的实际执行

//函数。

{float result;

switch(m_oper)//根据键入的不同操作符,执行不同的操作。其中,m_nnum为当前编辑框

//的显示内容。

{case add:

result=num+m_nnum;

break;

case plus:

result=num-m_nnum;

break;

case multiply:

result=num*m_nnum;

break;

case devide:

if(m_nnum==0)

{AfxMessageBox("除数为零,出错!");

result=0;

exit;//考虑到除数为零的情况。

}

else

result=num/m_nnum;

break;

}

return result;//返回运算结果。

}

还要在class CCalculatorDlg : public CDialog中添加对该函数的原型声明:

float computer(float num,operation oper);//函数的原型声明。

void CCalculatorDlg::OnButtoncls() //清零函数。

{

// TODO: Add your control notification handler code here this->SetDlgItemText(IDC_EDIT1,"0");

m_numold=0;

}

void CCalculatorDlg::OnQum() //执行取模操作

{

// TODO: Add your control notification handler code here if(m_numold>=0)

m_nnum=m_numold;

else

m_nnum=-m_numold;

m_numold=m_nnum;

UpdateData(FALSE);

}

void CCalculatorDlg::OnSqu() //执行平方操作

{

// TODO: Add your control notification handler code here m_nnum=m_nnum*m_nnum;

UpdateData(FALSE);

}

void CCalculatorDlg::OnCub() //执行立方操作

{

// TODO: Add your control notification handler code here m_nnum=m_nnum*m_nnum*m_nnum;

UpdateData(FALSE);

}

此外,要在对话框类的初始化函数中,对变量进行初始化: BOOL CCalculatorDlg::OnInitDialog()

{

...

//TODO:Add extra initialization here

m_ncomflag=0;

m_nnum=0;

UpdateData(FALSE);

}

⑦最后,为了是对话框美观,添加背景图片。

准备一张bmp格式的图片(如果不是bmp格式,可以用画图打开一张图片,另存为时选择bmp格式即可);添加背景图片到“Bitmap”资源里,方法为“插入——资源”,类型为“Bitmap”后“引入”想要插入的bmp格式背景图片。可以添加多个资源,本程序中添加了三张图片,最后选择了其中一张跑车背景的图片做背景。如下图:

定位到void CCalculatorDlg::OnPaint(),在if()...else()中的else()下添加如下代码:else

{

//CDialog::OnPaint(); //要禁止这个调用

CPaintDC dc(this);

CRect rect;

GetClientRect(&rect);

CDC dcMem;

dcMem.CreateCompatibleDC(&dc);

CBitmap bmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP2); //IDB_BITMAP2是背景图对应的ID

BITMAP bitmap;

bmpBackground.GetBitmap(&bitmap);

CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,

bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

}

最终程序运行画面如下图:

六、测试数据

如运行2*3/6+4-9= 运行的效果图如下

最终结果是-4

接着按取模键,结果如下图

结果为4

然后接连按下乘方和立方键,结果如下图

最终结果为4096

七、运行情况分析

加减乘除及取模、乘方、立方的运算良好,都可以正确运算,如果遇到除不尽的情况,只能显示六位数字。当被除数为0时会弹出对话框,如下图

程序的整体运行情况良好,实现了题目所要求的功能。

八、设计小结

本次MFC 计算器的制作,程序可以进行四则运算、取模、乘方、立方,虽然做出了程序,但是程序仍然存在一定的问题,程序比较简陋,比如没有加入三角函数的运算;只能进行整数的运算,不能输入小数等由于时间仓促,如果有更多的时间,再深入了解一下,应该可以做得更好。

九、心得体会

对于MFC,我在短学期开始之前,是完全陌生的。于是在整个项目设计过程中,我在图书馆借了相关的书籍,一开始,先照着上面的例子,修修改改,编写一下,后来慢慢懂得了一些。通过几周对VC++的深入学习,使我掌握了不少的东西,从最简单的Hello World 到最后的实现自己设计程序计算器,虽然过程是艰苦的,但成果是美妙的,当看到它成功的运行起来的时候,那滋味很爽。从中学到的东西还是为以后深层次的学习打下了基础。在做程序的时候遇到了很多不懂的地方,通过在网上查询、和同学讨论,一步一步的解决问题,最终实现了这个简单的计算器小程序。VC++是当下很流行的开发技术,很多的方面都需要这类语言开发的软件,所以真正的学好这门技术将会是很有用的。总之,我要感谢这次短学期的项目设计经历,它不但让我学到了MFC设计的很多知识,而且锻炼了我各方面的能力,让我体验到做项目时的酸甜苦辣,终生难忘。

参考资料

Visual C++ 6.0 实用教程杨永国主编清华大学出版社Visual C++ 6.0 程序设计教程詹红霞侯思颖陶永红等编著清华大学出版社

提交日期

2012年9月14日

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()

(整理)基于vcmfc的科学计算器程序实验报告

实验报告 课程名称:windows软件开发实习实验项目:科学计算器

沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验名称: 1.实验目的: 本程序设计实践是采用C++语言,在VC平台下设计。本课程设 计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。程序设计实践主要是培养学生利用系统综合C++语言进行程序设计的能力。 1.进一步巩固和复习C++程序设计的基础知识。 2.培养学生结构化程序、模块化程序设计的方法和能力。 3.了解软件的编制过程及各环节的具体内容。 4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。 5.提高学生分析问题、解决问题以及实际运用能力。 2.实验内容: 设计一个简单的计算器。要求能实现整数、小数算数运算。程序带 清零按钮。 3. 实验方案(程序设计说明) 见附件 4. 实验步骤或程序(经调试后正确的源程序) (填写主要步骤与程序代码等。见附件A) 5.出现的问题及解决方法

附件A 沈阳工业大学实验报告 (适用计算机程序设计类) 专业班级:软件1006 学号:101201622 姓名:张鑫可 实验步骤或程序: 一、关于Visual C++: Visual C++6.0由Microsoft开发, 它不仅是一个C++ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft 的主力软件产品。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft 公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的 首选工具。虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为6平台。 Visual C++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 二、设计要点 1、基本要求:设计的系统界面要美观大方,操作合理,有必要的 提示。 2、创新要求:在基本要求达到后,进行创新设计。

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

VCmfc编计算器源代码

用C++编写计算器程序 搞要本课程设计是在基于对话框的应用程序中模拟一个计算器,本计算器可以进行十进制下的四则运算(加、减、乘、除)和四则混合运算,可以把十进制转化为二进制或十六进制,可以进行一些常用的函数运算(比如sin、cos、tan、cot、sqrt、ln等),还可以支持带“(”,“)”符号的表达式的计算。系统开发平台为Windows XP,程序设计设计语言采用Visual C++6.0,程序运行平台为Windows 98/2000/XP。程序通过调试运行,初步实现了设计目标。 关键词程序设计;计算器;C++; 1 引言 在现代社会中,计算器已经进入了每一个家庭,人们在生活和学习中经常需要使用到计算器,它的出现大大减少了人们在计算方面的工作量,可以说它在人们生活和学习中是不可缺少的。 1.1C++介绍 C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序设计方法[1]。 (1) C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛的软件是非常重要的,可以节省大量的人力和物力。 (2) C++是一种面向对象的程序设计语言它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。 (3) C++集成环境不仅支持C++程序的编译和调试,而且也支持C程序的编译和调试。

通常,C++程序环境约定:当源程序文件的扩展名为c.时,则为C程序;而当源程序文件的扩展名为cpp.时,则为C++程序。 (4) C++语句非常简练,对语法限制比较宽松,因此C++语法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误不容易发现,给用户编程增加了难度。 1.2计算器的介绍 (1)在运行程序后,系统会弹出一个基于对话框的计算器界面,如下图所示: 图1.1 计算器界面 (2)在计算器程序中,主要通过一个编辑框来获取表达式和显示计算结果,表达式可以通过键盘和单击按钮2种方式输入,输入后的结果如下图所示:

简单计算器设计报告

简单计算器设计报告 045 一、基本功能描述 通过文本编辑框实现基本整数的加减乘除运算 二、设计思路 如下图是整个程序进行的流程图,基本方法是在ItemText文本编辑框输入字符,程序对字符进行判断,若输入不是数字则提示错误。输入正常时,通过下拉框ComboBox_InsertString 选择相应运算符。点击等号IDC_OK,即可得出运算结果。操作简便,算法简单。 三、软件设计 1、设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名zhoutong及其所在位置,点击确定 1

将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成 MFC AppWizard就建立了一个基于对话窗口的程序框架

四、主要程序分析 1、字符判定函数 BOOL IsInt(TCHAR*str) { int i=atoi(str); TCHAR strtemp[256]; wsprintf(strtemp,"%i",i); if(strcmp(str,strtemp)!=0) { return FALSE; } Else { return TRUE; } } 该函数通过atoi把文本编辑框读取的字符转换为数字,再通过wsprintf把转换数字转换为字符,通过strcmp比较原字符和转换得来的字符。如相同返回true,不通则返回false. 3、运算符选择程序 BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndComboOP=GetDlgItem(hwnd,IDC_COMBOOP); ComboBox_InsertString(hwndComboOP,-1,TEXT("+")); ComboBox_InsertString(hwndComboOP,-1,TEXT("-")); ComboBox_InsertString(hwndComboOP,-1,TEXT("*")); ComboBox_InsertString(hwndComboOP,-1,TEXT("/")); return TRUE; } 3

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

计算机与信息工程学院 《程序设计基础》课程设计报告 题目名称: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;

可视化编程MFC计算器

// cacuDlg.cpp : implementation file // #include "stdafx.h" #include "cacu.h" #include "cacuDlg.h" #include "math.h" #include "cstring" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg)

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

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计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

MFC课程设计报告—模拟计算器

计算机MFC课程设计报告 ——模拟计算器 姓名: 学号:02011227 联系电话: 指导教师: 东南大学机械工程学院 2012年10月14日

模拟计算器 摘要 摘要内容:以课本简单计算器为基础,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进行清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、^、.、pi、e八个按钮控件的消息映射及程序代码的添加和修改。从中学会了制作简单的基于对话框的小工具、掌握了常用控件的使用、明白了消息映射及消息处理、提高了VC++编程水平。 关键词:四则运算小数点计算器 Analog calculator Abstract Content of abstract: Simple calculator in textbooks as the foundation, first realized the addition, subtraction, multiplication, division, and reciprocal and square root of the mixed operation, and can clear screen and reverse operation, and then to improve the book failed to realize the multiplication, division operation of continuous operation, and finally to be designed and completed the eight button control news mapping and program code to add and modify. Learnt how to make simple dialog-based small tools, mastered the use of commonly used controls, see news mapping and information processing, improve the level of programming.

MFC计算器程序报告

C++课程设计实验报告 学号姓名 院系专业

一、课题名称 简易的计算器设计。 二、问题陈述 编写一个计算器程序,能够进行四则运算、取模等运算 要求: 1、个人完成; 2、运用对话框编写,界面上只能有一个输出框,数据通过按钮输入到程序,并显 示在输出框中;当按下运算符后再输入数据,输出框中应显示新数据;运算结果也显示在输出框中。 3、四则运算、取模运算是最低要求,程序能正确执行; 4、界面设计美观、合理; 5、独立完成; 三、设计目标和设计任务 编写一个计算器程序,能够进行四则运算、取模、乘方、立方,并且给计算器程序添加背景。 四、解题算法思想 1.创建一个基于对话框的项目 2. 给对话框加入相应的操作按钮 3. 给按钮加上代码,设置属性 4. 为实现四则运算、取模等操作添加必要函数 五、程序算法过程 ①选择File→New菜单命令,选择Project选项卡,并选择MFC AppWizard(exe), name 命名为calculator;选择应用程序基于对话框,即Dialog based。多次单击next,最后单击Finish后,系统弹出一对话框,如下图:

②使用按钮控件、文本编辑框控件和组控件,将他们加入到对话框中,并通过更改按钮控件的属性中的标题部分。选中所有按钮,在属性中的Extended Style中选中Modal frame,使其达到下图效果:(注意,在布局按钮时,为了使按钮总体整齐美观,可以先创建一行或一列按钮,使他们保持整齐后,按住Ctrl键,选中这一行或一列按钮,再移动鼠标,即可生成另一行或一列按钮;也可以通过Layout菜单中的指令对其进行布局) ③鼠标右击按钮控件,选择属性,即可对其ID进行更改,各ID与标题内容对应如下: ID 标题ID 标题IDC_BUTTON0 0 IDC_BUTTONCLS 清零 IDC_BUTTON1 1 IDC_ADD + IDC_BUTTON2 2 IDC_PLUS -

用MFC编写的计算器程序源代码

// JiSuanQiDlg.cpp : 实害?现?文?件t // #include"stdafx.h" #include"JiSuanQi.h" #include"JiSuanQiDlg.h" #include"afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用?于 ?应畖用?程ì序?“°关?于 ?”±菜?单蹋?项?的? CAboutDlg 对?话°框? class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对?话°框?数簓据Y enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支§持? // 实害?现? protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()

// CJiSuanQiDlg 对?话°框? CJiSuanQiDlg::CJiSuanQiDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CJiSuanQiDlg::IDD, pParent) , m_num(0) , m_1(0) , m_2(_T("")) , m_two(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CJiSuanQiDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_num); DDX_Text(pDX, IDC_EDIT2, m_1); DDX_Text(pDX, IDC_EDIT3, m_2); DDX_Text(pDX, IDC_EDIT4, m_two); } BEGIN_MESSAGE_MAP(CJiSuanQiDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, &CJiSuanQiDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON1, &CJiSuanQiDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON3, &CJiSuanQiDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON4, &CJiSuanQiDlg::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON5, &CJiSuanQiDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON6, &CJiSuanQiDlg::OnBnClickedButton6) ON_BN_CLICKED(IDC_BUTTON7, &CJiSuanQiDlg::OnBnClickedButton7) ON_BN_CLICKED(IDC_BUTTON8, &CJiSuanQiDlg::OnBnClickedButton8) ON_BN_CLICKED(IDC_BUTTON9, &CJiSuanQiDlg::OnBnClickedButton9) ON_BN_CLICKED(IDC_BUTTON10, &CJiSuanQiDlg::OnBnClickedButton10) ON_BN_CLICKED(IDC_BUTTON11, &CJiSuanQiDlg::OnBnClickedButton11) ON_BN_CLICKED(IDC_BUTTON13, &CJiSuanQiDlg::OnBnClickedButton13) ON_BN_CLICKED(IDC_BUTTON14, &CJiSuanQiDlg::OnBnClickedButton14) ON_BN_CLICKED(IDC_BUTTON15, &CJiSuanQiDlg::OnBnClickedButton15) ON_BN_CLICKED(IDC_BUTTON16, &CJiSuanQiDlg::OnBnClickedButton16) ON_BN_CLICKED(IDC_BUTTON12, &CJiSuanQiDlg::OnBnClickedButton12)

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

MFC简单计算器设计正文

实用计算器程序1.基本功能描述 计算器是人们日常生活中非常实用的计算工具。预期设计目标与实际计算器为标准,Windows10系统提供的计算器为范例进行设计。 实用计算器要实现单目运算和双目运算。单目运算主要包括阶乘、正弦、余弦; 双目运算主要包括加、减、乘、除、乘幂等。计算器要能够对输入的各种数据进行处理,包括小数、整数、负数等数据进行操作。实际过程中要能够对不同的数据灵活判 断执行。同时要能够对不满足运算符的操作数,提示出错信息以方便用户进行处理。 用户的修改包括清屏和退格。程序设计的重点和难点在于:第一,能够对于不同的操 作数和操作符进行连续运算,运算过程中要有优先级的判断,根据优先级执行不同的 运算顺序;第二,能够用一个编辑框实现运算表达式的显示和结果的输出。 编程环境采用VisualStudio2017提供的MFC建立对话框应用程序,设计界面要简 单大方,并提供程序所有功能的接口。 2.设计思路 表1操作符优先级设计 优先级操作符 1 阶乘、正弦、余弦 2 乘幂 3 乘、除 4 加、减 对对话框编辑框关联一个变量从中读取数据,按下数字键时对数据数组num[]进行更新,其中num[0]表示的是当前已经存储变量的个数。由于算法设计为四层优先级, 且单目运算的优先级最高。当按下相应单目运算符,首先将当前数据数组的最后一个 存储(防止按下Backspace退格发生错误),并将此位数据执行运算后重新赋值。但按下双目运算符相应按键后,将计数num[0]++,同时将运算符的类型和位置记录。当按下等于之前,这样就将一个单目双目混合的运算表达式转化为双目运算。如果没有按 下等号键,则继续执行循环。在按下等号按钮之后,按照先乘幂、再乘除、后加减的 运算顺序执行运算,将最后结果保存并显示。(在实际的计算器中,执行完运算之后,按下运算符的操作键,最终结果将按照左操作数的形式出现,故需要保存变量。)如果用户没有结束程序,在运行初始化程序,进行下一次运算,否则直接退出。 图1程序流程图 3.软件设计 设计步骤 1)创建基于对话框的程序 利用AppWizard建立应用程序框架,创建一个基于对话框的MFC工程,命名为“fengwanjincalculator”,如图2所示。在图3显示的应用程序类型中选择基于对话框。创建成功后,系统自动生成相应程序文件。 图2创建MFC工程图 图3应用程序类型选择图

C++简单计算器课程设计报告

武汉理工大学《专业课程设计2》课程设计说明书 目录 1 基本功能描述 (1) 2 设计思路 (1) 3 软件设计 (4) 3.1 设计步骤 (4) 4 结论与心得体会 (12) 7 附:设计中的关键源代码 (14) 7.2 测试结果 (15)

简单计算器 1 基本功能描述 简单计算器包括双目运算和单目运算功能。双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,阶乘,对数,开方,倒数等运算。可对输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。出现错误会给出相应提示,同时包含清除,退格,退出功能以及有与所有按钮相对应的菜单项。 2 设计思路 如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开始时m_num为零。按下数字按钮后,判断m_num的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。 回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_num存入num2,按下输入第二个操作数并算出结果。若按下的是单目运算符,则直接对其处理得出结果。若按下清零,则m_num等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。算出后把结果保存至num2。若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。

输入数据子函数 N 图1 输入数据子函数流程图

图2 简单计算器总流程图

3 软件设计 3.1 设计步骤 打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名09107xuzhujie及其所在位置,点击确定,如图3所示。 图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。

MFC计算器实验报告

实验报告一——计算器 一实验名称 简易计算器 二实验目的 在Visual C++.EXE开发环境中,通过编写计算器程序,掌握创建对话框的方法,并向其中添加控件,并设置属性,使之满足程序的要求。 三编程思路 计算器要实现各种运算,在编写中主要分为两大块的编写,一是对1、2、3等数字按钮的响应函数编写,二是对加减乘除等运算符按钮的响应函数的编写。 给Dlg添加变量int m_operator; //运算符 double m_result; //结果(含中间变量) 另外添加编辑框的变量m_res 1.对数字按钮的响应函数的编写 1)由于每个按钮的响应函数相差不大,故用一个函数将其封装 在每次输入时要先判断数据开头是否为0 void 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 here UpdateData(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里,故此程序可以实现连续运算。 代码为 void CMy0710210202CalculateDlg::Result() { UpdateData(TRUE);

相关文档
相关文档 最新文档