程序设计实践 计算器程序实验报告

上传人:第*** 文档编号:57492548 上传时间:2018-10-22 格式:DOCX 页数:20 大小:62.50KB
返回 下载 相关 举报
程序设计实践 计算器程序实验报告_第1页
第1页 / 共20页
程序设计实践 计算器程序实验报告_第2页
第2页 / 共20页
程序设计实践 计算器程序实验报告_第3页
第3页 / 共20页
程序设计实践 计算器程序实验报告_第4页
第4页 / 共20页
程序设计实践 计算器程序实验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《程序设计实践 计算器程序实验报告》由会员分享,可在线阅读,更多相关《程序设计实践 计算器程序实验报告(20页珍藏版)》请在金锄头文库上搜索。

1、程序设计实践设计报告课题名称:简易计算器设计与实现学生姓名:班 级:班内序号:学 号:日 期:1课题概述1.1 课题目标和主要内容本案例以编写基于 MFC 的简易计算器软件为例,通过学习 MFC 事件驱动机制、MFC 界面设计、MFC 控件使用,并掌握 MFC 应用程序的设计方法,独立完成一个 MFC 的一个 MFC的应用程序。本案例的重点是学习如何使用 MFC 基本控件和事件驱动机制完成一个Windows 下交互式应用软件。本次实验所用的开发平台为 Visual Studio 2008。1.2 系统的主要功能基本功能单击数字键,显示当前数值单击“+” 、 “-” 、 “*” 、 “/”建进行

2、运算单击“=” ,显示运算结果单击“C” ,清楚已有结果进行连续四则运算扩展功能进行浮点运算进行平方、绝对值、倒数运算进行三角函数运算2. 系统设计2.1 系统总体框架对话框编辑框按钮事件驱动函数运算函数2.2 系统详细设计1 模块划分图及描述(1)对话框:此模块实现的是与用户的交互,本案例使用了两类控件:编辑框和按钮。(2)事件驱动函数:例如:void CdckcalculatorDlg:OnBnClickedBtn1()/ TODO: 在此添加控件通知处理程序代码ClickNum(“1“);此模块处理的是程序如何响应鼠标的单击,主要由消息映射和消息处理函数两部组成。(3)运算函数:例如:v

3、oid CdckCalculatorDlg:onButtonN(int n)if( m_coff = 1.0)m_second = m_second*10 + n;/作为整数输入数字时骸else m_second = m_second + n*m_coff; /作为小数输入数字m_coff *= 0.1;UpdateDisplay(m_second);/更新编辑框的数字显示此模块是本实验的核心内容,它控制着整个程序的逻辑功能,它所实现的主要是逻辑运算以及数据交换。2 类关系图及描述在 calculatorDlg.h 中设置 CcalculatorDlg 类,如下所示:/ dckCalculat

4、orDlg.h : 头文件/#pragma once/ CdckCalculatorDlg 对话框class CdckCalculatorDlg : public CDialog/ 构造public:CdckCalculatorDlg(CWnd* pParent = NULL);/ 标准构造函数/ 对话框数据enum IDD = IDD_DCKCALCULATOR_DIALOG ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:HICON m_hIcon;/ 生成的消息映射

5、函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double m_first;public:double m_second;public:CString m_operator;public:double m_coff;public:CString m_display;public:void UpdateDispla

6、y(double dck);public:void Calculate(void);public:afx_msg void OnBnClickedButton0();public:afx_msg void OnBnClickedButton1();public:afx_msg void OnBnClickedButton2();public:afx_msg void OnBnClickedButton3();public:afx_msg void OnBnClickedButton4();public:afx_msg void OnBnClickedButton5();public:afx_m

7、sg void OnBnClickedButton6();public:afx_msg void OnBnClickedButton7();public:afx_msg void OnBnClickedButton8();public:afx_msg void OnBnClickedButton9();public:afx_msg void OnBnClickedButtonSign();public:afx_msg void OnBnClickedButtonPoint();public:afx_msg void OnBnClickedButtonAdd();public:void onBu

8、ttonN(int n);public:afx_msg void OnBnClickedButtonMinus();public:afx_msg void OnBnClickedButtonMutiply();public:afx_msg void OnBnClickedButtonDiv();public:afx_msg void OnBnClickedButtonClear();public:afx_msg void OnBnClickedButtonSqrt();public:afx_msg void OnBnClickedButtonReci();public:afx_msg void

9、 OnBnClickedButtonEqual();public:afx_msg void OnBnClickedExp();public:afx_msg void OnBnClickedCos();public:afx_msg void OnBnClickedSin();public:afx_msg void OnBnClickedLn();public:afx_msg void OnBnClickedLog();public:afx_msg void OnBnClickedTan();public:double m_PI;public:double temp;3 程序流程图及描述 2.3

10、关键算法分析 算法 1:ClickNum1 算法功能实现单击数字输入的功能。2 算法基本思想通过单击数字,改变与编辑框关联的变量 m_strResult,以实现操作数的输入。3 算法空间、时间复杂度分析时间复杂度为 O(1) 。4 代码逻辑void CdckCalculatorDlg:onButtonN(int n)是否开始输入数字是否需要输 入其他数字运算结束显示结果if( m_coff = 1.0)m_second = m_second*10 + n;/作为整数输入数字时else m_second = m_second + n*m_coff; /作为小数输入数字m_coff *= 0.1;

11、UpdateDisplay(m_second);/更新编辑框的数字显示算法 2:Compute1 算法功能实现四则运算。2 算法基本思想单击运算符按钮,系统从编辑框读取操作数,根据运算符作相应的运算,再将结果信息传递给编辑框显示。3 算法空间、时间复杂度分析时间复杂度为 O(1) 。4 代码逻辑void CdckCalculatorDlg:Calculate(void) switch(m_operator.GetAt(0) case +: m_first+=m_second;break;case -: m_first-=m_second;break;case *: m_first*=m_sec

12、ond;break;case /:if(fabs(m_second)LoadIcon(IDR_MAINFRAME);void CdckCalculatorDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_DISPLAY, m_display);BEGIN_MESSAGE_MAP(CdckCalculatorDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTT

13、ON0, / 将?“关?于?”菜?单蹋?项?添?加 到?系 统?菜?单蹋?中 D。/ IDM_ABOUTBOX 必?须?在 系 统?命 令?范?围内 。ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设 ?置?此?对?话框 的?图?标括?。当獭?应畖用?程 序 主窗洹?口 不?是?对?话框 时骸?,?框 架 将?自?动/ 执行 D 此?操 作痢?SetIcon(m_hIcon, TRUE);/

14、 设 ?置?大洙?图?标括?SetIcon(m_hIcon, FALSE);/ 设 ?置?小?图?标括?/ TODO: 在 此?添?加 额?外猘的?初?始?化代洙?码?return TRUE; / 除 y 非?将?焦 1 点?设 ?置?到?控?件 t,?否?则 返?回? TRUEvoid CdckCalculatorDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ 如?果?向 对?话框 添?加 最?小?化按恪?钮¥,?则 需 要癮

15、下?面?的?代洙?码?/ 来?绘?制?该?图?标括?。对?于?使?用?文?档苔?视酣?图?模型 的? MFC 应畖用?程 序 ,?/ 这 a 将?由?框 架 自?动完?成 。void CdckCalculatorDlg:OnPaint()if (IsIconic()CPaintDC dc(this); / 用?于?绘?制?的?设 ?备?上?下?文?SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使?图?标括?在 工作痢?矩?形?中 D 居 中 Dint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘?制?图?标括?dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/当獭?用?户拖?动最?小?化窗洹?口 时骸?系 统?调獭?用?此?函数簓取?得?光 a 标括?显

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

当前位置:首页 > 高等教育 > 大学课件

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