国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++圖書館管理系統(tǒng)(簡(jiǎn)單版)

這篇具有很好參考價(jià)值的文章主要介紹了C++圖書館管理系統(tǒng)(簡(jiǎn)單版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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)借閱

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)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python+Django+MySQL的圖書館管理系統(tǒng)【附源碼,運(yùn)行簡(jiǎn)單】

    Python+Django+MySQL的圖書館管理系統(tǒng)【附源碼,運(yùn)行簡(jiǎn)單】

    自己做的項(xiàng)目,禁止轉(zhuǎn)載,基于Python+Django+MySQL的圖書館管理系統(tǒng),帶用戶登錄、注冊(cè),基本的出版社、作者、圖書信息的增刪改查功能,還有分頁(yè)功能,用Pycharm導(dǎo)入,安裝依賴包,配置好數(shù)據(jù)庫(kù)就可以正常運(yùn)行了,里面的代碼都含有注釋,結(jié)構(gòu)簡(jiǎn)單,清晰易懂,看一下就會(huì)

    2024年01月17日
    瀏覽(90)
  • 實(shí)戰(zhàn) 圖書館系統(tǒng)管理案例

    實(shí)戰(zhàn) 圖書館系統(tǒng)管理案例

    config :敏感的配置一般都是在配置中心配置,比如consul或者阿波羅上面 controller :寫一些handler的,拿到參數(shù)要去調(diào)用service層的邏輯。( 只負(fù)責(zé)接受參數(shù),怎么綁定參數(shù),要去調(diào)用哪個(gè)service的,handler的一個(gè)入口 ) service: service層才是正真的業(yè)務(wù)處理層 。調(diào)用dao層的增刪改

    2024年02月11日
    瀏覽(29)
  • Java 實(shí)現(xiàn)圖書館管理系統(tǒng)

    Java 實(shí)現(xiàn)圖書館管理系統(tǒng)

    目錄 一:創(chuàng)建對(duì)象 1.學(xué)生類對(duì)象Student?: 2.圖書類對(duì)象book : 3.管理員類對(duì)象OP: 二.創(chuàng)建主要交互界面MainMenu,并實(shí)現(xiàn)主界面功能 1.創(chuàng)建交互界面: 2.實(shí)現(xiàn)主界面功能: 三:創(chuàng)建OP管理界面: 1.創(chuàng)建主要交互界面及實(shí)現(xiàn)\\\"管理學(xué)生\\\"功能OPmenu: (1).交互界面: (2):實(shí)現(xiàn)\\\"管理學(xué)生\\\"功能: 2.實(shí)現(xiàn)\\\"管理

    2024年02月12日
    瀏覽(29)
  • java項(xiàng)目-圖書館管理系統(tǒng)源碼

    java項(xiàng)目-圖書館管理系統(tǒng)源碼

    作者主頁(yè):夜未央5788 ?簡(jiǎn)介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、Java項(xiàng)目、學(xué)習(xí)資料、技術(shù)互助 文末獲取源碼 ? 項(xiàng)目介紹 本畢業(yè)設(shè)計(jì)運(yùn)用了使用技術(shù):spring mvc+spring+hibernate,數(shù)據(jù)庫(kù)使用了當(dāng)前較為流行的Mysql5.7。根據(jù)本校圖書館的工作流程與實(shí)際的需求和特色,本系統(tǒng)需滿足以下幾個(gè)方

    2024年02月08日
    瀏覽(25)
  • 基于JavaWeb的圖書館管理系統(tǒng)

    ?? 作者主頁(yè):

    2024年02月05日
    瀏覽(41)
  • JavaWeb期末項(xiàng)目 圖書館管理系統(tǒng)

    JavaWeb期末項(xiàng)目 圖書館管理系統(tǒng)

    1 項(xiàng)目基本信息 1.1 項(xiàng)目名稱 圖書館管理系統(tǒng) 1.2 開發(fā)運(yùn)行環(huán)境 Window 10 64位 JDK 1.8.0 Eclipse 4.8版本 MySql 5.5 Tomcat 9.0 2 項(xiàng)目需求分析 2.1 學(xué)生登錄部分 (1)學(xué)生注冊(cè):在進(jìn)入圖書館前必須要登錄,如果沒(méi)有學(xué)號(hào)則要注冊(cè),注冊(cè)時(shí)系統(tǒng)會(huì)將用戶填寫的學(xué)號(hào)與數(shù)據(jù)庫(kù)里面的數(shù)據(jù)對(duì)比,

    2024年02月10日
    瀏覽(31)
  • c語(yǔ)言課程設(shè)計(jì)(圖書館管理系統(tǒng))

    c語(yǔ)言課程設(shè)計(jì)(圖書館管理系統(tǒng))

    大一c語(yǔ)言課程設(shè)計(jì):圖書館管理系統(tǒng)。 圖書管理系統(tǒng),功能齊全拿來(lái)就能用 1.主界面 ? 代碼段 ?2.圖書錄入界面 運(yùn)用文件錄入多次使用 ? 代碼段 ?3.圖書查詢界面 根據(jù)輸入書的數(shù)據(jù)與文件中數(shù)據(jù)進(jìn)行比對(duì) ,查找后輸出。 代碼段 4.圖書修改 輸入修改圖書數(shù)據(jù)并在文件中查找

    2024年02月11日
    瀏覽(23)
  • 基于JAVA圖書館管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于JAVA圖書館管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    【后臺(tái)管理員功能】 廣告管理:設(shè)置小程序首頁(yè)輪播圖廣告和鏈接 留言列表:所有用戶留言信息列表,支持刪除 會(huì)員列表:查看所有注冊(cè)會(huì)員信息,支持刪除 資訊分類:錄入、修改、查看、刪除資訊分類 錄入資訊:錄入資訊標(biāo)題、內(nèi)容等信息 管理資訊:查看已錄入資訊列

    2024年02月13日
    瀏覽(31)
  • asp.net937-圖書館座位管理系統(tǒng)

    asp.net937-圖書館座位管理系統(tǒng)

    項(xiàng)目編號(hào):asp.net937-圖書館座位管理系統(tǒng) 運(yùn)行環(huán)境:VS+SQL 開發(fā)工具:VS2010及以上版本 數(shù)據(jù)庫(kù):SQL2008及以上版本 使用技術(shù):HTML+JS+HTML 開發(fā)語(yǔ)言:C#,框架:asp.net 圖書館座位預(yù)約管理系統(tǒng)是用于校園、圖書館、閱覽室、會(huì)場(chǎng)等公共座位資源進(jìn)行分配、預(yù)約、查詢顯示、智能管理與

    2023年04月15日
    瀏覽(20)
  • 學(xué)校圖書館管理系統(tǒng)的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

    學(xué)校圖書館管理系統(tǒng)的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

    隨著大學(xué)生越來(lái)越多,學(xué)校圖書館的管理變得愈發(fā)復(fù)雜。為了更好地管理和服務(wù)于學(xué)生和教職工,學(xué)校需要建立一個(gè)高效的圖書館管理系統(tǒng)。本文將介紹學(xué)校圖書館管理系統(tǒng)的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)。 1. 架構(gòu)設(shè)計(jì) 學(xué)校圖書館管理系統(tǒng)的架構(gòu)設(shè)計(jì)主要分為三個(gè)部分: 展示層:展示層

    2024年02月22日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包