VC++课程设计(论文)计算器的设计.doc

上传人:文库蛋蛋多 文档编号:2385755 上传时间:2023-02-17 格式:DOC 页数:15 大小:209.50KB
返回 下载 相关 举报
VC++课程设计(论文)计算器的设计.doc_第1页
第1页 / 共15页
VC++课程设计(论文)计算器的设计.doc_第2页
第2页 / 共15页
VC++课程设计(论文)计算器的设计.doc_第3页
第3页 / 共15页
VC++课程设计(论文)计算器的设计.doc_第4页
第4页 / 共15页
VC++课程设计(论文)计算器的设计.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《VC++课程设计(论文)计算器的设计.doc》由会员分享,可在线阅读,更多相关《VC++课程设计(论文)计算器的设计.doc(15页珍藏版)》请在三一办公上搜索。

1、中北大学课程设计任务书 09/10 学年第 一 学期学 院: 信息商务学院 专 业: 电子信息科学与技术 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 课程设计题目: 程序设计综合实践 起 迄 日 期: 2009年12月21 日2010年1月15日 课程设计地点: 专业实验室 指 导 教 师: 系 主 任: 下达任务书日期: 2009 年12 月 21日课 程 设 计 任 务 书1设计目的:(1) 掌握VC+程序开发平台;(2) 掌握对话框模式的可视化实现和按钮消息的响应;(3) 掌握应用VC+库函数实现数字的输入、计算和显示等

2、功能。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)查阅相关资料,掌握基于面向对象的编程方法;(2)主界面采用对话框模式,编辑计算器相应的控件;(3)实现数据的输入、计算和显示;(4)要求4位同学各自实现不同分工。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:(1) 要求设计组的每个成员都要了解设计的要求和思路;(2) 编写详细的设计说明书一份;(3) 要求有正确的运行结果及结果分析。课 程 设 计 任 务 书4主要参考文献:1 王华, 叶爱亮, 祁立学等. Visual C+ 6.0 编程实例与技巧. 北京:机械工业出版社, 1999.2

3、 李光明. Visual C+ 6.0 经典实例大制作. 北京:中国人事出版社,2000.3 严华峰. Visual C+ 课程设计案例精编. 北京:中国水利水电出版社,2002.4 官章全, 刘加明. Visual C+ 6.0 类库大全. 北京:电子工业出版社,1999.5 张荣梅,梁晓林. Visual C+实用教程. 北京:冶金工业出版社,2004.6 魏亮,李春葆. Visual C+程序设计例学与实践. 北京:清华大学出版社,2006.7 陈清华, 朱红. Visual C+课程设计案例精选与编程指导. 南京:东南大学出版社,2004.5设计成果形式及要求:提供详细的设计说明书一份

4、软件设计结果6工作计划及进度:2009年12月14日 12月21日: 学习VC有关编程方法;12月22日 12月30日: 在指导教师指导下实现程序设计,并完成课程设计说明书的撰写;12月31日:答辩。系主任审查意见: 签字: 年 月 日 目 录1、设计目的 2、设计方案介绍 3、设计主要步骤 4、源程序代码 5、运行结果 6、设计评述 7、参考文献 图1一、设计目的简介 在实践中掌握VC+程序开发平台,学会应用VC+库函数,编辑计算器相应的控件实现数字的输入,计算,显示等功能。二、设计主要方案介绍1、 在Visual C+ 6.0 环境下首先通过“新建”利用MFC向导建立一个基于模态对话框的M

5、FC应用程序,然后再通过“资源”插入一个对话框IDD_CALCULATOR_DIALOG作为计算机器的主要运算界面,再利用ClassWizard创建与它关联的类CCalculatorDlg,并为该类添加相应的成员,设置各种属性;2、 在对话框中添加51个按纽、2个编辑框作为输入和输出显示、8个单选按钮、3个静态文本控件,并为控件添加相关联的成员变量,整体界面见上图:3、 分别为按纽、文本框添加VC+6.0代码,关联变量与控件之间的关系,以实现所要实现的功能。三、设计主要步骤 1、创建应用程序(1)选择FileNew菜单命令,并在弹出的新建对话框中单击Project标签。 (2)选择MFC Ap

6、pWizard(exe),并在Project Name编辑框中输入Calculator作为工程名称。单击OK按钮,出现Step1对话框。2、创建对话资源 在工程工作区中单击Resource View标签显示应用程序资源。单击Dialog旁边的“十”,再双击IDDCALCULATOR_DIALOG并编辑对话框资源,编辑后的对话框如图1所示。 3、添加消息处理函数 首先利用Class Wizard 为编辑框控件增加CString型成员变量m_result用于结果显示,然后使用Class Wizaed为对话框类CcalculatorDlg增加消息处理函数,ClassWizard会自动完成有关的函数声

7、明。4、为各按钮添加消息处理函数。5、添加成员处理函数和成员变量。6、添加完成各个功能的代码。7、添加处理科学计算的功能8、动态设置计算器大小。9、制度的选择,程序运行默认制度选中角度,当选项中“角度”按钮时,则需将其转换为角度计算,由公式:弧度PI*角度180,可将表达式中角度转换为弧度既sll-1=PI*sll-1/180。对于反、正余弦和反正余切,由于C+math.h库函数提供的计算结果是弧度的,所以当选中默认的“弧度”按钮时可不必将计算结果转换,当选中“角度”按钮时,则由公式:角度=弧度*180/PI,既可计算出来。10、结果进制数的转换,十进制转换为二进制、八进制和十六进制是采用的是

8、取余法。二进制、八进制和十六进制转换为十进制采用的是加权法。其它进制的转换则遵循1位八进制相当于3位二进制,1位十六制相当于4位二进制的规律进行转换。11、常数表,定义了11个比较多用的常数值,方便计算。11个常数值存放的位置是一个弹出式菜单m_menu。12、历史表达式,首先创建一个菜单使用函数CreatePopupMenu(),然后定义一个函数AddToHistr(CString strExp)将表达式strExp的内容添加到菜单,其中在函数中,GetMenuItemCount()是用来获取菜单中子菜单个数,AppendMenu(MF_STRING,IMENU_ITEM_ID+b,strE

9、xp)是用来在菜单的未尾添加子菜单中,m_menuItem.Add(strExp)是将表达式strExp显示为菜单内容。有了这些处理后,则在“计算”按钮的消息映射函数上用AddToHistr(m_strExp)将计算表达式和结果加到菜单上,在“历史表达式”按钮的消息映射函数上用GetCursorPos(&point)获取光标所在位置,并用m_menu2.TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,this)在光标所在位置上显示菜单内容。菜单存历史表达式是在内存空间中静态分配一片内存用于存放,将分配内存不够时将不再存放。13、查错处理,主要检查表

10、达是否为空,二元运算符是否少了操作数,一元运算符的函数表达式为空,是否缺少二元运算符,结果进制的转换是否越界。三、部分代码定制的消息处理函数void CNewButton:OnMouseMove(UINT nFlags, CPoint point) SetTimer(1,10,NULL);CButton:OnMouseMove(nFlags, point);BOOL CNewButton:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) if (bHighlight) :SetCursor(hHand);return true;retur

11、n CButton:OnSetCursor(pWnd, nHitTest, message);处理运算函数void CCalculatorDlg:MultiE(CString *strExp)if(strExp-IsEmpty()*strExp=ERROR_函数表达式为空_;if(IsDigital(*strExp)return;处理一元运算while(1)for(int i=0;iFind(opti);if(pos!=-1)CString str=strExp-Right(strExp-GetLength()-pos-opti.GetLength();double dx=StoN(str);

12、if(m_strTmp=str) *strExp=ERROR+str+_无法识别的函数_;return;strExp-Delete(pos,strExp-GetLength()-pos);*strExp+=SingleE(opti,dx)+m_strTmp;MinusMinus(strExp);if(pos=1)char ch=strExp-GetAt(pos-1);if(ch=48 & chFind();if(pos=-1)break;elseCalcu(strExp,pos);while(1)pos=strExp-Find(/);if(pos=-1) break;else Calcu(st

13、rExp,pos);while(1)pos=strExp-Find(*);if(pos=-1) break;else Calcu(strExp,pos);while(1)pos=strExp-Find(%);if(pos=-1) break;else Calcu(strExp,pos);pos=0;if(strExp-GetAt(0)=- | strExp-GetAt(0)=+)strExp-Insert(0,0);while(1)int tmpos=strExp-Right(strExp-GetLength()-pos).Find(-);if(tmpos=-1)break;elsepos+=

14、tmpos;if(pos=0 & posGetLength() & strExp-GetAt(pos+1)=- | pos0)if(strExp-GetAt(pos+1)=+)strExp-Delete(pos+1);pos=0;continue;四、运行结果计算表达式:sin( 25+5 )+abs( 8 ) 结果为:8.500000000000000 结果转换成二进制为:1000.1 结果转换成八进制为:10.4 转换成十六制为:8.8五、设计心得在做这个课程设计之前,我只学过C+语言,对Visual C+的设计一无所知,但通过一个月的摸索和讨论,掌握了很多Visual C+设计的技术。我

15、个人觉得VisualC+要比C+方便但比较难。我觉得此次实验主要是我们掌握面向对象技术相关的一些软件开发技术。利用MFC类库开发Windows应用程序,怎样用计算器控件实现数字的输入、计算和显示等功能。刚开始设计时,还停留在C+的基础上,总也弄不对。后来经老师指导才发现C+与VC+有很大的不同。通过这次课程设计,我知道了很多知识,所以我感谢这次的课程设计。 六、参考资料 1、王华, 叶爱亮, 祁立学等. Visual C+ 6.0 编程实例与技巧. 北京:机械工业出版社, 1999.2、李光明. Visual C+ 6.0 经典实例大制作. 北京:中国人事出版社,2000.3、严华峰. Visual C+ 课程设计案例精编. 北京:中国水利水电出版社,2002.4、官章全, 刘加明. Visual C+ 6.0 类库大全. 北京:电子工业出版社,1999.5、张荣梅,梁晓林. Visual C+实用教程. 北京:冶金工业出版社,2004.6、魏亮,李春葆. Visual C+程序设计例学与实践. 北京:清华大学出版社,2006.7、陈清华, 朱红. Visual C+课程设计案例精选与编程指导. 南京:东南大学出版社,2004.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号