首页 > 作文

C++实现图书馆系统

更新时间:2023-04-06 03:24:59 阅读: 评论:0

本文实例为大家分享了c++实现图书馆系统的具体代码,供大家参考,具体内容如下

1.目的

用c++语言实现图书馆系统

2.分析

图书馆系统中要实现的功能有:图书的分类存储,不同身份的人员进行不同的操作。在这个程序中,
我把图书分为两类:小说类和专业书类,这两种类都有相同的功能,所以设一个基类,这两种类分别
继承基类。人员有两类:管理员和学生,这两类有部分相同的私有数据成员,所以设一个人员的基类,
这两种类分别继承基类。在图书类中,小说类和专业书类都要设自己的结构体数组,用来存储书的信
息,同时都要有增加书、删除书、搜索书的功能。管理员类的函数要有增加各类书、浏览全部书的功
能。学生类要有搜索书、借书、还书等功能。

3.代码

// 图书馆系统#include<iostream>#include<string>using namespace std;typedef struct book //结构体定义书的基本信息{  string book_name; //书名  string author;  //作者 string kind; //书的种类}book;class ba //抽象类{public:  ba();  virtual void deposit() = 0; //纯虚函数增加书  virtual void display(string name) = 0; //纯虚函数显示一本书的信息 virtual void display() = 0; //纯虚函数显示书的信息 virtual int isauthor(string a) = 0; //判断是否存在这个作者的书 virtual bool isbookname(string b) = 0; //用书名判断是否存在这本书 virtual void clearbook(string name) = 0;};ba::ba(){}class novel:public ba  //小说类{public: novel(); //构造函数 virtual void deposit(); //增加图书 virtual void display(); //显示图书信息  virtual void display(string name); //显示一本书的信息  virtual int isauthor(string a); //判断是否存在这个作者的书 virtual bool isbookname(string b); //用书名判断是否存在这本书  virtual void clearbook(string name); //删除一本书private: int nove农村养殖啥赚钱lnumber; //目前书的数目  book mynovel[50]; //结构体数组,存放小说类书的信息 book *p; //结构体类型的指针};novel::novel(){ novelnumber = 0; p = mynovel; mynovel[0].author = "1"; mynovel[0].book_name = "1"; mynovel[0].kind = "小说"; novelnumber++; mynovel[1].author = "2"; mynovel[1].book_name = "2"; mynovel[1].kind = "小说"; novelnumber++; for(int i = 2;i < 50;i++)  {    mynovel[i].author = "0";    mynovel[i].book_name = "0";  }  //初始化数组}void novel::clearbook(string name) //删除一本书{  book* t; //结构类型指针  t = mynovel; //指向小说类的数组  while(t->book_name != name) //当书名不符时,指向下一空间  {    t++;  }  if(t->book_name == name) //当找到这本书时,清空  {    t->author = "0";    t->book_name = "0";    novelnumber--; //总数目减一  }}void novel::deposit() //存入小说类的图书{  book* t;  string temp_author;  string temp_book_name;  cout << "请输入图书名称:";  cin >> temp_book_name;  cout << endl << "请输入作者:";  cin >> temp_author; //记录书的信息  t = mynovel;  while(t->author != "0")  {    t++;  } //找空的存储空间  if(t->author == "0")  {    t->author = temp_author;    t->book_na新疆财经大学me = temp_book_name;    t->kind = "小说";    novelnumber++;  } //如果存储空间为空,则存放该书信息}void novel::display() //显示该类书信息{  book* t;  int number = novelnumber;  cout << "小说类的图书有" << novelnumber << "本:" << endl;  t = mynovel;  while(number!=0)  {    if(t->author != "0")    {      cout << "图书名称为:" << t->book_name << endl;;      cout << "作者:" << t->author << endl;      cout << "书的种类为:" << t->kind << endl;      number--;    } //当存储空间有内容时,输出书的信息    t++;  } //显示所有书的信息}void novel::display(string name) //显示这本书的信息{  book* t;  t = mynovel;  while((t->book_name != name) && (t->author != name))  {    t++;  } //书名或者作者不符时指向下一空间  if((t->book_name == name) || (t->author != name))  {    cout << "图书名称为:" << t->book_name << endl;;    cout << "作者:" << t->author << endl;    cout << "书的种类为:" << t->kind << endl;  } //若符合则输出这本书的信息}int novel::isauthor(string a) //用作者判断是否有这本书{  book* t;  t = mynovel;  while(t->author != "0")  {    if(t->author == a)    {      return 1;    } //若有则返回1    t++;  }  return 0; //没有则返回0}bool novel::isbookname(string b)//用书名判断是否有这本书{  book* t;  t = mynovel;  while(t->book_name != "0")  {    if(t->book_name == b)    {      return true;      break;    } //若有则返回true    t++;  }  return fal;//没有则返回fal}class professional:public ba //专业书类{public: professional(); virtual void deposit(); //存入 virtual void display(); //显示图书信息 virtual void display(string name); //显示这本书的信息 virtual int isauthor(string a); //判断是否存在这个作者的书 virtual bool isbookname(string b); //用书名判断是否存在这本书 virtual void clearbook(string name); //删除一本书private: int pronumber; //书的数目 book myprofessional[50]; //结构体数组,存放专业类书的信息 book *p; //结构体类型的指针};professional::professional() //构造函数{ pronumber = 0; p = myprofessional; myprofessional[0].author = "p1"; myprofessional[0].book_name = "p1"; myprofessional[0].kind = "专业书"; pronumber++; myprofessional[1].author = "p2"; myprofessional[1].book_name = "p2"; myprofessional[1].kind = "专业书"; pronumber++; for(int i = 2;i < 50;i++)  {    myprofessional[i].author = "0";    myprofessional[i].book_name = "0";  } //初始化数组}void professional::clearbook(string name)//删除一本书{  book* t;//结构类型指针  t = myprofessional; //指向专业类的数组  while(t->book_name != name)//当书名不符时,指向下一空间  {    t++;  }  if(t->book_name == name)//当找到这本书时,清空  {    t->author = "0";    t->book_name = "0";    pronumber--;//总数目减一  }}void professional::deposit() //存入专业类的图书{  book* t;  string temp_author;  string temp_book_name;  cout << "请输入图书名称:";  cin >> temp_book_name;  cout << endl << "请输入作者:";  cin >> temp_author;  t = myprofessional;  while(t->author != "0")  {    t++;  }  if(t->author == "0")  {    t->author = temp_author;    t->book_name = temp_book_name;    t->kind = "专业书";    pronumber++;  }}void professional::display() //显示该类书信息{  book* t;  int number = pronumber;  cout << "专业类的图书有" << pronumber << "本:" << endl;  t = myprofessional;  while(number!=0)  {    if(t->author != "0")    {      cout << "图书名称为:" << t->book_name << endl;;      cout << "作者:" << t->author << endl;      cout << "书的种类为:" << t->kind << endl;      number--;    } //当存储空间有内容时,输出书的信息    t++;  } //显示所有书的信息}void professional::display(string name) //显示这本书的信息{  book* t;  t = myprofessional;  while((t->book_name != name) && (t->author != name))  {    t++;  }/怎样制作沙画/书名或者作者不符时指向下一空间  if((t->book_name == name) || (t->author == name))  {    cout << "图书名称为:" << t->book_name << endl;;    cout << "作者:" << t->author << endl;    cout << "书的种类为:" << t->kind << endl;  }//若符合则输出这本书的信息}int professional::isauthor(string a)//用作者判断是否有这本书{  book* t;  t = myprofessional;  while(t->author != "0")  {    if(t->author == a)    {      return 1;    }//若有则返回1    t++;  }  return 0;//没有则返回0}bool professional::isbookname(string b)//用书名判断是否有这本书{  book* t;  t = myprofessional;  while(t->book_name != "0")  {    if(t->book_name == b)    {      return true; //若有则返回true    }    t++;  }  return fal;//没有则返回fal}class people //人员类{public:  people();protected:  ba* q; //基类指针 novel novel1; //小说类对象 professional professional1; //专业书类对象};people::people(){}class library:public people  //管理员类{public: library(); void add(); //增加图书 void all();   //浏览全部图书 void display();  //显示功能 void exit(); //退出};library::library(){}void library::add()//增加图书{ int temp; cout << "1.小说 2.专业书 请输入图书种类:" ; cin >> temp; if(1 == temp) {   q = &novel1;  q->deposit(); //增加一本小说类的图书 } el if(2 == temp) {  q = &professional1;  q->deposit();//增加一本专业类的图书 } el  {    cout << "无此操作!" << endl;  } display();}void library::all()//显示全部图书信息{  q=&novel1;  q->display();  q=&professional1;  q->display();  display();}void library::display() //显示功能{  int temp;  cout << "1.增加图书 2.浏览全部图书 3.退出 请选择功能:";  cin >> temp;    switch(temp)    {      ca 1: add();      break;      ca 2: all();      break;      ca 3: exit();      break;      default :      {        cout << "无此操作!" << endl;        display();      }      break;    }}void library::exit() //退出{  cout << "感谢您的使用!" <<endl;}class student:public people{public: student(); void arch_book(); //搜索 void borrow_book(); //借书 void return_book(); //还书 void information(); //显示该账户信息 void display();   //显示功能 void exit();     //退出private: int borrow_number; //已借阅数目 int return_number; //已还图书数目};student::student()   //欢迎界面{  borrow_number = 0;  return_number = 0;}void student::arch_book()//搜索{  int temp;  string temp_author;  string temp_bookname;  string temp_kind;  cout << "1.按作者搜索 2.按书名搜索 3.按种类搜索 请输入:";  cin >> temp;  int f;  switch(temp)  {    ca 1:  //按作者搜索      cout << "请输入作者名:";      cin >> temp_author;      q = &novel1; //从小说类中搜索      f = q->isauthor(temp_author);      if(1 == f)      {        q->display(t例假期间吃什么emp_author); //若存在则显示这本书的信息      }      el      {        cout << "小说类中没有这本书" <<endl;      }      q = &professional1;//从专业类类中搜索      f = q->isauthor(temp_author);      if(1 == f)      {        q->display(temp_author);//若存在则显示这本书的信息      }      el      {        cout << "专业类中没有这本书" <<endl;      }      break;    ca 2:      cout << "请输入书名:";      cin >> temp_bookname;      q = &novel1;//从小说类中搜索      if(q->isbookname(temp_bookname))      {        q->display(temp_bookname);//若存在则显示这本书的信息      }      el      {        cout << "小说类中没有这本书" <<endl;      }      q = &professional1;//从专业类类中搜索      if(q->isbookname(temp_bookname))      {        q->display(temp_bookname);//若存在则显示这本书的信息      }      el      {        cout << "专业类中没有这本书" <<endl;      }      break;    ca 3:      cout << "请输入种类:";      cin >> temp_kind;      if("novel" == temp_kind) //显示小说类的全部书      {        q = &novel1;        q->display();      }      el if("professional" == temp_kind)//显示专业类的全部书      {        q = &professional1;        q->display();      }      el      {        cout << "没有该种类的书" <<endl;      }      break;  }  display();}void student::borrow_book() //借书{  string temp;  int i;  cout << "1.小说类 2.专业书类 请选择书的种类:";  cin >> i;  cout << "请输入书名:" ;  cin >> temp;  if(1 == i)  {    q = &novel1;  }  if(2 == i)  {    q = &professional1;  }  if(q->isbookname(temp)) //如果有这本书则执行下面步骤  {    q->clearbook(temp); //清除这本书    borrow_number++;  //借阅书的数目加一  }  el  {    cout <红莲花;< "没有这本书!" << endl;  }  display();}void student::return_book() //还书{  int i;  cout << "1.小说类 2.专业书类 请选择书的种类:";  cin >> i;  if(1 == i)  {    q = &novel1;  }  el  {    q = &professional1;  }  q->deposit(); //录入这本书的信息  return_number++; //已还书数加一  display();}void student::information() //显示学生借阅信息{  cout << "您已借阅" << borrow_number << "本书" <<endl;  cout << "您已还" << return_number << "本书" <<endl;  display();}void student::exit() //退出{  cout << "感谢您的使用!";}void student::display() //显示功能{  int i;  cout << "1.搜索图书 2.借书 3.还书 4.查询账户信息 5.退出 请选择功能:";  cin >> i;  switch(i)  {    ca 1:arch_book();    break;    ca 2:borrow_book();    break;    ca 3:return_book();    break;    ca 4:information();    break;    ca 5:exit();    break;    default :      {        cout << "无此操作!" << endl;        display();      }      break;  }}int main(){  int i;  student b1;  library a1;  cout << "1.学生 2.管理员 您的身份是:";  while(cin >> i)  {    if(1 == i)    {      b1.display();    }    if(2 == i)    {      a1.display();    }    cout <<endl << "1.学生 2.管理员 您的身份是:";  }  return 0;}

4.总结

这个程序已经可以实现基本的功能,但是当重新选择身份进入系统时,上次的访问记录就会被清除。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 03:24:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/31e131a59af45847fb031d39508db372.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++实现图书馆系统.doc

本文 PDF 下载地址:C++实现图书馆系统.pdf

标签:这本书   图书   信息   专业
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图