简易图书管理系统
一、功能描述
该系统运行后主菜单界面如下:
系统可实现图书查询、借书、还书、书目浏览、图书管理等功能。在主菜单状态下输入“Q”或“q”,则系统运行结束。 一、主要数据结构:
1、图书类型:类数组
Class Book{
char Name[80]; //书名 char Auther[80]; //作者
int amount; //该书在库数量 };
Book booklist[20]; //假定不会超过20种图书 2、书库文件:用文本文件保存书目信息
其中第一个数据为一个整数,是图书的种类数。此后的数据为书目信息,每本书包括书名、作者、在库数量。
程序运行之前可在工程文件夹下用记事本建立一个文本文件,其中写入数据0。以此作为书库文件的初始状态。
二、主要功能模块
1、查询模块
提示输入待查询书名,搜索到匹配项后在屏幕上显示书名、作者、该书在库数量(有几本书);若库中无匹配书目,则屏幕提示“书库无此书!”。查寻范围为从文件中读出的结构体数组。
2、浏览模块
在屏幕上显示目前书库信息,即结构体数组信息。若库中读出的图书种类数为0,说明还没有图书,此时提示“库中无图书!”。
3、借书模块
从库中读出信息,如果图书种类数=0,表明库中无图书,则提示“库中无图书,暂不能借阅!”,否则提示输入待借图书名,如未搜索到匹配项,提示“库中无此书!”,如果搜索到的图书在库数量已经为0,则提示“抱歉,该书全部借出!”,否则提示“借阅成功”,同时将该书在库数量-1。并将图书信息写入文件。
4、还书模块
从库中读出信息,如果图书种类数=0,库中无图书,提示“库中无图书,暂不能还书!”,否则提示输入待还书名,如未搜索到匹配项提示“库中无此书!”,否则提示“还书成功”,同时该书在库数量+1。并将信息写入文件。
5、管理模块
该模块可向库中添加图书。有权限者方可进入管理,运行后首先提示输入口令,可以有三次输入机会,若口令不对提示“抱歉,无权限,按回车返回主菜单”。否则可以向书库中添加图书。系统提示“输入添加图书的书名、作者、在库数量:”,可一次添加多种图书。管理模块的口令自行预定。修改信息后写入文件。
二、算法提示:
1、数据类型及变量定义
Class Book{ //表示图书的类 char Name[80]; //书名 char Auther[80]; //作者
int amount; //该书在库数量 };
Book booklist[20]; //结构体数组,假定不会超过20种图书
书库图书信息:文本文件建立,初始可用记事本建立,只有一个数据0,表示空库。
2、主函数模块算法 void main(){
for(; ;){ //系统连续工作至退出为止 //调用显示主菜单模块; //提取输入的选择字符ch;
//根据字符ch值选择调用查询模块、或借阅模块、或还书模块、或浏览
//模块、或管理模块、或退出
}
3、查询模块算法 void SearchBook(){ //将书库信息读入数组
for(;;){ //可连续查询多次 }
4、借阅模块算法 void BorrowBook(){ //读出书库信息
}
MainMenu(); //显示主菜单
//输入待查询书名bookName; //在数组中查找匹配的书名
cout<<\继续查询吗?按n键退出, 回车键继续查询:\cin.get(ch);
if(ch=='n'||ch=='N') 退出循环 if(选择退出) 退出循环; }
//如果找到输出该书所有信息,否则cout< cin.get(ch); //吸收以前输入项的回车符 } if(是空库) cout<<\库中无图书,暂不能借阅!\else{ //库中有书 } for(;;){ //可连续重复借阅 } MainMenu(); 输入待借书名bookName; //在数组中查找匹配项 if(未找到) cout<< \库中无此书!\ else if(在库数量==0) cout<<\抱歉,该书全部借出.\ else{ } cout<<\继续借阅吗?按n键退出, 回车键继续借阅:\cin.get(ch); cin.get(ch); if(ch=='n'||ch=='N')退出循环; cout<<\借阅成功!\//在库数量-- //书的种类及书目数组写入文件 5、还书模块算法 void ReturnBook(){ //读出书库信息 for(;;){ //可重复还书 //输入待还书名bookName; //查找匹配项 if(未找到) cout< cout<<\继续借阅吗?按n键退出, 回车键继续借阅:\ cout<<\还书成功!\//该书在库数量++ cin.get(ch); } } cin.get(ch); if(ch=='n'||ch=='N')退出循环 //书的种类及书目数组写入文件 MainMenu(); 6、浏览模块算法 void ListShow(){ //读出书库信息 } 7、管理模块算法 void ManageBook(){ //口令进入 for(int i=0;i<3;i++){ //有三次输入机会 } if(i>=3){ //无权限 } else{ //进入管理 for(;;){ //可连续添加多种图书 cout<<\抱歉,无此权限,按回车返回主菜单\char ch; cin.get(ch); cin.get(ch); if(ch=='\\r') MainMenu(); 输入口令password; if(口令对) 退出循环; if(是空库) cout<<\库中无图书!\else 输出结构体数组信息; cout<<\按回车键返回:\cin.get(ch); cin.get(ch); if(ch=='\\r') MainMenu(); //读出书库信息