C++计算器的设计1.docx

上传人:b****5 文档编号:4043018 上传时间:2022-11-27 格式:DOCX 页数:29 大小:207.27KB
下载 相关 举报
C++计算器的设计1.docx_第1页
第1页 / 共29页
C++计算器的设计1.docx_第2页
第2页 / 共29页
C++计算器的设计1.docx_第3页
第3页 / 共29页
C++计算器的设计1.docx_第4页
第4页 / 共29页
C++计算器的设计1.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

C++计算器的设计1.docx

《C++计算器的设计1.docx》由会员分享,可在线阅读,更多相关《C++计算器的设计1.docx(29页珍藏版)》请在冰豆网上搜索。

C++计算器的设计1.docx

C++计算器的设计1

 

C++课程设计报告

(2009--2010年度第2学期)

计算器的设计

专业

计算机科学与技术(软件开发)

学生姓名

班级

学号

指导教师

王榕

完成日期

2010年6月21日

目录

1概述1

1.1课程设计目的1

1.2课程设计内容1

2系统需求分析1

2.1系统目标1

2.2主体功能1

2.3开发环境1

3系统概要设计2

3.1系统流程图2

3.2系统功能划分2

4系统详细设计3

4.1设计步骤3

4.2界面设计5

5测试7

5.1测试方案7

5.2测试结果7

6小结8

参考文献10

附录11

附录1源程序清单11

计算器的设计

1概述

1.1课程设计目的

1、巩固并加深学生对C++语言程序设计知识的理解;

2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;

3、进一步掌握和应用VC++6.0集成开发环境;

4、提高运用C++语言解决实际问题的能力;

5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的MIS系统;

6、掌握书写程序设计开发文档的能力(书写课程设计实验报告)。

1.2课程设计内容

课题名称:

计算器的实现

说明:

实现一个计算器。

要求:

1)用“计算器”的标准视图执行简单的计算。

2)用其科学型视图执行高级的科学计算。

2系统需求分析

2.1系统目标

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

要计算功能有以下几个方面:

加法,减法,乘法,除法,求幂,求模,求平方根,求Sin,求Cos。

2.2主体功能

1、十进制数的加、减、乘、除、乘方、取模等简单计算。

2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算。

3、以角度、弧度两种方式实现上述部分函数。

2.3开发环境

Windows操作系统,VC++6.0,OFFICEWORD

3系统概要设计

3.1系统流程图

图3-1系统流程图

3.2系统功能划分

表3-1系统功能表

序号

文件名

主要功能

备注

1

+

加法求和

两个操作数

2

-

减法求差

两个操作数

3

*

乘法求积

两个操作数

4

/

除法求商

两个操作数

5

%

求模

两个操作数

6

^

求x的y次幂

两个操作数

7

S

求平方根

一个操作数

8

Sin

求正弦

一个操作数

9

Cos

求余弦

一个操作数

10

ln

求对数

一个操作数

11

n!

求阶乘

一个操作数

12

=

等于

13

C

寄存器清零

 

1)假设执行操作“+”,先输入一个数,再输入“+”,再输入另一个数,最后输入“+”。

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

2)执行操作“Sin”,先输入一个数,在输入“Sin”,整个功能“Sin”就执行完毕。

3)执行操作“n!

”,先输入一个数,再输入“n!

’,整个功能“n!

”执行完毕。

4系统详细设计

4.1设计步骤

打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名yeyahui及其所在位置,点击确定,如图4-1所示。

图4-1新建MFCAppWizard[exe]工程

将弹出MFCAppWizard-step1对话框,选择基本对话框,点击完成,如图4-2所示。

图4-2基本对话框

这样,MFCAppWizard就建立了一个基于对话窗口的程序框架,如图4-3所示。

图4-3新建的对话框

4.2界面设计

界面设计主要是创建控件,在图4-3所示的ResoureView选项卡中打开Dialog资源组,双击IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对话框。

开始摆放控件,包括编辑框和按钮的创建。

按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。

1)在图4-3中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。

在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图4-4所示,在该对话框中输入ID属性。

图4-4Edit属性对话框

2)在图4-2中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图4-5所示,在该对话框中输入控件的ID值和标题属性。

图4-5PushButton属性

按照上面的操作过程编辑其他按钮和编辑框等对象的属性。

 

表4-1各按钮和编辑框等对象的属性

对象

ID

标题或说明

编辑框

IDC_xianshi

结果显示

按钮

IDC_BUTTON0

0

按钮

IDC_BUTTON1

1

按钮

IDC_BUTTON2

2

按钮

IDC_BUTTON3

3

按钮

IDC_BUTTON4

4

按钮

IDC_BUTTON5

5

按钮

IDC_BUTTON6

6

按钮

IDC_BUTTON7

7

按钮

IDC_BUTTON8

8

按钮

IDC_BUTTON9

9

按钮

IDC_change

+/-

按钮

IDC_point

.

按钮

IDC_add

+

按钮

IDC_difference

-

按钮

IDC_multiply

*

按钮

IDC_devide

/

按钮

IDC_sqrt

sqrt

按钮

IDC_daoshu

1/x

按钮

IDC_jiecheng

n!

按钮

IDC_ln

ln

按钮

IDC_sin

sin

按钮

IDC_cos

cos

按钮

IDC_pow

x^y

按钮

IDC_Onequal

=

完成后界面如图4-6所示。

图4-6设计界面

加入标准型和科学型按键:

图4-7加入标准型和科学型按键界面

标准型:

图4-8标准型界面

科学型:

图4-9科学型界面

5测试

5.1测试方案

先用标准型进行简单的四则运算:

+-*/,测试完成后。

再用科学型进行稍复杂的运算:

sin,cos,tan,log,ln,n!

等,核对其计算结果的正确性。

5.2测试结果

经测试标准型计算器,进行简单的四则运算,结果均正确,如图5-1所示。

图5-1四则运算测试结果图

测试科学型计算器,进行sin,cos,tan,log,ln,n!

等运算,结果均正确,求sin30`(如图5-2所示)。

图5-2求sin30测试结果图

求5!

(如图5-3所示),测试完成。

图5-3求5!

测试结果图

6小结

通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。

看着劳动成果,很欣慰!

刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于程序方面的,可是这点小进展远远不够,这只是一个小小的开始。

下一步是上网查,找到了些与我题目相似的,那时我很高兴,可是那还不是我要的,于是又上网查到了些有关的函数等等,终于在我的努力下,完成了这个程序。

虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!

世上无难事,只怕有心人,的确如此。

做完这个课程设计,我的自信一下子提高了,我也会写程序了;尽管对于有些人这种程序会很简单,可对我说,已经很不容易了。

这次体验为以后的学习计算机的我增强了信心。

享受劳动成果的滋味实在很美妙啊!

参考文献

[1]谭浩强. C程序设计(第三版)(M).北京:

清华大学出版社,2005.

[2]谭浩强. C程序设计题解与上机指导(第三版)(M).北京:

清华大学出版社,2005.

[3]甄炜.C++语言和面向对象程序设计教程(M).北京:

机械工业出版社,2005.

附录

附录1源程序清单

//CalculatorDlg.cpp:

implementationfile

#include"stdafx.h"

#include"Calculator.h"

#include"CalculatorDlg.h"

#include"math.h"

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

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

//CCalculatorDlgdialog

CCalculatorDlg:

:

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

:

CDialog(CCalculatorDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CCalculatorDlg)

m_result=_T("");

m_isDegree=-1;

m_sentific=-1;

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

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

m_hAccel=LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDD));

DtoR=1;

m_coff=0.1;

m_bCoff=0;

m_errorState=ErrNone;

m_bOperandAvail=FALSE;

m_operator=OpNone;

}

voidCCalculatorDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CCalculatorDlg)

DDX_Text(pDX,IDC_DISPLAY,m_result);

DDX_Radio(pDX,IDC_DEGREE,m_isDegree);

DDX_Radio(pDX,IDC_SENTIFIC,m_sentific);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)

//{{AFX_MSG_MAP(CCalculatorDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_COMMAND_RANGE(IDC_0,IDC_9,OnOperandInput)

ON_BN_CLICKED(IDC_ADD,OnAdd)

ON_BN_CLICKED(IDC_MINUS,OnMinus)

ON_BN_CLICKED(IDC_DIVID,OnDivid)

ON_BN_CLICKED(IDC_MULTIPLY,OnMultiply)

ON_BN_CLICKED(IDC_EQUAL,OnEqual)

ON_BN_CLICKED(IDC_SQRT,OnSqrt)

ON_BN_CLICKED(IDC_SIGN,OnSign)

ON_BN_CLICKED(IDC_RECIPROCAL,OnReciprocal)

ON_BN_CLICKED(IDC_POINT,OnPoint)

ON_BN_CLICKED(IDC_CLEAR,OnClear)

ON_BN_CLICKED(IDC_LOG,OnLog)

ON_BN_CLICKED(IDC_LN,OnLn)

ON_BN_CLICKED(IDC_FACTORIAL,OnFactorial)

ON_BN_CLICKED(IDC_EXP,OnExp)

ON_BN_CLICKED(IDC_SENTIFIC,OnSentific)

ON_BN_CLICKED(IDC_SIN,OnSin)

ON_BN_CLICKED(IDC_SQUAR,OnSquar)

ON_BN_CLICKED(IDC_TAN,OnTan)

ON_BN_CLICKED(IDC_STANDARD,OnStandard)

ON_BN_CLICKED(IDC_DEGREE,OnDegree)

ON_BN_CLICKED(IDC_RAD,OnRad)

ON_BN_CLICKED(IDC_COS,OnCos)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

//CCalculatorDlgmessagehandlers

BOOLCCalculatorDlg:

:

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

GetWindowRect(rcSentific);

CWnd*m_pMark=GetDlgItem(IDC_DISPLAY);

ASSERT(m_pMark);

CRectrect;

m_pMark->GetWindowRect(rect);

rcStandard=rcSentific;

rcStandard.right=rect.right+5;

m_bIsExpand=0;

m_sentific=1;

OnStandard();

m_result="0.";

m_isDegree=1;

UpdateData(FALSE);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCCalculatorDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

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

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCCalculatorDlg:

:

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.

HCURSORCCalculatorDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCCalculatorDlg:

:

OnOperandInput(UINTnID)

{

ASSERT(nID>=IDC_0&&nID<=IDC_9);

if(m_errorState!

=ErrNone)

return;

if(m_func!

=FuncNone)

{

m_func=FuncNone;

Calculate();

}

if(!

m_bOperandAvail)

m_operand=0;

if(!

m_bCoff)

m_operand=m_operand*10+(nID-IDC_0);

else

{

m_operand=m_operand+(nID-IDC_0)*m_coff;

m_coff*=0.1;

}

m_bOperandAvail=TRUE;

UpdateDisplay();

}

voidCCalculatorDlg:

:

Calculate()

{

if(m_errorState!

=ErrNone)

return;

if(m_bOperandAvail)

{

if(m_operator==OpNone)

m_accum=m_operand;

elseif(m_operator==OpMultiply)

m_accum*=m_operand;

elseif(m_operator==OpDivide)

{

if(m_operand==0)

m_errorState=ErrDivideByZero;

else

m_accum/=m_operand;

}

elseif(m_operator==OpAdd)

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

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1