千家信息网

如何使用C++编写实现图书管理系统

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关如何使用C++编写实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下为图书管理人员编写一个图书管理系统,图书管理
千家信息网最后更新 2026年11月01日如何使用C++编写实现图书管理系统

这篇文章将为大家详细讲解有关如何使用C++编写实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下

为图书管理人员编写一个图书管理系统,图书管理系统的设计主要是实现对图书的管理和相关操作,包括3个表:
图书信息表——存储图书的基本信息,包括书号、书名、作者、出版社、出版日期、存馆数量、定价等。
读者信息表——存储读者的基本信息,包括学号、姓名、学院、专业班级等。
图书借阅表——存储读者借书的相关信息,包括学号、姓名、书号、书名、借阅日期、应还日期、归还日期等。

用菜单选择方式完成了以下功能:

1、图书信息添加功能:包括书号、书名、作者、出版社、出版日期、存馆数量、定价等。

2、图书信息查询:分别按书名, 按作者名,
按出版单位等进行查询。

3、图书信息排序:按书号、书名等按升序进行排序。

4、图书信息的修改、删除:按书号或书名进行图书的修改和删除。

5、读者信息添加功能:包括学号、姓名、学院、专业、班级等。

6、读者信息查询:分别按学号、姓名、班级等进行查询。

7、读者信息排序:按学号、学院等按升序进行排序。

8、读者信息的修改、删除:按学号+姓名进行读者信息的修改和删除

9、图书借阅:输入学号+书号,如果该书图书信息表中的存馆数量大于0,则可以借出,借出相应数量后修改图书信息表中的存馆数量,在图书借阅表添加该同学的借阅。

10、图书归还:输入学号+书号,修改图书信息表中的存馆数量,在图书借阅表中记录该同学的归还时间。

11、图书借阅查询:分别按学号、书名、学院等进行查询。

#include #include #include #include #include #include #include const int INC=20;using namespace std;class Date{   //Date类 :日期类public:    int day;     //日    int month;   //月    int year;    //年    Date(int d=1,int m=1,int y=2012){    //构造函数  默认初始日期2012.1.1        //判断日期的合法性        if(d>0&&d<32)day=d;else day=1;        if(m>0&&m<13)month=m;else m=1;        if(y>0)year=y;else year=2012;    }    void setDay(int d){day=d;}       //设置日    void setMonth(int m){month=m;}   //设置月    void setYear(int y){year=y;}     //年    int getDay(){return day;}         //获取年月日    int getMonth(){return month;}    int getYear(){return year;}    void disp(){cout<=0)    {        if(isLeapYear(yy))        {            dtmp-=366;            flag=true;        }        else        {            dtmp-=365;            flag=false;        }        yy++;    }    if(flag)        dtmp+=366;    else dtmp+=365;    yy--;    if(isLeapYear(yy))    {        m2=29;    }    else    {        m2=28;    }    mtmp=dtmp+dd;    int m_day[]={0,31,m2,31,30,31,30,31,31,30,31,30,31};   //每月天数    for(;mtmp>m_day[mm];)    {        mtmp-=m_day[mm];        if(mm==12)        {            mm=0;            yy++;        }        mm++;    }    dd=mtmp;    Date dt(yy,mm,dd);    return dt;     //返回一个新日期}class Book{//书号、书名、作者、出版社、出版日期、出版定价、存馆数量private:    string num;   //s书号    string title;   //标题    string author;   //作者    string publisher;   //出版社    Date publishdate;   //Date类:出版日期    float price;   //价格    int howmany;    //存馆数量    public:    Book(string num0="24416-5",string title0="数据结构",string author0="王红梅,胡明,王涛",         string pub0="清华大学出版社",int bd=1,int bm=1,int by=2012,float pr=29.0,int ct=10):publishdate((bd,bm,by)){    num=num0;title=title0;author=author0;publisher=pub0;price=pr;howmany=ct;}    void setNum(string num0){num=num0;}      //设置书号    void setTitle(string title0){title=title0;}   //设置标题    void setAuthor(string author0){author=author0;}   //设置作者    void setPublisher(string publisher0){publisher=publisher0;}   //设置出版社    void setPublishdate(int bd,int bm,int by){Date d(bd,bm,by);publishdate=d;}    //设置出版日期,先构造在复制    void setHowmany(int ct){howmany=ct;}    //设置库存    void setPrice(float pr){price=pr;}   //设置价格    string getNum(){return num;}        // 获取 书号 标题 作者 等信息    string getTitle(){return title;}    string getAuthor(){return author;}    string getPublisher(){return publisher;}    Date getPublishdate(){return publishdate;}    int getHowmany(){return howmany;}    float getPrice(){return price;}    void dispABook(){        cout <'9')&&k>price>>ct;      if(title.length()>0)        i++;      }      bookcount=i;      cout<>price>>ct;//inf,getchar();      if(title.length()>0){        int d[3];        if(num[0]==10)num=num.substr(1);        string2date(pdates,d);        by=d[0];bm=d[1];bd=d[2];        book[i]=Book();        book[i].setNum(num);        book[i].setTitle(title);        book[i].setAuthor(author);        book[i].setPublisher(publisher);        book[i].setPrice(price);        book[i].setHowmany(ct);        book[i].setPublishdate(bd,bm,by);        }      }  inf.close() ;  return bookcount;  }  friend class ReaderBorrowBook;  int addbook(string num,string title,string author,string publisher,int bd,int bm,int by,float price,int ct)//添加图书信息  {        int i=bookcount;        book[i]=Book();        book[i].setNum(num);        book[i].setTitle(title);        book[i].setAuthor(author);        book[i].setPublisher(publisher);        book[i].setPrice(price);        book[i].setHowmany(ct);        book[i].setPublishdate(bd,bm,by);        ++bookcount;        return bookcount;  }    void searchbookbytitle(string title)         //按照书名查找    {        bool found=false;        for(int i=0;i=0)    {            book[k].setNum(newnum);            cout<<"changebookbynum successed:"<0)        i++;      }  readercount=i;  cout<0){          if(num[0]==10)num=num.substr(1);        reader[i]=Reader();        reader[i].setNum(num);        reader[i].setName(name);        reader[i].setCollege(college);        reader[i].setClassno(classno);        }      }  inf.close() ;  return readercount;  }    int addreader(string num,string name,string college,string classno)   //添加读者    {        int i=readercount;        reader[i]=Reader();        reader[i].setNum(num);        reader[i].setName(name);        reader[i].setCollege(college);        reader[i].setClassno(classno);        ++readercount;        return readercount;    }   void searchreaderbynum(string num){       //按学号查询读者        bool found=false;        for(int i=0;i=0)    {            cout<<"reader to be deleted :"<1)        i++;      }  borrowbookcount=i;  cout<0){          if(num[0]==10)num=num.substr(1);        borrowbook[i]=BorrowBook();        int d[3];        string2date(borrowdates,d);        int by=d[0],bm=d[1],bd=d[2];        borrowbook[i].setBorrowdate(bd,bm,by);        string2date(toreturndates,d);        by=d[0];bm=d[1];bd=d[2];        borrowbook[i].setToreturndate(bd,bm,by);        string2date(returndates,d);        by=d[0];bm=d[1];bd=d[2];        borrowbook[i].setReturndate(bd,bm,by);        borrowbook[i].setNum(num);        borrowbook[i].setName(name);        borrowbook[i].setBookNum(booknum);        borrowbook[i].setTitle(title);        }      }  inf.close() ;  return borrowbookcount;  }  friend class ReaderBorrowBook;  int searchbyreaderbook(string readernum,string booknum)     //按学号查询  {        for(int i=0;i>num1>>title0>>author0>>pub0>>pd0>>pm0>>py0>>price0>>howmany0;        bk.addbook(num1,title0,author0,pub0,pd0,pm0,py0,price0,howmany0);        bk.write2Bookfile();        int i=bk.bookcount-1;        cout <>num1>>name0>>college0>>class0;        rd.addreader(num1,name0,college0,class0);        rd.write2Readerfile();        int i=rd.readercount-1;        cout <>select;            cin.get();            switch(select){                case 1:                    cout<<"书名:";                    getline(cin,title,'\n');                    bk.searchbookbytitle(title);                    break;                case 2:                    cout<<"作者名:";                    getline(cin,author,'\n');                    bk.searchbookbyauthor(author);                    break;                case 3:                    cout<<"出版社:";                    getline(cin,pub,'\n');                    bk.searchbookbypub(pub);break;                case 0:return;            }        }        }    void sortbook(){           //排序        int select;        cout<<"3.图书信息排序:按书号、书名等按升序进行排序。"<>select;        switch(select){            case 1:                    cout<<"书号:";                    bk.sortbookbynum();                    dispBook();                    break;            case 2:                    cout<<"书名:";                    bk.sortbookbytitle();                    dispBook();                    break;            case 0:return;            }        }    void editbook(){                  //编辑书        string oldtitle="VisualBasic 程序设计教程",newtitle="VisualBasic 程序设计教程-C",oldnum="40667",newnum="40667-C";        int select;        cout<<"4.图书信息的修改、删除:按书号或书名进行图书的修改和删除。"<>select;        cin.get();        switch(select){            case 1:                    cout<<"old书号:";                    getline(cin,oldnum,'\n');                    cout<<"new书号:";                    getline(cin,newnum,'\n');                    cout<<"changebookbynum: "<>select;            cin.get();            if(select==0)return;            cout<<"borrow学号:";            getline(cin,rdnum,'\n');            cout<<"borrow书号:";            getline(cin,booknum,'\n');            bookpos=bk.searchbookbynump(booknum);            rdpos=rd.searchreaderbynump(rdnum);            if(bookpos>0&&rdpos>0){                int hm=bk.book[bookpos].getHowmany();                if(hm>0){                    name=rd.reader[rdpos].getName();                    title=bk.book[bookpos].getTitle();                    bk.book[bookpos].setHowmany(hm-1); //修改图书信息表中的存馆数量                    bb.borrowbook[bb.borrowbookcount].setNum(rdnum);                    bb.borrowbook[bb.borrowbookcount].setBookNum(booknum);                    bb.borrowbook[bb.borrowbookcount].setName(name);                    bb.borrowbook[bb.borrowbookcount].setTitle(title);                    SYSTEMTIME ct;                    GetLocalTime(&ct);//取系统时间,如果用GetSystemTime(&ct);那么获取的是格林尼治标准时间                    y=ct.wYear;                    m=ct.wMonth;                    d=ct.wDay;                    Date toret=Date(d,m,y)+60;                    bb.borrowbook[bb.borrowbookcount].setBorrowdate(d,m,y);                    bb.borrowbook[bb.borrowbookcount].setToreturndate(toret.getDay(),toret.getMonth(),toret.getYear());                    bb.borrowbook[bb.borrowbookcount].setReturndate(1,1,1);                    bb.borrowbookcount++;                    }                else cout<>selectttt;            cin.get();            if(selectttt==0) {return;}            cout<<"return学号:"<=0){            if(bookpos>0&&rdpos>0){                    bk.book[bookpos].setHowmany(bk.book[bookpos].getHowmany()+1);                    SYSTEMTIME ct;                    GetLocalTime(&ct);//取系统时间                    y=ct.wYear;                    m=ct.wMonth;                    d=ct.wDay;                    bb.borrowbook[k].setReturndate(d,m,y);                }            else{                if(bookpos<0)cout<<"No book "<>selectt;        cin.get();        switch(selectt)        {            case 1: cout<<"学号:"<>selectt1;        switch(selectt1){            case 1:                    cout<<"学号:";                    rd.sortreaderbyxuahao();                    dispReader();                    break;            case 2:                    cout<<"学院:";                    rd.sortreaderbyxueyuan();                    dispReader();                    break;            case 0:return;            }        }void editreader(){    string xh,xm,xy,bj,newxh,newxm,newxy,newbj;    int select2;    cout<<"8.学生信息的修改、删除:。"<>select2;        cin.get();        switch(select2)        {            case 1:cout<<"要修改学生的学号为:"<>xh;            cout<<"请输入新学号"<>newxh;            rd.changereaderbyxuehao(xh,newxh);            break;            case 2:cout<<"要删除的学生学号为:"<>xh;            rd.deletereaderbyxuehao(xh);            break;            case 3:cout<<"修改的学生姓名为:"<>xm;            cout<<"请输入修改后的姓名:"<>newxm;            rd.changereaderbyxingming(xm,newxm);            break;            case 4:cout<<"要删除的学生姓名为:"<>xm;            rd.deletereaderbyxingming(xm);            break;            case 0: rd.write2Readerfile();            cout<<"修改成功";            return;        }}}    void searchreaderborrowbook()    {        int bz;        string xxh,ssm;        while(1)        {cout<<"11.图书借阅查询:分别按学号、书名、学院等进行查询。"<>bz;        switch(bz)    {            case 1:cout<<"请输入学号"<>xxh;            bb.searchborrowbookbyxuehao(xxh);break;            case 2:cout<<"请输入书名"<>ssm;bb.searchborrowbookbysm(ssm);break;            case 0:            return;        }    }    }};int main(){    ReaderBorrowBook rbb;    rbb.init();    rbb.dispBook();    rbb.dispReader();    rbb.dispBorrowbook();    rbb.dispCount();    int select;    while(1){        cout<<"菜单选择功能:"<>select;        switch(select){            case 1:rbb.addbook();    rbb.dispCount();break;            case 2:rbb.searchBook();break;            case 3:rbb.sortbook();break;            case 4:rbb.editbook();break;            case 5:rbb.addreader();    rbb.dispCount();break;            case 6:rbb.searchreader();break;            case 7:rbb.sortreader();break;            case 8:rbb.editreader();break;            case 9:rbb.readerborrowabook();break;            case 10:rbb.readerreturnabook();break;            case 11:rbb.searchreaderborrowbook();break;            case 0:rbb.write2file();exit(0);            }        }    return 0;}

部分截图

关于"如何使用C++编写实现图书管理系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

信息 图书 学号 书名 查询 书号 读者 借阅 日期 排序 出版 姓名 学院 数量 作者 出版社 班级 输入 专业 功能 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网的科技 厦门中拓互联网络科技有限公司 美国互联网科技巨头监管 金融科技与互联网金融 火传媒上海互联网科技 互联网科技类展会 博兴的互联网电子科技公司 成都玖崟互联网科技有限公司乐商圈怎么样 广州慧亚互联网科技怎么样 剑昆互联网络科技有限公司临桂 中国互联网有什么科技含量 字节跳动和互联网科技 互联网和黑科技的看法 允成互联网科技有限公司融资 浙南科技城互联网大厦建设工程 长沙茂晟互联网科技有限公司 伊宁互联网科技做什么的 梅州GM互联网络科技有限公司 互联网相关科技技术 小米移动互联网科技园 上海喔噻互联网科技有限公司 互联网科技公司排名 关于新基建和互联网科技 互联网医疗科技 喔噻互联网科技 云电互联网科技 互联网金融监管科技 科技互联网经济论坛 山东亿川互联网科技有限责任公司
0