c++课设图书管理系统_第1页
c++课设图书管理系统_第2页
c++课设图书管理系统_第3页
c++课设图书管理系统_第4页
c++课设图书管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c+课设图书管理系统c+课设图书管理系统c+课设图书管理系统c+课设图书管理系统编制仅供参考审核批准生效日期地址: 电话:传真: 邮编:南京航空航天大学面向对象程序设计语言课程设计报告图 书 管 理 系 统学号:姓名:日期: 目 录一.需求分析.2二.程序主要功能.2三.程序运行平台.2四.系统功能框架图.3五.程序类说明.4六.模块分析.6七.比较有特色的地方.7八.存在的不足与对策.11九.编程体会.12十.程序源代码.13需求分析本系统旨在实现一个小型的图书管理系统,对于一个小型的图书馆或藏书室来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方

2、便读者借书查书及办理各种手续,更方便工作人员对图书进行更有效的管理。程序主要实现读者管理、图书基本信息及库存管理、图书借还管理以及一些辅助功能等。以菜单的方式工作图书、读者的基本信息的新增图书、读者的基本信息的修改图书、读者记录的删除图书的借阅,归还查询图书、读者信息及借阅状态程序主要功能 该程序的主要功能有:读者功能可进行增加读者、读者信息修改、注销读者、读者查询、显示读者信息、显示所有读者信息等操作。图书信息管理可以进行查询图书、增加图书、删除图书信息、图书信息修改、显示全部图书信息等操作。其中添加内容包括:书名、ISBN编号、作者、出版商、出版日期、方便读者查看;图书借还功能 应该说这是

3、整个系统最主要的功能,借还时要输入编号已及读者编号帮助一个简单的操作指南,指导用户下一步该如何操作。退出系统在运行时将从文件载入信息。运行程序后每一步都会有详细的提示,操作简便,大多数地方都考虑到防止用户出现误操作的情况,以提高程序的健壮性,可以放心使用!三程序运行平台该程序是用VC+制做的,使用Microsoft Visual C+ 运行该程序,具体操作是:打开Microsoft Visual C+ ,菜单栏里点文件打开工作区找到“图书管理系统.dsw”这个文件打开,或者在资源管理器中双击该文件,此时,VC+会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行

4、该程序。借书/还书读者信息管理图书管理系统图书信息管理帮 助借书/还书读者信息管理图书管理系统图书信息管理帮 助统计查询.新增图书信息.删除图书信息.显示图书信息.修改图书信息.帮助说明.显示读者信息.返回上一层.新增读者信息.修改读者信息.删除图书信息.显示图书信息.帮助说明.返回上一层 输入图书编号及读者编号.还书 借书.返回上一层五程序类说明有关图书信息的类struct BookInfochar BookCode6;块分析1、读者信息:下设子菜单,包括:a.新增读者 b.修改读者c.删除读者d.读者查询 e.显示读者信息 f.返回上一层 (1)读者编号:读者唯一的识别方式,所以不可以重复

5、,长度小于六个字符。(2)读者姓名:长度小于20个字符。(3)读者性别:长度小于三个字符。2、书库信息:该部分内容最丰富,下设子菜单,包括a.新书入库 b.删除 c.修改 d.返回上一层 链表的思路也跟读者信息一样,从头结点开始建,每当新增加一个类节点时,就把新增结点加到链表尾部,再让其中的next指向NULL空,这里没有对链表进行排序。 有关菜单的制作,就是先显示菜单,让用户输入选择,进行输入有效性检查,然后用switch来对不同的选择调用类中不同的函数。借书/还书:借书需要判断的条件不只是判断图书是否存在、图书是否借出、读者是否存在。还书需要提供读者编号再判断图书是否已经借出。十程序源代码

6、#include#include#include#include #include #includeusing namespace std;#define BOOKLEN sizeof(struct BookInfo)#define READERLEN sizeof(struct ReaderInfo) 书信息管理*endl;cout*2.读者信息管理*endl;cout*3.借书 还书*endl;cout*4.统计 查询*endl;cout*0.退出 系统*endl;cout请选择0-4:m;if(m=0&m=4)break;elsecout选择错误,请在0-4中选择endl;return

7、m;int CreatSubMenu1()int m;while(1)cout*图书信息管理*endl;cout*endl;cout*1.新增 图书*endl;cout*2.修改 图书*endl;cout*3.删除 图书*endl;cout*0.返回上一层*endl;cout请选择0-3:m;if(m=0&m=3)break;elsecout选择错误,请在0-3中选择endl; return m; int CreatSubMenu2()int m;while(1)cout*读者信息管理*endl;cout*endl;cout*1.新增 读者*endl;cout*2.修改 读者*endl;cou

8、t*3.删除 读者*endl;cout*0.返回上一层*endl;cout请选择0-3:m;();if(m=0&m=3)break;elsecout选择错误,请在0-3中选择endl; return m;int CreatSubMenu3()int m;while(1)cout*图书流通*endl;cout*endl;cout*1.借书*endl;cout*2.还书*endl;cout*0.返回上一层*endl;cout请选择0-2:m;if(m=0&m=2)break;elsecout选择错误,请在0-2中选择endl; return m;int CreatSubMenu4()int m;w

9、hile(1)cout*统计查询*endl;cout*endl;cout*1.图书清单*endl;cout*2.读者清单*endl;cout*3.图书查询*endl;cout*4.读者查询*endl;cout*0.返回上层*endl;cout请选择0-4:m; if(m=0&m=4)break;elsecout选择错误,请在0-4中选择endl;return m;int CountBook()/统计已有图书数量(有效图书) struct BookInfo BookTemp;FILE *fp;int count=0;if(fp=fopen(,rb)=NULL)return 0;elsewhile

10、(fread(&BookTemp,BOOKLEN,1,fp)if=1)count+;fclose(fp);return count;int CountReader()/统计已有读者人数(有效人数) struct ReaderInfo ReaderTemp;FILE *fp;int count =0;if(fp=fopen(,rb)=NULL)return 0;elsewhile(fread(&ReaderTemp,READERLEN,1,fp)if=1)count+;fclose(fp);return count;void SubMenu1()/图书信息管理 int MenuId;while(

11、1)MenuId=CreatSubMenu1();if(MenuId=0)break;switch(MenuId)case 1:AddBookInfo();break;case 2:ModifyBookInfo();break;case 3:DelBookInfo();break;case 0:MainMenu();break;void SubMenu2()/读者信息管理 int MenuId;while(1)MenuId=CreatSubMenu2();if(MenuId=0)break;switch(MenuId)case 1:AddReaderInfo();break;case 2:Mo

12、difyReaderInfo();break;case 3:DelReaderInfo();break;case 0:MainMenu();break; void SubMenu3()/图书借阅 int MenuId;while(1)MenuId=CreatSubMenu3();if(MenuId=0)break;switch(MenuId)case 1:BookBorrow();break;case 2:BookReturn();break;case 0:MainMenu();break;void SubMenu4()/信息查询 int MenuId;while(1)MenuId=Creat

13、SubMenu4();if(MenuId=0)break;switch(MenuId)case 1:ShowBookInfo();break;case 2:ShowReaderInfo();break;case 3:SearchReader();break;case 4:SearchBook();break;case 0:MainMenu();break;void AddBookInfo()/新增图书记录struct BookInfo MyBook;cout请输入图书编号;while(IsBookExist) cout图书已存在,请重新输入;cout请输入书名;cout请输入作者;cout请输

14、入出版商; cout请输入isbn号;cout请输入出版日期;=0;strcpy,0);=1;FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); int SetPs;/查询写入文件位置SetPs=InvalidBookPosition();if(SetPs=-1) /图书记录都是有效的,文件指针定义在文件尾fseek(fp,0,SEEK_END);elsefseek(fp,(long)BOOKLEN*SetPs,SEEK_SET);/重新定位写入位置fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cou

15、t新增图书成功,现有图书CountBook()册按回车键继续添加endl;();getchar(); void ModifyBookInfo()/修改图书struct BookInfo MyBook;char ModifyBookCode6;if(CountBook=0)cout无法修改endl;return;cout请输入要修改的图书编号ModifyBookCode;if(!IsBookExist(ModifyBookCode)cout图书不存在endl;return; int ModiPosition=0;ModiPosition=GetPosition(ModifyBookCode,&M

16、yBook);cout请输入新书名;cout请输入新作者;cout请输入新出版商;cout请输入新的出版日期; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout修改成功,按回车键继续endl;();getchar(); void DelBookInfo()/删除图书char DelBookCode6;if(CountBook=0)cout无法删除endl

17、;return; cout请输入要删除的图书编号DelBookCode; if(!IsBookExist(DelBookCode) cout该书不存在endl;return;if(IsBorrow(DelBookCode) /书已经借出,无法删除cout书已经借出,无法删除endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); struct BookInfo MyBook;int ModiPosition=0;ModiPosition=GetPosition(DelBookCode,&MyBook);=0;fse

18、ek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout删除图书成功,现有图书CountBook()册endl; void BookBorrow()/图书借阅 char BookCode6;char ReaderCode6;if(CountBook()=0|CountReader()=0)cout无法借书endl;return;cout请输入图书编号BookCode; if(!IsBookExist(BookCode)cout借书失败,该书不存在endl;return; if(

19、IsBorrow(BookCode)cout书已经借出,借书失败endl;return; cout请输入读者编号ReaderCode; if(!IsReaderExist(ReaderCode)cout读者不存在,借书失败endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); =1; strcpy,ReaderCode); fseek(fp,(long)B

20、OOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout借书成功,按回车键继续endl; (); getchar(); void BookReturn()/还书 char BookCode6;if(CountBook()=0|CountReader()=0)cout无法还书endl;return;cout请输入图书编号BookCode; if(!IsBookExist(BookCode)cout还书失败,该书不存在endl;return; if(!IsBorrow(BookCode)cout书未借出,还书

21、失败endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); =0; strcpy,0); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout还书成功,按回车键继续endl; (); getchar(); void ShowBook

22、Info()/显示所有图书信息 struct BookInfo MyBookInfo;int booknum=CountBook();if(booknum=0)cout没有图书信息endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); while(fread(&MyBookInfo,BOOKLEN,1,fp)cout编号setw(6)书名setw(20)作者setw(20)出版商setw(30)出版日期setw(8); void SearchBook()/图书查询 char BookCode6;if(CountB

23、ook()=0)cout图书不存在endl;return; cout请输入图书编号BookCode;if(!IsBookExist(BookCode)cout图书不存在endl;return;struct BookInfo MyBook;GetPosition(BookCode,&MyBook);cout编号setw(6)书名setw(20)作者setw(20)出版商setw(30)出版日期setw(8); if=1)/若书借出,则显示借阅的读者的信息 ShowAReader; else cout该书未被借阅endl; void SearchReader()/读者查询 char ReaderC

24、ode6;if(CountReader=0)cout读者不存在endl;return;cout请输入读者编号ReaderCode; if(!IsReaderExist(ReaderCode)cout读者不存在endl;return; ShowAReader(ReaderCode);int BorrowCount=IsBorrowed(ReaderCode);if(BorrowCount=0)cout读者未借阅该书endl;else cout读者借阅了BorrowCount册endl;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打开错误endl;exit(0); s

25、truct BookInfo MyBook;int i=0;while(fread(&MyBook,BOOKLEN,1,fp)if(strcmp,ReaderCode)=0)i+;coutiendl; fclose(fp); void ShowAReader(char *ReaderCode)/显示指定编号的读者详细信息 FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打开错误endl;exit(0); struct ReaderInfo MyReader;while(fread(&MyReader,READERLEN,1,fp)=NULL)if(strcmp,Rea

26、derCode)=0)break;cout借阅读者ReaderCodeendl;fclose(fp); int InvalidBookPosition()/查询第一条无效图书记录在文件中的位置 int InvalidPs=-1;int count=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打开错误endl;exit(0); struct BookInfo MyBook;while(fread(&MyBook,BOOKLEN,1,fp)if=0)InvalidPs=count;break;count+;fclose(fp);return InvalidPs;i

27、nt IsBookExist(char *ChkBookCode)/查询指定图书在文件中是否存在 int IsExist=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打开错误endl;exit(0); struct BookInfo MyBook;while(fread(&MyBook,BOOKLEN,1,fp)if(strcmp,ChkBookCode)=0&IsExist=1;break;fclose(fp);return IsExist;int IsBorrow(char *BookCode)/判断图书是否已经借出 ,在借返回 1,否则返回 0 stru

28、ct BookInfo temp;int IsbBorrow =0;FILE *fp;if(fp=fopen(,rb)!=NULL)while(fread(&temp,BOOKLEN,1,fp)if(strcmp,BookCode)=0&=1)IsbBorrow=1;break;fclose(fp);return IsbBorrow; int GetPosition(char *ModiCode,struct BookInfo *MyBook)/获得待修改图书的位置 int count=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打开错误BookCode,Mo

29、diCode)=0&MyBook-IsAvailable=1)break;count+;fclose(fp);return count; void AddReaderInfo()/增加读者 struct ReaderInfo MyReader;cout读者编号;while(IsReaderExist) cout读者已存在,请重新输入; cout读者姓名;cout读者性别;=1;/新增读者FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); int SetPs;SetPs=InvalidReaderPosition(); if(SetPs

30、=-1) fseek(fp,0,SEEK_END); else fseek(fp,(long)READERLEN*SetPs,SEEK_SET); fwrite(&MyReader,READERLEN,1,fp); fclose(fp); cout添加读者成功,按回车键继续添加,现有读者CountReader()人endl; (); getchar(); void ModifyReaderInfo()/修改读者信息 struct ReaderInfo MyReader;char ModifyCode6;if(CountReader()=0)cout无法修改endl;return;cout请输入

31、要修改的编号ModifyCode;if(!IsReaderExist(ModifyCode)cout读者不存在endl;return;int ModiPosition=0;ModiPosition=GetRdPosition(ModifyCode,&MyReader);cout读者姓名;cout读者性别;FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET);fwrite(&MyReader,READERLEN,1,fp);fclose(fp)

32、;cout修改读者成功,按回车键继续endl;();getchar(); void DelReaderInfo()/删除读者信息 char DelCode6;if(CountReader()=0)cout无法删除endl;return; cout请输入要删除的读者编号DelCode; if(!IsReaderExist(DelCode) cout读者不存在,无法删除endl; return; int BorrowedNum; BorrowedNum=IsBorrowed(DelCode);/如果读者有书还未还,那不可以删除读者 if(BorrowedNum) cout不可以删除,有书还未还en

33、dl; return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打开错误endl;exit(0); struct ReaderInfo MyReader;int ModiPosition=0;ModiPosition=GetRdPosition(DelCode,&MyReader);=0;fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET);fwrite(&MyReader,READERLEN,1,fp);fclose(fp);cout删除成功,现有读者CountReader()人endl; int IsBorrowed(char *ReaderCode)/判断是否有书未还struct BookInfo temp;int BorrowedNum=0;FILE *fp;if(fp=fopen(,rb)!=NULL)while(fread(&temp,BOOKLEN,1,fp)if(strcmp,ReaderCode)=0&=1)BorrowedNum+;fclose(fp);return BorrowedNum; int GetRdPosition(char *ModiCode,struct

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论