C++图书库存管理器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
using namespace std;
//------------------以下是类定义:Book -----------------------------------------
class bookList;
class Book //书类
{
char bookNo[15]; //书号
char bookName[20]; //书名
int Num; //数量
public:
Book(char *bNo=NULL, char *bNa=NULL, int n=0); //构造函数,各参数均有缺省值
void Show(); //显示一本图书信息
void print(ofstream &out); //将一本图书信息写入数据文件
void setInfo(char *nop, char *nap, int n); //设置一本图书信息
void setNum(int n); //设置库存量
int getNum(); //获取库存量
friend class bookList; //将bookList类说明为友元类。
//……//根据需要添加公有函数接口…… };
Book::Book(char *bNo, char *bNa, int n)
{
if(bNo)
strcpy(bookNo, bNo);
else
bookNo[0]='\0';
if(bNa)
strcpy(bookName, bNa);
else
bookName[0]='\0';
Num=n;
}
void Book::Show()
{
cout< } void Book::print(ofstream &out) { out< } void Book::setInfo(char *nop, char *nap, int n) { strcpy(bookNo, nop); strcpy(bookName, nap); Num=n; } void Book::setNum(int n) //设置库存量 { Num=n; } int Book::getNum() //获取库存量 { return Num; } //-----------以下是类定义:bookList----------------------------------------------------- class bookList //书库类 { Book *Books; //图书线性表首指针 int curLen; //现有图书种类数 int maxLen; //图书最多种类数 public: bookList(int Len=20); //构造函数,初始化书库 ~ bookList ( ); //析构函数,释放书库空间 void appendBook(char *nop,char *nap, int n); //追加一种图书 int isIn(char *bkNo); //按书号查找图书,若存在,返回其下标;否则返回-1 Book & getBooks(int i); //返回下标为i的图书对象的引用 void deleteBook(char * bkNo); //删除指定书号的图书 void sortBooks(); //按书号关键字排成升序 void showAll( ); //显示全部图书 int curBookLen( ); //返回现有图书种类数 void setCurBookLen(int len); //设置现有图书种类数 void initBookList(); //从文件bookdata.txt中读入全部信息存入书库Books结 void readFromFile(char *filename);//从参数指定文件中读入所有的图书 void writeToFile(char *filename);//将书库中所有种类的图书写入参数指定文件中}; bookList::bookList(int Len) //构造函数,初始化书库 { maxLen = Len; curLen = 0; if(Len) Books = new Book[Len]; else Books = NULL; } bookList::~ bookList ( ) //析构函数,释放书库空间 { if(Books) delete []Books; } void bookList::appendBook(char *nop,char *nap, int n) //将追加一本图书 { if(curLen==maxLen) { Book *newBooks; newBooks=new Book[maxLen+20]; for(int i=0;i { newBooks[i]=Books[i]; } delete [maxLen]Books; maxLen+=20; Books=newBooks; } Books[curLen++].setInfo (nop,nap,n); } int bookList::isIn(char *bkNo) //按书号查找图书,若存在,返回其下标;否则返回-1 { for(int i=0;i { if(strcmp(Books[i].bookNo,bkNo)); else return i;