c++课设图书管理系统

更新时间:2024-03-28 19:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京航空航天大学

《面向对象程序设计语言》课程设计报告

图 书 管 理 系 统

学号: 姓名: 日期:

目 录

一.需求分析……………………………………………….2

二.程序主要功能………………………………………….2

三.程序运行平台………………………………………….2

四.系统功能框架图……………………………………….3

五.程序类说明…………………………………………….4

六.模块分析……………………………………………….6

七.比较有特色的地方…………………………………….7

八.存在的不足与对策…………………………………….11

九.编程体会……………………………………………….12

十.程序源代码…………………………………………….13

一. 需求分析

本系统旨在实现一个小型的图书管理系统,对于一个小型的图书馆或藏书室来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便读者借书查书及办理各种手续,更方便工作人员对图书进行更有效的管理。

程序主要实现读者管理、图书基本信息及库存管理、图书借还管理以及一些辅助功能等。

(1) 以菜单的方式工作

(2) 图书、读者的基本信息的新增 (3) 图书、读者的基本信息的修改 (4) 图书、读者记录的删除 (5) 图书的借阅,归还

(6) 查询图书、读者信息及借阅状态

二. 程序主要功能

该程序的主要功能有:

? 读者功能

可进行增加读者、读者信息修改、注销读者、读者查询、显示读者信息、显示所有读者信息等操作。 ? 图书信息管理

可以进行查询图书、增加图书、删除图书信息、图书信息修改、显示全部图书信

息等操作。

其中添加内容包括:书名、ISBN编号、作者、出版商、出版日期、方便读者查看;

? 图书借还功能

应该说这是整个系统最主要的功能,借还时要输入编号已及读者编号 ? 帮助

一个简单的操作指南,指导用户下一步该如何操作。 ? 退出系统

在运行时将从文件载入信息。

运行程序后每一步都会有详细的提示,操作简便,大多数地方都考虑到防止用户出现误操作的情况,以提高程序的健壮性,可以放心使用!

三.程序运行平台

该程序是用VC++6.0制做的,使用Microsoft Visual C++ 6.0运行该程序,具体操作是:打开Microsoft Visual C++ 6.0,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。

四.系统功能框架图

图书管理系统

图书信息管理

读者信息管借书还书帮助统计查询/

.新增图书信息 .删除图书信息 .显示图书信息

.新增读者信息 .修改读者信息 .删除图书信息 .显示图书信息 .帮助说明 .返回上一层

返回上一层还书借书输入图书编号及读者编号.

五.程序类说明

①有关图书信息的类

struct BookInfo {

char BookCode[6]; char BookName[30]; char BookAuthor[20]; char BookPress[50]; char BookPublicationDate[8]; char ISBN[8]; char BookStatus; char ReaderCode[6]; char IsAvailable; };

void AddBookInfo(); void ModifyBookInfo(); void DelBookInfo(); int CountBook(); int IsBookExist(char *); void ShowBookInfo(); void ShowReaderInfo(); int IsBorrow(char *); int IsBorrowed(char *); //图书编号 //图书名字 //作者名 //出版社 //出版日期 //图书isbn号

//图书借阅状态 ‘0’未借出 ‘1’借出 //读者编号 编号为‘0’为未借阅 //图书是否有效,‘0’无效,‘1’,有效 //增加图书 //修改图书 //删除图书 //获得图书记录数 //判断图书(编号)是否存在 //显示图书清单 //显示读者清单 //判断是否在借 //统计在借书的总数

void BookBorrow(); void BookReturn(); //借书手续 //还书手续

②有关读者信息的类

struct ReaderInfo {

char ReaderCode[6]; char ReaderName[20]; char Sex[3]; char IsAvailable; };

void AddReaderInfo(); void ModifyReaderInfo(); void DelReaderInfo(); void ShowReaderInfo(); int CountReader();

//读者编号 //读者姓名 //读者性别

//读者是否有效,‘0’无效,‘1,’有效 //增加读者 //修改读者 //删除读者

//显示读者清单 //获得读者记录数

六.模块分析

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 using namespace std;

#define BOOKLEN sizeof(struct BookInfo)

#define READERLEN sizeof(struct 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 CountReader(); //获得读者记录数 int IsBookExist(char *); //判断图书(编号)是否存在 int IsReaderExist(char *); //判断读者(编号)是否存在 void AddReaderInfo(); //增加读者 void ModifyReaderInfo(); //修改读者 void DelReaderInfo(); //删除读者 void ShowBookInfo(); //显示图书清单 void ShowReaderInfo(); //显示读者清单 int IsBorrow(char *); //判断是否在借 int IsBorrowed(char *); //统计在借书的总数 void BookBorrow(); //借书手续 void BookReturn(); //还书手续 void SearchBook(); //图书查询 void SearchReader(); //读者查询 int GetPosition(char *,struct BookInfo*); //修改图书信息,获得修改记录的位置

int GetRdPosition(char *,struct ReaderInfo*); //修改读者信息,获得修改记录的位置 void ShowAReader(char *); //显示指定编号的读者的信息 int InvalidBookPosition(); //查询第一条无效图书信息 int InvalidReaderPosition(); //查询第一条无效读者信息 //图书结构定义 struct BookInfo {

char BookCode[6]; //图书编号 char BookName[30]; //图书名字 char BookAuthor[20]; //作者名 char BookPress[50]; //出版社 char BookPublicationDate[8]; //出版日期 char ISBN[8]; //图书isbn号 char BookStatus; //图书借阅状态 ‘0’未借出 ‘1’借出 char ReaderCode[6]; //读者编号 编号为‘0’为未借阅 char IsAvailable; //图书是否有效,‘0’无效,‘1’,有效 };

//读者结构体 struct ReaderInfo { char ReaderCode[6]; //读者编号 char ReaderName[20]; //读者姓名 char Sex[3]; //读者性别 char IsAvailable; //读者是否有效,‘0’无效,‘1,’有效 };

void Welcome() { cout<<\ cout<<\图书信息借阅系统*******************\ cout<<\ cout<<\现有图书\册\读者\人\}

int MainMenu() { int m; while(1) { cout<<\欢迎使用图书管理系统***********************\ cout<<\

cout<<\图书信息管理***************************\ cout<<\读者信息管理***************************\ cout<<\借书 还书****************************\ cout<<\统计 查询****************************\ cout<<\退出 系统*****************************\ cout<<\请选择0-4:\ cin>>m; if(m>=0&&m<=4) break; else cout<<\选择错误,请在0-4中选择\ } return m; }

int CreatSubMenu1() { int m; while(1) { cout<<\图书信息管理*****************************\ cout<<\; cout<<\新增 图书******************************\ cout<<\修改 图书******************************\ cout<<\删除 图书******************************\ cout<<\返回上一层********************************\ cout<<\请选择0-3:\ cin>>m; if(m>=0&&m<=3) break; else cout<<\选择错误,请在0-3中选择\ }

return m; }

int CreatSubMenu2() { int m; while(1) { cout<<\读者信息管理*****************************\ cout<<\; cout<<\新增 读者******************************\ cout<<\修改 读者******************************\ cout<<\删除 读者******************************\ cout<<\返回上一层********************************\ cout<<\请选择0-3:\ cin>>m; cin.ignore(); if(m>=0&&m<=3) break; else cout<<\选择错误,请在0-3中选择\ } return m; }

int CreatSubMenu3() { int m; while(1) { cout<<\图书流通*****************************\ cout<<\; cout<<\借书******************************\ cout<<\还书******************************\ cout<<\返回上一层********************************\

cout<<\请选择0-2:\ cin>>m; if(m>=0&&m<=2) break; else cout<<\选择错误,请在0-2中选择\ } return m; }

int CreatSubMenu4() { int m; while(1) { cout<<\统计查询****************************\ cout<<\ cout<<\图书清单***************************\ cout<<\读者清单***************************\ cout<<\图书查询****************************\ cout<<\读者查询****************************\ cout<<\返回上层*****************************\ cout<<\请选择0-4:\ cin>>m; if(m>=0&&m<=4) break; else cout<<\选择错误,请在0-4中选择\ } return m; }

int CountBook() //统计已有图书数量(有效图书) { struct BookInfo BookTemp; FILE *fp; int count=0; if((fp=fopen(\ return 0;

else { while(fread(&BookTemp,BOOKLEN,1,fp)) if(BookTemp.IsAvailable=='1') count++; fclose(fp); return count; } }

int CountReader() //统计已有读者人数(有效人数) { struct ReaderInfo ReaderTemp; FILE *fp; int count =0; if((fp=fopen(\ return 0; else { while(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: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:ModifyReaderInfo();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=CreatSubMenu4(); 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<<\请输入图书编号\ cin>>MyBook.BookCode; while(IsBookExist(MyBook.BookCode)) { cout<<\图书已存在,请重新输入\ cin>>MyBook.BookCode; } cout<<\请输入书名\ cin>>MyBook.BookName; cout<<\请输入作者\ cin>>MyBook.BookAuthor; cout<<\请输入出版商\ cin>>MyBook.BookPress; cout<<\请输入isbn号\ cin>>MyBook.ISBN; cout<<\请输入出版日期\ cin>>MyBook.BookPublicationDate; MyBook.BookStatus='0'; strcpy(MyBook.ReaderCode,\ MyBook.IsAvailable='1'; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } int SetPs; //查询写入文件位置 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<<\新增图书成功,现有图书\册\按回车键继续添加\ cin.ignore(); getchar(); }

void ModifyBookInfo() //修改图书 { struct BookInfo MyBook; char ModifyBookCode[6]; if(CountBook==0) { cout<<\无法修改\ return; } cout<<\请输入要修改的图书编号\ cin>>ModifyBookCode; if(!IsBookExist(ModifyBookCode)) { cout<<\图书不存在\ return; } int ModiPosition=0; ModiPosition=GetPosition(ModifyBookCode,&MyBook); cout<<\请输入新书名\ cin>>MyBook.BookName; cout<<\请输入新作者\ cin>>MyBook.BookName; cout<<\请输入新出版商\ cin>>MyBook.ISBN; cout<<\请输入新的出版日期\ cin>>MyBook.BookPublicationDate; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<\修改成功,按回车键继续\ cin.ignore(); getchar();

}

void DelBookInfo() //删除图书 { char DelBookCode[6]; if(CountBook==0) { cout<<\无法删除\ return; } cout<<\请输入要删除的图书编号\ cin>>DelBookCode; if(!IsBookExist(DelBookCode)) { cout<<\该书不存在\ return; } if(IsBorrow(DelBookCode)) //书已经借出,无法删除 { cout<<\书已经借出,无法删除\ return; } FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ 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); fclose(fp); cout<<\删除图书成功,现有图书\册\ }

void BookBorrow() //图书借阅 { char BookCode[6]; char ReaderCode[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(\ { cout<<\文件打开错误\ 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); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<\借书成功,按回车键继续\ cin.ignore(); getchar(); }

void BookReturn() //还书 { char BookCode[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(\ { cout<<\文件打开错误\ exit(0); } int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); MyBook.BookStatus='0'; strcpy(MyBook.ReaderCode,\ fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<\还书成功,按回车键继续\ cin.ignore(); getchar(); }

void ShowBookInfo() //显示所有图书信息 { struct BookInfo MyBookInfo; int booknum=CountBook(); if(booknum==0) { cout<<\没有图书信息\ return; } FILE *fp; if((fp=fopen(\

{ cout<<\文件打开错误\ exit(0); } while(fread(&MyBookInfo,BOOKLEN,1,fp)) cout<<\编号\书名\作者\ <

void SearchBook() //图书查询 { char BookCode[6]; if(CountBook()==0) { cout<<\图书不存在\ return; } cout<<\请输入图书编号\ cin>>BookCode; if(!IsBookExist(BookCode)) { cout<<\图书不存在\ return; } struct BookInfo MyBook; GetPosition(BookCode,&MyBook); cout<<\编号\书名\作者\ <

void SearchReader() //读者查询 { char ReaderCode[6]; if(CountReader==0) { cout<<\读者不存在\ return;

} cout<<\请输入读者编号\ cin>>ReaderCode; if(!IsReaderExist(ReaderCode)) { cout<<\读者不存在\ return; } ShowAReader(ReaderCode); int BorrowCount=IsBorrowed(ReaderCode); if(BorrowCount==0) cout<<\读者未借阅该书\ else { cout<<\读者借阅了\册\ FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct BookInfo MyBook; int i=0; while(fread(&MyBook,BOOKLEN,1,fp)) { if(strcmp(MyBook.ReaderCode,ReaderCode)==0) { i++; cout<

void ShowAReader(char *ReaderCode) //显示指定编号的读者详细信息 { FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct ReaderInfo MyReader;

while(fread(&MyReader,READERLEN,1,fp)==NULL) if(strcmp(MyReader.ReaderCode,ReaderCode)==0) break; cout<<\借阅读者\ fclose(fp); }

int InvalidBookPosition() //查询第一条无效图书记录在文件中的位置 { int InvalidPs=-1; int count=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct BookInfo MyBook; while(fread(&MyBook,BOOKLEN,1,fp)) { if(MyBook.IsAvailable=='0') { InvalidPs=count; break; } count++; } fclose(fp); return InvalidPs; }

int IsBookExist(char *ChkBookCode) //查询指定图书在文件中是否存在 { int IsExist=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct BookInfo MyBook; while(fread(&MyBook,BOOKLEN,1,fp)) { if(strcmp(MyBook.BookCode,ChkBookCode)==0&&MyBook.IsAvailable) { IsExist=1;

break; } } fclose(fp); return IsExist; }

int IsBorrow(char *BookCode) //判断图书是否已经借出 ,在借返回 1,否则返回 0 { struct BookInfo temp; int IsbBorrow =0; FILE *fp; if((fp=fopen(\ { while(fread(&temp,BOOKLEN,1,fp)) if(strcmp(temp.BookCode,BookCode)==0&&temp.BookStatus=='1') { IsbBorrow=1; break; } } fclose(fp); return IsbBorrow; }

int GetPosition(char *ModiCode,struct BookInfo *MyBook) //获得待修改图书的位置 { int count=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } while(fread(MyBook,BOOKLEN,1,fp)) { if(strcmp(MyBook->BookCode,ModiCode)==0&&MyBook->IsAvailable=='1') break; count++; } fclose(fp); return count; }

void AddReaderInfo() //增加读者 { struct ReaderInfo MyReader;

cout<<\读者编号\ cin>>MyReader.ReaderCode; while(IsReaderExist(MyReader.ReaderCode)) { cout<<\读者已存在,请重新输入\ cin>>MyReader.ReaderCode; } cout<<\读者姓名\ cin>>MyReader.ReaderName; cout<<\读者性别\ cin>>MyReader.Sex; MyReader.IsAvailable='1'; //新增读者 FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } int SetPs; SetPs=InvalidReaderPosition(); if(SetPs=-1) fseek(fp,0,SEEK_END); else fseek(fp,(long)READERLEN*SetPs,SEEK_SET); fwrite(&MyReader,READERLEN,1,fp); fclose(fp); cout<<\添加读者成功,按回车键继续添加,现有读者\人\ cin.ignore(); getchar(); }

void ModifyReaderInfo() //修改读者信息 { struct ReaderInfo MyReader; char ModifyCode[6]; if(CountReader()==0) { cout<<\无法修改\ return; } cout<<\请输入要修改的编号\ cin>>ModifyCode; if(!IsReaderExist(ModifyCode)) { cout<<\读者不存在\ return;

} int ModiPosition=0; ModiPosition=GetRdPosition(ModifyCode,&MyReader); cout<<\读者姓名\ cin>>MyReader.ReaderName; cout<<\读者性别\ cin>>MyReader.Sex; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET); fwrite(&MyReader,READERLEN,1,fp); fclose(fp); cout<<\修改读者成功,按回车键继续\ cin.ignore(); getchar(); }

void DelReaderInfo() //删除读者信息 { char DelCode[6]; if(CountReader()==0) { cout<<\无法删除\ return; } cout<<\请输入要删除的读者编号\ cin>>DelCode; if(!IsReaderExist(DelCode)) { cout<<\读者不存在,无法删除\ return; } int BorrowedNum; BorrowedNum=IsBorrowed(DelCode); //如果读者有书还未还,那不可以删除读者 if(BorrowedNum) { cout<<\不可以删除,有书还未还\ return; } FILE *fp;

if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct ReaderInfo MyReader; int ModiPosition=0; ModiPosition=GetRdPosition(DelCode,&MyReader); MyReader.IsAvailable='0'; fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET); fwrite(&MyReader,READERLEN,1,fp); fclose(fp); cout<<\删除成功,现有读者\人\}

int IsBorrowed(char *ReaderCode) //判断是否有书未还 { struct BookInfo temp; int BorrowedNum=0; FILE *fp; if((fp=fopen(\ while(fread(&temp,BOOKLEN,1,fp)) if(strcmp(temp.ReaderCode,ReaderCode)==0&&temp.BookStatus=='1') BorrowedNum++; fclose(fp); return BorrowedNum; }

int GetRdPosition(char *ModiCode,struct ReaderInfo *MyReader) //获得待修改读者记录的位置 { int count=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } while(fread(MyReader,READERLEN,1,fp)) { if(strcmp(MyReader->ReaderCode,ModiCode)==0&&MyReader->IsAvailable=='1') break; count++; } fclose(fp); return count;

}

int IsReaderExist(char *ChkCode) //查询读者是否存在 { int IsExist=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开错误\ exit(0); } struct ReaderInfo MyReader; while(fread(&MyReader,READERLEN,1,fp)) { if(strcmp(MyReader.ReaderCode,ChkCode)==0&&MyReader.IsAvailable=='1') { IsExist=1; break; } } fclose(fp); return IsExist; }

int InvalidReaderPosition() //查询第一条无效读者的位置 { int InvalidPs=-1; int count=0; FILE *fp; if((fp=fopen(\ { cout<<\文件打开失败\ exit(0); } struct ReaderInfo MyReader; while(fread(&MyReader,READERLEN,1,fp)) { if(MyReader.IsAvailable=='0') { InvalidPs=count; break; } count++; } fclose(fp); return InvalidPs;

}

void ShowReaderInfo() //显示所有读者信息 { struct ReaderInfo MyReader; int ReaderNum=CountReader(); if(ReaderNum==0) { cout<<\没有读者信息\ return; } FILE *fp; if((fp=fopen(\ { cout<<\文件打开失败\ exit(0); } while(fread(&MyReader,READERLEN,1,fp)) { if(MyReader.IsAvailable=='1') cout<

int main() { int MenuId; Welcome(); while(1) { MenuId=MainMenu(); if(MenuId==0) { cout<<\程序运行结束!\ break; } switch(MenuId) { case 1: SubMenu1();break; case 2: SubMenu2();break; case 3: SubMenu3();break; case 4: SubMenu4();break; } } return 0;

}

本文来源:https://www.bwwdw.com/article/71kr.html

Top