鱼C论坛

 找回密码
 立即注册
查看: 256|回复: 13

图书管理系统C++代码,用Dev c++ 5.11运行,出现的错误,怎么改?

[复制链接]
最佳答案
0 
发表于 2020-6-27 21:47:10 | 显示全部楼层 |阅读模式
20鱼币
#include<iostream>
#include<iomanip>
#include<windows.h>
#include<conio.h>
#include<string>
using namespace std;
const int Maxbor=10;//每位读者最多借10本书
class Reader  //读者类
{
        int tag;
        int num;
        char mima[6];
        char name[10];
        int borbook[Marbor];
        public:
                Reader();
                int getnum();
                int gettag();
                char*getname();
                char* getmima();
                void setname(char na[]);
                void delreader();
                void addreader(int n,char*na,char*mi);
                void borrowbook(int bookid);
                int retbook(int bookid);
                void disp();
               
};
Reader::Reader(){
        char*Reader::getname(){return name; }
        int Reader::gettag(){return tag;}//获取删除符号
        int Reader::getnum(){return num;}//获取读者编号
        char*Reader::getmima(){return mima;}//获取读者的密码
        void Reader::setname(char na[])//设置姓名
         {
             strcpy(name,na);
          }
          void Reader::delreader (){teg=1;}//删除读者
        void Reader::addreader(int n,char*na,char*mi)//增加读者
        {
                tag=0;
                num=n;
                strcpy(name,na);
                strcpy(mima,mi);
                for(int i=0;i<Maxbor;i++)
                borbook[i]=0;
               
         }
         void Reader::borrowbook(int bookid)//借书操作
         {
                 for(int i=0;i<Maxbor;i++)
                 {
                         if(borbook[i]==bookid)
                         {
                                 borbook[i]=0;
                                 return;
                                
                         }
                 }
        }
        int Reader::retbook(int bookid)//还书操作
        {
                for(int i=0;i<Maxbor;i++)
                {
                        if(borbook[i]==bookid)
                        {
                                borbook[i]=0;
                                return 1;
                        }
                }
                return 0;
               
         }
         void Reader::disp();//输出读者信息
         {
                 cout<<endl;
                 cout<<setw(12)<<num<<"借书编号:[";
                 for(int i=0;i<Maxbor;i++)
                  if(borbook[i]!=0)
                     cout<<borbook[i]<<";";
                     cout<<"]"<<endl;
                     
          }
          classBook  //图书类
          {
                  int tag;
                  int num;
                  char name[10];
                  char writer[10];
                  char concern[30];
                  char Time[10];
                  float price;
                  int onshelf;
                  public:
                          Book();
                          char*getname();
                          int getnum();
                          int getonshelf();
                          char*getwriter();
                          char*gettime();
                          char*getconcern();
                          float getprice();
                          int gettag();
                          void getTime(char time[]);
                          void setname(cher na[]);
                          void delbook();
                          void addbook()(int n,char*wri,char*con,char*tm,float pr);//增加图书
                          int borrowbook();//借书操作
                          void retbook();//还书操作
                          void disp();//输出图书
                          
                         
           } ;Book::Book(){}
           char*Book::getname(){return name;}//获取姓名
           int Book::getonshelf(){return onshelf;}
           int Book::getnum(){return num; }//获取图书编号
           char*Book::getwriter(){return writer;} //获取书籍作者
           char*Book::getconcern(){return concern;}//获取书籍出版社
           char*Book::gettime(){return Time;}
           float Book::getprice(){return price;}//获取书籍价格
           int Book::gettag(){return tag; } //获取删除标记
           void Book::setname(char na[]) //设置书名
           {
                   strcpy(name,na);
                }
                void Book::getTime(char time[])
                {
                        strcpy(Time,time);
                }
                void Book::delbook(){tag=1;}//删除图书
                void Book::addbook(int n,char*na,char*wri,char*con,char*tm,float pr)//增加图书
                {
                        tag=0;
                        num=n;
                        strcpy(name,na);
                        strcpy(writer,wri);
                        strcpy(concern,con);
                        strcpy(Time,tm);
                        price=pr;
                        onshelf=l;
                       
                 }
                 int Book::borrowbook()//借书操作
                 {
                         if(onshelf==1)
                         {
                                 onshelf=0;
                                 return 1;
                                
                         }
                         return 0;
                  }
          void Book::retbook()//还书操作
          {
                  onshelf=1;
           }
           void Book::disp()//输出图书
           {
                   cout << setw(6) << num << setw(12) << name << setw(15) << concern << setw(10) << writer << setw(12) << Time<<setw(6)<<(onshelf==1?"在架";"已借")<<endl;
                }
                class BDatabase  //图书库类
                {
                        int top;
                        Book book[Maxb];
                        public:
                                BDatabase();
                                void clear();
                                int addbook(int n,char*na,char*wri,char*con,char*tm,float pr);
                                Book *query(int bookid);
                                int BDatabase::qname(char*nm);
                                Book BDatabase::Qname(char*nm);
                                int qzuozhe(char *wr);
                                Book*Qzuozhe(char*wr);
                                int qchuban(char*cb);
                                Book*Qchuban(char*cb);
                            void bookdata();
                            ~BDatabase();
                            void disp();
                 } ;
                 BDatabase::BDatabase()//构造函数将book.txt读到book[]中
                 {
                         Book b;
                         top=1;
                         fstream file("d:\\book.txt",ios::in);
                         while(1)
                         {
                                 file.read((char*)&b,sizeof(b));
                                 if(!file)break;
                                 top++;
                                 book[top]=b;
                         }
                         file.close;
                         
                  }
                  void BDatabase::clear()//全删
                  {
                          top=-1;
                         
                   }
                   int BDatabase::addbook(int n,char*na,char*wri,char*con,char*tm,float pr)//增加图书
                   {
                           Book *p=query(n);
                           if(p==NULL)
                           {
                                   top++;
                                   book[top].addbook(n,na,wri,con,tm,pr);
                                   return 1;
                           }
                           return 0;
                        }
                        Book*BDatabase::query(int bookid)//查找图书
                        {
                                for(int i=0;i<=top;i++)
                                  if(book[i].getnum()==bookid&&book[i].gettag()=0)
                                  return &book[i];
                                  return NULL;
                         }
                         int BDatabase::qname(char*nm)
                         {
                                 int j=0;
                                 for(int i=0;i<=top;i++)
                                 if((strcmp(book[i].getname().nm)==0)&&book[i].gettag()==0)
                                 j++;
                                 if(j==0)
                                 return 0;
                                 else
                                 return j;
                         }
                         Book*BDatabase::Qname(char*nm)
                         {
                                 int j=0;
                                 Book b[100];
                                 for (int i=0;i<=top;i++)
                                 if((strcmp(book[i].getname().nm)==0)&&book[i].gettag()==0)
                                 b[j++]=book[i];
                                 if(j==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         int BDatabase::qzuozhe(char *wr)
                         {
                                 int e=0;
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getwriter().wr)==0)&&book[i].gettag()=0)
                                 e++;
                                 if(e==0)
                                 return 0;
                                 else
                                 return b;
                         }
                         Book*BDatabase::Qzuozhe(char *wr)
                         {
                                 int f=0;
                                 Book b[100];
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getwriter().wr)==0)&&book[i].gettag()=0)
                                 b[f++]=book[i];
                                 if(f==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         int BDatabase::qchuban(char *cb)
                         {
                                 int g=0;
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getconcern().wr)==0)&&book[i].gettag()=0)
                                 g++;
                                 if(g==0)
                                 return 0;
                                 else
                                 return g;
                         }
                         Book*BDatabase::Qchuban(char *cb)
                         {
                                 int h=0;
                                 Book b[100];
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getconcern().wr)==0)&&book[i].gettag()=0)
                                 b[h++]=book[i];
                                 if(h==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         void BDatabase::bookdata()//图书库维护
                         {
                                 int choice=1;
                                 char bname[40];
                                 int bookid;
                                 char bwrite[15];
                                 char bconcern[15];
                                 char btime[15];
                                 float bprice;
                                 Book *b;
                                 int r=0;
                                 while(choice!=0)
                                 {
                                         cout<<endl<<endl<<endl<<endl;
                                         cout<<" --------------------------------- "<<endl;
                                         cout<<" --         图书维护             --"<<endl;
                                        cout<<" --         1.新增               --"<<endl;
                                        cout<<" --         2.删除               --"<<endl;
                                        cout<<" --         3.查找               --"<<endl;
                                        cout<<" --         4.显示               --"<<endl;
                                        cout<<" --         5.全删               --"<<endl;
                                        cout<<" --         0.退出               --"<<endl;
                                        cout<<" ----------------------------------"<<endl;
                                        cout<<"请选择您将进行的操作:";
                                        cin>>choice;
                                        switch(choice)
                                        {
                                                case1:
                                                        cout<<"图书编号:";
                                                        cin>>bookid;
                                                        do
                                                        {
                                                                if(r!=0)
                                                               
                                                                {
                                                                        cout<<"该编号错误,请重新输入:";
                                                                        cin>>bookid;
                                                                }
                                                                r++;
                                                                if(r==3)
                                                                break;
                                                        }
                                                        while(query(bookid)!=NULL);
                                                        if(r==3)
                                                {
                                                        system("cls");
                                                        break;
                                                }
                                                cout<<"图书书名:";
                                                cin<<bname;
                                                cout<<"图书作者:";
                                                cin>>bwriter;
                                                cout<<"图书出版社:";
                                                cin>>bconcern;
                                                cout<<"图书出版时间:";
                                                cin>>btime;
                                                cout<<"图书价格";
                                                cin>>bprice;
                                                cout<<"图书添加成功"<<endl;
                                                Sleep(1000);
                                                system("cls");
                                                addbook(bookid,bname,bwriter,bconcern,btime,bprice);
                                                break;
                                                case2:
                                                cout<<"图书编号:";
                                                cin>>bookid;
                                                b=query(bookid);
                                                if(b==NULL)
                                                {
                                                        cout<<"该图书不在"<<endl;
                                                        Sleep(1000);
                                                        system("cls");
                                                        break;
                                                 }
                                                 cout<<"已删除"<<endl;
                                                 Sleep(1000);
                                                 system("cls");
                                                 b->delbook();
                                                 break;
                                                 case3:
                                                         cout<<"图书编号:";
                                                cin>>bookid;
                                                b=query(bookid);
                                                if(b==NULL)
                                                {
                                                        cout<<"该图书不在"<<endl;
                                                        Sleep(1000);
                                                        system("cls");
                                                        break;
                                                 }
                                                 
                                                  system("cls");
                                                 cout<<"所查信息如下:"<<endl;
                                                 b->disp();
                                                 break;
                                                case4:
                                                 system("cls");
                                                 cout<<"所有图书信息如下:"<<endl;
                                                 b->disp();
                                                 break;
                                                 case5:
                                                 clear();
                                                 cout<<"所有图书已删除"<<endl;
                                                   Sleep(1000);
                                                 system("cls");
                                                 break:
                                                        
                                        }
                                       
                               }
                                        system("cls");                                  
                          }
                          void BDatabase::disp()
                          {
                                  Book temp;
                                  for(int i=0;i<=top&&(book[i].gettag()==0);i++)
                                  for(int j=i+1;j<=top;&&(book[j].gettag()==0);j++)
                                  if(strcmp(book[i].gettime(),book[j].gettime())<0)
                                  {
                                          temp=book[i];
                                          book[i]=book[j];
                                          book[j]=temp;
                                  }
                                  for(int x=0;x<=top;&&(book[x].gettag()==0);x++)
                                  book[x].disp();
                          }
                          BDatebase::~BDatabase()//析构函数,将book[]写入book .txt文件中
                          {
                                  fstream file(d:\\book.txt",ios::out);
                                  for(int i=0;i<=top;i++)
                                  if(book[i].gettag()=0)
                                  file.write((char*)&book[i],sizeof(book[i]));
                                  file.close();
                           }
                           class Rdatebase //读者库类
                           {
                                   int top;
                                   Reader read[Maxr];//读者记录
                                   public:
                                   Rdatebase();
                                   void disp();
                                   void clear();
                                   void addreader(int n,char*na,char*mi);
                                   Reader *query(int readerid);
                                   ~Rdatebase();
                                   void readerdata();
                                } ;
                                Rdatebase::Rdatebase()//构造函数,将reader.txt读到read[]中
                                {
                                        Reader s;
                                        top=-1;
                                        fstream file("d:\\reader.txt",ios::in);
                                        while(1)
                                        {
                                                file.read((char*)&s,sizeof(s));
                                                if(!file)break;
                                                top++;
                                                read[top]=s;
                                               
                                        }
                                        file.close();
                                       
                                 }
                                 void Rdatebase::disp();
                                 {
                                         for(int i=0;i<=top;i++)
                                         if(read[i],gettag()==0)
                                         read[i].disp();
                                  }
                                  void Rdatebase::clear()
                                  {
                                          top=-1;
                                   }
                                   void Rdatebase::addreader(int n,char*na,char*mi)
                                   {
                                           top++;
                                           read[top].addreader(n,na,mi);
                                        }
                                        Reader*Rdatebase::query(int readerid)
                                        {
                                                for(int i=0;i<=top;i++)
                                                 if(read[i].getnum()==readerid&&read[i].gettag()==0)
                                                 return &read[i];
                                                 return NULL;
                                         }
                                         Rdatebase::~Rdatebase()//析构函数,将red[]写入read.txt文件中
                                         {
                                                 fstream file("d:\\reader.txt",ios::out);
                                                 for(int i=0;i<=top;i++)
                                          if(read[i].gettag()=0)
                                          file.write((char*)&read[i],sizeof(read[i]));
                                          file.close();
                                          }
                                          void Rdarebase::readerdata()//读者库维护
                                          {
                                                  int choice;
                                                  char rname[20];
                                                  int readerid;
                                                  char rmima[6];
                                                  Reader *r;
                                                  while (choice!=0)
                                                  {
                                                          cout<<"--------------------------------------"<<endl;
                                                          cout<<"--           读者维护               --"<<endl;
                                                          cout<<"--            1、新增               --"<<endl;
                                                          cout<<"--            2、更改               --"<<endl;
                                                          cout<<"--            3、删除               --"<<endl;
                                                          cout<<"--            4、查找               --"<<endl;
                                                          cout<<"--            5、显示               --"<<endl;
                                                          cout<<"--            6、全删               --"<<endl;
                                                          cout<<"--            0.退出                --"<<endl;
                                                          cout<<"--------------------------------------"<<endl;
                                                          cout<<"请选择"<<endl;
                                                          cin>>choice;
                                                          int a=0;
                                                          int i=0;
                                                          switch(choice)
                                                          {
                                                                  case 0:
                                                                          system("cls");
                                                                          break;
                                                                  case 1:
                                                                          cout<<"读者编号:";
                                                                          cin>>readerid;
                                                                          do
                                                                          {
                                                                                  if(a!=0)
                                                                                  {
                                                                                          cout<<"已存在,请重新输入:";
                                                                                          cin>>readerid;
                                                                                  }
                                                                                  a++;
                                                                          }
                                                                          while(query(reader)!=NULL);
                                                                          cout<<"输入读者密码:";
                                                                          for(i;i<6;i++)
                                                                          {
                                                                                  rmima[i]=getch();
                                                                                  putch("-");
                                                                          }
                                                                          cout<<endl<<"输入读者姓名:";
                                                                          cin>>rname;
                                                                          cout<<"添加成功"<<endl;
                                                                          addreader(readerid,rname,rmima);
                                                                          Sleep(1000);
                                                                          system("cls");
                                                                          break;
                                                                          case2:
                                                                          cout<<"读者编号:";
                                                                          cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           cout<<"输入新的读者姓名:";
                                                                           cin>>rname;
                                                                           cout<<"读者更改成功"<<endl;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           r->setname(rname);
                                                                           break;
                                                                           case3:
                                                                           cout<<"读者编号:";
                                                                           cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           cout<<"读者删除成功"<<endl;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           r->delreader();
                                                                           break;
                                                                case4:
                                                                        cout<<"读入读者编号:";
                                                                        cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           system("cls");
                                                                           cout<<"您所查找的读者信息如下"<<endl;
                                                                           r->disp();
                                                                           break;
                                                                           case 5:
                                                                           system("cls");
                                                                           cout<<"所有读者信息如下"<<endl;
                                                                           disp();
                                                                           break;
                                                                           case 6:
                                                                           clear();
                                                                           cout<<"所有读者已删除"<<endl ;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           break;
                                                         
                                                          }
                                                          
                                                  }
                                           }

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-6-27 22:25:38 | 显示全部楼层
编译单个文件...
--------
- 文件名: C:\Users\DELL\Documents\代码C\实验报告.cpp
- 编译器名: TDM-GCC 4.9.2 64-bit Release

处理 C++ 源文件...
--------
- C++ 编译器: C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\g++.exe
- 命令: g++.exe "C:\Users\DELL\Documents\代码C\实验报告.cpp" -o "C:\Users\DELL\Documents\代码C\实验报告.exe"  -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include" -I"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\lib" -L"C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib" -static-libgcc
C:\Users\DELL\Documents\代码C\实验报告.cpp:159:6: error: stray '\243' in program
      cout << setw(6) << num << setw(12) << name << setw(15) << concern << setw(10) << writer << setw(12) << Time<<setw(6)<<(onshelf==1?"在架";"已借")<<endl;
      ^

C:\Users\DELL\Documents\代码C\实验报告.cpp:159:6: error: stray '\273' in program
C:\Users\DELL\Documents\代码C\实验报告.cpp:298:6: error: stray '\243' in program
      while(choice!=0)
      ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:298:6: error: stray '\241' in program
C:\Users\DELL\Documents\代码C\实验报告.cpp:415:7: error: stray '\' in program
       fstream file(d:\\book.txt",ios::out);
       ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:415:7: error: stray '\' in program
C:\Users\DELL\Documents\代码C\实验报告.cpp:415:32: warning: missing terminating " character
       fstream file(d:\\book.txt",ios::out);
                                ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:415:7: error: missing terminating " character
       fstream file(d:\\book.txt",ios::out);
       ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:515:14: error: stray '\243' in program
              cout<<"已存在,请重新输入:";
              ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:515:14: error: stray '\273' in program

C:\Users\DELL\Documents\代码C\实验报告.cpp:14:14: error: 'Marbor' was not declared in this scope
  int borbook[Marbor];
              ^

C:\Users\DELL\Documents\代码C\实验报告.cpp: In constructor 'Reader::Reader()':
C:\Users\DELL\Documents\代码C\实验报告.cpp:30:23: error: qualified-id in declaration before '(' token
   char*Reader::getname(){return name; }
                       ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:31:21: error: qualified-id in declaration before '(' token
   int Reader::gettag(){return tag;}//获取删除符号
                     ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:32:21: error: qualified-id in declaration before '(' token
   int Reader::getnum(){return num;}//获取读者编号
                     ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:33:23: error: qualified-id in declaration before '(' token
   char*Reader::getmima(){return mima;}//获取读者的密码
                       ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:34:23: error: qualified-id in declaration before '(' token
   void Reader::setname(char na[])//设置姓名
                       ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:38:27: error: qualified-id in declaration before '(' token
    void Reader::delreader (){teg=1;}//删除读者
                           ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:39:24: error: qualified-id in declaration before '(' token
  void Reader::addreader(int n,char*na,char*mi)//增加读者
                        ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:49:26: error: qualified-id in declaration before '(' token
   void Reader::borrowbook(int bookid)//借书操作
                          ^
C:\Users\DELL\Documents\代码C\实验报告.cpp:598:9: error: expected '}' at end of input
         }
         ^


编译结果...
--------
- 错误: 19
- 警告: 1
- 编译时间: 1.48s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
324 
发表于 2020-6-27 22:35:38 | 显示全部楼层
你这不是怎么改的问题,我建议你重写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
324 
发表于 2020-6-27 22:36:40 | 显示全部楼层
你可能不知道133个报错是什么概念
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-6-27 23:13:28 | 显示全部楼层
这是修改后的代码,但还是有5个bug
#include<iostream>
#include<iomanip>
#include<windows.h>
#include<conio.h>
#include<string>
using namespace std;
const int Maxbor=10;//每位读者最多借10本书
class Reader  //读者类
{
        int tag;
        int num;
        char mima[6];
        char name[10];
        int borbook[Maxbor];
        public:
                Reader();
                int getnum();
                int gettag();
                char*getname();
                char* getmima();
                void setname(char na[]);
                void delreader();
                void addreader(int n,char*na,char*mi);
                void borrowbook(int bookid);
                int retbook(int bookid);
                void disp();
               
};
Reader::reader(){
        char*Reader::getname(){return name; }
        int Reader::gettag(){return tag;}//获取删除符号
        int Reader::getnum(){return num;}//获取读者编号
        char*Reader::getmima(){return mima;}//获取读者的密码
        void Reader::setname(char na[])//设置姓名
         {
             strcpy(name,na);
          }
          void Reader::delreader (){teg=1;}//删除读者
        void Reader::addreader(int n,char*na,char*mi)//增加读者
        {
                tag=0;
                num=n;
                strcpy(name,na);
                strcpy(mima,mi);
                for(int i=0;i<Maxbor;i++)
                borbook[i]=0;
               
         }
         void Reader::borrowbook(int bookid)//借书操作
         {
                 for(int i=0;i<Maxbor;i++)
                 {
                         if(borbook[i]==bookid)
                         {
                                 borbook[i]=0;
                                 return;
                                 
                         }
                 }
        }
        int Reader::retbook(int bookid)//还书操作
        {
                for(int i=0;i<Maxbor;i++)
                {
                        if(borbook[i]==bookid)
                        {
                                borbook[i]=0;
                                return 1;
                        }
                }
                return 0;
               
         }
         void Reader::disp();//输出读者信息
         {
                 cout<<endl;
                 cout<<setw(12)<<num<<"借书编号:[";
                 for(int i=0;i<Maxbor;i++)
                  if(borbook[i]!=0)
                     cout<<borbook[i]<<";";
                     cout<<"]"<<endl;
                     
          }
          class Book  //图书类
          {
                  int tag;
                  int num;
                  char name[10];
                  char writer[10];
                  char concern[30];
                  char Time[10];
                  float price;
                  int onshelf;
                  public:
                          Book();
                          char*getname();
                          int getnum();
                          int getonshelf();
                          char*getwriter();
                          char*gettime();
                          char*getconcern();
                          float getprice();
                          int gettag();
                          void getTime(char time[]);
                          void setname(cher na[]);
                          void delbook();
                          void addbook()(int n,char*wri,char*con,char*tm,float pr);//增加图书
                          int borrowbook();//借书操作
                          void retbook();//还书操作
                          void disp();//输出图书
                           
                          
           } ;Book::Book(){}
           char*Book::getname(){return name;}//获取姓名
           int Book::getonshelf(){return onshelf;}
           int Book::getnum(){return num; }//获取图书编号
           char*Book::getwriter(){return writer;} //获取书籍作者
           char*Book::getconcern(){return concern;}//获取书籍出版社
           char*Book::gettime(){return Time;}
           float Book::getprice(){return price;}//获取书籍价格
           int Book::gettag(){return tag; } //获取删除标记
           void Book::setname(char na[]) //设置书名
           {
                   strcpy(name,na);
                }
                void Book::getTime(char time[])
                {
                        strcpy(Time,time);
                }
                void Book::delbook(){tag=1;}//删除图书
                void Book::addbook(int n,char*na,char*wri,char*con,char*tm,float pr)//增加图书
                {
                        tag=0;
                        num=n;
                        strcpy(name,na);
                        strcpy(writer,wri);
                        strcpy(concern,con);
                        strcpy(Time,tm);
                        price=pr;
                        onshelf=l;
                        
                 }
                 int Book::borrowbook()//借书操作
                 {
                         if(onshelf==1)
                         {
                                 onshelf=0;
                                 return 1;
                                 
                         }
                         return 0;
                  }
          void Book::retbook()//还书操作
          {
                  onshelf=1;
           }
           void Book::disp()//输出图书
           {
             cout << setw(6) << num << setw(12) << name << setw(15) << concern << setw(10) << writer << setw(12) << Time<<setw(6)<<(onshelf==1?"在架";"已借")<<endl;
                }
                class BDatabase  //图书库类
                {
                        int top;
                        Book book[Maxb];
                        public:
                                BDatabase();
                                void clear();
                                int addbook(int n,char*na,char*wri,char*con,char*tm,float pr);
                                Book *query(int bookid);
                                int BDatabase::qname(char*nm);
                                Book BDatabase::Qname(char*nm);
                                int qzuozhe(char *wr);
                                Book*Qzuozhe(char*wr);
                                int qchuban(char*cb);
                                Book*Qchuban(char*cb);
                            void bookdata();
                            ~BDatabase();
                            void disp();
                 } ;
                 BDatabase::BDatabase()//构造函数将book.txt读到book[]中
                 {
                         Book b;
                         top=1;
                         fstream file("book.txt",ios::in);
                         while(1)
                         {
                                 file.read((char*)&b,sizeof(b));
                                 if(!file)break;
                                 top++;
                                 book[top]=b;
                         }
                         file.close;
                        
                  }
                  void BDatabase::clear()//全删
                  {
                          top=-1;
                          
                   }
                   int BDatabase::addbook(int n,char*na,char*wri,char*con,char*tm,float pr)//增加图书
                   {
                           Book *p=query(n);
                           if(p==NULL)
                           {
                                   top++;
                                   book[top].addbook(n,na,wri,con,tm,pr);
                                   return 1;
                           }
                           return 0;
                        }
                        Book*BDatabase::query(int bookid)//查找图书
                        {
                                for(int i=0;i<=top;i++)
                                  if(book[i].getnum()==bookid&&book[i].gettag()=0)
                                  return &book[i];
                                  return NULL;
                         }
                         int BDatabase::qname(char*nm)
                         {
                                 int j=0;
                                 for(int i=0;i<=top;i++)
                                 if((strcmp(book[i].getname().nm)==0)&&book[i].gettag()==0)
                                 j++;
                                 if(j==0)
                                 return 0;
                                 else
                                 return j;
                         }
                         Book*BDatabase::Qname(char*nm)
                         {
                                 int j=0;
                                 Book b[100];
                                 for (int i=0;i<=top;i++)
                                 if((strcmp(book[i].getname().nm)==0)&&book[i].gettag()==0)
                                 b[j++]=book[i];
                                 if(j==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         int BDatabase::qzuozhe(char *wr)
                         {
                                 int e=0;
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getwriter().wr)==0)&&book[i].gettag()=0)
                                 e++;
                                 if(e==0)
                                 return 0;
                                 else
                                 return b;
                         }
                         Book*BDatabase::Qzuozhe(char *wr)
                         {
                                 int f=0;
                                 Book b[100];
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getwriter().wr)==0)&&book[i].gettag()=0)
                                 b[f++]=book[i];
                                 if(f==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         int BDatabase::qchuban(char *cb)
                         {
                                 int g=0;
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getconcern().wr)==0)&&book[i].gettag()=0)
                                 g++;
                                 if(g==0)
                                 return 0;
                                 else
                                 return g;
                         }
                         Book*BDatabase::Qchuban(char *cb)
                         {
                                 int h=0;
                                 Book b[100];
                                 for(int i=0:i<=top;i++)
                                 if((strcmp(book[i].getconcern().wr)==0)&&book[i].gettag()=0)
                                 b[h++]=book[i];
                                 if(h==0)
                                 return NULL;
                                 else
                                 return b;
                         }
                         void BDatabase::bookdata()//图书库维护
                         {
                                 int choice=1;
                                 char bname[40];
                                 int bookid;
                                 char bwrite[15];
                                 char bconcern[15];
                                 char btime[15];
                                 float bprice;
                                 Book *b;
                                 int r=0;
                                 while(choice!=0)
                                 {
                                         cout<<endl<<endl<<endl<<endl;
                                         cout<<" --------------------------------- "<<endl;
                                         cout<<" --         图书维护             --"<<endl;
                                        cout<<" --         1.新增               --"<<endl;
                                        cout<<" --         2.删除               --"<<endl;
                                        cout<<" --         3.查找               --"<<endl;
                                        cout<<" --         4.显示               --"<<endl;
                                        cout<<" --         5.全删               --"<<endl;
                                        cout<<" --         0.退出               --"<<endl;
                                        cout<<" ----------------------------------"<<endl;
                                        cout<<"请选择您将进行的操作:";
                                        cin>>choice;
                                        switch(choice)
                                        {
                                                case1:
                                                        cout<<"图书编号:";
                                                        cin>>bookid;
                                                        do
                                                        {
                                                                if(r!=0)
                                                               
                                                                {
                                                                        cout<<"该编号错误,请重新输入:";
                                                                        cin>>bookid;
                                                                }
                                                                r++;
                                                                if(r==3)
                                                                break;
                                                        }
                                                        while(query(bookid)!=NULL);
                                                        if(r==3)
                                                {
                                                        system("cls");
                                                        break;
                                                }
                                                cout<<"图书书名:";
                                                cin<<bname;
                                                cout<<"图书作者:";
                                                cin>>bwriter;
                                                cout<<"图书出版社:";
                                                cin>>bconcern;
                                                cout<<"图书出版时间:";
                                                cin>>btime;
                                                cout<<"图书价格";
                                                cin>>bprice;
                                                cout<<"图书添加成功"<<endl;
                                                Sleep(1000);
                                                system("cls");
                                                addbook(bookid,bname,bwriter,bconcern,btime,bprice);
                                                break;
                                                case2:
                                                cout<<"图书编号:";
                                                cin>>bookid;
                                                b=query(bookid);
                                                if(b==NULL)
                                                {
                                                        cout<<"该图书不在"<<endl;
                                                        Sleep(1000);
                                                        system("cls");
                                                        break;
                                                 }
                                                 cout<<"已删除"<<endl;
                                                 Sleep(1000);
                                                 system("cls");
                                                 b->delbook();
                                                 break;
                                                 case3:
                                                         cout<<"图书编号:";
                                                cin>>bookid;
                                                b=query(bookid);
                                                if(b==NULL)
                                                {
                                                        cout<<"该图书不在"<<endl;
                                                        Sleep(1000);
                                                        system("cls");
                                                        break;
                                                 }
                                                
                                                  system("cls");
                                                 cout<<"所查信息如下:"<<endl;
                                                 b->disp();
                                                 break;
                                                case4:
                                                 system("cls");
                                                 cout<<"所有图书信息如下:"<<endl;
                                                 b->disp();
                                                 break;
                                                 case5:
                                                 clear();
                                                 cout<<"所有图书已删除"<<endl;
                                                   Sleep(1000);
                                                 system("cls");
                                                 break:
                                                         
                                        }
                                       
                               }
                                        system("cls");                                 
                          }
                          void BDatabase::disp()
                          {
                                  Book temp;
                                  for(int i=0;i<=top&&(book[i].gettag()==0);i++)
                                  for(int j=i+1;j<=top;&&(book[j].gettag()==0);j++)
                                  if(strcmp(book[i].gettime(),book[j].gettime())<0)
                                  {
                                          temp=book[i];
                                          book[i]=book[j];
                                          book[j]=temp;
                                  }
                                  for(int x=0;x<=top;&&(book[x].gettag()==0);x++)
                                  book[x].disp();
                          }
                          BDatebase::~BDatabase()//析构函数,将book[]写入book .txt文件中
                          {
                                  fstream file("book.txt",ios::out);
                                  for(int i=0;i<=top;i++)
                                  if(book[i].gettag()=0)
                                  file.write((char*)&book[i],sizeof(book[i]));
                                  file.close();
                           }
                           class Rdatebase //读者库类
                           {
                                   int top;
                                   Reader read[Maxr];//读者记录
                                   public:
                                   Rdatebase();
                                   void disp();
                                   void clear();
                                   void addreader(int n,char*na,char*mi);
                                   Reader *query(int readerid);
                                   ~Rdatebase();
                                   void readerdata();
                                } ;
                                Rdatebase::Rdatebase()//构造函数,将reader.txt读到read[]中
                                {
                                        Reader s;
                                        top=-1;
                                        fstream file("reader.txt",ios::in);
                                        while(1)
                                        {
                                                file.read((char*)&s,sizeof(s));
                                                if(!file)break;
                                                top++;
                                                read[top]=s;
                                                
                                        }
                                        file.close();
                                       
                                 }
                                 void Rdatebase::disp();
                                 {
                                         for(int i=0;i<=top;i++)
                                         if(read[i],gettag()==0)
                                         read[i].disp();
                                  }
                                  void Rdatebase::clear()
                                  {
                                          top=-1;
                                   }
                                   void Rdatebase::addreader(int n,char*na,char*mi)
                                   {
                                           top++;
                                           read[top].addreader(n,na,mi);
                                        }
                                        Reader*Rdatebase::query(int readerid)
                                        {
                                                for(int i=0;i<=top;i++)
                                                 if(read[i].getnum()==readerid&&read[i].gettag()==0)
                                                 return &read[i];
                                                 return NULL;
                                         }
                                         Rdatebase::~Rdatebase()//析构函数,将red[]写入read.txt文件中
                                         {
                                                 fstream file("d:\\reader.txt",ios::out);
                                                 for(int i=0;i<=top;i++)
                                          if(read[i].gettag()=0)
                                          file.write((char*)&read[i],sizeof(read[i]));
                                          file.close();
                                          }
                                          void Rdarebase::readerdata()//读者库维护
                                          {
                                                  int choice;
                                                  char rname[20];
                                                  int readerid;
                                                  char rmima[6];
                                                  Reader *r;
                                                  while (choice!=0)
                                                  {
                                                          cout<<"--------------------------------------"<<endl;
                                                          cout<<"--           读者维护               --"<<endl;
                                                          cout<<"--            1、新增               --"<<endl;
                                                          cout<<"--            2、更改               --"<<endl;
                                                          cout<<"--            3、删除               --"<<endl;
                                                          cout<<"--            4、查找               --"<<endl;
                                                          cout<<"--            5、显示               --"<<endl;
                                                          cout<<"--            6、全删               --"<<endl;
                                                          cout<<"--            0.退出                --"<<endl;
                                                          cout<<"--------------------------------------"<<endl;
                                                          cout<<"请选择"<<endl;
                                                          cin>>choice;
                                                          int a=0;
                                                          int i=0;
                                                          switch(choice)
                                                          {
                                                                  case 0:
                                                                          system("cls");
                                                                          break;
                                                                  case 1:
                                                                          cout<<"读者编号:";
                                                                          cin>>readerid;
                                                                          do
                                                                          {
                                                                                  if(a!=0)
                                                                                  {
                                                                                          cout<<"已存在,请重新输入:";
                                                                                          cin>>readerid;
                                                                                  }
                                                                                  a++;
                                                                          }
                                                                          while(query(reader)!=NULL);
                                                                          cout<<"输入读者密码:";
                                                                          for(i;i<6;i++)
                                                                          {
                                                                                  rmima[i]=getch();
                                                                                  putch("-");
                                                                          }
                                                                          cout<<endl<<"输入读者姓名:";
                                                                          cin>>rname;
                                                                          cout<<"添加成功"<<endl;
                                                                          addreader(readerid,rname,rmima);
                                                                          Sleep(1000);
                                                                          system("cls");
                                                                          break;
                                                                          case2:
                                                                          cout<<"读者编号:";
                                                                          cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           cout<<"输入新的读者姓名:";
                                                                           cin>>rname;
                                                                           cout<<"读者更改成功"<<endl;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           r->setname(rname);
                                                                           break;
                                                                           case3:
                                                                           cout<<"读者编号:";
                                                                           cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           cout<<"读者删除成功"<<endl;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           r->delreader();
                                                                           break;
                                                                case4:
                                                                        cout<<"读入读者编号:";
                                                                        cin>>readerid;
                                                                          r=query(readerid);
                                                                          if(r==NULL)
                                                                          {
                                                                                  cout<<"该读者不存在"<<endl;
                                                                                  Sleep(1000);
                                                                                  system("cls");
                                                                                  break;
                                                                           }
                                                                           system("cls");
                                                                           cout<<"您所查找的读者信息如下"<<endl;
                                                                           r->disp();
                                                                           break;
                                                                           case 5:
                                                                           system("cls");
                                                                           cout<<"所有读者信息如下"<<endl;
                                                                           disp();
                                                                           break;
                                                                           case 6:
                                                                           clear();
                                                                           cout<<"所有读者已删除"<<endl ;
                                                                           Sleep(1000);
                                                                           system("cls");
                                                                           break;
                                                         
                                                          }
                                                         
                                                  }
                                           }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-6-27 23:14:18 | 显示全部楼层
159        7        C:\Users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\243' in program
159        7        C:\Users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\273' in program
515        14        C:\Users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\243' in program
515        14        C:\Users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\273' in program
29        17        C:\Users\DELL\Documents\代码C\实验报告.cpp        [Error] no 'int Reader::reader()' member function declared in class 'Reader'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
324 
发表于 2020-6-28 07:40:58 | 显示全部楼层
白砂糖 发表于 2020-6-27 23:14
159        7        C:%users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\243' in progra ...


请解释一下
  1. if((strcmp(book[i].getwriter().wr)==0)&&book[i].gettag()=0)
复制代码
这种代码是要干什么?


改完后的代码:
  1. #include<iostream>
  2. #include<iomanip>
  3. #include<windows.h>
  4. #include<conio.h>
  5. #include<string>
  6. #include<fstream>
  7. using namespace std;
  8. const int Maxbor = 10;//每位读者最多借10本书


  9. class Reader { //读者类
  10.     int tag;
  11.     int num;
  12.     char mima[6];
  13.     char name[10];
  14.     int borbook[Maxbor];

  15. public:
  16.     int getnum();
  17.     int gettag();
  18.     char* getname();
  19.     char* getmima();
  20.     void setname(char na[]);
  21.     void delreader();
  22.     void addreader(int n, char* na, char* mi);
  23.     void borrowbook(int bookid);
  24.     int retbook(int bookid);
  25.     void disp();
  26. };
  27. char* Reader::getname() { return name; }
  28. int Reader::gettag() { return tag; }//获取删除符号
  29. int Reader::getnum() { return num; }//获取读者编号
  30. char* Reader::getmima() { return mima; }//获取读者的密码
  31. void Reader::setname(char na[])//设置姓名
  32. {
  33.     strcpy(name, na);
  34. }
  35. void Reader::delreader() { tag = 1; }//删除读者
  36. void Reader::addreader(int n, char* na, char* mi)//增加读者
  37. {
  38.     tag = 0;
  39.     num = n;
  40.     strcpy(name, na);
  41.     strcpy(mima, mi);
  42.     for (int i = 0; i < Maxbor; i++) {
  43.         borbook[i] = 0;
  44.     }

  45. }
  46. void Reader::borrowbook(int bookid)//借书操作
  47. {
  48.     for (int i = 0; i < Maxbor; i++)
  49.     {
  50.         if (borbook[i] == bookid)
  51.         {
  52.             borbook[i] = 0;
  53.             return;

  54.         }
  55.     }
  56. }
  57. int Reader::retbook(int bookid)//还书操作
  58. {
  59.     for (int i = 0; i < Maxbor; i++)
  60.     {
  61.         if (borbook[i] == bookid)
  62.         {
  63.             borbook[i] = 0;
  64.             return 1;
  65.         }
  66.     }
  67.     return 0;

  68. }
  69. void Reader::disp() {
  70.     cout << endl;
  71.     cout << setw(12) << num << "借书编号:[";
  72.     for (int i = 0; i < Maxbor; i++)
  73.         if (borbook[i] != 0)
  74.             cout << borbook[i] << ';';
  75.     cout << ']' << endl;

  76. }

  77. class Book  //图书类
  78. {
  79.     int tag;
  80.     int num;
  81.     char name[10];
  82.     char writer[10];
  83.     char concern[30];
  84.     char Time[10];
  85.     float price;
  86.     int onshelf;
  87. public:

  88.     char* getname();
  89.     int getnum();
  90.     int getonshelf();
  91.     char* getwriter();
  92.     char* gettime();
  93.     char* getconcern();
  94.     float getprice();
  95.     int gettag();
  96.     void getTime(char time[]);
  97.     void setname(char na[]);
  98.     void delbook();
  99.     int borrowbook();//借书操作
  100.     void retbook();//还书操作
  101.     void disp();//输出图书
  102.     void addbook(int n, char* na, char* wri, char* con, char* tm, float pr);

  103. };

  104. char* Book::getname() { return name; }//获取姓名
  105. int Book::getonshelf() { return onshelf; }
  106. int Book::getnum() { return num; }//获取图书编号
  107. char* Book::getwriter() { return writer; } //获取书籍作者
  108. char* Book::getconcern() { return concern; }//获取书籍出版社
  109. char* Book::gettime() { return Time; }
  110. float Book::getprice() { return price; }//获取书籍价格
  111. int Book::gettag() { return tag; } //获取删除标记
  112. void Book::setname(char na[]) //设置书名
  113. {
  114.     strcpy(name, na);
  115. }
  116. void Book::getTime(char time[])
  117. {
  118.     strcpy(Time, time);
  119. }
  120. void Book::delbook() { tag = 1; }//删除图书
  121. void Book::addbook(int n, char* na, char* wri, char* con, char* tm, float pr)//增加图书
  122. {
  123.     tag = 0;
  124.     num = n;
  125.     strcpy(name, na);
  126.     strcpy(writer, wri);
  127.     strcpy(concern, con);
  128.     strcpy(Time, tm);
  129.     price = pr;
  130.     onshelf = 1;

  131. }
  132. int Book::borrowbook()//借书操作
  133. {
  134.     if (onshelf == 1)
  135.     {
  136.         onshelf = 0;
  137.         return 1;

  138.     }
  139.     return 0;
  140. }

  141. void Book::retbook()//还书操作
  142. {
  143.     onshelf = 1;
  144. }
  145. void Book::disp()//输出图书
  146. {
  147.     cout << setw(6) << num << setw(12) << name << setw(15) << concern << setw(10) << writer << setw(12) << Time << setw(6) << (onshelf == 1 ? "在架" : "已借") << endl;
  148. }

  149. class BDatabase  //图书库类
  150. {
  151.     int top;
  152.     Book book[Maxbor];
  153. public:
  154.     BDatabase();
  155.     void clear();
  156.     int addbook(int n, char* na, char* wri, char* con, char* tm, float pr);
  157.     Book* query(int bookid);
  158.     int qname(char* nm);
  159.     Book* Qname(char* nm);
  160.     int qzuozhe(char* wr);
  161.     Book* Qzuozhe(char* wr);
  162.     int qchuban(char* cb);
  163.     Book* Qchuban(char* cb);
  164.     void bookdata();
  165.     ~BDatabase();
  166.     void disp();
  167. };


  168. BDatabase::BDatabase()//构造函数将book.txt读到book[]中
  169. {
  170.     Book b;
  171.     top = 1;
  172.     fstream file("d:\\book.txt", ios::in);
  173.     for (;;) {
  174.         file.read((char*)& b, sizeof(b));
  175.         if (!file) {
  176.             break;
  177.         }
  178.         top++;
  179.         book[top] = b;
  180.     }
  181.     file.close();

  182. }

  183. void BDatabase::clear()//全删
  184. {
  185.     top = -1;

  186. }

  187. int BDatabase::addbook(int n, char* na, char* wri, char* con, char* tm, float pr)//增加图书
  188. {
  189.     Book* p = query(n);
  190.     if (p == NULL)
  191.     {
  192.         top++;
  193.         book[top].addbook(n, na, wri, con, tm, pr);
  194.         return 1;
  195.     }
  196.     return 0;
  197. }

  198. Book* BDatabase::query(int bookid)//查找图书
  199. {
  200.     for (int i = 0; i <= top; i++) {
  201.         if (book[i].getnum() == bookid && book[i].gettag() == 0) {
  202.             return &book[i];
  203.         }
  204.     }
  205.     return NULL;
  206. }

  207. int BDatabase::qname(char* nm)
  208. {
  209.     int j = 0;
  210.     for (int i = 0; i <= top; i++) {
  211.         if ((strcmp(book[i].getname().nm) == 0) && book[i].gettag() == 0) {
  212.             j++;
  213.         }
  214.     }
  215.     return j;
  216. }

  217. Book* BDatabase::Qname(char* nm)
  218. {
  219.     int j = 0;
  220.     Book* b = new Book[100];
  221.     for (int i = 0; i <= top; i++) {
  222.         if ((strcmp(book[i].getname().nm) == 0) && book[i].gettag() == 0) {
  223.             b[j++] = book[i];
  224.         }
  225.     }

  226.     if (j) {
  227.         return b;
  228.     }
  229.     else {
  230.         delete[]b;
  231.         return 0;
  232.     }
  233. }

  234. int BDatabase::qzuozhe(char* wr)
  235. {
  236.     int e = 0;
  237.     for (int i = 0; i <= top; i++) {
  238.         if ((strcmp(book[i].getwriter().wr) == 0) && book[i].gettag() == 0) {
  239.             e++;
  240.         }
  241.     }
  242.     return e;
  243. }

  244. Book* BDatabase::Qzuozhe(char* wr)
  245. {
  246.     int f = 0;
  247.     Book b[100];
  248.     for (int i = 0; i <= top; i++) {
  249.         if ((strcmp(book[i].getwriter().wr) == 0) && book[i].gettag() == 0) {
  250.             b[f++] = book[i];
  251.         }
  252.     }
  253.     if (f == 0)
  254.         return NULL;
  255.     else
  256.         return b;
  257. }

  258. int BDatabase::qchuban(char* cb)
  259. {
  260.     int g = 0;
  261.     for (int i = 0; i <= top; i++) {
  262.         if ((strcmp(book[i].getconcern().wr) == 0) && book[i].gettag() == 0) {
  263.             g++;
  264.         }
  265.     }

  266.     return g;
  267. }

  268. Book* BDatabase::Qchuban(char* cb)
  269. {
  270.     int h = 0;
  271.     Book* b = new Book[100];

  272.     for (int i = 0; i <= top; i++) {
  273.         if ((strcmp(book[i].getconcern().wr) == 0) && book[i].gettag() == 0) {
  274.             b[h++] = book[i];
  275.         }
  276.     }

  277.     if (h) {
  278.         return b;
  279.     }
  280.     else {
  281.         delete[]b;
  282.         return 0;
  283.     }
  284. }

  285. void BDatabase::bookdata()//图书库维护
  286. {
  287.     int choice = 1;
  288.     char bname[40];
  289.     int bookid;
  290.     char bwriter[15];
  291.     char bconcern[15];
  292.     char btime[15];
  293.     float bprice;
  294.     Book* b;
  295.     int r = 0;

  296.     while (choice)
  297.     {
  298.         cout << endl << endl << endl << endl;
  299.         cout << " --------------------------------- " << endl;
  300.         cout << " --         图书维护             --" << endl;
  301.         cout << " --         1.新增               --" << endl;
  302.         cout << " --         2.删除               --" << endl;
  303.         cout << " --         3.查找               --" << endl;
  304.         cout << " --         4.显示               --" << endl;
  305.         cout << " --         5.全删               --" << endl;
  306.         cout << " --         0.退出               --" << endl;
  307.         cout << " ----------------------------------" << endl;
  308.         cout << "请选择您将进行的操作:";
  309.         cin >> choice;
  310.         switch (choice) {
  311.             case 1:
  312.                 cout << "图书编号:";
  313.                 cin >> bookid;
  314.                 do
  315.                 {
  316.                     if (r != 0)

  317.                     {
  318.                         cout << "该编号错误,请重新输入:";
  319.                         cin >> bookid;
  320.                     }
  321.                     r++;
  322.                     if (r == 3)
  323.                         break;
  324.                 } while (query(bookid) != NULL);
  325.                 if (r == 3)
  326.                 {
  327.                     system("cls");
  328.                     break;
  329.                 }
  330.                 cout << "图书书名:";
  331.                 cin >> bname;
  332.                 cout << "图书作者:";
  333.                 cin >> bwriter;
  334.                 cout << "图书出版社:";
  335.                 cin >> bconcern;
  336.                 cout << "图书出版时间:";
  337.                 cin >> btime;
  338.                 cout << "图书价格";
  339.                 cin >> bprice;
  340.                 cout << "图书添加成功" << endl;
  341.                 Sleep(1000);
  342.                 system("cls");
  343.                 addbook(bookid, bname, bwriter, bconcern, btime, bprice);
  344.                 break;

  345.             case 2:
  346.                 cout << "图书编号:";
  347.                 cin >> bookid;
  348.                 b = query(bookid);
  349.                 if (b == NULL)
  350.                 {
  351.                     cout << "该图书不在" << endl;
  352.                     Sleep(1000);
  353.                     system("cls");
  354.                     break;
  355.                 }
  356.                 cout << "已删除" << endl;
  357.                 Sleep(1000);
  358.                 system("cls");
  359.                 b->delbook();
  360.                 break;

  361.             case 3:
  362.                 cout << "图书编号:";
  363.                 cin >> bookid;
  364.                 b = query(bookid);
  365.                 if (b == NULL)
  366.                 {
  367.                     cout << "该图书不在" << endl;
  368.                     Sleep(1000);
  369.                     system("cls");
  370.                     break;
  371.                 }

  372.                 system("cls");
  373.                 cout << "所查信息如下:" << endl;
  374.                 b->disp();
  375.                 break;

  376.             case 4:
  377.                 system("cls");
  378.                 cout << "所有图书信息如下:" << endl;
  379.                 b->disp();
  380.                 break;

  381.             case 5:
  382.                 clear();
  383.                 cout << "所有图书已删除" << endl;
  384.                 Sleep(1000);
  385.                 system("cls");
  386.                 break;
  387.         }
  388.     }
  389.     system("cls");
  390. }

  391. void BDatabase::disp()
  392. {
  393.     Book temp;
  394.     for (int i = 0; i <= top && (book[i].gettag() == 0); i++)
  395.         for (int j = i + 1; j <= top && (book[j].gettag() == 0); j++)
  396.             if (strcmp(book[i].gettime(), book[j].gettime()) < 0)
  397.             {
  398.                 temp = book[i];
  399.                 book[i] = book[j];
  400.                 book[j] = temp;
  401.             }
  402.     for (int x = 0; x <= top && (book[x].gettag() == 0); x++) {
  403.         book[x].disp();
  404.     }
  405. }

  406. BDatabase::~BDatabase()//析构函数,将book[]写入book .txt文件中
  407. {
  408.     fstream file("d:\\book.txt", ios::out);
  409.     for (int i = 0; i <= top; i++) {
  410.         if (book[i].gettag() == 0) {
  411.             file.write((char*)& book[i], sizeof(book[i]));
  412.         }
  413.     }
  414.     file.close();
  415. }


  416. class Rdatebase //读者库类
  417. {
  418.     int top;
  419.     Reader read[Maxbor];//读者记录
  420. public:
  421.     Rdatebase();
  422.     void disp();
  423.     void clear();
  424.     void addreader(int n, char* na, char* mi);
  425.     Reader* query(int readerid);
  426.     ~Rdatebase();
  427.     void readerdata();
  428. };

  429. Rdatebase::Rdatebase()//构造函数,将reader.txt读到read[]中
  430. {
  431.     Reader s;
  432.     top = -1;
  433.     fstream file("d:\\reader.txt", ios::in);

  434.     for (;;) {
  435.         file.read((char*)& s, sizeof(s));
  436.         if (!file) {
  437.             break;
  438.         }
  439.         top++;
  440.         read[top] = s;
  441.     }

  442.     file.close();

  443. }

  444. void Rdatebase::disp() {
  445.     for (int i = 0; i <= top; i++) {
  446.         if (read[i].gettag() == 0) {
  447.             read[i].disp();
  448.         }
  449.     }
  450. }

  451. void Rdatebase::clear()
  452. {
  453.     top = -1;
  454. }

  455. void Rdatebase::addreader(int n, char* na, char* mi)
  456. {
  457.     top++;
  458.     read[top].addreader(n, na, mi);
  459. }

  460. Reader* Rdatebase::query(int readerid)
  461. {
  462.     for (int i = 0; i <= top; i++) {
  463.         if (read[i].getnum() == readerid && read[i].gettag() == 0) {
  464.             return &read[i];
  465.         }
  466.     }
  467.     return NULL;
  468. }

  469. Rdatebase::~Rdatebase()//析构函数,将read[]写入read.txt文件中
  470. {
  471.     fstream file("d:\\reader.txt", ios::out);
  472.     for (int i = 0; i <= top; i++) {
  473.         if (read[i].gettag() == 0) {
  474.             file.write((char*)& read[i], sizeof(read[i]));
  475.         }
  476.     }
  477.     file.close();
  478. }

  479. void Rdatebase::readerdata()//读者库维护
  480. {
  481.     int choice;
  482.     char rname[20];
  483.     int readerid;
  484.     char rmima[6];
  485.     Reader* r;

  486.     while (choice)
  487.     {
  488.         cout << "--------------------------------------" << endl;
  489.         cout << "--           读者维护               --" << endl;
  490.         cout << "--            1、新增               --" << endl;
  491.         cout << "--            2、更改               --" << endl;
  492.         cout << "--            3、删除               --" << endl;
  493.         cout << "--            4、查找               --" << endl;
  494.         cout << "--            5、显示               --" << endl;
  495.         cout << "--            6、全删               --" << endl;
  496.         cout << "--            0.退出                --" << endl;
  497.         cout << "--------------------------------------" << endl;
  498.         cout << "请选择" << endl;
  499.         cin >> choice;
  500.         int a = 0;
  501.         int i = 0;

  502.         switch (choice)
  503.         {
  504.             case 0:
  505.                 system("cls");
  506.                 break;

  507.             case 1:
  508.                 cout << "读者编号:";
  509.                 cin >> readerid;
  510.                 do
  511.                 {
  512.                     if (a != 0)
  513.                     {
  514.                         cout << "已存在,请重新输入:";
  515.                         cin >> readerid;
  516.                     }
  517.                     a++;
  518.                 } while (query(readerid) != NULL);
  519.                 cout << "输入读者密码:";
  520.                 for (i; i < 6; i++)
  521.                 {
  522.                     rmima[i] = getch();
  523.                     putch('-');
  524.                 }
  525.                 cout << endl << "输入读者姓名:";
  526.                 cin >> rname;
  527.                 cout << "添加成功" << endl;
  528.                 addreader(readerid, rname, rmima);
  529.                 Sleep(1000);
  530.                 system("cls");
  531.                 break;

  532.             case 2:
  533.                 cout << "读者编号:";
  534.                 cin >> readerid;
  535.                 r = query(readerid);
  536.                 if (r == NULL)
  537.                 {
  538.                     cout << "该读者不存在" << endl;
  539.                     Sleep(1000);
  540.                     system("cls");
  541.                     break;
  542.                 }
  543.                 cout << "输入新的读者姓名:";
  544.                 cin >> rname;
  545.                 cout << "读者更改成功" << endl;
  546.                 Sleep(1000);
  547.                 system("cls");
  548.                 r->setname(rname);
  549.                 break;

  550.             case 3:
  551.                 cout << "读者编号:";
  552.                 cin >> readerid;
  553.                 r = query(readerid);
  554.                 if (r == NULL)
  555.                 {
  556.                     cout << "该读者不存在" << endl;
  557.                     Sleep(1000);
  558.                     system("cls");
  559.                     break;
  560.                 }
  561.                 cout << "读者删除成功" << endl;
  562.                 Sleep(1000);
  563.                 system("cls");
  564.                 r->delreader();
  565.                 break;

  566.             case 4:
  567.                 cout << "读入读者编号:";
  568.                 cin >> readerid;
  569.                 r = query(readerid);
  570.                 if (r == NULL)
  571.                 {
  572.                     cout << "该读者不存在" << endl;
  573.                     Sleep(1000);
  574.                     system("cls");
  575.                     break;
  576.                 }
  577.                 system("cls");
  578.                 cout << "您所查找的读者信息如下" << endl;
  579.                 r->disp();
  580.                 break;

  581.             case 5:
  582.                 system("cls");
  583.                 cout << "所有读者信息如下" << endl;
  584.                 disp();
  585.                 break;

  586.             case 6:
  587.                 clear();
  588.                 cout << "所有读者已删除" << endl;
  589.                 Sleep(1000);
  590.                 system("cls");
  591.                 break;
  592.         }
  593.     }
  594. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
11 
发表于 2020-6-29 08:58:23 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-28 07:40
请解释一下这种代码是要干什么?


改完后的代码:

厉害,可以运行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
324 
发表于 2020-6-29 09:01:14 | 显示全部楼层
jhanker 发表于 2020-6-29 08:58
厉害,可以运行了

不会吧……strcmp 那里我都没改……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
11 
发表于 2020-6-29 09:41:04 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-29 09:01
不会吧……strcmp 那里我都没改……

我把你的strcmp里的 "." 改成 “,” 就通过了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
11 
发表于 2020-6-29 09:43:00 | 显示全部楼层
白砂糖 发表于 2020-6-27 23:14
159        7        C:%users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\243' in progra ...

下面代码编译通过了,加了main函数
  1. #include<iostream>
  2. #include<iomanip>
  3. #include<windows.h>
  4. #include<conio.h>
  5. #include<string>
  6. #include<fstream>

  7. using namespace std;

  8. const int Maxbor = 10;//每位读者最多借10本书


  9. class Reader { //读者类
  10.     int tag;
  11.     int num;
  12.     char mima[6];
  13.     char name[10];
  14.     int borbook[Maxbor];

  15. public:
  16.     int getnum();
  17.     int gettag();
  18.     char* getname();
  19.     char* getmima();
  20.     void setname(char na[]);
  21.     void delreader();
  22.     void addreader(int n, char* na, char* mi);
  23.     void borrowbook(int bookid);
  24.     int retbook(int bookid);
  25.     void disp();
  26. };

  27. char* Reader::getname() { return name; }
  28. int Reader::gettag() { return tag; }//获取删除符号
  29. int Reader::getnum() { return num; }//获取读者编号
  30. char* Reader::getmima() { return mima; }//获取读者的密码
  31. void Reader::setname(char na[])//设置姓名
  32. {
  33.     strcpy(name, na);
  34. }
  35. void Reader::delreader() { tag = 1; }//删除读者
  36. void Reader::addreader(int n, char* na, char* mi)//增加读者
  37. {
  38.     tag = 0;
  39.     num = n;
  40.     strcpy(name, na);
  41.     strcpy(mima, mi);
  42.     for (int i = 0; i < Maxbor; i++) {
  43.         borbook[i] = 0;
  44.     }

  45. }
  46. void Reader::borrowbook(int bookid)//借书操作
  47. {
  48.     for (int i = 0; i < Maxbor; i++)
  49.     {
  50.         if (borbook[i] == bookid)
  51.         {
  52.             borbook[i] = 0;
  53.             return;

  54.         }
  55.     }
  56. }
  57. int Reader::retbook(int bookid)//还书操作
  58. {
  59.     for (int i = 0; i < Maxbor; i++)
  60.     {
  61.         if (borbook[i] == bookid)
  62.         {
  63.             borbook[i] = 0;
  64.             return 1;
  65.         }
  66.     }
  67.     return 0;

  68. }
  69. void Reader::disp() {
  70.     cout << endl;
  71.     cout << setw(12) << num << "借书编号:[";
  72.     for (int i = 0; i < Maxbor; i++)
  73.         if (borbook[i] != 0)
  74.             cout << borbook[i] << ';';
  75.     cout << ']' << endl;

  76. }

  77. class Book  //图书类
  78. {
  79.     int tag;
  80.     int num;
  81.     char name[10];
  82.     char writer[10];
  83.     char concern[30];
  84.     char Time[10];
  85.     float price;
  86.     int onshelf;
  87. public:

  88.     char* getname();
  89.     int getnum();
  90.     int getonshelf();
  91.     char* getwriter();
  92.     char* gettime();
  93.     char* getconcern();
  94.     float getprice();
  95.     int gettag();
  96.     void getTime(char time[]);
  97.     void setname(char na[]);
  98.     void delbook();
  99.     int borrowbook();//借书操作
  100.     void retbook();//还书操作
  101.     void disp();//输出图书
  102.     void addbook(int n, char* na, char* wri, char* con, char* tm, float pr);

  103. };

  104. char* Book::getname() { return name; }//获取姓名
  105. int Book::getonshelf() { return onshelf; }
  106. int Book::getnum() { return num; }//获取图书编号
  107. char* Book::getwriter() { return writer; } //获取书籍作者
  108. char* Book::getconcern() { return concern; }//获取书籍出版社
  109. char* Book::gettime() { return Time; }
  110. float Book::getprice() { return price; }//获取书籍价格
  111. int Book::gettag() { return tag; } //获取删除标记
  112. void Book::setname(char na[]) //设置书名
  113. {
  114.     strcpy(name, na);
  115. }
  116. void Book::getTime(char time[])
  117. {
  118.     strcpy(Time, time);
  119. }
  120. void Book::delbook() { tag = 1; }//删除图书
  121. void Book::addbook(int n, char* na, char* wri, char* con, char* tm, float pr)//增加图书
  122. {
  123.     tag = 0;
  124.     num = n;
  125.     strcpy(name, na);
  126.     strcpy(writer, wri);
  127.     strcpy(concern, con);
  128.     strcpy(Time, tm);
  129.     price = pr;
  130.     onshelf = 1;

  131. }
  132. int Book::borrowbook()//借书操作
  133. {
  134.     if (onshelf == 1)
  135.     {
  136.         onshelf = 0;
  137.         return 1;

  138.     }
  139.     return 0;
  140. }

  141. void Book::retbook()//还书操作
  142. {
  143.     onshelf = 1;
  144. }
  145. void Book::disp()//输出图书
  146. {
  147.     cout << setw(6) << num << setw(12) << name << setw(15) << concern << setw(10) << writer << setw(12) << Time << setw(6) << (onshelf == 1 ? "在架" : "已借") << endl;
  148. }

  149. class BDatabase  //图书库类
  150. {
  151.     int top;
  152.     Book book[Maxbor];
  153. public:
  154.     BDatabase();
  155.     void clear();
  156.     int addbook(int n, char* na, char* wri, char* con, char* tm, float pr);
  157.     Book* query(int bookid);
  158.     int qname(char* nm);
  159.     Book* Qname(char* nm);
  160.     int qzuozhe(char* wr);
  161.     Book* Qzuozhe(char* wr);
  162.     int qchuban(char* cb);
  163.     Book* Qchuban(char* cb);
  164.     void bookdata();
  165.     ~BDatabase();
  166.     void disp();
  167. };


  168. BDatabase::BDatabase()//构造函数将book.txt读到book[]中
  169. {
  170.     Book b;
  171.     top = 1;
  172.     fstream file("d:\\book.txt", ios::in);
  173.     for (;;) {
  174.         file.read((char*)& b, sizeof(b));
  175.         if (!file) {
  176.             break;
  177.         }
  178.         top++;
  179.         book[top] = b;
  180.     }
  181.     file.close();

  182. }

  183. void BDatabase::clear()//全删
  184. {
  185.     top = -1;

  186. }

  187. int BDatabase::addbook(int n, char* na, char* wri, char* con, char* tm, float pr)//增加图书
  188. {
  189.     Book* p = query(n);
  190.     if (p == NULL)
  191.     {
  192.         top++;
  193.         book[top].addbook(n, na, wri, con, tm, pr);
  194.         return 1;
  195.     }
  196.     return 0;
  197. }

  198. Book* BDatabase::query(int bookid)//查找图书
  199. {
  200.     for (int i = 0; i <= top; i++) {
  201.         if (book[i].getnum() == bookid && book[i].gettag() == 0) {
  202.             return &book[i];
  203.         }
  204.     }
  205.     return NULL;
  206. }

  207. int BDatabase::qname(char* nm)
  208. {
  209.     int j = 0;
  210.     for (int i = 0; i <= top; i++) {
  211.         if ((strcmp(book[i].getname(),nm) == 0) && book[i].gettag() == 0) {
  212.             j++;
  213.         }
  214.     }
  215.     return j;
  216. }

  217. Book* BDatabase::Qname(char* nm)
  218. {
  219.     int j = 0;
  220.     Book* b = new Book[100];
  221.     for (int i = 0; i <= top; i++) {
  222.         if ((strcmp(book[i].getname(),nm) == 0) && book[i].gettag() == 0) {
  223.             b[j++] = book[i];
  224.         }
  225.     }

  226.     if (j) {
  227.         return b;
  228.     }
  229.     else {
  230.         delete[]b;
  231.         return 0;
  232.     }
  233. }

  234. int BDatabase::qzuozhe(char* wr)
  235. {
  236.     int e = 0;
  237.     for (int i = 0; i <= top; i++) {
  238.         if ((strcmp(book[i].getwriter(),wr) == 0) && book[i].gettag() == 0) {
  239.             e++;
  240.         }
  241.     }
  242.     return e;
  243. }

  244. Book* BDatabase::Qzuozhe(char* wr)
  245. {
  246.     int f = 0;
  247.     Book b[100];
  248.     for (int i = 0; i <= top; i++) {
  249.         if ((strcmp(book[i].getwriter(),wr) == 0) && book[i].gettag() == 0) {
  250.             b[f++] = book[i];
  251.         }
  252.     }
  253.     if (f == 0)
  254.         return NULL;
  255.     else
  256.         return b;
  257. }

  258. int BDatabase::qchuban(char* cb)
  259. {
  260.     int g = 0;
  261.     for (int i = 0; i <= top; i++) {
  262.         if ((strcmp(book[i].getconcern(),cb) == 0) && book[i].gettag() == 0) {
  263.             g++;
  264.         }
  265.     }

  266.     return g;
  267. }

  268. Book* BDatabase::Qchuban(char* cb)
  269. {
  270.     int h = 0;
  271.     Book* b = new Book[100];

  272.     for (int i = 0; i <= top; i++) {
  273.         if ((strcmp(book[i].getconcern(),cb) == 0) && book[i].gettag() == 0) {
  274.             b[h++] = book[i];
  275.         }
  276.     }

  277.     if (h) {
  278.         return b;
  279.     }
  280.     else {
  281.         delete[]b;
  282.         return 0;
  283.     }
  284. }

  285. void BDatabase::bookdata()//图书库维护
  286. {
  287.     int choice = 1;
  288.     char bname[40];
  289.     int bookid;
  290.     char bwriter[15];
  291.     char bconcern[15];
  292.     char btime[15];
  293.     float bprice;
  294.     Book* b;
  295.     int r = 0;

  296.     while (choice)
  297.     {
  298.         cout << endl << endl << endl << endl;
  299.         cout << " --------------------------------- " << endl;
  300.         cout << " --         图书维护             --" << endl;
  301.         cout << " --         1.新增               --" << endl;
  302.         cout << " --         2.删除               --" << endl;
  303.         cout << " --         3.查找               --" << endl;
  304.         cout << " --         4.显示               --" << endl;
  305.         cout << " --         5.全删               --" << endl;
  306.         cout << " --         0.退出               --" << endl;
  307.         cout << " ----------------------------------" << endl;
  308.         cout << "请选择您将进行的操作:";
  309.         cin >> choice;
  310.         switch (choice) {
  311.             case 1:
  312.                 cout << "图书编号:";
  313.                 cin >> bookid;
  314.                 do
  315.                 {
  316.                     if (r != 0)

  317.                     {
  318.                         cout << "该编号错误,请重新输入:";
  319.                         cin >> bookid;
  320.                     }
  321.                     r++;
  322.                     if (r == 3)
  323.                         break;
  324.                 } while (query(bookid) != NULL);
  325.                 if (r == 3)
  326.                 {
  327.                     system("cls");
  328.                     break;
  329.                 }
  330.                 cout << "图书书名:";
  331.                 cin >> bname;
  332.                 cout << "图书作者:";
  333.                 cin >> bwriter;
  334.                 cout << "图书出版社:";
  335.                 cin >> bconcern;
  336.                 cout << "图书出版时间:";
  337.                 cin >> btime;
  338.                 cout << "图书价格";
  339.                 cin >> bprice;
  340.                 cout << "图书添加成功" << endl;
  341.                 Sleep(1000);
  342.                 system("cls");
  343.                 addbook(bookid, bname, bwriter, bconcern, btime, bprice);
  344.                 break;

  345.             case 2:
  346.                 cout << "图书编号:";
  347.                 cin >> bookid;
  348.                 b = query(bookid);
  349.                 if (b == NULL)
  350.                 {
  351.                     cout << "该图书不在" << endl;
  352.                     Sleep(1000);
  353.                     system("cls");
  354.                     break;
  355.                 }
  356.                 cout << "已删除" << endl;
  357.                 Sleep(1000);
  358.                 system("cls");
  359.                 b->delbook();
  360.                 break;

  361.             case 3:
  362.                 cout << "图书编号:";
  363.                 cin >> bookid;
  364.                 b = query(bookid);
  365.                 if (b == NULL)
  366.                 {
  367.                     cout << "该图书不在" << endl;
  368.                     Sleep(1000);
  369.                     system("cls");
  370.                     break;
  371.                 }

  372.                 system("cls");
  373.                 cout << "所查信息如下:" << endl;
  374.                 b->disp();
  375.                 break;

  376.             case 4:
  377.                 system("cls");
  378.                 cout << "所有图书信息如下:" << endl;
  379.                 b->disp();
  380.                 break;

  381.             case 5:
  382.                 clear();
  383.                 cout << "所有图书已删除" << endl;
  384.                 Sleep(1000);
  385.                 system("cls");
  386.                 break;
  387.         }
  388.     }
  389.     system("cls");
  390. }

  391. void BDatabase::disp()
  392. {
  393.     Book temp;
  394.     for (int i = 0; i <= top && (book[i].gettag() == 0); i++)
  395.         for (int j = i + 1; j <= top && (book[j].gettag() == 0); j++)
  396.             if (strcmp(book[i].gettime(), book[j].gettime()) < 0)
  397.             {
  398.                 temp = book[i];
  399.                 book[i] = book[j];
  400.                 book[j] = temp;
  401.             }
  402.     for (int x = 0; x <= top && (book[x].gettag() == 0); x++) {
  403.         book[x].disp();
  404.     }
  405. }

  406. BDatabase::~BDatabase()//析构函数,将book[]写入book .txt文件中
  407. {
  408.     fstream file("d:\\book.txt", ios::out);
  409.     for (int i = 0; i <= top; i++) {
  410.         if (book[i].gettag() == 0) {
  411.             file.write((char*)& book[i], sizeof(book[i]));
  412.         }
  413.     }
  414.     file.close();
  415. }


  416. class Rdatebase //读者库类
  417. {
  418.     int top;
  419.     Reader read[Maxbor];//读者记录
  420. public:
  421.     Rdatebase();
  422.     void disp();
  423.     void clear();
  424.     void addreader(int n, char* na, char* mi);
  425.     Reader* query(int readerid);
  426.     ~Rdatebase();
  427.     void readerdata();
  428. };

  429. Rdatebase::Rdatebase()//构造函数,将reader.txt读到read[]中
  430. {
  431.     Reader s;
  432.     top = -1;
  433.     fstream file("d:\\reader.txt", ios::in);

  434.     for (;;) {
  435.         file.read((char*)& s, sizeof(s));
  436.         if (!file) {
  437.             break;
  438.         }
  439.         top++;
  440.         read[top] = s;
  441.     }

  442.     file.close();

  443. }

  444. void Rdatebase::disp() {
  445.     for (int i = 0; i <= top; i++) {
  446.         if (read[i].gettag() == 0) {
  447.             read[i].disp();
  448.         }
  449.     }
  450. }

  451. void Rdatebase::clear()
  452. {
  453.     top = -1;
  454. }

  455. void Rdatebase::addreader(int n, char* na, char* mi)
  456. {
  457.     top++;
  458.     read[top].addreader(n, na, mi);
  459. }

  460. Reader* Rdatebase::query(int readerid)
  461. {
  462.     for (int i = 0; i <= top; i++) {
  463.         if (read[i].getnum() == readerid && read[i].gettag() == 0) {
  464.             return &read[i];
  465.         }
  466.     }
  467.     return NULL;
  468. }

  469. Rdatebase::~Rdatebase()//析构函数,将read[]写入read.txt文件中
  470. {
  471.     fstream file("d:\\reader.txt", ios::out);
  472.     for (int i = 0; i <= top; i++) {
  473.         if (read[i].gettag() == 0) {
  474.             file.write((char*)& read[i], sizeof(read[i]));
  475.         }
  476.     }
  477.     file.close();
  478. }

  479. void Rdatebase::readerdata()//读者库维护
  480. {
  481.     int choice;
  482.     char rname[20];
  483.     int readerid;
  484.     char rmima[6];
  485.     Reader* r;

  486.     while (choice)
  487.     {
  488.         cout << "--------------------------------------" << endl;
  489.         cout << "--           读者维护               --" << endl;
  490.         cout << "--            1、新增               --" << endl;
  491.         cout << "--            2、更改               --" << endl;
  492.         cout << "--            3、删除               --" << endl;
  493.         cout << "--            4、查找               --" << endl;
  494.         cout << "--            5、显示               --" << endl;
  495.         cout << "--            6、全删               --" << endl;
  496.         cout << "--            0.退出                --" << endl;
  497.         cout << "--------------------------------------" << endl;
  498.         cout << "请选择" << endl;
  499.         cin >> choice;
  500.         int a = 0;
  501.         int i = 0;

  502.         switch (choice)
  503.         {
  504.             case 0:
  505.                 system("cls");
  506.                 break;

  507.             case 1:
  508.                 cout << "读者编号:";
  509.                 cin >> readerid;
  510.                 do
  511.                 {
  512.                     if (a != 0)
  513.                     {
  514.                         cout << "已存在,请重新输入:";
  515.                         cin >> readerid;
  516.                     }
  517.                     a++;
  518.                 } while (query(readerid) != NULL);
  519.                 cout << "输入读者密码:";
  520.                 for (i; i < 6; i++)
  521.                 {
  522.                     rmima[i] = getch();
  523.                     putch('-');
  524.                 }
  525.                 cout << endl << "输入读者姓名:";
  526.                 cin >> rname;
  527.                 cout << "添加成功" << endl;
  528.                 addreader(readerid, rname, rmima);
  529.                 Sleep(1000);
  530.                 system("cls");
  531.                 break;

  532.             case 2:
  533.                 cout << "读者编号:";
  534.                 cin >> readerid;
  535.                 r = query(readerid);
  536.                 if (r == NULL)
  537.                 {
  538.                     cout << "该读者不存在" << endl;
  539.                     Sleep(1000);
  540.                     system("cls");
  541.                     break;
  542.                 }
  543.                 cout << "输入新的读者姓名:";
  544.                 cin >> rname;
  545.                 cout << "读者更改成功" << endl;
  546.                 Sleep(1000);
  547.                 system("cls");
  548.                 r->setname(rname);
  549.                 break;

  550.             case 3:
  551.                 cout << "读者编号:";
  552.                 cin >> readerid;
  553.                 r = query(readerid);
  554.                 if (r == NULL)
  555.                 {
  556.                     cout << "该读者不存在" << endl;
  557.                     Sleep(1000);
  558.                     system("cls");
  559.                     break;
  560.                 }
  561.                 cout << "读者删除成功" << endl;
  562.                 Sleep(1000);
  563.                 system("cls");
  564.                 r->delreader();
  565.                 break;

  566.             case 4:
  567.                 cout << "读入读者编号:";
  568.                 cin >> readerid;
  569.                 r = query(readerid);
  570.                 if (r == NULL)
  571.                 {
  572.                     cout << "该读者不存在" << endl;
  573.                     Sleep(1000);
  574.                     system("cls");
  575.                     break;
  576.                 }
  577.                 system("cls");
  578.                 cout << "您所查找的读者信息如下" << endl;
  579.                 r->disp();
  580.                 break;

  581.             case 5:
  582.                 system("cls");
  583.                 cout << "所有读者信息如下" << endl;
  584.                 disp();
  585.                 break;

  586.             case 6:
  587.                 clear();
  588.                 cout << "所有读者已删除" << endl;
  589.                 Sleep(1000);
  590.                 system("cls");
  591.                 break;
  592.         }
  593.     }
  594. }

  595. int main()
  596. {
  597.         return 0;
  598. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
11 
发表于 2020-6-29 09:53:48 | 显示全部楼层
白砂糖 发表于 2020-6-27 23:14
159        7        C:%users\DELL\Documents\代码C\实验报告.cpp        [Error] stray '\243' in progra ...

就只有类定义,没有主函数,没法正确运行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-7-1 10:45:08 | 显示全部楼层
jhanker 发表于 2020-6-29 09:43
下面代码编译通过了,加了main函数

为什么不能在64位操作系统上运行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
11 
发表于 2020-7-1 10:53:12 | 显示全部楼层
libentaoi 发表于 2020-7-1 10:45
为什么不能在64位操作系统上运行啊

我试了可以啊,我的系统就是window7 64位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2020-7-9 17:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表