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个功能,每个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。

c语言实验报告计算器

c语言实验报告计算器

c语言实验报告计算器C 语言实验报告计算器一、实验目的本次 C 语言实验的主要目的是通过编写程序实现一个简单的计算器功能,加深对 C 语言基本语法、数据类型、控制结构和函数的理解和运用,提高编程能力和解决实际问题的能力。

二、实验要求1、实现基本的四则运算(加、减、乘、除)功能。

2、能够处理用户输入的合法表达式,并输出计算结果。

3、具备错误处理能力,如除数为 0 、输入不合法等情况。

三、实验环境本次实验使用的编程环境是 Visual Studio Code,编译器为 GCC。

四、算法设计与思路(一)整体思路首先,需要从用户那里获取输入的表达式。

然后,对表达式进行解析和计算。

在计算过程中,需要根据运算符的优先级进行相应的运算。

为了实现这个过程,可以使用栈来存储运算符和操作数。

(二)具体算法1、定义一个栈来存储运算符,另一个栈来存储操作数。

2、逐字符读取输入的表达式。

如果是数字字符,则将其转换为数字并压入操作数栈。

如果是运算符,则根据运算符的优先级进行处理。

如果当前运算符的优先级高于栈顶运算符的优先级,则将其压入运算符栈。

否则,从操作数栈中弹出两个操作数,从运算符栈中弹出一个运算符,进行相应的运算,并将结果压入操作数栈。

3、当表达式读取完毕后,依次从运算符栈和操作数栈中弹出元素进行计算,直到运算符栈为空,此时操作数栈中的唯一元素即为表达式的计算结果。

五、代码实现```cinclude <stdioh>include <stdlibh>include <ctypeh>//定义栈的最大容量define MAX_SIZE 100//定义操作符栈typedef struct {char itemsMAX_SIZE;int top;} OperatorStack;//定义操作数栈typedef struct {double itemsMAX_SIZE;int top;} OperandStack;//初始化操作符栈void initOperatorStack(OperatorStack stack) {stack>top =-1;}//初始化操作数栈void initOperandStack(OperandStack stack) {stack>top =-1;}//判断操作符栈是否为空int isOperatorStackEmpty(OperatorStack stack) {return stack>top ==-1;}//判断操作数栈是否为空int isOperandStackEmpty(OperandStack stack) {return stack>top ==-1;}//操作符入栈void pushOperator(OperatorStack stack, char op) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = op;} else {printf("Operator stack overflow!\n");exit(1);}}//操作数入栈void pushOperand(OperandStack stack, double num) {if (stack>top < MAX_SIZE 1) {stack>items++stack>top = num;} else {printf("Operand stack overflow!\n");exit(1);}}//操作符出栈char popOperator(OperatorStack stack) {if (!isOperatorStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operator stack underflow!\n");exit(1);}}//操作数出栈double popOperand(OperandStack stack) {if (!isOperandStackEmpty(stack)){return stack>itemsstack>top;} else {printf("Operand stack underflow!\n");exit(1);}}//获取操作符的优先级int getPriority(char op) {switch (op) {case '+':case '':return 1;case '':case '/':return 2;default:return -1;}}//计算表达式double calculate(char expression) {OperatorStack opStack;OperandStack numStack; initOperatorStack(&opStack);initOperandStack(&numStack);int i = 0;while (expressioni!='\0'){if (isdigit(expressioni)){double num = 0;while (isdigit(expressioni)){num = num 10 +(expressioni '0');i++;}if (expressioni ==''){double fraction = 01;i++;while (isdigit(expressioni)){num +=(expressioni '0') fraction; fraction /= 10;i++;}}pushOperand(&numStack, num);} else if (expressioni =='('){pushOperator(&opStack, expressioni);i++;} else if (expressioni ==')'){while (opStackitemsopStacktop!='('){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}popOperator(&opStack);i++;} else {while (!isOperatorStackEmpty(&opStack) &&getPriority(opStackitemsopStacktop) >= getPriority(expressioni)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}pushOperator(&opStack, expressioni);i++;}}while (!isOperatorStackEmpty(&opStack)){double num2 = popOperand(&numStack);double num1 = popOperand(&numStack);char op = popOperator(&opStack);if (op =='+'){pushOperand(&numStack, num1 + num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op ==''){pushOperand(&numStack, num1 num2);} else if (op =='/'){if (num2 == 0) {printf("Division by zero!\n");exit(1);}pushOperand(&numStack, num1 / num2);}}return popOperand(&numStack);}int main(){char expression100;printf("Enter an expression: ");scanf("%s", expression);double result = calculate(expression);printf("Result: %f\n", result);return 0;}```六、实验结果与分析(一)测试用例及结果以下是一些测试用例及其对应的结果:1、输入:"2 + 3",输出:50000002、输入:"5 2",输出:30000003、输入:"3 4",输出:120000004、输入:"6 / 2",输出:30000005、输入:"2 + 3 4",输出:140000006、输入:"(2 + 3) 4",输出:200000007、输入:"5 / 0",输出:Division by zero!(二)结果分析从测试结果来看,程序能够正确计算基本的四则运算表达式,包括有括号的情况。

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

计算机学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:基于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为数字类,+,-,*,/,=为符号类。

基于vc++mfc的科学计算器程序实验报告

基于vc++mfc的科学计算器程序实验报告

实验报告课程名称:windows软件开发实习实验项目:科学计算器工业大学实验报告(适用计算机程序设计类)专业班级:软件1006 学号:101201622 :鑫可实验名称:附件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、基本要求:设计的系统界面要美观大方,操作合理,有必要的提示。

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的值。

计算机c语言实训报告(精选5篇)

计算机c语言实训报告(精选5篇)

计算机c语言实训报告(精选5篇)计算机c语言实训报告篇1一、课题名称:简单计算器设计一个简单的程序来模拟计算器的功能。

二、设计目的:1、通过理论知识与实际需求相结合,编辑解决一些日常中的实际问题,培养初步的独立分析和设计能力。

2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范;3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法;4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

三、设计任务:1、通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、_、等运算符号),然后将其信息存入文件中。

输入一个算术计算式,就在屏幕上显示结果。

2、输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;四、设计要求:1、用C语言实现程序设计并进行调试;2、画出查询模块的流程图;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机互交)。

5、完成设计(A4)。

五、代码设计:#include "stdio.h" main { float x,y;char operator;printf("x,yun suan fu ,y: "); scanf("%f%c%f",&x,&operator,&y); switch(operator){case '+': printf("%.2f+%.2f=%.2f",x,y,x+y); break; case '-':printf("%.2f-%.2f=%.2f",x,y,x-y); break; case '_':printf("%.2f_%.2f=%.2f",x,y,x_y); break; case '/': if(y==0) printf("chushushilingwuyiyi"); elseprintf("%.2f/%.2f=%.2f",x,y,x/y); break;default: printf("yunsunfuwuxiao"); } }?七、设计总结:学习C程序这门课一个学期了,这是我们学的第一门专业课,所以作为我这个计算机系的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个学期的学习,使我初步掌握了一些关于这门课的知识这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。

程序设计实践 计算器程序实验报告

程序设计实践 计算器程序实验报告

程序设计实践设计报告课题名称:简易计算器设计与实现学生姓名:班级:班内序号:学号:日期:1.课题概述1.1课题目标和主要内容本案例以编写基于MFC的简易计算器软件为例,通过学习MFC事件驱动机制、MFC界面设计、MFC控件使用,并掌握MFC应用程序的设计方法,独立完成一个MFC的一个MFC的应用程序。

本案例的重点是学习如何使用MFC基本控件和事件驱动机制完成一个Windows下交互式应用软件。

本次实验所用的开发平台为Visual Studio 2008。

1.2系统的主要功能基本功能单击数字键,显示当前数值单击“+”、“-”、“*”、“/”建进行运算单击“=”,显示运算结果单击“C”,清楚已有结果进行连续四则运算扩展功能进行浮点运算进行平方、绝对值、倒数运算进行三角函数运算2. 系统设计2.1 系统总体框架2.2 系统详细设计[1] 模块划分图及描述(1)对话框:此模块实现的是与用户的交互,本案例使用了两类控件:编辑框和按钮。

(2)事件驱动函数:例如:void CdckcalculatorDlg::OnBnClickedBtn1(){// TODO: 在此添加控件通知处理程序代码ClickNum("1");}此模块处理的是程序如何响应鼠标的单击,主要由消息映射和消息处理函数两部组成。

(3)运算函数:例如:void CdckCalculatorDlg::onButtonN(int n){if( m_coff == 1.0)m_second = m_second*10 + n;//作为整数输入数字时骸else{ m_second = m_second + n*m_coff; //作为小数输入数字m_coff *= 0.1; }UpdateDisplay(m_second);//更新编辑框的数字显示}此模块是本实验的核心内容,它控制着整个程序的逻辑功能,它所实现的主要是逻辑运算以及数据交换。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(numfirst!=0 && numsecond==0&&op=='+')
{
numsecond=m_Dis;
numfirst=numfirst+numsecond; //之前按的是加把两个数赋值到前一个数
m_Dis=numfirst;//赋值给屏幕
numsecond=0; //从新赋值为0,清空,不影响下一次判断
变量初始化:
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来存储。
c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96= ?。所以必须在点符号Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字,方便下一次运算,功能近似于点=,所以把=也划分到符号类。
d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果,加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和整数。
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)
图2 “1”控件设置
对“+、-、*、\”控件设定相应的ID和其他属性:
图2 “+”控件设置
对其它控件设定相应的ID和其他属性:
图3 其它控件设置
主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
{
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)
3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色
例如:输入数字1 时,在计算器图形上的1键变为红色。
4. 屏幕、图形颜色、形状自定
3 总体设计
3.1 总体框架
图1 系统框架
3.2 系统功能说明
在VC++6.0中绘制计算器界面,各控件的设置
对0~9控件设定相应的ID和其他属性:
{
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
voidCCalcDlg::OnAdd()
{//根据numfirst和numsecond和op的值分为5种状态。
}
“Backspace”按钮的处理
4.2.3
因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,可以通过调用一个共同的函数OnCal(double num)来简化源代码长度,增加模块性。
voidCCalcDlg::OnCal(doublenum)
{//分三种状态来处理
if(numfirst!=0 && numsecond!=0)
计算机与信息工程学院
《程序设计基础》课程设计报告
题目名称:60.编写一个能实现简单功能的计算器
学生姓名:刘沛东
学生学号:2011508154
专业班级:电子信息工程(1)班
指导教师:高攀
1 课程设计的题目
编写一个能实现简单功能的计算器
2 题目要求
1. 有一个计算器图形。
2. 能实现加、减、乘、除及乘方的运算。
UpdateData(FALSE);
m_Dis=0; //屏幕的值同时清空
}
if(numfirst!=0 && numsecond==0&&op=='-')
{
numsecond=m_Dis;
numfirst=numfirst-numsecond;
m_Dis=numfirst;
numsecond=0;
4
OnNum4
IDC_NUM5
5
OnNum5
IDC_NUM6
6
OnNum6
IDC_NUM7
7
OnNum7
IDC_NUM8
8
OnNum8
IDC_NUM9
9
OnNum9
IDC_NEG
+/-
OnNeg
IDC_PT
.
OnPt
IDC_DIV
/
OnDiv
IDC_MUL
*
OnMul
IDC_MIN
-
OnMin
IDC_ADD
b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是numfirst==0 && numsecond==0也就是程序刚开始运行还没有开始录入数字的状态。二种是numfirst!=0 && numsecond==0也就是第一个数字已经录入,符号也已经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0 &&numsecond!=0,表示可以通过op来把两数合并为一个数。
{ //该状态为程序启动还没有开始录入输入的状态
numfirst=m_Dis; //屏幕的值赋值到numfirst
UpdateData(FALSE);
m_Dis=0;
}
op='+'; //最后记录最后一个操作是+
poz=1;//小数点位置归位
point_flag=FALSE;//默认小数点标志为整数,也就是0,也就是FALSE
{
if(point_flag==TRUE)
{
poz*=0.1;
m_Dis=m_Dis+poz*num;
UpdateData(false);
}
else//判定为整数
{
m_Dis=m_Dis*10+num;//递增
UpdateDf(numfirst==0 && numsecond==0)
}
“+/-“按钮的处理函数
voidCCalcDlg::OnNeg()
{
m_Dis=-m_Dis;//换个符号,其他都一样
UpdateData(FALSE);
poz=1;
point_flag=FALSE;
}
‘.’按钮的处理函数
voidCCalcDlg::OnPt()
{
point_flag=TRUE; //把标志位改为“小数点”状态
4 程序详细设计
4.1系统主调模块
图5 程序流程图
4.2各模块详细设
4.2.1
ID
CAPTION
Message Handler
IDD_CALC_DIALOG
简易计算器
N/A
IDC_NUM0
0
OnNum0
IDC_NUM1
1
OnNum1
IDC_NUM2
2
OnNum2
IDC_NUM3
3
OnNum3
IDC_NUM4
+
OnAdd
IDC_BACKSPACE
BACK
OnBackspace
IDC_CE
CE
OnCe
IDC_CLEAR
C
OnClear
IDC_EQU
=
OnEqu
IDC_DIS
N/A
N/A
OnCal(double num)
变量定义:
double poz;//保存小数点的位置,初始化为1,表示poz-1个小数点。
doublem_Dis; //Edit控件上需要显示的数字
BOOL point_flag; //小数点表示位,判定是否是小数,是小数为1,不是小数为0。
相关文档
最新文档