如何使用C++实现图书馆系统
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。具体内容如下
千家信息网最后更新 2025年01月20日如何使用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安全错误
数据库的锁怎样保障安全
苹果软件开发者查询
网络技术和web前端
互联网科技公司怎么注册
互联网科技十大机构
专科网络安全专业有前途吗
无锡软件开发园
摩尔互联网科技诈骗
交通银行软件开发笔试题目
网络安全综合防控体系机制
张家界市网络安全应急中心
京东定制化服务器
大型服务器磁带
分布式数据库用什么字母代替
河北专业网络技术服务资费
云计算和软件开发哪个好学
世界经济论坛数据库在哪找
psa网络安全
lol手游一般是什么服务器
手机怎么关闭网络安全保护
公安部三所网络安全认证证书
国外最安全的服务器
饥荒专用服务器管理mod
数据库名服务器名
数据库中的trunc
上海宝奥龙网络技术有限公司
中国电影引入数据库
森林资源清查数据库
黑盾网络安全审计系统
河南星空网络技术有限公司
个人承包软件开发 发票