科学计算器课程设计报告

上传人:ba****u 文档编号:129554688 上传时间:2022-08-03 格式:DOCX 页数:32 大小:575.82KB
收藏 版权申诉 举报 下载
科学计算器课程设计报告_第1页
第1页 / 共32页
科学计算器课程设计报告_第2页
第2页 / 共32页
科学计算器课程设计报告_第3页
第3页 / 共32页
资源描述:

《科学计算器课程设计报告》由会员分享,可在线阅读,更多相关《科学计算器课程设计报告(32页珍藏版)》请在装配图网上搜索。

1、EroMm*. g 顽f湖3禅外何所号圈计算机科学与技术学部C+课程设计题目科学计算器学 部计算机科学与技术班级计科1103指导教师 李 军姓 名 刘 明学 号 114304218176672012年6月27日计算器的产生和发展是建立在电子计算机基础之上的。硬件方 面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓 日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适 应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千 次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子 板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到 了每三个月更新换代一次

2、的惊人速度。软件方面,也已从机器语言、 汇编语言、高级语言发展到现如今的第四代语言非结构化、面向 对象、可视化的语言。在这个计算器里面,我们实现了简单的四则运算以及更高功能的 科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的 得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带 来便利。此系统在Windows 7环境下,使用VC+ 6.0进行编写。简单计算器包括双日运算和单日运算功能,双日运算符包含基本 的四则运算及乘幂功能,单日运算符包含正余弦,对数,开方,阶乘, 倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及 正数和负数进行以上的所有运算并能连续运算。并且

3、包含清除,退格 功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不 够多,没有其菜单的实现功能项,没有其小巧的标准计算器。关键词:计算器;运算;VC+等课程设计任务分配表:表1分配信息表姓名主要工作组长刘明程序设计和编写组贝舒兆月实验报告书的制作凡力强实验报告书的制作课程设计成绩表:表2成绩表姓名学号班级成绩组长刘明11430421817667计科1103组贝舒兆月11430727814558计科1103凡力强11430426154534计科1103采用的类的数据类型:class CCalculatorDlg : public CDialogpublic:void clean

4、_aliter();CString OLD_ANSWER;void out_change(int system);CCalculatorDlg(CWnd* pParent = NULL); / standard constructorint Sel,EndSel;定义输入或插入时光标的位置int Expr_pos;词法分析表达式时,标记当前字符位置int OS_pos ;操作数栈顶位置int old_pos;历史表达式的位置int old_head;历史表达式数组中最最前位置int old_back;历史表达式数组中最最后位置int error_mark;标记表达式错误int parenthe

5、ses_count;记录表达式中括号的个数操作数栈double operand_Stack200;表达式历史记录CString old_expression20;void getword(WordType & w_type ,Operator& Fun_Ope,int system); /词法分析函数int getword16(); int getword10(); int getword8(); int getword2();/将用字符表示的N(2,8,10,16)进制转为浮点型void E_AddSub();/加减void T_MulDiv();乘除void F_Power();/乘方vo

6、id L_Function();函数/数字void H_Digit();void P_expression(); /括号void error(int );错误标记函数阶乘void Factorial();void compute(Operator Op); 计算void clean_all();/清空表达式和计算结果protected:HICON m_hIcon;DECLARE_MESSAGE_MAP();程序中所用到相关专业知识:类,对象数组,友元函数,继承与派生,指针,枚举,,数栈,算法前言1 第一章系统需求1.1简介说明21.1.1系统要求21.1.2具体任务21.1.3研究目的21.2

7、设计分析31.2.1可行性分析31.2.2需求分析31.2.3设计结构31.3开发环境31.3.1运行环境31.3.2开发工具31.3.3 关于 Visual C+ 6.04第二章系统设计52.1功能说明52.1.1系统总体功能分析52.1.2系统功能52.1.3课程设计内容62.2设计大概62.2.1设计思路62.2.2控件定义72.2.3变量的定义以及初始化8第三章系统实现3.1窗体设计93.1.1设计步骤93.1.2控件定义93.1.3 一部分操作截图 103.2程序核心代码113.2.1数字键和字母键核心代码113.2.2计算类型函数的核心代码113.2.3提示错误的核心代码133.2

8、.4进制转换的核心代码143.2.5八进制单选按钮消息响应函数代码163.2.6二进制单选按钮消息响应函数17第四章系统运行204.1测试以及运行界面204.1.1程序主界面测试204.1.2运行的计算结果204.1.3转换进制计算214.2测试224.2.1测试研究与选择224.2.2测试环境22总结23参考文献24Visual C+(简称VC)是Microsoft公司推出的目前使用极为广泛的基于 Windows平台的C+可视化开发环境。为了方便计算,我们编写了计算器。本报告在李军老师的指导下,并且形成了比较完善的体系,本设计报告具体 包含以下内容:第一章直接介绍了基于C+语言,熟悉Visu

9、al 6.0的开发环境和 C+控制台方式的调试和运行,使学生熟悉Visual C+ 6.0更自然。以及我们编 程的背景与意义及目的,主要介绍我们编写这个程序用来做什么。第二章介绍了 我们编程的怎么去做,设计时的一些想法。第三章介绍了我们编程实用的一些技 术与核心代码,设计时的具体做法。第四章介绍我们运行时的一些具体操作,以 及我们给出的总结与参考文献。本程序编写一个程序来实现算术计算器。通过数组和指针以及枚举来存放输 入的每一数字或运算符号函数的记录(包括1、2、3等数字,+、-、*、等运算 符号)中。通过一些单击按钮实现一些标准与科学的操作混合运算,然后显示出 结果。本报告由刘明、凡力强、舒

10、照月编写,由李军老师对全报告进行修改,以及 很多同学以及网络朋友提供帮助,在此表示感谢。由于水平有限,不当之处在所难免,恳请读者批评指正。编者2012.6第一章系统需求1.1简介说明1.1.1系统要求1、用C+语言实现程序设计;2、利用MFC进行相关信息处理;3、画出总模块的流程图;4、系统的各个功能模块要求用函数的形式实现;5、界面友好(良好的人机互交),程序要有注释;1.1.2具体任务1、定义以及初始化,输入09,AF,运算符等信息;2、输入简单的运算符计算式,并显示出计算结果;3、画出总流程图;4、编写代码;5、程序分析与调试; 1.1.3研究目的1、熟悉掌握基于对话框的程序编写;2、熟

11、练掌握放置控件及control工具条的使用;3、掌握控件摆放的基本方法,熟练掌握Dialog的使用;4、熟悉建立对话框步骤;5、了解CBUTTON类的实用;6、巩固并加深学生对C+语言程序设计知识的理解;7、培养学生面向对象的程序设计思想,与其认识面向过程和对象的区别;8、进一步掌握和应用VC+ 6.0集成开发环境;9、提高运用C+语言解决实际问题的能力;10、初步掌握开发小型实用软件的基本方法,能独立设计、实践操作;11、掌握书写程序设计开发文档的能力(书写课程设计实验报告);1.2设计分析1.2.1可行性分析伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作 用。我们在学校

12、生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算 器,所以便着手开发了这个计算器程序,既紧随科技发展的前沿,又方便了我们 的生活,具有一定的现实意义。1.2.2需求分析本软件主要用于计算机Windows XP以上的用户使用,这次课程设计一般是 实现简单计算器的功能。需要程序实现:加减乘除,开方,平方,倒数等运算功 能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实 现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数 的计算,二、八、十、十六进制的转换等。1.2.3设计结构第一章主要介绍了我们做这个课程设计目地是做什么。第二章主要介绍了我们怎么去设

13、计这个课程报告以及编程。第三章主要介绍了我们实现代码的关键性技术与源码段的介绍。第四章主要介绍了我们做这个程序的运行结果与一些运算的截图。1.3开发环境1.3.1运行环境(1) Windows 7 64 位/XP 32 位系统(2) Visual C+ 6.0(中文版)编译环境1.3.2开发工具C+语言1.3.3 关于 Visual C+ 6.0Visual C+ 6.0 是 Microsoft 公司在 1998 年推出的基于 Windows 9X 和 Windows NT的优秀集成开发环境。该环境为用户提供了良好的可视化编程环境, 程序员可以利用该开发环境轻松地访问C+源代码编辑器,资源编辑

14、器和使用内 部调试器,并且可以创建项目文件。Visual C+6.0不仅包括编辑器,还包括许 多有用组件,通过这些组件的协同工作,可以在Visual C+6.0集成环境中轻松 地完成创建源文件、编辑资源以及对程序的编译、连接和调试等各项工作。 VC+6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软件 没有特殊要求。就是说它对环境的要求与Windows 95/98 Windows NT的要求是 一致的。VC+6.0系统可以在一张CD盘上,也可以在“Visual Studio (Visual C+、Visual Foxpro)”等产品的第一张CD盘上。一般都

15、有一个VC的自动安装 程序,也可以执行VC+6.0目录下的Setup.exe,在安装包的提示下进行,对初 学者可采用“典型安装”方式。在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘 重新执行Setup.exe安装程序,安装程序会检测当前系统安装VC6.0的组件,用 户单击“添加/删除”按钮后,在“安装维护”对话框中选定要与一般的应用软 件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开Microsoft Visual C+6.0中文版”子菜单中的“Microsoft Visual C+6.0中文版”程序。(2)用户也可以使用命令行启动VC,单

16、击“开始”按钮后选择“运行”命 令,在“运行”对话框中输入 C:program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装即可)。第二章系统设计2.1功能说明2.1.1系统总体功能分析此程序采用VC+编写,是一个基于对话框的应用程序,当用户在对话框点 击相应按钮时,先执行输出按钮对应字符串,用户可以在对话框上选择相应地科 学计算操作按钮,通过程序内相关代码完成相应地科学计算功能。它的设计按软件工程的方法进行,系统具有良好的界面,必要的交互信息, 简约的美观效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,也 可直接通过键盘输入。

17、即时准确地获取所需要的计算结果,充分降低了数字计算 的难度和节约了时间,对人们的生活有一定帮助。其具体的功能有:(1)运算更加简介。(2)两个对话框,一个显示输入数据,另一个显示计算结果。(3)实现计算求和,求平均的功能。(4)计算功能基本上是用系统内部函数。(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点 以0开头等不正常现象。(6)“CE”按钮可以清除所有已输出的数据从头计算。我们在学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到 科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。要 计算功能有以下几个方面:加法,减法,乘法,除法,求幕,求模

18、,求和,求平 均,求平方根,求三角函数,进制换算等。2.1.2系统功能1、十进制数的加、减、乘、除、乘方、取模等简单计算。2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、 指数等函数运算。3、以角度、弧度两种方式实现上述部分函数,梯度没有提供。4、不同进制有不同的运算方式。5、判断输入输出的正确性。2.1.3课程设计内容课题名称:计算器的实现基本说明:我们实现了一个标准计算器的运算以及科学计算器的运算的集成, 使其较之:方便、快捷、轻松,看上去美观大方,少了切换的繁琐操作,并且我 们做的更加简约。2.2设计大概2.2.1设计思路所编写的计算器是基于对话框的程序,能够

19、进行加减乘除的运算,开方,立 方,三角函数,反三角函数,阶乘,求和,求平均,进制转换运算等功能,仿照 Windows自带的计算器进行编写,如图2.2.1;2.2.2控件定义如表2.2.2(只列举一部分控件)IDCAPTIONMemberIDC_0IDC_909m_0m_9IDC_AIDCFAFm_Am_FIDC_ADD+m_ADDIDC_POINT.m_POINTIDC_POWxAym_PowIDC_SQRTSqrtm_SQRTIDC_DIVID/m_DIVIDIDC_CECEm_CEIDC_CCm_CIDC_BACKSPACEBackspacem_BACKSPACEIDC_LnLnm_LNI

20、DC_LogLogm_LOGIDC_SinSinm_SINIDC_CosCosm_COSIDC_TanTanm_TANIDC_ACOSacosm_ACOSIDC_ATANatanm_ATANIDC_XORXorm_XorIDC_BUTTON43MSm_BUTTON43IDC_MODModm_MODIDC_BUTTON40Dmsm_BUTTON40IDC_BUTTON49Avem_BUTTON49IDC_BUTTON48Summ_BUTTON48IDC_BUTTON47Sm_BUTTON47IDC_NOTNotm_NOTIDC_BUTTON46Datm_BUTTON46IDC_PIpim_PII

21、DC_BUTTON42M+m_BUTTON42IDC_BUTTON45MCm_BUTTON45IDC Equalm EQUAL2.2.3变量的定义以及初始化mt int int int int int int intSel,EndSel;Expr_pos;OS_pos ;old_pos;old_head;old_back;error_mark;parentheses_count;/定义输入或插入时光标的位置词法分析表达式时,标记当前字符位置/操作数栈顶位置历史表达式的位置历史表达式数组中最最前位置/历史表达式数组中最最后位置标记表达式错误记录表达式中括号的个数/操作数栈/表达式历史记录doub

22、le operand_Stack200;CString old_expression20;以下为初始化部分输入的光标位置插入光标的位置当前字符的位置/操作数栈顶位置以上为定义部分 Sel=0;EndSel=0;Expr_pos = 0;OS_pos = 0 ;old_pos=old_head=old_back=0;/历史表达式的位置表达式错误parentheses_count=0; /括号的个数/初始化error_mark=0;OLD_ANSWER = _T();第三章系统实现3.1窗体设计3.1.1设计步骤利用MFC AppWinzard生成计算器应用程序框架具体步骤如下:(1) 执行VC+

23、 6.0程序,选择文件新建命令,转到工程选项卡,选择MFC AppWizard(exe)选项,然后在工程名称输入名字,一般以C开头,也可以自定义, 位置路径自定义。(2) 单击确定,弹出MFC应用程序向导-步骤1对话框。选中单选按钮基本对 话框,单击完成即可,如图所示:3.(1) 为控件添加成员变量已经在系统设计里面列举出,这里就不再重复;(2) 为控件添加消息,查看-类向导命令,转到Message Maps选项卡,为控 件添加BN_CLICKED消息,单击确定即可,具体哪些控件这里就不再详细介绍了。3.1.3 一部分操作截图S Calculator - Microsoft Visual C+

24、 - CalculatorDlg.cpp * fMFC ClassWizard1=Message Maps Member VariablesProject:CalculatorE:.ACMingCalculatcControl IDs:IDCIDC IDC IDC IDC IDC IDC IDC IDC IDC IDCDescription:AutomationActiveX EventsClass InfoAdd Member VariableAdd Class. Member variable name:匚CancelAdd Variable.Delete VariableCategory

25、:Control jVariable type:CButtonDescription:map to CButton memberUpdate ColumnsBind Allsys)I I(n express取消Calculator.exe - 0 error(s), 0 vjarning(s)确定3.2程序核心代码3.2.1数字键和字母键核心代码void CCalculatorDlg:OnNumberKey(UINT nID)/按键输入(m_Edit.GetSel(Sel,EndSel); /得到输入框的光标位置switch(nID)(/在光标位置插入按钮表示的字符,在输入框插入相应的数值ca

26、se IDC_0:( m_expression.Insert(Sel,0);break;case IDC_1:( m_expression.Insert(Sel,1);break;case IDC_2:( m_expression.Insert(Sel,2);break;case IDC_3:( m_expression.Insert(Sel,3);break;case IDC_4:( m_expression.Insert(Sel,4);break;case IDC_5:( m_expression.Insert(Sel,5);break;case IDC_6:( m_expression.

27、Insert(Sel,6);break;case IDC_7:( m_expression.Insert(Sel,7);break;case IDC_8:( m_expression.Insert(Sel,8);break;case IDC_9:( m_expression.Insert(Sel,9);break;case IDC_A:( m_expression.Insert(Sel,A);break;case IDC_B:( m_expression.Insert(Sel,B);break;case IDC_C:( m_expression.Insert(Sel,C);break;case

28、 IDC_D:( m_expression.Insert(Sel,D);break;case IDC_E:( m_expression.Insert(Sel,E);break;case IDC_F:( m_expression.Insert(Sel,F);break;Sel+; /光标后移UpdateData(FALSE);m_Edit.SetSel(Sel,Sel); /更新输入框光标后移位置 UpdateData(FALSE);3.2.2计算类型函数的核心代码void CCalculatorDlg:compute(Operator Op)( 根据操作计算类型,计算结果switch(Op)(

29、case OpAdd:( operand_StackOS_pos-2+=operand_StackOS_pos-1;OS_pos-;break; case OpSubtract:( operand_StackOS_pos-2-=operand_StackOS_pos-1;OS_pos-;break; case OpMultiply:( operand_StackOS_pos-2*=operand_StackOS_pos-1;OS_pos-;break; case OpDivide:( if(operand_StackOS_pos-1=0) (error(5); break;elseoperan

30、d_StackOS_pos-2/=operand_StackOS_pos-1;OS_pos-; break;case OpMod:( if(operand_StackOS_pos-1=0) (error(5); break;else( _int64 temp=0;temp = (_int64)(operand_StackOS_pos-2/operand_StackOS_pos-1);operand_StackOS_pos-1*=temp;operand_StackOS_pos-2-=operand_StackOS_pos-1;OS_pos-; break; case OpPower:( ope

31、rand_StackOS_pos-2 = pow(operand_StackOS_pos-2,operand_Stac kOS_pos-1);OS_pos-;break;case OpLog:( operand_StackOS_pos-1=log10(operand_StackOS_pos-1);break;case OpLn:( operand_StackOS_pos-1=log(operand_StackOS_pos-1);break;case OpSqrt:( operand_StackOS_pos-1=sqrt(operand_StackOS_pos-1);break;case OpE

32、xp:( operand_StackOS_pos-1 = exp(operand_StackOS_pos-1);break;case OpSin:( if(m_Radio2 =0) operand_StackOS_pos-1=operand_StackOS_pos-1*P I/180;operand_StackOS_pos-1 = sin(operand_StackOS_pos-1);break;case OpCos:( if(m_Radio2 =0) operand_StackOS_pos-1=operand_StackOS_pos-1*P I/180;operand_StackOS_pos

33、-1 = cos(operand_StackOS_pos-1);break;case OpTan:( if(m_Radio2 =0) operand_StackOS_pos-1=operand_StackOS_pos-1*PI/180; operand_StackOS_pos-1 = tan(operand_StackOS_pos-1); break;case OpAsin:( if(operand_StackOS_pos-11|operand_StackOS_pos-11|operand_StackOS_pos-1-1)( error(9); return ;operand_StackOS_

34、pos-1 = acos(operand_StackOS_pos-1);if(m_Radio2 =0)operand_StackOS_pos-1=operand_StackOS_pos-1*180/PI;break; case OpAtan:( operand_StackOS_pos-1 = atan(operand_StackOS_pos-1);if(m_Radio2 =0)operand_StackOS_pos-1=operand_StackOS_pos-1*180/PI;break; case OpFactorial:(if(OS_pos=0) ( error(1); return ;l

35、ong k;k =(long) operand_StackOS_pos-1;if(k operand_StackOS_pos-1)( error(8); return ;_int64 temp =1;for(long i=1; i=k ;i+)( temp *= i; /operand_StackOS_pos-1 *=i; /* m_result.Format(_T(I64X),temp);UpdateData(FALSE);MessageBox(sdfsd);*/operand_StackOS_pos-1=(double)temp;break;3.2.3提示错误的核心代码void CCalc

36、ulatorDlg:error(int error_type)错误类型 错误处理switch(error_type)case 1: m_result=错误:缺少操作数! ;break;case 2: m_result=”错误:括号不匹配! ”;break;case 3: m_result=”错误:函数名不正确! ! ;break;case 4: m_result=”错误:非法输入! ! ;break;case 5: m_result=错误:出现除数为零! ! ;break;case 6: m_result=”错误:函数缺少括号! ! ”;break;case 7: m_result=”错误:缺

37、少运算符! ! ;break;case 8: m_result=错误:阶乘操作数不是整数! ! ”;break;case 9: m_result=asin 和 acos 函数计算必须在-1,1内! ! ;break;error_mark=1; 3.2.4进制转换的核心代码void CCalculatorDlg:getword(WordType & w_type ,Operator& Fun_Ope,int system) 进制转为浮点型(/词法分析器,参数w_type ,Fun_Ope,system分别表示单词类型,操作运算 类型,进制类型int t=m_expression.GetLengt

38、h();if(t=0) (error(4); return ; 表达式为空则返回if(Expr_pos=0& m_expressionExpr_pos=A& m_expressionExpr_pos=F) (/当前字符为数字则转换为浮点数压入操作数栈if(Expr_pos+1)=a& m_expressionExpr_pos=z)/*当前字符为字母则,把字母串保存到str中*/char str100二;int i=0;while(Expr_pos=a& m_expressionExpr_pos =t) (error(3); w_type = TyFun; return ;表达式结束,则报错/*

39、以下if else语句为匹配字符串*/if(strcmp(str,ln)=O)Fun_Ope=OpLn;else if(strcmp(str,log)=O)Fun_Ope=OpLog;else if(strcmp(str,sqrt)=O)Fun_Ope=OpSqrt;else if(strcmp(str,exp)=O)Fun_Ope=OpExp;else if(strcmp(str,sin)=O)Fun_Ope=OpSin;else if(strcmp(str,cos)=O)Fun_Ope=OpCos;else if(strcmp(str,tan)=O)Fun_Ope=OpTan;else i

40、f(strcmp(str,asin)=O)Fun_Ope=OpAsin;else if(strcmp(str,acos)=O)Fun_Ope=OpAcos;else if(strcmp(str,atan)=O)Fun_Ope=OpAtan;/else if(m_expressionExpr_pos=()w_type = TyFun;else error(3);w_type = TyFun; return ;匹配不到函数单词,报错w_type = TyFun; return ;switch(m_expressionExpr_pos)(/*当前字符为操作运算符,则设置单词类型,和操作运算*/cas

41、e +: ( Fun_Ope=OpAdd; Expr_pos+; w_type=oper; break;case -: ( Fun_Ope=OpSubtract; Expr_pos+;w_type=oper;break;case *: ( Fun_Ope=OpMultiply; Expr_pos+;w_type=oper; break;case /: ( Fun_Ope=OpDivide; Expr_pos+; w_type=oper;break;case : ( Fun_Ope=OpPower; Expr_pos+; w_type=oper;break;case (: ( Fun_Ope=L

42、eft_par; Expr_pos+; w_type=oper;break;case ): ( Fun_Ope=Right_par; Expr_pos+; w_type=oper;break;case %: ( Fun_Ope=OpMod; Expr_pos+; w_type=oper;break;default:(error(4); return ;/其他字符都为非法字符,报错 else if(Expr_pos=t)w_type=TyEnd; /表达式已结束,返回else (error(4); return ;3.2.5八进制单选按钮消息响应函数代码void CCalculatorDlg:O

43、nOctal() /八进制单选按钮消息响应函数(/ TODO: Add your control notification handler code hereWordType type ;Operator Ope;CString result;int system;system = m_Radio1;m_Radio1 = 2 ;if(OLD_ANSWER.GetLength()0) m_expression = OLD_ANSWER;UpdateData(FALSE);getword(type,Ope,system);if(type=Tynum&(!error_mark)&(Expr_pos=

44、m_expression.GetLength()(out_change(m_Radio1);result = m_result;clean_all();m_expression = m_result = result;UpdateData(FALSE)Sel = m_expression.GetLength();m_Edit.SetSel(Sel,Sel);UpdateData(FALSE);else(Expr_pos = 0;OS_pos = 0 ;error_mark=0;parentheses_count=0;m_result = _T();m_2.EnableWindow(TRUE);

45、m_3.EnableWindow(TRUE);m_4.EnableWindow(TRUE);m_5.EnableWindow(TRUE);m_6.EnableWindow(TRUE);m_7.EnableWindow(TRUE);m_8.EnableWindow(FALSE);m_9.EnableWindow(FALSE);m_A.EnableWindow(FALSE);m_B.EnableWindow(FALSE);m_C.EnableWindow(FALSE);m_D.EnableWindow(FALSE);m_E.EnableWindow(FALSE);m_F.EnableWindow(

46、FALSE);m_PI.EnableWindow(FALSE);3.2.6二进制单选按钮消息响应函数void CCalculatorDlg:OnBinary() /二进制单选按钮消息响应函数 (/ TODO: Add your control notification handler code here /E_AddSub();WordType type ;Operator Ope;CString result;int system;system = m_Radio1;m_Radio1 = 3 ;if(OLD_ANSWER.GetLength()0) m_expression = OLD_AN

47、SWER;UpdateData(FALSE);getword(type,Ope,system);if(type=Tynum&(!error_mark)&(Expr_pos=m_expression.GetLength()(out_change(m_Radio1);result = m_result;clean_all();m_expression = m_result = result;UpdateData(FALSE);Sel = m_expression.GetLength();m_Edit.SetSel(Sel,Sel);UpdateData(FALSE);else(Expr_pos =

48、 0;OS_pos = 0 ;error_mark=0;parentheses_count=0;m_result = _T();m_2.EnableWindow(FALSE);m_3.EnableWindow(FALSE);m_4.EnableWindow(FALSE);m_5.EnableWindow(FALSE);m_6.EnableWindow(FALSE);m_7.EnableWindow(FALSE);m_8.EnableWindow(FALSE);m_9.EnableWindow(FALSE);m_A.EnableWindow(FALSE);m_B.EnableWindow(FAL

49、SE);m_C.EnableWindow(FALSE);m_D.EnableWindow(FALSE);m_E.EnableWindow(FALSE);m_F.EnableWindow(FALSE);m_PI.EnableWindow(FALSE);第四章系统运行4.1测试以及运行界面4.1.1程序主界面测试图4.1.1主界面运行的截图4.1.2运行的计算结果煲可学计箕器漏辑查差帮助关于i+H1103 24467 375 SO478+56476125二进制 认进制+进制+六进制吉输入可78+56 M柱下等于健得出结果5125弧度 厂梯度ZIEDEBIZ L一!一1 日图4.1.22操作计算器进

50、行计算4.1.3转换进制计算图4.1.3(1)利用八进制进行计算图4.1.3(2)利用十六进制进行计算4.2测试4.2.1测试研究与选择测试过程中要判断是否成功,要分析程序界面的变化和计算数据的结果是 否正确以及各功能键是否能正常实用。(梯度不能实用)4.2.2测试环境测试系统:Windows 7 64位测试工具:Visual Studio C+ 6.0(中文版)总结经过多番测试,得出结论为设计的计算器能够完成功能描述内容中的全部功 能。经过几个星期的VC+课程设计,我们顺利完成该课程设计,并收获良多。 我们大体总结了以下几点:基本功要过硬,不能马虎经常犯的小错误。提高自己找错纠错能力,通常错

51、 误总是那几种,多练习就熟练了。要善于查找资料,提高自己的资料查询能力,要善于利用网络来获得知识, 获得帮助。开始着手程序设计时,有些功能感觉无从下手,都不知道要干什么, 这些问题这要找到相关的资料就会得到提示从而理解所要解决问题的大致方向。 有了明确的目的,就可以发挥自己的头脑来完成它了。要善于思考,程序中有些实现难点和最初完成程序时免不了的许多不足就需 要自己根据代码认真思考来解决。只有这样才能纠正程序的不足,并使其更加人 性化。这次课程设计让我们学到了很多,不仅巩固了 MFC程序设计知识,而且也 培养了我们的动手能力,令我们的创造性思维得到拓展。期待今后有更多类似的 锻炼机会。通过这次课

52、程设计,可以明显的感觉到它弥补了课程教学的和实验中知识的 深度和广度方面的不足,也让我们进一步掌握了面向对象程序设计的基本方法和 编程技巧,同时也巩固所学理论知识,似然花费了不止一点点的时间和精力,不 过那确实挺值得的,既让我们认识到自己知识方面的缺陷,又培养了我独立分析 问题、解决问题的能力。课程设计是需要大量时间去动手练习才能体验到它的内涵的,同时还需要用 心地投入,时间和情感花下去之后,的确感受到有所收获,增加了对编程的兴趣。 通过这次课程设计,掌握了对话框的相关操作,也体会到书写代码一定要仔细, 有时候一小点拼写错误会浪费很多调试程序的时间,再有一点就是要好好学习英 语,对编程有很大帮助。总之,这次课程设计学到了很多,通过实践真正的做到 了学有所用。参考文献1 郑阿奇,Visual C+实用教程(第三版),北京:电子工业出版社,20002 严华峰,Visual C+课程设计案例精编,北京:中国水利水电出版社,2002

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!