银行ATM自动取款机模拟系统实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档