图书馆管理系统c课设报告附源代码Word格式文档下载.docx

上传人:b****6 文档编号:17713170 上传时间:2022-12-08 格式:DOCX 页数:88 大小:2.01MB
下载 相关 举报
图书馆管理系统c课设报告附源代码Word格式文档下载.docx_第1页
第1页 / 共88页
图书馆管理系统c课设报告附源代码Word格式文档下载.docx_第2页
第2页 / 共88页
图书馆管理系统c课设报告附源代码Word格式文档下载.docx_第3页
第3页 / 共88页
图书馆管理系统c课设报告附源代码Word格式文档下载.docx_第4页
第4页 / 共88页
图书馆管理系统c课设报告附源代码Word格式文档下载.docx_第5页
第5页 / 共88页
点击查看更多>>
下载资源
资源描述

图书馆管理系统c课设报告附源代码Word格式文档下载.docx

《图书馆管理系统c课设报告附源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统c课设报告附源代码Word格式文档下载.docx(88页珍藏版)》请在冰豆网上搜索。

图书馆管理系统c课设报告附源代码Word格式文档下载.docx

所有函数均封装在ReaderList类中,信息存储在Reade类r中,ReaderList类中定义了三个个Reader*指针,一个是head_point,作为链表的头结点;

一个是tail_point,作为链表的尾指针;

另一个是point,作为活动指针,在不同的类的成员函数中都可使用。

为了防止该活动指针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里还定义了一些临时指针。

(4)借书还书模块

读者在登录之后才可以进行借书,还书。

借还书函数会分别调用读者链表和书单链表中的借还书函数,并且在调用这些函数之前会先进行借还书检查。

比如,你不能还你没有借过的书,也不能超过限定数目借书。

用户需先登录,借还时要输入ISBN号。

以借书为例。

借书操作调用的直接函数为:

intReaderList:

:

Borrow(BookList*g,Reader*p,stringbookISBN);

它会调用四个函数来完成借书操作:

boolBookList:

Check_borrow_book(stringISBN_Of_Book)//Booklist中的借书检查

voidBookList:

borrow_book(stringISBN_Of_Book)//Booklist中的借书手续

boolReaderList:

Check_borrowBook(Reader*p,stringBookISBN)//ReaderList中的借书检查

voidReaderList:

borrowBook(Reader*p,stringBookISBN)//ReaderList中的借书手续

在Booklist和ReaderList的类中都有借书检查和借书手续函数。

首先会调用借书检查函数,如果不满足借书条件则不会继续借书的操作。

只有在两个借书检查都返回true的时候才会进行借书操作,防止了在书类链表中借了书却在读者类链表中没有借书的情况,实现了两个链表借书的同步性。

因为添加图书时会保证ISBN号的唯一性,如果有ISBN号相同的图书则不会成功添加到书类链表。

借书函数都是通过ISBN号查找图书的,所以借书时不会有借错书的情况。

(5)查找图书模块

用户不需要登陆就可以使用该模块。

用户可以通过ISBN号,书名,出版社,作者对图书进行精确的查找。

同时,为了提高用户的使用质量,增加了输入关键字搜索功能。

输入查找信息后,程序会对图书的ISBN号,书名,出版社以及作者等信息进行比对,并且显示所有满足搜索条件的结果。

这样,读者在搜索时的自由度就增加了。

关键字搜索函数是通过string类中自带的find()函数实现的,所以减小了工作量。

增加了显示全部图书的功能,便于满足用户需求。

增加了返回主菜单的功能,提高了程序的连续操作性。

(6)管理图书模块

要输入管理员密码以后才可以进入图书管理菜单。

为了安全性,管理员在登录之后可以选择修改自己的密码。

并且,这个密码在退出系统时可以保存下来,下一次打开程序时的密码就会使修改后的密码了。

书单信息菜单里,可以对图书进行添加,删除,清空,修改,显示所有。

都是分别调用了BookList类中的函数,对整个书单链表进行了一系列操作。

在修改时会进入图书修改菜单

在搜索书的ISBN号之后会返回该本书的指针,对该本书的信息进行一系列修改,并且也可以返回上级书库信息菜单。

(7)读取保存信息模块

信息的读取和保存分为三大部分,读者信息,书单信息,管理员信息的保存。

而这三个部分的信息又分别由六个函数负责读取和保存。

在保存文件里,链表中的信息会依次存入txt文件。

在读取时,会先将信息存入一个类的数组里,然后将类的数组依次存入链表里。

系统在打开时会自动从文件里面读取上次存储的信息,在退出系统时可以选择保存或不保存本次操作的结果。

如果要保存,则会将操作后的链表存入文件,刷新数据。

总的来说,程序的各个菜单都有比较清晰的结构,也都有返回上级菜单的功能。

基本上所有的函数都考虑到了读者输入错误数据的情况,并且能够进行一定的处理,具有较强的健壮性,不容易崩溃。

4.列出所有定义的函数及说明

[管理员类]中的函数

#ifndefLIBRARIAN_H_INCLUDED

#defineLIBRARIAN_H_INCLUDED

#include<

string>

classLibrarian

{

private:

stringpassword;

public:

Librarian()

{

password="

880128"

;

}

Librarian(stringa)

password=a;

~Librarian()

"

voidchangePassword(stringa)

intchangePassword()//重载修改密码函数

cout<

<

是否需要修改管理员密码?

按0表示确定,按其他任意键表示不需要修改:

endl;

charchoice;

cin>

>

choice;

if(choice=='

0'

请设置新密码:

password;

修改成功!

return0;

else

boolLogin()//管理员登陆

cout<

"

请输入管理员密码:

<

endl;

stringpass;

cin>

pass;

if(pass==password)

成功登录!

changePassword();

密码错误!

returnfalse;

system("

pause"

);

returntrue;

stringgetPassword()

returnpassword;

};

#endif//LIBRARIAN_H_INCLUDED

[书类]中的函数

#ifndefBOOK_H_INCLUDED

#defineBOOK_H_INCLUDED

iostream>

windows.h>

usingnamespacestd;

classBookList;

classBook

friendclassBookList;

friendvoidsaveBooks(BookList*p);

friendvoidreadBooks(BookList*p);

protected:

stringISBN;

stringKind;

//图书分类

stringBookName;

//书名

stringWriter;

//作者名

stringPublisher;

//出版商

intnumber;

//单个书的本数

Book*next;

//指向下一个节点的指针

Book();

Book(stringisbn,stringkind,stringname,stringwriter,stringpublisher,intnumber);

voidcopyBook(stringisbn,stringkind,stringname,stringwriter,stringpublisher,intnumber);

voidcopyBook(Book*p);

voidsetISBN(stringtem);

voidsetKind(stringtem);

voidsetBookName(stringtem);

voidsetWriter(stringtem);

voidsetPublisher(stringtem);

voidsetNumber(inttem);

voidoperator=(constBook&

book);

//运算符重载

voidsetBook();

//重新设定该本书的所有信息

voiddisplayBook();

//展示一本书

virtualvoidAdd_list(classBook*p)//把书加入链表

next=p;

p->

next=NULL;

virtualvoidAddNewBook()//添加新书并且设置它的信息

next=newclassBook;

next->

setBook();

已经成功添加新书:

displayBook();

virtualvoidshow_all()//显示所有书

system("

cls"

displayBook();

while(next!

=NULL)

next=next->

next;

#endif//BOOK_H_INCLUDED

[书链表类]中的函数

#ifndefBOOKLIST_H_INCLUDED

#defineBOOKLIST_H_INCLUDED

#include"

Book.h"

classReaderList;

classBook;

classBookList:

publicBook//书类的链表

classBook*head;

//头指针

classBook*tail;

//尾指针

classBook*node;

//活动指针

staticintN;

friendReaderList;

//保存图书到txt文件的函数

BookList();

~BookList();

voidAdd_list(classBook*p);

//把一本书加入图书链表

voidAddNewBook();

//添加一本书到链表里,并且设置它的各类信息

boolCheck_borrow_book(stringISBN_Of_Book);

//检查是否有这一本书,并且它是否有库存返回是否能借书的布尔变量

voidborrow_book(stringISBN_Of_Book);

//在书类链表里的借书操作

boolCheck_return_book(stringISBN_Of_Book);

//检查是否存在这本书

voidreturn_book(stringISBN_Of_Book);

//在书类链表里进行还书操作

classBook*search_ISBN(stringisbn);

//按ISBN查找图书,并且返回一个Book*

voidsearch_BookName(stringbookname);

//按书名查找并展示所有查找结果

voidsearch_Writer(stringwriter);

//按作者名查找并展示所有查找结果

voidsearch_Publisher(stringpublisher);

//按出版社查找并展示所有查找结果

voidsearch_keyword(stringkey);

//按关键字查找并展示所有查找结果

intsearch();

//查找图书的菜单用来调用其他的查找函数

voidshow_all();

//显示书库中的所有图书

booldelete_onebook(stringISBN_Of_Book);

//从链表中删除一本书

intchange_content(stringISBN_Of_Book);

//图书修改菜单用来调用不同的改变图书信息的函数

intGoInto_BookInfo();

//书库信息菜单,用来调用对图书管理的各种操作

#endif//BOOKLIST_H_INCLUDED

[读者类]中的函数

#ifndefREADER_H_INCLUDED

#defineREADER_H_INCLUDED

classReader

friendvoidsaveReaders(ReaderList*g);

friendvoidreadReaders(ReaderList*g);

intReaderID;

stringReaderName;

//读者姓名

stringPassword;

//密码

stringBookInHand[5];

//每人最多借5本书,可以根据需要增减限额

intnumberOfBooks;

//记录借的书的数目,0为没有借书,1为借了一本,2为借了二本

Reader*next;

//指向下一节点的指针

Reader();

~Reader();

Reader(intID,stringname,stringmi,stringbooks[5],intnum);

voidsetReader(intID,stringname,stringmi,stringbooks[5],intnum);

voidcopyReader(Reader*p);

voidoperator=(constReader&

reader);

voidresetPassword(stringnewpassword);

//重设密码

virtualvoidAdd_Point(Reader*p)//添加一个读者节点

next=p;

next=NULL;

virtualvoidchange_password()

stringnewpassword;

newpassword;

Password=newpassword;

#endif//READER_H_INCLUDED

[读者链表类]中的函数

#ifndefREADERLIST_H_INCLUDED

#defineREADERLIST_H_INCLUDED

string.h>

BookList.h"

Reader.h"

classReader;

classReaderList:

publicReader

Reader*head_point;

Reader*tail_point;

Reader*point;

//定义两个Rreader指针,head_point为头指针,point为活动指针

staticintnumberOfReader;

ReaderList();

//构造函数,使指针初始化

~ReaderList();

voidAdd_Point(Reader*p);

//增加新结点到链表

voidreader_register();

//读者注册

Reader*search_ReaderID(intid);

//按ID查找

Reader*reader_land(intid,stringpasswordT);

//读者登录,成功后将返回该读者的Reader*

voidshow_OneReader(Reader*p,BookList*g);

//显示某读者借书情况

voidchange_password(Reader*p);

//修改密码

intdelete_reader(Reader*p);

//读者注销

boolCheck_borrowBook(Reader*p,stringBookISBN);

//检查是否可以借书

voidborrowBook(Reader*p,stringBookISBN);

//进行借书操作

boolCheck_returnBook(Reader*p,stringBookISBN);

//检查是否可以还书

voidreturnBook(Reader*p,stringBookISBN);

//进行还书操作

intBorrow(BookList*g,Reader*p,stringbookISBN);

//借书操作的总的函数,用来调用书类链表和读者类链表里的借书相关函数

intReturn(BookList*g,Reader*p,stringbookISBN);

//还书操作的总的函数,用来调用书类链表和读者类链表里的还书相关函数

intGoInto_ReaderInfo(Reader*p,BookList*g);

//登陆后的读者信息菜单

#endif//READERLIST_H_INCLUDED

[不在类中的函数]

{帮助函数}

voidhelp()

ifstreamreadHelp;

readHelp.open("

help.txt"

ios:

in);

if(readHelp.fail())

cout<

无法打开文件!

exit(0);

stringtemp;

while(!

readHelp.eof())

getline(readHelp,temp);

temp<

}

{存储读取相关的函数}

voidsaveLibrarian(Librarian*t)

ofstreamsaveLibrarian;

saveLibrarian.open("

Librarian.txt"

ios:

out);

if(!

saveLibrarian)

保存管理员信息失败!

exit(0);

saveLibrarian<

t->

getPassword();

endl<

成功保存管理员信息!

saveLibrarian.close();

voidreadLibrarian(Librarian*t)

stringtem;

ifstreamsaveLibrarian;

saveLibrarian>

tem;

t->

changePassword(tem);

成功读取管理员信息!

voidsaveBooks(BookList*p)

ofstreamsaveBook;

saveBook.open("

Books.txt"

saveBook)

保存书单信息失败!

Book*tem=p-

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

当前位置:首页 > PPT模板 > 动物植物

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

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