收藏 分销(赏)

c课设图书管理系统.doc

上传人:w****g 文档编号:3380364 上传时间:2024-07-03 格式:DOC 页数:28 大小:88.50KB
下载 相关 举报
c课设图书管理系统.doc_第1页
第1页 / 共28页
c课设图书管理系统.doc_第2页
第2页 / 共28页
c课设图书管理系统.doc_第3页
第3页 / 共28页
c课设图书管理系统.doc_第4页
第4页 / 共28页
c课设图书管理系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、南京航空航天大学面向对象程序设计语言课程设计报告图 书 管 理 系 统学号:姓名:日期: 目 录一.需求分析.2二.程序主要功能.2三.程序运行平台.2四.系统功能框架图.3五.程序类说明.4六.模块分析.6七.比较有特色的地方.7八.存在的不足与对策.11九.编程体会.12十.程序源代码.13一 需求分析本系统旨在实现一个小型的图书管理系统,对于一个小型的图书馆或藏书室来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便读者借书查书及办理各种手续,更方便工作人员对图书进行更有效的管理。程序主要实现读者管理、图书基本信息及库存管理、图书借还管理以及一

2、些辅助功能等。(1) 以菜单的方式工作(2) 图书、读者的基本信息的新增(3) 图书、读者的基本信息的修改(4) 图书、读者记录的删除(5) 图书的借阅,归还(6) 查询图书、读者信息及借阅状态二 程序主要功能 该程序的主要功能有:l 读者功能可进行增加读者、读者信息修改、注销读者、读者查询、显示读者信息、显示所有读者信息等操作。l 图书信息管理可以进行查询图书、增加图书、删除图书信息、图书信息修改、显示全部图书信息等操作。其中添加内容包括:书名、ISBN编号、作者、出版商、出版日期、方便读者查看;l 图书借还功能 应该说这是整个系统最主要的功能,借还时要输入编号已及读者编号l 帮助一个简单的

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

4、信息管理图书管理系统图书信息管理帮 助统计查询.新增图书信息.删除图书信息.显示图书信息.修改图书信息.帮助说明.显示读者信息.返回上一层.新增读者信息.修改读者信息.删除图书信息.显示图书信息.帮助说明.返回上一层 输入图书编号及读者编号.还书 借书.返回上一层四系统功能框架图五程序类说明有关图书信息的类struct BookInfochar BookCode6;/图书编号char BookName30;/图书名字char BookAuthor20;/作者名 char BookPress50;/出版社 char BookPublicationDate8;/出版日期 char ISBN8;/图

5、书isbn号 char BookStatus;/图书借阅状态 0未借出 1借出 char ReaderCode6;/读者编号 编号为0为未借阅char IsAvailable;/图书是否有效,0无效,1,有效 ;void AddBookInfo();/增加图书void ModifyBookInfo();/修改图书void DelBookInfo();/删除图书int CountBook();/获得图书记录数int IsBookExist(char *);/判断图书(编号)是否存在void ShowBookInfo();/显示图书清单 void ShowReaderInfo(); /显示读者清单

6、int IsBorrow(char *);/判断是否在借int IsBorrowed(char *);/统计在借书的总数 void BookBorrow();/借书手续 void BookReturn();/还书手续有关读者信息的类struct ReaderInfochar ReaderCode6;/读者编号 char ReaderName20;/读者姓名 char Sex3;/读者性别 char IsAvailable;/读者是否有效,0无效,1,有效 ;void AddReaderInfo();/增加读者void ModifyReaderInfo();/修改读者void DelReader

7、Info();/删除读者void ShowReaderInfo(); /显示读者清单int CountReader();/获得读者记录数六.模块分析1、读者信息:下设子菜单,包括:a.新增读者 b.修改读者c.删除读者d.读者查询 e.显示读者信息 f.返回上一层 (1)读者编号:读者唯一的识别方式,所以不可以重复,长度小于六个字符。(2)读者姓名:长度小于20个字符。(3)读者性别:长度小于三个字符。2、书库信息:该部分内容最丰富,下设子菜单,包括a.新书入库 b.删除 c.修改 d.返回上一层 链表的思路也跟读者信息一样,从头结点开始建,每当新增加一个类节点时,就把新增结点加到链表尾部,再

8、让其中的next指向NULL空,这里没有对链表进行排序。 有关菜单的制作,就是先显示菜单,让用户输入选择,进行输入有效性检查,然后用switch来对不同的选择调用类中不同的函数。3、 借书/还书:借书需要判断的条件不只是判断图书是否存在、图书是否借出、读者是否存在。还书需要提供读者编号再判断图书是否已经借出。十程序源代码#include#include#include#include #include #includeusing namespace std;#define BOOKLEN sizeof(struct BookInfo)#define READERLEN sizeof(struc

9、t ReaderInfo) /函数声明void Welcome();int MainMenu();void SubMenu1();int CreatSubMenu1();void SubMenu2();int CreatSubMenu2();void SubMenu3();int CreatSubMenu3();void SubMenu();int CreatSubMenu4();void AddBookInfo();/增加图书void ModifyBookInfo();/修改图书void DelBookInfo();/删除图书int CountBook();/获得图书记录数int Count

10、Reader();/获得读者记录数int IsBookExist(char *);/判断图书(编号)是否存在int IsReaderExist(char *);/判断读者(编号)是否存在void AddReaderInfo();/增加读者void ModifyReaderInfo();/修改读者void DelReaderInfo();/删除读者void ShowBookInfo();/显示图书清单 void ShowReaderInfo(); /显示读者清单int IsBorrow(char *);/判断是否在借int IsBorrowed(char *);/统计在借书的总数 void Bo

11、okBorrow();/借书手续 void BookReturn();/还书手续 void SearchBook();/图书查询 void SearchReader();/读者查询 int GetPosition(char *,struct BookInfo*);/修改图书信息,获得修改记录的位置 int GetRdPosition(char *,struct ReaderInfo*);/修改读者信息,获得修改记录的位置 void ShowAReader(char *); /显示指定编号的读者的信息int InvalidBookPosition();/查询第一条无效图书信息 int Inval

12、idReaderPosition();/查询第一条无效读者信息 /图书结构定义struct BookInfochar BookCode6;/图书编号char BookName30;/图书名字char BookAuthor20;/作者名 char BookPress50;/出版社 char BookPublicationDate8;/出版日期 char ISBN8;/图书isbn号 char BookStatus;/图书借阅状态 0未借出 1借出 char ReaderCode6;/读者编号 编号为0为未借阅char IsAvailable;/图书是否有效,0无效,1,有效 ;/读者结构体str

13、uct ReaderInfochar ReaderCode6;/读者编号 char ReaderName20;/读者姓名 char Sex3;/读者性别 char IsAvailable;/读者是否有效,0无效,1,有效 ; void Welcome()cout*endl;cout*图书信息借阅系统*endl; cout*endl;cout*现有图书CountBook()册读者CountReader()人*endl;int MainMenu()int m;while(1)cout*欢迎使用图书管理系统*endl;cout*endl;cout*1.图书信息管理*endl;cout*2.读者信息管

14、理*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 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选择错误

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

16、.借书*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;while(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

17、中选择endl;return m;int CountBook()/统计已有图书数量(有效图书) struct BookInfo BookTemp;FILE *fp;int count=0;if(fp=fopen(bookinfo.dat,rb)=NULL)return 0;elsewhile(fread(&BookTemp,BOOKLEN,1,fp)if(BookTemp.IsAvailable=1)count+;fclose(fp);return count;int CountReader()/统计已有读者人数(有效人数) struct ReaderInfo ReaderTemp;FILE

18、*fp;int count =0;if(fp=fopen(bookinfo.dat,rb)=NULL)return 0;elsewhile(fread(&ReaderTemp,READERLEN,1,fp)if(ReaderTemp.IsAvailable=1)count+;fclose(fp);return count;void SubMenu1()/图书信息管理 int MenuId;while(1)MenuId=CreatSubMenu1();if(MenuId=0)break;switch(MenuId)case 1:AddBookInfo();break;case 2:ModifyB

19、ookInfo();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:ModifyReaderInfo();break;case 3:DelReaderInfo();break;case 0:MainMenu();break; void SubMenu3()/图书借阅

20、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=CreatSubMenu4();if(MenuId=0)break;switch(MenuId)case 1:ShowBookInfo();break;case 2:ShowReaderInfo();bre

21、ak;case 3:SearchReader();break;case 4:SearchBook();break;case 0:MainMenu();break;void AddBookInfo()/新增图书记录struct BookInfo MyBook;cout请输入图书编号MyBook.BookCode;while(IsBookExist(MyBook.BookCode) cout图书已存在,请重新输入MyBook.BookCode;cout请输入书名MyBook.BookName;cout请输入作者MyBook.BookAuthor;cout请输入出版商MyBook.BookPress

22、; cout请输入isbn号MyBook.ISBN;cout请输入出版日期MyBook.BookPublicationDate;MyBook.BookStatus=0;strcpy(MyBook.ReaderCode,0);MyBook.IsAvailable=1;FILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); int SetPs;/查询写入文件位置SetPs=InvalidBookPosition();if(SetPs=-1) /图书记录都是有效的,文件指针定义在文件尾fseek(fp,0,SEEK_EN

23、D);elsefseek(fp,(long)BOOKLEN*SetPs,SEEK_SET);/重新定位写入位置fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout新增图书成功,现有图书CountBook()册按回车键继续添加endl;cin.ignore();getchar(); void ModifyBookInfo()/修改图书struct BookInfo MyBook;char ModifyBookCode6;if(CountBook=0)cout无法修改endl;return;cout请输入要修改的图书编号ModifyBookCode;if(!Is

24、BookExist(ModifyBookCode)cout图书不存在endl;return; int ModiPosition=0;ModiPosition=GetPosition(ModifyBookCode,&MyBook);cout请输入新书名MyBook.BookName;cout请输入新作者MyBook.BookName;cout请输入新出版商MyBook.ISBN;cout请输入新的出版日期MyBook.BookPublicationDate; FILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); f

25、seek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout修改成功,按回车键继续endl;cin.ignore();getchar(); void DelBookInfo()/删除图书char DelBookCode6;if(CountBook=0)cout无法删除endl;return; cout请输入要删除的图书编号DelBookCode; if(!IsBookExist(DelBookCode) cout该书不存在endl;return;if(IsBorrow(DelB

26、ookCode) /书已经借出,无法删除cout书已经借出,无法删除endl;return; FILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); struct BookInfo MyBook;int ModiPosition=0;ModiPosition=GetPosition(DelBookCode,&MyBook);MyBook.IsAvailable=0;fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);f

27、close(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(IsBorrow(BookCode)cout书已经借出,借书失败endl;return; cout请输入读者编号ReaderCode; if(!I

28、sReaderExist(ReaderCode)cout读者不存在,借书失败endl;return; FILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); MyBook.BookStatus=1; strcpy(MyBook.ReaderCode,ReaderCode); fseek(fp,(long)BOOKLEN*Position,SEEK_SET);

29、 fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout借书成功,按回车键继续endl; cin.ignore(); 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书未借出,还书失败endl;return; F

30、ILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); MyBook.BookStatus=0; strcpy(MyBook.ReaderCode,0); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout还书成功,按回车键继续end

31、l; cin.ignore(); getchar(); void ShowBookInfo()/显示所有图书信息 struct BookInfo MyBookInfo;int booknum=CountBook();if(booknum=0)cout没有图书信息endl;return; FILE *fp;if(fp=fopen(bookinfo.dat,rb+)=NULL)cout文件打开错误endl;exit(0); while(fread(&MyBookInfo,BOOKLEN,1,fp)cout编号setw(6)MyBookInfo.BookCode书名setw(20)MyBookInfo.BookName作者setw(20)MyBookInfo.BookAuthor出版商setw(30)MyBookInfo.BookP

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服