C++实现图书管理系统源代码分享

4星 · 超过85%的资源 需积分: 10 3 下载量 6 浏览量 更新于2024-10-14 收藏 19KB TXT 举报
"提供了一个完整的C++实现的图书管理系统源代码,旨在帮助学习者理解C++编程和系统设计。系统包括读者和书籍两类对象,具备输入、输出、借阅等功能。" 在C++编程中,设计一个图书管理系统涉及到面向对象编程的概念,包括类的定义、对象的创建以及成员函数的实现。此图书管理系统由两个主要类组成:`reader`(读者)和`book`(书籍)。每个类都有其特定的属性和行为。 `reader`类代表读者,包含以下属性: 1. `code[4]`:读者编码,用4个字符表示。 2. `name[10]`:读者姓名,最多10个字符。 `reader`类提供了以下方法: 1. `get()`:获取读者的编码和姓名。 2. `print()`:打印读者的编码和姓名。 3. `getcode()` 和 `getname()`:返回读者的编码和姓名。 `book`类则代表书籍,包含以下属性: 1. `code[4]`:书籍编码,同样用4个字符表示。 2. `name[10]`:书籍名称,最多10个字符。 3. `writer[10]`:作者姓名,最多10个字符。 4. `concern[10]`:类别,最多10个字符。 5. `price`:书籍价格,浮点数类型。 6. `flag`:一个字符型变量,用于标记书籍是否被借出,初始值为'N'(未借出)。 `book`类提供了以下方法: 1. `get()`:获取书籍的编码、名称、作者、类别和价格。 2. `print()`:打印书籍的详细信息。 3. `getflag()`:让用户输入确认是否借阅的标记。 4. `getcode()` 和 `getname()`:返回书籍的编码和名称。 此外,还有一个名为`readerborrowbook`的类,可能是用来处理读者借阅书籍的操作,但具体实现不完整,只有一个空的`borrowbook()`方法。通常,这个类会包含记录借阅信息的方法,如添加借阅记录、检查书籍可用性、更新书籍状态等。 通过这样的设计,C++图书管理系统可以模拟图书馆的基本功能,例如注册读者、添加书籍、查找书籍、借书和还书等。这种系统有助于学习C++的类和对象概念,以及如何组织和管理数据。对于初学者来说,这是一个很好的实践项目,因为它涉及到文件操作、输入输出流、字符串处理以及基本的面向对象编程技巧。
2013-06-21 上传
define StrNum 20 #define Type 20 #include <iostream> #include <iomanip> #include <string> #include <fstream> //输入/输出文件流类 using namespace std; const int Maxb=100; //最多可存储的图书 class Book { private: int tag; //删除标记 int num; //图书编号 int add; //增加标记 char number[StrNum]; //编号 char name[StrNum]; //书名 char kind[Type]; //图书类型 public: Book(){} char getkind() //获取图书类型 { return kind[Type]; } char getname() //获取书名 { return name[StrNum]; } int getnum() //获取图书编号 { return num; } int gettag() //获取删除标记 { return tag; } void setname(char na[]) //设置书名 { strcpy(name,na); } void setkind(char kin[]) //设置类型 { strcpy(kind,kin); } void delbook() //删除图书 { tag=1; } void addbook(int n,char *na,char *kin) //增加图书 { tag=0; num=n; strcpy(name,na); strcpy(kind,kin); } void disp() //输出图书 { cout.flags (ios::left); //设置对齐的标志位为左 cout<<setw(15)<<num<<setw(20)<<name<<setw(15)<<kind<<endl; } }; /*****************************************************************************************/ class BDatabase { private: int top; //图书记录指针 Book book[Maxb]; //图书记录 public: BDatabase() //构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); } void clear() //全删 { top=-1; } int addbook(int n,char *na,char *kin) //增加图书 { Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return 1; } return 0; } Book *query(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getnum()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL;