소개글
MFC를 이용하여 구현한 계산기1. source code and explain(1)변수 선언(2)숫자 0~9의 버튼이 눌렸을 경우(3)사칙연산 및 이퀄 버튼이 눌렸을 때(4)실제 계산 부분(5) Clear 버튼
2. 실행 화면
3. 분석(1)처리과정(2)문제점(소스코드 첨부, 사칙연산 및 소수점 자리까지 계산)
컴파일 실행환경
비쥬얼 스튜디오 6.0본문내용
1. source code and explain(1)변수 선언
enum {nop, plus, minus, mul, div}; //4칙 연산을 표현하는 enum 값
double result; //계산된 결과 값을 저장해 주는 멤버 변수
double m_op1; //숫자를 저장해 주는 멤버 변수
double m_result; //화면에 출력해 주는 숫자들을 저장해 주는 변수
int op; //4칙 연산을 구분해 주는 변수
int op_count; //맨 처음 연산자가 눌렸는지 두 번째로 눌렸는지 확인하는데 사 //용하는 멤버변수
(2)숫자 0~9의 버튼이 눌렸을 경우
void CCalDlg::On0() {
numCal(0);
}
void CCalDlg::On1() {
numCal(1);
}
void CCalDlg::OnButton2() {
numCal(2);
}
.......
void CCalDlg::OnButton9() {
numCal(9);
}
void CCalDlg::numCal(int num)
{
m_op1 = m_op1*10 + num;
m_result = m_op1;
UpdateData(false);
}
숫자버튼을 눌렀을 경우 numCal(int num)함수가 호출된다. 이 함수는 해당 버튼의 숫자를 매개변수로 함수에 넘겨줌으로써 숫자를 누적해서 m_op1에 넣어준다.
m_result = m_op1을 해줌으로써 edit창에 표시를 해준다.
(3)사칙연산 및 이퀄 버튼이 눌렸을 때
void CCalDlg::OnButton_Equal() {
calculator(nop);
}
void CCalDlg::OnButtonAdd() {
op_count++; //사칙연산이 눌렸음을 카운트 해준다.
calculator(plus); //더하기를 계산해 주는 함수 호출
}
void CCalDlg::OnButtonMin() {
op_count++;
calculator(minus);
}
void CCalDlg::OnButtonMul() {
op_count++;
calculator(mul);
}
void CCalDlg::OnButtonDiv() {
op_count++;
calculator(div);
}
void CCalDlg::calculator(int op){
if(CCalDlg::op == nop){ // ‘=’버튼이 눌렸을 경우
CCalDlg::op = op;
equal(op);
}
else{ //사칙연산 버튼이 눌렸을 경우
equal(CCalDlg::op);
CCalDlg::op = op;
}
m_op1=0;
}
사칙연산 버튼이 눌렸을 경우 연산자의 개수를 카운트 해주고 calculator()함수를 호출해 주고 해당 연산자를 함수의 매개변수로 넘겨준다. 연산자의 개수를 카운트 해주는 이유는 예를 들어 “ 9-2- ”가 순서대로 눌렸을 경우 결과 값 7이 출력되어야 하기 때문이다. 그러나 처음 “ 9- ” 했을 경우에는 빼기를 해줄 필요가 없기 때문에 연산자가 맨 처음에 눌렸는지 아니면 두 번째 이상으로 눌렸는지를 알아야 한다. calculator()함수는 equal함수를 다시 호출해 준다.
압축파일 내 파일목록
Calc.hwp
Calc.zip
source/Cal.aps
source/Cal.clw
source/Cal.cpp
source/Cal.dsp
source/Cal.dsw
source/Cal.h
source/Cal.ncb
source/Cal.opt
source/Cal.plg
source/Cal.rc
source/CalDlg.cpp
source/CalDlg.h
source/ReadMe.txt
source/resource.h
source/StdAfx.cpp
source/StdAfx.h
source/res/Cal.ico
source/res/Cal.rc2
Calc.zip
source/Cal.aps
source/Cal.clw
source/Cal.cpp
source/Cal.dsp
source/Cal.dsw
source/Cal.h
source/Cal.ncb
source/Cal.opt
source/Cal.plg
source/Cal.rc
source/CalDlg.cpp
source/CalDlg.h
source/ReadMe.txt
source/resource.h
source/StdAfx.cpp
source/StdAfx.h
source/res/Cal.ico
source/res/Cal.rc2