千家信息网

如何使用C++实现图书馆系统

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。具体内容如下
千家信息网最后更新 2024年10月21日如何使用C++实现图书馆系统

这篇文章主要为大家展示了"如何使用C++实现图书馆系统",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用C++实现图书馆系统"这篇文章吧。

具体内容如下

1.目的

用c++语言实现图书馆系统

2.分析

图书馆系统中要实现的功能有:图书的分类存储,不同身份的人员进行不同的操作。在这个程序中,
我把图书分为两类:小说类和专业书类,这两种类都有相同的功能,所以设一个基类,这两种类分别
继承基类。人员有两类:管理员和学生,这两类有部分相同的私有数据成员,所以设一个人员的基类,
这两种类分别继承基类。在图书类中,小说类和专业书类都要设自己的结构体数组,用来存储书的信
息,同时都要有增加书、删除书、搜索书的功能。管理员类的函数要有增加各类书、浏览全部书的功
能。学生类要有搜索书、借书、还书等功能。

3.代码

// 图书馆系统#include#includeusing namespace std;typedef struct book  //结构体定义书的基本信息{    string book_name; //书名    string author;    //作者    string kind;  //书的种类}Book;class base  //抽象类{public:    base();    virtual void deposit() = 0;  //纯虚函数增加书    virtual void display(string name) = 0; //纯虚函数显示一本书的信息    virtual void display() = 0;  //纯虚函数显示书的信息    virtual int isauthor(string a) = 0; //判断是否存在这个作者的书    virtual bool isbookname(string b) = 0; //用书名判断是否存在这本书    virtual void clearbook(string name) = 0;};base::base(){}class novel:public base   //小说类{public:    novel();  //构造函数    virtual void deposit(); //增加图书    virtual void display(); //显示图书信息    virtual void display(string name); //显示一本书的信息    virtual int isauthor(string a); //判断是否存在这个作者的书    virtual bool isbookname(string b); //用书名判断是否存在这本书    virtual void clearbook(string name); //删除一本书private:    int novelnumber;  //目前书的数目    Book mynovel[50];  //结构体数组,存放小说类书的信息    Book *p; //结构体类型的指针};novel::novel(){    novelnumber = 0;    p = mynovel;    mynovel[0].author = "1";    mynovel[0].book_name = "1";    mynovel[0].kind = "小说";    novelnumber++;    mynovel[1].author = "2";    mynovel[1].book_name = "2";    mynovel[1].kind = "小说";    novelnumber++;    for(int i = 2;i < 50;i++)    {        mynovel[i].author = "0";        mynovel[i].book_name = "0";    }   //初始化数组}void novel::clearbook(string name) //删除一本书{    Book* t;  //结构类型指针    t = mynovel;  //指向小说类的数组    while(t->book_name != name) //当书名不符时,指向下一空间    {        t++;    }    if(t->book_name == name)  //当找到这本书时,清空    {        t->author = "0";        t->book_name = "0";        novelnumber--;  //总数目减一    }}void novel::deposit()  //存入小说类的图书{    Book* t;    string temp_author;    string temp_book_name;    cout << "请输入图书名称:";    cin >> temp_book_name;    cout << endl << "请输入作者:";    cin >> temp_author; //记录书的信息    t = mynovel;    while(t->author != "0")    {        t++;    } //找空的存储空间    if(t->author == "0")    {        t->author = temp_author;        t->book_name = temp_book_name;        t->kind = "小说";        novelnumber++;    } //如果存储空间为空,则存放该书信息}void novel::display()  //显示该类书信息{    Book* t;    int number = novelnumber;    cout << "小说类的图书有" << novelnumber << "本:" << endl;    t = mynovel;    while(number!=0)    {        if(t->author != "0")        {            cout << "图书名称为:" << t->book_name << endl;;            cout << "作者:" << t->author << endl;            cout << "书的种类为:" << t->kind << endl;            number--;        } //当存储空间有内容时,输出书的信息        t++;    }  //显示所有书的信息}void novel::display(string name) //显示这本书的信息{    Book* t;    t = mynovel;    while((t->book_name != name) && (t->author != name))    {        t++;    }  //书名或者作者不符时指向下一空间    if((t->book_name == name) || (t->author != name))    {        cout << "图书名称为:" << t->book_name << endl;;        cout << "作者:" << t->author << endl;        cout << "书的种类为:" << t->kind << endl;    } //若符合则输出这本书的信息}int novel::isauthor(string a)  //用作者判断是否有这本书{    Book* t;    t = mynovel;    while(t->author != "0")    {        if(t->author == a)        {            return 1;        }  //若有则返回1        t++;    }    return 0;  //没有则返回0}bool novel::isbookname(string b)//用书名判断是否有这本书{    Book* t;    t = mynovel;    while(t->book_name != "0")    {        if(t->book_name == b)        {            return true;            break;        }  //若有则返回true        t++;    }    return false;//没有则返回false}class professional:public base  //专业书类{public:    professional();    virtual void deposit(); //存入    virtual void display();  //显示图书信息    virtual void display(string name); //显示这本书的信息    virtual int isauthor(string a); //判断是否存在这个作者的书    virtual bool isbookname(string b); //用书名判断是否存在这本书    virtual void clearbook(string name); //删除一本书private:    int pronumber;  //书的数目    Book myprofessional[50]; //结构体数组,存放专业类书的信息    Book *p; //结构体类型的指针};professional::professional() //构造函数{    pronumber = 0;    p = myprofessional;    myprofessional[0].author = "p1";    myprofessional[0].book_name = "p1";    myprofessional[0].kind = "专业书";    pronumber++;    myprofessional[1].author = "p2";    myprofessional[1].book_name = "p2";    myprofessional[1].kind = "专业书";    pronumber++;    for(int i = 2;i < 50;i++)    {        myprofessional[i].author = "0";        myprofessional[i].book_name = "0";    } //初始化数组}void professional::clearbook(string name)//删除一本书{    Book* t;//结构类型指针    t = myprofessional; //指向专业类的数组    while(t->book_name != name)//当书名不符时,指向下一空间    {        t++;    }    if(t->book_name == name)//当找到这本书时,清空    {        t->author = "0";        t->book_name = "0";        pronumber--;//总数目减一    }}void professional::deposit()  //存入专业类的图书{    Book* t;    string temp_author;    string temp_book_name;    cout << "请输入图书名称:";    cin >> temp_book_name;    cout << endl << "请输入作者:";    cin >> temp_author;    t = myprofessional;    while(t->author != "0")    {        t++;    }    if(t->author == "0")    {        t->author = temp_author;        t->book_name = temp_book_name;        t->kind = "专业书";        pronumber++;    }}void professional::display()  //显示该类书信息{    Book* t;    int number = pronumber;    cout << "专业类的图书有" << pronumber << "本:" << endl;    t = myprofessional;    while(number!=0)    {        if(t->author != "0")        {            cout << "图书名称为:" << t->book_name << endl;;            cout << "作者:" << t->author << endl;            cout << "书的种类为:" << t->kind << endl;            number--;        } //当存储空间有内容时,输出书的信息        t++;    }  //显示所有书的信息}void professional::display(string name) //显示这本书的信息{    Book* t;    t = myprofessional;    while((t->book_name != name) && (t->author != name))    {        t++;    }//书名或者作者不符时指向下一空间    if((t->book_name == name) || (t->author == name))    {        cout << "图书名称为:" << t->book_name << endl;;        cout << "作者:" << t->author << endl;        cout << "书的种类为:" << t->kind << endl;    }//若符合则输出这本书的信息}int professional::isauthor(string a)//用作者判断是否有这本书{    Book* t;    t = myprofessional;    while(t->author != "0")    {        if(t->author == a)        {            return 1;        }//若有则返回1        t++;    }    return 0;//没有则返回0}bool professional::isbookname(string b)//用书名判断是否有这本书{    Book* t;    t = myprofessional;    while(t->book_name != "0")    {        if(t->book_name == b)        {            return true; //若有则返回true        }        t++;    }    return false;//没有则返回false}class people  //人员类{public:    people();protected:    base* q;  //基类指针    novel novel1; //小说类对象    professional professional1;  //专业书类对象};people::people(){}class library:public people    //管理员类{public:    library();    void add(); //增加图书    void all();     //浏览全部图书    void display();   //显示功能    void exit(); //退出};library::library(){}void library::add()//增加图书{    int temp;    cout << "1.小说  2.专业书  请输入图书种类:" ;    cin >> temp;    if(1 == temp)    {        q = &novel1;        q->deposit();  //增加一本小说类的图书    }    else if(2 == temp)    {        q = &professional1;        q->deposit();//增加一本专业类的图书    }    else    {        cout << "无此操作!" << endl;    }    display();}void library::all()//显示全部图书信息{    q=&novel1;    q->display();    q=&professional1;    q->display();    display();}void library::display() //显示功能{    int temp;    cout << "1.增加图书  2.浏览全部图书  3.退出 请选择功能:";    cin >> temp;        switch(temp)        {            case 1: add();            break;            case 2: all();            break;            case 3: exit();            break;            default :            {                cout << "无此操作!" << endl;                display();            }            break;        }}void library::exit()  //退出{    cout << "感谢您的使用!" <> temp;    int f;    switch(temp)    {        case 1:   //按作者搜索            cout << "请输入作者名:";            cin >> temp_author;            q = &novel1;  //从小说类中搜索            f = q->isauthor(temp_author);            if(1 == f)            {                q->display(temp_author);  //若存在则显示这本书的信息            }            else            {                cout << "小说类中没有这本书" <isauthor(temp_author);            if(1 == f)            {                q->display(temp_author);//若存在则显示这本书的信息            }            else            {                cout << "专业类中没有这本书" <> temp_bookname;            q = &novel1;//从小说类中搜索            if(q->isbookname(temp_bookname))            {                q->display(temp_bookname);//若存在则显示这本书的信息            }            else            {                cout << "小说类中没有这本书" <isbookname(temp_bookname))            {                q->display(temp_bookname);//若存在则显示这本书的信息            }            else            {                cout << "专业类中没有这本书" <> temp_kind;            if("novel" == temp_kind)  //显示小说类的全部书            {                q = &novel1;                q->display();            }            else if("professional" == temp_kind)//显示专业类的全部书            {                q = &professional1;                q->display();            }            else            {                cout << "没有该种类的书" <> i;    cout << "请输入书名:" ;    cin >> temp;    if(1 == i)    {        q = &novel1;    }    if(2 == i)    {        q = &professional1;    }    if(q->isbookname(temp))  //如果有这本书则执行下面步骤    {        q->clearbook(temp);  //清除这本书        borrow_number++;   //借阅书的数目加一    }    else    {        cout << "没有这本书!" << endl;    }    display();}void student::return_book() //还书{    int i;    cout << "1.小说类 2.专业书类  请选择书的种类:";    cin >> i;    if(1 == i)    {        q = &novel1;    }    else    {        q = &professional1;    }    q->deposit();  //录入这本书的信息    return_number++;  //已还书数加一    display();}void student::information() //显示学生借阅信息{    cout << "您已借阅" << borrow_number << "本书" <> i;    switch(i)    {        case 1:search_book();        break;        case 2:borrow_book();        break;        case 3:return_book();        break;        case 4:information();        break;        case 5:exit();        break;        default :            {                cout << "无此操作!" << endl;                display();            }            break;    }}int main(){    int i;    student b1;    library a1;    cout << "1.学生  2.管理员 您的身份是:";    while(cin >> i)    {        if(1 == i)        {            b1.display();        }        if(2 == i)        {            a1.display();        }        cout <

以上是"如何使用C++实现图书馆系统"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0