MFC实验报告

时间:2024.4.20

中南大学

本科生课程设计(实践)任务书、设计报告

(C++程序设计)

计算机基础教学实验中心

20##年7月4日


一元二次方程求解系统

摘要: MFC,全称为 Microsoft Foundation Classes,是一个微软公司提供的类库,以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。

关键词 :MFC,一元二次方程求解

1. 一元二次方程求解系统开发设计思想

众所周知,一元二次方程作为一种基本方程,大量出现于物理数学等领域,其求根公式为,若直接根据公式计算的话,计算量较大,不方便。因此在这次c++实践中,我选择用MFC做了一个一元二次方程求解系统,只需在对应的位置中输入一元二次方程的系数,即可求出方程的解,降低了运算的麻烦,为广大学生及相应学科工作者提供方便。

2. 一元二次方程系统功能及系统设计介绍

一元二次方程   双击打开系统,在对应位置输入a,b,c的值,点击计算,即可得到方程的解,再点击重置,则所有值归零。

操作步骤

1. 建立对话框窗口,通过控件面板设计合适的对话框样式;

2. 为编辑框(Edit box)添加成员变量;

3. 为命令按钮添加函数,编辑代码。

应注意的是,根据求根公式,若0,则方程有两个实根;若0,则方程无解;若a=0,则方程变为为一元一次方程,此时不能通过求根公式计算方程结果;因此在编辑代码时要考虑到这三种情况,这样才能避免运行时出现错误。

在我设计的一元二次方程求解系统中,若0,点击计算会正常输出两实根;若0,点击计算后,会显示x1=x2=999999999999,以此表示方程无解;若a=0,点击计算,则会把一元二次方程当做一元一次方程进行计算,从而得到两个相等的跟。

3. 一元二次方程求解系统开发的体会

这次的课程设计在我看来是一次非常珍贵的机会,这可以让我们把所学的理论与实际相结合,让我们通过对一个程序的设计,走出纯理论的学习,在实际操作中发现并解决问题,收获课堂上学不到的东西。

就个人而言,我体会较深的一点是自己看书学习的过程。MFC对我们而言是一个新东西,要想用它做出令人满意的系统,就得自己看书摸索,或从网上及其他各种途径获得信息和知识。这种理论与实际相结合的模式,锻炼了我综合运用所学的基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平。而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼。

为期三周不到的MFC课程设计就要画上一个句号了,从一开始的一筹莫展到现在成功做出东西,在这短短的三周中,我获得了知识,学会了坚持,这四周不仅仅是交出了一份作业,还对自己有了新的认识,这是一次难得的机遇与经历


第二篇:MFC选修 计算器实验报告


六、源程序清单、测试数据、结果

主要代码:

//1-9与0的消息响应函数相同,如下:

void CCaculatorDlg::OnButton0()

{

// TODO: Add your control notification handler code here

m_StrBegin =  m_StrBegin+"0";

if (!m_IsCheckPoint)        m_DspEdit.OnDisplay(m_StrBegin+".");

else          m_DspEdit.OnDisplay(m_StrBegin);

}

//清除显示框中内容

void CCaculatorDlg::OnButtonClr()

{

// TODO: Add your control notification handler code here

m_IsCheckPoint = false;      m_StrBegin = "";

m_begin = 0.0;     m_end = 0.0;

m_bit = 0;    m_DspEdit.OnDisplay("0."); 

}

//实现“+”运算,“-、*、/、平方、开方”等运算的消息函数大体相同

void CCaculatorDlg::OnButtonPlus()

{

// TODO: Add your control notification handler code here

Result();      m_bit = 1;

}

//核心函数:实现按钮到显示功能的中间计算过程

Void CCaculatorDlg::Result()//用来处理按下符号键时的函数,是计算的核心函数

{

 m_IsCheckPoint = false;     m_begin = atof(m_StrBegin);//将字符串转化为浮点数,确保精度

switch(m_bit)

{       


case 1:   //处理+号

          m_end += m_begin;

          break;

     case 2:  //处理-号

          m_end -= m_begin;

          break;

     case 3:  //处理*号,即乘法

          m_end *= m_begin;

          break;

     case 4:  //处理/号,即除法

          if (m_begin==0)

          {

               m_DspEdit.OnDisplay("除数不能为零!");

               return;

          }

          m_end /= m_begin;

          break;

     case 5:  //处理sqrt号,即开方

          if (m_end<0)

          {

               m_DspEdit.OnDisplay("函数输入无效!");

               return;

          }

          m_end = sqrt(m_end);

          break;

     case 6:  //处理1/x号,即求倒数

          m_end = 1/m_end;

     case 7:  //处理=号

          break;

     case 8:  //处理sin号

          m_end = sin(m_end);

          break;

     case 9:  //处理cos号

          m_end = cos(m_end);

          break;

     case 10: //处理tan号

          m_end = tan(m_end);

          break;

     case 11: //处理x^2号,即平方

          m_end = m_end*m_end;

          break;

     case 12: //处理x^3号,即立方

          m_end = m_end*m_end*m_end;

          break;

     case 13: //处理x^y号,即求x的y次方

          m_end = pow(m_end,m_begin);

          break;

     case 14: //处理Exp号,即求e的x次方

          m_end = exp(m_end);

          break;

     case 15: //处理ln号

          if (m_end<=0)

          {

               m_DspEdit.OnDisplay("函数输入无效!");

               return;

          }

          m_end = log(m_end);

          break;

     case 16: //处理log号

          if (m_end<=0)

          {

               m_DspEdit.OnDisplay("函数输入无效!");

               return;

          }

          m_end = log10(m_end);

          break;

     default: //

          m_end = m_begin;

          break;


}

m_begin = 0.0;     m_bit = 0;    m_StrBegin = "";       

int i = sprintf(m_buffer,"%10.12f",m_end);//将结果转换为字符串  

TrimZero(m_buffer,i);//去掉字符串尾部多余的零

m_DspEdit.OnDisplay(m_buffer);

}

//实现简单和扩展计算器的切换功能

void CCaculatorDlg::OnExtend()

{//功能拓展按钮

// TODO: Add your command handler code here

CRect rect;

if(!m_IsExtend)

{        SetWindowPos(&wndTop,0,0,oldrect.Width(),oldrect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_DspEdit.GetWindowRect(&rect);       m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,361,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_DspStatic.GetWindowRect(&rect);

m_DspStatic.SetWindowPos(NULL,rect.left,rect.top,381,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_Menu ->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"标准");

     m_IsExtend = TRUE;

}

else

{        SetWindowPos(&wndTop,0,0,newrect.Width(),newrect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_DspEdit.GetWindowRect(&rect);

     m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,182,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_DspStatic.GetWindowRect(&rect);         m_DspStatic.SetWindowPos(NULL,rect.left,rect.top,202,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);

     m_Menu ->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"扩展");

     m_IsExtend = FALSE;

}

}

void CCaculatorDlg::OnButtonDot()

{//小数点的处理

// TODO: Add your control notification handler code here

if (!m_IsCheckPoint && m_StrBegin != "")

{

     m_StrBegin =  m_StrBegin+".";

     m_DspEdit.OnDisplay(m_StrBegin);

     m_IsCheckPoint = true;

}

}

测试结果:

标准界面:

拓展界面:

更多相关推荐:
c语言实验报告

C语言程序设计实验报告1实验目的1熟悉C语言编译器2掌握基本的C代码编写方法与风格3掌握基本的数据类型运算符与表达式的灵活运用4掌握顺序分支结构程序设计思想与代码编写方法实验内容1在D盘根目录创建以自己姓名拼音...

c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告(样板)

滁州学院机械与电子工程学院实验报告课程姓名专业20xx机械本科学号实验一工作平台一目的和要求1熟悉语言程序的支持运行环境了解所用计算机系统的软硬件配置和使用方法2初步了解运行一个语言程序的过程二实验环境硬件环境...

C语言实验报告样本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械110120xx010008学生姓名郭奎宇实验日期20xx年10月24日成绩指导教师一实...

C语言实验报告标准格式

暨南大学本科实验报告专用纸课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号8060151108实验项目类型综合性实验地点C301学生姓名苟长弘学号20xx051282学院信息...

C语言实验报告

实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运行简单的C程序初步了解C程序的特点2实验程序清单及运行结果...

c语言实验报告

实验报告1已知三角形的边为abc试设计程序输入三边的值并计算三角形的面积已知三角形的面积计算公式为Sabc2Areaasbsc截图为程序及其运行结果分析常错的地方就是容易后面使用到的字母忘记定义导致程序不认识不...

实验报告-C基本结构

西安理工大学实验报告第X页共Y页课程C言程序设计实验日期XXXX年XX月XX日专业班号班级组别机号交报告日期XXXX年XX月XX日姓名姓名学号学号报告退发订正重做同组者无教师审批签字实验报告格式一预习准备实验目...

第十九届华罗庚金杯少年数学邀请赛决赛试题 C

第十九届华罗庚金杯少年数学邀请赛决赛试题C一填空题每小题10份共80分1计算3229520312025223145答案1考点计算分数小数综合运输解析原式0250607509123312在右边的算式中每个汉字代表...

C15031课后测验100分

一单项选择题1总体来说对冲基金的卖空要求是A在特定限制内B每年C每半年D任意您的答案D题目分数10此题得分100批注2绝对回报用于衡量哪种基金的业绩表现A对冲基金B共同基金C对冲基金与共同基金D既不是对冲基金也...

康明斯C2250D5发电机组故障代码

第1页共14页第2页共14页第3页共14页第4页共14页第5页共14页第6页共14页第7页共14页第8页共14页第9页共14页第10页共14页第11页共14页第12页共14页第14页共14页

PANTONG 国际色卡 C面板

PANTONE国际色卡C面效果电子版yellowC黄色CPurpleC红紫CProcessYellowC四色黄CHexachromeYellowCHexachrome黄C100C106C113C120C1205...

c实验报告(41篇)