문제1. Person 클래스를 상속 받는 Student, Professor 클래스를 작성하여 Result 값이 나오도록 프로그래밍 하여라.
결과물

소스
/*
만든이 : NoSyu
만든 날짜 : 2008-11-04
프로그램 설명
문제1. Person 클래스를 상속 받는 Student, Professor 클래스를 작성하여
Result 값이 나오도록 프로그래밍 하여라.
*/
#include <iostream> // iostream include
// using standard input/ouput
using std::cout;
using std::cin;
using std::endl;
// function declaration
// class declaration
class Person
{
const char *name;
char *phone;
int age;
public:
// 디폴트 생성자
Person() {}
// 복사생성자
Person(char* _name, char* _phone, int _age) : name(_name)
{
this->phone = new char[strlen(_phone)+1];
strcpy(this->phone, _phone);
this->age = _age;
}
// 정보 출력
void ShowData()
{
cout << "Name : " << this->name << " // 이름" << endl;
cout << "Phone : " << this->phone << " // 전화번호" << endl;
cout << "Age : " << this->age << " // 나이" << endl;
}
// 소멸자
~Person()
{
delete []this->phone;
}
};
class Student: public Person
{
char* ID; // 학번
char* Major; // 전공
int grade; // 학년
public:
// 디폴트 생성자
Student() {}
// 복사생성자
Student(char* _name, char* _phone, int _age, char* _ID, char* _Major, int _grade)
: Person(_name, _phone, _age)
{
this->ID = new char[strlen(_ID)+1];
strcpy(this->ID, _ID);
this->Major = new char[strlen(_Major)+1];
strcpy(this->Major, _Major);
this->grade = _grade;
}
// 정보 출력
void ShowData()
{
cout << "Student" << endl;
cout << "ID : " << this->ID << " // 학번" << endl;
cout << "Major : " << this->Major << " // 전공" << endl;
cout << "Grade : " << this->grade << " // 학년" << endl;
Person::ShowData(); // Person 클래스에 있는 함수 호출
cout << "======================" << endl;
}
// 소멸자
~Student()
{
delete []this->ID;
delete []this->Major;
}
};
class Professor: public Person
{
char* ID; // 교수번호
char* Major; // 전공
public:
// 디폴트 생성자
Professor() {}
// 복사생성자
Professor(char* _name, char* _phone, int _age, char* _ID, char* _Major)
: Person(_name, _phone, _age)
{
this->ID = new char[strlen(_ID)+1];
strcpy(this->ID, _ID);
this->Major = new char[strlen(_Major)+1];
strcpy(this->Major, _Major);
}
// 정보 출력
void ShowData()
{
cout << "Professor" << endl;
cout << "ID : " << this->ID << " // 교수번호" << endl;
cout << "Major : " << this->Major << " // 전공" << endl;
Person::ShowData(); // Person 클래스에 있는 함수 호출
cout << "======================" << endl;
}
// 소멸자
~Professor()
{
delete []this->ID;
delete []this->Major;
}
};
// main function
int main(void)
{
Student stu("hiya", "031-290-7221", 20, "2007710512", "Computer", 4);
// 이름, 전화번호, 나이, 학번, 학년, 전공
stu.ShowData();
Professor prof("hiya2", "031-290-7220", 53, "12345", "Computer");
// 이름, 전화번호, 나이, 교수번호, 전공
prof.ShowData();
return 0; // 종료
}
문제2. Result 값이 나오도록 프로그래밍 하여라.
조건 1. Vehicle클래스는 Company클래스를 상속
조건 2. Airplane클래스는 Vechicle클래스를 상속
조건 3. Booking시 각 승객의 baggage 무게는 최대 20kg이다. 20kg 이상일 때, “Over Baggage weight”를 나태나고 다시 승객 수와 baggage 무게를 입력 받도록 하여라. (Result 참조) e.g., 승객이 2명 일 때, 최대 허용 가능한 무개는 20*2 = 40kg.
결과물

소스
/*
만든이 : NoSyu
만든 날짜 : 2008-11-04
프로그램 설명
문제2. Result 값이 나오도록 프로그래밍 하여라.
조건 1. Vehicle클래스는 Company클래스를 상속
조건 2. Airplane클래스는 Vechicle클래스를 상속
조건 3. Booking시 각 승객의 baggage 무게는 최대 20kg이다. 20kg 이상일 때,
“Over Baggage weight”를 나태나고 다시 승객 수와 baggage 무게를
입력 받도록 하여라. (Result 참조)
e.g., 승객이 2명 일 때, 최대 허용 가능한 무개는 20*2 = 40kg.
*/
#include <iostream> // iostream include
// using standard input/ouput
using std::cout;
using std::cin;
using std::endl;
// class declaration
class Company
{
public:
char *comName; // 회사이름
int comID; // 회사 ID
// 디폴트 생성자
Company() {}
// 복사 생성자
Company(char* _comName, int _comID)
{
this->comName = new char[strlen(_comName)+1];
strcpy(this->comName, _comName);
this->comID = _comID;
}
// 소멸자
~Company()
{
delete []this->comName;
}
// 정보 출력 함수
void ShowData()
{
cout << "Company Name : " << this->comName << " // 회사이름" << endl;
cout << "Company ID : " << this->comID << " // 회사 ID" << endl;
}
};
class Vehicle : public Company
{
public:
int passenger; // 총 승객 수
int baggage; // 총 가방 무개
void Booking();
// 디폴트 생성자
Vehicle() {}
// 복사 생성자
Vehicle(char* _comName, int _comID, int _passenger, int _baggage)
: Company(_comName, _comID)
{
this->passenger = _passenger;
this->baggage = _baggage;
}
// 정보 출력 함수
void ShowData()
{
cout << "Person Num : " << this->passenger << " // 총 승객 수" << endl;
cout << "Weight of Baggage : " << this->baggage << " // 총 짐 무게" << endl;
}
};
class Airplane : public Vehicle
{
private:
int air_id; // 비행기 ID
int crew_num; // 비행기 승무원수
public:
// 디폴트 생성자
Airplane() {}
// 복사생성자
Airplane(char* _comName, int _comID, int _passenger, int _baggage, int _air_id, int _crew_num)
: Vehicle(_comName, _comID, _passenger, _baggage)
{
this->air_id = _air_id;
this->crew_num = _crew_num;
}
// 정보 출력 함수
void ShowData()
{
cout << "Info. of Airplane ==============" << endl;
Company::ShowData(); // Company 클래스에 있는 함수 호출
Vehicle::ShowData(); // Vehicle 클래스에 있는 함수 호출
cout << "Air ID : " << this->air_id << " // 비행기 ID" << endl;
cout << "Crew Num : " << this->crew_num << " // 비행기 승무원 수" << endl;
cout << "===========================" << endl << endl;
}
};
// function declaration
// Vehicle 클래스 안의 Booking 함수 정의
// 승객 수와 짐 무게를 입력받아 조건을 확인한 후 클래스에 정보 갱신
void Vehicle::Booking()
{
int pass_num = 0; // 입력 받는 승객 수
int weight_cnt = 0; // 입력 받는 짐 무게
cout << "Booking Airplane ==========" << endl;
while(1)
{
// 승객 수 입력받기
cout << "Insert Num. Of Passenger = : ";
cin >> pass_num;
// 짐 무게 입력받기
cout << "insert weight = ";
cin >> weight_cnt;
// 승객당 무게는 20kg
// 만약 받은 짐 무게가 이보다 작거나 같다면 while문 빠져나오기
// 그렇지 않다면 에러 메시지를 띄운 후 다시 입력받기
if(weight_cnt <= pass_num * 20)
{
break;
}
else
{
cout << "Over Baggage weigh" << endl; // 에러 메시지
cin.ignore(); // 입력 스트림 버퍼 비우기
}
} // while(1) 끝
// 클래스에 정보 추가
this->passenger += pass_num;
this->baggage += weight_cnt;
// 끝을 알리는 메시지 출력
cout << "Booking complete =============" << endl << endl;
}
// main function
int main(void)
{
Airplane air("HiYa", 1234, 0, 0, 5678, 10);
// 회사이름, 회사ID, 총 승객 수, 총 짐 무개, 비행기 ID, 비행기 승무원수
air.ShowData();
air.Booking();
air.ShowData();
return 0; // 종료
}
- 2008년 2학기 인간컴퓨터상호작용 - Project pres... (0)2009/01/07
- 2008년 2학기 인간컴퓨터상호작용 - 7th Homework (0)2009/01/07
- 2008년 2학기 컴퓨터네트워크 - Report 01 - Dijk... (0)2008/11/08
- 2008년 2학기 컴퓨터공학실습2 - Report 05 (0)2008/11/08
- 2008년 2학기 전산응용수학 - Report 05 (0)2008/11/08
- 2008년 2학기 전산응용수학 - Report 04 (0)2008/11/08
- 2008년 2학기 인간컴퓨터상호작용 - 6th Homework (0)2008/10/30
글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.







댓글을 달아 주세요