最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)圖書管理系統(tǒng)最新版

 更新時(shí)間:2021年06月17日 15:36:51   作者:名名名名  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖書管理系統(tǒng)最新版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

圖書管理系統(tǒng)設(shè)計(jì),供大家參考,具體內(nèi)容如下

一、問(wèn)題描述及功能要求

(1)圖書信息錄入功能(圖書信息用文件保存)

(2)圖書信息瀏覽功能

(3)查詢和排序功能:(至少一種查詢方式)

.按書名查詢
.按作者名查詢

(4)圖書信息的刪除與修改

二、代碼實(shí)現(xiàn) 帶有注釋

廢話不說(shuō),直接代碼,歡迎指正。
大家CV可能有不兼容的情況,可以滴滴,盡可能解決問(wèn)題地回復(fù)。

#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <cstring>
#include<windows.h>
#include<vector>
#define BOOKMAXREPERTORY 99
using namespace std;
class Common{
public:
    int id;
    char title[66];
    char author[66];
    Common(){
    }
    Common(int _id,char _title[],char _author[]){
        id = _id;
        strcpy(title , _title);
        strcpy(author , _author);
    }
};

class Book:public Common{
public:
    char publisher[66];
    int pageNumber;
    Book(){}
    Book(int _id,char _title[],char _author[],char _publisher[],char _iSBNNumber[],int _pageNumber){
        Common(_id,_title,_author);
        strcpy(publisher,_publisher);
        pageNumber = _pageNumber;
    }
};

class MediaLibraryManageSystem{
public:

    MediaLibraryManageSystem(){
        nowBookTotal = 0;
    }

    void _run(){
        readDataByFile();
        printf("程序加載中");
        for (int i = 0; i < 10; i++) {
            Sleep(100);    /* windows 使用Sleep,參數(shù)為毫秒 */
            printf(".");
            fflush(stdout);//強(qiáng)制刷新緩存,輸出顯示
        }
        printf("\n");
        system("cls");
        int cmd;
        while(true){
            cout<<home_menu<<endl;
            cout<<"請(qǐng)輸入你需要執(zhí)行的命令序號(hào):";cin>>cmd;
            if(cmd == 0){
                _exit();
            }
            system("cls");
            switch(cmd){
                case 1:
                    addBook();
                    break;
                case 2:
                    queryGoods();
                    break;
                case 3:
                    showGoods();
                    break;
                case 4:
                    updateGoods();
                    break;
                case 5:
                    deleteGoods();
                    break;
                default:
                    cout<<"輸入的指令有誤!請(qǐng)重新輸入!"<<endl;
            }
            system("pause");
            system("cls");

        }
    }





private:

    const string home_menu =
    "\n********************************** 圖書管理系統(tǒng) **********************************\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "*                                     1.添加                                       *\n"
    "*                                                                                  *\n"
    "*                                     2.查詢                                       *\n"
    "*                                                                                  *\n"
    "*                                     3.顯示圖書庫(kù)                                 *\n"
    "*                                                                                  *\n"
    "*                                     4.修改圖書庫(kù)                                 *\n"
    "*                                                                                  *\n"
    "*                                     5.刪除                                       *\n"
    "*                                                                                  *\n"
    "*                                     0.退出                                       *\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "************************************************************************************\n";

    const string query_goods_menu =
    "\n************************************ 圖書查詢 ************************************\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "*                                    1.按標(biāo)題查詢                                  *\n"
    "*                                                                                  *\n"
    "*                                    2.按編號(hào)查詢                                  *\n"
    "*                                                                                  *\n"
    "*                                    0.退出                                        *\n"
    "*                                                                                  *\n"
    "*                                                                                  *\n"
    "************************************************************************************\n";

    Book bookList[BOOKMAXREPERTORY];

    int nowBookTotal;

    ///添加圖書
    void addBook(){
        Book book;
        cout<<"請(qǐng)輸入編號(hào):";cin>>book.id;
        cout<<"請(qǐng)輸入標(biāo)題:";cin>>book.title;
        cout<<"請(qǐng)輸入作者:";cin>>book.author;
        cout<<"請(qǐng)輸入出版社:";cin>>book.publisher;
        cout<<"請(qǐng)輸入頁(yè)數(shù):";cin>>book.pageNumber;
        if(getBookById(book.id) != -1){
            cout<<"添加失敗! 添加編號(hào)重復(fù)! 請(qǐng)重新添加!"<<endl;
        }else if(nowBookTotal == BOOKMAXREPERTORY){
            cout<<"添加失敗! 圖書庫(kù)已滿!"<<endl;
        }else{
            bookList[nowBookTotal ++] = book;
        }
    }

    /*  查詢圖書  */
    void queryGoods(){
        int cmd;
        while(true){
            cout<<query_goods_menu<<endl;
            cout<<"請(qǐng)輸入你需要執(zhí)行的命令序號(hào):";cin>>cmd;
            if(cmd == 0){
                break;
            }
            system("cls");
            switch(cmd){
                case 1:
                    queryByTitle();
                    break;
                case 2:
                    queryById();
                    break;
                default:
                    cout<<"輸入的指令有誤!請(qǐng)重新輸入!"<<endl;
            }
            system("pause");
            system("cls");

        }
    }


    ///按標(biāo)題查詢
    void queryByTitle(){
        int cmd;
        char title[66];
        cout<<"請(qǐng)輸入標(biāo)題:";cin>>title;
        getBookByTitle(title);
    }

    ///book
    void getBookByTitle(char title[]){
        bool flag = true;
        printf("%-6s%-10s%-10s%-10s%-10s%\n","編號(hào)","標(biāo)題","作者","出版社","頁(yè)數(shù)");
        for(int i = 0;i < nowBookTotal;i ++){
            if(strcmp(bookList[i].title,title) == 0){
                flag = false;
                printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            }
        }
        if(flag){
            printf("\n\n空的!\n\n");
        }
    }


    ///按編號(hào)查詢
    void queryById(){
        int cmd,i,id;
        cout<<"請(qǐng)輸入Id:";cin>>id;
        i = getBookById(id);
        if(i == -1){
            printf("查找不到!\n");
        }else{
            printf("%-6s%-10s%-10s%-10s%-10s\n","編號(hào)","標(biāo)題","作者","評(píng)級(jí)","出版社","頁(yè)數(shù)");
            printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
        }
    }

    ///Book
    int getBookById(int id){
        int index = -1;
        for(int i = 0;i < nowBookTotal;i ++){
            if(bookList[i].id == id){
                index = i;
                break;
            }
        }
        return index;
    }

    /*  顯示圖書庫(kù)  */
    void showGoods(){
        if(nowBookTotal == 0){
            printf("空的!\n");
        }else{
            printf("%-6s%-10s%-10s%-10s%-10s\n","編號(hào)","標(biāo)題","作者","出版社","頁(yè)數(shù)");
            for(int i = 0;i < nowBookTotal;i ++){
                printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            }
        }
    }

    /*  修改圖書  */
    void updateGoods(){
        int cmd,id,i;
        cout<<"請(qǐng)輸入你需要修改的圖書編號(hào):";cin>>id;
        i = getBookById(id);
        if(i == -1){
                cout<<"圖書不存在!"<<endl;
        }else{
            cout<<"原圖書信息為:"<<endl;
            printf("%-6s%-10s%-10s%-10s%-10s\n","編號(hào)","標(biāo)題","作者","出版社","頁(yè)數(shù)");
            printf("%-6d%-10s%-10s%-10s%-10d\n",bookList[i].id,bookList[i].title,bookList[i].author,bookList[i].publisher,bookList[i].pageNumber);
            Book book;
            book.id = id;
            cout<<"請(qǐng)輸入修改后的標(biāo)題:";cin>>book.title;
            cout<<"請(qǐng)輸入修改后的作者:";cin>>book.author;
            cout<<"請(qǐng)輸入修改后的出版社:";cin>>book.publisher;
            cout<<"請(qǐng)輸入修改后的頁(yè)數(shù):";cin>>book.pageNumber;
            bookList[i] = book;
        }
    }

    /*  刪除圖書  */
    void deleteGoods(){
        int cmd,id,i;
        if(nowBookTotal == 0){
            cout<<"空的!"<<endl;
   return;
        }
        cout<<"請(qǐng)輸入你需要?jiǎng)h除的圖書編號(hào):";cin>>id;
        deleteBook(id);
    }

    ///book
    void deleteBook(int id){
        int index = getBookById(id);
        if(index == -1){
            cout<<"沒(méi)有該圖書!"<<endl;
        }else{
            for(int i = index;i < nowBookTotal - 1;i ++){
                bookList[i] = bookList[i + 1];
            }
            nowBookTotal --;
            cout<<"刪除成功!"<<endl;
        }
    }

    /*  保存圖書  */
    void saveDataToFile(){
        ///book
        FILE *bookDB = fopen("bookList.txt", "wb");
        for (int i = 0; i < nowBookTotal; i++) {
            fwrite(&bookList[i], sizeof(Book), 1, bookDB);
        }
        fclose(bookDB);
    }

    /*  讀取圖書  */
    void readDataByFile(){
        ///Book
        FILE *bookDB = fopen("bookList.txt", "rb");
        nowBookTotal = 0;
        Book book;
        while (fread(&book, sizeof(Book), 1, bookDB) == 1) {
            bookList[nowBookTotal++] = book;
        }
        fclose(bookDB);
    }

    void _exit(){
        saveDataToFile();
        system("cls");
        printf("正在退出");
        for (int i = 0; i < 10; i++) {
            Sleep(100); 
            printf(".");
            fflush(stdout);//強(qiáng)制刷新緩存,輸出顯示
        }
        system("cls");
        printf("已退出!");
        exit(1);
    }

};

int main(){
    MediaLibraryManageSystem mediaLibraryManageSystem;
    mediaLibraryManageSystem._run();
    return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一起來(lái)了解一下C++中的指針

    一起來(lái)了解一下C++中的指針

    這篇文章主要為大家詳細(xì)介紹了C++的指針,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C語(yǔ)言超詳細(xì)講解排序算法上篇

    C語(yǔ)言超詳細(xì)講解排序算法上篇

    時(shí)間如流水,今天就到初階數(shù)據(jù)結(jié)構(gòu)最后一個(gè)知識(shí)章節(jié)了,常見的排序算法!在進(jìn)入這期之前,程愛打籃球的程序猿想說(shuō)一句,如果有不懂的地方可以反復(fù)觀看我之前的內(nèi)容,再還有不懂可以直接找我,幫你安排的妥妥的
    2022-03-03
  • C語(yǔ)言在輸入輸出時(shí)遇到的常見問(wèn)題總結(jié)

    C語(yǔ)言在輸入輸出時(shí)遇到的常見問(wèn)題總結(jié)

    大家在平時(shí)的做題中是否會(huì)遇到和我一樣的煩惱,題目的代碼已經(jīng)基本完成,但是在輸出時(shí)候,總是和題目給出的樣例輸出格式不同?,導(dǎo)致題目不能通過(guò)。為了解決這一煩惱,我總結(jié)了以下幾點(diǎn),需要的可以參考一下
    2022-09-09
  • Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程

    Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程

    Microsoft Visual Studio 2022是Microsoft Visual Studio軟件的一個(gè)高版本,能夠編寫和執(zhí)行C/C++代碼,具有強(qiáng)大的功能,是開發(fā)C/C++程序的主流軟件,這篇文章主要介紹了Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程
    2024-01-01
  • 淺談C++中replace()方法

    淺談C++中replace()方法

    C++編程語(yǔ)言中的string應(yīng)用方式多樣化,每一種應(yīng)用方式都能幫助我們提實(shí)現(xiàn)特定的功能需求。在這里我們將會(huì)為大家詳細(xì)介紹一下其中一個(gè)比較重要的用法,有關(guān)C++ replace()函數(shù)的應(yīng)用方式,需要的朋友可以參考下
    2015-11-11
  • C語(yǔ)言的常量和字符串

    C語(yǔ)言的常量和字符串

    這篇文章主要為大家介紹了C語(yǔ)言常量和字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Qt 使用 canon edsdk 實(shí)現(xiàn)實(shí)時(shí)預(yù)覽的示例代碼

    Qt 使用 canon edsdk 實(shí)現(xiàn)實(shí)時(shí)預(yù)覽的示例代碼

    這篇文章主要介紹了Qt 使用 canon edsdk 實(shí)現(xiàn)實(shí)時(shí)預(yù)覽的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長(zhǎng)

    C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長(zhǎng)

    這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)獲取時(shí)間戳和計(jì)算運(yùn)行時(shí)長(zhǎng)功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-12-12
  • C++多線程之互斥鎖與死鎖

    C++多線程之互斥鎖與死鎖

    互斥鎖和死鎖是C++多線程中常見的情況,這篇文章就帶大家進(jìn)一步了解多線程中的互斥鎖與死鎖這兩個(gè)概念,文中的示例代碼介紹得很詳細(xì),快來(lái)跟隨小編一起學(xué)習(xí)吧
    2021-12-12
  • C語(yǔ)言完整實(shí)現(xiàn)12種排序算法(小結(jié))

    C語(yǔ)言完整實(shí)現(xiàn)12種排序算法(小結(jié))

    本文主要介紹了C語(yǔ)言完整實(shí)現(xiàn)12種排序算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05

最新評(píng)論

贵定县| 梁河县| 商河县| 澜沧| 湖南省| 日土县| 汽车| 萍乡市| 望城县| 江北区| 芦山县| 云浮市| 岳阳市| 监利县| 庆云县| 惠州市| 巴东县| 通州市| 秀山| 时尚| 银川市| 定日县| 屯昌县| 惠安县| 吕梁市| 昌宁县| 年辖:市辖区| 喀喇沁旗| 东乌| 靖西县| 大新县| 新干县| 扬州市| 密云县| 巴中市| 博爱县| 巨鹿县| 阿图什市| 石渠县| 汨罗市| 石柱|