图书借阅管理系统.docx

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

图书借阅管理系统.docx

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

图书借阅管理系统.docx

图书借阅管理系统

一、需求分析

管理员功能:

①登录:

输入管理员密码,若密码错误则不得执行管理员操作。

②添加新书:

增加新的图书资料,同时需检查新书的图书编号是否已存在于

原图书资料中,若已存在则应取消添加或提示重新输入。

③修改图书:

通过编号查询该图书资料,若该编号存在,则显示已有信息,

允许修改,否则提示无该图书信息。

④删除图书:

通过编号查询该图书资料,若该编号存在,则显示已有信息,

允许删除,否则提示无该图书信息。

删除对象包括该图书资料

以及“图书状态”和“借阅人”中与此书相关的所有记录。

⑤查找图书:

A.按书号查找:

通过编号查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

B.按书名查找:

通过书名查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

C.按作者查找:

通过作者查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

⑥查看全部图书:

显示所有图书资料,包括书号、书名、作者、状态和借阅

人等信息。

⑦修改读者:

通过姓名查询该读者信息,若该姓名存在,则显示已有信息,

允许修改,否则提示无该读者信息。

⑧删除读者:

通过姓名查询该读者信息,若该姓名存在,则显示已有信息,

允许删除,否则提示无该读者信息。

删除对象包括该读者姓名、

班级、电话以及“图书状态”和“借阅人”中与此人相关的所

有记录。

⑨查看所有读者:

显示所有读者资料,包括姓名、班级、电话等信息。

读者功能:

①登录:

输入读者姓名,若未经注册则不得进入读者服务界面。

②注册:

新用户经注册方可登录系统并使用读者服务功能。

③借书:

A.输入所需图书编号,判断该编号是否存在,若不存在则提示重新输入。

B.若所输入图书编号存在,则判断该书籍是否已被借出,若已借则不允

许执行借书操作。

C.若所输入图书未借,则提示输入读者姓名,判断所输入读者姓名是否

存在,若不存在则提示重新输入。

D.若读者姓名存在,则允许执行借书操作。

E.借书处理包括在“图书状态”中加上“已借”标记。

④还书:

A.输入所借书编号,判断该编号是否存在,若不存在则提示重新输入。

B.判断该书是否已借出,若未借则不允许执行还书操作。

C.借书处理包括在“图书状态”中加上“未借”标记。

⑤查询图书:

A.按书号查找:

通过编号查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

B.按书名查找:

通过书名查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

C.按作者查找:

通过作者查询该图书资料,若该编号存在,则显示图书信

息,否则提示无该图书信息。

⑥查看借阅情况:

输入读者姓名,若该姓名不存在则提示重新输入,若该姓

名存在则显示该读者借阅信息。

二、总体设计

经过需求分析,本系统共设计了五个大模块,分别是书籍数据维护模块、书籍管理模块、读者数据维护模块、读者管理模块和菜单模块。

接着相应定义了五个结构体,分别是书籍结构体(Book)、书籍管理结构体(BookManage)、读者结构体(Reader)、读者管理结构体(ReaderManage)和菜单结构体(Menu)。

书籍结构体(Book)的功能在于存放和维护书籍的基本信息,包括书号、书名、作者、状态(已借/在架)和借阅人;书籍管理结构体(BookManage)的功能在于实现对书籍的相关操作,包括读取书籍文档文件(book.txt)、保存书籍文档文件、添加图书、修改图书、删除图书、显示全部图书和查找图书;读者结构体(Reader)的功能在于存放和维护读者的基本信息,包括姓名、班级和电话;读者管理结构体(ReaderManage)的功能在于实现对读者的相关操作,包括读取读者文档文件(reader.txt)、保存读者文档文件、新读者注册、修改读者、删除读者、显示全部读者和查找读者;菜单结构体(Menu)的功能在于实现各界面的引导工作,包括主登录界面、系统管理界面、读者登录界面、读者服务界面、管理员书籍查找界面和读者书籍查找界面。

系统层次结构图

流程图(部分示例)

①管理员登录

②读者登录

③读者借阅图书

三、详细设计

书籍结构体(Book)

①私有数据

charbnum[10];//书号

charbname[20];//书名

charbauthor[10];//作者

charrname[10];//借阅人

②公有数据及公有函数

inttag;//状态标记判断指标(已借/在架)

Book()//构造函数初始化信息

voidset_bnum(char*no)//设置书号

char*get_bnum()//获得书号

voidset_bname(char*n)//设置书名

char*get_bname()//获得书名

voidset_bauthor(char*a)//设置作者

char*get_bauthor()//获得作者姓名

voidset_tag(intt)//状态设置

voidset_rname(char*rn)//设置借阅人

char*get_rname()//获得借阅人姓名

voidshow_tag()//显示图书状态

voidcopy(Bookm)//Book结构体copy函数

书籍管理结构体(BookManage)

①私有数据及函数

Bookbooks[100];//定义Book书籍结构体数组对象,最大容量100本

intlength;//计数

voidsaveFile()//保存书籍文件

voidreadFile()//读取书籍文件

②公有数据及函数

BookManage()//构造函数,读取磁盘文件

~BookManage()//析构函数,保存磁盘文件

booladd(Bookbook)//添加图书资料

intbnu_search(char*bnu)//按书号查找书籍

intbna_search(char*bna)//按书名查找书籍

intbau_search(char*bau)//按作者查找书籍

intrn_search(char*rn)//按借阅人查找书籍

voidrevise(Bookbook,inti)//带参的修改书籍函数

voiddeleteBook(intindex)//带参的删除书籍资料函数

voidshow_book()//不带参的显示书籍函数

voidshow_book(inti)//带参的显示书籍函数

voidbr_book()//读者借、还书功能函数

boolin(inti)//判断图书是否在架函数

读者结构体(Reader)

①私有数据及函数

charrname[10];//读者姓名

charrclass[10];//班级

charrtel[10];//电话

②公有数据及函数

Reader()//构造函数,实现数据初始化

voidset_rname(char*rn)//设置读者姓名

char*get_rname()//获得读者姓名

voidset_rclass(char*rc)//设置班级

char*get_rclass()//获得班级

voidset_rtel(char*rt)//设置电话

char*get_rtel()//获得电话

voidcopy(Readerm)//读者Reader结构体copy函数

读者管理结构体(ReaderManage)

①私有数据及函数

Readerreaders[50];//定义读者结构体数组对象,最多50位

intlength;//计数

voidreadFile()//读取读者文件函数

voidsaveFile()//保存读者文件

②公有数据及函数

ReaderManage()//构造函数,读取读者文件

~ReaderManage()//析构函数,保存读者文件

voidadd_reader(Readerr)//添加读者用户函数

intsearch(char*rn)//按姓名查找读者函数

boolrevise(Readerreader,inti)//修改读者资料函数

voiddelete_reader(intindex)//删除读者函数

boollog_reader(Readerr)//登录时判断读者用户是否存在函数

voidreg_reader()//注册用户函数

voidshow_reader()//不带参的显示读者信息函数

voidshow_reader(inti)//带参的显示读者信息函数

菜单结构体(Menu)

①私有数据及函数

BookManagebm;//定义书籍管理结构体对象bm

ReaderManagerm;//定义读者管理结构体对象rm

Readerr;//定义读者结构体对象r

intchoice;//菜单序号选择

intkey;//管理员密码

②公有数据及函数

voidheader()//页眉

voidlog_menu()//主界面登录菜单

voidadmin_menu()//管理员管理菜单

voidreader_menu()//读者服务菜单

voidbsearch_menu()//读者查找书籍菜单

voidabsearch_menu()//管理员查找书籍菜单

voidreader_lr()//读者登录或注册菜单

voidlog_admin()//管理员登录

voidrn_search()//按书号查找函数

voidbnu_search()//按书号查找函数

voidbna_search()//按书名查找函数

voidbau_search()//按作者查找函数

voidaddBook()//新增书籍函数

voidreviseBook()//修改书籍函数

voiddelBook()//删除书籍函数

voidreviseReader()//修改读者用户函数

voiddelReader()//删除读者用户函数

主函数(main)

intmain()

四、编码

#include

#include

#include

#include

#include

#defineBookFile"book.txt"//将字符串BookFile替换原文件中的宏名称book

#defineReaderFile"reader.txt"

usingnamespacestd;

//**********读者结构体,用于存放读者基本信息**********

classReader

{

private:

charrname[10];

charrclass[10];

charrtel[10];

public:

Reader()//构造函数,实现数据初始化

{strcpy(rname,"");strcpy(rclass,"");strcpy(rtel,"");}

voidset_rname(char*rn)//设置读者姓名

{strcpy(rname,rn);}//将rn的字符复制给rname

char*get_rname()//获得读者姓名

{returnrname;}//返回rname的值

voidset_rclass(char*rc)//设置班级

{strcpy(rclass,rc);}

char*get_rclass()//获得班级

{returnrclass;}

voidset_rtel(char*rt)//设置电话

{strcpy(rtel,rt);}

char*get_rtel()//获得电话

cin.ignore();//清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响

switch(choice)

{

case1:

log_admin();//管理员登录,需密码验证

break;

case2:

reader_lr();//读者登录或注册

break;

case0:

break;

default:

cout<<"\n\t您的操作有误,请重新选择(0→2):

";

gotochoice;

}

}

voidadmin_menu()//管理员管理菜单

{

system("cls");

system("colorf9");

cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";

cout<<"\t※※\n";

cout<<"\t※****************系**统**管**理**界**面**************※\n";

cout<<"\t※※\n";

cout<<"\t※1:

添加新的图书资料2:

修改已有图书资料※\n";

cout<<"\t※※\n";

cout<<"\t※3:

删除已有图书资料4:

查找已有图书资料※\n";

cout<<"\t※※\n";

cout<<"\t※5:

查看所有图书资料6:

修改读者用户信息※\n";

cout<<"\t※※\n";

cout<<"\t※7:

删除读者用户信息8:

查看所有读者信息※\n";

cout<<"\t※※\n";

cout<<"\t※9:

返回系统登录界面0:

退出图书管理系统※\n";

cout<<"\t※※\n";

cout<<"\t※※\n";

cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";

cout<<"\n\t请选择您需要的服务序号:

";

choice:

cin>>choice;

cin.ignore();

switch(choice)

{

case1:

//添加图书

addBook();

bm.~BookManage();

break;

case2:

//修改图书

reviseBook();

bm.~BookManage();

break;

case3:

//删除图书

delBook();

bm.~BookManage();

break;

case4:

//查找图书

absearch_menu();

break;

case5:

//查看全部图书

bm.show_book();

cout<<"\n\t显示完毕!

";

system("pause");

admin_menu();

break;

case6:

//修改读者

reviseReader();

rm.~ReaderManage();

break;

case7:

//删除读者

delReader();

voidreader_menu()//读者服务菜单

{

system("cls");

system("colorf9");

cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";

cout<<"\t※※\n";

cout<<"\t※****************读**者**服**务**界**面**************※\n";

cout<<"\t※※\n";

cout<<"\t※1:

借阅图书2:

归还图书※\n";

cout<<"\t※※\n";

cout<<"\t※3:

查找图书4:

借阅情况※\n";

cout<<"\t※※\n";

cout<<"\t※5:

返上一级0:

退出系统※\n";

cout<<"\t※※\n";

cout<<"\t※※\n";

cout<<"\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n";

cout<<"\n\t请选择您需要的服务序号:

";

choice:

cin>>choice;

cin.ignore();

switch(choice)

{

cout<<"\n\t操作有误,请重新选择<0→4>";

break;

}

}

voidabsearch_menu()//管理员查找书籍菜单

{

system("cls");

system("colorf2");

cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※****书**籍**查**找**界**面****※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※1:

按书号查找※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※2:

按书名查找※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※3:

按作者查找※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※4:

返回上级※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※0:

退出系统※\n";

cout<<"\t\t\t※※\n";

cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";

intbsc;//booksearchchoice

cout<<"\n\t请输入您需要的服务序号:

";

cin>>bsc;

cin.ignore();

switch(bsc)

{

case1:

bnu_search();

break;

case2:

bna_search();

break;

case3:

bau_search();

break;

case4:

admin_menu();

break;

case5:

exit

(1);

default:

cout<<"\n\t操作有误,请重新选择<0→4>";

break;

}

}

voidreader_lr()//读者登录或注册菜单

{

system("cls");

header();

system("colorf1");

cout<<"\n\t\t\t<读者登录界面>\n";

cout<<"\n\t\t\t1:

登录\t2:

注册\n\n\t\t\t3:

返回\t0:

退出\n\t您的选择是:

";

intrlc;//readerloginchoice

choice:

cin>>rlc;

cin.ignore();

switch(rlc)

{

case1:

//已注册读者登录

cout<<"\n\t请输入您的姓名:

";

charrn[10];//readername

cin>>rn;

r.set_rname(rn);

if(rm.log_reader(r))

{

cout<<"\n\t登录成功!

";

system("pause");

reader_menu();

}

else

cout<<"\n\t登录失败!

新用户请先注册!

";

system("pause");

reader_lr();

break;

case2:

//新用户注册

rm.reg_reader();

rm.~ReaderManage();

system("pause");

reader_lr();

break;

case3:

system("cls");

log_menu();

case0:

exit

(1);

break;

default:

cout<<"\n\t您的操作有误,请重新选择(0→2):

";

gotochoice;

}

}

voidlog_admin()//管理员登录

{

cout<<"\n\t请输入管理员密码:

";

intkey;

cin>>key;

if(key==2009)

{

cout<<"\n\t登录成功!

\n\n\t";

system("pause");

admin_menu();//管理员操作菜单

}

else

{cout<<"\n\t登录失败!

原因是密码错误!

\n";

cout<<"\n\t请选择<1:

返回上一级菜单0:

退出系统>";

cin>>choice;

cin.ignore();

switch(choice)

{

case1:

system("cls");

log_menu();

break;

case0:

exit

(1);

break;

default:

cout<<"\n\t操作有误,请重新选择(0/1)";

}

}

}

voidrn_search()//按书号查找函数

{

charrn[10];//readername

cout<<"\n\t请输入您的姓名:

";

cin>>rn;

intindex=bm.rn_search(rn);

if(index>=0)

bm.show_book(index);

else

cout<<"\n\t对不起,系统无您的借阅记录!

";

cout<<"\n\t";

system("pause");

reader_me

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

当前位置:首页 > 考试认证 > 公务员考试

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

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