图书管理系统程序设计报告
- 格式: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、 显示所有图书