这篇文章主要为大家详细介绍了C++实现图书管理程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了C++实现图书管理程序的具体代码,供大家参考,具体内容如下
主文件
#include#include "library.h" #include "info.h"//读取帮助文件 using namespace std; int main() { char choice='w'; string bookid; int readerid;//图书、读者编号 RDatabase ReaderDB; //读者库 Reader *r; BDatabase BookDB; //图书库 Book *b; int i=1; while(choice!='0') { cout <<"\n\n\t\t\t 图 书 管 理 系 统\n\n\n"; cout <<"\t\t\t1: 借 书\n\n\t\t\t2: 还 书 \n\n\t\t\t3: 图 书 维 护\n\n\t\t\t4: 读 者 维 护\n\n\t\t\t5: 帮 助\n\n\t\t\t0: 退 出"< > choice; switch (choice) { case '1': cout <<" |借书|\n读者编号(1~"< >readerid; r=ReaderDB.query(readerid);//按编号查找 if (NULL==r) //查找是否有该读者 { cout <<"不存在该读者,不能借书"< borrowbook()==0)//存在该书的情况下查找该书是否已借出 { cout << " 该图书已借出,不能借书"<< endl; break; } r->borrowbook(b->getISBN());//成功借书 cout<<"借书成功!"< >readerid; if (r==NULL) { cout <<"不存在该读者,不能还书" << endl; break; } cout <<"图书编号(n-n-n-x):"; bookid=input_ISBN(); r=ReaderDB.query(readerid); b=BookDB.query(bookid); if (b==NULL) { cout <<"不存在该图书,不能还书" < retbook(); r->retbook(b->getISBN()); //还书成功 break; case '3': BookDB.bookdata(); //图书维护 break; case '4': ReaderDB.readerdata(); //读者维护 break; case '5': read_info(); case '0': break; default: cout<<"输入错误,请重新输入:"; } } return 0; }
acquire_date.h
//获取系统时间 #include#include /* time.h in C */ using namespace std; struct Time { int y; int m; int d; }; Time acquire_time() { time_t now; struct tm *fmt; Time t; time(&now); fmt = localtime(&now); t.y=fmt->tm_year%100;//获取年月日 t.m=fmt->tm_mon+1; t.d=fmt->tm_mday; cout<
delete_space.h
//去空格 #include#include using namespace std; string input_ISBN() { bool ifGo=1; char n='0'; string names="0"; cout<<"(输入ISBN)"< >n) { if(n>='0'&&n<='9'&&i<3){ names+=n; f++;} else if(n=='-'&&i<3&&f!=0){ names+=n; i++; } else if(i==3&&((n>='a'&&n<='z')||(n>='A'&&n<='Z')||(n>='0'&&n<='9'))) { names+=n; cin.clear(); cin.sync(); ifGo=0; break; } else{ cout<<"输入错误!请重新输入:"; names="0"; ifGo=1; cin.clear(); cin.sync(); i=0; f=0; } } } string names1; for(int j=1;j
info.h
//读取帮助文件 #include#include using namespace std; const int l=100;//每一行的长度 void read_info() { ifstream ios("help.txt"); char s[l];//用于读取文件中的一行 for(int j=0;j
library.h
//主功能实现 #include#include #include #include //输入/输出文件流类 #include "delete_space.h" #include "acquire_date.h"//获取系统日期 using namespace std; const int Maxr=100;//最多的读者 const int Maxb=100;//最多的图书 const int Maxbor=8;//每位读者最多借八本书 const int bkNlen=20;//图书名字长度 const int rdNlen=20;//读者及作者名字长度 const int Maxday=60;//读书借阅期(以日算) enum Genre{fic,nfic,per,bio,chi,unk};/*fic-fiction,nfic-nonfiction,per-periodical, bio-biography,chi-children,unk-unknown*/ //读者类,实现对读者的信息的描述 class Reader { private: bool tag; //删除标记 1:已删 0:未删 int num; //读者编号 char name[rdNlen]; //读者姓名 string borbook[Maxbor];//所借图书 Time bortime[Maxbor];//借书时间 public: Reader() {} char *getname() {return name;} //获取姓名 bool gettag() {return tag;} //获取删除标记 int getnum() {return num;} //获取读者编号 void setname(char na[]) //设置姓名 { strcpy(name,na); } void delbook(){ tag=1; }//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0; num=n; strcpy(name,na); for(int i=0;i Maxday) cout<<"欠费"< > choice; switch (choice) { case '1': cout << "输入读者编号(1~"< > readerid; cout << "输入读者姓名:"; cin >> rname; addreader (readerid,rname); break; case '2': cout << "输入读者编号(1~"< > readerid; r=query(readerid); if (r==NULL) { cout << " 该读者不存在 "< > rname; r->setname(rname); break; case '3': cout << " 输入读者编号(1~"< > readerid; r=query(readerid); if (r==NULL) { cout <<" 该读者不存在" << endl; break; } r->delbook(); break; case '4': cout << "输入读者编号(1~"< > readerid; r=query(readerid); if (r==NULL) { cout <<"该读者不存在"<< endl; break; } r->disp(); break; case '5': disp(); break; case '6': clear(); break; default: cout<<"输入错误,请重新输入:"; } } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book { private: bool tag;//删除标记 1:已删 0:未删 string ISBN;//图书编号 char name[bkNlen];//书名 char author[rdNlen];//作者名 Genre kind;//图书类型 bool onshelf;//是否在架 1:在架 0:已借 public: Book(){} char *getname() { return name; }//获取书名 char *getauthor(){return author;}//获取作者 string getkind(); //获取图书类型 string getISBN(){ return ISBN; }//获取图书ISBN bool gettag(){ return tag; }//获取删除标记 void setname(char na[])//设置书名 { strcpy(name,na); } void setauthor(char au[])//设置作者名 { strcpy(author,au); } void setkind(Genre g)//设置图书类型 { kind=g; } void delbook(){ tag=1;}//删除图书 void addbook(string s1,char *na,char *au,Genre g)//增加图书 { tag=0; ISBN=s1; strcpy(name,na); strcpy(author,au); kind=g; onshelf=1; } bool borrowbook()//借书操作 (并查找是否在架) { if (onshelf==1) { onshelf=0; return 1; } return 0; } void retbook()//还书操作 { onshelf=1; } void disp()//输出图书 { cout < > choice; switch (choice) { case '1': cout <<"输入图书编号(n-n-n-x):"< >bname; cout<<"输入作者姓名:"< >aname; cout<<"输入图书类型:\n1-fiction,2-nonfiction,3-periodical,4-biography,5-children"< >bkind; if(bkind<6&&bkind>0) bkind1=Genre(bkind-1); else bkind1=Genre(5); addbook(bookid,bname,aname,bkind1); break; case '2': cout << "输入图书编号(n-n-n-x):"< > bookid; b=query(bookid); if (b==NULL) { cout << " 该图书不存在 "< >bname; b->setname(bname); cout <<"输入新的作者名:"< >aname; b->setauthor(aname); cout <<"输入新的类型:\n1-fiction,2-nonfiction,3-periodical,4-biography,5-children"< >bkind; if(bkind<6&&bkind>0) bkind1=Genre(bkind-1); b->setkind(bkind1); break; case '3': cout <<"输入图书编号(n-n-n-x):"< > bookid; b=query(bookid); if (b==NULL) { cout <<"该图书不存在" << endl; break; } b->delbook(); break; case '4': cout <<"输入图书编号(n-n-n-x):"< > bookid; b=query(bookid); if (b==NULL) { cout <<"该图书不存在"<< endl; break; } b->disp(); break; case '5': disp(); break; case '6': clear(); break; case '0': break; default: cout<<"输入错误,请重新输入:"; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。
以上就是C++实现图书管理程序的详细内容,更多请关注0133技术站其它相关文章!