西安建筑科技大学大作业(论文)第1页共35页大作业课程名称:软件技术基础题目:简单计算器院(系):信息与控制工程学院专业班级:电子信息工程0801姓名:李芃博学号:080640116指导教师:周方晓2011年7月6日西安建筑科技大学大作业(论文)第2页共35页西安建筑科技大学大作业设计(论文)任务书专业班级:电子0801学生姓名:李芃博指导教师(签名):一、大作业题目简单计算器二、本次大作业应达到的目的具有简单计算功能的计算器,输入被计算的数据及运算操作,输出正确计算结果。三、本次大作业任务的主要内容和要求(包括原始数据、技术参数、设计要求等)系统的主要功能有:①窗口界面的计算器;②通过按钮键输入数据;③能够完成加、减、乘、除、求倒数、开方等一般运算;④输出结果具有一定精度四、应收集的资料及主要参考文献:[1]宋金珂编著,VC++程序设计基础教程,清华大学出版社[2]谭浩强.《c语言程序设计》.清华大学出版社[3]辛长安编著.VC++编程技术与难点剖析.清华大学出版社[4]陈恭和编著.数据库Access2002应用教程.清华大学出版社[5]王瑞编著.VisualC++数据库系统开发完全手册.人民邮电出版社[6]王春才编著.VisualBasic数据库系统开发完全手册.人民邮电出版社[7]高春艳.VisualBasic数据库系统开发案例精选.人民邮电出版社[8]李晓黎编著.VisualBasic+SQLServer数据库应用系统开发与实例.人民邮电出版社[9]启明工作室编著.VisualBasic+Access数据库应用系统开发与实例.人民邮电出版社[10]启明工作室编著.VisualC+++SQLServer数据库应用系统开发与实例.人民邮电出版社五、审核批准意见教研室主任(签字)西安建筑科技大学大作业(论文)第3页共35页目录一、需求分析1.1开发背景……………………………………………………41.2项目目标……………………………………………………41.3运行环境……………………………………………………41.4项目任务书…………………………………………………5二、技术路线2.1制作界面……………………………………………………52.2总体方案……………………………………………………52.3详细设计……………………………………………………8三、编程实现3.1核心代码……………………………………………………193.2运行结果……………………………………………………29四、测试分析……………………………………………………30五、个人总结……………………………………………………34六、参考文献……………………………………………………35简单计算器西安建筑科技大学大作业(论文)第4页共35页1需求分析1.1开发背景软件不同于硬件的最主要特点就在于它的不确定性,软件产品很难满足用户的需要,所以就需要不断的进行更新.随着科技的发展,人们在很多地方都要用到计算器来进行工程和商业上的运算,计算器在日常生活中的重要地位已经举足轻重.计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。1.2项目目标在程序设计中,通过设计、编制、调试一个模拟计算器的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是面向对象程序设计方法。由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。1.3运行环境硬件::计算机(CPU主频1.81GHz、512MB内存)软件:WindowsXP操作系统,VisualC++6.0是Microsoft公司在1998年推出的基于Windows9X和WindowsNT的优秀集成开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。VisualC++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在VisualC++6.0集成环境中轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。VC++6.0是Windows95/98、XP或WindowsNT下的一个应用程序,本身对软硬件没有特殊要求。就是说它对环境的要求与Windows95/98、WindowsNT要求是一致的。硬件要求:一般在586以上的处理器、16MB以上内存、100MB以上的西安建筑科技大学大作业(论文)第5页共35页硬盘。软件要求:Windows95/98或WindowsNT3.51以上版本。VC++6.0系统可以在一张CD盘上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开“MicrosoftVisualstudio6.0中文版”子菜单中的“MicrosoftVisualC++6.0中文版”程序。(2)用户也可以使用命令行启动VC。单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:\ProgramFiles\MicrosoftVisualStudio\VC98\VC6.exe(按默认盘符和路径安装)即可。1.4项目任务书(1).软件功能描述:系统的主要功能有:①窗口界面的计算器;②通过按钮键输入数据;③能够完成加、减、乘、除、求倒数、开方等一般运算;④输出结果具有一定精度。(2)工程进度安排如下:第一周:系统框架设计;编码和单元测试;第二周:集成系统将个子系统组合起来;测试阶段;2技术路线2.1制作界面我们采用了当前最流行的VC++6.0作为开发工具,运行平台是WINDOW2000/XP。通过C++提供的MFC类库,各成员按照分工和进度完成各自任务。西安建筑科技大学大作业(论文)第6页共35页最后再将各功能模块集成起来。2.2总体方案2.2.1窗体设计2.2.2编辑对话框及控件资源西安建筑科技大学大作业(论文)第7页共35页按钮控件资源清单按钮名称按钮ID用途0IDC_0_BUTTON按键01IDC_1_BUTTON按键12IDC_2_BUTTON按键23IDC_3_BUTTON按键34IDC_4_BUTTON按键45IDC_5_BUTTON按键56IDC_6_BUTTON按键67IDC_7_BUTTON按键78IDC_8_BUTTON按键89IDC_9_BUTTON按键9.IDC_DECIMAL_BUTTON小数点=IDC_EQUAL_BUTTON求值西安建筑科技大学大作业(论文)第8页共35页2.2.3功能模块图2.3详细设计2.3.1利用appwizard建立对话框工程点击加减乘除等选项进行操作选择点击数字键,输入第二个操作数点击数字键,输入第一个操作数点击“=”键,输出运算结果运行程序显示运算结果西安建筑科技大学大作业(论文)第9页共35页建立新工程,选中MFCAPPWizard[exe],输入工程名字并保存路径。选中工程类型为对话框工程单击OK键完成新工程建立西安建筑科技大学大作业(论文)第10页共35页2.3.2设计计算器窗口新建编辑框和数字键西安建筑科技大学大作业(论文)第11页共35页编辑列选框“操作类型”西安建筑科技大学大作业(论文)第12页共35页2.3.3设置数字键盘上按钮的名称和属性2.3.4添加变量给编辑框添加的变量名字为“m_result”,类型为“Cstring”;给列表框添加的变量名字为“m_Operatorbox”类型为“ClistBox”;除此之外定义全局变量如下:intmath_i;doublecount=10;charbuffer[10];doubleinput_int=0,input_dec=0;doubleinput1=0,input2=0;doublevalue=0;booldecimal=FALSE;西安建筑科技大学大作业(论文)第13页共35页2.3.5给数字键按钮添加处理函数各个处理函数列表如下:按钮名称函数0On0Button1On1Button2On2Button3On3Button4On4Button5On5Button6On6Button7On7Button8On8Button9On9Button.OnDecimalButton=OnEqualButton西安建筑科技大学大作业(论文)第14页共35页2.3.6为按钮添加代码西安建筑科技大学大作业(论文)第15页共35页为数字键0添加代码如下:voidCMyDlg::On0Button(){//TODO:Addyourcontrolnotificationhandlercodehereif(decimal){input_dec=input_dec+0/count;count=count*10;}elseinput_int=input_int*10+0;value=input_int+input_dec;_gcvt(value,10,buffer);m_ResultEdit=(LPCTSTR)buffer;UpdateData(FALSE);}为数字键1填加代码如下:voidCMyDlg::On1Button(){//TODO:Addyourcontrolnotificationhandlercodehereif(decimal){input_dec=input_dec+1/count;count=count*10;}elseinput_int=input_int*10+1;value=input_int+input_dec;_gcvt(value,10,buffer);m_ResultEdit=(LPCTSTR)buffer;UpdateData(FALSE);}其余数字键代码基本相同,本文省略。为小数点代码添加代码西安建筑科技大学大作业(论文)第16页共35页在OnInitDialog中添加代码如下:m_Operatorbox.AddString(乘);m_Operatorbox.AddString(除);m_Operatorbox.AddString(加);m_Operatorbox.AddString(减);m_Operatorbox.AddString(求倒数);m_Operatorbox.AddString(开方);在函数OnSelchangeOperatorList()代码如下:voidCMyDlg::OnSelchangeOperatorList(){//TODO:Addyourcontrolnotificationhandlercodehereinput1=input_int+input_dec;decimal=FALSE;input_int=0;input_dec=0;count=10;math_i=m_Operatorbox.GetCurSel();}填加等于键的运算代码如下:voidCMyDlg::OnEqualButton(){//TO