版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多功能计算器1软件综合设计软件综合设计实验报告书实验报告书项目名称: 多功能计算器 同组人员同组人员 1: 袁伟强袁伟强 学号学号 1: 2012102073 同组人员同组人员 2: 李浩伟李浩伟 学号学号 2: 2012102063 同组人员同组人员 3: 张宝张宝 学号学号 3: 2012102095 报告撰写日期:2015/4/14多功能计算器2目录目录第第 1 1 章章 可行性研究报告可行性研究报告.3 31.1 项目背景.31.2 实用意义.31.3 技术方案.3第第 2 2 章章 需求规格说明书需求规格说明书.4 42.1 软件功能需求.42.2 运行需求.4第第 3 3 章章 软
2、件概要设计软件概要设计.5 53.1 任务概述.53.2 总体设计.5第第 4 4 章章 详细设计说明书详细设计说明书.6 64.1 功能说明.64.2 设计思路.64.3 程序流程图.74.4 计算器软件操作界面.104.5 计算器重要代码.104.6 汇率转化界面.11第第 5 5 章章 多功能计算器代码及算法多功能计算器代码及算法.13135.1 计算器主要代码及算法.135.2 汇率转换器主要代码及算法.18多功能计算器3第第 1 1 章章 可行性研究报告可行性研究报告1.1 项目背景项目背景随着计算机技术的高速发展,人们的生活节奏也变得越来越快。面对如此高速的生活节奏,我们现代人必不
3、可少的应用计算机来帮我们解决一些问题以提高做事情的效率,其中多功能计算器就是其中最好的一个代表。多功能计算器不仅能帮助人们快速计算,更能够保证计算的正确率,从而帮助人们快速地解决一些使用的问题。另一方面随着国际化的到来,人们对外的交流日益增多,这期间必不可少的就会牵扯到货币,所以拥有一个货币转化器是一个最佳的选择。多功能计算器集合了计算器和货币转换器,由此可见它的需求还是很大的。1.2 实用意义实用意义计算器因其高速准确的特点在人们的生活中得到广泛的应用,但是随着社会的发展,单纯的计算器已经不能适应人们日常生活的需求。所以多功能计算器的产生给人们带来了更大的便捷,也使传统计算器得到了更好的拓展
4、,更能适合现代人的生活方式以及特点。1.3 技术方案技术方案多功能计算器4 本设计基于 MFC 进行设计,以 C+语言为设计语言,实现了以下几大功能:1、传统计算功能 2、时间显示 3、货币汇率转换;第第 2 章章 需求规格说明书需求规格说明书2.1 软件功能需求软件功能需求1. 多功能计算器是日常小工具,所以良好的人机交互应该做到2. 要涉及到转换页面的操作,所以要学会对页面转换3. 因为涉及到要用对话框进行人机交互,所以设计到对对话框的学习及使用4. 在计算器界面有时间显示功能,所以要掌握在示例编辑框内显示时间的操作2.2 运行需求运行需求软件需要在 visual studio2010 软
5、件下进行运行调试。多功能计算器5第第 3 章章 软件概要设计软件概要设计3.1 任务概述任务概述本软件是简单计算器,同时附带汇率转换功能以及系统时间显示功能。本设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,汇率转换以及系统时间。本软件分为两个模块,下面对两模块进行简单分析:1:计算机模块能简单进行加、减、乘、除四种运算,同时还有相应的返回与清零功能。同时在该模块正上方显示系统日期时间。2:汇率转换模块能将人民币换算成美元、日元、韩元、英镑、欧元等各种货币。3.2 总体设计总体设计 基
6、于 MFC 库类进行对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能和汇率转换功能,生成应用软件。计算机模块总体设计:单击按钮响应函数功能,选择操作多功能计算器6数进行相应的运算,计算出结果并在该模块中显示。汇率转换模块的总体设计思路是:输入人民币的数值,单击按钮响应函数功能,计算出相应结果并在汇率模块中显示出结果。第第 4 章章 详细设计说明书详细设计说明书4 4.1.1 功能说明功能说明它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直
7、接通过键盘直接输入。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。(1)包含的功能有:加、减、乘、除运算,汇率转换,时钟显示等功能。(2)计算器上数字 09 为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。(3)给对话框添加菜单。(4)计算功能基本上是用系统内部函数。(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以 0 开头等不正常现象。(6)“C”按钮可以清除所有已输入的数据从头计算。(7)汇率转换由计算器界面按钮控制单独条转出页面。(8)时钟显示分别在计算器界面与汇率转换界面显示,调用系统时间。4 4.
8、2.2 设计思路设计思路如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。子程序开始时m_dEditNo为零。按下数字按钮后,判断m_dEditNo,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_dEditNo存入oldNumber,按下输入第二个操作数并算出结果。若按下的是单目运算符,则直接对其处理得出结果。若按下清零,则m_dEditNo等于0.在运算中还要判断运算多功能计算器7是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。算出后把结果保存至oldNumber。若需用算出的结果继
9、续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。4.3 程序流程图程序流程图NNY键入一个数是否为正数?m_dEditNo = m_dEditNo*10 +nm_dEditNo = m_dEditNo*10 -n是否为小数?用 UpdateData(true)刷新显示还原m_dEditNo根据小数点后位数将键入的数除以 n 次 10 累加到m_numYN继续键入数字?Y编辑框关联变量m_num=0图 4-1 输入数据子函数流程图多功能计算器8结束jieN运算符编辑框关联的变量保存至oldNumber输入数据子函数进行运算输入数据子函数图 4-2 简单计算
10、器总流程图Y开始运算是否合法把结果保存到oldNumberm_dEditNo清零弹出对话框显示 ERRORNY是否用保存的结果继续进行运算N是否开始新一轮的计算Y多功能计算器9结束jie选择货币种类进行数据转化运算判断运算结果数据显示转换后金额输入人民币金额输入数据不对开始Y图 4-3 简单汇率转换流程图多功能计算器104.44.4 计算器软件测试界面计算器软件测试界面图 4-4 计算器界面上图为计算器界面,C 为清零按钮,CE 为清除刚输入的数据,方便输入数据错误的时候改数据。BackSpace 为数据退位按钮,没按一次数据缩小为前面的十倍,相当于小数点往后退一位。加减乘除分别对应各自的运算
11、符,数字09 为一个控件数组,汇率转换按钮跳转到汇率转换界面。4.5 计算器重要代码计算器重要代码图 4-5 数据输入代码多功能计算器11图 4-6 数据计算代码4.6 汇率转换界面汇率转换界面图 4-7 汇率转换界面 上面为汇率转换界面,当输入一定的人民币金额时,选择对应的转换金额种类,下面的示例编辑框就会显示出转换出来的数据金额。多功能计算器12图 4-8 汇率转换有关的部分代码图 4-9 时钟显示代码 时钟显示调用的为系统的时间。多功能计算器13第第 5 5 章章 关键代码及算法关键代码及算法5.1计算器主要代码及算法计算器主要代码及算法void CCalculaterDlg:OnPai
12、nt()if (IsIconic()CPaintDC dc(this); / 用?于绘?制?的?设备?上?下?文?SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使1图?标在工作区?矩?形?中D居中Dint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1)
13、/ 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘?制?图?标dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/当用?户拖?动最?小?化窗口时系统3调用?此?函数y取?得?光a标/显?示?。HCURSOR CCalculaterDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CCalculaterDlg:OnBnClickedBtn0()OnNoBtn(0);多功能计算器14void CCalculaterDlg:OnBnClickedBt
14、n1()OnNoBtn(1);void CCalculaterDlg:OnBnClickedBtn2()OnNoBtn(2);void CCalculaterDlg:OnBnClickedBtn3()OnNoBtn(3);void CCalculaterDlg:OnBnClickedBtn4()OnNoBtn(4);void CCalculaterDlg:OnBnClickedBtn5()OnNoBtn(5);void CCalculaterDlg:OnBnClickedBtn6()OnNoBtn(6);void CCalculaterDlg:OnBnClickedBtn7()OnNoBtn(
15、7);void CCalculaterDlg:OnBnClickedBtn8()OnNoBtn(8);void CCalculaterDlg:OnBnClickedBtn9()OnNoBtn(9);多功能计算器15void CCalculaterDlg:OnNoBtn(int n) /OnNoBtn(int n) 函数y定义?UpdateData(true);if(flag)m_dEditNo = n;flag = false;elsem_dEditNo = m_dEditNo*10 +n;UpdateData(false);void CCalculaterDlg:OnBnClickedBtn
16、C()UpdateData(true);oldNumber = 0;m_dEditNo = 0;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnCe()UpdateData(true);m_dEditNo = 0;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnBackspace()UpdateData(true);m_dEditNo = m_dEditNo/10;UpdateData(false);void CCalculaterDlg:OnBnClickedBtnAdd()Cal
17、culate();type = ADD;void CCalculaterDlg:OnBnClickedBtnSubtract()多功能计算器16Calculate();type = SUBTRACT;void CCalculaterDlg:OnBnClickedBtnMultiply()Calculate();type = MULTIPLY;void CCalculaterDlg:OnBnClickedBtnDivide()Calculate();type = DIVIDE;void CCalculaterDlg:OnBnClickedBtnResult()Calculate();type =
18、 NULL;void CCalculaterDlg:Calculate()UpdateData(true);switch(type)case ADD:m_dEditNo += oldNumber;break;case SUBTRACT:m_dEditNo = oldNumber - m_dEditNo;break;case MULTIPLY:m_dEditNo *= oldNumber;break;case DIVIDE: m_dEditNo = oldNumber/m_dEditNo;break;default:break;oldNumber = m_dEditNo;UpdateData(f
19、alse);flag = true;void CCalculaterDlg:OnBnClickedButton2()Chuilv huilv;huilv.DoModal();多功能计算器17/ TODO: 在此?添加控?件t通知a处|理程序代码?void CCalculaterDlg:OnEnChangeEditShow()/ TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialog:OnInitDialog()/ funct
20、ion and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code here/void CCalculaterDlg:OnTimeChange()/CDialog:OnTimeChange();/CTime tmSCan = CTime:GetCurrentTime();/m_time = tmSCan.Format(%Y-%m-%d %H:%M:%S);/UpdateData(fal
21、se);/ TODO: 在此?处|添加消?息处|理程序代码?/void CCalculaterDlg:OnTimer(UINT_PTR nIDEvent)/ TODO: 在此?添加消?息处|理程序代码?和/或调用?默?认?值CDialog:OnTimer(nIDEvent);/设置?一?个?定时器,?如?果?毁掉?函数y是?NULL的?话,?就会每?隔?一?段?时间?往hWnd标至的?窗口发送WM_TIMER消?息,?而?OnTimer(nIDEvent) /就是?用?来处|理这a个?消?息的?函数yCTime tmSCan = CTime:GetCurrentTime();m_time =
22、tmSCan.Format(%Y-%m-%d %H:%M:%S);/ y表示?年 m表示?月? d表示?日? H表示?时 M表示?分? S表示?秒?UpdateData(false);void CCalculaterDlg:OnEnChangeEdit1()多功能计算器18/ TODO: 如?果?该?控?件t是? RICHEDIT 控?件t,?它将?不?/ 发送此?通知a,?除y非?重?写 CDialog:OnInitDialog()/ 函数y并调用? CRichEditCtrl().SetEventMask(),?/ 同?时将? ENM_CHANGE 标志?“或”运?算?到?掩码?中D。/
23、TODO: 在此?添加控?件t通知a处|理程序代码?5.2汇率转换器主要代码及算法汇率转换器主要代码及算法void Chuilv:OnBnClickedRadio1()UpdateData(true);result = text * 0.1614;UpdateData(false);/ TODO: 在此?添加控?件t通知a处|理程序代码?void Chuilv:OnBnClickedRadio2()UpdateData(true);result = text * 19.3003;UpdateData(false);/ TODO: 在此?添加控?件t通知a处|理程序代码?void Chuilv:
24、OnBnClickedRadio3()UpdateData(true);result = text * 177.8710;UpdateData(false);/ TODO: 在此?添加控?件t通知a处|理程序代码?void Chuilv:OnBnClickedRadio4()UpdateData(true);result = text * 0.1086;UpdateData(false);/ TODO: 在此?添加控?件t通知a处|理程序代码?多功能计算器19void Chuilv:OnBnClickedRadio5()UpdateData(true);result = text * 0.14
25、97;UpdateData(false);/ TODO: 在此?添加控?件t通知a处|理程序代码?void Chuilv:OnBnClickedButton1()OnOK();/ TODO: Add your control notification handler code herevoid Chuilv:OnEnChangeEdit2()/ TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CDialogEx:OnInitDialog()/ function and cal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度防火门绿色建筑认证合同2篇
- 二零二五版海上货物运输合同适用范围与船舶建造合同3篇
- 二零二五版全方位房产及土地使用权买卖合同3篇
- 二零二五年电商代运营用户运营与社区建设合同3篇
- 二零二五年电子商务平台店长劳动合同规定2篇
- 二零二五年电子商务平台安全风险评估与管理咨询合同3篇
- 二零二五版寄卖合同范本:电子产品寄卖代理合同2篇
- 二零二五版共有产权房买卖合同范本6篇
- 二零二五版文化创意产业合伙合同规范文本3篇
- 基于二零二五年度市场趋势的产品研发合同2篇
- 骨科手术后患者营养情况及营养不良的原因分析,骨伤科论文
- GB/T 24474.1-2020乘运质量测量第1部分:电梯
- GB/T 12684-2006工业硼化物分析方法
- 定岗定编定员实施方案(一)
- 高血压患者用药的注意事项讲义课件
- 特种作业安全监护人员培训课件
- (完整)第15章-合成生物学ppt
- 太平洋战争课件
- 封条模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖浆
- 货代操作流程及规范
评论
0/150
提交评论