程序设计综合课程设计
//********书籍结构体,用于存放书籍基本信息******** 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