MFC计算器设计实验报告.docx

上传人:b****2 文档编号:1599516 上传时间:2022-10-23 格式:DOCX 页数:18 大小:417.19KB
下载 相关 举报
MFC计算器设计实验报告.docx_第1页
第1页 / 共18页
MFC计算器设计实验报告.docx_第2页
第2页 / 共18页
MFC计算器设计实验报告.docx_第3页
第3页 / 共18页
MFC计算器设计实验报告.docx_第4页
第4页 / 共18页
MFC计算器设计实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

MFC计算器设计实验报告.docx

《MFC计算器设计实验报告.docx》由会员分享,可在线阅读,更多相关《MFC计算器设计实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

MFC计算器设计实验报告.docx

MFC计算器设计实验报告

计算机学院

 

课程设计报告

课程名称:

面向对象程序设计课程设计

课程设计题目:

基于Winform的多功能计算器的设计与实现

姓名:

专业:

软件工程

年级:

08软件

学号:

指导教师:

 

2010年12月20日

 

1.设计目的

利用C++语言,编写一个类似windowsXP系统的计算器,实现计算器的基本功能,从而利用这次的设计,达到更加了解C++语言,了解面向对象的设计方法,加深对面向对象设计过程的了解等目的。

2.设计要求

(1)利用面向对象的知识并参照WindowsXP系统附件下的“科学型计算器”设计开发一个多功能的计算器;

(2)不限制采用的开发平台和编程语言;

(3)要求用UML描述设计过程;

(4)要求用系统/程序运行时的截图描述实现的测试过程,系统的功能说明;

(5)用原代码(加注释)描述主要的功能实现过程及算法;

(6)提交纸质打印课程设计报告及项目工程原代码(所有人刻录在一张光碟中,两份,一份用以存档)。

3.设计方案

(1)计算器的用例图:

 

用户

 

用例名称:

四则运算。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

用户输入操作数一。

用户选择加、减、乘、除四则运算中的一种算法。

用户输入操作数二,计算出结果,作为下一次计算的操作数一。

后置条件:

显示计算结果。

用例名称:

三角函数。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

用户输入操作数一。

选择所要操作的三角函数,计算出结果。

所得的结果作为下一次计算的操作数一。

后置条件:

显示计算结果。

用例名称:

X^Y。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

用户输入操作数一。

选择X^Y功能。

用户输入操作数Y,计算X的Y次方,所得结果作为下一次操作的操作数一。

后置条件:

显示计算结果。

用例名称:

清零操作。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

把零赋值给操作数一。

后置条件:

显示计算结果。

用例名称:

角/弧度转换。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

用户进行选择,选择角度,则用角度制进行计算,选择弧度,则用弧度制进行计算。

后置条件:

显示计算结果。

用例名称:

等号功能。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

选择等号功能,对进行的操作把结果在IDC_EDIT1中显示出来。

后置条件:

显示计算结果。

主事件流:

对操作数一进行操作,调用log()函数,所得结果作为下一次计算的操作数一。

后置条件:

显示计算结果。

用例名称:

输出PI值。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

判断PI值是赋值给操作数一还是操作数二,判断后,进行赋值。

后置条件:

显示计算结果。

用例名称:

后退功能。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

选择后退功能,则可以将对操作数的赋值返回到上一个操作。

后置条件:

显示计算结果。

用例名称:

+/-功能。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

对操作数进行操作,是操作数的值乘以-1后赋值回给操作数。

后置条件:

显示计算结果。

用例名称:

1/X。

参与执行者:

用户。

前置条件:

计算器已开启。

主事件流:

对操作数一进行操作,是之为操作数一分之1,结果作为下一次操作的操作数一。

后置条件:

显示计算结果。

(2)计算器的类图:

 

(3)计算器的顺序图:

 

用户

1.输入操作数一

1.1选择操作方法

1.1.1操作后得到结果

将结果作为操作数一

请求操作数二

2.输入操作数二

2.1进行操作得到结果

将结果作为操作数一

 

计算器的顺序图

(4)计算器协作图

1.输入操作数一5.计算结果

用户

2.输入操作方法4.[否]请求操作数二

是否直接操作

3.[是]直接操作

是否直接操作

计算器的协作图

(5)计算器的状态图:

 

开启计算器进行操作

 

清零

关闭计算器

计算器的状态图

 

(6)计算器的活动图:

用户

 

请求操作数二直接操作

 

.计算器的活动图

(7)计算器系统框图:

 

计算器系统框图

4设计内容:

(1)创建工程:

在visualc++6.0中使用AppWizard的工程向导创建基于对话框的应用程序,工程名设置为calculator。

(2)设计用户界面

(1)界面中有一个编辑框空间和25个命令按钮,2个单选按钮,1个分组框,一个编辑框。

分别用于数字键,操作键,角弧度切换,联系,显示结果。

界面完成后如下效果。

(2)设置编辑框属性Style选项卡NUMBER(数字)Read-only(只读),Extend选项RightAlignedtext.

(3)为编辑框连接一个double型的value变量值m_result.

其他控件设置

(4)控件属性表

控件

ID

Type

Member

Caption

编辑框

IDC_EDIT1

double

m_result

单选按钮

IDC_RADIO1

Int

m_radio

角度

单选按钮

IDC_RADIO2

弧度

命令按钮

IDC_NUMBER1

1

命令按钮

IDC_NUMBER2

2

命令按钮

IDC_NUMBER3

3

命令按钮

IDC_NUMBER4

4

命令按钮

IDC_NUMBER5

5

命令按钮

IDC_NUMBER6

6

命令按钮

IDC_NUMBER7

7

命令按钮

IDC_NUMBER8

8

命令按钮

IDC_NUMBER9

9

命令按钮

IDC_NUMBER10

0

命令按钮

IDC_NUMBER11

+/-

命令按钮

IDC_NUMBER12

back

命令按钮

IDC_NUMBER13

/

命令按钮

IDC_NUMBER14

*

命令按钮

IDC_NUMBER15

+

命令按钮

IDC_NUMBER16

-

命令按钮

IDC_NUMBER17

C

命令按钮

IDC_NUMBER18

Sqrt

命令按钮

IDC_NUMBER19

1/x

命令按钮

IDC_NUMBER20

=

命令按钮

IDC_NUMBER21

sin

命令按钮

IDC_NUMBER22

cos

命令按钮

IDC_NUMBER23

tan

命令按钮

IDC_NUMBER24

PI

命令按钮

IDC_NUMBER25

X^y

(5)最后效果

(3)添加代码

1在对话框的头文件CalculatorDlg.h中添加头文件#include

2为CCalculatorDlg类中添加如下的数据成员和成员函数:

Doublenumber1,number2;

IntNumberState,OperationState;

Voidcal();

//number1,number2用于储存进行运算的数值

//NumberState赋值于number1number2.

//OperationState操作键

3为数字键和某些操作按钮手工添加消息映射:

在CalculatorDlg.h文件中的classCCalculatorDlg:

publicCDialog类的protected中添加如下代码:

afx_msgvoidOnNumberKey(UINTnID);//单机数字键

afx_msgvoidOnOperationKey(UINTnID);//单击操作键

在CalculatorDlg.cpp文件中的BEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)和END_MESSAGE_MAP()之间添加如下的代码:

ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)

ON_COMMAND_RANGE(IDC_NUMBER11,IDC_NUMBER20,OnOperationKey)

第一个表示单击数字键,第二个表示单击IDC_NUMBER11至IDC_NUMBER20的操作键。

同时完成其他控件消息映射,方法为双击控件

完成后如下:

为成员函数添加代码:

为成员函数OnNumberKey()添加代码:

voidCCalculatorDlg:

:

OnNumberKey(UINTnID)

{

intn=0;

switch(nID)

{

caseIDC_NUMBER1:

n=1;break;

caseIDC_NUMBER2:

n=2;break;

caseIDC_NUMBER3:

n=3;break;

caseIDC_NUMBER4:

n=4;break;

caseIDC_NUMBER5:

n=5;break;

caseIDC_NUMBER6:

n=6;break;

caseIDC_NUMBER7:

n=7;break;

caseIDC_NUMBER8:

n=8;break;

caseIDC_NUMBER9:

n=9;break;

caseIDC_NUMBER10:

n=0;break;

}

if(NumberState==1)

{

m_result=m_result*10+n;

number1=m_result;

UpdateData(FALSE);//更新编辑框中的值

}

else

{

m_result=m_result*10+n;

number2=m_result;

UpdateData(FALSE);

}

}

switch语句响应用户所按的数字键

NumberState==1表示把数值赋值给操作数一,按下操作键按钮,如果可以直接的到结果的操作,NumberState值不变,如果要连同操作数二进行操作,使NumberState==2,便可输入操作数二。

UpdateData(FALSE)用于更新编辑框中数据成员。

(2)为单选按钮voidCCalculatorDlg:

:

OnRadio1()和voidCalculatorDlg:

:

OnRadio2()添加代码:

voidCCalculatorDlg:

:

OnRadio1()

{

m_radio=0;

}

voidCCalculatorDlg:

:

OnRadio2()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_radio=1;

}

两个单选按钮用来表示角度状态和弧度状态,将两个单选按钮放入groupbox中再在IDC_RADIO1的属性中选上group属性,最后按表1中连接int类型的变量m_radio,连接变量后,在CCalculatorDlg.cpp文件中的CCalculatorDlg:

:

CCalculatorDlg(CW

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

当前位置:首页 > IT计算机 > 计算机软件及应用

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

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