C++图书管理系统课程设计

C++图书管理系统课程设计

使用面对对象的方法来写的
一共有两个大类 1.Book类(书籍类) 2.Library类(图书馆类)

在这里插入图片描述
源码连接:图书管理系统

  • Book
class Book
{
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;   //借书日期
};
  • Library
class Library
{
public:
    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;
    }
    friend void read();
    void showInfo();//菜单
    int getTotalBooks(){ return currentNum + brrowNum; }
private:
    vector<Book> books;//所有书籍
    map<string, int> readers;  //存储读者及其所借的书籍数目 
    int currentNum;   //库存书籍数目(不包括借出的)
    int brrowNum;     //借出书籍数目
};

main

int main()
{
    read();//从文件中读取书籍信息和借阅情况
    system("color f5");//设置界面颜色
    menu();
    return 0;
}

read

void read()
{
    int i, temp;
    ifstream my1("num.txt");
    my1 >> temp;
    ifstream my("book.txt");
    for (i = 0; i<temp; i++)
    {
        string name, num, auther, reader, data;
        int lcn;
        bool borrow_flag;
        my >> name >> num >> auther >> borrow_flag;
        l.addBook(name, num, auther);
        if (borrow_flag)
        {
            my >> reader >> lcn >> data;
            l.books[i].setReader(reader, lcn, data);
        }
    }
}

在这里插入图片描述

menu(菜单)

void menu()
{
    int temp;
    system("cls");
    system("date/t");
	system("time/t");
    while (1)
    {
    

cout太多了,已图片显示好了

在这里插入图片描述

        cout << "输入要进行的操作:" ;
        cin >> temp;
        switch (temp){
        case 1:
            system("cls");
            l.addBook(); save();
            break;
        case 2:system("cls");
            l.deleteBook(); save();
            break;
        case 3:system("cls");
            l.brrowBook(); save();
            break;
        case 4:system("cls");
            l.returnBook(); save();
            break;
        case 5:system("cls");
            l.showInfo();
            break;
        case 6:system("cls");
            l.getReader();
            break;
        case 0:
            save();
            exit(1);
            break;
        default:
            cout << "输入错误!" << endl;
            system("pause");
            system("cls");
        }
    }
}

在这里插入图片描述
运行效果演示:

  • 界面
    在这里插入图片描述

  • 增加图书
    在这里插入图片描述

  • 删除图书

在这里插入图片描述

  • 查询并且借阅图书
    在这里插入图片描述

  • 还书
    在这里插入图片描述

  • 显示图书信息

在这里插入图片描述

  • 查看是否被借走
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lazy_Goat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值