图书馆管理系统.docx

上传人:b****5 文档编号:8235026 上传时间:2023-01-30 格式:DOCX 页数:24 大小:68.28KB
下载 相关 举报
图书馆管理系统.docx_第1页
第1页 / 共24页
图书馆管理系统.docx_第2页
第2页 / 共24页
图书馆管理系统.docx_第3页
第3页 / 共24页
图书馆管理系统.docx_第4页
第4页 / 共24页
图书馆管理系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

图书馆管理系统.docx

《图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统.docx(24页珍藏版)》请在冰豆网上搜索。

图书馆管理系统.docx

图书馆管理系统

图书管理系统

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<getid()<<"的图书"<

break;

}

cout<<"输入新的书名:

";

cin>>bname;

b->setname(bname);

break;

case'3':

cout<<"输入图书编号:

";

cin>>bookid;

b=search(bookid);

if(b=NULL)

{

cout<getid()<<"的图书"<

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模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1