상세 컨텐츠

본문 제목

Has~a관계 이용한 데이터 관리클래스 (학생성적 C++)

C++ 언어

by ChrisMare 2018. 3. 8. 15:51

본문

※ 학생성적관리 클래스( Data관리 클래스) - Student Score ManageMent System (SMS)

Has ~a 관계 즉, --> 데이터 관리클래스를 이용해서 간단한 프로그래밍 해보기!!


그림으로 간단히 이해!!



// SMS.cpp


#include <iostream>

#include <string>

using namespace std;


class Name

{

string name;

public:

//setter

void setName(string name)

{

this->name = name;

}

//getter는 값을 가지고 오는것만 하기 떄문에 값변경 x

// == const 사용

string getName()const

{

return name;

}

};


class Subject

{

int score;

public:

//setter

void setSubject(int score)

{

this->score = score;

}

//getter

int getSubject()const

{

return score;

}

};


class ScoMagSys

{

Name name;

Subject kor;

Subject eng;

Subject math;

int total;

float avg;


public:

//setter

void setName(string name)

{

this->name.setName(name);

}

void setKor(int kor)

{

this->kor.setSubject(kor);

}

void setEng(int eng)

{

this->eng.setSubject(eng);

}

void setMath(int math)

{

this->math.setSubject(math);

}

void setTotal(int total)

{

this->total = total;

}

void setAvg(float avg)

{

this->avg = avg;

}


//getter

string getName()const

{

return name.getName();

}

int getKor()const

{

return kor.getSubject();

}

int getEng()const

{

return eng.getSubject();

}

int getMath()const

{

return math.getSubject();

}

int getTotal()const

{

return total;

}

float getAvg()const

{

return avg;

}

};


void AllocMem(ScoMagSys**p, int num);

void Operator(ScoMagSys*p, int num);

void InputMemInfo(ScoMagSys *p, int num);

void OutputMemInfo(ScoMagSys *p, int num);

void deleteMem(ScoMagSys *p);


int main()

{

ScoMagSys* sms;

int num;

cout << "input number : ";

cin >> num;

//sms = new ScoMagSys[num];

// 학생 할당

AllocMem(&sms, num);


// 각 학생 정보 입력

InputMemInfo(sms, num);


// 학생 성적 처리

Operator(sms, num);


// 학생 출력

OutputMemInfo(sms, num);


// 메모리 삭제

deleteMem(sms);


return 0;

}


void AllocMem(ScoMagSys**p, int num)

{

*p = new ScoMagSys[num];

}


void Operator(ScoMagSys*p, int num)

{

int kor, eng, math;

for (int i = 0; i < num; i++)

{

kor = (p + i)->getKor();

eng = (p + i)->getEng();

math = (p + i)->getMath();

(p + i)->setTotal(kor + eng + math);

(p + i)->setAvg((kor + eng + math) / 3.f);

}

}


void InputMemInfo(ScoMagSys *p, int num)

{

// 학생 정보변수

string name;

int score;


for (int i = 0; i < num; i++)

{

cout << "Input Name : ";

cin >> name;

(p + i)->setName(name);

cout << "Input Kor'score : ";

cin >> score;

(p + i)->setKor(score);

cout << "Input Eng'score : ";

cin >> score;

(p + i)->setEng(score);

cout << "Input Math'score : ";

cin >> score;

(p + i)->setMath(score);

}

}


void OutputMemInfo(ScoMagSys *p, int num)

{

cout << "Name\tKor\tEng\tMath\Total\tAvg" << endl;

for (int i = 0; i < num; i++)

{

cout << (p + i)->getName() << "\t";

cout << (p + i)->getKor() << "\t";

cout << (p + i)->getEng() << "\t";

cout << (p + i)->getMath() << "\t";

cout << (p + i)->getTotal() << "\t";

cout << (p + i)->getAvg() << endl;

}

}

void deleteMem(ScoMagSys *p)

{

delete[]p;

}


감사합니다.

미래를 설계하는 개발자 - By. 미설개~~

관련글 더보기

댓글 영역