}
BOOL CCreditDlg::OnInitDialog() {
CDialog::OnInitDialog();
m_spinMonth.SetRange(0,360); //设置最大贷款月数为360,即30年 return TRUE; }
void CCreditDlg::OnCalc() //”计算”功能响应函数 {
UpdateData(true);
double rate=m_dRate/100;
m_dPay=m_dLoan*(rate*pow(1+rate,m_nMonth))/(pow(1+rate,m_nMonth)-1); m_dTotalPay=m_dPay*m_nMonth; UpdateData(false); }
//IntegerCalculator.cpp
#include \
#include \李知澳 1.h\#include \
CIntegerCalculator::CIntegerCalculator(CWnd* pParent /*=NULL*/) : CDialog(CIntegerCalculator::IDD, pParent) {
m_nValue = 0; m_nChoice = 0; m_nOperand1=0; m_nOperand2=0; m_nOperator=-1;
m_bOperator=false; //默认没有单击运算符 }
void CIntegerCalculator::DoDataExchange(CDataExchange* pDX) {
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_VALUE, m_nValue);
DDX_Radio(pDX, IDC_RADIODEC, m_nChoice); }
void CIntegerCalculator::OnB1() //数字”1”按钮响应函数 {
m_nValue=m_nValue*10+1; UpdateData(false); }
void CIntegerCalculator::OnB2() //数字”2”按钮响应函数 {
m_nValue=m_nValue*10+2;
11
UpdateData(false); }
void CIntegerCalculator::OnB3() //数字”3”按钮响应函数 {
m_nValue=m_nValue*10+3; UpdateData(false); }
void CIntegerCalculator::OnB4() //数字”4”按钮响应函数 {
m_nValue=m_nValue*10+4; UpdateData(false); }
void CIntegerCalculator::OnB5() //数字”5”按钮响应函数 {
m_nValue=m_nValue*10+5; UpdateData(false); }
void CIntegerCalculator::OnB6()//数字”6”按钮响应函数 {
m_nValue=m_nValue*10+6; UpdateData(false); }
void CIntegerCalculator::OnB7()//数字”7”按钮响应函数 {
m_nValue=m_nValue*10+7; UpdateData(false); }
void CIntegerCalculator::OnB8()//数字”8”按钮响应函数 {
m_nValue=m_nValue*10+8; UpdateData(false); }
void CIntegerCalculator::OnB9()//数字”9”按钮响应函数 {
m_nValue=m_nValue*10+9; UpdateData(false); }
void CIntegerCalculator::OnB0() //数字”0”按钮响应函数 {
m_nValue=m_nValue*10+0; UpdateData(false); }
void CIntegerCalculator::OnBc() //”清空”按钮响应函数 {
12
m_nValue=0;
m_nOperator=-1;
m_bOperator=false; //置标识位 m_nOperand1=0; //清空数据 m_nOperand2=0;
UpdateData(false); //更新显示 }
void CIntegerCalculator::OnBequal() //“=”按钮响应函数 {
if(m_bOperator==false) //判断是否单击过运算符 {
AfxMessageBox(\输入错误,请单击运算符\ return; }
m_nOperand2=m_nValue; //获得第二个操作数 if(m_nChoice==1) //如果选八进制 {
//将运算数转换为十进制
m_nOperand1=octToDec(m_nOperand1); m_nOperand2=octToDec(m_nOperand2); }
switch(m_nOperator) {
case 1:
m_nValue=m_nOperand1+m_nOperand2; break; case 2:
m_nValue=m_nOperand1-m_nOperand2; break; case 3:
m_nValue=m_nOperand1*m_nOperand2; break; case 4:
if(m_nOperand2==0) //判断除数是否为0 {
AfxMessageBox(\除数不能为零,请重新计算!\ OnBc(); //调用“清空”响应函数 }
m_nValue=m_nOperand1/m_nOperand2; break; }
if(m_nChoice==1) {
char s8[30];
13
itoa(m_nValue,s8,8); //将计算结果以八进制显示 m_nValue=atoi(s8); }
UpdateData(false); //显示计算结果
m_nValue=0; //为下一次运算做准备 }
void CIntegerCalculator::OnBadd() “+”按钮响应函数 {
m_nOperator=1; m_bOperator=true; m_nOperand1=m_nValue; m_nValue=0; }
void CIntegerCalculator::OnBsub() “-”按钮响应函数 {
m_nOperator=2; m_bOperator=true; m_nOperand1=m_nValue; m_nValue=0; }
void CIntegerCalculator::OnBmul() //“*”按钮响应函数 {
m_nOperator=3; m_bOperator=true; m_nOperand1=m_nValue; m_nValue=0; }
void CIntegerCalculator::OnBdiv() //“/”按钮响应函数 {
m_nOperator=4; m_bOperator=true; m_nOperand1=m_nValue; m_nValue=0; }
void CIntegerCalculator::OnRadiodec() //十进制功能 {
CButton *p8=((CButton *)GetDlgItem(IDC_B8));//通过ID得到按钮控件对象指针 p8->EnableWindow(true); //使按钮可用
CButton *p9=((CButton *)GetDlgItem(IDC_B9)); p9->EnableWindow(true); transform(); //进制转换 }
void CIntegerCalculator::OnRadiooct() //八进制功能 {
14
CButton *p8=((CButton *)GetDlgItem(IDC_B8)); p8->EnableWindow(false); //使按钮不可用 CButton *p9=((CButton *)GetDlgItem(IDC_B9)); p9->EnableWindow(false); transform(); }
void CIntegerCalculator::transform() //进制转换 {
UpdateData(true); //获得数据
if(m_nChoice==0) //如果选择十进制
m_nValue=octToDec(m_nValue); //将八进制转换为十进制 else //如果选择八进制 {
char s8[30];
itoa(m_nValue,s8,8);
m_nValue=atoi(s8); //更新界面,显示转换后结果 }
UpdateData(false); }
int CIntegerCalculator::octToDec(int value) //八进制转换为十进制 {
int result=0; //结果 int num=0; //次幂 while(value!=0) {
int low=value; //取个位数 int mul=1;
for(int i=0;i mul*=8; } result=result+low*mul; //累加结果 num++; value=value/10; //去掉个位数 } return result; //返回计算结果 } void CIntegerCalculator::OnCheckchoice() //复选框控件功能 { CButton *pChoice=((CButton*)GetDlgItem(IDC_CHECKCHOICE)); if(BST_CHECKED==pChoice->GetCheck()) { CButton *pDec=((CButton*)GetDlgItem(IDC_RADIODEC)); pDec->EnableWindow(true); 15