MFC计算器设计实验报告.docx
- 文档编号:1599516
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:18
- 大小:417.19KB
MFC计算器设计实验报告.docx
《MFC计算器设计实验报告.docx》由会员分享,可在线阅读,更多相关《MFC计算器设计实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 计算器 设计 实验 报告