图书管理系统程序设计报告

  • 格式:pdf
  • 大小:445.69 KB
  • 文档页数:11

1 C++大程设计报告

--图书管理系统

一、 总体说明 1、功能分析__________________________ 1 2、体系架构__________________________ 1

3、编译环境__________________________ 1

4、核心类介绍________________________ 1

二、 功能实现及调用函数_______________________ 4

三、 C++思想及知识____________________________ 9

四、总结______________________________________ 11

五、人员分工__________________________________ 11

2 一、 总体说明 设计并实现一个在Dos系统下的图书管理系统, 具有图书管理、读者管理、借书、还书等功能。 1、功能分析 (1) 图书管理,增添、修改、删除、查询图书信息。 (2) 读者管理,增添、修改、删除、查询读者信息。 (3) 创建管理员功能。 (4) 借书模块,进行借书操作。 (5) 还书模块,进行还书操作。 读者和图书数据保存在文本文件中。 程序中需要用到的C++知识有:编译预处理、函数、数组、类、封装、继承、多态、重载等。

2、体系架构

3、编译环境

Microsoft Visual Studio 2010

4、核心类介绍

(1)class Admin:保存管理员信息——账号和密码,并包含获取账号和密码的函数。

(2)class AdminDataBase:实现管理员的操作。

{

private:

vector Admins; //用容器来在程序运行时保存管理员信息

public:

bool CheckAdmin(const string& Id,const string& Pwd); //检查管理员身份

void BookBorrow(RDatabase& RD,BDatabase &BD); //实现借书功能

void BookReturn(RDatabase& RD,BDatabase &BD); //实现还书功能 管理员登陆

图书管理 读者管理 借书操作 还书操作 退

增 修

改 删

除 查

找 显示全部 新

增 修

改 删

除 查

找 显示全部 管理员申请 图书管理系统

读者登录 3 void AddAdmin(); //新增管理员

vector::iterator QueryName(string ID );

void saveAdminDataBase(); //保存管理员信息到文件中

AdminDataBase(); //构造函数,将管理员信息从文件读出到容器中

~AdminDataBase();

};

(3)class Book:保存图书信息,包括编号(id),书名(name),作者(author),出版者(press),

总量(num),在架库存数量(shelfnum),是否已被删除(isdel),包含了设置私有变量、读取私

有变量的函数,以及显示所有图书函数“void Disp()”。

(4)class BDatabase :实现对图书的操作

{

private:

vector Books; //用容器来在程序运行时保存图书信息

public:

BDatabase(); //构造函数,将图书信息从文件读出到容器中

void AddBook(int id, string name, string author, string press, int num); //增加图书

vector::iterator QueryNo(int bookid); //通过书的编号查找图书

void saveBDatabase(); //保存图书到文件中

bool IsBook(int bookid); //判断是否最后一本书

bool HasBook(int bookid); //借书时调用,判断图书是否还有库存量

vector::iterator QueryName(string BookName); //通过书名查找图书

vector::iterator Query();

void Modify(Book &b); //修改图书

void BookData(); //实现对图书的操作选择

void DispAll(); //显示所有图书

void DispSingle(Book b); //显示单本特定图书

string FindBname(const int&); //通过书号查找书名

vector::iterator GetBookEnd(); //判断是否查找完所有图书

~BDatabase();

};

(5)class Reader:保存读者信息,包括编号(id),姓名(name),密码(pwd),所借图书

(vector bor),最大借书量(maxbook),读者类型(type)。包含了设置私有变量、读取

私有变量的函数,以及显示所有读者的虚函数“virtual void Disp()”。

(6)class Student:public Reader:继承类Reader,重载虚函数“virtual void Disp()”,实现多态。

(7)class Temporary:public Reader:继承类Reader,重载虚函数“virtual void Disp()”,实现多态。

(8)class RDatabase:实现对图书的操作 {

private: 4 int maxid; //当前最大的读者编号,记录该值,新增读者时,系统自动加一,将该值赋给读者作为其账号 vector read; //用容器来在程序运行时保存读者信息

public:;

RDatabase(int=1000); //构造函数,将读者信息从文件读出到容器中

void AddReader(const int&);//新增读者

void saveRDatabase();//保存读者到文件中

bool CheckReader(const int&,const string&) const; //读者登录时,检查读者

bool QueryReader(const int&) const; //通过编号查找读者

bool QueryReader(const string&) const; //通过姓名查找读者

bool DeleteReader(const int&);//删除读者

void UpdateReader(const int &);//修改读者信息

void ReaderData();//实现对读者的操作选择

void ShowAll() const;//输出所有读者

bool IsEnd(const int&); //判断是否是最后一个读者

vector::const_iterator IsReader(const int& id);//借书时调用,判断是否存在读者

~RDatabase();

};

(9)class Borbook:保存所借图书的信息,包括书号(bid),书名(bname),还书截止日期(duetime)。

二、 功能实现及调用函数

1、 登录界面及管理员登录

运行程序后,输出登录界面,提示选择操作身份,选择“1”,输入管理员账号、密码,

验证管理员是否在admin.txt文件中存在,调用了类AdminDatabase中“bool CheckAdmin(const

string& Id,const string& Pwd)”函数。这里首先要从文件admin.txt中读出数据,使用了C++中“文件

处理”的操作,将数据读到容器“vector Admins”中。

2、 新增图书

5 选择管理员功能“3”,进入图书维护,选择“1”,新增图书。这里调用了BDatabase

中“void AddBook(int id, string name, string author, string press, int num)”函数。新增图书写到容器

“vector Books”中,用到了C++中STL中“容器”的思想。

3、 更改图书信息

选择“2”,更改图书信息操作调用了BDatabase中“vector::iterator Query()”查找是

否存在图书,调用“void Modify(Book &b)”函数修改图书。要查找图书,这里就要遍历容器

中的图书,用到了C++中“Iterators”的知识。上图列出了修改书名操作,其他几个操作与

此类似,不再列出。

4、 删除图书

删除图书信息操作调用了Book中“void DelBook()”函数,这里是在类BDatabase中创建

Book的对象,调用Book的函数,这体现了C++里“封装”的思想,其他类不能直接修改另一

个类的私有变量,而要通过这个类自己的函数去修改。

5、 显示所有图书