基于vc60的科学计算器实现内容摘要:

连续计算功能的实现为了实现连续计算,需要将上次运算得到的结果保存起来,使用变量m_save保存,m_savey用来记录m_save中的值是否有效,当无效时读取的话,会弹出对话框提示注意:无保存数据。 当读取的时候,如果未输入第一个操作数,则将读取的数作为第一个操作数使用;如果已经输入了第一个操作数,而未输入第二个操作数,则将读取的数作为第二个操作数使用;如果第一、第二个操作数都已经输入,则读取无效。 当点清除按钮时,则清除m_save中保存的数据,m_savey置为无效,即清除保存数据。 程序实现:void CCalculatorDlg::OnSave() //保存第一个操作数数据到m_save{ if(m_firsty==true) { m_save=m_first。 m_savey=true。 }}void CCalculatorDlg::OnLoad() //从m_save中读取数据作为第二个操作数{ if(m_savey==trueamp。 amp。 m_firsty==false) { m_first=m_save。 m_firsty=true。 m_x=m_first。 UpdateData(false)。 m_nonce=。 //当前操作数初始化 m_noncez=0。 m_noncex=。 m_noncew=0。 m_noncef=1。 m_noncep=false。 m_noncey=false。 } else if(m_savey==trueamp。 amp。 m_firsty==trueamp。 amp。 m_secondy==false) { m_second=m_save。 m_secondy=true。 m_x=m_second。 UpdateData(false)。 m_nonce=。 //当前操作数初始化 m_noncez=0。 m_noncex=。 m_noncew=0。 m_noncef=1。 m_noncep=false。 m_noncey=false。 } else if(m_savey==false) { AfxMessageBox(注意:无保存数据。 )。 }}void CCalculatorDlg::OnClear() //清除m_save中存储的数据{ m_save=。 m_savey=false。 } 第四章 系统运行效果与使用说明本章主要介绍了科学计算器系统的使用方法,以及展示了系统的运行效果图。 系统运行效果系统运行效果如图41所示:图4—1 科学计算器 系统使用说明本系统使用起来非常简单,当进行双操作数运算时,先输入第一个操作数,再输入双目运算符,最后输入第二个操作数,如计算5*66,只需要先输入5,再输入*,最后输入66即可;进行单操作数运算时,先输入操作数,再输入运算符,如计算sin30,先输入30,在输入sin即可;在函数运算中,还可以选择参与运算的数是弧度还是角度,如sin30与sin30o 得到的值是不一样的,弧度与角度也可以互相转换。 一次运算的值系统会记录下来当作第一个操作数,用户可以继续将其参与运算。 有些运算有一定的运算范围,当用户输入错误超过范围时,系统会弹出消息对话框提示出错原因,如输入1/0时,系统会提示“注意:除数不能为0。 ”。 程序加入了将计算结果保存的功能,使连续计算成为可能,如想计算(sin40 o)2+(cos40 o)2的值,先计算(sin40)2后将其运算结果保存起来,再计算(cos40 o)2的值,然后再与读取保存的(sin40)2的值相加,即可得出运算结果为1。 第五章 系统的测试、运行维护与评价当系统设计完成后还需要经过系统的测试阶段,以发现系统中存在的问题和不足之处。 系统评价主要是指系统建成后,经过一段时间的运行,要对系统目标与功能的实现情况进行检查,并与系统开发中设立的系统目标进行对比,及时写出系统评价报告。 系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段,系统维护工作的好坏可以决定系统生命周期的长短和使用效果。 系统的测试系统的测试主要是测试程序中的错误,以及测试运行结果是否与期望相同。 如当输入tan x求值的时候, x不能为k*ππ/2,k为整数,因为取此值时函数无意义;又如需要用m_noncey要标记当前的操作数是否有效,因为当有效时,才能参与运算,无效时参与运算是无意义的。 系统的运行维护本系统属于应用软件,主要是实现了科学计算的各种功能,运行过程当中无需大量数据的处理,因此不需要做太多系统维护之类的工作。 系统的评价本系统经过几个月的研究与开发,其主要的目标和功能都已实现,能实现科学计算器的一般的计算功能,同时还加人了一般科学计算器没有的反三角函数的运算,排列与组合的运算,角度的转换和能实现连续运算等,功能还算是比较齐全,具有一定的实际应用价值。 但由于时间仓促,还有很多的功能可以添加,却没时间实现;由于本人水平有限,系统可能还存在一些未知的问题没有得到解决,因此,系统有待于进一步的完善。 结 论在几个月的毕业设计的过程中,通过指导老师耐心、细致的指导和自身的学习、努力,使我学会了新的计算机知识,使编程能力有了进一步的提高,同时对本次毕业设计所用到的VC++也有了一定的掌握。 在整个设计过程中我也深深地体会到要把所学的知识理论转变成可实际应用的系统时所面临的种种困难,充分认识到提高运用知识、解决实际问题的能力的重要性。 在本次科学计算器系统的设计与实现的过程中,对话框的实现、控件的实现和用计算方法的原理实现函数计算是本课题的关键所在。 在设计与实现的过程中,也遇到了不少问题,但是,通过本人不懈的努力以及老师的指导和帮助,本课题所涉及的重点、难题都已基本解决,满足本次毕业设计要求。 关于本次毕业设计,我的设计已能实现科学计算器的基本运算功能,还具备一些具有特色的运算功能,如反三角函数运算、排列与组合运算、弧度与角度的转换,以及具有连续运算的能力。 但由于时间有限以及设计经验和所掌握知识的不足,还有能有更多的计算功能却没能实现。 通过本次设计的学习和实践,使我的理论知识有了进一步的加强,实践能力和独立思考的能力都得到了提高,这是我在书本上所学不到的。 这次毕业设计过程中所积累的经验将为我在今后工作岗位上发挥自己的才能奠定坚实的基础。 参考文献[1] 王正军.Visual C++ .人民邮电出版社,2006年[2] 张宏军,党留群,赵天巨等.Visual C++ .电子工业出版社,2005年[3] 潘爱民译.VC++ 技术内幕(第四版).机械工业出版社,1999年[4] 郑阿奇.Visual C++ 实用教程(第2版).电子工业出版社,2003年[5] 谭浩强.Visual C++ .电子工业出版社,2001年[6] 丘仲潘,柯渝,谢燕华等.Visual C++ 6从入门到精通.电子工业出版社,2005年[7] 许福,舒志,张威等.Visual C++ 程序设计技巧与实例.中国铁道出版社,2006年[8] 龚志翔.Visual C++ 编程实例与技巧集粹.兵器工业出版社,2004年[9] 齐舒创作室.VISUAL C++ .清华大学出版社,1999年[10]刘瑞新.Visual C++ 面向对象程序设计教程.机械工业出版社,2004年 附 录核心源代码:// : header file//if !defined(AFX_CALCULATORDLG_H__F1E03C0C_1408_4BF5_9712_452C3712B56E__INCLUDED_)define AFX_CALCULATORDLG_H__F1E03C0C_1408_4BF5_9712_452C3712B56E__INCLUDED_if _MSC_VER 1000pragma onceendif // _MSC_VER 1000include define PI /////////////////////////////////////////////////////////////////////////////// CCalculatorDlg dialogclass CCalculatorDlg : public CDialog{// Constructionpublic: CCalculatorDlg(CWnd* pParent = NULL)。 // standard constructor void InputNum(int x)。 //输入数字 void InputFun(int x)。 //输入运算符 private: CMenu *m_Menu。 //对话框菜单按钮 double m_first,m_second,m_nonce。 //记录第一、第二个、及当前操作数 bool m_firsty,m_secondy,m_noncey。 //记录第一、第二个、及当前操作数是否有效 double m_noncez,m_noncex。 //记录当前操作数的整数、小数部分 int m_noncew。 //记录当前操作数小数部分的位数 int m_noncef。 //标识当前操作数是否是负数 bool m_noncep。 //标识当前操作数是否按下了小数点符号,即是否输入的是小数部分 int m_fun。 //记录运算符 double m_result。 //记录结果 double m_save。 //保存结果 bool m_savey。 //记录保存结果是否有效// Dialog Data //{{AFX_DATA(CCalculatorDlg) enum { IDD = IDD_CALCULATOR_DIALOG }。 CEdit m_xedit。 //传递控制数据 double m_x。 //传递文本数据 int m_rora。 //标识当前操作数是弧度还是角度(0弧度,1角度) //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CCalculatorDlg) protected: virtual void DoDataExchange(CDataExchange* pDX)。 // DDX/DDV support //数据交换函数 //}}AFX_VIRTUAL// Implementationprotected: HICON m_hIcon。 // Generated message map functions //{{AFX_MSG(CCalculatorDlg) virtual BOOL OnInitDialog()。 //虚函数,可覆盖用来进行用户初始化操作 afx_msg void OnPaint()。 //响应消息ON_WM_PAINT afx_msg void OnSysCommand(UINT nID, LPARAM lParam)。 afx_msg HCURSOR OnQueryDragIcon()。 afx_msg void OnAbout()。 afx_msg void OnCE()。 afx_msg void OnBack()。 afx_msg void On1()。 afx_msg void On2()。 afx_msg void On3()。 afx_msg void On4()。 afx_msg void On5()。 afx_msg void On6()。 afx_msg void On7()。 afx_msg void On8()。 afx_msg void On9()。 afx_msg void On0()。 afx_msg void OnPoint()。 afx_msg void OnMinus()。 afx_msg void OnAdd()。 afx_msg void OnSub()。 afx_msg void OnMul()。 afx_msg void OnDiv()。 afx_msg void OnSurplus()。 afx_msg void OnExtract()。 afx_msg void OnReciprocal()。 afx_msg void OnAmount()。 afx_msg void OnSin()。 afx_msg void OnCos()。 afx_msg void OnTan()。 afx_msg void OnCot()。 afx_msg void OnArccos()。 afx_msg void OnArcsin()。 afx_msg void OnArctan()。 afx_msg void OnArccot()。 afx_msg void OnX2()。 afx_msg void OnX3()。 afx_msg void OnXY()。 afx_msg void OnExp()。 afx_msg void OnLn()。 afx_msg void OnLog()。 afx_msg void OnCnm()。 afx_msg。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。