《C++课程设计报告---计算器的设计与实现》由会员分享,可在线阅读,更多相关《C++课程设计报告---计算器的设计与实现(24页珍藏版)》请在金锄头文库上搜索。
1、C+课 程 设 计 报 告( 20 - 20 年度第 学期)计算器的设计与实现专业 计算机科学与技术学生姓名班级学号指导教师完成日期C+课程设计报告(2011 )目 录1 概 述 .31.1 课程设计目的 .31.2 课程设计内容 .32 系统需求分析 .32.1 系统目标 .32.2 主体功能 .32.3 开发环境 .33 系统概要设计 .43.1 系统功能划分 .43.2 系统流程图 .54系统详细设计 .54.1 设计步骤 .54.2 界面设计 .74.2 实现高级按钮控件类 .105 测试 .115.1 测试方案 .115.2 测试结果 .116 小结 .12参考文献 .14附 录 .
2、15附录 1 源程序清单 .15C+课程设计报告(2011 )3计算器的设计与实现1 概 述 1.1 课程设计目的1、巩固并加深学生对 C+语言程序设计知识的理解;2、培养学生面向对象的程序设计思想,使学生认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用 VC+ 6.0 集成开发环境;4、提高运用 C+语言解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的 MIS 系统;6、掌握书写程序设计开发文档的能力(书写课程设计实验报告) 。1.2 课程设计内容课题名称:计算器的实现说明:实现一个计算器。要求: 1)用“计算器”的标准视图执行简单的计算。2
3、)用其科学型视图执行高级的科学计算。2 系统需求分析2.1 系统目标我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求平方根,求 Sin,求 Cos。2.2 主体功能1、十进制数的加、减、乘、除、乘方、取模等简单计算。2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算。3、以角度、弧度两种方式实现上述部分函数。2.3 开发环境VC+ 6.0计算器的设计与实现43 系统概要设计3.1 系统功能划分表 3-1 系
4、统功能表1) 假设执行操作“+” ,先输入一个数,再输入“+” ,再输入另一个数,最后输入“+” 。整个功能“+”就执行完毕。2)执行操作“Sin”,先输入一个数,在输入“Sin” ,整个功能“Sin”就执行完毕。3)执行操作“n!” ,先输入一个数,再输入“n! ,整个功能“n!”执行序号 文件名 主要功能 备注1 + 加法求和 两个操作数2 - 减法求差 两个操作数3 * 乘法求积 两个操作数4 / 除法求商 两个操作数5 % 求模 两个操作数6 求 x 的 y 次幂 两个操作数7 S 求平方根 一个操作数8 Sin 求正弦 一个操作数9 Cos 求余弦 一个操作数10 ln 求对数 一个
5、操作数11 n! 求阶乘 一个操作数12 = 等于13 C 寄存器清零C+课程设计报告(2011 )53.2 系统流程图图 3-1 系统流程图4系统详细设计4.1 设计步骤打开 Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择 MFC AppWizardexe工程,输入工程名 cao 及其所在位置,点击确定,如图 4-1 所示。加法减法乘法除法求幂求模寄存器清零开方正弦余弦对数输入第二个操作数显示结果结束开始输入第一个操作数选择一种计算方法计算器的设计与实现6图 4-1 新建 MFC AppWizardexe工程将弹出 MFC AppWizard-step 1
6、对话框,选择基本对话框,点击完成,如图 4-2所示。图 4-2 基本对话框这样,MFC AppWizard 就建立了一个基于对话窗口的程序框架,如图 4-3 所示。C+课程设计报告(2011 )7图 4-3 新建的对话框4.2 界面设计界面设计主要是创建控件,在图 4-3 所示的 Resoure View 选项卡中打开Dialog 资源组,双击 IDD_ZHOUTONG_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。1)在图 4-3 中 Controls 的“编辑框”按钮上单击鼠标左键,在
7、对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时弹出 Edit 属性对话框,如图 4-4 所示,在该对话框中输入 ID 属性。 图 4-4 Edit 属性对话框计算器的设计与实现82)在图 4-2 中 Controls 的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出 Push Button 属性对话框,如图 4-5 所示,在该对话框中输入控件的 ID 值和标题属性。图 4-5 P
8、ush Button 属性按照上面的操作过程编辑其他按钮和编辑框等对象的属性。表 4-1 各按钮和编辑框等对象的属性对象 ID 标题或说明编辑框 IDC_xianshi 结果显示按钮 IDC_BUTTON0 0按钮 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_d
9、ifference -按钮 IDC_chu /按钮 IDC_tan tan按钮 IDC_exp exp按钮 IDC_multiply *按钮 IDC_sqrt sqrt按钮 IDC_daoshu 1/x按钮 IDC_jiecheng n!按钮 IDC_ln ln按钮 IDC_sin sin按钮 IDC_cos cos按钮 IDC_pow xy按钮 IDC_Onequal =C+课程设计报告(2011 )9完成后界面如图 4-6 所示。图 4-6 设计界面加入标准型和科学型按键:图 4-7 加入标准型和科学型按键界面计算器的设计与实现10运行界面效果如图 4-8:图 4-8 科学型界面4.3 实
10、现高级按钮控件类因为本程序大多使用按钮来完成我们所需的计算,所以在这里,我使用高级按钮控件来实现操作,具体过程如下:利用 ClassWizard 添加一个新类(1)添加成员变量和成员函数 添加成员变量:public:CRect m_ClientRect; /用来保存按钮的客户的矩形区域CRgn m_ClientRgn ; /用来保存按钮的客户区域,非矩形UINT m_State; /按钮所处状态CPoint m_Point; /当前鼠标位置BOOL m_IsTimerOn; /标识计时器是否已经打开利用 ClassWizard 添加消息映射和响应函数:再利用 ClassWizard 覆盖父类中
11、的两个关键的虚函数:/AFX_VIRTUAL(CAdvButton)public:virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);protected:virtual void PreSubclassWindow();/AFX_VIRTUALC+课程设计报告(2011 )11其中对于所有的对于按钮的绘制工作都是在 DrawItem 函数中完成的。(2)添加创建按钮控件代码按钮的创建分两步完成。首先,调用构造函数对按钮对象进行初始化;其次,调用 Create 函数创建按钮。(3)屏蔽 Enter 键直到现在为止,虽然计算器的界面已经
12、完成。但是,它还有一个缺陷:当Enter 键按下时,对话框应付突然关掉。这是因为对话框默认具有焦点的控件是OK 键,当 Enter 键按下时,框架会自动执行当前拥有焦点的控件的响应函数,所以对话框自然就关闭了。要屏蔽这一功能,只要执行下面的代码就可以。void CCalculatorDlg:OnOK() /CDialog:OnOK(); /屏蔽掉此句代码5 测试5.1 测试方案先用标准型进行简单的四则运算:+ - * /,测试完成后。再用科学型进行稍复杂的运算:sin,cos,tan,log,ln,n!等,核对其计算结果的正确性。5.2 测试结果经测试标准型计算器,进行简单的四则运算,结果均正确,如图 5-1 所示。图 5-1 四则运算测试结果图测试科学型计算器,进行 sin,cos,tan,log,ln,n!等运算,结果均正确,求计算器的设计与实现12sin30(如图 5-2 所示)。图 5-2 求 sin30 测试结果图(一)图 5-3 求 sin30 测试结果图(二)6 小结通过一个多星期的折腾,总算把课程设