面向编程实验报告

上传人:飞*** 文档编号:53905911 上传时间:2018-09-06 格式:PDF 页数:21 大小:518.08KB
返回 下载 相关 举报
面向编程实验报告_第1页
第1页 / 共21页
面向编程实验报告_第2页
第2页 / 共21页
面向编程实验报告_第3页
第3页 / 共21页
面向编程实验报告_第4页
第4页 / 共21页
面向编程实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《面向编程实验报告》由会员分享,可在线阅读,更多相关《面向编程实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、面向对象的编程技术课 程 设 计 报 告课题名称 : 简易计算器 学院:工商学院 专业班级:计 1441 姓名:余磊 学号: 141842241 指导教师:储岳中安徽工业大学工商学院2015年 12 月目录1. 基本功能描述3 2. 设计思路3 3. 设计步骤4 4. 调试结果13 5. 总结14 1. 基本功能描述简单计算器包括双目和单目运输功能。双目运算符包括基本的四则运算及乘幂功能。单目运算包括正余弦, 阶乘,对数,开方,倒数运算。可对任意操作数,包括小数和正整数及负数。同时包含清除,退出功能。2. 设计思路如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开

2、始时 m_result 为零。 按下数字按钮后,判断 m_result 的正负号,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。回到总流程图中,输完第一个操作数后,若按下清零,则 m_result 等于 0. 在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。N Y N Y Y N 编辑框关联变量m_result=0 键入一个数是否为正数?继续键入数字?根据小数点后位数将键入的数除以 n 次 10 累加到 m_result 是否为小数?m_res

3、ult =10* m_result -i 用 UpdateData(FALSE) 刷新显示还原 m_result m_result =10* m_result -i 3. 设计步骤1)打开 Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择 MFC AppWizardexe工程,输入工程名Calculator 及其所在位置,点击确定2)在对话框窗体上 顺序创建 0 到 9 十个数字按钮,并设置其标识符分别为 IDC_0 到 IDC_9,其它按钮按下表设置属性:3)表 1 各按钮和编辑框等对象的属性对象ID 标题或说明对象ID 标题或说明按钮IDC_0 0 按钮ID

4、C_ADD + 按钮IDC_1 1 按钮IDC_MINUS - 按钮IDC_2 2 按钮IDC_MUTIPLY * 按钮IDC_3 3 按钮IDC_DIVID / 按钮IDC_4 4 按钮IDC_SQRT sqrt 按钮IDC_5 5 按钮IDC_LN ln 按钮IDC_6 6 按钮IDC_POINT . 按钮IDC_7 7 按钮IDC_EQUAL = 按钮IDC_8 8 按钮IDC_SIGN +/- 按钮IDC_9 9 按钮IDC_CLEAR C 按钮IDC_SIN sin 按钮IDC_BACK BACK 按钮IDC_COS cos 按钮IDC_ RECTPROCAL 1/x 按钮IDC_T

5、AN tan 编辑框IDC_DISPLAY 结果显示3)按表 2 添加各运算按钮的消息处理函数4) 、为使0 到 9 十个数字按钮响应相同的消息处理函数,定义宏ON_COMMAND_RANGE (1) / CalculatorDlg.h /AFX_MSG(CCalculatorDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnA

6、dd(); afx_msg void OnMinus(); afx_msg void OnMutiply(); afx_msg void OnDivid(); afx_msg void OnClear(); afx_msg void OnSign(); afx_msg void OnPoint(); afx_msg void OnEqual(); afx_msg void OnSqrt(); afx_msg void OnRecip(); afx_msg void OnOperandInput(UINT iID);/ 注意先向类中添加protected 型成员函数OnOperandInput,

7、然后再屏蔽掉类中的该函数声明,在此位置添加此说明/AFX_MSG (2)/CalculatorDlg.cpp BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog) /AFX_MSG_MAP(CCalculatorDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_ADD, OnAdd) ON_BN_CLICKED(IDC_MINUS, OnMinus) ON_BN_CLICKED(IDC_MUTIPLY, OnMutiply) ON_BN_CLICKED(ID

8、C_DIVID, OnDivid) ON_BN_CLICKED(IDC_CLEAR, OnClear) ON_BN_CLICKED(IDC_SIGN, OnSign) ON_BN_CLICKED(IDC_POINT, OnPoint) ON_BN_CLICKED(IDC_EQUAL, OnEqual) ON_BN_CLICKED(IDC_SQRT, OnSqrt) ON_BN_CLICKED(IDC_RECIP, OnRecip) ON_COMMAND_RANGE(IDC_0,IDC_9,OnOperandInput)/使用一个消息函数来处理对某个ID 范围内所有控件的命令响应/AFX_MSG

9、_MAP END_MESSAGE_MAP() 5) 、在头文件 CalculatorDlg.h中添加类型、成员变量及成员函数(1)自定义类型( 定义在类外 )enum Operator OpNone,OpAdd,OpSubtract,OpMultiply,OpDivide; enum CalcError ErrNone,ErrDivideByZero; enum Func FuncSin, FuncTan, FuncCos, FuncSqrt, FuncSqre, FuncLn, FuncLog, FuncN, FuncRec, FuncExp, FuncNone; (2)成员变量及函数 (此

10、处应定义为类 CalculatorDlg的公有成员)float m_operand; /存储当前输入的操作数float m_accum; /存储当前的计算结果BOOL m_bCoff; / 标识当前输入是否是小数float m_coff; /小数输入时的系数Operator m_operator; /enum型变量用以标识当前运算符CalcError m_errorState; /enum型变量用以标识当前运算状态Func m_func; /enum型变量用以标识当前运算函数类型BOOL m_bOperandAvail; / 标识当前输入是否为新输入数字void Calculate(); /

11、处理普通计算 (用类向导, 公有成员)void UpdateDisplay(); / 处理显示(用类向导, 公有成员)void Run_Func(); / 处理函数运算(用类向导,公有成员)(3)为编辑框添加 Cstring 变量 m_result 6) 、部分变量的初始化CCalculatorDlg:CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg:IDD, pParent) /AFX_DATA_INIT(CCalculatorDlg) m_result = _T(“); /AFX_DATA_INIT / Not

12、e that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME); m_coff=0.1; m_bCoff=0; m_errorState = ErrNone; m_bOperandAvail=FALSE; m_operator=OpNone; 另:在文件 CalculatorDlg.cpp中添加#include “math.h“ 7) 、添加各功能代码(1) 数字输入消息处理函数void CCalculatorDlg:OnOperan

13、dInput(UINT iID) ASSERT(iID = IDC_0 if(m_errorState!=ErrNone) return; if(!m_bOperandAvail) m_operand=0; if(!m_bCoff) m_operand=m_operand*10+(iID-IDC_0); else m_operand=m_operand+(iID-IDC_0)*m_coff; m_coff*=0.1; m_bOperandAvail=TRUE; UpdateDisplay(); (2)运算符消息处理函数void CCalculatorDlg:OnAdd() / 加 / TODO

14、: Add your control notification handler code here Calculate(); m_operator=OpAdd; void CCalculatorDlg:OnMinus()/ 减 / TODO: Add your control notification handler code here Calculate(); m_operator=OpSubtract; void CCalculatorDlg:OnMutiply()/ 乘 / TODO: Add your control notification handler code here Cal

15、culate(); m_operator=OpMultiply; void CCalculatorDlg:OnDivid()/ 除 / TODO: Add your control notification handler code here Calculate(); m_operator=OpDivide; void CCalculatorDlg:OnSign() / 处理正负号 / TODO: Add your control notification handler code here m_operand*=-1; UpdateDisplay(); void CCalculatorDlg:OnEqual()/ 处理等号 / TODO: Add your control notification handler code here Calculate(); m_operator=OpNone; void CCalculatorDlg:OnSqrt()/ 处理开根号 / TODO: Add your control notification handler code here m_func=FuncSqrt; Run_Func(); void CCalculatorDlg:OnRecip() / 求倒数 1/x / TODO: Add you

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号