~cpp 객체와 클래스 (성적 관리 프로그램) 성적 관리하는 프로그램을 클래스(class)를 이용하여 C++로 작성하여 본다. 1. 클래스(Class) 설계 SungJuk Class Member 변수 이름 char[21] m_szName 국어 점수 int m_nKorean 영어 점수 int m_nEnglish 수학 점수 int m_nMath 총점 int m_nTotal 평균 int m_dAvg 등수 double m_nRank Member 함수 입력함수 void Input(char szName[],int nKorean, int nEnglish,int nMath); 총점 함수 int GetTotal(void); 등수 함수 int GetRank(void); 등수 기록 함수 void SetRank(int nRank); 결과출력 함수 void PrintResult(); 2. 컴파일러 세팅 (Compiler Setting) 1) Microsoft Visual Studio를 실행시킨다. 2) File->New를 선택한다. 3) Tab에서 Project를 선택한다. 4) ListBox에서 Win32 Console Application을 선택한다. 5) Project 이름을 삽입한다. 6) Location:에 프로그램을 작성할 경로를 지정한다. 7) OK를 누른다. 8) An empty project를 선택하고, Finish를 선택한다. 9) File->New를 선택한다. 10) Tab에서 Files를 선택한다. 11) C/C++ Header File을 선택한 후, 오른쪽 File 칸에 "SungJuk.h"라고 기입한다. 12) OK 버튼을 누른다. 13) 오른쪽 Project Workspace 창에서 Class View Tab을 선택한다. 14) Tree를 모두 펼쳐 보면, SungJuk.h와 SungJuk.cpp가 존재한다.각 File을 밑에 보여주는 Source를 작성한다. 15) Source 작성이 끝나면, F7을 눌러 Compile한다. 16) Error를 모두 잡은 후, Ctrl+F5를 눌러 실행하여 본다. 3. 결과 4. Source Code SungJuk.h class SungJuk { private: char m_szName[21]; int m_nKorean,m_nEnglish,m_nMath; int m_nTotal; int m_nRank; double m_dAvg; public: SungJuk(); void Input(char szName[],int nKorean,int nEnglish,int nMath); int GetTotal(void); int GetRank(void); void SetRank(int nRank); void PrintResult(); }; SungJuk.cpp #include "iostream.h" #include "string.h" #include "SungJuk.h" void main(void) { SungJuk sung[5]; sung[0].Input("Kim1",90,70,80); sung[1].Input("Lee1",100,90,80); sung[2].Input("Kim2",100,100,100); sung[3].Input("Lee2",80,70,100); sung[4].Input("Park",85,75,70); for(int i = 0;i < 5;i++) { sung[i].SetRank(i+1); } for(i = 0;i< 5;i++) { for(int j = 0;j < 5;j++) { if(sung[i].GetTotal() > sung[j].GetTotal()) { if(sung[i].GetRank() > sung[j].GetRank()) { int nTemp; nTemp = sung[i].GetRank(); sung[i].SetRank(sung[j].GetRank()); sung[j].SetRank(nTemp); } } } } for(i = 0;i < 5;i++) { sung[i].PrintResult(); } } SungJuk::SungJuk() { memset(m_szName,NULL,sizeof(char)*21); m_nKorean = 0; m_nEnglish = 0; m_nMath = 0; m_nTotal = 0; m_nRank = 0; m_dAvg = 0.0; } void SungJuk::Input(char szName[],int nKorean,int nEnglish,int nMath) { strcpy(m_szName,szName); m_nKorean = nKorean; m_nEnglish = nEnglish; m_nMath = nMath; m_nTotal = m_nKorean + m_nEnglish + m_nMath; m_dAvg = m_nTotal / 3; } int SungJuk::GetRank(void) { return m_nRank; } void SungJuk::SetRank(int nRank) { m_nRank = nRank; } int SungJuk::GetTotal(void) { return m_nTotal; } void SungJuk::PrintResult() { cout << "Rank : " << m_nRank; cout << "\tName : " << m_szName; cout << "\tKorean = " << m_nKorean; cout << "\tEnglish = " << m_nEnglish; cout << "\tMath = " << m_nMath; cout << "\tTotal = " << m_nTotal; cout << "\tAvg = " << m_dAvg; cout << "\n\n"; }