图书管理系统

/***************************************************
*************广东海洋大学图书管理系统***************
***************************************************/

#include<iostream>
#include<string>
#include<iomanip.h>
class book                             // book(书)类
{ 
  private:
   static int n;                         //静态成员
   char number[15];                     //书的编号
   char name[30];                       // 书的名字
   char author[20];                     //书的作者
   char fenlei[15];                     //书的种类
   char language[15];                   // 书的语言   
   char zhuangtai[5];                   //书的状态

 public:
  book();                                                             //构造函数
  book(char a[],char b[],char c[],char d[],char e[],char f[]);         //构造函数
 void setbook();                                                      //设置输入函数
 void outcom();                                                       //输出函数
 friend class arry;                                                   //有元类
};

class arry                              //arry类
{
 private:
  book *a;                             //子成员
  int len;                             //长度
public:
 arry(int s){len=s;a=new book[len];book::book(); }     
 ~arry(){ delete []a;}                                 //析构函数
 void add();        //添加函数
 void del();        //删除函数
 void find();       //查找函数
 void modify();     //修改函数
 void sort();       //排序函数
 void Count();      //统计函数
 void get();        //借书函数
 void back();       //还书函数
 void print();      //显示函数
 int menu();        //菜单函数
};

int book::n=0;
book::book()                                                   //构造函数                              
{  strcpy(number,"-");strcpy(name,"-");
   strcpy(author,"-");strcpy(fenlei,"-");
   strcpy(language,"-");strcpy(zhuangtai,"-");}

book::book(char a[],char b[],char c[],char d[],char e[],char f[])          //构造函数
{ strcpy(number,a);strcpy(name,b);
  strcpy(author,c);strcpy(fenlei,d);
  strcpy(language,e);strcpy(zhuangtai,f);
 n++;}

void book::setbook()                         //设置输入函数
{ cout<<"请输入书籍数据"<<endl;
  cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(10)
   <<"语言"<<setw(10)<<"状态"<<endl;
  cin>>ws>>number>>name>>author>>fenlei>>language>>zhuangtai;cout<<endl;
 n++;}

void book::outcom()                          //输出函数
{ if(strlen(number)!=0)
cout<<number<<setw(21)<<name<<setw(16)<<author<<setw(14)<<fenlei<<setw(13)<<language<<setw(11)<<zhuangtai<<endl;
}

void arry::add()                             //添加函数
{ if(book::n!=0)
{
 for(int i=book::n-1;i<len;i++)
{
 a[i+1].book::setbook();
 cout<<"还要继续添加吗?确定(y)/取消(n):";
   char c;
   cin>>c;
   if(c=='y'||c=='Y') continue;
   else if(c=='n'||c=='N')  {  cout<<"退出添加!"<<endl; return; }
   else {  cout<<"选者错误,默认退出添加!"<<endl;
   return;  } 
}
}
 else 
 {
  for(int i=0;i<len;i++)
{
 a[i].book::setbook();
 cout<<"还要继续添加吗?确定(y)/取消(n):";
   char c;
   cin>>c;
   if(c=='y'||c=='Y') continue;
   else if(c=='n'||c=='N')  {  cout<<"退出添加!"<<endl; return; }
   else {  cout<<"选者错误,默认退出添加!"<<endl;
   return;  } 
 } 
} 
}  

void arry::del()                             //删除函数
{ 
  cout<<"请选择删除方式(路径)"<<endl;
  cout<<"1.按编号删除"<<endl;
  cout<<"2.按书名删除"<<endl;
  cout<<"请输入你选择方式的编号:";
  int i,j,k;
  char c;
  cin>>k;

  if (k==1)
  {  char n[15];
   cout<<" 请输入编号:";
    cin>>n;
 { for( i=0;i<book::n;i++)
 if(!strcmp(a[i].number,n))
 { 
  j=i;
  cout<<"将要删除的信息:"<<endl;
  cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
   <<"语言"<<setw(10)<<"状态"<<endl;
 a[j].book::outcom();
 cout<<"确定要删除吗?确定(y)/取消(n)";
 cin>>c;

 if(c=='y'||c=='Y')
 {for( i=j;i<book::n-1;i++)
       a[i]=a[i+1];
 cout<<"已删除该信息:"<<endl;
         book::n--;return;
 }

 else if(c=='n'||c=='N')
 {
  cout<<"取消删除 !"<<endl;
     return;  } 

 else {  cout<<"选择错误,默认退出!"<<endl;
    return;   }
 }
 }
    cout<<"你要删除的内容不存在!"<<endl;return;
  
  }

if (k==2)
  { 
 char m[40];
    cout<<" 请输入书名:";
    cin>>m;
 {
  for( i=0;i<book::n;i++)
      if(!strcmp(a[i].name,m))
 {
  j=i;
        cout<<"将要删除的信息:"<<endl;
     cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
   <<"语言"<<setw(10)<<"状态"<<endl;
      a[j].book::outcom(); 
         cout<<"确定要删除吗?确定(y)/取消(n)";
      cin>>c;
   if(c=='y'||c=='Y')
 {
  for( i=j;i<book::n-1;i++)
          a[i]=a[i+1];
          cout<<"已删除该信息"<<endl;
                 book::n--;return;
   }

 else if(c=='n'||c=='N')
 {
  cout<<"取消删除 !"<<endl;
           return;
 }
 else {
      cout<<"选择错误,默认退出!"<<endl;return;}
   }
 }

        cout<<"你要删除的内容不存在!"<<endl;return;  
}
}

void arry::find()                     
{
 cout<<"请选择查找方式"<<endl;
 cout<<"   1.按编号查找"<<endl;
 cout<<"   2.按书名查找加作者查找"<<endl;
 cout<<"  请输入方式: ";
 int i,j ,k;
 cin>>k;

 if(k==1)
 { char n[15];
   cout<<" 请输入编号: ";
    cin>>n;
    for(i=0;i<book::n;i++)
     if(!strcmp(a[i].number,n))
   { 
   j=i;
         cout<<"你要查找的书信息:"<<endl;
         cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
            <<"语言"<<setw(10)<<"状态"<<endl;
          a[j].book::outcom();
    return;
  }
        else {  cout<<"馆内未藏此书!"<<endl;break;  }
 }

   else if(k==2)
 { 
    char n[40];char m[20];
    cout<<"请输入书名和作者:";
    cin>>n>>m;
        for(i=0;i<book::n;i++)
       if(!strcmp(a[i].name,n)&&!strcmp(a[i].author,m))
   { 
     j=i;
             cout<<"你要查找的书信息:"<<endl;
              cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
                 <<"语言"<<setw(10)<<"状态"<<endl;
                 a[j].book::outcom();
    return;
    }
    else {  cout<<"馆内未藏此书!"<<endl;return;  }
   }

}

void arry::modify()                        //修改函数
{
    cout<<" 请选择修改的方式 "<<endl;
    cout<<"1.按编号修改方式:"<<endl;
    cout<<"2.按书名修改方式:"<<endl;
    cout<<"3.按作者修改方式:"<<endl;
    cout<<"4.按分类修改方式:"<<endl;
    cout<<"5.按语言修改方式:"<<endl;
    cout<<"6.按状态修改方式:"<<endl;
    cout<<" 请输入方式 :";
 int k,i,j;
   char A[15];
   char b[50];
   char c[20];
   char d[15];
   char e[10];
   char f[5];
   cin>>k;
   if(k==1)
   {
    cout<<"请输入编号:";
       cin>>A;  }

   else if(k==2)
   { cout<<"请输入书名:";
        cin>>b;  }
   
  else if(k==3)
  {  cout<<"请输入作者名:";
      cin>>c;  }

 else if(k==4)
   { 
  cout<<"请输入分类名:";
 cin>>d; }

 else if(k==5)
   { cout<<"请输入语言(中文、英文或其他)名:";
    cin>>e;   }

 else if(k==6)
 {   cout<<"请输入状态(借出(n)/未借出(y):";
       cin>>f;   }
 
 else {    cout<<"输入错误,默认退出修改!"<<endl;
        return;   }

 for(i=0;i<book::n;i++)
  if(!strcmp(a[i].number,A)||!strcmp(a[i].name,b)||!strcmp(a[i].author,c)||!strcmp(a[i].fenlei,d)||!strcmp(a[i].language,e)||!strcmp(a[i].zhuangtai,f))
  {
   j=i;
      cout<<"你将要修改的信息:"<<endl;
   cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
      <<"语言"<<setw(10)<<"状态"<<endl;
           
             a[j].book::outcom();
             cout<<"确定是否真的要修改?确定(y)/取消(n):"<<endl;
         char c;
        cin>>c;
   if(c=='y')
   {  a[j].book::setbook();
        book::n--; return;  }
   else if(c=='n') {cout<<"取消修改"<<endl;return;}
  }
   else cout<<"你要修改的内容不存在!"<<endl;
}

void arry::sort()                         
{  
 cout<<"请选择排序方式"<<endl;
 cout<<"1.按编号排序"<<endl;
 cout<<"2.按书名排序"<<endl;
 cout<<"3.按作者排序"<<endl;
 cout<<" 输入方式:";
 int k;
 int i,j;
 book  s;
 cin>>k; 
 if(book::n>1)
 {
   if(k==1)
    for( i=0;i<book::n-1;i++)
    {
     for (j=0;j<book::n-1-i;j++)
          if(strcmp(a[j].number,a[j+1].number)>0)
  {  s=a[j];a[j]=a[j+1];a[j+1]=s;  }
    }

else  if(k==2)
    for( i=0;i<book::n-1;i++)
    {
     for (j=0;j<book::n-1-i;j++)
          if( strcmp(a[j].name,a[j+i].name)>0) 
    
  {  s=a[j];a[j]=a[j+1];a[j+1]=s;  }
    }

   else if(k==3)
    for( i=0;i<book::n-1;i++)
    {
     for (j=0;j<book::n-1-i;j++)
            if(strcmp(a[j].author,a[j+1].author)>0)
      {  s=a[j];a[j]=a[j+1];a[j+1]=s; }
    }
    else cout<<"选择错误,默认退出排序!"<<endl; }
 else if(book::n==0)
  cout<<"无法比较!"<<endl;
 else if(book::n==1) ; 
}

void arry::Count()                        //借书函数
{ 
 cout<<"馆内目前藏书:"<<book::n<<"册"<<endl;
}

void arry::get()
{ 
 char s[40];
    int i;
    cout<<"请输入你要借的书名"<<endl;
     cin>>s;
  { for(i=0;i<book::n;i++)
  if(!strcmp(a[i].name,s)&&(strcmp(a[i].zhuangtai ,"y")==0||strcmp(a[i].zhuangtai,"Y")==0))
  {   
    cout<<"你要借书的信息:"<<endl;
    cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
   <<"语言"<<setw(10)<<"状态"<<endl;
          a[i].book::outcom();
      cout<<"可借阅,是否借阅? 确定(y)/取消(n),请输入:"<<endl;
      char c;
      cin>>c;
   if(c=='y')
   { strcpy(a[i].zhuangtai,"n");
   return;  }

else {
   cout<<"取消借阅!"<<endl;return;
  }
   }
  else if(!strcmp(a[i].name,s)&&(strcmp(a[i].zhuangtai ,"n")==0||strcmp(a[i].zhuangtai,"n")==0))
  {
   cout<<"此书已借出"<<endl;return;
  }
  }
   cout<<"馆内未藏此书!"<<endl;
}

void arry::back()                      //还书函数
{ 
 char n[15];
     int i;
     cout<<"请输入你要还书的编码:";
       cin>>n;
    {  for(i=0;i<book::n;i++)
     if(!strcmp(a[i].number,n)&&strcmp(a[i].zhuangtai ,"y")!=0)
  {    cout<<"你要还书的信息:"<<endl;
            cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
   <<"语言"<<setw(10)<<"状态"<<endl;
         a[i].book::outcom();
        cout<<" 是否确认还书 :确定(y)/否(n)"<<endl;
     char c;
       cin>>c;
  if(c=='y')
  {  strcpy(a[i].zhuangtai,"y");
      cout<<"还书成功"<<endl;
   return;  }

 else if(c=='n')
 {
  cout<<"取消还书"<<endl;
  return;}
 else{ cout<<"输入错误,默认退出!"<<endl;
 return;}
    } 
    }
     cout<<"馆内未藏你要退还的书或此书为借出!"<<endl;
}

void arry::print()                     //显示函数
{      
  cout<<"编号"<<setw(20)<<"书名"<<setw(15)<<"作者"<<setw(15)<<"分类"<<setw(15)
   <<"语言"<<setw(10)<<"状态"<<endl;
 for(int i=0;i<book::n;i++)
  a[i].book::outcom();
}
int arry::menu()                      //菜单函数
{
 int i;
 cout<<" 欢迎进入广东海洋大学图书管理系统 "<<endl;
    cout<<"       1.添加 "<<endl;
    cout<<"       2.删除 "<<endl;
    cout<<"       3.查找 "<<endl;
    cout<<"       4.修改 "<<endl;
    cout<<"       5.排序 "<<endl;
    cout<<"       6.统计 "<<endl;
    cout<<"       7.借书 "<<endl;
    cout<<"       8.还书 "<<endl;
    cout<<"       9.显示 "<<endl;
    cout<<"       10.退出并结束此程序"<<endl;
    cout<<" 请选择 1~10 运行程序:\t ";
 for(;;)
 {  
  cin>>i;
  if(i<1||i>10)
   cout<<"输入错误,请选择 1~10 重新输入 ,谢谢合作 !:"<<endl;
  else break;  }
return i;
}

void main()                          //主函数
{ 
 char c='y';
 int n;
 cout<<"请输入你想建立的藏书数目:\t";
 cin>>n;
   arry a(n);
   while(c=='y'||c=='Y')
   { 
     switch(a.menu())
   { 
        case 1: a.add();break;
        case 2: a.del();break;
        case 3: a.find();break;
        case 4: a.modify();break;
        case 5: a.sort();a.print();break;
        case 6: a.Count();a.print();break;
        case 7: a.get();break;
        case 8: a.back();break;
        case 9: a.print();break;
        case 10: cout<<"退出程序,谢谢使用!"<<endl;
  }
   cout<<"是否继续返回首页?(y/n):";
   cin>>c;
   }
}









  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值