千家信息网

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

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章将为大家详细讲解有关如何使用C++编写实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下为图书管理人员编写一个图书管理系统,图书管理
千家信息网最后更新 2025年01月16日如何使用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++编写实现图书管理系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0