综合实验图书馆 2100015 蔡锦波 2班.docx
《综合实验图书馆 2100015 蔡锦波 2班.docx》由会员分享,可在线阅读,更多相关《综合实验图书馆 2100015 蔡锦波 2班.docx(25页珍藏版)》请在冰豆网上搜索。
综合实验图书馆2100015蔡锦波2班
院系:
计算机学院
实验课程:
计算机基础实验课程
实验项目:
图书馆管理系统设计
指导老师:
黄荔
开课时间:
20013~2014年度第2学期
专业:
计算机类
班级:
13级2班
学生:
蔡锦波
学号:
20132100015
华南师范大学教务处
图书馆管理系统设计
1、中文摘要
图书馆在我们的日常生活中起着不小的作用,当我们要查找资料时,我们可以在图书馆找到相关的书籍进行查阅,所以,拥有一个良好的管理系统,就能帮助图书馆的管理人员更方便管理图书,方便读者借书。
2、关键词:
作为一个小小的图书馆管理,最基本的功能要包括下面几个:
1、图书管理:
添加图书信息、更新图书信息、删除图书信息、查找图书;
2、借书;
3、还书;
4、读者管理:
添加读者信息、更新读者信息、删除读者信息、查找读者;
三、前言
为了设计一个小小图书馆管理系统,首先要熟悉图书馆日常管理需要哪些功能,然后对这些功能进行分解,然后逐步用代码实现这些功能;同时在完善功能的同时,也要考虑使用者的方便性,习惯性,所以要设置一些方便的功能进行操作;作为一个系统,界面也是一个很重要的因素,会影响使用者的心情,所以要设计好的界面。
为了提高编程能力,调用函数进行运算。
4、软件开发过程
1、功能比较多,开始的时候不知如何开始,后来就选择一个功能进行编写,慢慢地就知道如何开始写了,最后就将各个功能合并起来,完成整个设计。
2、数据库设计是整个数据库应用系统中非常重要的一步。
3、先运用临时函数对各个功能进行逐一验证,确保能运行,并体现相关的功能,最后采用一个主函数把各个功能联合起来。
图书类:
Book.h
#ifndef_book_h_//若_book_h_未定义,执行下一宏指令
#define_book_h_//用后续红字的正文代替_book_h_
#include
usingnamespacestd;
classBook//图书类
{
public:
Book(){};//构造函数
char*get_name();//获得书名
intget_num();//获得图书编号
intget_note();//获得是否删除标记
voiddel_book();//删除图书
voidadd_book(intn,char*na_);//增加图书
voidset_name(charna_[]);//设置书名
intbor_book();//借书
voidret_book();//还书
voidshow_book();//输出图书
private:
intbook_num;//图书编号
charname[20];//图书名字
intbook_note;//删除标记(1:
已删,0:
未删)
intbook_up;//上架标志(1:
上架-可借出,0:
下架-不可借出)
};
#endif
Book.cpp
#include
usingnamespacestd;
#include
#include"book.h"
char*Book:
:
get_name()
{returnname;}
intBook:
:
get_num()
{returnbook_num;}
intBook:
:
get_note()
{returnbook_note;}
voidBook:
:
set_name(charna_[])
{strcpy(name,na_);}
voidBook:
:
add_book(intn,char*na_)
{
book_note=0;
book_num=n;
strcpy(name,na_);
book_up=1;
}
voidBook:
:
del_book()
{book_note=1;}
intBook:
:
bor_book()
{
if(book_up==1)
{
book_up=0;
return1;
}
return0;
}
voidBook:
:
ret_book()
{book_up=1;}
voidBook:
:
show_book()
{
cout<<"booknum"<<"bookname"<<"borrow"<cout<<""<inti=0;
while(i<10)
{
cout<i++;
}
//for(i=0;i<20;i++)
//cout<if(book_up==1)
cout<<"can"<else
cout<<"not"<}
读者类
Reader.h
#ifndef_reader_h_
#define_reader_h_
#include
usingnamespacestd;
constintMaxbor=5;//最大借阅量
classReader//读者类
{
private:
intrea_note;//删除标记(1:
已删,0:
未删)
intrea_num;//读者编号
charname[20];//读者姓名
intbor_book[Maxbor];//所借图书
public:
Reader(){}//构造函数
char*get_name();//获得姓名
intget_note();//获得删除标记
intget_num();//获得读者标号
voidset_name(charna_[]);//设置姓名
voiddel_book();//设置删除标记
voidadd_reader(intn,char*na);//添加读者
voidborbook(intbookid);//借书操作
intret_book(intbookid);//还书操作
voidshow();//输出读者信息
};
#endif
Reader.cpp
#include
usingnamespacestd;
#include
#include"reader.h"
char*Reader:
:
get_name()
{returnname;}
intReader:
:
get_note()
{returnrea_note;}
intReader:
:
get_num()
{returnrea_num;}
voidReader:
:
set_name(charna_[])
{strcpy(name,na_);}
voidReader:
:
add_reader(intn,char*na_)
{
rea_note=0;
rea_num=n;
strcpy(name,na_);
for(inti=0;ibor_book[i]=0;
}
voidReader:
:
del_book()
{rea_note=1;}
voidReader:
:
borbook(intbookid)
{
for(inti=0;i{
if(bor_book[i]==0)
{
bor_book[i]=bookid;
return;
}
}
}
intReader:
:
ret_book(intbookid)
{
for(inti=0;i{
if(bor_book[i]==bookid)
{
bor_book[i]=0;
return1;
}
}
return0;
}
voidReader:
:
show()
{
if(rea_note==0)
{
cout<[";
for(inti=0;iif(bor_book[i]!
=0)cout<cout<<"]"<}
}
图书库类
Database.h
#ifndef_database_h_
#define_database_h_
#include
usingnamespacestd;
#include"book.h"
constintMaxb=100;//最大图书数量
classDatabase//图书库类
{
private:
inttop;//图书记录
Bookbook_[Maxb];//图书记录
public:
Database();//构造函数初始化:
读文件
voidclear_all();//全部删除
intadd_book(intn,char*na_);//添加图书
Book*query(intbookid);//查找图书
voidshow();//输出图书信息
voidbook_data();//图书库维护
~Database();//析构函数:
写文件
};
#endif
Database.cpp
#include
usingnamespacestd;
#include
#include"database.h"
usingnamespacestd;
Database:
:
Database()
{
Books;
top=-1;
fstreamfile("book.txt",ios:
:
in);
while
(1)
{
file.read((char*)&s,sizeof(s));
if(!
file)break;
top++;
book_[top]=s;
}
file.close();
}
voidDatabase:
:
clear_all()
{top=-1;}
Book*Database:
:
query(intbookid)
{
for(inti=0;i<=top;i++)
if(book_[i].get_num()==bookid&&book_[i].get_note()==0)
return&book_[i];
returnNULL;
}
intDatabase:
:
add_book(intn,char*na_)
{
Book*p=query(n);
if(p==NULL)
{
top++;
book_[top].add_book(n,na_);
return1;
}
return0;
}
voidDatabase:
:
show()
{
for(inti=0;i<=top;i++)
book_[i].show_book();
}
Database:
:
~Database()//析构函数
{
fstreamfile("book.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(book_[i].get_note()==0)
file.write((char*)&book_[i],sizeof(book_[i]));
file.close();
}
voidDatabase:
:
book_data()
{
intchoice=1;
charbook_name[20];
intbookid;
Book*b;
while(choice)
{
cout<<"图书维护"<cout<<"*******************************************************"<cout<<"**"<cout<<"*1:
新增2:
更改3:
删除4:
查找5:
显示6:
全删0:
退出*"<cout<<"**"<cout<<"*******************************************************"<cout<<"功能选择:
";
cin>>choice;
switch(choice)
{
case1:
cout<<"输入图书编号:
";
cin>>bookid;
cout<<"输入图书名:
";
cin>>book_name;
add_book(bookid,book_name);break;
case2:
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL){cout<<"该图书不存在!
"<cout<<"输入新的图书名:
";
cin>>book_name;
b->set_name(book_name);break;
case3:
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL){cout<<"该图书不存在!
"<b->del_book();
break;
case4:
cout<<"输入图书编号:
";
cin>>bookid;
b=query(bookid);
if(b==NULL){cout<<"该图书不存在!
"<b->show_book();break;
case5:
show();break;
case6:
clear_all();break;
}
}
}
读者库类
Rdatabase.h
#ifndef_rdatabase_h_
#define_rdatabase_h_
#include
usingnamespacestd;
#include"reader.h"
constintMaxr=1000;//最大读者数
classRDatabase//读者库类
{
private:
inttop;//读者记录指针
Readerreader_[Maxr];//读者记录
public:
RDatabase();//构造函数初始化:
读文件
voidclear_all();//删除所有读者信息
intadd_reader(intn,char*na_);//添加读者记录,先确定他们是否已经存在
Reader*query(intreaderid);//按编号查找
voidshow();//输出所有读者信息
voidrea_data();//读者库维护
~RDatabase();//析构函数:
写文件
};
#endif
Rdatabase.cpp
#include
#include
usingnamespacestd;
#include"rdatabase.h"
RDatabase:
:
RDatabase()
{
Readers;
top=-1;
fstreamfile("reader.txt",ios:
:
in);
while
(1)
{
file.read((char*)&s,sizeof(s));
if(!
file)break;
top++;
reader_[top]=s;
}
file.close();
}
voidRDatabase:
:
clear_all()
{top=-1;}
Reader*RDatabase:
:
query(intreaderid)
{
for(inti=0;i<=top;i++)
if(reader_[i].get_num()==readerid&&reader_[i].get_note()==0)
return&reader_[i];
returnNULL;
}
intRDatabase:
:
add_reader(intn,char*na_)
{
Reader*p=query(n);
if(p==NULL)
{
top++;
reader_[top].add_reader(n,na_);
return1;
}
return0;
}
voidRDatabase:
:
show()
{
for(inti=0;i<=top;i++)
reader_[i].show();
}
RDatabase:
:
~RDatabase()
{
fstreamfile("reader.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(reader_[i].get_note()==0)
file.write((char*)&reader_[i],sizeof(reader_[i]));
file.close();
}
voidRDatabase:
:
rea_data()
{
intchoice=1;
charreader_name[20];
intreaderid;
Reader*r;
while(choice)
{
cout<<"读者维护:
"<cout<<"———————————————————————————"<cout<<"||"<cout<<"|1:
新增2:
更改3:
删除4:
查找5:
显示6:
全删0:
退出|"<cout<<"||"<cout<<"———————————————————————————"<cout<<"功能选择:
";
cin>>choice;
switch(choice)
{
case1:
cout<<"输入读者编号:
";
cin>>readerid;
cout<<"输入读者名:
";
cin>>reader_name;
add_reader(readerid,reader_name);break;
case2:
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL){cout<<"该读者不存在!
"<cout<<"输入新的读者名:
";
cin>>reader_name;
r->set_name(reader_name);break;
case3:
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL){cout<<"该读者不存在!
"<case4:
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL){cout<<"该读者不存在!
"<r->show();break;
case5:
show();break;
case6:
clear_all();break;
}
}
}
主函数
#include
#include"reader.h"
#include"rdatabase.h"
#include"book.h"
#include"database.h"
usingnamespacestd;
intmain()
{
intchoice=1,bookid,readerid;
RDatabaseReaderDB;
DatabaseBookDB;
Reader*r;
Book*b;
cout<<"*********************************************"<cout<<"**"<cout<<"**"<cout<<"*“小小图书馆”*"<cout<<"**"<cout<<"**"<cout<<"*********************************************"<cout<while(choice)
{
cout<<"—————————————————————————————"<cout<<"||"<cout<<"|1:
图书管理2:
借书功能3:
还书功能4:
读者管理0:
离开|"<cout<<"||"<cout<<"—————————————————————————————"<cout<<"请选择功能:
";
cin>>choice;
switch(choice)
{
case2:
cout<<"输入借书读者编号:
";
cin>>readerid;
cout<<"输入图书编号";
cin>>bookid;
r=ReaderDB.query(readerid);
if(r==NULL)
{
cout<<"该读者不存在,不能借书!
"<break;
}
b=BookDB.query(bookid);
if(b==NULL)
{
cout<<"该图书不存在,不能借书!
"<break;
}
if(b->bor_book()==0)
{
cout<<"该图书已借出,不能借书!
"<break;
}
r->borbook(b->get_num());break;
case3:
cout<<"输入读者编号:
";
cin>>readerid;
cout<<"输入图书编号";
cin>>bo