C++ C++;调试时出现库管理错误
嗨,我在为12年级学生做一个项目。但是在DEV C++中,我得到了错误 在GDB在线编译器中也会出现错误,但不同的错误会出现 请检查下面给出的代码 代码如下:C++ C++;调试时出现库管理错误,c++,C++,嗨,我在为12年级学生做一个项目。但是在DEV C++中,我得到了错误 在GDB在线编译器中也会出现错误,但不同的错误会出现 请检查下面给出的代码 代码如下: #include<iostream.h> #include<fstream.h> #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
class Book
{
int bno;
char bname[20], aname[20];
public:
void getdata()
{
cout<<"\n |New Book Entry| ";
cout<<"\n Enter Book Number: ";
cin>>bno;
cout<<"\n Enter Book Name: ";
gets(bname);
cout<<"\n Enter Book Author: ";
gets(aname);
}
void putdata()
{
cout<<"\n Book Number: "<<bno;
cout<<"\n Book Name: ";
puts(bname);
cout<<"\n Book Author: ";
puts(aname);
}
void editdata()
{
cout<<"\n Book Number: "<<bno;
cout<<"\n Changed Book Name: ";
gets(bname);
cout<<"\n Changed Book Author: ";
gets(aname);
}
char bookname()
{
return bname;
}
int bookno()
{
return bno;
}
}
// Class Objects
fstream f;
Book b;
//Function for files
void writebook()
{
char ch;
f.open("book.dat",ios::app);
do
{
// clrscr();
b.getdata();
f.write((char*)&b,sizeof(Book));
cout<<"\n Do You Want To Add More? (y/n)?";
}while(ch=='y'||ch=='Y');
f.close();
}
void display(int n)
{
cout<<"\n Book Details";
int flag=0;
f.open("book.dat",ios::in);
while(f.read((char *)&b,sizeof(Book)))
{
if(b.bookno()==n)
{
b.putdata();
flag=1; break;
}
}
f.close();
if(flag==0)
cout<<"\n Book Does Not Exist";
getch();
}
void search(char name)
{
cout<<"\n Book Details";
int flag=0;
f.open("book.dat",ios::in);
while(f.read((char *)&b,sizeof(Book)))
{
if(b.bookname()==name)
{
b.putdata();
flag=1;
break;
}
}
f.close();
if(flag==0)
cout<<"\n Book Does Not Exist.";
getch();
}
void displayall()
{
cout<<"\n Book Details:";
f.open("book.dat",ios::in);
b.putdata();
f.close();
getch();
}
void editbook()
{
int n, found=0;
clrscr();
cout<<"\n Edit Book Record.";
cout<<"\n Enter Book Number: ";
cin>>n;
f.open("book.dat",ios::in|ios::out);
while(f.read((char*)&b,sizeof(Book)) && found==0)
{
if(b.bookno()==n)
{
b.putdata();
cout<<"\n Enter The New Details: ";
b.editdata();
int pos=-1*sizeof(b);
f.seekp(pos,ios::cur);
f.write((char*)&b,sizeof(Book));
cout<<"\n Record Updated";
found=1;
}
}
f.close();
if(found==0)
cout<<"\n Record not Found.";
getch();
}
// Delete Function
void deletebook()
{
int n;
clrscr();
cout<<"\n Delete Book";
cout<<"\n Enter Book Number For The Book To Be Deleted: ";
cin>>n;
fstream f1;
f.open("book.dat",ios::in|ios::out);
f1.open("temp.dat",ios::out);
f1.seekg(0,ios::beg);
while(f.read((char*)&b,sizeof(Book)))
{
if(b.bookno()!=n)
{
f1.write((char*)&b,sizeof(Book));
}
}
f1.close();
f.close();
remove("book.dat");
rename("temp.dat","book.dat") ;
cout<<"\n Record Deleted";
getch();
}
// Main
void main()
{
clrscr();
int ch,n;
char name;
cout<<"\n Computer Science Project";
cout<<"\n Book Details ";
cout<<"\n Name : XXXXXXXXXXX";
cout<<"\n Class: 12 XX ";
do
{
cout<<"\n Main Menu ";
cout<<"\n 1.Accept Book. ";
cout<<"\n 2.Display All Books. ";
cout<<"\n 3.Display Book. ";
cout<<"\n 4.Search By Book Name.";
cout<<"\n 4.Edit Book. ";
cout<<"\n 5.Delete Book. ";
cout<<"\n 6.Exit. ";
cout<<"\n Select Your Option: ";
cin>>ch;
switch(ch)
{
case 1: clrscr();
writebook();
break;
case 2: clrscr();
displayall();
break;
case 3: clrscr();
cout<<"\n Enter Book Number:";
cin>>n;
display(n);
break;
case 4: clrscr();
cout<<"\n Enter Book Name:";
gets(name);
search(name);
break;
case 5: clrscr();
editbook();
break;
case 6: clrscr();
deletebook();
break;
case 7: exit(0);
default:cout<<" Please Enter Valid Option: ";
}
}while(ch!=7);
getch();
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
课堂用书
{
int bno;
char bname[20],aname[20];
公众:
void getdata()
{
cout您需要包含所使用的标准库代码的相关头文件。在这种情况下:
#include <iostream> // for cout / cin
#include <cstdio> // for gets / puts
书籍等中的示例代码可能在某个地方有一个使用命名空间std;
,允许使用std
命名空间中的项而不必对其进行限定。但是,这是。\include不要忘了包括#include@MatthieuBrucher我认为这是高度基于意见的。显然在头文件中是不好的但是它在源文件中造成的破坏非常有限,通常可以用于编写小项目。@George不,它不是基于意见的。使用名称空间std
是不好的,在cpp核心指南中被建议不要使用。@Amizade,如果您向我们展示一些代码,那么我们可能会告诉您它有什么问题。
std::cout << "hello world" << std::endl;