图书馆管理系统.docx
- 文档编号:8235026
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:24
- 大小:68.28KB
图书馆管理系统.docx
《图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
图书馆管理系统
图书管理系统
1、设计目的
图书管理系统主要目的是对图书馆种类繁多的书籍进行管理,并且合理管理好用户的借还信息,提高图书馆的工作效率,降低管理成本。
由于图书馆在正常的运营过程中面对大量书籍、读者信息,以及两者间相互产生的借书信息、还书信息。
人工记录方法即效率低又错误过多,大大影响了图书馆的正常馆的正常管理工作。
因需要对书籍、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于管理效率的提高。
二、案例需求
1、案例描述
模拟图书管理系统的部分功能功能,包括读者注册、读者借阅、图书管理、用户管理等。
2、功能说明
(1)模拟图书管理系统的流程,包括读者注册、读者借阅、图书管理、用户管理等。
(2)管理员登陆的初始密码是1234。
(3)借阅图书数目受系统设置的最大借阅量的限制,系统的图书总数和用户总数受系统设置最大量的限制。
3、案例分析
本案例涉及两个方面的内容。
一个是用户可以进行信息的查询,借书还书等基本操作。
管理员凭借密码可以进行图书和用户的相关操作。
图书类具有“图书编号”、“图书名称”、“删除标记”、“是否在架”等基本属性。
需要实现“获取书名”、“获取图书编号”、“获取删除标记”、“读出所有图书信息”、“借书操作”、“还书操作”、“增加图书”、“删除图书”等操作。
把这些操作定义为图书类的成员函数。
图书库类的具有“借阅记录指针”、“图书记录”、“当前图书最大编号”等基本属性。
需要实现“增加图书”、“查找图书”、“读出所有图书信息”等操作。
把这些操作定义为图书库类的成员函数。
读者类具有“读者编号”、“读者姓名”、“删除标记”等基本特性。
需要实现“获取姓名”、“获取删除标记”、“获取读者编号”、“还书操作”、“记录所借图书”、“增加读者”、“借书操作”、“读出所有读者信息”等操作。
把这些定义为读者类的成员函数。
读者库类具有“读者记录指针”、“读者记录”、“当前读者最大编号”等特性性。
需要实现“添加读者”、“查询读者信息”、“输出所有读者信息”等操作。
把这些操作定义为图书库类的成员函数。
3、案例设计
1、类的设计
根据以上的设计思想,设计了四个类:
图书类、图书库类、读者类和读者库类。
图书类定义了对基本图书信息的模拟,包括获取书名、获取图书编号、获取删除标记、读出所有图书信息、借书操作、还书操作、增加图书、删除图书等功能。
图书库类定义了对基本图书入库管理的模拟,包括图书管理界面、增加图书、查找图书、读出所有图书信息等功能。
读者类完成对基本读者信息记录的存储,包括获取姓名、获取删除标记、获取读者编号、借书操作、还书操作、记录所借图书、增加读者、读出所有读者信息等功能。
读者库类定义了基本对图书对图书入库管理的模拟,包括读者管理界面、添加读者、输出所有读者信息、查询读者信息等功能。
类的定义保存在头文件database.h中,类的实现保存在database.cpp文件中。
(1)Book类的类图如下图所示
Book
-id:
int
-tag:
int
-oneself:
int
-name[20]:
int
+Book()
+getid():
int
+gettag():
int
+borrowbook():
int
+*getname():
char
+setname(char*na)():
void
+delbook():
void
+addbook():
void
+returnbook():
void
+show():
void
Book类图
(2)B_Data类的设计
B_Data类如下图所示
B_Data
-top:
int
-maxid:
int
-book[MAXBOOKS]
+B_Data()
+~B_Data()
+addbook():
int
+bookdata():
void
+show():
void
+*search()
B_Data类图
(3)Reader类的设计
Reader类图如下图所示
Reader
-id:
int
-tag:
int
-name[20]:
int
+Reader()
+getid():
int
+gettag():
int
+returnbook():
void
+borbook[MAXBORROWED]():
int
+*getname():
char
+setname():
void
+delbook():
void
+addreader():
void
+borrowbook():
int
+show():
void
Reader类图
(4)R_Data类的设计
R_Data类图如下图所示
R_Data
-top:
int
-maxid:
int
-read[MAXREADERS]
+R_Data()
+~R_Data()
+addreader():
int
+show():
void
+usershow():
void
+readerdata():
void
+*search()
R_Data类图
2、主程序设计
四个类Book类、B_Data类、Reader类及R_Data类完成了一个完整的图书管理系统的基本功能。
在主函数main()中,生成主界面分别指向用户登录和管理员登录。
用户登录处,可以进行新用户注册和老用户登录的界面。
新用户可以进行借书,还书,查询借阅情况等信息;管理员输入密码正确后进入系统,分别进行图书管理和用户管理等。
分别具有添加、删除、查找等基本功能。
4、案例实现
//Param.h参数定义头文件
#ifndefPARAM_H_
#definePARAM_H_
#include
#include
#include
#include
#include
constintMAXREADER=40000;//系统可容纳的读者
constintMAXBOOKS=1000000;//系统中可容纳的图书
constintMAXBORROWED=5;//每个读者最多借十本书
usingnamespacestd;
#endif
//database.h系统类定义头文件
#ifndefDATABASE_H_
#defineDATABASE_H_
#include"Param.h"
classReader//读者类
{
public:
Reader();//构造函数,初始化读者信息
intgettag();//获取删除标记
intgetid();//获取读者编号
intreturnbook(intbookid);//还书操作
intborbook[MAXBORROWED];//记录所借图书
char*getname();//获取姓名
voidsetname(charna[]);//设置姓名
voiddelbook();//设置删除标记
voidaddreader(intn,char*na);//增加读者
voidborrowbook(intbookid);//读出读者信息
voidshow();
private:
inttag;//删除标记1:
已删0:
未删
intid;//读者编号
charname[20];//读者姓名
};
classR_Data//读者库
{
public:
R_Data();//构造函数,将reader.txt读到read[]中
~R_Data();//析构函数,将read[]写到reader.txt
intaddreader(char*na);//添加读者
voidshow();//输出所有读者信息
voidusershow(intreaderid);//输出读者信息
voidreaderdata();//读者管理
Reader*search(intreaderid);//按编号查找
private:
intmaxid;//当前最大读者编号
inttop;//读者记录指针
Readerread[MAXREADER];//读者记录
};
classBook//图书类
{
public:
Book();//构造函数,初始化图书信息
intgettag();//获取删除标记
intgetid();//获取图书编号
intborrowbook();//借书操作
char*getname();//获取书名
voidsetname(charna[]);//设置书名
voiddelbook();//删除图书
voidaddbook(intn,char*na);//增加图书
voidreturnbook();//还书操作
voidshow();//读出所有图书信息
private:
inttag;//删除标记1:
已删0:
未删
intid;//图书编号
intonshelf;//是否在架1:
在架2:
已删
charname[20];//图书名称
};
classB_Data//图书库
{
public:
B_Data();//构造函数,将book.txt读到book[]中
~B_Data();//析构函数,将book[]写到book.txt
intaddbook(char*na);//增加图书
voidshow();//读出所有的图书
voidbookdata();//图书管理
Book*search(intbookid);//查找图书
private:
intmaxid;//当前图书最大编号
inttop;//图书记录指针
Bookbook[MAXBOOKS];//图书记录
};
#endif
//database.cpp类操作定义文件
#include"database.h"
Reader:
:
Reader()//构造函数,初始化读者信息
{
id=0;
tag=0;
for(inti=0;i borbook[i]=0; } char*Reader: : getname()//获取姓名 { returnname; } intReader: : gettag(){returntag;}//获取删除标记 intReader: : getid(){returnid;}//获取读者编号 voidReader: : setname(charna[]){strcpy(name,na);}//设置姓名 voidReader: : delbook()//设置删除标记 { for(inti=0;i { if(borbook[i]! =0) { cout<<"读者"< return; } } tag=1; cout<<"读者删除成功"< } voidReader: : addreader(intn,char*na)//增加读者 { tag=0; id=n; strcpy(name,na); for(inti=0;i borbook[i]=0; cout< cout<<"读者添加成功,读者编号为"< cout<<"请牢记该编号,这是你在本系统中的登录号码"< } voidReader: : borrowbook(intbookid)//借书操作 { for(inti=0;i { if(borbook[i]=0) { cout< return; } } } intReader: : returnbook(intbookid)//还书操作 { for(inti=0;i { if(borbook[i]=bookid) { borbook[i]=0; cout< return1; } } return0; } voidReader: : show()//读出读者信息 { cout< "; for(inti=0;i { if(borbook[i]! =0) { cout<<"["< } } } R_Data: : R_Data() { Readers; top=0; fstreamfile("reader.txt",ios: : in); while (1) { file.read((char*)&s,sizeof(s)); if(! file)break; top++; read[top]=s; } maxid=read[top].getid(); file.close(); } intR_Data: : addreader(char*na) { top++; maxid++; read[top].addreader(maxid,na); return1; } Reader*R_Data: : search(intreaderid) { for(inti=1;i<=top;i++) if(read[i].getid()==readerid&&read[i].gettag()==0) return&(read[i]); returnNULL; } voidR_Data: : show() { if(top==0) { cout< return; } for(inti=1;i<=top;i++) read[i].show(); } voidR_Data: : usershow(intreaderid) { read[readerid].show(); } voidR_Data: : readerdata() { charchoice=1; charrname[20]; intreaderid; Reader*r; while(choice! ='0') { cout<<"读者管理"< cout<<"1、增加读者信息"< cout< 退出读者管理"< "; cin>>choice; switch(choice) { case'1': cout<<"输入读者姓名: "; cin>>rname; addreader(rname); break; case'2': cout<<"输入读者编号: "; cin>>readerid; r=search(readerid); if(r==NULL) { cout< break; } cout<<"输入新的读者名: "; cin>>rname; r->setname(rname); break; case'3': cout<<"输入读者编号: "; cin>>readerid; r=search(readerid); if(r=NULL) { cout< break; } r->delbook(); break; case'4': cout<<"读入读者的编号: "; cin>>readerid; r=search(readerid); if(r==NULL) { cout<<"该读者不存在"< break; } r->show(); break; case'5': show(); break; case'0': break; default: cout<<"输入错误,请重新输入"< } } } R_Data: : ~R_Data() { fstreamfile("reader.txt",ios: : out); for(inti=1;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&(read[i]),sizeof(read[i])); file.close(); } Book: : Book() { id=0; tag=1; onshelf=1; } char*Book: : getname() { returnname; } intBook: : gettag() { returntag; } intBook: : getid(){returnid;} voidBook: : setname(charna[]){strcpy(name,na);} voidBook: : delbook() { onshelf=1; tag=1; } voidBook: : addbook(intn,char*na) { tag=0; id=n; strcpy(name,na); onshelf=1; cout< cout<<"图书添加成功,图书编号为"< cout<<"请牢记该编号,这是该图书在本系统中的使用号码"< } intBook: : borrowbook() { if(onshelf=1) { onshelf=0; return1; } return0; } voidBook: : returnbook() { onshelf=1; } voidBook: : show() { cout< "可借": "借出")< } B_Data: : B_Data() { Bookb; top=0; fstreamfile("book.txt",ios: : in); while (1) { file.read((char*)&b,sizeof(b)); if(! file)break; top++; book[top]=b; } maxid=book[top].getid(); file.close(); } intB_Data: : addbook(char*na) { top++; maxid++; book[top].addbook(maxid,na); return1; } Book*B_Data: : search(intbookid) { for(inti=1;i<=top;i++) if(book[i].getid()==bookid&&book[i].gettag()==0) return&(book[i]); returnNULL; } voidB_Data: : show() { if(top==0) { cout< return; } for(inti=1;i<=top;i++) if(book[i].gettag()==0) book[i].show(); } voidB_Data: : bookdata() { charchoice='1'; charbname[40]; intbookid; Book*b; while(choice! ='0') { cout<<"图书管理"< cout<<"1、增加图书信息"< cout< 退出图书管理"< "; cin>>choice; switch(choice) { case'1': cout<<"输入图书书名: "; cin>>bname; addbook(bname); break; case'2': cout<<"输入图书编号: "; cin>>bookid; b=search(bookid); if(b==NULL) { cout< break; } cout<<"输入新的书名: "; cin>>bname; b->setname(bname); break; case'3': cout<<"输入图书编号: "; cin>>bookid; b=search(bookid); if(b=NULL) { cout< break; } b->delbook(); break; case'4': cout<<"读入图书的编号: "; cin>>bookid; b=search(bookid); if(b==NULL) { cout<<"该图书不存在"< break; } b->show(); break; case'5': show(); break; case'0': break; de
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统