软件基础课程设计报告C语言MFC计算器设计.docx

上传人:b****0 文档编号:9814688 上传时间:2023-05-21 格式:DOCX 页数:29 大小:167.55KB
下载 相关 举报
软件基础课程设计报告C语言MFC计算器设计.docx_第1页
第1页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第2页
第2页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第3页
第3页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第4页
第4页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第5页
第5页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第6页
第6页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第7页
第7页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第8页
第8页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第9页
第9页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第10页
第10页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第11页
第11页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第12页
第12页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第13页
第13页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第14页
第14页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第15页
第15页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第16页
第16页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第17页
第17页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第18页
第18页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第19页
第19页 / 共29页
软件基础课程设计报告C语言MFC计算器设计.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

软件基础课程设计报告C语言MFC计算器设计.docx

《软件基础课程设计报告C语言MFC计算器设计.docx》由会员分享,可在线阅读,更多相关《软件基础课程设计报告C语言MFC计算器设计.docx(29页珍藏版)》请在冰点文库上搜索。

软件基础课程设计报告C语言MFC计算器设计.docx

软件基础课程设计报告C语言MFC计算器设计

 

软件基础课程设计报告

 

 

一、需求分析

系统目标:

设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。

主体功能:

程序能实现:

加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。

另外还可以实现多种科学计算的功能,如:

三角函数的计算,弧度与角度间的转换,对数指数的计算等。

开发环境:

操作系统:

WindowsXP

编程环境:

Microsoft Visual C++ 6.0

二、功能说明

(1)包含的功能有:

加、减、乘、除运算,开方、求倒数、三角函数、弧度与角度间的转换、对数指数的计算等功能。

(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。

(3)给对话框添加菜单。

(4)计算功能基本上是用系统内部函数。

(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。

(6)“CE”按钮可以清除所有已输入的数据从头计算,“Back”按钮可以实现退位功能。

(7)能够显示时间、日期。

三、详细设计

(1)流程图

(2)编辑资源

(3)效果图

四、程序附录

计算器Dlg.cpp:

#include"stdafx.h"

#include"计算器.h"

#include"计算器Dlg.h"

#include"math.h"

#include"FirstDlg.h"

#include

#definePI3.14;

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CMyDlgdialog

CMyDlg:

:

CMyDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CMyDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CMyDlg)

m_result=0.0;

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCMyDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyDlg)

DDX_Control(pDX,IDC_EDIT1,m_EDIT);

DDX_Text(pDX,IDC_EDIT1,m_result);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CMyDlg,CDialog)

//{{AFX_MSG_MAP(CMyDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_NUM0,OnNum0)

ON_BN_CLICKED(IDC_NUM1,OnNum1)

ON_BN_CLICKED(IDC_NUM2,OnNum2)

ON_BN_CLICKED(IDC_NUM3,OnNum3)

ON_BN_CLICKED(IDC_NUM4,OnNum4)

ON_BN_CLICKED(IDC_NUM5,OnNum5)

ON_BN_CLICKED(IDC_NUM6,OnNum6)

ON_BN_CLICKED(IDC_NUM7,OnNum7)

ON_BN_CLICKED(IDC_NUM8,OnNum8)

ON_BN_CLICKED(IDC_NUM9,OnNum9)

ON_BN_CLICKED(IDC_DOT,OnDot)

ON_BN_CLICKED(IDC_CE,OnCe)

ON_BN_CLICKED(IDC_jia,Onjia)

ON_BN_CLICKED(IDC_jian,Onjian)

ON_BN_CLICKED(IDC_cheng,Oncheng)

ON_BN_CLICKED(IDC_chu,Onchu)

ON_BN_CLICKED(IDC_dengyu,Ondengyu)

ON_BN_CLICKED(IDC_daoshu,Ondaoshu)

ON_BN_CLICKED(IDC_zhengfu,Onzhengfu)

ON_BN_CLICKED(IDC_BACKSPACE,OnBackspace)

ON_BN_CLICKED(IDC_Ln,OnLn)

ON_BN_CLICKED(IDC_log,Onlog)

ON_BN_CLICKED(IDC_RADIO2,OnRadio2)

ON_BN_CLICKED(IDC_RADIO1,OnRadio1)

ON_BN_CLICKED(IDC_sqrt,Onsqrt)

ON_BN_CLICKED(IDC_sin,Onsin)

ON_BN_CLICKED(IDC_cos,Oncos)

ON_BN_CLICKED(IDC_tan,Ontan)

ON_BN_CLICKED(IDC_pingfang,Onpingfang)

ON_BN_CLICKED(IDC_lifang,Onlifang)

ON_BN_CLICKED(IDC_mi,Onmi)

ON_BN_CLICKED(IDC_Exp,OnExp)

ON_BN_CLICKED(IDC_10demi,On10demi)

ON_BN_CLICKED(IDC_jiecheng,Onjiecheng)

ON_COMMAND(ID_TIME,OnTime)

ON_COMMAND(ID_DATE,OnDate)

ON_COMMAND(ID_EXIT,OnExit)

ON_COMMAND(ID_HELP,OnHelp)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CMyDlgmessagehandlers

BOOLCMyDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);

UpdateData(FALSE);

quan2=1;

dotflag=0;

numflag=0;

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCMyDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCMyDlg:

:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

{

CDialog:

:

OnPaint();

}

}

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCMyDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCMyDlg:

:

OnNum0()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=0/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+0;

}

elsem_result=0;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum1()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=1/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+1;

}

elsem_result=1;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum2()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=2/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+2;

}

elsem_result=2;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum3()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=3/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+3;

}

elsem_result=3;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum4()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=4/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+4;

}

elsem_result=4;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum5()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=5/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+5;

}

elsem_result=5;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum6()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=6/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+6;

}

elsem_result=6;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum7()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=7/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+7;

}

elsem_result=7;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum8()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=8/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+8;

}

elsem_result=8;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnNum9()

{

UpdateData();

if(dotflag)

{

quan2*=10;

m_result+=9/(double)quan2;

}

else

{

if(numflag)

{

m_result=m_result*10+9;

}

elsem_result=9;

}

numflag=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnDot()

{

UpdateData();

dotflag=1;

m_result+=0.0;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnCe()

{

UpdateData();

m_EDIT.SetSel(0,-1);

m_EDIT.ReplaceSel("");

m_result=0;

num1=0;

num2=0;

numflag=0;

dotflag=0;

quan2=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

Onjia()

{

UpdateData();

num1=m_result;

cal='+';

numflag=0;

dotflag=0;

quan2=1;

}

voidCMyDlg:

:

Onjian()

{

UpdateData();

num1=m_result;

cal='-';

numflag=0;

dotflag=0;

quan2=1;

}

voidCMyDlg:

:

Oncheng()

{

UpdateData();

num1=m_result;

cal='*';

numflag=0;

dotflag=0;

quan2=1;

}

voidCMyDlg:

:

Onchu()

{

UpdateData();

num1=m_result;

cal='/';

numflag=0;

dotflag=0;

quan2=1;

}

voidCMyDlg:

:

Ondengyu()

{

UpdateData();

num2=m_result;

switch(cal)

{

case'+':

m_result=num1+num2;break;

case'-':

m_result=num1-num2;break;

case'*':

m_result=num1*num2;break;

case'/':

m_result=num1/num2;break;

case'x':

m_result=pow(num1,num2);break;

}

numflag=0;

dotflag=0;

quan2=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

Ondaoshu()

{

UpdateData();

m_result=1/m_result;

numflag=0;

dotflag=0;

quan2=1;

UpdateData(FALSE);

}

voidCMyDlg:

:

Onzhengfu()

{

UpdateData();

m_result=0-m_result;

UpdateData(FALSE);

}

voidCMyDlg:

:

OnBackspace()

{

UpdateData();

staticintdotquan=quan2;

longtemp;

if(dotflag&&numflag)

{

if(dotquan>=10)

{

temp=(long)(m_result*dotquan);

m_result=(double)(temp/10);

dotquan/=10;

m_result=m_result/dotquan;

}

}

else

{

//UpdateData();

if(numflag&&m_result)

{

m_result=(long)m_result/10;

}

}

UpdateData(FALSE);

}

voidCMyDlg:

:

OnLn()

{

UpdateData();

m_result=log(m_result);

numfla

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2