여기서 한개만 삭제하고싶은데요
형들 아래 코딩입니다..
도와주세요 막혀서 삭제하는게 안되요.
저는 버로우 텍스트파일에있는걸 다시 읽은후에 삭제하고자하는 부분만 제외하고 포문을 두번을 돌려서
다시 텍스트파일에 써주는 방식으로 하려고 했는데 에러가나더라구요.
어떻게 다른방법은없을까요?
에러좀 해결해주세요ㅠㅠ
아래 해당부분 코딩입니다.
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#include<string>
#include<fstream>
using namespace std;
//********************************************************************
class guest
{
protected:
char name[20];
char phone[20];
char birth[20];
public:
guest();
guest(char *rname, char *rphone, char *rbirth);
friend istream &operator>>(istream &is, guest a);
char *getname();
char *getphone();
char *getbirth();
};
guest::guest()
{}
guest::guest(char *rname, char *rphone, char *rbirth)
{
strcpy(name,rname);
strcpy(phone,rphone);
strcpy(birth,rbirth);
}
char* guest::getname()
{
return name;
}
char* guest::getphone()
{
return phone;
}
char* guest::getbirth()
{
return birth;
}
//********************************************************************
class book
{
protected:
char name[20];
int number;
public:
book();
book(char *rname, int rnumber);
char *getname();
int getnumber();
};
book::book()
{}
book::book(char *rname, int rnumber)
{
strcpy(name, rname);
number =rnumber;
}
int book::getnumber()
{
return number;
}
char *book::getname()
{
return name;
}
//********************************************************************
class book_br
{
private:
char name[20];
int number;
char gname_br[20];
public:
book_br();
book_br(char *bname_br, int bn, char *gname_br);
char *getgname();
char *getname();
int getnumber();
book_br & operator = (book_br & temp);
friend ostream &operator<<(ostream &os, book_br &a);
};
book_br::book_br(char *bname_br, int bn, char *gname_br)
{
strcpy(this->name, bname_br);
number =bn;
strcpy(this->gname_br,gname_br);
}
book_br &book_br::operator=(book_br & temp)
{
strcpy(name, temp.name);
number = temp.number;
strcpy(gname_br, temp.gname_br);
return *this;
}
book_br::book_br()
{}
int book_br::getnumber()
{
return number;
}
char *book_br::getname()
{
return name;
}
char *book_br::getgname()
{
return gname_br;
}
ostream &operator<<(ostream &os, book_br &a)
{
os<<a.getname<<a.getnumber<<a.getgname<<endl;
return os;
}
//********************************************************************
class management
{
private:
guest *glist[50]; // 회원정보
book *blist[50]; // 기본책정보
book_br *blist_br[50]; //빌린책
int bn, gn, br;
public:
management();
void borrow(); //대여 프로그램
void turn(); //반납 프로그램
void showguest(); //회원정보 조회
void showbook(); //책정보 조회
void addbook(book *bl); //책 db추가
void addguest(guest *gl); //회원 db 추가
void addbook_br(book_br *bl);
void init();
friend istream &operator>>(istream &is, management &a);
};
istream &operator>>(istream &is, management &a)
{
int i;
char c;
is>>i>>c;
return is;
}
void management::init()
{
bn=0;
gn=0;
br=0;
}
void management::addguest(guest *gl)
{
glist[gn++] = gl;
}
void management::addbook(book *bl)
{
blist[bn++] = bl;
}
void management::addbook_br(book_br *bl)
{
blist_br[br++] = bl;
}
management::management()
{
bn = 0;
gn = 0;
br=0;
}
void management::borrow()
{
int choice;
int bnumber;
char bname[20];
char gbirth[20],gname[20];
[...];
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ -대여- ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃1. 책제목 입력 ┃"<<endl;
cout<<"┃2. 회원정보 입력 ┃"<<endl;
cout<<"┃3. 대 여 ┃"<<endl;
cout<<"┃4. 메뉴로 돌아가기 ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
while(1)
{
cout<<"입력하실 번호를 입력하세요 : ";
cin>>choice;
if(choice==4)
{
break;
}
switch(choice)
{
case 1:
{
aa:
int n=0;
cout<<"책 제목을 입력하세요 : ";
cin>>bname;
cout<<"몇번째 권을 빌리시겠습니까? : ";
cin>>bnumber;
cout<<endl;
for(int i=0;i<50;i++)
{
if(strcmp(bname,blist[i]->getname())==0 && bnumber==blist[i]->getnumber())
{
n=n+1;
strcpy(bname,blist[i]->getname());
}
}
if(n==0)
{
cout<<"책에 대한 정보가 없습니다 다시입력해 주세요"<<endl;
goto aa;
}
break;
}
case 2:
{
bb:
int k=0;
cout<<"회원의 이름을 입력하세요 : "; cin>>gname;
cout<<"회원의 생년월일을 입력하세요 : ";cin>>gbirth;
cout<<endl<<endl;
for(int i=0;i<50;i++)
{
if(strcmp(gname,glist[i]->getname())==0 && strcmp(gbirth,glist[i]->getbirth())==0)
{
k=k+1;
strcpy(gname,glist[i]->getname());
strcpy(gbirth,glist[i]->getbirth());
}
}
if(k==0)
{
cout<<"회원정보를 잘못입력하였습니다."<<endl<<endl;
goto bb;
}
break;
}
case 3:
{
for(int i=0;i<50;i++)
{
if(strcmp(bname,blist[i]->getname())==0 && bnumber==blist[i]->getnumber())
{
for(int j=0;j<50;j++)
{
if(strcmp(gname,glist[j]->getname())==0 && strcmp(gbirth,glist[j]->getbirth())==0)
{
ofstream fout;
fout.open("borrow.txt",ios::app);
fout<<blist[i]->getname()<<"\\t"<<blist[i]->getnumber()<<"\\t"<< glist[j]->getname()<<endl;
fout.close();
cout << blist[i]->getname()<<"의 "<<blist[i]->getnumber()<<"번째 권이 ";
cout<<glist[j]->getname()<<"회원님에게 대여되었습니다."<<endl;
cout<<endl;
break;
}
}
break;
}
}
}
case 4:
break;
}
}
}
void management::turn()
{
char bname[20];
int bnumber;
int choice;
[...];
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ -반납- ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1. 책 제목 ┃"<<endl;
cout<<"┃ 2. 반납 ┃"<<endl;
cout<<"┃ 3. 메뉴로 돌아가기 ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
while(1)
{
cout<<"입력하실 번호를 입력하세요 : ";
cin>>choice;
if(choice==3)
{
break;
}
switch(choice)
{
case 1:
{
aaa:
int n=0;
cout<<"반납하실 책 제목을 입력하세요 : ";
cin>>bname;
cout<<"몇번째 권을 반납하시겠습니까? : ";
cin>>bnumber;
cout<<endl;
for(int i=0;i<50;i++)
{
if(strcmp(bname,blist_br[i]->getname())==0 && bnumber==blist_br[i]->getnumber())
{
n=n+1;
strcpy(bname,blist_br[i]->getname());
bnumber=blist_br[i]->getnumber();
}
}
if(n==0)
{
cout<<"책에 대한 정보가 없습니다 다시입력해 주세요"<<endl;
goto aaa;
}
break;
}
case 2:
{
book_br *list_br[50];
for(int i=0;i<50;i++)
{
if(strcmp(bname,blist_br[i]->getname())==0 && bnumber==blist_br[i]->getnumber())
{
/*
if(i==0)
{
for(i=1;i<50;i++)
{
list_br[i-1]=blist_br[i];
}
}
else*/
for(int j=0;j<i;j++)
{
list_br[j]=blist_br[j+1];
}
for(j=i+1;j<50;j++)
{
list_br[i-1]=blist_br[i];
}
}
for(int k=0;k<50;k++)
{
ofstream fout;
fout.open("borrow.txt");
fout<<list_br[k]->getname()<<"\\t"<<list_br[k]->getnumber()<<"\\t"<< list_br[k]->getname()<<endl;
fout.close();
break;
}
}
}
case 3:
{
break;
}
}
}
}
void management::showbook()
{
[...];
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ -책정보- ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1. 소설책 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 2. 만화책 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
}
void management::showguest()
{
int a;
int n;
char gbirth[20];
char gname[20];
char gphone[20];
strcpy(gname,"NULL");
while(1)
{
[...];
bbb:
n=0;
cout<<"회원의 이름을 입력하세요 : "; cin>>gname;
cout<<"회원의 생년월일을 입력하세요 : ";cin>>gbirth;
for(int i=0;i<50;i++)
{
if(strcmp(gname,glist[i]->getname())==0 && strcmp(gbirth,glist[i]->getbirth())==0)
{
n=n+1;
strcpy(gname,glist[i]->getname());
strcpy(gphone,glist[i]->getphone());
strcpy(gbirth,glist[i]->getbirth());
}
}
if(n==0)
{
cout<<endl;
cout<<"회원정보를 잘못입력하였습니다."<<endl<<endl;
goto bbb;
}
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ -회원정보- ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃";cout<<"회원이름 : ";cout<<gname<<" ┃"<<endl;
cout<<"┃";cout<<"회원번호 : ";cout<<gphone<<" ┃"<<endl;
cout<<"┃";cout<<"생년월일 : ";cout<<gbirth<<" ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1. 다른회원조회 ┃ "<<endl;
cout<<"┃ 2. 메뉴로 돌아가기 ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
cout<<"번호를 입력하시오 : ";
cin>>a;
if(a==1)
{
[...];
goto bbb;
}
else if(a==2)
break;
}
}
//********************************************************************
int main()
{
management bs;
ifstream fin;
fin.open("book.txt");
char bname[20];
int n;
for(int i = 0 ; i< 50; i++)
{
fin >> bname >> n;
bs.addbook(new book(bname, n));
}
fin.close();
ifstream afin;
afin.open("guest.txt");
char gname[20];
char gphone[20];
char gbirth[20];
for(i=0;i<50;i++)
{
afin>>gname>>gphone>>gbirth;
bs.addguest(new guest(gname,gphone,gbirth));
}
afin.close();
while(1)
{
[...];
int choice;
cout<<"┏━━━━━━━━━━━━━┓"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 책방 관리시스템 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┃ 1. 대여 ┃"<<endl;
cout<<"┃ 2. 반납 ┃"<<endl;
cout<<"┃ 3. 회원정보 조회 ┃"<<endl;
cout<<"┃ 4. 책정보 조회 ┃"<<endl;
cout<<"┃ ┃"<<endl;
cout<<"┗━━━━━━━━━━━━━┛"<<endl;
cin>>choice;
switch(choice)
{
case 1:
bs.borrow();
break;
case 2:
{
bs.init();
ifstream bfin;
bfin.open("borrow.txt");
int n_br;
char bname_br[20];
char gname_br[20];
for(i=0;i<50;i++)
{
bfin>>bname_br>>n_br>>gname_br;
bs.addbook_br(new book_br(bname_br, n_br,gname_br));
}
bfin.close();
bs.turn();
break;
}
case 3:
bs.showguest();
break;
case 4:
bs.showbook();
break;
}
}
return 0;
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.