c语言图书管理系统设计说明书.docx
- 文档编号:28366052
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:31
- 大小:825.93KB
c语言图书管理系统设计说明书.docx
《c语言图书管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《c语言图书管理系统设计说明书.docx(31页珍藏版)》请在冰豆网上搜索。
c语言图书管理系统设计说明书
摘要
图书借阅管理系统产生的主要目的是解决一些实际问题,用来方便和准确的管理图书和会员的各项纪录,使得图书信息的管理既方便又完备。
它的产生和发展给图书馆管理带来了巨大的便捷。
计算机今后将会应用在各个领域,所以,完善的图书借阅管理程序是很有必要的。
它在管理的过程中,对一些数据的存储和计算是相当方便,当然它的准确性很高几乎为无误。
图书借阅管理程序的操作也是相当方便和快捷的,并且所用的人力也是相当少的。
下面就此课题介绍一下图书借阅管理系统的功能:
系统的设计我们主要分为八大块:
图书添加、图书查询、图书删除、会员借书、会员还书、会员注册、会员注销。
会员借书,还书是按照会员的姓名来实现的,图书的查询,删除是运用比较函数来实现的。
在此系统中应用了结构体,动态链表,基本的指针运用,基本的循环语句,函数的调用,Switch语句等来实现的。
关键词图书管理系统、c语言、图书添加、图书删除、会员添加
Abstract
Themainpurposeofthelibrarymanagementsystemistosolvesomepracticalproblems,therecordforconvenientandaccuratemanagementofbooksandmember,thebookinformationmanagementmoreconvenientandcomplete.Itsemergenceanddevelopmentforlibrarymanagementhasbroughtenormousconvenient.Thecomputerwillbeusedinvariousfields,therefore,thelibrarymanagementprocessimprovementisnecessary.Itisinthemanagementprocess,thestorageandcomputationaldataisquiteconvenient,ofcourseit'sveryhighaccuracyisalmostcorrect.Booklendingmanagementprogramoperationisquiteconvenientandquick,andthehumanisconsiderablyless.
Thispaperintroducethebooklendingmanagementsystem:
systemdesignwemainlydividedintoeightparts:
thelibrarytoadd,query,deletebooksbooks,books,books,MemberMemberMemberregistration,memberregistration.Membershiplibrary,booksareinaccordancewiththemember'snametoachieve,bookquery,deleteistheuseofmorefunctionstoachieve.
Thestructure,applicationofthissystemindynamiclinkedlist,thepointerloopbasic,basic,functioncalls,theSwitchstatementtoachieve.
KeywordsLibrarymanagementsystem、C、Thelibrarytoadd、Bookdelete、Addmember
1.概述
早期的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。
由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。
为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能,人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。
于是,C语言就在这种情况下应运而生了。
C语言是国际上广泛流行的、很有发展前途的计算机高级语言。
它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
C语言是在B语言的基础上发展起来的,经过了1960年的ALGOL60,1963年剑桥大学推出的CPL、BCPL,1970年贝尔实验室简化出的B语言,后衍变出的C语言经多次改进,它的突出优点最终引起人们的广泛关注,至此,C语言便很快风靡全世界,成为世界上应用最广泛的语言之一。
2.总体设计
2.1功能介绍
图书管理包括以下功能:
1.图书添加功能;
2.图书信息查找功能;
3.图书信息删除功能;
4.会员借书功能;
5.会员还书功能;
6.会员注册功能;
7.会员注销功能
2.2功能说明
1.图书添加功能是将图书信息存入文件夹中,其中图书信息包括图书名字、图书编号、图书作者、图书价格。
2.图书信息查找功能是将要查找的图书信息通过输入图书名字查找并从文件中提取出来显示。
3.图书信息删除功能是将无用的图书信息删除
4.会员借书功能,仅有会员才可以借书,借书之后还会标记该书已借出。
5.会员还书功能是会员借书之后将书还回并将图书状态改为图书未借出。
6.会员注册是将会员信息存入文件夹中,会员信息包括会员姓名、会员性别、会员年龄。
7.会员注销功能是将该会员信息从文件中删除。
3.详细设计
3.1界面设计
通过printf函数输出“1.添加图书2.图书查询3.删除图书4.会员借书5.会员还书6.会员注册7.会员注销8.退出”,再通过scanf函数输入n,最后利用switch(n)函数执行标号为n的程序。
流程图如下图3.1所示
图3.1界面管理流程
3.2图书添加功能设计
添加图书功能,先输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能,我运用了指针、数组、链表等基本操作完成了这一功能的操作。
流程图如下图3.2所示
图3.2图书添加功能流程图
3.3图书查找功能设计
查询功能:
查询者在此功能界面输入所查询的图书名称,系统自动按图书的名字进行查询,可以显示图书是否存在、以及图书的详细的信息;该功能的实现主要应用scanf函数实现查询者对查询图书名称的输入。
if语句来判断所查询图书是否存在于源文件库中,若存在,则以查找的图书名称为指针,建立该指针到源文件库中的具体指向,最后应用printf函数输出所查询图书的详细信息;若不存在,则显示“该图书不存在”类似字样。
流程图如下图3.3所示
图3.3图书查找功能流程图
3.4删除图书功能设计
按书名进行删除。
输入书名后,调用函数,在函数体里利用指针与每一个书名比较,如果相等就说明找到要删除的图书,用后一个覆盖前一个信息来删除图书信息,并用指针调整地址就完成图书信息的删除了。
流程图如下图3.4所示
图3.4删除图书功能流程图
3.5会员借书功能设计
借阅图书功能首先要输入会员姓名,如果不是会员,此系统为了使用更加方便快捷,要求您先注册会员,然后进行借书功能。
当你已是会员时,输入会员姓名,再输入想要借阅的图书名称,就可以实现借阅图书这一功能。
此功能的实现我运用了指针、数组、链表等基本操作完成了这项功能。
流程图如下图3.5所示
图3.5会员借书流程图
3.6会员还书功能设计
归还图书功能:
先要求输入图书名,如果还书成功显示还书成功,否则显示还书失败。
我运用了指针、数组、链表等基本操作完成了这项功能的操作。
流程图如下图3.6所示
图3.6会员还书功能流程图
3.7会员注册功能设计
要求输入该会员的名字、性别、年龄进行注册,成功注册后就可在图书馆里借阅图书。
会员注册可方便图书归还的管理,也方便图书管理人员对被借图书信息的管理及图书归要。
在注册会员后即可进行借书的操作了,我们的系统是根据是否是会员来判断能否进行借书,并且借书时按图书的名字进行借阅。
并且,如果成功借书,系统还会显示成功借书,使此项操作更加简单明了。
会员注册功能主要使用了scanf函数、结构体类型等在另一文件中建立个人信息。
流程图如下图3.7所示
图3.7会员注册功能流程图
3.8会员注销功能设计
会员注销时通过输入会员姓名在文件中查找到该会员信息后将其删除完成的,删除信息用到链表、指针。
流程图如下图3.8所示
3.8会员注册流程图
4.调试分析
打开程序如下图4.1所示界面
图4.1
输入1进入图书添加功能如图4.2
图4.2
输入2进入图书查询功能如图4.3
图4.3
图书查询成功,但是作者显示,查找原因。
找到原因,
输入6进入会员注册功能
输入4进入会员借书功能
输入5进入会员还书功能
输入7进入会员注销功能
5.鸣谢
6.源程序
#include
#include"dos.h"
#include"conio.h"
#include"stdlib.h"
#include"math.h"
#include"string.h"
intBookAdd();
intBookConsult();
intBookDel();
intBookBorrow();
intBookReturn();
intMemberAdd();
intMemberDel();
intBookshow();
structconsultbook
{
charnum[20];
charname[20];
floatprice;
charauthor[20];
charperson[20];
intyes;
structconsultbook*next;
};
structconsultmember
{
charname[20];
charsex[20];
intage;
structconsultmember*next;
};
intmain()
{
intn;
inti=1;
for(;i;)
{
printf("1:
图书添加功能\n");
printf("2:
图书查询功能\n");
printf("3:
删除图书功能\n");
printf("4:
会员借书功能\n");
printf("5:
会员还书功能\n");
printf("6:
会员注册功能\n");
printf("7:
会员注销功能\n");
printf("8:
退出\n");
printf("请输入所要执行序号\n");
scanf("%d",&n);
switch(n)
{
case1:
BookAdd();
break;
case2:
BookConsult();
break;
case3:
BookDel();
break;
case4:
BookBorrow();
break;
case5:
BookReturn();
break;
case6:
MemberAdd();
break;
case7:
MemberDel();
break;
case8:
i=0;
}
}
return0;
}
intBookAdd()/*添加图书*/
{
FILE*fp;
structconsultbookBook;
fp=fopen("book.txt","r");/*以读取的方式打开文件*/
if(fopen==NULL)
fp=fopen("book.txt","w");/*以写的方式打开文件*/
else
{
fclose(fp);
fp=fopen("book.txt","ab");/*以追加方式打开文件*/
}
printf("请输入图书编号:
\n");
scanf("%s",Book.num);
printf("请输入书名:
\n");
scanf("%s",Book.name);
printf("请输入作者姓名:
\n");
scanf("%s",Book.author);
printf("请输入图书价格:
\n");
scanf("%f",&Book.price);
Book.yes=1;/*表示图书未出借*/
Book.next=NULL;
if(fwrite(&Book,sizeof(structconsultmember),1,fp)!
=1)
printf("操作出现错误图书信息未保存\n");
else
printf("图书信息已保存\n");
fclose(fp);/*关闭文件*/
return1;
}
intBookConsult()/*图书查找*/
{
FILE*fp;
structconsultbookBook;
charbookname[20];/*定义书名变量*/
intflag=0,i=0;
printf("请输入要查找的书名:
\n");
scanf("%s",bookname);
fp=fopen("book.txt","r");
if(fp==NULL)/*没有找到文件*/
{
printf("未找到您所需要的书请核实是否有误重新查找");
fclose(fp);
return-1;
}
else
while(!
feof(fp))/*feof(fp)为测试文件是否结束的函数*/
{
fread(&Book,sizeof(structconsultmember),1,fp);/*读取文件*/
if(strcmp(Book.name,bookname)==0)/*两书名字相同*/
{
printf("图书名为:
%s\n",Book.name);
printf("图书编号为:
%s\n",Book.num);
printf("图书作者为:
%s\n",Book.author);
printf("图书作价格为:
%f\n",Book.price);
printf("图书状态为:
%d\n",Book.yes);
i++;/*i为该书的数目*/
flag=1;/*查找数据标志*/
}
}
if(flag==0)
{
printf("未找到您所需要的图书\n");
return-1;
}
fclose(fp);
return1;
}
intBookDel()/*删除图书录*/
{
FILE*fp;
structconsultbookBook;
structconsultbook*head;
structconsultbook*p,*q;
charbookname[20];
fp=fopen("book.txt","r");/*读方式打开文件*/
if(fp==NULL)/*没有找到文件*/
{
printf("未找到图书信息\n");
fclose(fp);
return-1;
}
head=p=q=(structconsultbook*)malloc(sizeof(structconsultbook));/*开辟新的储存空间*/
fread(p,sizeof(structconsultbook),1,fp);/*读第一条信息*/
while(!
feof(fp))/*feof(fp)为测试文件是否结束的函数*/
{
q=p;
p=(structconsultbook*)malloc(sizeof(structconsultbook));
fread(p,sizeof(Book),1,fp);/*读记录*/
q->next=p;/*新记录插入到链表的尾*/
}
p->next=NULL;/*已为最后结点*/
fclose(fp);
printf("请输入要删除图书的名:
\n");
scanf("%s",bookname);
p=head;
while(p!
=NULL)/*按书名删除图书*/
{
if(strcmp(p->name,bookname)==0)/*找到药删除的书名*/
{
if(p==head)/*要删除的图书是第一个结点*/
head=head->next;
else
q->next=p->next;/*要删除的图书是第一个结点*/
break;
}
q=p;
p=p->next;/*指针后移*/
}
fp=fopen("book.txt","w");/*以写的方式打开文件*/
while(head!
=NULL)
{
fwrite(head,sizeof(Book),1,fp);/*写文件*/
head=head->next;
}
fclose(fp);
printf("删除成功!
\n");
return1;
}
intBookBorrow()/*借书*/
{
FILE*fp;
structconsultbookBook;
structconsultmemberMember;
charbookname[20],membername[20];
intflag=0,mflag=0;
printf("请输入会员名字:
\n");
scanf("%s",membername);
if((fp=fopen("member.txt","r"))==NULL)/*未找到文件*/
{
printf("无信息\n");
return-1;
}
else
while(!
feof(fp))/*查找会员信息*/
{
fread(&Member,sizeof(structconsultmember),1,fp);
if(strcmp(Member.name,membername)==0)
{
mflag=1;/*会员标志*/
break;
}
}
fclose(fp);
if(mflag==0)
{
printf("您不是会员请先注册\n");
return-1;
}
printf("请输入图书名:
\n");
scanf("%s",bookname);
if((fp=fopen("book.txt","r+"))==NULL)
{
printf("没有找到图书信息\n");
return-1;
}
while(!
feof(fp))/*查询图书资料*/
{
fread(&Book,sizeof(structconsultbook),1,fp);
if(strcmp(Book.name,bookname)==0)
{
if(Book.yes==0)/*图书已借出*/
{
printf("此书已借出\n");
break;
}
else
{
Book.yes=0;/*做出借书标记*/
strcpy(Book.person,Member.name);/*登记借书会员*/
fseek(fp,sizeof(structconsultbook),1);
fwrite(&Book,sizeof(structconsultbook),1,fp);
printf("借书成功\n");
flag=1;
break;
}
}
}
if(flag!
=1)
printf("借书失败\n");
fclose(fp);
return1;
}
intBookReturn()/*还书*/
{
FILE*fp;
structconsultbookBook;
charbookname[20];
intflag=0;
fp=fopen("book.txt","r");
if(fp==NULL)
{
printf("未找到文件\n");
return-1;
}
printf("请输入图书名:
\n");
scanf("%s",bookname);
while(!
feof(fp))/*查询图书资料*/
{
fread(&Book,sizeof(structconsultbook),1,fp);
if(strcmp(Book.name,bookname)==0)
{
if(Book.yes==0)/*图书已借出*/
{
Book.yes=1;/*图书未借出*/
strcpy(Book.person,"");
fseek(fp,sizeof(structconsultbook),1);
fwrite(&Book,sizeof(structconsultbook),1,fp);
printf("还书成功\n");
flag=1;
break;
}
}
}
if(flag!
=1)
printf("还书失败\n");
fclose(fp);
}
intMemberAdd()
{
FILE*fp;
structconsultmemberMember;
fp=fopen("member.txt","r");
if(fp==NULL)/*无会员记录*/
fp=fopen("member.txt","w");
else/*有会员记录*/
{
fclose(fp);
fp=fopen("member.txt","a");/*追加方式打开*/
}
printf("请输入会员姓名:
\n");
scanf("%s",Member.name);
printf("请输入会员性别:
\n");
scanf("%s",Member.sex);
printf("请输入会员年龄:
\n");
scanf("%d",&Member.age);
fwrite(&Member,sizeof(structconsultmember),1,fp);/*写入会员信息*/
fclose(fp);
return1;
}
intMemberDel()
{
FILE*fp;
structconsultmemberMember;
structconsultmember*head;
structconsultmember*p,*q;
charmembername[20];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 管理 系统 设计 说明书