1、重庆科技学院基于MFC的简单计算机设计课程设计报告重庆科技学院面向对象程序设计课程设计报告 院(系):_电气与信息工程学院_ 班 级: 计科普1001学生姓名: 刘静 学 号: 2010441674设计地点(单位)_计算机自主学习中心 _ _设计题目:_基于MFC的简单计算机设计_ _ 完成日期: 2011年 7月 7日 指导教师评语: _成绩(五级记分制):_ _ 教师签名:_摘要随着社会的发展,科技的进步,人们的生活日益丰富起来,商业上的交易往往数字庞大,故需用计算器来进行运算,这样比较精确,不会造成不必要的损失,学生也不用为算术烦恼,因为有了计算器。本次课程设计设计的是一个基于MFC的简
2、单计算器,简单的计算十进制的加、减、乘、除等运算,运行界面是以一种按钮的方式来进行输入输出。界面中有各种算法的按钮,实现相对应的运算的目的,让人感觉简洁、明了。关键词:MFC 计算器 按钮课程设计任务书设计题目:基于MFC的简单计算器设计学生姓名刘静课程名称面向对象程序设计课程设计专业班级计科1001地 点I305/I306起止时间6月27日7月8日设计内容及要求以Windows Xp自带的计算器为蓝本,设计一个简单的10进制数计算器能进行实数(整数和浮点数)的算术运算(加、减、乘、除和求余数),要求在编辑框中输入运算量的输入。参考界面如下图所示,其中红色框标注的部分要求必须完成,蓝色框标注的
3、部分属选作内容。该计算器主要进行实数的单目和双目运算,使用过程如下:1)单目运算,例如对于要求先输入数字,然后点击“ln”按钮,完成取对数运算并把结果显示在编辑框中。2)双目运算,例如进行加法要求先输入第1加数,然后点击“+”按钮,再输入第2加数最后点击“=”按钮,完成计算并在编辑框中显示运算结果。注意:输入的浮点数中小数点不得超过1个;对、和取偶数次方根等4类功能要做数据的合法性检查。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计参数(1)系统分析、设计正确。(2)结果以图型界面方式显示。(3)界面简洁、美观。(4)报告格式规范。进度要求6月28日第一
4、大节、第二大节 讲解Windows程序设计的基础知识6月28日第三大节、第四大节 学生练习简单窗口程序设计6月30日第一大节、第二大节 讲解消息处理函数、消息传递机制6月30日第三大节、第四大节 学生练习控件的使用6月31日第一大节、第二大节 学生实现第一阶段的阶段性成果6月31日第三大节、第四大节 学生实现第一阶段的阶段性成果7月3日第一大节、第二大节 讲解基于对话框的MFC程序的实现7月3日第三大节、第四大节 学生学习控件的使用7月4日第一大节、第二大节 讲解MFC封装的消息响应机制7月4日第三大节、第四大节 学生练习消息响应函数的编写7月5日第一大节、第二大节 学生选择第3阶段的题目7月
5、5日第三大节、第四大节 规划设计方案7月6日第一大节、第二大节 编程实现7月6日第三大节、第四大节 编程实现7月7日第一大节、第二大节 编程实现7月7日第三大节、第四大节 程序测试7月8日第一大节、第二大节 编写课程设计报告7月8日第三大节、第四大节 课程设计答辩参考资料1美帕罗塞斯.MFC Windows程序设计.清华大学出版社.20072 美Stanley.C+ Primer.人民邮电出版社.2006其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研
6、室主任: 指导教师:伍建全/陈应祖/焦小军/易军/张亚军 2011年6月22日目录摘要2课程设计任务书3目录6第一章 软件需求分析说明书71.1 界面及布局设计71.2 数字1-9、0输入的实现方法81.3 加减乘除算法的实现方法81.4 比较复杂算法的实现方法8第二章 系统分析及设计82.1 软件界面设计92.2 软件的数据(结构)统计92.3 软件的算法统计102.3.1软件的模块图102.3.2加法运算流程图112.3.3减法运算流程图112.3.4 乘法运算流程图122.3.5 除法运算流程图122.3.6 求余运算流程图132.3.7 sin运算流程图132.3.8 cos运算流程图
7、142.3.9 开平方根运算流程图142.3.10 log运算流程图15第三章 软件的实现163.1 开始界面163.2 按键界面16第四章 软件的测试17第五章 软件使用说明书18致 谢19参考文献19第一章 软件需求分析说明书1.1 界面及布局设计界面以一个窗口的方式出现,与一般计算器一样,有许多按钮,分别实现不同的功能:1、1-9和0数字的输入;2、正负、数点的输入;3、“+”、“-”、 “*”、“/”、“log”、“sin”、“cos”、“sqrt”的运算。1.2 数字1-9、0输入的实现方法 建立“1、2、3、4、5、6、7、8、9、0”的按钮,并激活按钮,选择MyDlg 类里的按钮
8、函数“OnButton1()”函数,在里添加 m_number=m_number+1; UpdateData(FALSE); 检测并且确定可以执行无误。其他“234567890”以此类推。1.3 加减乘除算法的实现方法 建立“+、-、*、/”的按钮,并激活按钮,在相对应的按钮函数里实现其运算,结果是在按钮函数“OnButtonDeng”函数里输出。 1.4 比较复杂算法的实现方法 调用头文件#include,如sin、cos、sqrt、log等。 第二章 系统分析及设计2.1 软件界面设计 2.2 软件的数据(结构)统计建立一个按钮,都要激活其按钮,使其拥有一个实现它功能的按钮函数按钮函数有:
9、 afx_msg void OnButton1(); afx_msg void OnButton2(); afx_msg void OnButton3(); afx_msg void OnButton4(); afx_msg void OnButton5(); afx_msg void OnButton6(); afx_msg void OnButton7(); afx_msg void OnButton8(); afx_msg void OnButton9(); afx_msg void OnButton10(); afx_msg void OnButtonAdd(); afx_msg vo
10、id OnButtonJian(); afx_msg void OnButtonCheng(); afx_msg void OnButtonChu(); afx_msg void OnButtonDeng(); afx_msg void OnButtonLing(); afx_msg void OnButtonFu(); afx_msg void OnButtonXiaoshudian(); afx_msg void OnButtonMod(); afx_msg void OnButtonTuige(); afx_msg void OnButtonSqrt(); afx_msg void On
11、ChangeEdit1(); afx_msg void OnButtonSin(); afx_msg void OnButtonCos(); afx_msg void OnButtonLog(); 其中,对于sin、cos、log、sqrt运算的实现是调用的头文件#include比如:void CMyDlg:OnButtonSin() / TODO: Add your control notification handler code here a=atoi(m_number); number=sin(a); m_number.Format(%lf,number); UpdateData(FA
12、LSE);void CMyDlg:OnButtonCos() / TODO: Add your control notification handler code herea=atoi(m_number);number=cos(a);m_number.Format(%lf,number);UpdateData(FALSE);2.3 软件的算法统计2.3.1软件的模块图 进入主界面,选择你想让2个数之间进行的运算方式,就可得到你想要的结果,如图2-3-1所示:主界面加法减法乘法除法modsincossqrtlog=图2-3-1 模块图2.3.2加法运算流程图 根据对加法运算的分析,得到加法运算流
13、程图,如图2-3-2所示:开始输入第一个数按“+”按钮输入第二个数结果图2-3-2 加法运算流程图2.3.3减法运算流程图 根据对减法运算的分析,得到减法运算流程图,如图2-3-3所示:开始输入第一个数按“-”按钮输入第二个数结果图2-3-3 减法运算流程图2.3.4 乘法运算流程图根据对乘法运算的分析,得到乘法运算流程图,如图2-3-4所示:开始输入第一个数按“*”按钮输入第二个数结果图2-3-4 乘法运算流程图2.3.5 除法运算流程图根据对除法运算的分析,得到除法运算流程图,如图2-3-5所示:开始输入第一个数按“/”按钮输入第二个数结果图2-3-5 除法运算流程图2.3.6 求余运算流
14、程图根据对求余运算的分析,得到求余运算流程图,如图2-3-6所示:开始输入第一个数按“mod”按钮输入第二个数结果图2-3-6 求余运算流程图2.3.7 sin运算流程图根据对sin运算的分析,得到sin运算流程图,如图2-3-7所示:开始输入数按“sin”按钮结果图2-3-7 sin运算流程图2.3.8 cos运算流程图根据对cos运算的分析,得到cos运算流程图,如图2-3-8所示:开始输入数按“cos”按钮结果图2-3-8 cos运算流程图2.3.9 开平方根运算流程图根据对开平方根运算的分析,得到开平方根运算流程图,如图2-3-9所示:开始输入数按“sqrt”按钮结束图2-3-9 开平
15、方根运算流程图2.3.10 log运算流程图根据对log运算的分析,得到log运算流程图,如图2-3-10所示:开始输入数按“log”按钮结果图2-3-10 log运算流程图第三章 软件的实现3.1 开始界面图3-1 计算器的运行界面3.2 按键界面图3-2 计算器按键的界面第四章 软件的测试表4 按钮函数测试按钮函数InputOutputvoid OnButton1()11void OnButton2()22void OnButton3()33void OnButton4()44void OnButton5()55void OnButton6()66void OnButton7()77voi
16、d OnButton8()88void OnButton9()99void OnButton10()00void OnButtonAdd()1 34void OnButtonJian()1 2-1void OnButtonCheng()1 44void OnButtonChu()1 50.2void OnButtonDeng()void OnButtonLing()120void OnButtonFu()1-1void OnButtonXiaoshudian()1 11.1void OnButtonTuige()111void OnButtonSqrt()42void OnButtonSin(
17、)00void OnButtonCos()01void OnButtonLog()101void OnButtonMod()3 21第五章 软件使用说明书 下面是本次设计的简单计算器的运行界面。图5-1 计算器运行界面 从图中可以看到许多的按钮,左边是输入数字的按钮,右边则是算术按钮,输入你想计算的数字和计算方法,就可得到你想要的答案。致谢在此我向在此次课程设计时对我伸出援助之手的焦晓军老师,还有帮助我的同学们。这个软件的实现固然需要自身的努力,当然也离不开同学们的帮助与讲解。缺少了这些也许我的程序就无法调试完成。谢谢老师和同学们的帮助与讲解。签名:刘静日期:2011-6-24参考文献1美帕罗
18、塞斯.MFC Windows程序设计.清华大学出版社.20072美Stanley.C+ Primer.人民邮电出版社.2006void CMyDlg:OnButton1() m_number=m_number+1;UpdateData(FALSE);void CMyDlg:OnButton2() m_number=m_number+2;UpdateData(FALSE);void CMyDlg:OnButton3() m_number=m_number+3;UpdateData(FALSE);void CMyDlg:OnButton4() m_number=m_number+4;UpdateD
19、ata(FALSE);void CMyDlg:OnButton5() m_number=m_number+5;UpdateData(FALSE);void CMyDlg:OnButton6() m_number=m_number+6;UpdateData(FALSE);void CMyDlg:OnButton7() m_number=m_number+7;UpdateData(FALSE);void CMyDlg:OnButton8() m_number=m_number+8;UpdateData(FALSE);void CMyDlg:OnButton9() m_number=m_number
20、+9;UpdateData(FALSE);void CMyDlg:OnButton10() m_number=m_number+0;UpdateData(FALSE);void CMyDlg:OnButtonAdd() a=atof(m_number);b=1;m_number=;UpdateData(FALSE);void CMyDlg:OnButtonJian() a=atof(m_number);b=2;m_number=;UpdateData(FALSE); void CMyDlg:OnButtonCheng() a=atof(m_number);b=3;m_number=;Updat
21、eData(FALSE);void CMyDlg:OnButtonChu() a=atof(m_number);b=4;m_number=;UpdateData(FALSE);void CMyDlg:OnButtonDeng() switch(b) case 1:iRet = a + atof(m_number); break; case 2:iRet = a - atof(m_number); break; case 3:iRet = a * atof(m_number); break; case 4:if (atoi(m_number)!=0) iRet = a / atof(m_numb
22、er); break; else MessageBox(cant use zero!); case 5:if(atoi(m_number)!=0)iRet=(int)a%(int)atoi(m_number);break;return; m_number.Format(%0.2g,iRet); UpdateData(FALSE); void CMyDlg:OnButtonLing() a=0; b=0; m_number=; UpdateData(FALSE); void CMyDlg:OnButtonFu() if(m_number0!=-)m_number.Insert(0,-);else
23、m_number.Delete(0,1); UpdateData(FALSE); void CMyDlg:OnButtonXiaoshudian() if(m_number.Find (.,0)=-1)m_number+=.;elsereturn ;UpdateData(FALSE);void CMyDlg:OnButtonMod() a=atoi(m_number);b=5;m_number=;UpdateData(FALSE);void CMyDlg:OnButtonTuige() m_number.Empty();UpdateData(FALSE);void CMyDlg:OnButto
24、nSqrt() a=atoi(m_number);number=sqrt(a);m_number.Format(%0.2g,number);UpdateData(FALSE);void CMyDlg:OnButtonSin() a=atoi(m_number);number=sin(a);m_number.Format(%0.2g,number);UpdateData(FALSE);void CMyDlg:OnButtonCos() a=atoi(m_number);number=cos(a);m_number.Format(%0.2g,number);UpdateData(FALSE);void CMyDlg:OnButtonLog() a=atoi(m_number);if(a0) number=log10(a);else number=0;m_number.Format(%0.2g,number);UpdateData(FALSE);
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922