C++简单计算器毕业课程设计报告定稿文档格式.docx

上传人:b****3 文档编号:16650472 上传时间:2022-11-25 格式:DOCX 页数:16 大小:396.12KB
下载 相关 举报
C++简单计算器毕业课程设计报告定稿文档格式.docx_第1页
第1页 / 共16页
C++简单计算器毕业课程设计报告定稿文档格式.docx_第2页
第2页 / 共16页
C++简单计算器毕业课程设计报告定稿文档格式.docx_第3页
第3页 / 共16页
C++简单计算器毕业课程设计报告定稿文档格式.docx_第4页
第4页 / 共16页
C++简单计算器毕业课程设计报告定稿文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++简单计算器毕业课程设计报告定稿文档格式.docx

《C++简单计算器毕业课程设计报告定稿文档格式.docx》由会员分享,可在线阅读,更多相关《C++简单计算器毕业课程设计报告定稿文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

C++简单计算器毕业课程设计报告定稿文档格式.docx

图1输入数据子函数流程图

图2简单计算器总流程图

3软件设计

3.1设计步骤

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

图3新建MFCAppWizard[exe]工程

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

图4基本对话框

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

图5新建的对话框

3.2界面设计

1、创建控件

在图5所示的ResoureView选项卡中打开Dialog资源组,双击IDD_09107xuzhujie_DIALOG,在右边的窗口中显示出待编辑的对话框。

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

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

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

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

图6Edit属性对话框

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

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

图7PushButton属性

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

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

对象

ID

标题或说明

编辑框

IDC_xianshi

结果显示

按钮

IDC_BUTTON0

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

1x

IDC_jiecheng

n!

IDC_ln

ln

IDC_sin

sin

IDC_cos

cos

IDC_pow

x^y

IDC_Onequal

=

IDC_backspace

Backspace

IDC_Onclear

Clear

完成后界面如图8所示。

图8计算器界面

2、连接变量和代码

1)给编辑框连接变量。

在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFCClassWizard对话框,选择MemberVariables选项卡,如图9所示。

图9MFCClassWizard对话框中的MenberVariable选项卡

在ControlIDs列表框中选择IDC_xianshi,单击AddVariables按钮,在弹出的对话框中连接变量m_num。

变量类型设定为doubel型。

如图10所示。

图10m_num属性设置

2)给“1”按钮连接代码。

在“1”按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择MessagesMaps选项卡,然后在ObjectIDs列表框中选择IDC_ADD_BUTTON,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图11所示。

图11“1”按钮链接代码对话框

3、菜单的设计

选择插入资源命令,将显示插入资源对话框。

如图12所示。

选择Menu,点击新建即可。

图12插入资源对话框

ResoureView选项卡中打开Menu资源组,双击IDR_MENU1,然后给菜单添加相应的标题,并把每个菜单对应的ID值与相应的按钮的一致。

如图13所示。

图13菜单属性对话框

在对话框的任何一个空白域单击鼠标右键,然后在弹出的快捷菜单中选择Properties命令,弹出DialogProperties对话框,如图14。

在对话框中的菜单组合框中选择IDR_MENU1。

图14对话属性对话框

最终的得到的界面如图15。

图15计算器完整界面

3.3关键功能的实现

1)操作数的输入

编辑框所关联的变量为m_num,程序开始时为零。

每按下一个数字键按钮,就把它累加到m_num里并刷新显示。

BOOL型变量ele来判断是否有小数点和一个整型数dint来表示小数点后的数据的位数。

当ele=TRUE时,表示有小数点,否则则表示无小数点。

按下小数点按钮后执行ele=TRUE。

当按下一个数字键时,首先根据ele判断是否按下小数点,若有则把小数点后数的位数加1,dint则为此次键入的数所处的位数,将键入的数除以dint个10然后累加到编辑框所关联的变量m_num上,若没有则把m_num乘以10,然后累加到编辑框所关联的变量m_num上。

2)单目运算符功能的实现

由于单目运算符中必须有执行运算的函数,因而头文件中要加入math.character'

0xa3'

C:

\DocumentsandSettings\周同\桌面\09107xuzhujie\09107xuzhujieDlg.cpp(230):

errorC2018:

unknowncharacter'

0xbb'

\DocumentsandSettings\周同\桌面\09107xuzhujie\09107xuzhujieDlg.cpp(231):

errorC2143:

syntaxerror:

missing'

;

'

before'

if'

原因为分号是在中文输入法状态下输入,将其改为英文输入状态下了分号即可。

2、重做时调用其他工程中的对话框资源后编译链接运行后还是本来有的那个对话框,后来将原先的对话框资源删除并将调用的对话框的ID改为原先的对话框的ID,再次编译链接运行之后没有反应了,经过多次摸索发现调用过来的对话框是关联了菜单了,而新建的工程里没有菜单,因此将调用的对话框取消与菜单的关联,再次再次编译链接运行之后一切正常。

3、用GetDlgItem(IDC_NAME_EDIT)->

SetWindowText("

"

);

来提示操作错误时,总是没有任何效果,经老师帮助得以解决。

因为UpdateData(FALSE)是将变量传到前台显示,SetWindowText就是设置前台显示的新内容。

所以在SetWindowText后如果还有UpdateData(FALSE)则其效果会被后者覆盖,因此程序中SetWindowText之后不用UpdateData(FALSE)即可。

4、当操作数超过10位数时,用backspace会出现错误结果,一番研究研究发现用int(m_num)取整有问题,int只有4个字节,当超过其范围时就会出错。

因此将取整的方法改为先用fmod取其除以1的余数得到其小数位,然后用m_num减去其小数位即可。

7.2测试结果

1.输入“90.5”,“-”,“60.7”,“+”,“2.36”,“=”,并在菜单中同样输入这组操作,均得到结果如图16。

图16结果图1

结果正确,证明可以实现双目运算符的连续运算,菜单功能正常。

2.输入“901”,“+-”,“backspace”,“+”,“120”,“sin”,结果如图17.

图17结果图2

因为π取的是3.,因此与0.5有小小偏差,认为结果正确。

证明可以实现单目运算符的连续运算与backspace回格功能。

3.输入“0”,“ln”,结果如图18.

结果图18

证明错误提示功能实现正常。

7.3关键源代码

1、09107xuzhujieDlg.!

键的程序:

if(m_num!

=0)num2=m_num;

if(fmod(num2,1)==0)

{m_num=1;

for(i=1;

i<

=num2;

i++)m_num*=i;

对数进行求阶乘

UpdateData(FALSE);

数据刷新

num2=m_num;

if(m_num>

=1.7E308||m_num<

-1.7E308)

GetDlgItem(IDC_xianshi)->

结果过大,无法显示"

}

elseGetDlgItem(IDC_xianshi)->

不是整数无法进行阶乘运算"

m_num=0;

num1=0;

dint=0;

ele=FALSE;

ele2=TRUE;

8、1x键的程序:

if(num2!

=0)

{

m_num=1.0num2;

对数进行求倒数

数据刷新

}

错误,0不能求倒数"

9、sin键的程序:

(cos的代码类似)

m_num=sin(num2*3.180);

对数进行正弦

10、ln键的程序:

0)

m_num=log(num2);

对数进行求ln

错误,操作数需大于0"

11、=键的程序:

switch(addt)数据判断

case0:

为实现连续按下两次等号后能清零

break;

case1:

m_num=num2+m_num;

两数相加

case2:

m_num=num2-m_num;

两数相减

case3:

m_num=num2*m_num;

两数相乘

case4:

if(m_num==0)在除法中,判断除数是否为0

错误,0不能作除数"

else{m_num=num2m_num;

case5:

m_num=pow(num2,m_num);

取模

addt=0;

12、清除键Clear的程序:

输出框清0

变量1为0

num2=0;

变量2为0

小数无位数

整数位数无

当前无小数

13、退格键Backspace的程序:

if(ele==FALSE)判断当前是否有小数点,如果没有

m_num=m_num10-fmod(m_num10,1);

去掉小数位

else

if(ele==TRUE&

&

dint>

0)如果是小数

for(i=0;

dint-1;

i++)移动小数点

m_num=m_num*10;

移动至只有一个小数位

m_num=m_num-fmod(m_num,1);

i++)小数点移至原来位置

m_num=m_num10;

dint=dint--;

if(dint==0)ele=FALSE;

if(m_num==0)ele2=TRUE;

14、退出键Exit的程序:

OnOK();

15、关联关于对话框代码:

CAboutDlgdlgAbout;

dlgAbout.DoModal();

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

当前位置:首页 > 考试认证 > 司法考试

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

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