基于C++的图书管理系统设计与实现

需积分: 4 8 下载量 100 浏览量 更新于2024-07-29 收藏 256KB DOC 举报
图书管理系统(C++) 图书管理系统是指利用计算机技术对图书记录进行统一管理的系统,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化、规范化和自动化。该系统的设计旨在提供便利的图书管理平台,提高图书管理效率,降低管理成本。 一、设计目的: 图书馆是目前生活中除了网络外的另一个获取知识的重要场所。图书管理系统的设计旨在提供一个便利的图书管理平台,帮助图书管理员更好地管理图书记录,提高图书管理效率,降低管理成本。同时,该系统的设计也旨在加深对面向对象程序设计中基础理论和基本知识的理解,培养实践能力,促进理论与实践的结合。 二、设计要求: 1、掌握使用一种面向对象程序设计语言,如BorlandC++或VisualC++等。 2、培养调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 3、通过课程设计,在指导教师的指导下,独立完成实习课题的全部内容,包括通过调查研究和上机实习,收集和调查有关技术资料;掌握设计课题的基本步骤和方法;根据课题的要求进行上机实验调试;课程设计完成后,提交课程设计报告。 三、设计方案: 实习题目:图书管理系统的设计 1、类的设计: Book类的设计: * 数据成员: + char name[StrNum]; 用来存放书名。 + char number[StrNum]; 用来存放图书的编号。 + char kind[Type]; 用来存放图书的类型。 + int tag; 定义删除标记。 + int num; 定义图书编号为整形。 + int add; 增加标记。 * 函数成员: + Book() {}; 无参构造函数,用于为书名和作者姓名设置默认值。 + char getkind(); 用于获取图书类型。 + char getname(); 用于获取书名。 + int getnum(); 用于获取图书编号。 + int gettag(); 用于获取删除标记。 + void setname(char na[]); 用于设置书名。 + void setkind(char kin[]); 用于设置类型。 + void delbook(); 用于删除图书。 + void addbook(int n, char* na, char* kin); 用于增加图书。 + void disp(); 用于输出图书。 2. 主程序的设计: 主程序设计如图所示: * 函数的设计: + class BDatabase{} 图书管理类的设置,实现对图书的添加、查找、删除等。 + int top; 设置图书记录指针。 + Book book[Maxb]; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。 四、系统实现: 图书管理系统的实现主要包括三个部分:图书记录的添加、查找和删除。图书记录的添加是指将新的图书信息添加到系统中;图书记录的查找是指根据图书的类型、作者、出版日期等信息来查找相应的图书记录;图书记录的删除是指将不需要的图书记录从系统中删除。 五、系统优点: 图书管理系统的设计旨在提供一个便利的图书管理平台,帮助图书管理员更好地管理图书记录,提高图书管理效率,降低管理成本。该系统的设计也旨在加深对面向对象程序设计中基础理论和基本知识的理解,培养实践能力,促进理论与实践的结合。
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;