도서대출 시스템 코드인데

 

1.책 추가 할때 이미있던 책이면 오류 나오게
2.출판년도 검색, 가격 검색할때 첫번째 값이 두번째 값보다 크면 오류 나오게

 

이 두개 추가하는데 계속 막혀서 진전이 없네요 ㅠㅠ 도와주세영

 

 

 

 

 

 

 

#include <iostream>
#include <string>

using namespace std;

class Book
{
private:
 string BookName; //책이름
 string Writer; //저자
 string Maker; //출판사
 int ID; // ID // 출판년도
 int Price;
 int WhenMake; //가격
 bool Loan = false; // 대출상태
public:
 Book()
 {
 }
 Book(string aBookName, string aWriter, string aMaker, int aID, int aWhenMake, int aPrice)
 {
  cout << "잉??" << endl;
  BookName = aBookName;
  Writer = aWriter;
  Maker = aMaker;
  ID = aID;
  WhenMake = aWhenMake;
  Price = aPrice;
 }
 Book(const Book &A)
 {
  BookName = A.BookName;
  Writer = A.Writer;
  Maker = A.Maker;
  ID = A.ID;
  WhenMake = A.WhenMake;
  Price = A.Price;
 }
 void MenuShow()
 {
  cout << "도서 ID\t도서 이름\t저자\t출판사\t출판년도\t가격\t대출여부\t" << endl;
 }
 void ShowInfo()
 {
  cout << ID << "\t" << BookName << "\t" << Writer << "\t" << Maker << "\t" << WhenMake << "\t" << Price << "\t";
  if (Loan == true) cout << "   대출불가능" << endl;
  else cout << "    대출가능" << endl;
 }
 bool IsExist_Name(const string Name)
 {
  return Name == BookName;
 }
 bool IsExist_Price(const int MinPrice, const int MaxPrice)
 {
  return ((Price >= MinPrice) && (Price <= MaxPrice));
 }
 bool IsExist_WhenMake(const int MinWhenMake, const int MaxWhenMake)
 {
  return ((WhenMake >= MinWhenMake) && (WhenMake <= MaxWhenMake));
 }

 void Loan_()
 {
  if (Loan == false)
  {
   cout << "도서대출이 완료되었습니다." << endl;
   Loan = true;
  }
  else
  {
   cout << "대출이 불가합니다." << endl;
  }
 }
 void _Return()
 {
  if (Loan == true)
  {
   cout << "도서반납이 정상적으로 처리되었습니다." << endl;
   Loan = false;
  }
  else
  {
   cout << "반납이 불가합니다." << endl;
  }
 }
 void ShowMenu()
 {
  cout << "0. 프로그램 종료" << endl;
  cout << "1. 도서 입력" << endl;
  cout << "2. 도서 검색" << endl;
  cout << "3. 가격 검색" << endl;
  cout << "4. 출판년도 검색" << endl;
  cout << "5. 도서 대출" << endl;
  cout << "6. 도서 반납" << endl;
  cout << "7. 도서 정보 출력" << endl;
 }
};


int main()
{
 int ID, WhenMake, Price;
 string BookName, Writer, Maker;
 Book A[1000];
 int MinPrice, MaxPrice, MinMake, MaxMake;
 int BookNum = 0;
 int i, menu;
 int tmp;
 cout << "메뉴를 선택하세요." << endl;
 A->ShowMenu();
 cin >> menu;
 while (menu)
 {
  switch (menu)
  {
  case 1:
  {
   cout << "도서 ID: ";
   cin >> ID;
   cout << "도서 이름: ";
   cin >> BookName;
   cout <<"저자명: ";
   cin >> Writer;
   cout <<"출판사: ";
   cin >> Maker;
   cout << "출판년도: ";
   cin >> WhenMake;
   cout << "가격: ";
   cin >> Price;
   cout << endl;
   //Book *Temp;
   //Temp = new Book(BookName, Writer, Maker, ID, WhenMake, Price);
   //A[BookNum] = *Temp;
   Book Temp(BookName, Writer, Maker, ID, WhenMake, Price);
   A[BookNum] = Temp;
   BookNum++;
   break;
  }
  case 2:
   cout << "책이름을 입력해주세요." << endl;
   cin >> BookName;
   A->MenuShow();
   for (i = 0; i < BookNum; i++)
   {
    if (A[i].IsExist_Name(BookName))
    {
     cout << "찾았습니다!" << endl;
     A[i].ShowInfo();
     break;
    }
   }
   if (A[i].IsExist_Name(BookName)) break;
   else
   {
    cout << "입력하신 책을 찾지 못하였습니다." << endl;
   }
   break;
  case 3:
   cout << "도서 가격 최솟값과 최댓값을 입력하세요." << endl;
   cin >> MinPrice >> MaxPrice;
   int tmp;
   A->MenuShow();
   for (i = 0; i < BookNum; i++)
   {
    if (A[i].IsExist_Price(MinPrice, MaxPrice))
    {
     A[i].ShowInfo();
     tmp = i;
    }
   }
   if (A[tmp].IsExist_Price(MinPrice, MaxPrice)) break;
   else
   {
    cout << "입력하신 가격대의 책을 찾지 못하였습니다." << endl;
   }
   i = 9999;
   break;
  case 4:
   cout << "도서 출판 최솟값과 최댓값을 입력하세요." << endl;
   cin >> MinMake >> MaxMake;
   A->MenuShow();
   for (i = 0; i < BookNum; i++)
   {
    if (A[i].IsExist_WhenMake(MinMake, MaxMake))
    {
     A[i].ShowInfo();
     tmp = i;
    }
   }
   if (A[tmp].IsExist_WhenMake(MinMake, MaxMake)) break;
   else
   {
    cout << "입력하신 출판년도 책을 찾지 못하였습니다." << endl;
   }
   break;
  case 5:
   cout << "대출하실 책의 이름을 입력해주세요. " << endl;
   cin >> BookName;
   for (i = 0; i < BookNum; i++)
   {
    if (A[i].IsExist_Name(BookName))
    {
     A[i].Loan_();
     break;
    }
   }
   if (A[i].IsExist_Name(BookName)) break;
   else cout << "책의 이름을 찾지 못했습니다." << endl;
   break;
  case 6:
   cout << "반납하실 책의 이름을 입력해주세요. " << endl;
   cin >> BookName;
   for (i = 0; i < BookNum; i++)
   {
    if (A[i].IsExist_Name(BookName))
    {
     A[i]._Return();
     break;
    }
   }
   if (A[i].IsExist_Name(BookName)) break;
   else cout << "책의 이름을 찾지 못했습니다." << endl;
   break;
  case 7:
   A->MenuShow();
   for (i = 0; i < BookNum; i++)
   {
    A[i].ShowInfo();
   }
   break;
  default:
   break;
  }
  cout <<endl << "메뉴를 입력해주세요. " << endl;
  A->ShowMenu();
  cin >> menu;
 }
}