银行ATM自动取款机模拟系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安科技大学
《VC++语言程序设计》
实验报告
题目 __科学计算器的实现______ 院、系(部)计算机科学与技术学院
专业及班级软件工程1102班
姓名赵文杰
日期 2012/11/9
1.题目:
科学计算器
2.功能需求:
这是计算器,在满足用户需求方面应有以下功能:1)进行简单的加、减、乘、除;
2)进行函数运算如sin、cos、tan函数;
3)可进行进制转换、及弧度运算;
3.总体设计
4.详细设计
以下是详细的分部:
1>基于MFC创建一个基本对话框Calculator
2>实现基本运算的代码:
void CCalculatorDlg::OnNumberKey(UINT nID) {
CString n;
switch(nID)
{
case IDC_NUMBER1:n="1";break;
case IDC_NUMBER2:n="2";break;
case IDC_NUMBER3:n="3";break;
case IDC_NUMBER4:n="4";break;
case IDC_NUMBER5:n="5";break;
case IDC_NUMBER6:n="6";break;
case IDC_NUMBER7:n="7";break;
case IDC_NUMBER8:n="8";break;
case IDC_NUMBER9:n="9";break;
case IDC_NUMBER0:n="0";break;
case IDC_NUMBER_Point:n=".";
if(Point==TRUE)
{
m_Point.ShowWindow(SW_HIDE);
Point=FALSE;
}
break;
}
if(NumberState==1)
{
m_Cnumber=m_Cnumber+n;
number1=atof(m_Cnumber);
UpdateData(FALSE);
}
else
{
m_Cnumber=m_Cnumber+n;
number2=atof(m_Cnumber);
UpdateData(FALSE);
}
if(Zero=FALSE)
{
Zero=TRUE;
m_Zero.ShowWindow(SW_SHOW);
}
}
void CCalculatorDlg::OnOperationKey(UINT nID) {
m_number=atof(m_Cnumber);
switch(nID)
{
case IDC_NUMBER_PlusMinus:m_number=m_number;
if(NumberState==1)
number1=m_number;
else
number2=m_number;
m_Cnumber.Format("%g",m_number);
UpdateData(FALSE);
break;
case IDC_NUMBER_BackSpace:
int n;
n=m_Cnumber.GetLength();
m_Cnumber=m_Cnumber.Left(n-1);
UpdateData(FALSE);
break;
case IDC_NUMBER_Divide:cal();
if(Zero==TRUE)
{
m_Zero.ShowWindow(SW_HIDE);
Zero=FALSE;
}
OperationState=1;
m_number=0;
m_Cnumber="";
NumberState=2;
break;
case IDC_NUMBER_Multiply:cal();
OperationState=2;
m_number=0;
m_Cnumber="";
NumberState=2;
break;
case IDC_NUMBER_Add:cal();
OperationState=3;
m_number=0;
m_Cnumber="";
NumberState=2;
break;
case IDC_NUMBER_Subtract:cal();
OperationState=4;
m_number=0;
m_Cnumber="";
NumberState=2;
break;
case IDC_NUMBER_Clear:
number1=number2=m_number=0;
m_Cnumber.Format("%g",m_number);
UpdateData(FALSE);
m_Cnumber="";
NumberState=1;
break;
case IDC_NUMBER_Sqrt:
number1=m_number=sqrt(number1);
m_Cnumber.Format("%g",m_number);
UpdateData(FALSE);