VC++课程设计(论文)-计算器的设计.doc_第1页
VC++课程设计(论文)-计算器的设计.doc_第2页
VC++课程设计(论文)-计算器的设计.doc_第3页
VC++课程设计(论文)-计算器的设计.doc_第4页
VC++课程设计(论文)-计算器的设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中北大学课程设计任务书 09/10 学年第 一 学期学 院: 信息商务学院 专 业: 电子信息科学与技术 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 学 生 姓 名: 学 号: 课程设计题目: 程序设计综合实践 起 迄 日 期: 2009年12月21 日2010年1月15日 课程设计地点: 专业实验室 指 导 教 师: 系 主 任: 下达任务书日期: 2009 年12 月 21日课 程 设 计 任 务 书1设计目的:(1) 掌握vc+程序开发平台;(2) 掌握对话框模式的可视化实现和按钮消息的响应;(3) 掌握应用vc+库函数实现数字的输入、计算和显示等功能。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)查阅相关资料,掌握基于面向对象的编程方法;(2)主界面采用对话框模式,编辑计算器相应的控件;(3)实现数据的输入、计算和显示;(4)要求4位同学各自实现不同分工。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:(1) 要求设计组的每个成员都要了解设计的要求和思路;(2) 编写详细的设计说明书一份;(3) 要求有正确的运行结果及结果分析。课 程 设 计 任 务 书4主要参考文献: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.5设计成果形式及要求:提供详细的设计说明书一份软件设计结果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向导建立一个基于模态对话框的mfc应用程序,然后再通过“资源”插入一个对话框idd_calculator_dialog作为计算机器的主要运算界面,再利用classwizard创建与它关联的类ccalculatordlg,并为该类添加相应的成员,设置各种属性;2、 在对话框中添加51个按纽、2个编辑框作为输入和输出显示、8个单选按钮、3个静态文本控件,并为控件添加相关联的成员变量,整体界面见上图:3、 分别为按纽、文本框添加vc+6.0代码,关联变量与控件之间的关系,以实现所要实现的功能。三、设计主要步骤 1、创建应用程序(1)选择filenew菜单命令,并在弹出的新建对话框中单击project标签。 (2)选择mfc appwizard(exe),并在project name编辑框中输入calculator作为工程名称。单击ok按钮,出现step1对话框。2、创建对话资源 在工程工作区中单击resource view标签显示应用程序资源。单击dialog旁边的“十”,再双击iddcalculator_dialog并编辑对话框资源,编辑后的对话框如图1所示。 3、添加消息处理函数 首先利用class wizard 为编辑框控件增加cstring型成员变量m_result用于结果显示,然后使用class wizaed为对话框类ccalculatordlg增加消息处理函数,classwizard会自动完成有关的函数声明。4、为各按钮添加消息处理函数。5、添加成员处理函数和成员变量。6、添加完成各个功能的代码。7、添加处理科学计算的功能8、动态设置计算器大小。9、制度的选择,程序运行默认制度选中角度,当选项中“角度”按钮时,则需将其转换为角度计算,由公式:弧度pi*角度180,可将表达式中角度转换为弧度既sll-1=pi*sll-1/180。对于反、正余弦和反正余切,由于c+math.h库函数提供的计算结果是弧度的,所以当选中默认的“弧度”按钮时可不必将计算结果转换,当选中“角度”按钮时,则由公式:角度=弧度*180/pi,既可计算出来。10、结果进制数的转换,十进制转换为二进制、八进制和十六进制是采用的是取余法。二进制、八进制和十六进制转换为十进制采用的是加权法。其它进制的转换则遵循1位八进制相当于3位二进制,1位十六制相当于4位二进制的规律进行转换。11、常数表,定义了11个比较多用的常数值,方便计算。11个常数值存放的位置是一个弹出式菜单m_menu。12、历史表达式,首先创建一个菜单使用函数createpopupmenu(),然后定义一个函数addtohistr(cstring strexp)将表达式strexp的内容添加到菜单,其中在函数中,getmenuitemcount()是用来获取菜单中子菜单个数,appendmenu(mf_string,imenu_item_id+b,strexp)是用来在菜单的未尾添加子菜单中,m_menuitem.add(strexp)是将表达式strexp显示为菜单内容。有了这些处理后,则在“计算”按钮的消息映射函数上用addtohistr(m_strexp)将计算表达式和结果加到菜单上,在“历史表达式”按钮的消息映射函数上用getcursorpos(&point)获取光标所在位置,并用m_menu2.trackpopupmenu(tpm_centeralign,point.x,point.y,this)在光标所在位置上显示菜单内容。菜单存历史表达式是在内存空间中静态分配一片内存用于存放,将分配内存不够时将不再存放。13、查错处理,主要检查表达是否为空,二元运算符是否少了操作数,一元运算符的函数表达式为空,是否缺少二元运算符,结果进制的转换是否越界。三、部分代码定制的消息处理函数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;return 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);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(strexp,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+=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+设计的技术。我个人觉得visualc+要比c+方便但比较难。我觉得此次实验主要是我们掌握面向对象技术相关的一些软件开发技术。利用mfc类库开发windows应用程序,怎样用计算器控件实现数字的输入、计算和显示等功能。刚开始设计时,还停留在c+的基础上,总也弄不对。后来经老师指导才发现c+与vc+有很大的不同。通过这次课程设计,我知道了很多知识,所以我感谢这次的课程设计。 六、参考资料 1、王华, 叶爱亮, 祁立学等. visual c+ 6.0 编程实例与技巧. 北京:机械工业出版社, 1999.2、李光明. visual c+ 6.0 经典实例大制作. 北京:中国人事出版社,200

温馨提示

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

评论

0/150

提交评论