C++实现图书馆管理系统

本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下

一、实验名称

图书馆管理系统

二、实验目的

利用C++语言设计开发一个小型的图书馆管理系统模拟程序,具有如下功能:退出系统、增加图书、删除图书、借阅图书、归还图书、显示图书信息、查询图书等功能。实验中应掌握继承结构,并掌握对象、类、链表的使用和成员函数、构造函数的定义及调用,并掌握使用实验设备的技能技巧和程序的调试方法。

三、实验平台

运行环境:VC++6.0

四、问题分析

图书馆管理系统模拟程序可划分为7个模块:退出模块、增加图书模块、删除图书模块、借阅图书模块、归还图书模块、显示图书信息模块、查询图书模块。各模块之间均有着或多或少的联系,比如: 借阅图书模块、显示图书信息模块、查询图书模块都需要在进行增加图书模块后进行。理解了各模块之间的主要关系有利于程序的设计与完成,使程序的层次结构清晰,便于程序的编写、阅读和调试。以下为本次试验的项目构架图:

本次实验定义了三个类:Item类、Person类、Library类

Item类中有public函数: name、item_type、bool Register(bool函数输出值只有ture和force,用来判断是否注册)。

Person类中public函数:Name ()、Adress ()、Regist_items。

Library类中public函数:addBook()向图书馆里加书籍、deleteBook()删除无用书籍、brrowBook()借书,之前先判断书籍是否存在、returnBook()还书、getReader()查询某编号的书是谁借了、indexOfNum(string num) 根据编号得到书在数组中的下标;
private函数:vector books所有书籍、map<string, int> readers存储读者及其所借的书籍数目、currentNum库存书籍数目、brrowNum借出书籍数目。

附录:

程序源代码:

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<iomanip>
#include <list>
using namespace std;

class item
{
    public:
    string name;
    string item_type;

    bool Register;

};

//杂志类
class magazine :public item
{
    string Type;
    string Writer;
};
//MusicCd类
class MusicCd :public item
{
    string Singer;
};
//电影类
class Movie :public item
{
    string Type;
    string Director;
    string Actor;
};

//书籍类
class Book : public item
{
public:
    Book() { borrow_flag = false; }   //无参构造函数
    Book(string name, string num, string auther)
        :name(name), num(num), auther(auther) {
        borrow_flag = false;
    }  //有参构造函数
    void setReader(string reader, int lcn, string data); //设置读者
    void setInfo(string name, string num, string auther); //设置书籍信息
    string getName() {
        return name;
    }
    string getNum() { return num; }
    string getAuther() {
        return auther;
    }
    bool getBorrow_flag() {
        return borrow_flag;
    }
    string getReader() {
        return reader;
    }
    int getLcn() {
        return lcn;
    }
    string getData() {
        return data;
    }
    bool isBorrow() { return borrow_flag; }        //判断书籍是否借出
    void setBorrow_flag(bool b) { borrow_flag = b; }
    void showInfo();        //显示数据信息
private:
    string name;  //书名
    string num;   //编号(唯一标示)
    string auther; //作者

    bool borrow_flag;
    string reader; //读者
    int lcn;       //借书证号
    string data;   //借书日期
};
//DVD电影类
class DVD :public Movie
{

};
//蓝光电影类
class Blue_ligh :public Movie
{

};

//用户
class Person
{
public:
    string Name;
    string Adress;
    list<item> Regist_items;
};

void Book::setReader(string reader, int lcn, string data)
{
    borrow_flag = true;
    this->reader.assign(reader);
    this->lcn = lcn;
    this->data.assign(data);
}
void Book::setInfo(string name, string num, string auther)
{
    this->name.assign(name);
    this->num.assign(num);
    this->auther.assign(auther);
}
void Book::showInfo()
{
    cout << "书籍名称:" << setiosflags(ios_base::left) << setw(56) << name << endl
         << "书籍编号:" << setw(56) << num<< endl
         << "书籍作者:" << setw(56) << auther  << endl;
    if (borrow_flag)
    {
       cout << "书籍被借出。                                                      \n"
            << "读者姓名:" << setw(56) << reader<< endl
            << "借书证号:" << setw(56) << lcn << endl
            << "借书日期:" << setw(56) << data << endl;
    }
    else {
        cout << "书籍未被借出。                                                    \n";
    }
}
class Library
{
public:
    //书籍库
    list<item> itemList;
    Library() { currentNum = 0; brrowNum = 0; }
    void addBook();                //向图书馆里加书籍
    void addBook(string name, string num, string auther);
    void deleteBook();   //删除无用书籍
    void brrowBook();   //借书,之前先判断书籍是否存在
    void returnBook();   //还书
    void getReader();  //查询某编号的书是谁借了
    int indexOfNum(string num); //根据编号得到书在数组中的下标
    vector<Book> getBooks() {
        return books;
    }
    void showInfo();
    int getTotalBooks() { return currentNum + brrowNum; }
private:
    vector<Book> books;//所有书籍
    map<string, int> readers;  //存储读者及其所借的书籍数目 
    int currentNum;   //库存书籍数目(不包括借出的)
    int brrowNum;     //借出书籍数目
};
void Library::showInfo()
{
    cout << "  ***************************所有图书信息***************************\n\n";
    for (int i = 0; i < books.size(); i++)
    {
        cout << "第" << i + 1 << "本书籍的信息。" << endl;
        books[i].showInfo();
    }
    system("pause");
    system("cls");
}
int Library::indexOfNum(string num)
{
    int i;
    for (i = 0; i < books.size(); i++)
    {
        if (books[i].getNum() == num)
            return i;
    }
    return -1;
}
void Library::addBook()
{
    Book b;
    int temp;
    string name, num, auther;
    cout << "  *****************************增加界面*****************************\n\n";
    do {
        cout << "输入书籍名称,编号,作者:";
        cin >> name >> num >> auther;
        b.setInfo(name, num, auther);
        if (indexOfNum(num) == -1) {
            books.push_back(b);
            currentNum++;
            cout << "\n添加成功。" << endl;
            cout << "输入1继续增加,返回上一层输入2:";
            cin >> temp;
        }
        else {
            cout << "已存在该编号的书籍,添加失败。" << endl;
            cout << "输入1继续重新增加,返回上一层输入2:";
            cin >> temp;
        }
    } while (temp == 1);
    system("pause");
    system("cls");
}
void Library::addBook(string name, string num, string auther)
{
    Book b;
    b.setInfo(name, num, auther);
    books.push_back(b);
}
void Library::deleteBook()
{
    int index, temp;
    string num;
    cout << "  *****************************删除界面*****************************\n\n";
    do {
        cout << "输入要删除的书籍的编号:";
        cin >> num;
        index = indexOfNum(num);
        if (index != -1) {
            if (!books[index].getBorrow_flag()) {
                cout << "删除的书籍的信息:\n";
                books[index].showInfo();
                books.erase(books.begin() + index);
                currentNum--;
                cout << "删除成功。" << endl;
                cout << "输入1继续继续删除,返回上一层输入2:";
                cin >> temp;
            }
            else {
                cout << "删除失败!书籍已经被借出。" << endl;
                cout << "输入1继续继续删除,返回上一层输入2:";
                cin >> temp;
            }
        }
        else
        {
            cout << "删除失败。未找到编号为" << num << "的书籍。\n";
            cout << "输入1继续继续删除,返回上一层输入2:";
            cin >> temp;
        }
    } while (temp == 1);
    system("pause");
    system("cls");
}
void Library::brrowBook()
{
    string num;
    int index;
    cout << "  *****************************借阅界面*****************************\n\n";
    cout << "输入要借阅的书籍的编号:";
    cin >> num;
    index = indexOfNum(num);
    if (index != -1) {
        if (books[index].isBorrow()) {
            cout << "借阅失败,书籍以及被借出。\n";
            system("pause");
            system("cls");
        }
        else
        {
            cout << "要借的书籍的信息:\n";
            books[index].showInfo();
            string reader, data;
            int lcn;
            cout << "输入读者姓名,借书证号,借书日期:";
            cin >> reader >> lcn >> data;
            if (readers[reader] != 2) {
                books[index].setReader(reader, lcn, data);
                cout << "借书完成。\n";
                currentNum--;
                brrowNum++;
                readers[reader]++;
                system("pause");
                system("cls");
            }
            else
            {
                cout << "借书失败,该读者以借超过两本书籍。\n";
                system("pause");
                system("cls");
            }
        }
    }
    else
    {
        cout << "借书失败。未找到编号为" << num << "的书籍.\n";
        system("pause");
        system("cls");
    }

}
void Library::returnBook()
{
    string num;
    cout << "  *****************************还书界面*****************************\n\n";
    cout << "输入要还的书籍的编号:";
    cin >> num;
    int index;
    index = indexOfNum(num);
    if (index != -1)
    {
        cout << "要还的书籍的信息为:\n";
        books[index].showInfo();
        books[index].setBorrow_flag(false);
        readers[books[index].getReader()]--;
        cout << "还书成功。\n";
        system("pause");
        system("cls");
    }
    else
    {
        cout << "还书失败,请检查书籍编号是否输入错误!\n";
        system("pause");
        system("cls");
    }
}
void Library::getReader()
{
    string num;
    cout << "  *****************************查询界面*****************************\n\n";
    cout << "输入要查找的书籍编号:";
    cin >> num;
    int index;
    index = indexOfNum(num);
    if (index != -1)
    {
        if (books[index].getBorrow_flag())
            cout << "读者为:" << books[index].getReader() << endl;
        else {
            cout << "无读者。" << endl;
        }
        system("pause");
        system("cls");
    }
    else
    {
        cout << "查询失败,请检查书籍编号是否输入错误!\n";
        system("pause");
        system("cls");
    }
}
Library l;

void menu()
{
    int temp;
    
    while (1)
    {
        cout << "___________________________ 图书馆管理系统____________________________\n";
        cout << "                  ┏━━━━━━━━━━━━━┓                      \n";
        cout << "                  ┃ [0]退出系统。            ┃                      \n";
        cout << "                  ┃ [1]增加图书。            ┃                      \n";
        cout << "                  ┃ [2]删除图书。            ┃                      \n";
        cout << "                  ┃ [3]借阅图书。            ┃                      \n";
        cout << "                  ┃ [4]归还图书。            ┃                      \n";
        cout << "                  ┃ [5]显示图书信息。        ┃                      \n";
        cout << "                  ┃ [6]查询图书。            ┃                      \n";
        cout << "                  ┗━━━━━━━━━━━━━┛                      \n";
        cout << "输入要进行的操作:";
        cin >> temp;
        switch (temp) {
        case 1:
            system("cls");
            l.addBook(); 
            break;
        case 2:system("cls");
            l.deleteBook(); 
            break;
        case 3:system("cls");
            l.brrowBook(); 
            break;
        case 4:system("cls");
            l.returnBook(); 
            break;
        case 5:system("cls");
            l.showInfo();
            break;
        case 6:system("cls");
            l.getReader();
            break;
        case 0:
            
            exit(1);
            break;
        default:
            cout << "输入错误!" << endl;
            system("pause");
            system("cls");
        }
    }
}
int main()
{
    menu();
    return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++利用链表实现图书信息管理系统

    C++利用链表实现一个简单的图书信息管理系统,供大家参考,具体内容如下 (1)图书信息包括ISBN号.书名.作者名.价格和数量等: (2)系统的主要功能包括:图书信息的创建.输出图书信息.查询图书信息.增加图书信息.删除图书信息. #include <stdio.h> #include <stdlib.h> #include <string.h> //创建结构体及其成员 typedef struct Node { int num;//编号 char name[20];/

  • C++实现图书管理系统最新版

    图书管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式) .按书名查询 .按作者名查询 (4)图书信息的删除与修改 二.代码实现 带有注释 废话不说,直接代码,欢迎指正. 大家CV可能有不兼容的情况,可以滴滴,尽可能解决问题地回复. #include<iostream> #include<stdio.h> #include <stdlib.h> #

  • C++实现图书管理系统

    闲来无事,用C++做了一个图书管理系统,主要有借书.还书.图书管理.用户管理等功能,主要用到的技术有容器和文件,以及类的封装 #include <iostream> #include <list> #include <algorithm> #include <string.h> #include <fstream> #include <stdlib.h> using namespace std; class Mybook; class

  • C++顺序表实现图书管理系统

    本文为大家分享了C++顺序表实现图书管理系统的具体代码,供大家参考,具体内容如下 图书信息表包括以下10项常用的基本操作:图书信息表的创建和输出.排序.修改.逆序存储.最贵图书的查找.最爱图书的查找.最佳位置图书的查找.新图书的入库.旧图书的出库.图书去重. 代码: #include<iostream> #include<iomanip> #include<string> using namespace std; //函数结果状态代码 #define OK 1 #def

  • C/C++实现图书信息管理系统

    本文实例为大家分享了c/c++实现图书信息管理系统的具体代码,供大家参考,具体内容如下 程序流程图 源代码 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define N 100 struct type{ char ISBN[N];//ISBN编号(一般为13位) char bookName[N

  • C++实现简单的图书管理系统

    今天再为大家介绍另一个常用的管理系统--图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果. 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式)         .按书名查询         .按作者名查询 (4)图书信息的删除与修改 分享代码如下 #include<iostream.h>

  • java实现图书馆管理系统

    本文实例为大家分享了java实现图书馆管理系统的具体代码,供大家参考,具体内容如下 思路:所有包都在book_manage包里 利用面向对象的多态特性去除了很多if-else的判断,不同的子类在父类所对应的方法不同. 1.首先建立一个book包 包里面有2个类,一个是Book,这个类里面包含一本书的全部信息 另外一个类是BookList,这个类是用来管理每一个书,通过这个类来寻找每一本书. private Book[] books = new Book[100]; Book数组里面存放所有的书.

  • java控制台输出图书馆管理系统

    java控制台输出图书馆管理系统(只用java代码不用数据库和GUI,java入门的新手秒懂) 在个项目中,我只用数组保存数据,和只用for循环和if条件语句来完成,连数组工具类都没用,所以导致要用到很多的条件语句,虽然比较局限,但可以让新手快速体验一下做小项目的乐趣,也可以练练for和if这些语句,练练一下它们之间嵌套的逻辑关系等,因为时间有限所以没有去优化了,主要还是让新手们体验下做java项目的面向对象编程思想(OOP),给新手们体验一下做项目的乐趣,嘿嘿! 话不多说了,直接切入正题. 设

  • Java实现小型图书馆管理系统

    本文实例为大家分享了Java实现小型图书馆管理系统的具体代码,供大家参考,具体内容如下 以下为小型图书馆管理系统模式图: 模式总体概述: 其中IBorrower接口确定Borrower类标准,Library类为单例设计模式,即图书馆只有一个.Book类为Borrower类的内部类,libraryBook类为Library类的内部类.最后利用PlatForm类进一步的封装.对于类方法中的核心,主要是数组的"增删查改"操作,本项目中三次运用了这些操作,分别在Borrower.Library

  • java+mysql实现图书馆管理系统实战

    本文实例为大家分享了java+mysql实现图书馆管理系统的具体代码,供大家参考,具体内容如下 概述 基于Spring + Spring MVC + MyBatis的图书馆管理系统,使用Maven进行包管理.主要功能包括:图书查询.图书管理.图书编辑.读者管理.图书的借阅与归还以及借还日志记录等. 代码 @Controller public class LendController { @Autowired private LendService lendService; @Autowired

  • C语言实现图书馆管理系统

    本文实例为大家分享了C语言实现图书馆管理系统的具体代码,供大家参考,具体内容如下 全部代码如下: #include <stdio.h> #include<string.h> #include<stdlib.h> #include <mysql.h> #pragma comment (lib,"libmysql.lib") //#pragma comment ( lib,"xxx.lib" ) //表示鏈接xxx.lib

  • Java 实战项目锤炼之网上图书馆管理系统的实现流程

    一.项目简述 功能: 区分为管理员用户和普通用户,普通用户:用户登录,个 人信息修改,图书查询,用户借阅,用户归还,管理员用 户:图书馆里,归还管理,借阅信息查询,图书维护,分 类管理,读者管理等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP + Servlert + html+ css + JavaScript + JQuery

  • C++实现简易图书馆管理系统

    本文实例为大家分享了C++实现简易图书馆管理系统的具体代码,供大家参考,具体内容如下 思路 在本程序中共有四个类: book类:此类有书的基本信息:书名,编号,作者,价格等,和基本的get()和set()方法.类图如下: library类:此类中有一个存放的书的数组,并且可以对书进行,查询,借阅,归还,添加,等相关操作.类图如下: reader_infor类:此类中有读者的相关信息:名字,学号,年级,借书数量.和基本的get()和set()方法,类图如下: reader_admin类:此类中有一

  • C++实现简单图书馆管理系统

    本文实例为大家分享了C++实现简单图书馆管理系统的具体代码,供大家参考,具体内容如下 写了一个小项目,图书馆系统,功能如下: 1,添加书籍2,删除书籍(可删除还没外借的书籍)3,读者借书4,读者还书5,按书籍登入号查看信息(每一本书的书籍登入号唯一,如有5本相同书名作者的书,那就有5个不同的书籍登入号)6,查询所有图书信息(可以直接查看到同本书在图书馆中的剩余和借出情况)7,查看指定读者的借书详情8,注册新读者9,查看所有书籍信息(可以详细到每个登入号和此登入号书籍的借阅情况:如谁借的,借阅日期

  • C++实现图书馆管理系统

    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一.实验名称 图书馆管理系统 二.实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,具有如下功能:退出系统.增加图书.删除图书.借阅图书.归还图书.显示图书信息.查询图书等功能.实验中应掌握继承结构,并掌握对象.类.链表的使用和成员函数.构造函数的定义及调用,并掌握使用实验设备的技能技巧和程序的调试方法. 三.实验平台 运行环境:VC++6.0 四.问题分析 图书馆管理系统模拟程序可划分为7个模块:

  • 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

随机推荐