1、二、问题描述 图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。 编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。三、实验目的 1强化和巩固理论基础,掌握编程技巧,为后续的专业课学习打下良好的基础;2要求用C/C+语言及相应开发环境,实现一个小型完整程序的设计与开发;3巩固深化所学课程的知识,培养学生运用知识,
2、分析和解决实际问题的能力。四、设计过程 4.1 系统需求分析 图书借阅管理系统主要分为两大功能:(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);(2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。解决了这两个问题,剩下的工作就简单了。只需按链表的操作就可以了。4.1.1 功能要求 在图书借阅管理程序中须实现以下功能:(1
3、)图书修改功能:能对图书借阅系统存储的信息进行修改。提供两种修改方式,如按照图书编号修改、按照书名修改。图书编号是图书记录的自然顺序编号。(2)图书删除功能:能对图书借阅系统的图书信息进行删除。删除时以记录为单位,能一次删除一条记录。(3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。(4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。(5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:books 、c:lenders。(6)通信录管理结束后,能够正常退出图书借阅管理程序。4.1.2 技术要求 (1)每个借阅者记录至少包括如下信息:姓名、学号、姓别等。每本图书记
4、录至少包括如下信息:编号、书名、作者、价格等。(2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。(3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。(4)以菜单方式实现功能选择控制。(5)本图书借阅管理程序能够实现100条记录的管理。4.1.3 方案分析 此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。其中对图书和会员的增加、查询和删除都是基本操作。在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。在会员管理中增加了会员借书信
5、息的查询和对到期书的催还信息。实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息。在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。另外,在美观方面,需要设计一个操作界面供用户选择使用。4.2 图书借阅管理功能框图设计 通过需求分析,设计出本程序的总体功能设计框图。分为七个方面:1、选择检查类型;2、编辑图书的信息;3、查询图书的信息;4、编辑读者的信息;5、查询读者的信息;6、借阅书刊;7、还书。连线之间说明了他们之间的相互联系以及设计时的要求。4.2.2图书管理系统简略功能框图 五、设计步骤与详细程序#includestdio.hiostream.h
6、#define NULL 0typedef struct BookInfo /图书结构 int b_Code; /图书编号 char b_Name20; /名称 int b_Total; /总数 int b_Out; /借出数 BookInfo* nextbook; /下一类图书BookInfo;typedef struct MemberInfo /会员结构 long m_Code; /会员编号 char m_Name20; /会员名字 int l_Codes6; /以借书的编号,最多5 MemberInfo* nextmember; /下一会员MemberInfo;typedef struc
7、t System /管理系统结构 BookInfo* BI; MemberInfo* MI; int BookTotal; /图书类库存量 int MemberTota; /会员数量System;System* InitSystem();/void AddBook(System*);/增加图书BookInfo* SearchBook(System*,int);/查询图书信息void DelBook(System*);/删除图书void BrrowBook(System*);/借书处理void TurnBackBook(System*);/还书处理void AddMember(System*);
8、/添加会员void DelMember(System*);/删除会员MemberInfo* SearchMember(System*,int);/查询会员信息void StoreData(System*);void LoadData(System*);void ExitSystem();void main() System* S=InitSystem(); int sel; do coutsel; if(sel=1&selBI=(BookInfo*)malloc(sizeof(BookInfo);BookTotal=0;BI-nextbook=NULL;MI=(MemberInfo*)mall
9、oc(sizeof(MemberInfo);MemberTota=0;MI-nextmember=NULL; return S;void AddBook(System* S) int Tempcode; char sel; BookInfo* p=S-BI; BookInfo* t; BookInfo* m; int num;输入图书编号:Tempcode; if(m=SearchBook(S,Tempcode)这类书以有库存.n输入图书的入库量:num; m-b_Total+=num; else t=(BookInfo*)malloc(sizeof(BookInfo); t-b_Code=T
10、empcode;输入图书的名称:t-b_Name;输入图书的入库量:b_Total;b_Out=0;nextbook=p-nextbook; p-nextbook=t;BookTotal+;添加完毕!还要添加吗?(Y/N) if(sel=n|sel=N)结束添加 return;BookInfo* SearchBook(System* S,int code) BookInfo* bi=S- int bookcode; if(code=-1)请输入要查询的图书编号:bookcode; else bookcode=code; while(bi&bi-b_Code!=bookcode)bi=bi- i
11、f(!bi)cout没找到你所要的图书. else 图书编号为:b_Code图书名称为:b_Name图书库存量为:b_Total图书借出量为:b_Out MemberInfo* memi; int tempcode; int i; pl=S- bi=pl- memi=S-nextmember;请输入要删除的图书的编号:tempcode; while(bi) if(bi-b_Code=tempcode)break; pl=bi; bi=bi- if(bi=0)coutnextbook=bi-BookTotal-; while(memi) for(i=1;il_Codes0;i+) if(memi
12、-l_Codesi=tempcode)break; if(ii+)memi-l_Codesi=memi-l_Codesi+1; memi-l_Codes0-; memi=memi- free(bi);还有图书要删除吗?删除图书结束void BrrowBook(System* S) BookInfo* p; int memcode; MemberInfo* mp;输入要借出的书号: p=SearchBook(S,tempcode);p)没有找到要借出的图书.此书的现存量为(p-b_Total-p-b_Out)b_Out)cout没有足够的书了,外借失败.请输入会员编号:memcode; mp=S
13、earchMember(S,memcode);mp)coutl_Codes0=5)coutl_Codes+mp-l_Codes0=tempcode;外借成功.n还有图书要借出吗?外借操作结束.void TurnBackBook(System* S) int membercode;输入归还书号:书号输入错误.membercode;(mp=SearchMember(S,membercode)cout while(il_Codesi=mp- i+;归还成功.还有要归还的图书吗?归还结束.void AddMember(System* S) MemberInfo* p=S-MI; MemberInfo*
14、 t;输入会员编号: t=(MemberInfo*)malloc(sizeof(MemberInfo);m_Code=Tempcode;输入会员姓名:m_Name;l_Codes0=0;nextmember=p-nextmember=t;MemberTota+;MemberInfo* SearchMember(System* S,int code) MemberInfo* bi=S-请输入要查询的会员编号: else membercode=code;m_Code!=membercode)bi=bi-没找到指定会员.会员编号为:m_Code名称为:m_Name已借的图书有:l_Codes0i+)
15、l_Codesi请输入要删除的会员的编号:m_Code=tempcode)break;没有找到要删除的会员编号.nextmember=bi-MemberTota-;(book=SearchBook(S,bi-l_Codesi)删除会员出错! book-b_Total-;还有会员要删除吗?删除会员结束void StoreData(System* S) FILE* fp;(fp=fopen(BookSys,wb)打开文件BookSys失败! exit(0); fwrite(&(S-BookTotal),sizeof(int),1,fp); fwrite(bi,sizeof(BookInfo),1,fp); MemberInfo* mi=S-MemberTota),sizeof(int),1,fp); while(mi) fwrite(mi,sizeof(Me
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1