iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么用C++代码实现图书馆管理系统
  • 319
分享到

怎么用C++代码实现图书馆管理系统

2023-06-29 11:06:30 319人浏览 安东尼
摘要

这篇“怎么用c++代码实现图书馆管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C++代码实现图书馆管理系统”文

这篇“怎么用c++代码实现图书馆管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C++代码实现图书馆管理系统”文章吧。

一.代码

#include<bits/stdc++.h>using namespace std;class Date{    int year,month,day;public:    Date(int x,int y,int z):year(x),month(y),day(z){}    Date(){year=month=day=0;}    void setDate(int x,int y,int z){year=x;month=y;day=z;}    void setYear(int x){year=x;}    void setMonth(int x){month=x;}    void setDay(int x){day=x;}      int getYear(){return year;}    int getMonth(){return month;}    int getDay(){return day;}    friend ostream& operator<<(ostream &out,Date &t );    friend istream& operator>>(istream &in,Date &t);    bool operator<(const Date &t);};ostream& operator<<(ostream &out,Date &t ){    out<<t.year<<" ";    out<<t.month<<" ";    out<<t.day;    return out;}istream& operator>>(istream &in,Date &t){    in>>t.year>>t.month>>t.day;    return in;}bool Date::operator<(const Date &t){    return year!=t.year?year<t.year:month!=t.month?month<t.month:day<t.day;}class Record{    int uid;    int bid;    Date start;    Date end;//默认end为应该还书的时间    int xj;//1表示已经续借过,0时还未续借    int sy;//1时已经还书,0时未还书public:    Record(int a,int b,Date c):uid(a),bid(b),start(c)    {       int i,j,k;       i=start.getYear();       j=start.getMonth();       k=start.getDay();       if(j+2<=12)       {           end.setDate(i,j+2,k);       }       else  end.setDate(i+1,j+2-12,k);       xj=0;sy=0;    }    Record(){}    int getUid(){return uid;}    int getBid(){return bid;}    Date getS(){return start;}      Date getE(){return end;}    int getxj(){return xj;}    int getsy(){return sy;}      void setE();//用于续借时修改应该还书的时间,即将end再加两个月    void setxj(int x){xj=x;}    void setsy(int x){sy=x;}      friend ostream& operator<<(ostream &out,Record &r );    friend istream& operator>>(istream &in,Record &r);    void display();};void Record::setE(){    int i,j,k;    i=end.getYear();    j=end.getMonth();    k=end.getDay();    if(j+2<=12)    {        end.setDate(i,j+2,k);    }    else  end.setDate(i+1,j+2-12,k);}ostream& operator<<(ostream &out,Record &r){    out<<r.uid<<" ";    out<<r.bid<<" ";    out<<r.start<<" ";    out<<r.end<<" ";    out<<r.xj<<" ";    out<<r.sy<<" ";    return out;}istream& operator>>(istream &in,Record &r){    in>>r.uid>>r.bid>>r.start>>r.end>>r.xj>>r.sy;    return in;}void Record::display(){    cout<<"借阅人:"<<uid<<" "<<"书号:"<<bid<<" "<<"借书日期:"<<start<<" "<<"应还书日期:"<<end<<" "<<"是否续借过:"<<xj<<" "<<"是否已还书:"<<sy<<endl;}class Book{    int id;//书号    string name;//书名    string press;//出版社    Date pd;//出版日期    int sum,ln;//总册数,已借出    int i;public:    vector<Record>v1;    vector<Record>::iterator it1;    multimap<int,int>m1;//根据借阅人的学号建立    multimap<int,int>::iterator mit1;    Book(int a,string b,string c,Date d,int e,int f):id(a),name(b),press(c),pd(d),sum(e),ln(f){i=v1.size();}    Book(){}    int getId(){return id;}    string getName(){return name;}    string getPress(){return press;}    Date getPd(){return pd;}      int getSum(){return sum;}    int getLn(){return ln;}      void setSum(int x){sum=x;}    void setLn(int x){ln=x;}      void addRecord(Record r);    void dispRecord();    int search(int x);//根据借阅人的学号查询    void display();    void display1();    friend istream& operator>>(istream &in,Book &b);    friend ostream& operator<<(ostream &out,Book &b);};istream& operator>>(istream &in,Book &b){    in>>b.id>>b.name>>b.press>>b.pd>>b.sum>>b.ln>>b.i;    int s=0;    if(b.i!=0)    {        while(s!=b.i)        {            in>>b.v1[s];s++;        }    }    return in;}ostream& operator<<(ostream &out,Book &b){    out<<b.id<<" "<<b.name<<" "<<b.press<<" "<<b.pd<<" "<<b.sum<<" "<<b.ln<<" "<<endl;    if(b.v1.size()!=0)    {       out<<b.v1.size()<<endl;       for(int i=0;i<b.v1.size();i++)       {           out<<b.v1[i];           if(i!=b.v1.size()-1)              out<<endl;       }    }    else        out<<b.v1.size();    return out;}void Book::addRecord(Record r){    int i;    v1.push_back(r);    i=v1.size();    m1.insert(make_pair(r.getUid(),i-1));}void Book::dispRecord(){    for(int i=0;i<v1.size();i++)        v1[i].display();}int Book::search(int x){    mit1=m1.find(x);    if(mit1!=m1.end())    {        return mit1->second;//返回的是这本书存储的关于借阅人x的借阅记录的下标值    }    else return -1;}void Book::display(){    cout<<"书号:"<<id<<" "<<"书名:"<<name<<" "<<"出版社:"<<press<<" "<<"出版日期:"<<pd<<" "<<"总册数:"<<sum<<" "<<"已借出:"<<ln<<endl;    if(v1.size()!=0)    {        dispRecord();    }}void Book::display1(){    cout<<"书号:"<<id<<" "<<"书名:"<<name<<" "<<"出版社:"<<press<<" "<<"出版日期:"<<pd<<" "<<"总册数:"<<sum<<" "<<"已借出:"<<ln<<endl;}class User{    int id;    string name;    string major;    int mb,nb;//mb为最大借阅量,nb为当前借阅量    int wj;//1为违纪过,此时无法借书;    int i;public:    vector<Record>v2;    vector<Record>::iterator it2;    multimap<int,int>m2;//根据所借书的书号建立    multimap<int,int>::iterator mit2;    User(int a,string b,string c):id(a),name(b),major(c)    {        mb=10;nb=0;wj=0;i=v2.size();    }    User(){i=v2.size();}    int getId(){return id;}    string getName(){return name;}    string getMajor(){return major;}      int getmb(){return mb;}    int getnb(){return nb;}    int getwj(){return wj;}      void setmb(int x){mb=x;}    void setnb(int x){nb=x;}    void setwj(){wj=1;mb=0;}      void addRecord(Record r);    void dispRecord();    int search(int no);//通过书号查找    void display();      bool operator ==( User &u)    {        if(this->id==u.getId())        return 1;        else return 0;    }    User & operator =(User &u)    {        id=u.id;        name=u.name;        major=u.major;        mb=u.mb;        nb=u.nb;        wj=u.wj;        v2=u.v2;        m2=u.m2;    }    friend ostream& operator<<(ostream &out,User &u);    friend istream& operator>>(istream &in,User &u);};ostream& operator<<(ostream &out,User &u){    out<<u.id<<" "<<u.name<<" "<<u.major<<" "<<u.mb<<" "<<u.nb<<" "<<u.wj<<" "<<endl;    if(u.v2.size()!=0)    {        out<<u.v2.size()<<endl;        for(int i=0;i<u.v2.size();++i)        {            out<<u.v2[i];            if(i!=u.v2.size()-1)               out<<endl;        }    }    else        out<<u.v2.size();    return out;}istream& operator>>(istream &in,User &u){      in>>u.id>>u.name>>u.major>>u.mb>>u.nb>>u.wj>>u.i;    int s=0;    if(u.i!=0)    {        while(s!=u.i)        {            in>>u.v2[s];s++;        }    }    return in;}void User::addRecord(Record r){    int i;    v2.push_back(r);    i=v2.size();    m2.insert(make_pair(r.getBid(),i-1));}void User::dispRecord(){    for(int i=0;i<v2.size();i++)    {        v2[i].display();    }}int User::search(int no){    mit2=m2.find(no);    if(mit2!=m2.end())    {        return mit2->second;    }    else return -1;}void User::display(){    cout<<"学号:"<<id<<" "<<"姓名:"<<name<<" "<<"专业班级:"<<major<<" "<<"最大借阅量:"<<mb<<" "<<"当前借阅量:"<<nb<<" "<<"有无违纪:"<<wj<<endl;    if(v2.size()!=0)    {        dispRecord();    }}class Client{    User u;    vector<Book>v3;    vector<Book>::iterator it3;    multimap<int,int>m3;    multimap<int,int>::iterator mit3;      vector<User>v;    vector<User>::iterator it;    multimap<int,int>m;    multimap<int,int>::iterator mit;public:    Client(int x)    {        load1();         load2(x);    }    ~Client()    {        save1();         save2();    }    void load1();    void save1();    void load2(int x);    void save2();    void queryBook(int x);    void borrow(int x,Date t);    void back(int x);    void displayu(){u.display();}    void displayb(int x){mit3=m3.find(x); v3[mit3->second].display();}};void Client::load1(){    Book b;    int i;    ifstream infile("d:\\20171750book.txt",iOS::in);    if(!infile) return;    while(infile>>b)    {        v3.push_back(b);        i=v3.size();        m3.insert(make_pair(b.getId(),i-1));    }    infile.close();}void Client::save1(){    ofstream outfile("d:\\20171750book.txt",ios::out);    if(!outfile) return;    for(int i=0;i<v3.size();i++)    {        outfile<<v3[i];        outfile<<endl;    }    outfile.close();}void Client::load2(int x){    User u;    int i;    ifstream infile("d:\\20171750stu.txt",ios::in);    if(!infile) return;    while(infile>>u)    {        v.push_back(u);        i=v.size();        m.insert(make_pair(u.getId(),i-1));        if(x==u.getId())        {            this->u=u;        }    }    infile.close();}void Client::save2(){    ofstream outfile("d:\\20171750stu.txt",ios::out);    if(!outfile) return ;    for(it=v.begin();it!=v.end();it++)    {        outfile<<*it;        outfile<<endl;    }    outfile.close();}void Client::queryBook(int x){    mit3=m3.find(x);    if(mit3!=m3.end())    {        v3[mit3->second].display1();    }    else        cout<<"未找到该书!"<<endl;}void Client::borrow(int x,Date t){    mit3=m3.find(x);    int i,j,k;    i=mit3->second;    j=v3[i].getLn();    k=v3[i].getSum();    if(u.getwj()==0&&j<k&&u.getnb()<u.getmb()&&mit3!=m3.end())    {        cout<<"借书成功!"<<endl;        Record r(u.getId(),v3[i].getId(),t);        u.addRecord(r);      mit=m.find(u.getId()); v[mit->second].addRecord(r);        v3[i].addRecord(r);        u.setnb(u.getnb()+1);                       v[mit->second].setnb(u.getnb());        v3[i].setLn(j+1);    }    else       cout<<"借书失败!"<<endl;}void Client::back(int x){    mit3=m3.find(x);    int s=u.v2.size();    int flag=0;    int i=mit3->second;    int j=v3[i].getLn();    if(s!=0)    {        for(int i=0;i<s;++i)        {            if(x==u.v2[i].getBid())              flag=1;        }    }    if(mit3!=m3.end()&&flag==1)    {        cout<<"还书成功!"<<endl;//用户的nb-1√   书的ln-1√  用户和书的借阅记录的sy变为1        u.setnb(u.getnb()-1);   mit=m.find(u.getId());  v[mit->second].setnb(u.getnb());        v3[i].setLn(j-1);        v3[i].mit1=v3[i].m1.find(u.getId());  v3[i].v1[v3[i].mit1->second].setsy(1);        u.mit2=u.m2.find(x);                  u.v2[u.mit2->second].setsy(1);        int k=mit->second;        v[k].mit2=v[k].m2.find(x);  v[k].v2[v[k].mit2->second].setsy(1);    }    else        cout<<"还书失败!"<<endl;}class Manger{   vector<User>v4;   vector<User>::iterator it4;   multimap<int,int>m4;   multimap<int,int>::iterator mit4;     vector<Book>v5;   vector<Book>::iterator it5;   multimap<int,int>m5;   multimap<int,int>::iterator mit5;public:   Manger()   {       load1();       load2();   }   ~Manger()   {       save1();       save2();   }   void load1();   void load2();   void save1();   void save2();   void addUser(User u);   void addBook(Book b);   void displayU(int x);   void displayB(int x);};void Manger::load1(){    User u;    int i;    ifstream infile("d:\\20171750stu.txt",ios::in);    if(!infile) return;    v4.clear(); m4.clear();    i=0;    while(infile>>u)    {        v4.push_back(u);        m4.insert(make_pair(u.getId(),i));        i++;    }    infile.close();}void Manger::load2(){    Book b;    int i;    ifstream infile("d:\\20171750book.txt",ios::in);    if(!infile)  return;    v5.clear();m5.clear();    i=0;    while(infile>>b)    {        v5.push_back(b);        m5.insert(make_pair(b.getId(),i));        i++;    }    infile.close();}void Manger::save1(){    ofstream outfile("d:\\20171750stu.txt",ios::out);    if(!outfile)  return;    for(it4=v4.begin();it4!=v4.end();it4++)    {        outfile<<*it4;        outfile<<endl;    }    outfile.close();}void Manger::save2(){    ofstream outfile("d:\\20171750book.txt",ios::out);    if(!outfile)  return;    for(it5=v5.begin();it5!=v5.end();it5++)    {        outfile<<*it5;        outfile<<endl;    }    outfile.close();}void Manger::addUser(User u){    int x;    x=u.getId();    mit4=m4.find(x);    if(mit4!=m4.end())    {        cout<<"添加用户失败,该用户已存在!"<<endl;    }    else    {        cout<<"添加用户成功!"<<endl;        int i;        v4.push_back(u);        i=v4.size();        m4.insert(make_pair(u.getId(),i-1));    }}void Manger::addBook(Book b){    int x;    x=b.getId();    mit5=m5.find(x);    if(mit5!=m5.end())    {        cout<<"添加图书失败,该图书已存在!"<<endl;    }    else    {        cout<<"添加图书成功!"<<endl;        int i;        v5.push_back(b);        i=v5.size();        m5.insert(make_pair(b.getId(),i-1));    }}void Manger::displayU(int x){    mit4=m4.find(x);    v4[mit4->second].display();}void Manger::displayB(int x){    mit5=m5.find(x);    v5[mit5->second].display();}int main(){  //时间类测试  //记录类测试  //图书类测试      //管理端测试                Client c(20171750);  Date t(2018,6,14);  c.borrow(1,t);    //借书  c.back(1);   //还书}

以上就是关于“怎么用C++代码实现图书馆管理系统”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: 怎么用C++代码实现图书馆管理系统

本文链接: https://www.lsjlt.com/news/324595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用C++代码实现图书馆管理系统
    这篇“怎么用C++代码实现图书馆管理系统”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C++代码实现图书馆管理系统”文...
    99+
    2023-06-29
  • C++实现图书馆管理系统的代码怎么写
    这篇文章主要介绍“C++实现图书馆管理系统的代码怎么写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++实现图书馆管理系统的代码怎么写”文章能帮助大家解决问题。总体思想用C++开发图书馆管理系统需...
    99+
    2023-06-29
  • C++实现图书馆管理系统源码
    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 总体思想 用C++开发图书馆管理系统需要对学生和图书分别建立class,调用class中的方法实现学...
    99+
    2024-04-02
  • C++实现图书馆管理系统
    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一、实验名称 图书馆管理系统 二、实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,...
    99+
    2024-04-02
  • C++实现简易图书馆管理系统的代码怎么写
    这篇文章主要讲解了“C++实现简易图书馆管理系统的代码怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++实现简易图书馆管理系统的代码怎么写”吧!思路在本程序中共有四个类:book类:...
    99+
    2023-06-29
  • C++实现简易图书馆管理系统
    本文实例为大家分享了C++实现简易图书馆管理系统的具体代码,供大家参考,具体内容如下 思路 在本程序中共有四个类: book类:此类有书的基本信息:书名,编号,作者,价格等,和基本的...
    99+
    2024-04-02
  • C语言实现图书馆管理系统
    本文实例为大家分享了C语言实现图书馆管理系统的具体代码,供大家参考,具体内容如下 全部代码如下: #include <stdio.h> #include<str...
    99+
    2024-04-02
  • C++实现简单图书馆管理系统
    本文实例为大家分享了C++实现简单图书馆管理系统的具体代码,供大家参考,具体内容如下 写了一个小项目,图书馆系统,功能如下: 1,添加书籍2,删除书籍(可删除还没外借的书籍)3,读者...
    99+
    2024-04-02
  • C++实现图书馆系统
    本文实例为大家分享了C++实现图书馆系统的具体代码,供大家参考,具体内容如下 1.目的 用c++语言实现图书馆系统 2.分析    图书馆系统中要实现的功能有:图...
    99+
    2024-04-02
  • C语言如何实现图书馆管理系统
    这篇文章主要介绍了C语言如何实现图书馆管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全部代码如下:#include <stdio.h>#incl...
    99+
    2023-06-20
  • 如何用C++实现简单图书馆管理系统
    这篇文章主要介绍“如何用C++实现简单图书馆管理系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用C++实现简单图书馆管理系统”文章能帮助大家解决问题。功能如下:1,添加书籍2,删除书籍(可删...
    99+
    2023-06-29
  • 【C#项目】图书馆管理系统-WinForm+MySQL
    文章目录 前言一、业务梳理与需求分析1.功能描述2.实现步骤3.功能逻辑图 二、数据库设计1.实体-关系(E-R图)概念模型设计2.数据表设计 三、WinForm界面交互设...
    99+
    2023-10-20
    python 开发语言
  • C++实现图书管理系统源码
    本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下 直接上代码 #include <stdafx.h> #include <iostr...
    99+
    2024-04-02
  • Java如何实现网上图书馆管理系统
    小编给大家分享一下Java如何实现网上图书馆管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、项目简述功能: 区分为管理员用户和普通用户,普通用户:用户登录,个 人信息修改,图书查询,用户借阅,用户归还,管理员用 ...
    99+
    2023-06-25
  • 如何使用C++实现图书馆系统
    这篇文章主要为大家展示了“如何使用C++实现图书馆系统”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用C++实现图书馆系统”这篇文章吧。具体内容如下1.目的用c++语言实现图书馆系统2.分...
    99+
    2023-06-29
  • C#实现图书管理系统
    本文为大家分享了C#实现图书管理系统课程设计,供大家参考,具体内容如下 一、设计目的 通过模拟图书管理系统,实现以下功能学生账号的注册学生对馆藏图书状况的查询学生借书,还书状态的查询...
    99+
    2024-04-02
  • C++课程设计之图书馆管理系统
    本文实例为大家分享了C++课程设计之图书馆管理系统的具体代码,供大家参考,具体内容如下 一.代码 #include<bits/stdc++.h> using namesp...
    99+
    2024-04-02
  • Java实现图片展览馆管理系统的代码
    今天小编给大家分享一下Java实现图片展览馆管理系统的代码的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、项目运行环境配置...
    99+
    2023-06-29
  • python实现图书管理系统的代码怎么写
    这篇文章主要介绍“python实现图书管理系统的代码怎么写”,在日常操作中,相信很多人在python实现图书管理系统的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python实现图书管理系统的代码...
    99+
    2023-06-29
  • 如何使用C++实现一个简单的图书馆管理系统?
    如何使用C++实现一个简单的图书馆管理系统?图书馆是一个重要的知识和文化传播场所,而一个高效的图书馆管理系统能够提升图书馆的运作效率,方便读者借阅图书和管理图书馆资源。本文将介绍如何使用C++编程语言实现一个简单的图书馆管理系统。首先,我们...
    99+
    2023-11-02
    图书馆 C++ 管理系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作