如何使用C++实现图书馆系统
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。具体内容如下
千家信息网最后更新 2025年11月11日如何使用C++实现图书馆系统
这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。
具体内容如下
1.目的
用c++语言实现图书馆系统
2.分析
图书馆系统中要实现的功能有:图书的分类存储,不同身份的人员进行不同的操作。在这个程序中,
我把图书分为两类:小说类和专业书类,这两种类都有相同的功能,所以设一个基类,这两种类分别
继承基类。人员有两类:管理员和学生,这两类有部分相同的私有数据成员,所以设一个人员的基类,
这两种类分别继承基类。在图书类中,小说类和专业书类都要设自己的结构体数组,用来存储书的信
息,同时都要有增加书、删除书、搜索书的功能。管理员类的函数要有增加各类书、浏览全部书的功
能。学生类要有搜索书、借书、还书等功能。
3.代码
// 图书馆系统#include#include using namespace std;typedef struct book //结构体定义书的基本信息{ string book_name; //书名 string author; //作者 string kind; //书的种类}Book;class base //抽象类{public: base(); 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;};base::base(){}class novel:public base //小说类{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 novelnumber; //目前书的数目 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_name = 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 false;//没有则返回false}class professional:public base //专业书类{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 false;//没有则返回false}class people //人员类{public: people();protected: base* 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(); //增加一本小说类的图书 } else if(2 == temp) { q = &professional1; q->deposit();//增加一本专业类的图书 } else { 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) { case 1: add(); break; case 2: all(); break; case 3: exit(); break; default : { cout << "无此操作!" << endl; display(); } break; }}void library::exit() //退出{ cout << "感谢您的使用!" < > temp; int f; switch(temp) { case 1: //按作者搜索 cout << "请输入作者名:"; cin >> temp_author; q = &novel1; //从小说类中搜索 f = q->isauthor(temp_author); if(1 == f) { q->display(temp_author); //若存在则显示这本书的信息 } else { cout << "小说类中没有这本书" < isauthor(temp_author); if(1 == f) { q->display(temp_author);//若存在则显示这本书的信息 } else { cout << "专业类中没有这本书" < > temp_bookname; q = &novel1;//从小说类中搜索 if(q->isbookname(temp_bookname)) { q->display(temp_bookname);//若存在则显示这本书的信息 } else { cout << "小说类中没有这本书" < isbookname(temp_bookname)) { q->display(temp_bookname);//若存在则显示这本书的信息 } else { cout << "专业类中没有这本书" < > temp_kind; if("novel" == temp_kind) //显示小说类的全部书 { q = &novel1; q->display(); } else if("professional" == temp_kind)//显示专业类的全部书 { q = &professional1; q->display(); } else { cout << "没有该种类的书" < > i; cout << "请输入书名:" ; cin >> temp; if(1 == i) { q = &novel1; } if(2 == i) { q = &professional1; } if(q->isbookname(temp)) //如果有这本书则执行下面步骤 { q->clearbook(temp); //清除这本书 borrow_number++; //借阅书的数目加一 } else { cout << "没有这本书!" << endl; } display();}void student::return_book() //还书{ int i; cout << "1.小说类 2.专业书类 请选择书的种类:"; cin >> i; if(1 == i) { q = &novel1; } else { q = &professional1; } q->deposit(); //录入这本书的信息 return_number++; //已还书数加一 display();}void student::information() //显示学生借阅信息{ cout << "您已借阅" << borrow_number << "本书" < > i; switch(i) { case 1:search_book(); break; case 2:borrow_book(); break; case 3:return_book(); break; case 4:information(); break; case 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 < 以上是"如何使用C++实现图书馆系统"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
图书
信息
专业
小说
作者
书名
功能
种类
专业书
搜索
图书馆
系统
函数
空间
结构
数目
人员
内容
名称
学生
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小班安全教案网络安全
软件开发专业容不容易秃头
深信服600深度服务器
当前最好的数据库语言
眼镜行业软件开发哪种好
数据库修改用户远程访问
火山视频 软件开发
沈阳沐洋软件开发有限公司
华为电脑管家服务器异常
乌克兰服务器上不去
数据库为什么要用表的名字
越南zalo软件开发时间
无线网络技术 试卷
服务器工作时间长了会卡吗
怎么在离线服务器里有皮肤
网络安全 胡道元下载
初中网络安全教育视频
云服务器地址打不开
数据库及技术应用是什么
客户订购系统数据库设计
服务器远程部署网心云
服务器里面怎么更改主机名称
软件开发师职称评审
如何利用api抓取数据库
超微服务器区域代理
数据库时间格式修改
什么是web服务器的端口
自己能登录疫情数据库吗
班会网络安全情景剧
赣州市微信公众号软件开发