1、MFC计算器设计实验报告计算机学院课程设计报告课程名称:面向对象程序设计课程设计课程设计题目:基于Winform的多功能计算器的设计与实现姓 名:专 业:软件工程年 级:08软件学 号:指导教师:2010年 12 月 20 日1.设计目的利用C+语言,编写一个类似windows XP系统的计算器,实现计算器的基本功能,从而利用这次的设计,达到更加了解C+语言,了解面向对象的设计方法,加深对面向对象设计过程的了解等目的。2.设计要求(1)利用面向对象的知识并参照Windows XP系统附件下的“科学型计算器”设计开发一个多功能的计算器;(2)不限制采用的开发平台和编程语言;(3)要求用UML描述
2、设计过程;(4)要求用系统/程序运行时的截图描述实现的测试过程,系统的功能说明;(5)用原代码(加注释)描述主要的功能实现过程及算法;(6)提交纸质打印课程设计报告及项目工程原代码(所有人刻录在一张光碟中,两份,一份用以存档)。 3.设计方案(1)计算器的用例图: 用户用例名称:四则运算。参与执行者:用户。前置条件:计算器已开启。主事件流:用户输入操作数一。用户选择加、减、乘、除四则运算中的一种算法。用户输入操作数二,计算出结果,作为下一次计算的操作数一。后置条件:显示计算结果。用例名称:三角函数。参与执行者:用户。前置条件:计算器已开启。主事件流:用户输入操作数一。选择所要操作的三角函数,计
3、算出结果。所得的结果作为下一次计算的操作数一。后置条件:显示计算结果。用例名称:XY。参与执行者:用户。前置条件:计算器已开启。主事件流:用户输入操作数一。选择XY功能。用户输入操作数Y,计算X的Y次方,所得结果作为下一次操作的操作数一。后置条件:显示计算结果。用例名称:清零操作。参与执行者:用户。前置条件:计算器已开启。主事件流:把零赋值给操作数一。后置条件:显示计算结果。用例名称:角/弧度转换。参与执行者:用户。前置条件:计算器已开启。主事件流:用户进行选择,选择角度,则用角度制进行计算,选择弧度,则用弧度制进行计算。后置条件:显示计算结果。用例名称:等号功能。参与执行者:用户。前置条件:
4、计算器已开启。主事件流: 选择等号功能,对进行的操作把结果在IDC_EDIT1中显示出来。后置条件:显示计算结果。主事件流:对操作数一进行操作,调用log()函数,所得结果作为下一次计算的操作数一。后置条件:显示计算结果。用例名称:输出PI值。参与执行者:用户。前置条件:计算器已开启。主事件流:判断PI值是赋值给操作数一还是操作数二,判断后,进行赋值。后置条件:显示计算结果。用例名称:后退功能。参与执行者:用户。前置条件:计算器已开启。主事件流:选择后退功能,则可以将对操作数的赋值返回到上一个操作。后置条件:显示计算结果。用例名称:+/-功能。参与执行者:用户。前置条件:计算器已开启。主事件流
5、:对操作数进行操作,是操作数的值乘以-1后赋值回给操作数。后置条件:显示计算结果。用例名称:1/X。参与执行者:用户。前置条件:计算器已开启。主事件流:对操作数一进行操作,是之为操作数一分之1,结果作为下一次操作的操作数一。后置条件:显示计算结果。(2)计算器的类图: (3)计算器的顺序图:用户 1.输入操作数一 1.1选择操作方法 1.1.1操作后得到结果 将结果作为操作数一 请求操作数二 2.输入操作数二 2.1进行操作得到结果 将结果作为操作数一计算器的顺序图(4)计算器协作图 1.输入操作数一 5.计算结果用户2.输入操作方法 4.否请求操作数二 是否直接操作 3.是直接操作 是否直接
6、操作 计算器的协作图(5)计算器的状态图: 开启计算器进行操作 清零 关闭计算器计算器的状态图(6)计算器的活动图:用户 请求操作数二 直接操作.计算器的活动图(7)计算器系统框图:计算器系统框图 4设计内容:(1) 创建工程:在visual c+6.0中使用AppWizard的工程向导创建基于对话框的应用程序,工程名设置为calculator。(2) 设计用户界面(1)界面中有一个编辑框空间和25个命令按钮,2个单选按钮,1个分组框,一个编辑框。分别用于数字键,操作键,角弧度切换,联系,显示结果。界面完成后如下效果。(2)设置编辑框属性Style选项卡NUMBER(数字) Read-only
7、(只读),Extend选项Right Aligned text.(3)为编辑框连接一个double型的value变量值m_result.其他控件设置(4)控件属性表控件IDTypeMemberCaption编辑框IDC_EDIT1doublem_result单选按钮IDC_RADIO1Int m_radio角度单选按钮IDC_RADIO2弧度命令按钮IDC_NUMBER11命令按钮IDC_NUMBER22命令按钮IDC_NUMBER33命令按钮IDC_NUMBER44命令按钮IDC_NUMBER55命令按钮IDC_NUMBER66命令按钮IDC_NUMBER77命令按钮IDC_NUMBER88
8、命令按钮IDC_NUMBER99命令按钮IDC_NUMBER100命令按钮IDC_NUMBER11+/-命令按钮IDC_NUMBER12back命令按钮IDC_NUMBER13/命令按钮IDC_NUMBER14*命令按钮IDC_NUMBER15+命令按钮IDC_NUMBER16-命令按钮IDC_NUMBER17C命令按钮IDC_NUMBER18Sqrt命令按钮IDC_NUMBER191/x命令按钮IDC_NUMBER20=命令按钮IDC_NUMBER21sin命令按钮IDC_NUMBER22cos命令按钮IDC_NUMBER23tan命令按钮IDC_NUMBER24PI命令按钮IDC_NUMB
9、ER25Xy(5)最后效果(3)添加代码1在对话框的头文件CalculatorDlg.h中添加头文件#include。2为CCalculatorDlg类中添加如下的数据成员和成员函数:Double number1,number2;Int NumberState,OperationState;Void cal();/number1,number2用于储存进行运算的数值/ NumberState赋值于number1number2./ OperationState操作键3为数字键和某些操作按钮手工添加消息映射:在CalculatorDlg.h文件中的class CCalculatorDlg : pu
10、blic CDialog类的protected中添加如下代码:afx_msg void OnNumberKey(UINT nID); /单机数字键 afx_msg void OnOperationKey(UINT nID); /单击操作键 在CalculatorDlg.cpp文件中的BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog)和END_MESSAGE_MAP()之间添加如下的代码:ON_COMMAND_RANGE(IDC_NUMBER1,IDC_NUMBER10,OnNumberKey)ON_COMMAND_RANGE(IDC_NUMBER11,IDC_
11、NUMBER20,OnOperationKey)第一个表示单击数字键,第二个表示单击IDC_NUMBER11至IDC_NUMBER20的操作键。同时完成其他控件消息映射,方法为双击控件完成后如下:为成员函数添加代码:为成员函数OnNumberKey()添加代码:void CCalculatorDlg:OnNumberKey(UINT nID) int n=0; switch(nID) case IDC_NUMBER1:n=1;break; case IDC_NUMBER2:n=2;break; case IDC_NUMBER3:n=3;break; case IDC_NUMBER4:n=4;b
12、reak; case IDC_NUMBER5:n=5;break; case IDC_NUMBER6:n=6;break; case IDC_NUMBER7:n=7;break; case IDC_NUMBER8:n=8;break; case IDC_NUMBER9:n=9;break; case IDC_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
13、=m_result; UpdateData(FALSE); switch语句响应用户所按的数字键NumberState=1表示把数值赋值给操作数一,按下操作键按钮,如果可以直接的到结果的操作,NumberState值不变,如果要连同操作数二进行操作,使NumberState=2,便可输入操作数二。UpdateData(FALSE)用于更新编辑框中数据成员。(2)为单选按钮void CCalculatorDlg:OnRadio1()和void CalculatorDlg:OnRadio2()添加代码:void CCalculatorDlg:OnRadio1() m_radio=0;void CCalculatorDlg:OnRadio2() / TODO: Add your control notification handler code here m_radio=1; 两个单选按钮用来表示角度状态和弧度状态,将两个单选按钮放入group box中再在IDC_RADIO1的属性中选上group属性,最后按表1中连接int类型的变量m_radio,连接变量后,在CCalculatorDlg.cpp文件中的CCalculatorDlg:CCalculatorDlg(CW
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1