如何使用C++实现图书馆系统
发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。具体内容如下
千家信息网最后更新 2024年10月21日如何使用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安全错误
数据库的锁怎样保障安全
梦幻西游大唐官府服务器什么时候开的
英业达服务器管理端口
服务器设置用户文件
云南省网络安全作品
常州市教育局网络安全知识答题活动教师组
绝境防线服务器
违反网络安全第四十六条
SQL数据库可以在哪里下载
粘土世界服务器任务奖励
农业银行软件开发中心上海
hpdl388e服务器u盘启动
浙江服务器电源厂家直销
维护网络安全小卡片
餐馆软件开发
数据库多行数据添加命令的代码
想考公安局的网络安全特招
数据库复制临时表不复制
数据库查询向导创建不了
威科先行 财务数据库
数据库 刘卫国 答案
云服务器适用的场景
什么叫应用数据库
如何参与政府网络安全
本地服务器主机安全
sql数据库日志文件
奉贤区专业视频系统服务器
苹果13验证失败连接服务器超时
扬州银联软件开发资费
国家金保数据库
山西证券为什么连接不上服务器