c++课设图书管理系统.docx
- 文档编号:28008302
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:36
- 大小:69.65KB
c++课设图书管理系统.docx
《c++课设图书管理系统.docx》由会员分享,可在线阅读,更多相关《c++课设图书管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
c++课设图书管理系统
南京航空航天大学
《面向对象程序设计语言》课程设计报告
图书管理系统
学号:
姓名:
日期:
一.需求分析……………………………………………….2
二.程序主要功能………………………………………….2
三.程序运行平台………………………………………….2
四.系统功能框架图……………………………………….3
五.程序类说明…………………………………………….4
六.模块分析……………………………………………….6
七.比较有特色的地方…………………………………….7
八.存在的不足与对策…………………………………….11
九.编程体会……………………………………………….12
十.程序源代码…………………………………………….13
一.需求分析
本系统旨在实现一个小型的图书管理系统,对于一个小型的图书馆或藏书室来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便读者借书查书及办理各种手续,更方便工作人员对图书进行更有效的管理。
程序主要实现读者管理、图书基本信息及库存管理、图书借还管理以及一些辅助功能等。
(1)以菜单的方式工作
(2)图书、读者的基本信息的新增
(3)图书、读者的基本信息的修改
(4)图书、读者记录的删除
(5)图书的借阅,归还
(6)查询图书、读者信息及借阅状态
二.程序主要功能
该程序的主要功能有:
读者功能
可进行增加读者、读者信息修改、注销读者、读者查询、显示读者信息、显示所有读者信息等操作。
图书信息管理
可以进行查询图书、增加图书、删除图书信息、图书信息修改、显示全部图书信息等操作。
其中添加内容包括:
书名、ISBN编号、作者、出版商、出版日期、方便读者查看;
图书借还功能
应该说这是整个系统最主要的功能,借还时要输入编号已及读者编号
帮助
一个简单的操作指南,指导用户下一步该如何操作。
退出系统
在运行时将从文件载入信息。
运行程序后每一步都会有详细的提示,操作简便,大多数地方都考虑到防止用户出现误操作的情况,以提高程序的健壮性,可以放心使用!
三.程序运行平台
该程序是用VC++制做的,使用MicrosoftVisualC++运行该程序,具体操作是:
打开MicrosoftVisualC++,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。
四.系统功能框架图
五.程序类说明
①有关图书信息的类
structBookInfo
{
charBookCode[6];块分析
1、读者信息:
下设子菜单,包括:
a.新增读者
b.修改读者
c.删除读者
d.读者查询
e.显示读者信息
f.返回上一层
(1)读者编号:
读者唯一的识别方式,所以不可以重复,长度小于六个字符。
(2)读者姓名:
长度小于20个字符。
(3)读者性别:
长度小于三个字符。
2、书库信息:
该部分内容最丰富,下设子菜单,包括
a.新书入库
b.删除
c.修改
d.返回上一层
链表的思路也跟读者信息一样,从头结点开始建,每当新增加一个类节点时,就把新增结点加到链表尾部,再让其中的next指向NULL空,这里没有对链表进行排序。
有关菜单的制作,就是先显示菜单,让用户输入选择,进行输入有效性检查,然后用switch来对不同的选择调用类中不同的函数。
3、借书/还书:
借书需要判断的条件不只是判断图书是否存在、图书是否借出、读者是否存在。
还书需要提供读者编号再判断图书是否已经借出。
十.程序源代码
#include
#include<>
#include<>
#include
#include
#include<>
usingnamespacestd;
#defineBOOKLENsizeof(structBookInfo)
#defineREADERLENsizeof(structReaderInfo)
书信息管理***"< cout<<"*2.读者信息管理***"< cout<<"*3.借书还书****"< cout<<"*4.统计查询****"< cout<<"*0.退出系统*****"< cout<<"请选择0-4: "< cin>>m; if(m>=0&&m<=4) break; else cout<<"选择错误,请在0-4中选择"< } returnm; } intCreatSubMenu1() { intm; while (1) { cout<<"***图书信息管理*****"< cout<<"**"< cout<<"***1.新增图书"< cout<<"***2.修改图书"< cout<<"***3.删除图书"< cout<<"***0.返回上一层**"< cout<<"请选择0-3: "< cin>>m; if(m>=0&&m<=3) break; else cout<<"选择错误,请在0-3中选择"< } returnm; } intCreatSubMenu2() { intm; while (1) { cout<<"***读者信息管理*****"< cout<<"**"< cout<<"***1.新增读者"< cout<<"***2.修改读者"< cout<<"***3.删除读者"< cout<<"***0.返回上一层**"< cout<<"请选择0-3: "< cin>>m; (); if(m>=0&&m<=3) break; else cout<<"选择错误,请在0-3中选择"< } returnm; } intCreatSubMenu3() { intm; while (1) { cout<<"***图书流通*****"< cout<<"**"< cout<<"****1.借书"< cout<<"****2.还书"< cout<<"***0.返回上一层**"< cout<<"请选择0-2: "< cin>>m; if(m>=0&&m<=2) break; else cout<<"选择错误,请在0-2中选择"< } returnm; } intCreatSubMenu4() { intm; while (1) { cout<<"*****统计查询****"< cout<<""< cout<<"****1.图书清单***"< cout<<"****2.读者清单***"< cout<<"****3.图书查询****"< cout<<"****4.读者查询****"< cout<<"****0.返回上层*****"< cout<<"请选择0-4: "< cin>>m; if(m>=0&&m<=4) break; else cout<<"选择错误,请在0-4中选择"< } returnm; } intCountBook()//统计已有图书数量(有效图书) { structBookInfoBookTemp; FILE*fp; intcount=0; if((fp=fopen("","rb"))==NULL) return0; else { while(fread(&BookTemp,BOOKLEN,1,fp)) if=='1') count++; fclose(fp); returncount; } } intCountReader()//统计已有读者人数(有效人数) { structReaderInfoReaderTemp; FILE*fp; intcount=0; if((fp=fopen("","rb"))==NULL) return0; else { while(fread(&ReaderTemp,READERLEN,1,fp)) if=='1') count++; fclose(fp); returncount; } } voidSubMenu1()//图书信息管理 { intMenuId; while (1) { MenuId=CreatSubMenu1(); if(MenuId==0) break; switch(MenuId) { case1: AddBookInfo();break; case2: ModifyBookInfo();break; case3: DelBookInfo();break; case0: MainMenu();break; } } } voidSubMenu2()//读者信息管理 { intMenuId; while (1) { MenuId=CreatSubMenu2(); if(MenuId==0) break; switch(MenuId) { case1: AddReaderInfo();break; case2: ModifyReaderInfo();break; case3: DelReaderInfo();break; case0: MainMenu();break; } } } voidSubMenu3()//图书借阅 { intMenuId; while (1) { MenuId=CreatSubMenu3(); if(MenuId==0) break; switch(MenuId) { case1: BookBorrow();break; case2: BookReturn();break; case0: MainMenu();break; } } } voidSubMenu4()//信息查询 { intMenuId; while (1) { MenuId=CreatSubMenu4(); if(MenuId==0) break; switch(MenuId) { case1: ShowBookInfo();break; case2: ShowReaderInfo();break; case3: SearchReader();break; case4: SearchBook();break; case0: MainMenu();break; } } } voidAddBookInfo()//新增图书记录 { structBookInfoMyBook; cout<<"请输入图书编号"< cin>>; while(IsBookExist) { cout<<"图书已存在,请重新输入"< cin>>; } cout<<"请输入书名"< cin>>; cout<<"请输入作者"< cin>>; cout<<"请输入出版商"< cin>>; cout<<"请输入isbn号"< cin>>; cout<<"请输入出版日期"< cin>>; ='0'; strcpy,"0"); ='1'; FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } intSetPs;//查询写入文件位置 SetPs=InvalidBookPosition(); if(SetPs==-1)//图书记录都是有效的,文件指针定义在文件尾 fseek(fp,0,SEEK_END); else fseek(fp,(long)BOOKLEN*SetPs,SEEK_SET);//重新定位写入位置 fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"新增图书成功,现有图书"< (); getchar(); } voidModifyBookInfo()//修改图书 { structBookInfoMyBook; charModifyBookCode[6]; if(CountBook==0) { cout<<"无法修改"< return; } cout<<"请输入要修改的图书编号"< cin>>ModifyBookCode; if(! IsBookExist(ModifyBookCode)) { cout<<"图书不存在"< return; } intModiPosition=0; ModiPosition=GetPosition(ModifyBookCode,&MyBook); cout<<"请输入新书名"< cin>>; cout<<"请输入新作者"< cin>>; cout<<"请输入新出版商"< cin>>; cout<<"请输入新的出版日期"< cin>>; FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"修改成功,按回车键继续"< (); getchar(); } voidDelBookInfo()//删除图书 { charDelBookCode[6]; if(CountBook==0) { cout<<"无法删除"< return; } cout<<"请输入要删除的图书编号"< cin>>DelBookCode; if(! IsBookExist(DelBookCode)) { cout<<"该书不存在"< return; } if(IsBorrow(DelBookCode))//书已经借出,无法删除 { cout<<"书已经借出,无法删除"< return; } FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } structBookInfoMyBook; intModiPosition=0; ModiPosition=GetPosition(DelBookCode,&MyBook); ='0'; fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"删除图书成功,现有图书"< } voidBookBorrow()//图书借阅 { charBookCode[6]; charReaderCode[6]; if(CountBook()==0||CountReader()==0) { cout<<"无法借书"< return; } cout<<"请输入图书编号"< cin>>BookCode; if(! IsBookExist(BookCode)) { cout<<"借书失败,该书不存在"< return; } if(IsBorrow(BookCode)) { cout<<"书已经借出,借书失败"< return; } cout<<"请输入读者编号"< cin>>ReaderCode; if(! IsReaderExist(ReaderCode)) { cout<<"读者不存在,借书失败"< return; } FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } intPosition=0; structBookInfoMyBook; Position=GetPosition(BookCode,&MyBook); ='1'; strcpy,ReaderCode); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"借书成功,按回车键继续"< (); getchar(); } voidBookReturn()//还书 { charBookCode[6]; if(CountBook()==0||CountReader()==0) { cout<<"无法还书"< return; } cout<<"请输入图书编号"< cin>>BookCode; if(! IsBookExist(BookCode)) { cout<<"还书失败,该书不存在"< return; } if(! IsBorrow(BookCode)) { cout<<"书未借出,还书失败"< return; } FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } intPosition=0; structBookInfoMyBook; Position=GetPosition(BookCode,&MyBook); ='0'; strcpy,"0"); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"还书成功,按回车键继续"< (); getchar(); } voidShowBookInfo()//显示所有图书信息 { structBookInfoMyBookInfo; intbooknum=CountBook(); if(booknum==0) { cout<<"没有图书信息"< return; } FILE*fp; if((fp=fopen("","rb+"))==NULL) { cout<<"文件打开错误"< exit(0); } while(fread(&MyBookInfo,BOOKLEN,1,fp)) cout<<"编号"< < < } voidSearchBook()//图书查询 { charBookCode[6]; if(CountBook()==0) { cout<<"图书不存在"< return; } cout<<"请输入图书编号"< cin>>BookCode; if(! IsBookExist(BookCode)) { cout<<"图书不存在"< return; } structBookInfoMyBook; GetPosition(BookCode,&MyBook); cout<<"编号"< < < if=='1')//若书借出,则显示借阅的读者的信息 ShowAReader; elsecout<<"该书未被借阅"< } voidSearchReader()//读者查询 { charReaderCode[6]; if(CountReader==0) { cout<<"读者不存在"< return; } cout<<"请输入读者编号"< cin>>ReaderCode; if(! IsReaderExist(ReaderCode)) { cout<<"读者不存在"< ret
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 图书 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)