※ 학생성적관리 클래스( 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. 미설개~~
동적 바인딩(DynamicBinding) (0) | 2018.03.13 |
---|---|
다중 상속 시 모호성발생의 해결 방법(가상상속 처리) (0) | 2018.03.13 |
Class 관계 - Has ~ a 관계(C++) (0) | 2018.03.08 |
오버로딩(Overloading) (0) | 2018.03.06 |
간단한 학생 성적 프로그램 ver1(동적할당) (0) | 2018.03.06 |
댓글 영역