数据结构课程设计图书借阅管理系统.docx

上传人:b****3 文档编号:4752179 上传时间:2022-12-08 格式:DOCX 页数:21 大小:207.17KB
下载 相关 举报
数据结构课程设计图书借阅管理系统.docx_第1页
第1页 / 共21页
数据结构课程设计图书借阅管理系统.docx_第2页
第2页 / 共21页
数据结构课程设计图书借阅管理系统.docx_第3页
第3页 / 共21页
数据结构课程设计图书借阅管理系统.docx_第4页
第4页 / 共21页
数据结构课程设计图书借阅管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数据结构课程设计图书借阅管理系统.docx

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

数据结构课程设计图书借阅管理系统.docx

数据结构课程设计图书借阅管理系统

 

图书馆管理系统

 

一、问题描述:

二、系统需求分析:

1功能要求:

2技术要求:

3案分析:

三、概要设计:

四、详细设计与程序代码:

五、运行结果与测试:

六、设计体会与总结

一、问题描述

图书借阅管理系统是一个学校不可缺少的部分,它的容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。

编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。

图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。

二、系统需求分析

图书借阅管理系统主要分为两大功能:

(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);

(2)会员管理(增加会员、查询会员、删除会员、借书信息);

要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的法是建立两个带头结点的单链表,分别用于存储图书和会员。

解决了这个问题后就是如建立这两个链表的联系了,解决的法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。

解决了这两个问题,剩下的工作就简单了。

只需按链表的操作就可以了。

1功能要求

在图书借阅管理程序中须实现以下功能:

(1)图书修改功能:

能对图书借阅系统存储的信息进行修改。

提供两种修改式,如按照图书编号修改、按照书名修改。

图书编号是图书记录的自然顺序编号。

(2)图书删除功能:

能对图书借阅系统的图书信息进行删除。

删除时以记录为单位,能一次删除一条记录。

(3)借书功能:

能对借出的图书作记录信息,能一次借出一本图书。

(4)还书功能:

能将被借出的图书信息还原,能一次借出一本图书。

(5)保存功能:

能将记录保存在任自定义的文件中,如保存在:

c:

\books、c:

\lenders。

(6)通信录管理结束后,能够正常退出图书借阅管理程序。

2技术要求

(1)每个借阅者记录至少包括如下信息:

姓名、学号、姓别等。

每本图书记录至少包括如下信息:

编号、书名、作者、价格等。

(2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。

(3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。

(4)以菜单式实现功能选择控制。

(5)本图书借阅管理程序能够实现100条记录的管理。

3案分析

此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。

其中对图书和会员的增加、查询和删除都是基本操作。

在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。

在会员管理中增加了会员借书信息的查询和对到期书的催还信息。

实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息。

在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。

另外,在美观面,需要设计一个操作界面供用户选择使用。

三、概要设计

通过需求分析,设计出本程序的总体功能设计框图。

分为七个面:

1、选择检查类型;2、编辑图书的信息;3、查询图书的信息;4、编辑读者的信息;5、查询读者的信息;6、借阅书刊;7、还书。

连线之间说明了他们之间的相互联系以及设计时的要求。

4.2.2图书管理系统简略功能框图

图书管理系统

登陆模块

图书馆管理员模块

图书借阅/归还模块

图书管理模块

图书查询模块

用户登陆

管理员登陆

超期提示

新书入库

操作员登陆

添加操作员

删除操作员

修改操作员

查询操作员

读者借阅信息

读者归还信息

管理员登陆

管理员登陆

查询图书信息

删除图书信息

修改图书信息

五、详细设计与程序代码:

#include

#include

#include

#defineNULL0

 

typedefstructBookInfo{/////图书结构

intb_Code;////图书编号

charb_Name[20];/////名称

intb_Total;/////总数

intb_Out;///借出数

BookInfo*nextbook;//////下一类图书

}BookInfo;

 

typedefstructMemberInfo{///会员结构

longm_Code;/////会员编号

charm_Name[20];////会员名字

intl_Codes[6];/////以借书的编号,最多5

MemberInfo*nextmember;////下一会员

}MemberInfo;

 

typedefstructSystem{///管理系统结构

BookInfo*BI;

MemberInfo*MI;

intBookTotal;////图书类库存量

intMemberTota;/////会员数量

}System;

System*InitSystem();/////

voidAddBook(System*);////增加图书

BookInfo*SearchBook(System*,int);////查询图书信息

voidDelBook(System*);/////删除图书

voidBrrowBook(System*);///////借书处理

voidTurnBackBook(System*);////还书处理

voidAddMember(System*);/////添加会员

voidDelMember(System*);////删除会员

MemberInfo*SearchMember(System*,int);/////查询会员信息

voidStoreData(System*);

voidLoadData(System*);

voidExitSystem();

voidmain()

{

System*S=InitSystem();

intsel;

do{

cout<<"\n\t\t\t\t图书管理系统"<

cout<<"\t\t\t******************************"<

cout<<"\t\t\t******************************"<

cout<<"\t\t\t1.增加图书.\t2.查询图书.\n\t\t\t3.删除图书.\t4.借书处理.\n\t\t\t5.还书处理.\n\t\t\t6.添加会员.\t7.删除会员.\n\t\t\t8.查询会员.\t9.载入数据.\n\t\t\t10.保存数据.\t11.退出程序.\n";

cout<<"\t\t\t******************************"<

cout<<"\t\t\t******************************"<

cout<<"请选择:

";

do{

cin>>sel;

if(sel>=1&&sel<=11)break;

cout<<"选择错误!

\n重新输入:

"<

}while

(1);

switch(sel){

case1:

AddBook(S);break;

case2:

SearchBook(S,-1);break;

case3:

DelBook(S);break;

case4:

BrrowBook(S);;break;

case5:

TurnBackBook(S);break;

case6:

AddMember(S);break;

case7:

DelMember(S);break;

case8:

SearchMember(S,-1);break;

case9:

LoadData(S);break;

case10:

StoreData(S);break;

default:

ExitSystem();

}

}while

(1);

}

System*InitSystem()

{

System*S=(System*)malloc(sizeof(System));

S->BI=(BookInfo*)malloc(sizeof(BookInfo));

S->BookTotal=0;

S->BI->nextbook=NULL;

S->MI=(MemberInfo*)malloc(sizeof(MemberInfo));

S->MemberTota=0;

S->MI->nextmember=NULL;

returnS;

}

voidAddBook(System*S)

{

intTempcode;

charsel;

BookInfo*p=S->BI;

BookInfo*t;

BookInfo*m;

intnum;

do{

cout<<"输入图书编号:

";

cin>>Tempcode;

if(m=SearchBook(S,Tempcode)){

cout<<"这类书以有库存.\n输入图书的入库量:

"<

cin>>num;

m->b_Total+=num;

}

else{

t=(BookInfo*)malloc(sizeof(BookInfo));

t->b_Code=Tempcode;

cout<<"输入图书的名称:

";

cin>>t->b_Name;

cout<<"输入图书的入库量:

";

cin>>t->b_Total;

t->b_Out=0;

t->nextbook=p->nextbook;

p->nextbook=t;

S->BookTotal++;

}

cout<<"添加完毕!

"<

cout<<"还要添加吗?

(Y/N)";

cin>>sel;

if(sel=='n'||sel=='N'){

cout<<"结束添加"<

return;

}

}while

(1);

}

BookInfo*SearchBook(System*S,intcode){

BookInfo*bi=S->BI->nextbook;

intbookcode;

if(code==-1){

cout<<"请输入要查询的图书编号:

";

cin>>bookcode;

}

elsebookcode=code;

while(bi&&bi->b_Code!

=bookcode)bi=bi->nextbook;

if(code==-1){

if(!

bi)cout<<"没找到你所要的图书."<

else{

cout<<"图书编号为:

"<b_Code<

cout<<"图书名称为:

"<b_Name<

cout<<"图书库存量为:

"<b_Total<

cout<<"图书借出量为:

"<b_Out<

}

}

returnbi;

}

voidDelBook(System*S){

BookInfo*bi;

BookInfo*pl=S->BI;

MemberInfo*memi;

charsel;

inttempcode;

inti;

do{

pl=S->BI;

bi=pl->nextbook;

memi=S->MI->nextmember;

cout<<"请输入要删除的图书的编号:

";

cin>>tempcode;

while(bi){

if(bi->b_Code==tempcode)break;

pl=bi;

bi=bi->nextbook;

}

if(bi==0)cout<<"没有找到要删除的图书"<

else{

pl->nextbook=bi->nextbook;

S->BookTotal--;

while(memi){

for(i=1;i<=memi->l_Codes[0];i++){

if(memi->l_Codes[i]==tempcode)break;

}

if(i<=memi->l_Codes[0]){

for(;il_Codes[0];i++)memi->l_Codes[i]=memi->l_Codes[i+1];

memi->l_Codes[0]--;

}

memi=memi->nextmember;

}

free(bi);

}

cout<<"还有图书要删除吗?

(Y/N)";

cin>>sel;

if(sel=='N'||sel=='n'){

cout<<"删除图书结束"<

return;

}

}while

(1);

}

voidBrrowBook(System*S)

{

BookInfo*bi=S->BI->nextbook;

BookInfo*p;

charsel;

intmemcode;

MemberInfo*mp;

inttempcode;

do{

cout<<"输入要借出的书号:

";

cin>>tempcode;

p=SearchBook(S,tempcode);

if(!

p){

cout<<"没有找到要借出的图书."<

}

else{

cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)<

if(!

(p->b_Total-p->b_Out))cout<<"没有足够的书了,外借失败."<

else{

cout<<"请输入会员编号:

";

cin>>memcode;

mp=SearchMember(S,memcode);

if(!

mp)cout<<"会员编号输入错误,外借失败"<

else{

if(mp->l_Codes[0]==5)cout<<"借书量不能超过5本";

else{

p->b_Out++;

mp->l_Codes[++mp->l_Codes[0]]=tempcode;

cout<<"外借成功."<

}

}

}

}

cout<<"\n还有图书要借出吗?

(Y/N)";

cin>>sel;

if(sel=='N'||sel=='n'){

cout<<"外借操作结束."<

return;

}

}while

(1);

}

voidTurnBackBook(System*S)

{

BookInfo*bi=S->BI->nextbook;

BookInfo*p;

MemberInfo*mp;

intmembercode;

inttempcode;

inti;

charsel;

do{

cout<<"输入归还书号:

";

cin>>tempcode;

p=SearchBook(S,tempcode);

if(!

p){

cout<<"书号输入错误."<

}

else{

cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)<

cout<<"请输入会员编号:

";

cin>>membercode;

if(!

(mp=SearchMember(S,membercode)))cout<<"会员编号输入错误,归还失败"<

else{

p->b_Out--;

for(i=1;i<=mp->l_Codes[0];i++){

if(mp->l_Codes[i]==tempcode)break;

}

while(il_Codes[0]){

mp->l_Codes[i]=mp->l_Codes[i+1];

i++;

}

mp->l_Codes[0]--;

cout<<"归还成功."<

}

}

cout<<"还有要归还的图书吗?

(Y/N)";

cin>>sel;

if(sel=='N'||sel=='n'){

cout<<"归还结束."<

return;

}

}while

(1);

}

voidAddMember(System*S)

{

intTempcode;

charsel;

MemberInfo*p=S->MI;

MemberInfo*t;

do{

cout<<"输入会员编号:

";

cin>>Tempcode;

t=(MemberInfo*)malloc(sizeof(MemberInfo));

t->m_Code=Tempcode;

cout<<"输入会员姓名:

";

cin>>t->m_Name;

t->l_Codes[0]=0;

t->nextmember=p->nextmember;

p->nextmember=t;

S->MemberTota++;

cout<<"添加完毕!

"<

cout<<"还要添加吗?

(Y/N)";

cin>>sel;

if(sel=='n'||sel=='N'){

cout<<"结束添加"<

return;

}

}while

(1);

}

MemberInfo*SearchMember(System*S,intcode)

{

MemberInfo*bi=S->MI->nextmember;

intmembercode;

inti;

if(code==-1){

cout<<"请输入要查询的会员编号:

";

cin>>membercode;

}

elsemembercode=code;

while(bi&&bi->m_Code!

=membercode)bi=bi->nextmember;

if(code==-1){

if(!

bi)cout<<"没找到指定会员."<

else{

cout<<"会员编号为:

"<m_Code<

cout<<"名称为:

"<m_Name<

cout<<"已借的图书有:

"<l_Codes[0]<<"本."<

for(i=1;i<=bi->l_Codes[0];i++)

cout<l_Codes[i]<<'';

cout<

}

}

returnbi;

}

voidDelMember(System*S)

{

MemberInfo*bi;

MemberInfo*pl;

BookInfo*book;

charsel;

inti;

inttempcode;

do{

bi=S->MI->nextmember;

pl=S->MI;

cout<<"请输入要删除的会员的编号:

";

cin>>tempcode;

while(bi){

if(bi->m_Code==tempcode)break;

pl=bi;

bi=bi->nextmember;

}

if(!

bi)cout<<"没有找到要删除的会员编号.";

else{

pl->nextmember=bi->nextmember;

S->MemberTota--;

for(i=1;i<=bi->l_Codes[0];i++){

if(!

(book=SearchBook(S,bi->l_Codes[i]))){

cout<<"删除会员出错!

"<

}

else{

book->b_Out--;

book->b_Total--;

}

}

free(bi);

}

cout<<"还有会员要删除吗?

(Y/N)";

cin>>sel;

if(sel=='N'||sel=='n'){

cout<<"删除会员结束"<

return;

}

}while

(1);

}

voidStoreData(System*S){

FILE*fp;

BookInfo*bi=S->BI->nextbook;

if(!

(fp=fopen("BookSys","wb"))){

cout<<"打开文件BookSys失败!

"<

exit(0);

}

fwrite(&(S->BookTotal),sizeof(int),1,fp);

while(bi){

fwrite(bi,sizeof(BookInfo),1,fp);

bi=bi->nextbook;

}

MemberInfo*mi=S->MI->nextmember;

fwrite(&(S->MemberTota),sizeof(int),1,fp);

while(mi){

fwrite(mi,sizeof(MemberInfo),1,fp);

mi=mi->nextmember;

}

fclose(fp);

}

voidLoadData(System*S){

FILE*fp;

if(!

(fp=fopen("BookSys","rb"))){

cout<<"打开文件BookSys失败"<

exit(0);

}

BookInfo*bi=S->BI;

BookInfo*tempbi;

fread(&(S->BookTotal),sizeof(int),1,fp);

for(inti=1;i<=S->BookTotal;i++){

tempbi=(BookInfo*)malloc(sizeof(BookInfo));

fread(tempbi,sizeof(BookInfo),1,fp);

bi->nextbook=tempbi;

bi=tempbi;

}

bi->nextbook=NULL;

MemberInfo*mi=S->MI;

MemberInfo*tempmi;

fread(&(S->MemberTota),sizeof(int),1,fp);

for(i=1;i<=S->MemberTota;i++){

tempmi=(MemberInfo*)malloc(sizeof(MemberInfo));

fread(tempmi,sizeof(MemberInfo),1,fp);

mi->nextmember=tempmi;

mi=tempmi;

}

mi->nextmem

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

当前位置:首页 > 法律文书 > 调解书

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

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