图书馆管理程序报告 下载本文

程序设计综合课程设计

//********书籍结构体,用于存放书籍基本信息******** class Book { private:

char bnum[10]; //书号 char bname[20]; //书名

char bauthor[10]; //作者 char rname[10]; //借阅人

public:

int tag; //状态标记判断指标(已借/在架) Book() //构造函数初始化信息

{strcpy(bnum,\

\

void set_bnum(char *no) //设置书号

{strcpy(bnum,no);} //把字符串no中的字符复制到字符串

bnum中

char *get_bnum() //获得书号

{ return bnum;} //返回值为bnum

void set_bname(char *n) //设置书名

{strcpy(bname,n);}

char *get_bname() //获得书名

{return bname;}

void set_bauthor(char *a) //设置作者

{strcpy(bauthor,a);}

char * get_bauthor() //获得作者姓名

{return bauthor;}

void set_tag(int t) //状态设置

{tag=t;}

void set_rname(char *rn) //设置借阅人

{strcpy(rname,rn);}

23

程序设计综合课程设计

char *get_rname() //获得借阅人姓名

{return rname;}

void show_tag() //显示图书状态

{

if(tag==1) {cout<<\已借\ else

{cout<<\在架\

}

void copy(Book m) //Book结构体copy函数 {

strcpy(bnum,m.get_bnum()); //将获得书号函数里的返回值里的

字符复制到bnum

strcpy(bname,m.get_bname()); strcpy(bauthor,m.get_bauthor()); tag=0;

} };

//**********书籍管理结构体,实现管理书籍功能********** class BookManage {

private:

Book books[100]; //定义Book书籍结构体数组对象,最大容量100本 int length;

void saveFile() //保存书籍文件 {

ofstream fwrite; //定义输出文件流ofstream结构体对象fwrite if(!fwrite)

{cout<<\文件保存失败!\\n\

24

程序设计综合课程设计

fwrite.open(BookFile,ios::binary);//使文件流与文件建立关联,以

二进制方式打开

fwrite.write((char *)books,length*sizeof(Book)); //计算并返回

所占字节数

fwrite.close(); //关闭磁盘文件

}

void readFile() //读取书籍文件 {

ifstream fread; //定义输入文件流对象fread length=0; if(!fread)

{cout<<\文件读取失败!\

Book temp; //定义书籍结构体临时对象temp int i=0;

fread.open(BookFile ,ios::binary);//使文件流与文件建立关联,以二进制方式打开

while((fread.read((char *)&books[i],sizeof(Book))))

i++; //每读完一次,指针后移一位,直到不能读出正确

结果为止

length=i;

fread.close();

}

public:

BookManage() //构造函数,读取磁盘文件 {

length=0; //从头读起,计数,最大100

readFile(); //调用读取文件函数

}

~BookManage() //析构函数,保存磁盘文件 {

25

程序设计综合课程设计

saveFile(); //调用保存文件函数

}

bool add(Book book) //添加图书资料 {

if(length>=100) {

cout<<\对不起,储存已满,您无法继续添加!\\n\ return -1;

}

else

{

books[length].copy(book); //调用书籍结构体copy函数 length++;

return (length-1);

}

int bnu_search(char *bnu) //按书号查找书籍

}

{

for(int i=0;i

if(strcmp(books[i].get_bnum(),bnu)==0) //字符串比较,判断是否相等

return i; return -1; }

int bna_search(char *bna) //按书名查找书籍

{

for(int i=0;i

if(strcmp(books[i].get_bname(),bna)==0) //判断 return i; return -1;

26