多功能计算器报告讲解Word格式.docx
- 文档编号:20936729
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:18
- 大小:261.45KB
多功能计算器报告讲解Word格式.docx
《多功能计算器报告讲解Word格式.docx》由会员分享,可在线阅读,更多相关《多功能计算器报告讲解Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
2.1软件功能需求
1.多功能计算器是日常小工具,所以良好的人机交互应该做到
2.要涉及到转换页面的操作,所以要学会对页面转换
3.因为涉及到要用对话框进行人机交互,所以设计到对对话框的学习及使用
4.在计算器界面有时间显示功能,所以要掌握在示例编辑框内显示时间的操作
22运行需求
软件需要在visualstudio2010软件下进行运行调试。
第3章软件概要设计
3.1任务概述
本软件是简单计算器,同时附带汇率转换功能以及系统时间
显示功能。
本设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;
醒目美观的软件封面。
使用人
员能快捷简单地进行操作。
即时准确地获得需要的计算的结果,汇率转换以及系统时间。
本软件分为两个模块,下面对两模块进行简单分析:
1计算机模块能简单进行加、减、乘、除四种运算,同时
还有相应的返回与清零功能。
同时在该模块正上方显示系统日期时间。
2:
汇率转换模块能将人民币换算成美元、日元、韩元、英
镑、欧元等各种货币。
3.2总体设计
基于MFC库类进行对对话框界面的设计,通过创建类成员
函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能和汇率转换功能,生成应用软件。
计算机模块总体设计:
单击按钮响应函数功能,选择操作数进行相应的运算,计算出结果并在该模块中显示。
汇率转换模块的总体设计思路是:
输入人民币的数值,单击
按钮响应函数功能,计算出相应结果并在汇率模块中显示出结
果。
第4章详细设计说明书
4.1功能说明
它的设计按软件工程的方法进行,系统具有良好的界面;
必要的交互信息;
简约美观的效果。
使用人员能快捷简单地进行操作。
即可单机按钮进行操作,也可直接通过键盘直接输入。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:
加、减、乘、除运算,汇率转换,时钟显示等功能。
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)给对话框添加菜单。
(4)计算功能基本上是用系统内部函数。
(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(6)“C'
按钮可以清除所有已输入的数据从头计算。
(7)汇率转换由计算器界面按钮控制单独条转出页面。
(8)时钟显示分别在计算器界面与汇率转换界面显示,调用系统时间。
4.2设计思路
如图是整个计算器的流程图,打开计算器程序,输入数据,调用输入数据子程序。
子程序开始时m_dEditNo为零。
按下数字按钮后,判断m_dEditNo,对其进行相关处理,然后在判断是否有小数点,处理后输出结果。
回到总流程图中,输完第一个操作数后,若按下双目运算符,则把m_dEditNo
存入oldNumber,按下输入第二个操作数并算出结果。
若按下的是单目运算符,则直接对其处理得出结果。
若按下清零,则m_dEditNo等于0.在运算中还要判断运算是否合法,以及结果是否超出显示范围,以做出相关提示,按下清零。
算出后把结果保存至oldNumber。
若需用算出的结果继续运算则回到输入完第一个操作数后,若不需要则判断试否需要开始新一轮的运算,不需要则结束。
图4-1输入数据子函数流程图
图4-2简单计算器总流程图
输入人民币金额
输入数据不对
选择货币种类
1
进行数据转化运算
F
-判断运算结果数据
显示转换后金额
Y
图4-3简单汇率转换流程图
4.4计算器软件测试界面
|Calcuhter
2015-04-2613:
38:
38
图4-4计算器界面
上图为计算器界面,C为清零按钮,CE为清除刚输入的数据,方便输入数据错误的时候改数据。
Backspace为数据退位按钮,没按一次数据缩小为前面的十倍,相当于小数点往后退一位。
加减乘除分别对应各自的运算符,数字0—9为
一个控件数组,汇率转换按钮跳转到汇率转换界面。
4.5计算器重要代码
-voidCCalculaterDlg:
:
OnUoBtnCmtn)//OnNoBln(intn)函数定文
Updatefatrue);
ifCflag){
m^dEditNo=n:
flag=false:
}
else
judEditNo=Jn_dEditKo*10+n.UpdateData(false);
图4-5数据输入代码
:
Calculate()
{
UpdateData(true);
switch(type){
匚aseADD:
m_dEditNa+=oldNunber;
break:
caseSUBTRACT;
in_dEditNo二oldNumber-m_dEditNo;
break;
caseMULTIPLY:
Jn_dEditKo*=aldNumber;
break:
caseDIVIDE:
m^dEditNo-oldNwnber/ii_dEditKIo,break:
defsuit:
□IdNuniber-n^dEditHo;
UpdateData(false):
flag=true:
图4-6数据计算代码
4.6汇率转换界面
晶CalculdtfrN
图4-7汇率转换界面
上面为汇率转换界面,当输入一定的人民币金额时,选择对应的转换金额种类,下面的示例编辑框就会显示出转换出来的数据金额。
~voidChuilv:
:
OnBnClickedKadiol()
UpdateDataCtrue):
result=tezt*0.1614;
UpdateDataCf:
//TODO:
在此添加控件通知处理程序代码
-voidChuilv:
0nBnClickedRadio2()
UpdarteData(true);
result=teKt*19.3003;
UpdateDataCfalse5:
图4-8汇率转换有关的部分代码
tvoidCCalculaterDlg:
OnTinter(UINTPTRnlDEvent){
//TODOj在此添加消息处理程序代码和/或调用默认值
FCDialog:
ETi皿眈MDE^ent);
//设養一个定时器,如果毁掉函埶是HULL的话*"
就是用来处理这个消息的函数
dimstmSCan=CTine:
GetCurrentTime():
r_time=tuSCan.Format(rY-SSm-d歸胳"
);
//y表示年m表示月d表示Update!
)ata(false):
hvaidCCalculatarDlg:
OnEnChangsEdit1()IIT
图4-9时钟显示代码
时钟显示调用的为系统的时间。
第5章关键代码及算法
5.1计算器主要代码及算法
voidCCalculaterDlg:
OnPaint()
if(Islconic())
CPaintDCdc(this);
//用?
?
于?
•潍?
制?
的?
设|••备a?
h?
下?
文?
SendMessage(WM_ICONERASEBKGND,reinterpret_cast<
WPARAM>
(dc.GetSafeHdc()),0);
//使O1图a?
标ao在-工?
^作a?
区?
矩?
形?
中D居?
中D
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//绘?
图£
标ao
dc.DrawIcon(x,y,m_hIcon);
}else
CDialog:
OnPaint();
//当?
0用?
户?
拖a?
动?
^最a?
小?
化?
^窗?
口Moa系|统as调?
用?
此?
函?
^数cy取•?
得?
光a标ao//显?
示o?
。
e
HCURSORCCalculaterDlg:
OnQueryDraglcon()
returnstatic_cast<
HCURSOR>
(m_hlcon);
OnBnClickedBtn0()
OnNoBtn(0);
OnBnClickedBtn1()
OnNoBtn⑴;
OnBnClickedBtn2()
OnNoBtn
(2);
OnBnClickedBtn3()
OnNoBtn(3);
OnBnClickedBtn4()
OnNoBtn(4);
OnBnClickedBtn5(){
OnNoBtn(5);
OnBnClickedBtn6()
OnNoBtn(6);
OnBnClickedBtn7()
OnNoBtn(7);
OnBnClickedBtn8()
OnNoBtn(8);
OnBnClickedBtn9(){
OnNoBtn(9);
OnNoBtn(intn)I/OnNoBtn(intn)函?
^数cy定?
§
义°
{
UpdateData(true);
if(flag){
m_dEditNo=n;
flag=false;
m_dEditNo=m_dEditNo*10+n;
UpdateData(false);
OnBnClickedBtnC()
oldNumber=0;
m_dEditNo=0;
OnBnClickedBtnCe()
OnBnClickedBtnBackspace()
m_dEditNo=m_dEditNo/10;
OnBnClickedBtnAdd()
Calculate();
type=ADD;
OnBnClickedBtnSubtract()
type=SUBTRACT;
}voidCCalculaterDlg:
OnBnClickedBtnMultiply()
type=MULTIPLY;
OnBnClickedBtnDivide()
type=DIVIDE;
OnBnClickedBtnResult()
type=NULL;
Calculate()
switch(type){
caseADD:
m_dEditNo+=oldNumber;
break;
caseSUBTRACT:
m_dEditNo=oldNumber-m_dEditNo;
break
caseMULTIPLY:
m_dEditNo*=oldNumber;
caseDIVIDE:
m_dEditNo=oldNumber/m_dEditNo;
default:
oldNumber=m_dEditNo;
flag=true;
OnBnClickedButton2()
Chuilvhuilv;
huilv.DoModal();
//TODO:
在'
2此?
添?
•;
加•?
控?
件t通S?
知a处?
|理oa程?
序°
弋?
'
2码?
OnEnChangeEditShow()
IfthisisaRICHEDITcontrol,thecontrolwillnot
//sendthisnotificationunlessyouoverridetheCDialog:
OnlnitDialog()
//functionandcallCRichEditCtrl().SetEventMask()
//withtheENM_CHANGEflagORedintothemask.
Addyourcontrolnotificationhandlercodehere
//voidCCalculaterDlg:
OnTimeChange()
〃{
//CDialog:
OnTimeChange();
//
//CTimetmSCan=CTime:
GetCurrentTime();
//m_time=tmSCan.Format("
%Y-%m-%d%H:
%M:
%S'
"
);
;
//UpdateData(false);
////todo:
在°
处?
i添?
°
a加•?
消?
息?
逊?
|理oa程■?
弋码?
〃}
OnTimer(UINT_PTRnIDEvent)
'
0加•?
消?
息?
理00程・?
代?
2码?
和•£
/或'
调?
默?
认•?
值11
OnTimer(nIDEvent);
//设|•■置?
一°
个?
定?
时o?
a器?
^?
如'
果?
毁•掉?
^数cy是
c?
NULL的?
话?
笑就‘迨…海孑隔?
段?
a间?
往a"
hWnd标ao至诵勺?
窗?
口'
2^C?
e送.aWM_TIMER消?
e@而?
OnTimer(nIDEvent)
//就,a是o?
来o处?
理oa这a个?
的1?
函?
^数o
CTimetmSCan=CTime:
m_time=tmSCan.Format("
%S"
);
//y表aa示o?
年'
m表aa示o?
月?
d表aa示o?
日-?
H表aa示o时o?
aM表aa示o?
分O?
S表aa示o?
秒?
OnEnChangeEdit1()
女口'
果?
亥?
控?
件t是o?
RICHEDIT控?
件t,@它'
1将?
不?
//发C?
e送a此?
通衣§
知a,e?
除y非O>重?
写?
CDialog:
//函?
^数cy并?
調!
?
CRichEditCtrl().SetEventMask(),e?
//同a?
时将?
ENM_CHANGE标ao志?
“或•-°
运?
算?
到?
掩'
中D。
添?
,a加•?
件t通£
知a处?
|理oa程•序•代?
}
5.2汇率转换器主要代码及算法
voidChuilv:
OnBnClickedRadio1(){
result=text*0.1614;
件t通s?
理oa程•序•代?
OnBnClickedRadio2()
result=text*19.3003;
件t通a?
理oa程•?
序•代?
OnBnClickedRadio3()
result=text*177.8710;
OnBnClickedRadio4()
result=text*0.1086;
OnBnClickedRadio5()
result=text*0.1497;
I理oa程•?
・2码?
OnBnClickedButton1()
OnOK();
Addyourcontrolnotificationhandlercodehere
OnEnChangeEdit2()
//sendthisnotificationunlessyouoverridetheCDialogEx:
如•?
件t是C?
谜•此?
通£
除y非C?
重?
CDialogEx:
OnlnitDialog()〃函?
^数oy并?
//同S?
Q将?
ENM_CHANGE标ao志?
“或八”运?
彌a处?
|理0^程•序•代?
结论
经过5个星期的C++课程设计,我在老师和同学的共同帮助下,顺利完成该课程设计,收获很大。
正所谓“纸上谈兵终觉浅,觉知此事要躬行。
”所以在本
学期课程设计是很及时、很必要的。
这样不仅能加深我们对MFC程序设计的掌握,而且还及时、真正的做到了学以致用。
主要是以下几点。
基本功要过硬。
不能马虎经常犯些小错误,提高自己找错纠错能力,通常错误总是那几种,多练习就熟练了。
要善于查找资料提高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 计算器 报告 讲解