도서대출 시스템 코드인데
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;
}
}
dddwj