头文件内容:

book.h

#ifndef _book_h
#define _book_h
#include<iostream>
using namespace std;
class Book//图书类
{
public:Book(){}char getBname();//获得书名char getWname();//获得作者名字char getPname();//获得出版社名字long getPdate();//获得出版日期int getEdition();//获得出版版次float getPrice();//获得价格int getnote();//获得删除标志int getnumber();//获得图书编号long long getInumber();//获得ISBN编号void setinformation(long long m,char a[],char b[],char c[],long x, float y,int z);//设置书名void delbook();//删除图书void addbook(int n,long long m,char a[],char b[],char c[],long x, float y,int z);//添加图书int borrowbook();//借书操作void bookout();//设置上架标志void retbook();//还书操作void list();//输出图书
private:int note;//删除标志(0:已删,1:未删)int number;//图书编号char Bname[10];//书名int onshelf;//上架标志(1:在架,可借。0:已借出。)long long ISBN;//ISBN编号char Wname[10];//作者名字char Pname[10];//出版社名字long Pdate;//出版日期int Edition;//出版版次float Price;//定价};
#endif

bdatabase.h

#ifndef _bdatabase_h
#define _bdatabase_h
#include"book.h"
#include<iostream>
using namespace std;
const int Maxb=100;//最大图书数量class BDatabase//图书类库
{
public:BDatabase();void clear();//全部删除int addbook(int n,long long m,char a[],char b[],char c[],long x, float y,int z);//添加图书Book *query(int bookid);//查找图书void list();//输出图书信息void bookdate();//图书库维护~BDatabase();//析构函数,写文件
private:int top;//图书记录指针Book book[Maxb];//图书记录
};
#endif

reader.h

#ifndef _reader_h
#define _reader_h
#include<iostream>
using namespace std;
const int Maxbor=5;//最大借阅量
class Reader//读者类
{
public:Reader() {}char getname();//获得姓名int getnote();//获得删除标志int getnumber();//获得读者编号int getage();//获得年龄bool getsex();//获得性别char getaddress();//获得读者地址void setinformation(int m,char c[],char a[],char b[]);//设置姓名void delbook();//设置删除标记void addreader(int n,int m,char c[],char a[],char b[]);//添加读者void borrowbook(int bookid);//借书操作int retbook(int bookid);//还书操作void list();//输出读者信息
private:int note;//删除标志(0:已删, 1:未删)int number;//读者编号char name[10];//读者姓名int borbook[Maxbor];//所借图书int age;//读者年龄char sex[10];//读者性别char ad[20];//读者地址
};
#endif

rdatabase.h

#ifndef _rdatabase_h_
#define _rdatabase_h_
#include"reader.h"
#include<iostream>
using namespace std;
const int Maxr=100;//最大读者数
class RDatabase//读者类
{
public:RDatabase();//构造函数初始化,读文件void clear();//删除所有读者信息int addreader(int n,int m,char c[],char a[],char b[]);//添加读者记录时,先确定//他是否已经存在。Reader *query(int readerid);//按编号查找void list();//输出所有读者信息void readerdata();//读者库维护~RDatabase();//析构函数,写文件
private:int top;//读者记录指针Reader read[Maxr];//读者记录
};
#endif

源文件内容:

book.cpp

#include<iomanip>
#include"book.h"
#include<stdio.h>
#include<iostream>
using namespace std;char Book::getBname()
{ return Bname[10];
}
char Book::getWname()
{ return Wname[10];
}
char Book::getPname()
{return Pname[10];
}
int Book::getnote()
{ return note;
}
int Book::getnumber()
{return number;
}
long long Book::getInumber()
{return ISBN;
}
long Book::getPdate()
{return Pdate;
}
int Book::getEdition()
{return Edition;
}
float Book::getPrice()
{return Price;
}
void Book::setinformation(long long m,char a[],char b[],char c[],long x, float y,int z)
{ strcpy(Bname,a);strcpy(Wname,b);strcpy(Pname,c);ISBN=m;Pdate=x;Price=y;Edition=z;
}
void Book::addbook(int n,long long m,char a[],char b[],char c[],long x, float y,int z)
{note=1;number=n;ISBN=m;strcpy(Bname,a);strcpy(Wname,b);strcpy(Pname,c);Pdate=x;Edition=z;Price=y;onshelf=1;
}
void Book::delbook()
{ note=0;
}
int Book::borrowbook()
{ onshelf=0;return onshelf;}
void Book::bookout()
{onshelf=0;
}
void Book::retbook()
{ onshelf=1;
}
void Book::list()
{ if(note==1){cout<<endl;cout<<setw(10)<<number<<setw(10)<<Bname<<setw(10)<<Wname<<setw(10)<<Pname<<setw(10)<<Pdate<<setw(10)<<Edition<<setw(10)<<Price<<setw(10);if(onshelf==0)cout<<"已借出"<<endl;elsecout<<"未借出"<<endl;}elsecout<<"该书未上架"<<endl;
}

bdatabase.cpp

//#include"stdafx.h"
#include<iomanip>
#include<fstream>
#include<iostream>
#include"bdatabase.h"
using namespace std;BDatabase::BDatabase()
{Book s;top=-1;fstream file;//打开文件file.open("book.dat", ios::in|ios::binary);while(1){file.read((char*)&s, sizeof(s));if(!file)break;top++;book[top]=s;}file.close();//关闭文件
}
void BDatabase::clear()
{ top=-1;
}Book *BDatabase::query(int bookid)
{ifstream f("book.dat");for(int i=0; i<=top; i++)if(book[i].getnumber()==bookid&&book[i].getnote()==1)return &book[i];return NULL;f.close();
}int BDatabase::addbook(int n,long long m,char a[],char b[],char c[],long x, float y,int z)
{Book *p=query(n);if(p==NULL){top++;book[top].addbook(n,m,a,b,c,x,y,z);return 1;}return 0;
}void BDatabase::list()
{for(int i=0; i<=top; i++)book[i].list();
}BDatabase::~BDatabase()
{fstream file;file.open("book.dat", ios::app|ios::binary);for(int i=0; i<=top; i++)if(book[i].getnote()==0)file.write((char*)&book[i],sizeof(book[i]));file.close();
}void BDatabase::bookdate()
{int choice=1;char bookname[20]="0";char writername[20]="0";char Pname[20]="0";long Pdate=0;int Edition=0;float Price=0;long long Inumber=0;int bookid=0;Book *b;while(choice!=0){cout<<"图书维护:  "<<endl;cout<<"------------------------------------------------"<<endl;cout<<"1: 新增 2: 更改 3: 删除 4: 查找 5: 显示 6: 全删 0: 退出"<<endl;cin>>choice;cout<<"-------------------------------------------------"<<endl;switch(choice){case 1:{ifstream f("book.dat");//ifstream-从已有的文件读入ofstream f1("book.dat",ios::app);//ofstream-向文件写内容    ios::app-从文件末尾开始写,防止丢失文件中原来有的内容cout<<"输入图书编号:  ";cin>>bookid;f1<<"输入图书编号:  "<<bookid<<endl;cin.get();cout<<"输入图书名:  ";gets(bookname);f1<<"输入图书名:  "<<bookname<<endl;cout<<"输入作者名字:  ";gets(writername);f1<<"输入作者名字:  "<<writername<<endl;cout<<"输入出版社名字:  ";gets(Pname);f1<<"输入出版社名字:  "<<Pname<<endl;cout<<"输入出版日期:  ";cin>>Pdate;f1<<"输入出版日期:  "<<Pdate<<endl;cout<<"输入版次:  ";cin>>Edition;f1<<"输入版次:  "<<Edition<<endl;cout<<"输入价格:  ";cin>>Price;f1<<"输入价格:  "<<Price<<endl;cout<<"输入INBS编号:  ";cin>>Inumber;f1<<"输入INBS编号:  "<<Inumber<<endl;addbook(bookid,Inumber,bookname,writername,Pname,Pdate,Price,Edition);f1.close();};break;case 2:{cout<<"输入图书编号:  ";cin>>bookid;cin.get();b=query(bookid);if(b==NULL){cout<<"该图书不存在!"<<endl;break;}cout<<"输入新图书名:  ";gets(bookname);cout<<"输入新的作者名字:  ";gets(writername);cout<<"输入新的出版社名字:  ";gets(Pname);cout<<"输入新的出版日期:  ";cin>>Pdate;cout<<"输入新的版次:  ";cin>>Edition;cout<<"输入新的价格:  ";cin>>Price;cout<<"输入新的INBS编号:  ";cin>>Inumber;b->setinformation(Inumber,bookname,writername,Pname,Pdate, Price,Edition);};break;case 3:{cout<<"输入图书编号:  ";cin>>bookid;b=query(bookid);if(b==NULL){cout<<"该图书不存在! "<<endl;break;}b->delbook();cout<<"该书籍已删除!"<<endl;};break;case 4:{ifstream f("book.dat");cout<<"输入图书编号:  ";cin>>bookid;b=query(bookid);if(b==0){cout<<"该图书不存在!"<<endl;break;}cout<<setw(10)<<"图书标号"<<setw(10)<<"书名"<<setw(10)<<"作者名"<<setw(10)<<"出版社名"<<setw(10)<<"出版日期"<<setw(10)<<"版次"<<setw(10)<<"价格"<<setw(10)<<"上架标签"<<endl;b->list();f.close();};break;case 5: {   cout<<setw(10)<<"图书标号"<<setw(10)<<"书名"<<setw(10)<<"作者名"<<setw(10)<<"出版社名"<<setw(10)<<"出版日期"<<setw(10)<<"版次"<<setw(10)<<"价格"<<setw(10)<<"上架标签"<<endl;list();cout<<endl;}break;case 6:{for(int i=0; i<=top; i++)if(book[i].getnote()==0)book[i].delbook();cout<<"全部删除成功!"<<endl;cout<<endl;}break;case 0: break;default: cout<<"输入出错!"<<endl;}}
}

reader.cpp

#include<iomanip>
//#include"stdafx.h"
#include"reader.h"
//extern int Maxbor=5;
#include<iostream>
using namespace std;char Reader::getname()
{return name[10];
}
int Reader::getnote()
{return note;
}
int Reader::getnumber()
{return number;
}
int Reader::getage()
{return age;
}
bool Reader::getsex()
{return sex;
}
char Reader::getaddress()
{return ad[20];
}
void Reader::setinformation(int m,char c[],char a[],char b[])
{ strcpy_s(name, a);strcpy_s(ad, b);strcpy_s(sex, c);m=age;
}
void Reader::addreader(int n,int m,char c[],char a[],char b[])
{note=1;number=n;age=m;strcpy_s(sex, c);strcpy_s(name, a);strcpy_s(ad,b);for(int i=0; i<Maxbor; i++)borbook[i]=0;
}void Reader::delbook()
{ note=0;
}
void Reader::borrowbook(int bookid)
{for(int i=0; i<Maxbor; i++){if(borbook[i]==0){borbook[i]=bookid;//记录所借图书编号}}
}int Reader::retbook(int bookid)
{for(int i=0; i<Maxbor; i++){if(borbook[i]==bookid){borbook[i]=0;}}return 0;
}void Reader::list()
{int i;if(note==1){cout<<endl;for(i=0; i<Maxbor; i++){if(borbook[i]==0)break;}cout<<setw(10)<<number<<setw(10)<<name<<setw(10)<<age<<setw(10)<<sex<<setw(10)<<ad<<setw(10)<<(Maxbor-i)<<setw(20)<<"借书编号:[ ";for(i=0; i<Maxbor; i++){if(borbook[i]!=0)cout<<borbook[i]<<"  ";}cout<<" ]"<<endl;}
}

rdatabase.cpp

//#include"stdafx.h"
#include<iomanip>
#include<fstream>
#include<iostream>
using namespace std;
#include"rdatabase.h"RDatabase::RDatabase()
{Reader s;top=-1;ifstream file;file.open("reader.dat", ios::app|ios::binary);while(1){file.read((char*)&s,sizeof(s));if(!file) break;top++;read[top]=s;}file.close();
}
void RDatabase::clear()
{ top=-1;
}
Reader *RDatabase::query(int readerid)
{for(int i=0; i<=top; i++)if(read[i].getnumber()==readerid&&read[i].getnote()==1)return &read[i];return NULL;
}int RDatabase::addreader(int n,int m,char c[],char a[],char b[])
{Reader *p=query(n);if(p==NULL){top++;read[top].addreader(n,m,c,a,b);return 1;}return 0;
}void RDatabase::list()
{for(int i=0; i<=top; i++)read[i].list();
}RDatabase::~RDatabase()
{fstream file;file.open("reader.dat",ios::app|ios::binary);for(int i=0; i<=top; i++)if(read[i].getnote()==0)file.write((char*)&read[i], sizeof(read[i]));file.close();
}void RDatabase::readerdata()
{int choice=1;char readername[20];int readerid;int age;char sex[10];char ad[20];Reader *r;while(choice!=0){cout<<"读者维护:"<<endl;cout<<"--------------------------------------------------------"<<endl;cout<<"1:新增  2:更改  3:删除  4:查找  5:显示  6:全删  0:退出"<<endl;cin>>choice;cout<<"---------------------------------------------------------"<<endl;switch(choice){case 1:{ifstream f("reader.dat");//ifstream-从已有的文件读入ofstream f2("reader.dat",ios::app);//ofstream-向文件写内容    ios::app-从文件末尾开始写,防止丢失文件中原来有的内容cout<<"输入读者编号: ";cin>>readerid;f2<<"输入读者编号:  "<<readerid<<endl;cin.get();cout<<"输入读者姓名:  ";cin>>readername;f2<<"输入读者姓名:  "<<readername<<endl;cout<<"输入读者年龄: ";cin>>age;f2<<"输入读者年龄:  "<<age<<endl;cout<<"输入读者性别:  ";cin>>sex;f2<<"输入读者性别:  "<<sex<<endl;cout<<"输入读者地址: ";cin>>ad;f2<<"输入读者地址:  "<<ad<<endl;addreader(readerid,age,sex, readername,ad);f2.close();};break;case 2:{cout<<"输入读者编号: ";cin>>readerid;cin.get();r=query(readerid);if(r==NULL){cout<<"该读者不存在!"<<endl;break;}cout<<"输入新的姓名:";gets(readername);cout<<"输入新的读者年龄: ";cin>>age;cout<<"输入新的读者性别:  ";cin>>sex;cout<<"输入新的读者地址: ";cin>>ad;r->setinformation(age,sex,readername,ad);};break;case 3:{cout<<"输入读者编号:";cin>>readerid;r=query(readerid);if(r==NULL){cout<<"该读者不存在!"<<endl;break;}r->delbook();cout<<"该读者已删除!"<<endl;};break;case 4:{ifstream f("reader.dat");cout<<"输入读者编号:";cin>>readerid;r=query(readerid);if(r==NULL){cout<<"该读者不存在!"<<endl;break;}cout<<setw(10)<<"读者编号"<<setw(10)<<"读者姓名"<<setw(10)<<"读者年龄"<<setw(10)<<"读者性别"<<setw(10)<<"读者地址"<<setw(10)<<"可借书数"<<setw(10)<<"借书信息"<<endl;r->list();cout<<endl;f.close();};break;case 5: {cout<<setw(5)<<"读者编号"<<setw(15)<<"读者姓名"<<setw(15)<<"可借书数"<<setw(15)<<"借书信息"<<endl;list();cout<<endl;};break;case 6: {for(int i=0; i<=top; i++)if(read[i].getnote()==0)read[i].delbook();cout<<"全部删除成功!"<<endl;cout<<endl;};break;}}
}

library.cpp

#include"reader.h"
#include"rdatabase.h"
#include"book.h"
#include"bdatabase.h"
#include<stdlib.h>
#include<iostream>
#include<fstream>
using namespace std;
#define FILEPATH01 "password.dat"
#define LEN 20
#define TRYNUM 3
int main(int argc, char *argv[])
{int choice=1, bookid, readerid;
//  char text[LEN];
//  char passwd[LEN];RDatabase ReaderDB;BDatabase BookDB;Reader *r;Book *b;
//LoginSucceed: cout<<"--------------------------------------------------------------------------------"<<endl;cout<<" \t\t\t欢迎进入小小图书馆管理软件  "<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;while(choice!=0){cout<<"\t--------------------------------------------------"<<endl;cout<<"\t1:借书  2:还书  3:图书维护   4:读者维护   0:离开  "<<endl;cout<<"\t---------------------------------------------------"<<endl;cin>>choice;switch(choice){case 1:{cout<<"输入借书读者编号:";cin>>readerid;cout<<"输入图书编号:";cin>>bookid;r=ReaderDB.query(readerid);if(r==NULL){cout<<"该读者不存在,不能借书!"<<endl;break;}b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在,不能借书!"<<endl;break;}if(b->borrowbook()==0){cout<<"该图书已借出,不能借书!"<<endl;break;}r->borrowbook(b->getnumber());b->bookout();cout<<"借书成功!"<<endl;};break;case 2:{cout<<"输入还书者读者编号:";cin>>readerid;cout<<"输入图书编号:";cin>>bookid;r=ReaderDB.query(readerid);if(r==NULL){cout<<"该读者不存在,不能还书!"<<endl;break;}b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在,不能还书!"<<endl;break;}b->retbook();r->retbook(b->getnumber());cout<<"还书成功!"<<endl;};break;case 3: BookDB.bookdate();break;case 4: ReaderDB.readerdata();break;case 0: cout<<"安全退出,谢谢使用!"<<endl;break;default: cout<<"输入错误!"<<endl;}}//LoginFail:return 0;
}

C++图书管理查询系统相关推荐

  1. 图书管理分类统计c语言,图书管理完整系统(c语言).doc

    图书管理完整系统(c语言) 程序设计方法课程设计 问题提出: 设计一个图书馆的图书管理,具体要求如下: 1.录入新采购的图书信息,做成文件book.in,要求有良好的输入界面: 2.查询各种图书的基本 ...

  2. 公众号学生成绩管理查询系统

    在工作学习中,我们经常会遇到公众号学生成绩管理查询系统 这样的问题.李白说过:天生我材必有用.因此,面对公众号学生成绩管理查询系统 我们应该有努力探索的精神.不读书就没有真正的学问,没有也不可能有欣赏 ...

  3. SSM 图书管理在线销售系统

    SSM 图书管理在线销售系统 SSM 图书管理在线销售系统功能介绍 首页 图书展示 按类型展示图书 关键字搜索图书 图书详情 图书评论 中英文切换 会员注册登录 购买图书 购物车 收藏图书 我的收藏 ...

  4. C语言图书管理借阅系统——ncurses库的使用

    一.前言 作为一只大四狗,最近还跟着大二同学修了一门课(当然不是之前没通过啦),课程是高级语言课程设计,高级语言指的是C语言 :),内容是做一个XX管理系统,我选择了图书管理系统,先介绍下我做的系统: ...

  5. Java项目之利用集合设计图书管理器系统

    设计⼀个图书管理器,实现对图书进⾏的存储管理操作 /*程序设计:图书管理器,设计⼀个图书管理器,实现对图书进⾏的存储管理操作, 实现功能 1. 添加⼀本图书(书名.作者(姓名,年龄,性别).售价) 2 ...

  6. 城市公交出行管理查询系统

    在都市的生活和工作中,出行方式除了开车.地铁外绝大一部分都是公交出行,所以城市公交在城市发展和建设中,起着重要的作用.公交出行也是市民的一个首选的出行方式,通过公交出行,能够节约人们的出行成本,也能够 ...

  7. 图书管理销售系统需求分析报告,对性能的规定以及运行环境规定部分

    负责人:皮皮周(20160401085)                国字号(20160401105 完成工作: 3.3对性能的规定3.3.1精度 软件的输入精度:如果输入为数字,小数点后保留2位有 ...

  8. 图书管理销售系统概要分析,接口设计部分

     负责人:皮皮周(20160401085)               国字号(20160401105) 接口设计 1.用户接口 网站部分:本图书销售系统不包含与网络的交互联通功能. 客户端部分:简洁 ...

  9. 用java编码图书查询系统_用java做的一个图书管理系统的源代码

    <用java做的一个图书管理系统的源代码>由会员分享,可在线阅读,更多相关<用java做的一个图书管理系统的源代码(42页珍藏版)>请在人人文库网上搜索. 1.用java做的一 ...

最新文章

  1. 【ffmpeg】编译时报错:error: undefined reference to `av...
  2. POJ 1028: Web Navigation
  3. 腾讯员工干满15年可选择“提前退休”!
  4. Linux 设备树device tree 使用手册
  5. jeecg t:datagrid标签 每页显示条数 扩展
  6. mysql in 多个字段_MySQL如何同时自增自减多个字段
  7. 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用
  8. MMP,我说每年年会我怎么老是中不了奖,原来是这样
  9. HTML5几大新特性
  10. Java中常见的服务器
  11. mysql查询重复名字的数据都查出来_mysql 查询重复字段 内容
  12. 计算机内部进水会不会燃烧,发动机进水后内部变化惊人!“内脏”爆裂而亡
  13. 街头霸王5显示正在登陆服务器无法进入游戏,街头霸王5打不开怎么办 无法进入游戏解决方法...
  14. Linux内核“问题门”——学习问题、经验集锦(持续更新中……)
  15. Word/WPS 文本转换成表格
  16. python第五次作业——潘芊睿
  17. 一招教你自制“切屏”摸鱼神器
  18. Android Snackbar基本使用
  19. 随机过程、马尔可夫链 详解
  20. python数据分析与挖掘实战(商品零售购物篮分析)

热门文章

  1. vue 实现文字转语音tts
  2. 风过,摔死一只ofo小黄猪
  3. “文心CV大模型” - VIMER-UFO论文报告
  4. 亲身体验 北京-环球嘉年华!
  5. 集合的简单实现(斗地主牌的实现 )
  6. 使用 SAP UI5 绘制 Business Rule Control
  7. 中国物联网微控制器市场现状研究分析与发展前景预测报告(2022)
  8. 非北京户口,户口地买房提取公积金
  9. 2021-12-17 每日一练 100元怎么买100个蛋,鸡蛋1毛一个,鸭蛋3元一个,鹅蛋6元一个
  10. GPU/CPU性能天梯图