#include <iostream>
#include <string>
using namespace std;
class Product {
protected:
int id;
string info;
string prod;
string price;
public:
Product(){}
Product(int id, string info, string prod, string price) {
this->id = id; this->info = info; this->prod = prod; this->price = price;
}
virtual void show() = 0;
};
class Book :public Product {
protected:
string ISBN;
string writer;
string sub;
public:
Book(int id, string info, string prod, string price, string ISBN, string writer, string sub) :Product(id, info, prod, price) {
this->ISBN = ISBN;
this->writer = writer;
this->sub = sub;
}
void show() {
cout << "---- 상품 ID : " << id << '\n';
cout << "상품설명 : " << info << '\n';
cout << "생산자 : " << prod << '\n';
cout << "가격 : " << price << '\n';
cout << "ISBN : " << ISBN << '\n';
cout << "책제목 : " << sub << '\n';
cout << "저자 : " << writer << '\n';
}
};
class ConversationBook :public Book {
protected:
string lan;
public:
ConversationBook(int id, string info, string prod, string price, string ISBN, string writer, string sub, string lan) :Book(id, info, prod, price, ISBN, writer, sub) {
this->lan = lan;
}
void show() {
cout << "---- 상품 ID : " << id << '\n';
cout << "상품설명 : " << info << '\n';
cout << "생산자 : " << prod << '\n';
cout << "가격 : " << price << '\n';
cout << "ISBN : " << ISBN << '\n';
cout << "책제목 : " << sub << '\n';
cout << "저자 : " << writer << '\n';
cout << "언어 : " << lan << '\n';
}
};
class CompactDisk :public Product {
protected:
string a_sub;
string singer;
public:
CompactDisk(int id, string info, string prod, string price, string a_sub, string singer) :Product(id, info, prod, price) {
this->a_sub = a_sub;
this->singer = singer;
}
void show() {
cout << "---- 상품 ID : " << id << '\n';
cout << "상품설명 : " << info << '\n';
cout << "생산자 : " << prod << '\n';
cout << "가격 : " << price << '\n';
cout << "앨범제목 : " << a_sub << '\n';
cout << "가수 : " << singer << '\n';
}
};
int main() {
Product* p[100];
int menu, o_menu;
int index = 0;
string info, prod, price, ISBN, writer, sub, lan, a_sub, singer;
cout << "***** 상품 관리 프로그램을 작동합니다 *****" << '\n';
while (1) {
cout << "상품 추가(1), 모든 상품 조회(2), 끝내기(3) ? ";
cin >> menu;
switch (menu) {
case 1:
cout << "상품 종류 책(1), 음악CD(2), 회화책(3) ? ";
cin >> o_menu;
cin.ignore();
switch (o_menu) {
case 1: {
cout << "상품설명>>"; getline(cin, info);
cout << "생산자>>"; getline(cin, prod);
cout << "가격>>"; getline(cin, price);
cout << "책제목>>"; getline(cin, sub);
cout << "저자>>"; getline(cin, writer);
cout << "ISBN>>"; getline(cin, ISBN);
cout << "\n";
Book *b = new Book(index, info, prod, price, ISBN, writer, sub);
p[index] = b;
break;
}
case 2: {
cout << "상품설명>>"; getline(cin, info);
cout << "생산자>>"; getline(cin, prod);
cout << "가격>>"; getline(cin, price);
cout << "앨범제목>>"; getline(cin, a_sub);
cout << "가수>>"; getline(cin, singer);
cout << "\n";
CompactDisk *c = new CompactDisk(index, info, prod, price, a_sub, singer);
p[index] = c;
break;
}
case 3: {
cout << "상품설명>>"; getline(cin, info);
cout << "생산자>>"; getline(cin, prod);
cout << "가격>>"; getline(cin, price);
cout << "책제목>>"; getline(cin, sub);
cout << "저자>>"; getline(cin, writer);
cout << "언어>>"; getline(cin, lan);
cout << "ISBN>>"; getline(cin, ISBN);
cout << "\n";
ConversationBook *cb = new ConversationBook(index, info, prod, price, ISBN, writer, sub, lan);
p[index] = cb;
break;
}
}
index++;
break;
case 2:
for (int i = 0; i < index; i++)
p[i]->show();
break;
case 3:
return 0;
}
}
}