ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:54.62KB ,
资源ID:475516      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-475516.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mfc计算器实验报告Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

mfc计算器实验报告Word文档格式.docx

1、系统设计说明1. 计算器界面计算器界面包括主题“高级计算器”和背景图片以及电子日历。在计算区上有显示文本框和数字按钮以及运算符按钮。在计算区上部分有运算模式选择模块和小提示语句。2. 模块功能简介系统分为多个模块,分别为计算模块、错误分析模块、界面显示模块和模式选择模块。其中计算模块用来进行各种基本的加、减、乘、除的运算并且显示运算结果;错误分析模块用来进行错误处理;界面显示模块用来美化计算器界面;模式选择模块用来进行运算模式的选择和切换,以实现不同的运算要求。3. 系统结构图系统技术文档 1. 系统各模块主要流程图(1) 单步运算流程图(2) 算式运算流程图2. 软件总体测试方案与测试记录运

2、行程序,然后查看计算器界面和设计是否相同,进行运算模式的切换,看是否能正确的进行模式切换,查看日历显示是否正确。经测试没有发现错误,系统运行正常。3. 局部测试方案与测试记录运行程序,在不同的运算模式下输入数据然后进行调试。在单步运算模式下应分别测试加、减、乘、除以及除数为0和被除数小于除数这两种特殊情况。在算式运算模式下除了要测试与单步运算相同的内容外,还应注意算术优先级是否正确,运算结果是否正确。注意清零功能是否能够正确实现。系统运行结果和记录1. 软件运行界面图2. 软件运行数据输入和结果界面图(1) 单步运算界面图1 单步运算模式显示界面2 计算5.69的输入过程和结果界面3 清零时的

3、界面4 除数为0时的错误判断界面(2) 算式运算界面图1 算式运算模式显示界面2 计算2.3+3.66-26.5+66.8的输入过程和结果界面系统使用说明书: 首先进行模式选择,在单步运算时,先点击下一个数字,再点击运算符,再点击下一个数字,然后点击等于号显示结果,如果被除数为零,则提示错误,按清零键后重新输入。在算式运算时,随便输入一个算式,计算器可识别算式错误不显示,显示的就是输入的算式,点等于号后显示结果,如果被除数为零,则提示错误,按清零键后重新输入,如果输入一个运算符后,只能输入数字不能再输入运算符,如果此时点击运算符,则不会显示在算式中。C+程序设计设计性实验收获与总结:1. 通过

4、这次实验,我进一步了解并掌握了MFC控件的基本用法,在之前制作简单计算器的基础上,增加了新的功能,制作了高级计算器。2. 在制作算式运算模式的过程中,由于涉及到算术优先级和运算符号的匹配问题,因此用到了二叉树的数据存储结构,通过对数据组织、存储、以及二叉树的后序遍历及其它操作实现了算式运算的识别和计算。3. 通过使用动态链接库,将计算器的基本计算功能在程序外进行实现,使得整个程序结构化更加鲜明,也使得程序的修改和维护更加方便简单。4. 通过这次实验,使我对C+语言有了更深的掌握,提高了我的编程能力和Visual C+的使用能力。5. 在这次的高级计算器制作之后,我掌握了面向对象技术相关的一些软

5、件开发技术,包括利用MFC开发Windows应用程序以及使用动态链接库。参考文献1. 谭浩强编著 C程序设计(第三版) 北京 清华大学出版社 20052谭浩强编著 C程序设计题解与上机指导(第三版) 北京 清华大学出版社 20053. Decoder编著 C/C+程序设计 北京 中国铁路出版社 20024. 朱站立编著 数据结构(C语言版) 西安 西安交通大学出版社 2006附录:源程序代码(1) 动态链接库源程序代码_declspec(dllexport) double Add(double a, double b)return a+b; _declspec(dllexport) doubl

6、e Sub(double a, double b)return a-b;_declspec(dllexport) double Multiply(double a, double b)return a*b;_declspec(dllexport) double Divide(double a, double b)return a/b;(2) 计算器源程序代码#include stdafx.hMyGrant_Caculator.hMyGrant_CaculatorDlg.h/#include#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEsta

7、tic char THIS_FILE = _FILE_;#endifchar oper,ch20;int dian=0,q=0;CString s1,stri;int m=0,k=0,n=0,a=0;/m=0输入单步运算, m=1 输入算式运算CString tt,aa,ss;CString str,num20;double aaa;int s=0,i=0,j,www;double x1,x2,x;_declspec(dllexport) double Add(double a,double b);_declspec(dllexport) double Sub(double a,double

8、b);_declspec(dllexport) double Multiply(double a,double b);_declspec(dllexport) double Divide(double a,double b);/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic: CAboutDlg();/ Dialog Data /AFX_DATA(CAboutDlg) enum IDD = IDD_ABOUTBOX ; /AFX_DATA / ClassWizard generated vir

9、tual function overrides /AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected: /AFX_MSG(CAboutDlg) /AFX_MSG DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_I

10、NITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CAboutDlg) /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) / No message handlers /AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyGrant_CaculatorDlg dialogCMyGrant_CaculatorDlg:CMyGrant_Cacula

11、torDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyGrant_CaculatorDlg:IDD, pParent)/AFX_DATA_INIT(CMyGrant_CaculatorDlg) m_text = _T(); / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyGrant_CaculatorDlg: /AFX_DATA_MAP(CMyGrant_C

12、aculatorDlg) DDX_Text(pDX, IDC_EDIT1, m_text);BEGIN_MESSAGE_MAP(CMyGrant_CaculatorDlg, CDialog) /AFX_MSG_MAP(CMyGrant_CaculatorDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_num1, Onnum1) ON_BN_CLICKED(IDC_num2, Onnum2) ON_BN_CLICKED(IDC_num3, Onnum3) ON_BN_CLICKED(IDC

13、_num4, Onnum4) ON_BN_CLICKED(IDC_num5, Onnum5) ON_BN_CLICKED(IDC_num6, Onnum6) ON_BN_CLICKED(IDC_num7, Onnum7) ON_BN_CLICKED(IDC_num8, Onnum8) ON_BN_CLICKED(IDC_num9, Onnum9) ON_BN_CLICKED(IDC_Dian, OnDian) ON_BN_CLICKED(IDC_num0, Onnum0) ON_BN_CLICKED(IDC_Add, Onadd) ON_BN_CLICKED(IDC_Sub, Onsub) O

14、N_BN_CLICKED(IDC_Multiply, Oncheng) ON_BN_CLICKED(IDC_Divide, Onchu) ON_BN_CLICKED(IDC_Deng, OnDeng) ON_BN_CLICKED(IDC_Esc1, OnEsc1) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2) ON_BN_CLICKED(IDC_EDIT2, OnEdit2) ON_NOTIFY(DTN_CLOSEUP, IDC_DATETIMEPICKER1, OnCloseupDatetime

15、picker1)/ CMyGrant_CaculatorDlg message handlersBOOL CMyGrant_CaculatorDlg:OnInitDialog()OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);AppendMenu(M

16、F_STRING, IDM_ABOUTBOX, strAboutMenu); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon / TODO: Add extra initialization here return TRUE; / retur

17、n TRUE unless you set the focus to a controlOnSysCommand(UINT nID, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC ap

18、plications using the document/view model,/ this is automatically done for you by the framework.OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXI

19、CON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon);OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the

20、minimized window.HCURSOR CMyGrant_CaculatorDlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;Onnum1() / TODO: Add your control notification handler code here if(m=0) s1=s1+1; m_text=s1; else if(m=1) q=0; numi=numi+ m_text=m_text+ UpdateData(false);Onnum2() 2 q=0;Onnum3() 3Onnum4() if(m=0)4 numi=numi+Onnum5() 5 q=0;Onnum6() 6 numi=numi+Onnum7() 7Onnum8() 8Onnum9() 9OnDian() if(dian=

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2