欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算器设计报告.docx

    • 资源ID:13686943       资源大小:94.43KB        全文页数:21页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算器设计报告.docx

    1、计算器设计报告程序设计与课题设计计算器设计报告电信1302 何倩雯 林然然索引概要3一设计任务与目标3 1.基本功能3 2.附加功能3二方案设计与功能说明3 1.程序界面总体规划3 2.程序功能实现4三程序类图5四主要程序清单6 1.CCalculationDlg类6 2.CSquare类11 3.XBitmapButton类13五程序运行的测试与分析14 1.测试基础加减乘除功能运算142.测试连加,连乘,连减,连除功能143.连等以及等号后直接进行运算的测试144.测试退格,清0,全清145.寄存器功能测试146.16进制、8进制、2进制功能测试14六负责完成内容14七结论与心得15概要

    2、在程序设计课程设计课程中,我们选择Visual C+6.0作为开发平台,两人一组,设计开发一个模拟计算器。尽量向windows自带计算器靠近。完成了普通计算器以及科学计算器,能够满足一般计算要求,也提供了二进制、八进制、十六进制的四则运算。在计算器外观上也做了改进。一 设计任务与目标1、完成基本功能:1)计算器窗口界面的绘制以及基本加减乘除运算及其连续运算的实现2)寄存器的存储,读取及清空,显示寄存器内容3)运算过程的显示 5)按等号重复最后一次运算6)退格,清空及全部清空7)取反,开根号及倒数运算2、附加功能1)增加科学型计算功能 2)增加十六进制, 二进制,八进制数据计算功能; 3)美化模

    3、拟计算器界面,如按钮被选中后自动改变颜色,增加菜单栏根据需要选择不同类型的计算器等。二 方案设计与功能说明1.程序界面总体规划创建CALCULATION_DIALOG和SCIENCE_DIALOG两个对话框界面分别用于显示普通型计算器与科学型计算器。为两个对话框添加菜单,供用户选择所需计算器类型(即相应的对话框窗口)。(1)普通型计算器数字0-9,小数点,+,-,x,倒数,取负,根号,百分号,=,清零,全部清零,退格,读寄存器,存寄存器,清寄存器 共26个按钮,用于用户的运算操作。运算过程编辑框、寄存器编辑框、结果读取编辑框3个编辑框,用于对用户返回信息。 (2)科学型计算器 基本功能界面同普

    4、通型计算器。除此之外,添加了开3次方,开y次方,sin(),cos(),tan(),x的y次幂,x的平方,x的立方,ln(),n!,exp,10x,log(), 14个功能按钮,可供用户计算更复杂的算式。 在科学型计算器上我们添加进制选择按钮,初始默认10进制计算。设置有16进制、2进制、8进制按钮可供切换进制,并且在选择进制的同时有相应的按钮自动设置无效(例如选择2进制,则2-9按钮自动无效)。 (3)除了基本的界面设置,添加按钮变色效果,按钮通常为灰色,是弹起视觉效果,但当鼠标移动到按钮之上,按钮自动变黄色,并有按住的视觉效果。当鼠标移动到无效的按钮之上按钮不会变色。以此变色效果可以提醒用

    5、户是否选中该按钮,按钮是否有效。 2.程序功能实现 为两个对话框界面添加两个类,并在其中为按钮添加消息响应函数。添加字符串和数字数组、操作数数组来保存操作数、操作符、运算结果。并用UpdateData()来接受和显示。(1)操作数的输入 在用户持续输入数字时,将数字插入到字符串中。只有当碰到用户输入操作符时,该字符串被转化成double型数据保存到数字数组中。(2)操作符的输入 在用户输入操作符后,将操作符保存到操作符数组。可以对操作符进行编号,代替char型操作符保存的是的操作符对应int型编号。(3)进制的确定与转换 为每一个进制设置标记符m_xflag,来确定当前的进制数。并添加进制转换

    6、函数(二进制转十进制,十进制转二进制,八进制转十进制,十进制转八进制,十六进制转十进制,十进制转十六进制),计算时无论输入几进制数,将其转为十进制进行计算,计算后转回相应进制。(4)计算功能 在等号的消息映射函数中调用计算函数。函数中多用if-else语句来判断当前计算进制,并根据进制要求进行进制转换。同用if-else语句实现判断此时是否连等,并在连等时执行重复上一次运算的相应语句,不需连等时按优先级依次计算,-,+。(5)进程的显示 为进程编辑框添加字符串保存进程。输入时在字符串中插入字符,退格或清空时删除相应长度的字符。 (6)按钮变色功能 手动制作每一个按钮平常的外观和变色后的外观位图

    7、。将按钮属性改为所有者绘制。手动添加一个基于CBitmapButton的XBitmapButton类,设置bool变量表示鼠标是否在按钮上。添加MouseOFF(),MouseOn()函数来执行相应的按钮位图加载。通过加载不同的位图可以改变按钮的外观。为按钮添加XBitmapButton类的变量,初始化调用加载位图函数。三 程序框图或类图类图 四 主要程序清单,函数功能与调用关系(1) CCalculationDlg类全局变量: int m_v; /用于判断操作符的,若为=,sqrt等等的操作符,直接输入数据将原数据覆盖 BOOL m_enable; /用于判断菜单项有效性 CMenu m_M

    8、enu; /菜单的变量 CString m_re; /用于临时存放操作数 CString s; /用于临时存放操作符 int lastoperation; /用于存放计算式的最后一个操作符代码 double lastnumber; /用于存放计算式的最后一个操作数 double m_number15; /用于存放操作数 int m_operation15; /用于存放操作符代码 int m_NumberCount; /操作数的顺序号代码 int m_OperationCount; /操作符的顺序号代码 XBitmapButton m_sub;/按钮IDC_SUBTRACT的成员变量,用于加载位

    9、图,重绘按钮 XBitmapButton m_spot;/按钮IDC_SPOT的成员变量,用于加载位图 XBitmapButton m_reci; /按钮IDC_RECIPROCAL的成员变量,用于加载位图 XBitmapButton m_quyu; /按钮IDC_QUYU的成员变量,用于加载位图 XBitmapButton m_muti; /按钮IDC_MULTIPLY的成员变量,用于加载位图 XBitmapButton m_divide; /按钮IDC_DIVIDE的成员变量,用于加载位图 XBitmapButton m_add; /按钮IDC_ADD的成员变量,用于加载位图 XBitma

    10、pButton m_res; /按钮IDC_RESULT的成员变量,用于加载位图 XBitmapButton m_sqrt; /按钮IDC_SQRT的成员变量,用于加载位图 XBitmapButton m_minus; /按钮IDC_MINUS的成员变量,用于加载位图 XBitmapButton m_ms; /按钮IDC_MEMORYSAVE的成员变量,用于加载位图 XBitmapButton m_mr; /按钮IDC_MEMORYREAD的成员变量,用于加载位图 XBitmapButton m_mc; /按钮IDC_MEMORYCLEAR的成员变量,用于加载位图 XBitmapButton

    11、m_ce; /按钮IDC_CE的成员变量,用于加载位图 XBitmapButton m_c; /按钮IDC_C的成员变量,用于加载位图 XBitmapButton m_back; /按钮IDC_BACK的成员变量,用于加载位图 XBitmapButton m_n0; /按钮IDC_NUMBER0的成员变量,用于加载位图 XBitmapButton m_n9; /按钮IDC_NUMBER9的成员变量,用于加载位图 XBitmapButton m_n8; /按钮IDC_NUMBER8的成员变量,用于加载位图 XBitmapButton m_n7; /按钮IDC_NUMBER7的成员变量,用于加载位

    12、图 XBitmapButton m_n6; /按钮IDC_NUMBER6的成员变量,用于加载位图 XBitmapButton m_n5; /按钮IDC_NUMBER5的成员变量,用于加载位图 XBitmapButton m_n3; /按钮IDC_NUMBER3的成员变量,用于加载位图 XBitmapButton m_n2; /按钮IDC_NUMBER2的成员变量,用于加载位图 XBitmapButton m_n1; /按钮IDC_NUMBER1的成员变量,用于加载位图 XBitmapButton m_n4; /按钮IDC_NUMBER4的成员变量,用于加载位图 CString m_result

    13、;/存放运算结果 CString m_process;/存放运算过程 CString m_memory;/存放寄存器内容 m_counts;/用于保存开根号的次数(为了再连续开根号时过程的正确显示,第一次要在进程中加入开根号字符串sqrt(n1),而之后就要将字符串先删除再重新加入新的sqrt(n2),因此需要记录是否第一次操作。 m_count;/用于保存倒数的次数,为了避免连续倒数时,或者倒数结果非整时,会有精度的丢失。当m_count=1时正常计算倒数,m_count=2时回到上一次计算结果。如6取倒数1/6得到0.167,未加判断时,再取倒数得到5.99。加入m_count,再取倒数仍

    14、旧得到6,防止了精度丢失。成员函数:1 void CCalculationDlg:Insert(char s)调用关系:调用系统函数Insert(int i,char s),Getlength()功能:为结果字符串m_result插入新输入的数字。2 void CCalculationDlg:InsertProcess(char s) 调用关系:调用系统函数.Insert(int i,char s),.Getlength()功能:为进程字符串m_process插入新输入的数字或操作符3 void CCalculationDlg:DeleteProcess(int a)调用关系:调用系统函数.L

    15、eft(int)功能:当按倒退或者清零或者全部清零时,能够删除部分或全部进程。4 void CCalculationDlg:OnNumber1() 调用关系:调用Insert()和InsertProcess();功能:为结果字符串m_result插入数字1,为进程字符串m_process插入数字1。 : : void CCalculationDlg:OnNumber9() 调用关系:调用Insert()和InsertProcess();功能:为结果字符串m_result插入数字9,为进程字符串m_process插入数字9。5 void CCalculationDlg:OnAdd() /加操作函

    16、数调用关系:调用系统函数atof(char)(将字符型m_result转为double型)功能:将按下add键以前的m_result作为一个新的操作数保存到n_numberm_NumberCount+中;将add键用数字1代表,作为一个新的操作符保存到n_operationm_OperationCount+中;将m_result清空,为接受下一操作数作准备。 void CCalculationDlg:OnSubtract() /减操作函数调用关系:调用系统函数atof(char)(将字符型m_result转为double型)功能:将按下subtract键以前的m_result作为一个新的操作数

    17、保存到n_numberm_NumberCount+中;将“-”键用数字2代表,作为一个新的操作符保存到n_operationm_OperationCount+中;将m_result清空,为接受下一操作数作准备。void CCalculationDlg:OnDivide() /除操作函数调用关系:调用系统函数atof(char)(将字符型m_result转为double型)功能:将按下divide键以前的m_result作为一个新的操作数保存到n_numberm_NumberCount+中;将“”键用数字4代表,作为一个新的操作符保存到n_operationm_OperationCount+中;

    18、将m_result清空,为接受下一操作数作准备。void CCalculationDlg:OnMultiply() /乘操作函数调用关系:调用系统函数atof(char)(将字符型m_result转为double型)功能:将按下multiply键以前的m_result作为一个新的操作数保存到n_numberm_NumberCount+中;将“x”键用数字3代表,作为一个新的操作符保存到n_operationm_OperationCount+中;将m_result清空,为接受下一操作数作准备。 void CCalculationDlg:OnMinus() /取正负函数调用关系:调用InsertP

    19、rocess()功能:将当前结果取负数,并根据原数据的正负判断在进程中插入 -号或删去-号。 void CCalculationDlg:OnQuyu() /取百分号函数调用关系:调用InsertProcess()功能:将当前结果取百分比,并在进程中插入%。 void CCalculationDlg:OnReciprocal() /取倒数函数 调用关系:调用InsertProcess()功能:将当前结果取倒数,并在进程中插入reciprocal()。void CCalculationDlg:OnSqrt() /求平方根函数 调用关系:调用InsertProcess()功能:将当前结果取平方根,并

    20、在进程中插入sqrt()。 void CCalculationDlg:OnCe() /删除最后一个操作数 调用关系:调用DeleteProcess(int)系统函数.GetLength(),功能:删除最后一个操作数,并且在进程中也删除相应字符串。 void CCalculationDlg:OnC() /恢复初始化状态 调用关系:无功能:将所有数据区域都情况,回到初始状态。 void CCalculationDlg:OnBack() /退格函数 调用关系:调用DeleteProcess(int)系统函数.GetLength(),功能:将当前输入往前退一格,即删除最新输入的一个字符。 void C

    21、CalculationDlg:OnButton2() /调用计算函数 调用关系:调用cal(); 功能:按下“=”号键后调用计算函数,执行计算结果。 void CCalculationDlg:cal() /计算函数 调用关系:被OnButton2()调用。功能:函数中多用if-else语句来判断当前计算进制,并根据进制要求进行进制转换。同用if-else语句实现判断此时是否连等,并在连等时执行重复上一次运算的相应语句,不需连等时按优先级依次计算,-,+。具体过程为:1.判断是否m_NumberCount=1并且m_OperationCount=1,若成立,则此时按等号为连等,则如果最后一个操作

    22、符为1,则将等号后的结果加上最后一个操作数,如果最后一个操作符为2,则将等号后的结果减去最后一个操作数,依次类推。2.不连等,将最后操作数存到lastnumber,将最后一个操作符存储到lastoperation,如果此操作符为*,则将下一个操作数存为两数相乘后的结果,即连乘以后,将所有乘号变为前一操作符符号,除乘后结果以外的乘数都变为0(如1+3*4*5=0+0+60,1-3*4*5=1-0-0-60)。若为,也类似操作。3. 将result函数赋值为第一个操作数,再循环进行与下一操作符的加法或减法运算。4.除了计算结果、最后操作数、最后操作符以外的数据清除。 void CCalculati

    23、onDlg:OnMemorysave() /寄存器存储 调用:无 功能:将m_result赋值给m_memory,存起来。 void CCalculationDlg:OnMemoryread() /寄存器读取 调用:无 功能:将m_memory存入m_number,即读取。 void CCalculationDlg:OnMemoryclear() /寄存器清除 调用:无 功能:将m_memory清空。 void CCalculationDlg:OnMenuitem32772() /打开科学型对话框 调用: CDialog:EndDialog(IDOK); dlg.DoModal(); 功能:

    24、将菜单科学型设为有效,将原对话框关闭,打开科学型对话框。 void CCalculationDlg:OnUpdateMenuitem32771(CCmdUI* pCmdUI) 调用: pCmdUI-Enable(m_enable); 功能:将菜单普通型设为无效(2) CSquare类。在科学型计算器中,有大量代码重复普通型,与普通型功能相同。因此这里只说明科学型与普通型不同的函数与变量。全局变量: bool m_slflag; /用于判断是否为16进制bool m_bflag; /用于判断是否为8进制bool m_eflag;/二进制标志成员函数: double CSquare:TransBj

    25、zToSjz(int a) /将八进制转化为十进制函数 调用关系:调用库函数pow(); 功能:将输入八进制数a转为十进制返回。 CString CSquare:TransSjzToBjz(double result, CString m_result) 调用关系:Insert()功能:将十进制转化为八进制函数并逐位插入到m_result字符串,返回m_result double CSquare:TransEjzToSjz(int a) /将二进制转化为十进制函数调用关系:调用库函数pow(); 功能:将输入二进制数a转为十进制返回。CString CSquare:TransSjzToEjz(

    26、double result,CString m_result) 调用关系:Insert()功能:将十进制转化为二进制函数并逐位插入到m_result字符串,返回m_result double CSquare:TransSljzToSjz(CString a) 调用关系:调用库函数pow(); 功能:将输入二进制数a转为十进制返回。 CString CSquare:TransSjzToSljz(double result, CString m_result) 调用关系:调用Insert()功能:将十进制转化为二进制函数并逐位插入到m_result字符串,返回m_result void CSqua

    27、re:On10x() /10x的函数 调用关系:调用DeleteProcess(),InsertProcess(),库函数pow(); 功能:10x的响应,将当前结果换算为10x保存到m_result,并写入过程中。 void CSquare:OnCos() /cos函数 调用关系:调用DeleteProcess(),InsertProcess(),库函数cos(); 功能:cos(x)的响应,将当前结果换算为cos(x)保存到m_result,并写入过程中。 void CSquare:OnSin() /sin函数 调用关系:调用DeleteProcess(),InsertProcess(),

    28、库函数sin(); 功能:sin(x)的响应,将当前结果换算为sin(x)保存到m_result,并写入过程中。 void CSquare:OnTan() /tan函数 调用关系:调用DeleteProcess(),InsertProcess(),库函数tan(); 功能:tan(x)的响应,将当前结果换算为tan(x)保存到m_result,并写入过程中。 void CSquare:OnEjz() /二进制函数 调用关系:GetDlgItem(IDC_)-EnableWindow(bool);功能:二进制按键的响应,将二进制标志置1,其他进制标志置0,进制字符串m_jz改为“2进制”。同时,使在二进制条件下不可用按钮失效。 void CSquare:OnSjz() 调用关系:GetDlgItem(IDC_)-EnableWindow(bool);功能:十进制按键的响应,将十进制标志置1,其他进制标志置0,进制字符串m_jz改为“10进制”。同时,使失效按钮恢复使用。 void CSquare:OnSljz() /十六进制函数 调用关系:GetDlgItem(IDC_)-EnableWindow(bool);功能:16进制按键的响应,将16进制标志置1,其他进制标志置0,进制字符串m_jz改为“16进制”。同时,使失效按钮恢复使用,使能A,B,C,D,E,F。 void CSqu


    注意事项

    本文(计算器设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开