C++图书管理系统.docx

上传人:b****7 文档编号:11329073 上传时间:2023-02-27 格式:DOCX 页数:37 大小:901.44KB
下载 相关 举报
C++图书管理系统.docx_第1页
第1页 / 共37页
C++图书管理系统.docx_第2页
第2页 / 共37页
C++图书管理系统.docx_第3页
第3页 / 共37页
C++图书管理系统.docx_第4页
第4页 / 共37页
C++图书管理系统.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

C++图书管理系统.docx

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

C++图书管理系统.docx

C++图书管理系统

北华大学

C++课程实习报告

图书管理系统

学院:

电气信息工程学院

专业:

电子信息工程

班级:

学号:

姓名:

指导教师:

图书管理系统

一,需求分析

利用C++语言编程,设计图书管理系统,实现图书信息管理和读者信息管理

1.图书录入:

输入类别、名称、编号、作者、价钱等;

2.图书查询:

运用编号查询、书名查询和类别查询三种方法;

3.图书借阅:

选中图书,并输入借书者信息;

4.图书归还:

5.显示所有:

输出所有图书信息;

6.显示已借:

显示已借图书,并输出图书信息和借书者信息;

7.读者信息:

输入读者的编号、姓名

8.读者借阅:

显示读者借阅图书的情况

9.读者管理:

增添删除读者的信息,查看读者所有信息

10.其他功能

图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书馆和用户借阅资料繁多,包含很多的信息数据的管理。

介于这一现象,我们对于图书馆的借阅管理系统进行了全面的分析处理,在信息高速发展的今天,促进图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。

我的系统针对的是图书管理,面对大量纷繁复杂的图书管理工作,和不同图书的借出和归还,需要设计一个合理的系统,它应包括图书库,读者库,和图书的借还书信息建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,

对过时、损失的图书进行删除,达到降低成本提高工作效率的目标。

二,设计实现

(1)通过提示菜单选择可以进行的操作。

(2)将图书的信息存入文件中。

(3)将图书借阅情况信息存入文件中。

(4)在本系统中可以进行图书管理系统包含的基本操作,其中包括:

a)查看所有图书的信息。

b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。

c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。

d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。

e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。

f)查找图书,运用编号查询、书名查询和类别查询三种方法。

g)显示图书,显示所有和已借图书

(5)图书基本信息包括图书类别、名称、编号、作者、价钱。

(6)在本系统中可以进行读者管理系统包含的基本操作,其中包括:

a)输入一位读者的编号,从当前所有读者中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。

b)添加一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号的信息,

d)删除一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号的信息,如果存在则将该读者删除,否则给出提示信息,提示该读者不存在。

e)查找读者,运用编号查询方法。

(7)读者基本信息包括读者编号、姓名和借阅情况。

程序实现:

设计了四个类,Reader(读者类),Rdatabase(读者库类),Book(图书类)和Bdatabase(图书库类),

读者类主要用于存储信息,其中包括:

读者的基本属性inttag删除标记1:

已删,0:

未删;intno读者编号;charname[10]读者姓名;intborbook[Maxbor]所借图书;char*getname()获取姓名;intgettag()获取删除标记;intgetno()获取读者编号;voidsetname(charna[])设置姓名;voiddelbook()设置删除标记;voidaddreader(intn,char*na)增加读者;voidborrowbook(intbookid)借书操作;intretbook(intbookid)还书操作;voiddisp()输出读者信息;

读者库类包括:

inttop;读者记录指针Readerread[Maxr];读者记录RDatabase()构造函数,将reader.txt读到read[]中voidclear()删除所有读者信息intaddreader(intn,char*na)添加读者时先查找是否存在Reader*query(intreaderid)按编号查找voiddisp()输出所有读者信息voidreaderdata();读者库维护~RDatabase()析构函数,将read[]写入reader.txt文件中

图书类包括:

inttag;删除标记1:

已删0:

未删;intno图书编号charname[20];书名;intonshelf是否在架1:

在架0:

已借char*getname(){returnname;}获得书名;intgetno(){returnno;}获得书编号;intgettag(){returntag;}获得删除标记;voidsetname(charna[])设置书名;voiddelbook()删除图书;voidaddbook(intn,char*na)增加图书;intborrowbook()借书操作;voidretbook()还书操作;voiddisp()输出图书

图书库类包括:

inttop;图书记录指针Bookbook[Maxb];图书记录BDatabase()构造函数,将book.txt读到book[]中voidclear()全删intaddbook(intn,char*na)增加图书Book*query(intbookid)查找图书voidbookdata();图书库维护~Bdatabase析构函数,将book[]写入book.txt文件中

 

Reader(读者类)

Inttag

Intno

Charname[10]

Intborbook[maxbor]

Reader()

Char*getname()

Intgettag()

Intgetno()

Voidsetname(charna[])

Voiddelreader()

Voidaddreader(intn,char*na)

Voidborrowbook(intbookid)

Intretbook(intbookid)

Voiddisp()

Rdatabase(读者库类)

Inttop

Readerread[maxr]

Rdatabase()

Voidclear()

Intaddreader(intn,char*na)

Reader*query(intreaderid)

Voiddisp()

Voidreaderdata()

~Rdatabase()

 

Book(图书类)

Inttag

Intno

Charname[20]

Intoneself

Book()

Char*getname()

Intgetno()

Intgettag()

Voidsetname(charna[])

Voiddelbook()

Voidaddbook(intn,char*na)

Voidborrowbook()

Intretbook()

Voiddisp()

Bdatabase(图书库类)

Inttop

Bookbook[maxb]

BDatabase()

Voidclear()

Intaddbook(intn,char*na)

book*query(intbookid)

Voiddisp()

Voidbookdata()

~BDatabase()

三,测试结果

首页:

图书信息:

读者信息,读者借书:

借书成功后,图书信息和读者信息的变化

增加图书:

增加读者:

读者借已经被借走的书:

一个读者可以借,多本书,

读者不在读者信息中,借书的情况:

读者还书,及还书后的图书信息和读者信息:

读者不在读者信息中,还书的情况:

该图书没有被该读者借走:

查找图书:

显示图书,及删除全部图书,再显示:

查找读者:

删除编号1的读者,并显示:

全删读者信息并显示:

四,结论及需改进的问题

图书管理系统是我做C++程序设计的中,第一个大型的程序,在刚开始运行程序时,不知道怎么实现它的多种功能,后来经过好多次的调试,终于看懂了程序的大概,看懂了构造函数,及文本的应用。

在原有在网上下的程序的的基础上,增加了图书的价格、类型及作者姓名,以及按类,按书名查找图书的功能,显示已经借的图书。

该程序刚刚在网上下是,有很多小错误,一个已经被借的书,再次被借,没有读者信息的读者可以借书,没有借书的读者可以还书等小错误,经过自己几天的改正下,该图书管理系统逐渐完善。

由于时间和能力有限,我感觉该图书管理系统仍有很多改进的地方。

比如:

图书不可以能有一本,增加图书数量,每次借完少一本。

还有可以计算所有图书的价格总量。

读者方面可以,增加读者的更多信息,完善读者信息。

图书管理系统C++代码

#include

#include

#include

#include

constintMaxr=100;//读者最大人数

constintMaxb=100;//图书最大库存

constintMaxbor=10;//读者借阅图书最大量

classReader//读者类

{

private:

//读者基本属性

inttag;//删除标记1,已删0,未删

intno;//读者编号

charname[20];//读者姓名

intborbook[Maxbor];//所借图书

public:

char*getname()//获取姓名

{returnname;}

intgettag()//获取删除标记

{returntag;}

intgetno()//获取读者编号

{returnno;}

voidsetname(charna[])//设置姓名

{

strcpy(name,na);

}

voiddelbook()//设置删除标记

{

tag=1;

}

voidaddreader(intn,char*na)//增加读者

{

tag=0;

no=n;

strcpy(name,na);

for(inti=0;i

borbook[i]=0;

}

voidborrowbook(intbookid)//借书操作

{

for(inti=0;i

if(borbook[i]==0)

{

borbook[i]=bookid;

return;

}

}

intretbook(intbookid)//还书操作

{

for(inti=0;i

if(borbook[i]==bookid)

{

borbook[i]=0;

return1;

}

return0;

}

voiddisp()//输出读者信息

{

cout<

[";

for(inti=0;i

if(borbook[i]!

=0)

cout<

cout<<"]"<

}

};

classRDatabase//读者库类

{

inttop;//读者记录指针

Readerread[Maxr];//读者记录

public:

RDatabase()//构造函数,将reader.txt读到read[]中

{

Readers;

top=-1;

fstreamfile("reader.txt",ios:

:

in);

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)break;

top++;

read[top]=s;

}

file.close();

}

voidclear()//删除所有读者信息

{

top=-1;

}

intaddreader(intn,char*na)//添加读者是先查找是否存在

{

Reader*p=query(n);

if(p==NULL)

{

top++;

read[top].addreader(n,na);

return1;

}

return0;

}

Reader*query(intreaderid)//按编号查找

{

for(inti=0;i<=top;i++)

if(read[i].getno()==readerid&&read[i].gettag()==0)

return&read[i];

returnNULL;

}

voiddisp()//输出所有读者信息

{

for(inti=0;i<=top;i++)

{

if(read[i].gettag()==0)

read[i].disp();

}

}

voidreaderdata();//读书库维护

~RDatabase()//析构函数,将read[]写入reader.txt中

{

fstreamfile("reader.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(read[i].gettag()==0)

file.write((char*)&read[i],sizeof(read[i]));

file.close();

}

};

 

voidRDatabase:

:

readerdata()

{

intchoice=1;

charrname[20];

intreaderid;

Reader*r;

while(choice!

=0)

{

if(choice!

=0)

{

cout<<"读者管理"<

新增2:

更改3:

删除4:

查找5:

显示6:

全删0:

退出=>";

cin>>choice;

if(choice==0)continue;

if(choice==1)

{

cout<<"输入读者编号:

";

cin>>readerid;

cout<<"输入读者姓名:

";

cin>>rname;

addreader(readerid,rname);

}

else

if(choice==2)

{

cout<<"输入读者编号:

";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"该读者不存在"<

continue;

}

cout<<"输入新的姓名:

";

cin>>rname;

r->setname(rname);

}

else

if(choice==3)

{

cout<<"输入读者编号:

";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"该读者不存在"<

continue;

}

r->delbook();

}

else

if(choice==4)

{

cout<<"输入读者编号:

";

cin>>readerid;

r=query(readerid);

if(r==NULL)

{

cout<<"该读者不存在"<

continue;

}

r->disp();

}

else

if(choice==5)disp();

else

if(choice==6)clear();

else

cout<<"您的输入有误!

请重新输入:

"<

}

}

}

classBook//图书类

{

private:

inttag;//删除标记1,已删0,未删

intno;//图书编号

charname[20];//书名

intonshelf;//是否在架1,在架0,已借出

charzzname[20];//作者名字

charqian[20];//图书价钱

charlei[20];//类别

public:

char*getname()//获取书名

{returnname;}

intgetno()//获取图书编号

{returnno;}

intgettag()//获取删除标记

{returntag;}

char*getzzname()//获取作者名字

{returnzzname;}

char*getqian()//获取图书钱数

{returnqian;}

char*getlei()//获取图书类别

{returnlei;}

voidsetname(charna[])//设置书名

{

strcpy(name,na);

}

voidsetname1(charna1[])//设置作者名

{

strcpy(zzname,na1);

}

voidsetname2(charna2[])//设置钱数

{

strcpy(qian,na2);

}

voidsetname3(charna3[])//设置类别

{

strcpy(lei,na3);

}

voiddelbook()///删除图书

{

tag=1;

}

voidaddbook(intn,char*na,char*na1,char*na2,char*na3)//增加图书

{

tag=0;

no=n;

strcpy(name,na);

strcpy(zzname,na1);

strcpy(qian,na2);

strcpy(lei,na3);

onshelf=1;

}

intborrowbook()//借书操作

{

if(onshelf==1)

{

onshelf=0;

return1;

}

return0;

}

intretbook()//还书操作

{

if(onshelf==0)

{

onshelf=1;

return1;

}

return0;

}

voiddisp()//输出图书

{

cout<

"<

"<

"<

"<

"<

"在架":

"已借")<

}

voiddisp1()//借出图书

{

if(onshelf==0)

{cout<

"<

"<

"<

"<

"<

}

if(onshelf==1)

{

cout<<"无图书被借出";

}

}

};

classBDatabase//图书库类

{

inttop;//图书记录指针

Bookbook[Maxb];//图书记录

public:

BDatabase()//构造函数,将book.txt读到book[]中

{

Bookb;

top=-1;

fstreamfile("book.txt",ios:

:

in);

while

(1)

{

file.read((char*)&b,sizeof(b));

if(!

file)break;

top++;

book[top]=b;

}

file.close();

}

voidclear()//全删

{

top=-1;

}

intaddbook(intn,char*na,char*na1,char*na2,char*na3)//增加图书

{

Book*p=query(n);

if(p==NULL)

{

top++;

book[top].addbook(n,na,na1,na2,na3);

return1;

}

return0;

}

Book*query(intbookid)//查找图书编号

{

for(inti=0;i<=top;i++)

if(book[i].getno()==bookid&&book[i].gettag()==0)

return&book[i];

returnNULL;

}

Book*query1(charbookname[40])//查找图书名字

{

for(inti=0;i<=top;i++)

if(b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

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

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