객체지향 성적 정리 프로그램 소스 분석

안녕하세요. 오늘은 성적 입력 프로그램을 객체지향적으로 설계해보고 소스와 결과를 분석해보도록 하겠습니다.

 

<문제>

다음과 같은 메뉴를 출력하여 해당기능을 수행하는 프로그램 작성

Student

number, name, score

Student(), setScore(), getScore(), display(), getNumber()

--------메뉴---------

1.입력

2.디스플레이

3.종료

number는 정적멤버변수

getNumber는 정적멤버함수

최대 5, 객체포인터배열(동적 객체)

디스플레이는 입력된 학생 수 만큼만 출력

<설계>

우선 클래스로 Student를 먼저 만들었습니다.

 

우선 변수가 number, name, score 이렇게 3개가 있는데 number는 정적멤버변수라고 했으므로 자료형 앞에 static을 붙였다. 우선 Student()로 생성자를 호출하였고, setScore()에서 점수를 입력받은 뒤 getScore()에서 반환되게 하였습니다.

 

또한 display()에선 이름과 성적이 보여질 수 있도록 하였고 정적멤버함수인 getNumber()number를 다시 반환할 수 있도록 하였습니다. 그리고 최대 5, 객체포인터배열(동적객체)를 사용하여 Student *pStudent[5]; / pStudent[i]=new Student(input_name); 이렇게 적어주었습니다.

 

우선 case1에선 이름과 성적을 입력할 수 있고 case2에선 번호순서를 부여하여 번호, 이름, 성적 순으로 보이게 하였습니다.

 

<코드>

#include<iostream>

#include<string>

using namespace std;

 

class Student{

private:

string name;

int score;

public:

static int number;

Student(string ch)

{

name=ch;

number ++;

}

void setScore(int x)

{

score=x;

}

int getScore()

{

return score;

}

void display()

{

cout<<"이름:"<<name<<endl;

cout<<"성적:"<<score<<endl;

}

static int getNumber(){

return number;

}

};

int Student::number=0;

 

int main()

{

int button;

int i;

string input_name;

int input_score;

Student *pStudent[5];

 

while(1)

{

cout<<"------메뉴------"<<endl;

cout<<"1.입력"<<endl;

cout<<"2.디스플레이"<<endl;

cout<<"3.종료"<<endl;

cout<<"메뉴를 고르시오:";

cin>>button;

cout<<endl;

 

switch(button){

case 1:

{

i=Student::getNumber();

 

if(i<5)

{

cout<<"이름을 입력하시오:";

cin>>input_name;

pStudent[i]=new Student(input_name);

 

cout<<"성적을 입력하시오:";

cin>>input_score; pStudent[i]->setScore(input_score);

}

else

cout<<"학생수가 많습니다."<<endl;

continue;

}

break;

case 2:

{

i=Student::getNumber();

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

{

cout<<"번호 : "<<j+1<<endl;

pStudent[j]->display();

}

}

break;

 

case 3:

cout<<"끝냅니다."<<endl;

break;

}

if(button==3)

break;

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글

Designed by JB FACTORY