1、 總體功能分析
實(shí)用的圖書館管理系統(tǒng)應(yīng)該至少包括一下功能:
1、上傳:新進(jìn)圖書以及基本信息的輸入
2、刪除:舊圖書以及基本信息的刪除
3、顯示:顯示圖書館已有的所有圖書
4、查找:查詢要借閱的圖書信息
5、借閱:實(shí)現(xiàn)用戶辦理借閱手續(xù)
6、歸還:實(shí)現(xiàn)用戶辦理歸還手續(xù)
系統(tǒng)以菜單方式工作使界面友好,易于操作。
2、建立相關(guān)屬性
由于系統(tǒng)設(shè)計(jì)的是一些圖書和讀者的信息存儲(chǔ),因此,需要定義一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)相關(guān)信息。
首先需要建立一個(gè)圖書類、圖書數(shù)據(jù)庫(kù)類、讀者類以及讀者數(shù)據(jù)庫(kù)類,并定義圖書和讀者的各種屬性。
#include "iostream"
#include "string"
#include "conio.h"
using namespace std;
struct Date{//日期結(jié)構(gòu)
int m_nYear;//年
int m_nMonth;//月
int m_nDay;//日
};
struct Reader{//讀者結(jié)構(gòu)
string name;//讀者姓名
Date bro;//借出時(shí)間
Date back;//歸還時(shí)間
};
struct Book{//圖書結(jié)構(gòu)
int m_nBook_Number;//圖書編號(hào)
string m_strTitle;//書名
string m_strWroter;//作者
int m_nMoreNum;//當(dāng)前在圖書館數(shù)量
int m_nTotalHoldNum;//圖書館共計(jì)數(shù)量
string m_sttrComment;//圖書介紹
Reader reader[20];
};
struct Info{//借書信息結(jié)構(gòu)
Info *m_pParentPoint;//前驅(qū)節(jié)點(diǎn)
Book *m_oBookInfo;//對(duì)應(yīng)圖書信息
Info *m_pNextPoint;//后繼節(jié)點(diǎn)
};
3、圖書館菜單
程序開始運(yùn)行,將顯示選擇菜單,供用戶選擇需要的功能,用戶根據(jù)需要,輸入不同的數(shù)字來(lái)選擇相應(yīng)功能。
int Select_Menu(){
//圖書管理系統(tǒng)主界面
cout << "--------------------------------------------------" << endl << endl;
cout << " 圖 書 館 管 理 系 統(tǒng) " << endl;
cout << " 主 菜 單 " << endl << endl;
cout << " 1.上傳圖書" << endl;
cout << " 2.下架圖書" << endl;
cout << " 3.顯示圖書" << endl;
cout << " 4.借閱圖書" << endl;
cout << " 5.歸還圖書" << endl;
cout << " 6.退出系統(tǒng)" << endl << endl;
cout << " 請(qǐng)選擇菜單項(xiàng):(1-6)" << endl;
cout << "--------------------------------------------------" << endl;
int id = 0;//編號(hào)
cout << "請(qǐng)輸入您的選擇:";
cin >> id;
return id;
}
4、圖書上傳
將圖書信息添加到圖書館中
Book *InputNode(){
//上傳圖書
Book *p = new Book;//動(dòng)態(tài)分配一片大小為sizeof(Book)字節(jié)的空間,并將該內(nèi)存空間的起始位置賦值給p
system("cls");//清屏
fflush(stdin);//清楚以前的輸入
cout << "請(qǐng)輸入圖書編號(hào):"; cin >> p->m_nBook_Number;
cout << "請(qǐng)輸入圖書:"; cin >> p->m_strTitle;
cout << "請(qǐng)輸入作者:"; cin >> p->m_strWroter;
cout << "請(qǐng)輸入當(dāng)前在圖書館數(shù)量:"; cin >> p->m_nMoreNum;
cout << "請(qǐng)輸入圖書館共計(jì)數(shù)量:"; cin >> p->m_nTotalHoldNum;
cout << "請(qǐng)輸入圖書介紹:"; cin >> p->m_sttrComment;
for(int i = 0; i < 20; i++){//初始化書本結(jié)構(gòu)成員中相關(guān)讀者指針內(nèi)容為空
(p->reader[i]).name = '\0';
}
return p;//返回成功讀入的書本信息
}
Info *Insert_BookInfo(Info *bth){
//上傳圖書
int flag, k, x;
cout << "請(qǐng)輸入您想上傳的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){//找到直接對(duì)已有的數(shù)量進(jìn)行修改
cout << "當(dāng)前圖書館內(nèi)擁有這本書" << p->m_oBookInfo->m_nMoreNum << "本,您想在增加一本" << p->m_oBookInfo->m_strTitle << "書?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
p->m_oBookInfo->m_nMoreNum++;
p->m_oBookInfo->m_nTotalHoldNum++;
cout << "增加后圖書館內(nèi)擁有這本書" << p->m_oBookInfo->m_nMoreNum << "本,一共擁有" << p->m_oBookInfo->m_nTotalHoldNum << "本" << endl;
}
return bth;
}
//圖書管內(nèi)未找到這本圖書編號(hào)
Book * r = InputNode();
if(bth == NULL){//當(dāng)bth指針為空時(shí),需要對(duì)其進(jìn)行單獨(dú)處理,鏈表表頭內(nèi)存的分配
bth = new Info;
bth->m_pParentPoint = NULL;
bth->m_oBookInfo = r;
bth->m_pNextPoint = NULL;
}
else {
//說(shuō)明存在頭指針
p = bth;
while (p->m_pNextPoint != NULL)
p = p->m_pNextPoint;
Info *q = new Info;
q->m_oBookInfo = r;
q->m_pNextPoint = NULL;
q->m_pParentPoint = p;
p->m_pNextPoint = q;
}
return bth;
}
5、 刪除圖書
將圖書信息從圖書館中刪除
Info *Delete_BookInfo(Info * bth){
//刪除圖書
int flag, k, x;
cout << "請(qǐng)輸入您想刪除的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 0){//為查找圖書編號(hào)
cout << "圖書館內(nèi)并沒(méi)有這本書?。?!" << endl;
return bth;
}
else{
if(p == NULL){//確保當(dāng)前操作是有效的,防止出現(xiàn)非法操作
cout << "查找錯(cuò)誤" << endl;
return bth;
}
else {
cout << "你想刪除的圖書信息如下:" << endl;
cout << "圖書編號(hào):" << p->m_oBookInfo->m_nBook_Number << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定刪除嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || 'y'){
if(p->m_pNextPoint != NULL && p->m_pParentPoint != NULL){//夾在鏈表中間的節(jié)點(diǎn)
Info *Left = p->m_pParentPoint;//將要?jiǎng)h除節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)指向賦值給前驅(qū)結(jié)點(diǎn)指針變量
Info *Right = p->m_pNextPoint;//將要?jiǎng)h除節(jié)點(diǎn)的后繼結(jié)點(diǎn)指向賦值給后繼結(jié)點(diǎn)指針變量
Left->m_pNextPoint = Right;//將后繼結(jié)點(diǎn)指針指向的地址作為前驅(qū)結(jié)點(diǎn)的后繼域
Right->m_pParentPoint = Left;//將前驅(qū)結(jié)點(diǎn)指針指向的地址作為后繼結(jié)點(diǎn)的前驅(qū)域
//釋放空間
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
else if(p->m_pParentPoint == NULL){//首結(jié)點(diǎn)的前驅(qū)為空,處理首結(jié)點(diǎn)刪除操作
if(p->m_pNextPoint == NULL){//說(shuō)明只有一個(gè)結(jié)點(diǎn)
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
bth = p->m_pNextPoint;
bth->m_pParentPoint = NULL;
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
else if(p->m_pNextPoint == NULL){
Info *Left = p->m_pParentPoint;
Left->m_pNextPoint = NULL;
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
}
}
}
}
6、 查找圖書
根據(jù)輸入的圖書編號(hào),是心啊圖書的查找。
Info *Sreach(Info *bth, int x, int *k, int *flag){
//搜索圖書
Info *p = bth;
*flag = 0;
while(p){
if(p->m_oBookInfo->m_nBook_Number == x){//尋到相同的圖書編號(hào)
*flag = 1;
return p;
}
else {
*flag = 0;
}
if(p->m_pNextPoint != NULL) {
p = p->m_pNextPoint;
}
else{
break;
}
}
return bth;
}
7、顯示圖書信息
顯示圖書館中所有的圖書信息。
void Output_BookInfo(Info * bth){
//輸出圖書信息
system("cls");
Info *p = bth;
while (p){
cout << "圖書編號(hào):" << p->m_oBookInfo->m_nBook_Number;
cout << "書名:" << p->m_oBookInfo->m_strTitle;
cout << "作者:" << p->m_oBookInfo->m_strWroter;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
p = p->m_pNextPoint;
}
}
8、圖書借閱
根據(jù)輸入的相關(guān)信息,實(shí)現(xiàn)借閱文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-492713.html
void Borrow_TheBook(Info *bth){
//圖書借出
system("cls");
int flag, k, x, i = 0;
cout << "請(qǐng)輸入您想借閱的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){
Book *r = p->m_oBookInfo;
cout << "你想借閱的圖書信息如下:" << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定借閱嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
if(r->m_nMoreNum == 0) cout << "對(duì)不起,本書 已經(jīng)全部借出···" << endl;
else{
system("cls");
for(i = 0; i < 20; i++)
if((r->reader[i]).name[0] == '\0') break;
cout << "請(qǐng)輸入借閱者的姓名:";cin >> (r->reader[i]).name;
cout << "請(qǐng)輸入借出日期:" << endl;
cout << "請(qǐng)輸入借出年份:";cin >> (r->reader[i]).bro.m_nYear;
cout << "請(qǐng)輸入借出月份:";cin >> (r->reader[i]).bro.m_nMonth;
cout << "請(qǐng)輸入借出日:";cin >> (r->reader[i]).bro.m_nDay;
cout << "請(qǐng)輸入歸還日期:" << endl;
cout << "請(qǐng)輸入歸還年份:";cin >> (r->reader[i]).back.m_nYear;
cout << "請(qǐng)輸入歸還月份:";cin >> (r->reader[i]).back.m_nMonth;
cout << "請(qǐng)輸入歸還日:";cin >> (r->reader[i]).back.m_nDay;
r->m_nMoreNum--;
cout << endl << "成功接到這本書" << endl;
}
}
}
}
9、圖書歸還
根據(jù)輸入的圖書編號(hào)歸還圖書。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-492713.html
void TurnBack_TheBook(Info *bth){
//圖書歸還
system("cls");
int flag, k, x, i = 0, j = 0;
cout << "請(qǐng)輸入您想借閱的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){
Book *r = p->m_oBookInfo;
cout << "你想歸還的圖書信息如下:" << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定歸還嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
system("cls");
cout << "請(qǐng)輸入借閱者的姓名:";
string nm;
cin >> nm;
for(i = 0; i < 20; i++)
if((r->reader[i]).name == nm) {
j = 1;
break;
}
if(j == 0) {
cout << "你未借閱過(guò)這本書" << endl;
return;
}
(r->reader[i]).name[0] = '\0';
r->m_nMoreNum++;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
}
}
else cout << "您不能歸還不存在的圖書" << endl;
}
10、完整代碼
#include "iostream"
#include "string"
#include "conio.h"
using namespace std;
struct Date{//日期結(jié)構(gòu)
int m_nYear;//年
int m_nMonth;//月
int m_nDay;//日
};
struct Reader{//讀者結(jié)構(gòu)
string name;//讀者姓名
Date bro;//借出時(shí)間
Date back;//歸還時(shí)間
};
struct Book{//圖書結(jié)構(gòu)
int m_nBook_Number;//圖書編號(hào)
string m_strTitle;//書名
string m_strWroter;//作者
int m_nMoreNum;//當(dāng)前在圖書館數(shù)量
int m_nTotalHoldNum;//圖書館共計(jì)數(shù)量
string m_sttrComment;//圖書介紹
Reader reader[20];
};
struct Info{//借書信息結(jié)構(gòu)
Info *m_pParentPoint;//前驅(qū)節(jié)點(diǎn)
Book *m_oBookInfo;//對(duì)應(yīng)圖書信息
Info *m_pNextPoint;//后繼節(jié)點(diǎn)
};
Book *InputNode(){
//上傳圖書
Book *p = new Book;//動(dòng)態(tài)分配一片大小為sizeof(Book)字節(jié)的空間,并將該內(nèi)存空間的起始位置賦值給p
system("cls");//清屏
fflush(stdin);//清楚以前的輸入
cout << "請(qǐng)輸入圖書編號(hào):"; cin >> p->m_nBook_Number;
cout << "請(qǐng)輸入圖書:"; cin >> p->m_strTitle;
cout << "請(qǐng)輸入作者:"; cin >> p->m_strWroter;
cout << "請(qǐng)輸入當(dāng)前在圖書館數(shù)量:"; cin >> p->m_nMoreNum;
cout << "請(qǐng)輸入圖書館共計(jì)數(shù)量:"; cin >> p->m_nTotalHoldNum;
cout << "請(qǐng)輸入圖書介紹:"; cin >> p->m_sttrComment;
for(int i = 0; i < 20; i++){//初始化書本結(jié)構(gòu)成員中相關(guān)讀者指針內(nèi)容為空
(p->reader[i]).name = '\0';
}
return p;//返回成功讀入的書本信息
}
Info *Sreach(Info *bth, int x, int *k, int *flag){
//搜索圖書
Info *p = bth;
*flag = 0;
while(p){
if(p->m_oBookInfo->m_nBook_Number == x){//尋到相同的圖書編號(hào)
*flag = 1;
return p;
}
else {
*flag = 0;
}
if(p->m_pNextPoint != NULL) {
p = p->m_pNextPoint;
}
else{
break;
}
}
return bth;
}
Info *Insert_BookInfo(Info *bth){
//上傳圖書
int flag, k, x;
cout << "請(qǐng)輸入您想上傳的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){//找到直接對(duì)已有的數(shù)量進(jìn)行修改
cout << "當(dāng)前圖書館內(nèi)擁有這本書" << p->m_oBookInfo->m_nMoreNum << "本,您想在增加一本" << p->m_oBookInfo->m_strTitle << "書?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
p->m_oBookInfo->m_nMoreNum++;
p->m_oBookInfo->m_nTotalHoldNum++;
cout << "增加后圖書館內(nèi)擁有這本書" << p->m_oBookInfo->m_nMoreNum << "本,一共擁有" << p->m_oBookInfo->m_nTotalHoldNum << "本" << endl;
}
return bth;
}
//圖書管內(nèi)未找到這本圖書編號(hào)
Book * r = InputNode();
if(bth == NULL){//當(dāng)bth指針為空時(shí),需要對(duì)其進(jìn)行單獨(dú)處理,鏈表表頭內(nèi)存的分配
bth = new Info;
bth->m_pParentPoint = NULL;
bth->m_oBookInfo = r;
bth->m_pNextPoint = NULL;
}
else {
//說(shuō)明存在頭指針
p = bth;
while (p->m_pNextPoint != NULL)
p = p->m_pNextPoint;
Info *q = new Info;
q->m_oBookInfo = r;
q->m_pNextPoint = NULL;
q->m_pParentPoint = p;
p->m_pNextPoint = q;
}
return bth;
}
Info *Delete_BookInfo(Info * bth){
//刪除圖書
int flag, k, x;
cout << "請(qǐng)輸入您想刪除的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 0){//為查找圖書編號(hào)
cout << "圖書館內(nèi)并沒(méi)有這本書!!!" << endl;
return bth;
}
else{
if(p == NULL){//確保當(dāng)前操作是有效的,防止出現(xiàn)非法操作
cout << "查找錯(cuò)誤" << endl;
return bth;
}
else {
cout << "你想刪除的圖書信息如下:" << endl;
cout << "圖書編號(hào):" << p->m_oBookInfo->m_nBook_Number << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定刪除嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || 'y'){
if(p->m_pNextPoint != NULL && p->m_pParentPoint != NULL){//夾在鏈表中間的節(jié)點(diǎn)
Info *Left = p->m_pParentPoint;//將要?jiǎng)h除節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn)指向賦值給前驅(qū)結(jié)點(diǎn)指針變量
Info *Right = p->m_pNextPoint;//將要?jiǎng)h除節(jié)點(diǎn)的后繼結(jié)點(diǎn)指向賦值給后繼結(jié)點(diǎn)指針變量
Left->m_pNextPoint = Right;//將后繼結(jié)點(diǎn)指針指向的地址作為前驅(qū)結(jié)點(diǎn)的后繼域
Right->m_pParentPoint = Left;//將前驅(qū)結(jié)點(diǎn)指針指向的地址作為后繼結(jié)點(diǎn)的前驅(qū)域
//釋放空間
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
else if(p->m_pParentPoint == NULL){//首結(jié)點(diǎn)的前驅(qū)為空,處理首結(jié)點(diǎn)刪除操作
if(p->m_pNextPoint == NULL){//說(shuō)明只有一個(gè)結(jié)點(diǎn)
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
bth = p->m_pNextPoint;
bth->m_pParentPoint = NULL;
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
else if(p->m_pNextPoint == NULL){
Info *Left = p->m_pParentPoint;
Left->m_pNextPoint = NULL;
p->m_pNextPoint = NULL;
p->m_pParentPoint = NULL;
delete p->m_oBookInfo;
p->m_oBookInfo = NULL;
delete p;
p = NULL;
return bth;
}
}
}
}
}
void Output_BookInfo(Info * bth){
//輸出圖書信息
system("cls");
Info *p = bth;
while (p){
cout << "圖書編號(hào):" << p->m_oBookInfo->m_nBook_Number;
cout << "書名:" << p->m_oBookInfo->m_strTitle;
cout << "作者:" << p->m_oBookInfo->m_strWroter;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
p = p->m_pNextPoint;
}
}
void Borrow_TheBook(Info *bth){
//圖書借出
system("cls");
int flag, k, x, i = 0;
cout << "請(qǐng)輸入您想借閱的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){
Book *r = p->m_oBookInfo;
cout << "你想借閱的圖書信息如下:" << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定借閱嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
if(r->m_nMoreNum == 0) cout << "對(duì)不起,本書 已經(jīng)全部借出···" << endl;
else{
system("cls");
for(i = 0; i < 20; i++)
if((r->reader[i]).name[0] == '\0') break;
cout << "請(qǐng)輸入借閱者的姓名:";cin >> (r->reader[i]).name;
cout << "請(qǐng)輸入借出日期:" << endl;
cout << "請(qǐng)輸入借出年份:";cin >> (r->reader[i]).bro.m_nYear;
cout << "請(qǐng)輸入借出月份:";cin >> (r->reader[i]).bro.m_nMonth;
cout << "請(qǐng)輸入借出日:";cin >> (r->reader[i]).bro.m_nDay;
cout << "請(qǐng)輸入歸還日期:" << endl;
cout << "請(qǐng)輸入歸還年份:";cin >> (r->reader[i]).back.m_nYear;
cout << "請(qǐng)輸入歸還月份:";cin >> (r->reader[i]).back.m_nMonth;
cout << "請(qǐng)輸入歸還日:";cin >> (r->reader[i]).back.m_nDay;
r->m_nMoreNum--;
cout << endl << "成功接到這本書" << endl;
}
}
}
}
void TurnBack_TheBook(Info *bth){
//圖書歸還
system("cls");
int flag, k, x, i = 0, j = 0;
cout << "請(qǐng)輸入您想借閱的圖書編號(hào):";//按照書本編號(hào)進(jìn)行查找
cin >> x;
Info *p = Sreach(bth, x, &k, &flag);
if(flag == 1){
Book *r = p->m_oBookInfo;
cout << "你想歸還的圖書信息如下:" << endl;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
cout << "您確定歸還嗎?(Y/N)" << endl;
char ch;
cin >> ch;
if(ch == 'Y' || ch == 'y'){
system("cls");
cout << "請(qǐng)輸入借閱者的姓名:";
string nm;
cin >> nm;
for(i = 0; i < 20; i++)
if((r->reader[i]).name == nm) {
j = 1;
break;
}
if(j == 0) {
cout << "你未借閱過(guò)這本書" << endl;
return;
}
(r->reader[i]).name[0] = '\0';
r->m_nMoreNum++;
cout << "書名:" << p->m_oBookInfo->m_strTitle << endl;
cout << "作者:" << p->m_oBookInfo->m_strWroter << endl;
cout << "當(dāng)前在館圖書數(shù)量:" << p->m_oBookInfo->m_nMoreNum << endl;
cout << "圖書共計(jì)數(shù)量:" << p->m_oBookInfo->m_nTotalHoldNum << endl;
cout << "這本圖書簡(jiǎn)介:" << p->m_oBookInfo->m_sttrComment << endl;
}
}
else cout << "您不能歸還不存在的圖書" << endl;
}
int Select_Menu(){
//圖書管理系統(tǒng)主界面
cout << "--------------------------------------------------" << endl << endl;
cout << " 圖 書 館 管 理 系 統(tǒng) " << endl;
cout << " 主 菜 單 " << endl << endl;
cout << " 1.上傳圖書" << endl;
cout << " 2.下架圖書" << endl;
cout << " 3.顯示圖書" << endl;
cout << " 4.借閱圖書" << endl;
cout << " 5.歸還圖書" << endl;
cout << " 6.退出系統(tǒng)" << endl << endl;
cout << " 請(qǐng)選擇菜單項(xiàng):(1-6)" << endl;
cout << "--------------------------------------------------" << endl;
int id = 0;//編號(hào)
cout << "請(qǐng)輸入您的選擇:";
cin >> id;
return id;
}
int main(){
Info *bth = NULL;
while(true){
int id = Select_Menu();
switch (id) {
case 1:
bth = Insert_BookInfo(bth);
break;
case 2:
bth = Delete_BookInfo(bth);
break;
case 3:
Output_BookInfo(bth);
break;
case 4:
Borrow_TheBook(bth);
break;
case 5:
TurnBack_TheBook(bth);
break;
case 6:
system("cls");
cout << "您確定要退出系統(tǒng)(Y/N)";
char t;
cin >> t;
if(t == 'y' || t == 'Y') exit(0);
break;
}
cout << "按任意鍵返回主菜單.......";
}
}
到了這里,關(guān)于C++圖書館管理系統(tǒng)(簡(jiǎn)單版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!