| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1761 人关注过本帖
标题:求助用B-树实现图书管理系统
只看楼主 加入收藏
114061liang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-1-18
收藏
 问题点数:0 回复次数:2 
求助用B-树实现图书管理系统
哪个大侠帮忙
搜索更多相关主题的帖子: 图书管理系统 大侠 
2008-01-18 16:32
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
#include <iostream>
#include <fstream>
#include <stdio.h>      
#include <conio.h>
#define filename "F:\\book.dat"
#define student "F:\\student.dat"

using namespace std;
class Book
{ private:
          char booknum[5];
         //   int booknum;
           char bookname[41];
           char author[21];
           char id[16];
           char state[10];
           char bookkind[26];
  public:int book1num;
         Book()
         {
               //strcpy(booknum,"");
               strcpy(bookname,"null");
               strcpy(author,"null");
               strcpy(id,"null");
               strcpy(state,"null");
               strcpy(bookkind,"null");
         }
         void setbookinfo()
         {  cin.ignore();
            cout<<"请输入书名:"<<endl;
            cin.getline(bookname,40);
            
        //     if(strlen(bookname)>40)
        //    {
         //      cout<<"太长,前40字符个有效\n";
          //     bookname[40]='\0';
         //   }
            cout<<"请输入书号:"<<endl;
            cin.getline(id,25);
            
        //     if(strlen(id)>15)
         //   {
           //    cout<<"太长,前15字符个有效\n";
           //    id[15]='\0';
          //  }
            cout<<"请输入书的作者:"<<endl;
            cin.getline(author,20);
            
         //    if(strlen(author)>20)
         //   {
           //    cout<<"太长,前20字符个有效\n";
          //     author[20]='\0';
         //   }
            cout<<"请输入书的数量:"<<endl;
            cin>>book1num;//zj
            
          //   if(strlen(booknum)>2)
          //  {
          //     cout<<"太长,前2字符个有效\n";
           //    booknum[2]='\0';
           // }
           cin.clear();
           cin.ignore();
            cout<<"请输入书的种类:"<<endl;
            cin.getline(bookkind,20);
          //    if(strlen(bookkind)>25)
         //   {
          //     cout<<"太长,前25字符个有效\n";
          //     bookkind[25]='\0';
         //   }
            cout<<"请输入书的状态:(在馆/借出)"<<endl;
            cin.getline(state,10);
            // if(strlen(state)>4)
         //   {
           //   cout<<"太长,前4字符个有效\n";
          //     state[4]='\0';
          //  }
         }
         void getbookinfo()
         {  
            cout.width(5);
            cout<<id;  
            cout.width(21);
            cout<<bookname;
            cout.width(15);
            cout<<author;
            cout.width(15);
            cout<<bookkind;
            cout.width(5);
            cout<<book1num; //zj
            cout.width(5);
            cout<<state<<endl;
            
            
          }
            
          char *getid()
           {return id;}
           char *getbookname()
           {return bookname;}
           char *getkind()
           {return bookkind;}
           char *getauthor()
           {return author;}
           char *getstate()
           {return state;}
           
          // char *getnum()
           //{return book1num;}  
           
};
class user
{  
   private:
           char studentid[15];
           char name[21];
           char age[5];
           char phonenum[15];
           char cclass[10];
           char password[21];
   public:
          void setdetail()
          {  
             cout<<"请输入学号:";
             cin.getline(studentid,24);
              if(strlen(studentid)>14)
            {
               cout<<"太长,前14字符个有效\n";
               studentid[14]='\0';
            }
             cout<<"请输入用户名:";
             cin.getline(name,31);
               if(strlen(name)>20)
            {
               cout<<"太长,前20字符个有效\n";
               name[20]='\0';
            }
             cout<<"请输入年龄:";
             cin.getline(age,10);
               if(strlen(age)>4)
            {
               cout<<"太长,前4字符个有效\n";
               age[4]='\0';
            }
             cout<<"请输入联系电话:";
             cin.getline(phonenum,34);
              if(strlen(phonenum)>14)
            {
               cout<<"太长,前20字符个有效\n";
               phonenum[14]='\0';
            }
             cout<<"请输入班级:";
             cin.getline(cclass,19);
             if(strlen(cclass)>9)
            {
               cout<<"太长,前9字符个有效\n";
              cclass[9]='\0';
            }
             cout<<"请输入密码:";
             cin.getline(password,31);
              if(strlen(password)>20)
            {
               cout<<"太长,前20字符个有效\n";
              password[20]='\0';
            }
             cin.clear();
             cin.ignore();  
          }   
          void getdetail()
          {   cout.width(17);
              cout<<"学号";
              cout.width(17);                                   
              cout<<studentid;
              cout.width(21);
              cout<<"用户名";
              cout.width(21);
              cout<<name;
              cout.width(10);
              cout<<"年龄"<<endl;
              cout.width(10);
              cout<<age<<endl;
              cout.width(17);
              cout<<"联系电话";
              cout.width(17);
              cout<<phonenum;
              cout.width(21);
              cout<<"班级";
              cout.width(21);
              cout<<cclass;
              cout.width(10);
              cout<<"密码";
              cout.width(10);
              cout<<password<<endl;
          }
        void setuserinfo()//zj
        {  
          // char n[21];char p[21];
           cout<<"\n\n\t\t请输入您的用户名:    ";  
           cin.getline(name,30);
           if(strlen(name)>20)
            {
               cout<<"太长,前20字符个有效\n";
               name[20]='\0';
            }
           cout<<"  \n\n\t\t 请输入您的密码:     ";
           int i;      
           for(i=0; i <29; i++)      
           {   
        
             password[i]=getch();
            
             if((int)password[i]==13) break;
             putchar('*');
           }
           password[i]='\0';cout<<endl;
           //cin.getline(password,30);
            if(strlen(password)>20)
            {
               cout<<"太长,前20字符个有效\n";
               password[20]='\0';
            }
        }
        void getuseinfo()
        {  
           cout.width(21);
           cout<<name;
           cout.width(21);
           cout<<password;  
        }     
       char *id()
        { return studentid;  }
        char *username()
        {return name;}
        char *studentage()
        {return age;}
        char *studentphonenum()
        {return phonenum;}
        char  *studentpwd()
        {return password;}   
};   
class nomaluser
{  private:
           Book book1;//zj
           user user1;
   public:
          void displaybook()           //显示所有图书的信息
          {
           fstream file(filename,ios::in|ios::binary);
             if(!file)
             {
             cout<<"打开失败!!!"<<endl;
             return;         
             }
             cout.width(7);
             cout<<"书号";
             cout.width(21);
             cout<<"书名";
             cout.width(15);
             cout<<"作者";
             cout.width(15);
             cout<<"种类";
             cout.width(5);
             cout<<"数量";
             cout.width(5);
             cout<<"状态"<<endl;
             while(file.read((char *)&book1,sizeof(book1)))
             {  
               book1.getbookinfo();                  
             }                     
             file.close();
             system("pause");
             system("cls");
             return;
           }                  
          void findbook()                //查找图书
          {   
            bool c = false;
           char bookName1[20];
           
          cout<<endl;
         cout<<"输入你要查找的书名     :";
         cin.ignore();
         cin>>bookName1;
        fstream file(filename,ios::binary|ios::in);   
          while(file.read((char*)&book1,sizeof(book1)))
        {  
         if(strcmp(book1.getbookname(),bookName1)==0)
            {
          c=true;
         
          cout<<endl;
          book1.getbookinfo();  
         
             system("pause");
             system("cls");
         }   
            
           }
           file.close();   
           if(!c)
          cout<<"对不起,查无此书!!"<<endl;
          system("pause");
          system("cls");
          return;     
          }
         void madifyuserinfo()             //修改图书信息
         {            
               
          bool a=false;
          user user2;
          cin.ignore();cin.clear();
          user2.setuserinfo();
          system("cls");
         fstream file(student,ios::binary|ios::in|ios::out);
         if(!file)
              {
               cout<<"文件打开失败!!"<<endl;
               return;        
              }  
         while(file.read((char*)&user1,sizeof(user1)))
        {
                                                  
        if(strcmp(user1.username(),user2.username())==0&&strcmp(user1.studentpwd(),user2.studentpwd())==0)
             {  
                 int pos = file.tellg();
                 a=true;
                 cout<<"                ***************您原来的信息如下***************   "<<endl;
                 /*cout.width(7);
                 cout<<"书号";
                 cout.width(21);
                 cout<<"书名";
                 cout.width(15);
                 cout<<"作者";
                 cout.width(15);
                 cout<<"种类";
                 cout.width(5);
                 cout<<"数量";
                 cout.width(5);
                 cout<<"状态"<<endl;*/
                 user1.getdetail();
                 cout<<endl;
                 cout<<"请重新输入您的信息:   "<<endl;
                 //cin.ignore();
                 cin.clear();
                 user1.setdetail();
                 cout<<"         修改成功"<<endl;
                 system("pause");
                 system("cls");
                 file.seekg(pos-sizeof(user1),ios::beg);
                 file.write((char *)&user1,sizeof(user1));
                 file.close();
                 break;
               }
            }   
          }
          void displayuserinfo()               //显示本人用户信息
          {
               user1.getdetail();
               
          }
          void givebackbook()                   //还书
          {    char sISBN1[16];   
               bool b = false;
           cout<<" 请输入所还书的书籍号";
              cin.ignore();
               cin>>sISBN1;
            
               fstream file(filename,ios::binary|ios::in);   
              while(file.read((char*)&book1,sizeof(book1)))
             {   
                if(strcmp(book1.getid(),sISBN1)==0)
              {
             b = true;
              
            book1.book1num++;
            if (book1.book1num>0)
            strcpy(book1.getstate(),"在馆");
            
            system("pause");               
              system("cls");  
            }
            }cout<<"还书成功"<<endl;
           if(!b)
            {
                cout<<"输入了没有的书籍号"<<endl;
      
              system("pause");               
           system("cls");  
               }
               
           }
        void lendbook()                     //借书
          {   
       bool a = false;
       char bookName1[20];
      
       cout<<"请 输 入 你 要 借 阅 的 书 名   :";
       cin.ignore();
       cin>>bookName1;
     fstream file(filename,ios::binary|ios::in|ios::out);  
     while(file.read((char*)&book1,sizeof(book1)))
    {  
       if(strcmp(book1.getbookname(),bookName1)==0)
       {  
         
            
      cout<<book1.book1num<<endl;
       book1.book1num--;
        if (book1.book1num==0)
       { strcpy(book1.getstate(),"借出");
         
       }
       if (book1.book1num<0)//zj
         break;//zj
        a = true;//zj
        cout<<"                借书成功    "<<endl;
        int pos=(-1)*sizeof(book1);
        file.seekp(pos,ios::cur);//zj
        file.write((char *)&book1,sizeof(book1));
        file.close();
           cout<<"*************书籍的信息**********"<<endl;
           cout<<endl;
           book1.getbookinfo();
         
       system("pause");               
       system("cls");  
       break;
       }
            
    }
      if(!a)
      {
        cout<<"此书已借出或还未入库"<<endl;            
        system("pause");               
        system("cls");
      }
               
                 
    }  
};         
class adminstrator
{  
   private:
            user user2;
            Book book2;
    public:
         void displaybook()                //显示图书信息
           {  
           fstream file(filename,ios::in|ios::binary);
             if(!file)
             {
             cout<<"打开失败!!!"<<endl;
             return;         
             }
             cout.width(7);
             cout<<"书号";
             cout.width(21);
             cout<<"书名";
             cout.width(15);
             cout<<"作者";
             cout.width(15);
             cout<<"种类";
             cout.width(5);
             cout<<"数量";
             cout.width(5);
             cout<<"状态"<<endl;
             while(file.read((char *)&book2,sizeof(book2)))
             {  
               book2.getbookinfo();
                              
             }                     
             file.close();
             system("pause");
             system("cls");
             return;
           }               
         void addbook()                    //增加图书
           {  
             ofstream file(filename,ios::out|ios::app|ios::binary);
              if(!file)
              {
               cout<<"文件打开失败!!"<<endl;
               return;        
              }
             book2.setbookinfo();
             file.write((char *)&book2,sizeof(book2));
             file.close();
             system("pause");
             system("cls");
             return ;
           }
         void deletebook()                //删除图书
           {   
               
               
           }
         void madifybook()                 //修改图书信息
          {         
          bool a=false;
          char id1[16];
          cout<<"请输入要修改的书的编号    :";
          fflush(stdin);
          cin>>id1;
          system("cls");
         fstream file(filename,ios::binary|ios::in|ios::out);
         if(!file)
              {
               cout<<"文件打开失败!!"<<endl;
               return;        
              }  
         while(file.read((char*)&book2,sizeof(book2)))
        {
                                                  
             if(strcmp(book2.getid(),id1)==0)
             {  
                 int pos = file.tellg();
                 a=true;
                 cout<<"                ***************原来的书籍信息***************   "<<endl;
                 cout.width(7);
                 cout<<"书号";
                 cout.width(21);
                 cout<<"书名";
                 cout.width(15);
                 cout<<"作者";
                 cout.width(15);
                 cout<<"种类";
                 cout.width(5);
                 cout<<"数量";
                 cout.width(5);
                 cout<<"状态"<<endl;
                 book2.getbookinfo();
                 cout<<endl;
                 cout<<"请重新输入图书信息:   "<<endl;
                 book2.setbookinfo();
                 cout<<"         修改成功"<<endl;
                 system("pause");
                 system("cls");
                 file.seekg(pos-sizeof(book2),ios::beg);
                 file.write((char *)&book2,sizeof(book2));
                 file.close();
                 break;
                }   
     
            
              }
            }
           
           void deleteuser()                      //删除用户
           {
               
               
           }
           void displayuser()                     //显示所有用户
           {  
            fstream file(student,ios::in|ios::binary);
            if(!file)
            {  
               cout<<"文件打开失败!!"<<endl;
               return;      
            }
            
            while(file.read((char *)&user2,sizeof(user2)))
            {
               user2.getdetail();                     
            }                     
            file.close();
            return;
          }
         void findbook()                          //查找图书
          {   
            bool c = false;
           char bookName1[20];
           
          cout<<endl;
         cout<<"输入你要查询的书名     :";
         cin.ignore();
         cin>>bookName1;
        fstream file(filename,ios::binary|ios::in);   
          while(file.read((char*)&book2,sizeof(book2)))
        {  
         if(strcmp(book2.getbookname(),bookName1)==0)
            {
          c=true;
         
          cout<<endl;
          cout.width(7);
          cout<<"书号";
          cout.width(21);
          cout<<"书名";
          cout.width(15);
          cout<<"作者";
          cout.width(15);
          cout<<"种类";
          cout.width(5);
          cout<<"数量";
          cout.width(5);
          cout<<"状态"<<endl;
          book2.getbookinfo();  
          system("pause");
          system("cls");
         }   
            
           }   
           if(!c)
          cout<<"对不起,查无此书!!"<<endl;      
          }
};      
class usermanager
{  
   private:user user3;
           adminstrator book3;
           nomaluser book4;
   public:
          void register1()                        //注册
          {  fstream file(student,ios::out|ios::app|ios::binary);
              if(!file)
              {
              cout<<"打开文件失败!!"<<endl;
               return;
               }
             cin.ignore();//zj
             cin.clear();//zj
             user3.setdetail();
             file.write((char*)&user3,sizeof(user3));
             file.close();
             return;
          }  
          void login()                              //登陆
          {
                fstream file(student,ios::in|ios::binary);//zj
              if(!file)
              {
                        cout<<"文件打开失败!!!!"<<endl;
                        return;
              }
              
              cin.clear();//zj
              cin.ignore();//zj
       repit: user user4;//zj
              user4.setuserinfo();
              bool right=false;
            //  file.write((char*)&user1,sizeof(user1));
              // file.close();
               while(file.read((char *)&user3,sizeof(user3)))
              {  
                      if(strcmp(user3.username(),user4.username())==0&&strcmp(user3.studentpwd(),user4.studentpwd())==0)//zj
                      {     right=true;
                            //cout<<"光临!!"<<endl;                                                     
                          if(strcmp(user4.username(),"zj")==0&&strcmp(user4.studentpwd(),"123")==0)
                            {   
                                  cout<<"\n\n\t\t\t∵   恭喜!   ∵ \n\n\t\t\t登录成功! !  \n\n\n"<<endl;
                                  cout<<"欢迎管理员进入!!"<<endl;
                                  _sleep(3000);
                                  system("cls");
                                  bool bIsContinue=true;
                                  char choice;
                                  while(bIsContinue)
                                  {
                                  cout<<"1.查找图书"<<endl;
                                  cout<<"2.增加图书"<<endl;
                                  cout<<"3.修改图书"<<endl;
                                  cout<<"4.删除图书"<<endl;
                                  cout<<"5.显示所有图书信息"<<endl;
                                  cout<<"6.删除用户"<<endl;
                                  cout<<"7.显示所有用户信息"<<endl;
                                  cout<<"8.退出"<<endl;
                                  cin>>choice;
                                  switch(choice)
                                  {   
                                      case '1':
                                                book3.findbook();
                                                break;
                                                
                                      case '2':  
                                                book3.addbook();
                                               break;
                                      case '3':
                                              book3.madifybook();
                                                break;
                                      case '4':
                                               book3.deletebook();
                                               break;
                                      case '5':
                                                book3.displaybook();
                                                break;
                                      case '6':
                                                book3.deleteuser();
                                                break;
                                      case '7':
                                                book3.displayuser();
                                                break;
                                      case '8':
                                             bIsContinue=false;
                                             break;
                                      default:
                                              cout<<"您的输入有误,请重新输入"<<endl;                           
                                  }   //zj
                                 
                                     }                             
                               }
                          else
                          {   cout<<"\n\n\t\t\t∵   恭喜!   ∵ \n\n\t\t\t登录成功! !  \n\n\n"<<endl;
                              cout<<"欢迎光临!!"<<endl;
                               _sleep(1000);
                               system("cls");
                                   char choice1='1';
                                  while(choice1)
                                  {
                                  cout<<"1.显示所有图书信息"<<endl;
                                  cout<<"2.查找图书"<<endl;
                                  cout<<"3.借书图书"<<endl;
                                  cout<<"4.还书图书"<<endl;
                                  cout<<"5.修改用户信息"<<endl;
                                  cout<<"6.显示用户信息"<<endl;
                                  cout<<"7.退出"<<endl;
                                  cin>>choice1;
                                  switch(choice1)
                                  {   
                                      case '1':
                                                book4.displaybook();
                                                break;
                                      case '2':
                                               book4.findbook();
                                               break;
                                      case '3':
                                               book4.lendbook();
                                               break;
                                      case '4':
                                                book4.givebackbook();
                                                break;
                                      case '5':
                                                book4.madifyuserinfo();
                                                break;
                                      case '6':
                                                book4.displayuserinfo();
                                                break;
                                      case '7':exit(0);
                                      default:
                                              cout<<"您的输入有误,请重新输入"<<endl;
                                      }
                                  }//  break;  //zj
                              }
                      }
              }
                                                
                     if(!right)//这里还有些问题你自己解决
                      {
                         cout<<user3.username()<<endl;
                         cout<<user4.username()<<endl;
                        // cout<<user1.studentpwd()<<endl;
                          cout<<"\n\t对不起!!您输入的用户名或密码错误!\n\t请重新输入!!\n";
                      }
                          
                                                               
              
              
              
               
             file.close();  
              return;
          }
};
int main()
{
     system("color d");
  
     system("cls");
   char choice; //zj
   usermanager user1;
   
   while(choice!=3)//zj
   {   
      cout<<"1* 新用户注册"<<endl;
      cout<<"                  2* 登陆"<<endl;
      cout<<"                                    3* 退出 "<<endl;
      cout<<"请选择:(1~3)"<<endl;            
           
  cin>>choice;
   switch(choice)
   {  
      case '1':
               user1.register1();
               
               break;
      case '2':
               user1.login();
               
               break;
      case '3':
                return 0;
      default:
              cout<<"您输入错误,请重新输入!!"<<endl;
              break;           
                 
   }
   
   } //zj
   
   
    system("pause");
    return 0;

}

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2008-01-29 16:08
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 
也不知道你用不用的上

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2008-01-29 16:09
快速回复:求助用B-树实现图书管理系统
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019023 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved