图书馆管理系统c++课设报告附源代码.doc
文本预览下载声明
目录
需求分析......................3
2、系统总框图....................3
3、每个模块的设计分析............4
4、列出所有定义的函数及说明......7
5、比较有特色的算法..............20
6、存在的问题与不足及对策........27
7、使用说明......................29
8、程序源代码....................34
需求分析
以往,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较繁琐。在借书时,读者首先将要借的书好借阅证交给工作人员,然后工作人员将每本书的信息卡片好读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。在还书时,读者首先将要还的书交给工作人员,然后工作人员根据图书信息找到相应的书卡好借阅证,并填写相应的还书信息。
南京航空航天大学的图书馆有许多书,如果靠人工的方式来进行管理,那么工作量会非常大。图书的统计和管理会成为让人头疼的问题,读者借阅图书进行登记也会十分的不方便。这时,利用计算机来为我们进行这些统计管理的工作,可以给我们的生活带来大大的便利,并且提高工作效率。
由于条件有限,只能使用键盘输入书的信息,所以在输入图书的ISBN号时有些麻烦。所以在课设里,简化了ISBN号,没有输入书本的真实ISBN号。在现实生活中,采用扫描的方式录入ISBN号会更加准确,高效。
系统总框图
每个模块的设计分析
主界面模块
当进入该管理系统时候,提示相应的说明,够让使用者了解该如何进行操作。同时还要具有美观性。
用户通过键盘输入选择,程序通过检测输入内容进行比对,调用不同的函数,从而实现不同的功能。并且,在输入错误数据时程序不会崩溃。
读者注册模块
新用户使用该管理系统时,可以通过注册获得一个属于自己的账号。注册模块要引导读者完成一步步的注册步骤,并且在最后把注册所得账号告知读者。
在注册时,用了避免用户输错设定的密码,所以采用了输入两次的方式。如果两次输入的结果是一致的,那么就完成账号的注册。如果两次输的密码不一致,则用户需要重新输入设定的密码。这样的方式可以保证每一次的注册都是有效的,避免了用户因为输入错误,无法找回自己的密码。
读者中心模块
读者登陆成功之后才可以进入该模块。
在该模块,读者可以进行密码重置,注销,查看借书情况,借书,还书。并且也设有返回菜单功能。
注销帐户时,要考虑到删去该读者节点之后不能影响到整个链表的连续性。
所有函数均封装在ReaderList类中,信息存储在Reade类r中,ReaderList类中定义了三个个Reader*指针,一个是head_point, 作为链表的头结点;一个是tail_point,作为链表的尾指针;另一个是point,作为活动指针,在不同的类的成员函数中都可使用。为了防止该活动指针使用过频,造成几个函数同时使用同一个指针指向不明,在有些函数里还定义了一些临时指针。
借书还书模块
读者在登录之后才可以进行借书,还书。借还书函数会分别调用读者链表和书单链表中的借还书函数,并且在调用这些函数之前会先进行借还书检查。比如,你不能还你没有借过的书,也不能超过限定数目借书。用户需先登录,借还时要输入ISBN号。
以借书为例。
借书操作调用的直接函数为:
int ReaderList::Borrow(BookList*g, Reader *p, string bookISBN);
它会调用四个函数来完成借书操作:
bool BookList::Check_borrow_book(string ISBN_Of_Book) //Booklist中的借书检查
void BookList::borrow_book(string ISBN_Of_Book) //Booklist中的借书手续
bool ReaderList::Check_borrowBook(Reader*p, string BookISBN) //ReaderList中的借书检查
void ReaderList::borrowBook(Reader*p, string BookISBN) //ReaderList中的借书手续
在Booklist和ReaderList的类中都有借书检查和借书手续函数。
首先会调用借书检查函数,如果不满足借书条件则不会继续借书的操作。只有在两个借书检查都返回true的时候才会进行借书操作,防止了在书类链表中借了书却在读者类链表中没有借书的情况,实现了两个链表借书的同步性。
因为添加图书
显示全部