服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++详细实现完整图书管理功能

C++详细实现完整图书管理功能

2022-11-22 12:37工藤学编程 C/C++

随着网络技术的高速发展,计算机应用的普及,利用计算机对图书馆的日常工作进行管理势在必行,本篇文章涵盖一个图书管理系统的全部实现代码,大家可以查缺补漏,提升水平

图书管理系统功能概览:

  • 登录,注册
  • 学生,老师借书,查看自己当前借书情况,还书。
  • 管理员增加书,查看当前借阅情况,查看当前所有借阅人,图书信息。

代码概览:

各个模块主要负责功能

COperationManagement.h  负责登录,注册,管理员,将图书,初始化操作,将借阅信息等从文件中读取出来,放入容器中,便于操作,不用一直对文件进行I/O.
 CBook.h  用于对书抽象,并实现了>>的重载,便于文件读入,读出
 CUser.h  工具人,作为老师,学生的父类
 CStudent.h  对学生进行的抽象
 CTeacher.h 对老师进行的抽象
 CAdministrator.h 对管理的抽象
 CManagementBooks.h  用户所有的相关操作的中间执行者,有设计模式中代理的思想
 源.cpp  界面的的实现与系统入口

说明:代码100%完整,如果大家不想CV,也可以私聊我发你完整代码,还有就是文件读入建议大家都直接放在相应项目里面,不然就写绝对路径。有问题欢迎大家在评论区提问,喜欢就点个赞咯!

全部代码与讲解:

1.源.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<iostream>
#include"CBook.h"
#include"CStudent.h"
#include"CManagementBooks.h"
#include"CTeacher.h"
#include<fstream>
#include"CAdministrator.h"
#include"COperationManagement.h"
using namespace std;
int main()
{
    CManagementBooks mb;
    CUser* user = nullptr;
    COperationManagement om;
    om.init(mb);
    cout << "***** 欢迎来到图书馆 *****" << endl;
    cout << "注意事项" << endl;
    cout << "1.学生最多共可借三本书,老师最多共可借五本"<<endl<<endl;
    cout << "请选择您的登录方式 1:老师 2:学生 3:管理员" << endl;
    int t;
    cin >> t;
    if (t == 1)
    {
        user = new CTeacher;
    }
    else if(t == 2)
    {
        user = new CStudent;
    }
    else if(t == 3)
    {
        CAdministrator admin;
        om.adminLogin(admin);
        admin.showInfo();
        om.adminOperation(admin, mb);
        return 0;
    }
    cout << "您是否已有账号?(y/n):" << endl;
    string c;
    cin >> c;
    if (c == "y")
    {
        cout << "请登录:" << endl;
        om.login(user,t);
        user->showInfo();
    }
    else
    {
        cout << "来注册一个吧!" << endl;
        om.Register(user,t);
    }
    om.userOperation(user, mb);
    delete user;
    return 0;
}

实现效果:

C++详细实现完整图书管理功能

2.COperationManagement.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#include "COperationManagement.h"
void COperationManagement::login(CUser* user, int t)
{
    ifstream readFile;
    ifstream readFile1;
    if (t == 1)
    {
        readFile.open("teacherLogin.txt");
        readFile1.open("teacher.txt");
    }
    else
    {
        readFile1.open("student.txt");
        readFile.open("studentLogin.txt");
    }
    if (!readFile.is_open())
    {
        cout << "登录数据读取错误" << endl;
    }
    if (!readFile1.is_open())
    {
        cout << "用户数据读取错误" << endl;
    }
    cout << "请输入您的学工号:" << endl;
    string account, password;
    cin >> account;
    int flag = 0;
    while (!readFile.eof())
    {
        string act;
        readFile >> act;
        if (act == account)
        {
            cout << "请输入密码:" << endl;
            cin >> password;
            string pwd;
            readFile >> pwd;
            if (pwd == password)
            {
                cout << "登录成功" << endl;
                flag = 1;
                while (!readFile1.eof())
                {
                    readFile1 >> user;
                    if(user->getId() == act)
                    {
                        break;
                    }
                }
                break;
            }
            else
            {
                cout << "密码错误,请重新登录" << endl;
                login(user, t);
            }
        }
    }
    if (!flag)
    {
        cout << "学工号错误,请重输入" << endl;
        login(user, t);
    }
    readFile.close();
    readFile1.close();
}
void COperationManagement::Register(CUser* user, int t)
{
    ofstream writeFile;
    ofstream writeFile1;
    if (t == 1)
    {
        writeFile1.open("teacher.txt", ios::app);
        writeFile.open("teacherLogin.txt",ios::app);
    }
    else
    {
        writeFile1.open("student.txt", ios::app);
        writeFile.open("studentLogin.txt",ios::app);
    }
    string pwd, act;
    cout << "请输入您的学工号作为注册账号:" << endl;
    cin >> act;
    cout << "请输入您的注册密码:" << endl;
    cin >> pwd;
    writeFile << endl << act << " " << pwd;
    cout << "请完善您的相应信息:" << endl;
    string  name, department, gender;
    cout << "您的姓名:" << endl;
    cin >> name;
    cout << "您的性别:" << endl;
    cin >> gender;
    cout << "您所在的院系:" << endl;
    cin >> department;
    writeFile1 <<endl << act << " " << name << " " << gender << " " << department;//这里不能用user,因为在登录时才用,并且并没有初始化
    writeFile.close();
    writeFile1.close();
    cout << "注册成功! 赶紧登录进入图书管吧!" << endl;
    login(user, t);
}
void COperationManagement::userOperation(CUser* user, CManagementBooks mb)
{
    while (1)
    {
        cout << "请选择您的操作 1.借书 2.查看自己当前借书情况 3.还书 4.退出" << endl;
        int t;
        cin >> t;
        if (t == 1)
        {
            cout << "当前图书馆情况如下:" << endl;
            mb.showCurrentAllBook();
            cout << "是否有您想要借阅的图书(y/n)" << endl;
            string s;
            cin >> s;
            if (s == "y")
            {
                user->borrowBookFromLibrary(mb);
            }
        }
        else if (t == 2)
        {
            mb.checkBorrowedBook(user->getId());
        }
        else if (t == 3)
        {
            user->returnBook(mb);
        }
        else if (t == 4)
        {
            cout << "退出成功" << endl;
            break;
        }
        else
        {
            cout << "暂无此操作,请按提示操作" << endl;
        }
    }
}
void COperationManagement::adminLogin(CAdministrator& admin)
{
    ifstream readFile("adminLogin.txt");
    ifstream readFile1("admin.txt");
    cout << "请输入您的工号:" << endl;
    string account, password;
    cin >> account;
    int flag = 0;
    while (!readFile.eof())
    {
        string act;
        readFile >> act;
        if (act == account)
        {
            cout << "请输入密码:" << endl;
            cin >> password;
            string pwd;
            readFile >> pwd;
            if (pwd == password)
            {
                cout << "登录成功,欢迎您" << endl;
                flag = 1;
                while (!readFile1.eof())
                {
                    readFile1 >> admin;
                    if(admin.getId() == act)
                    {
                        break;
                    }
                }
                break;
            }
            else
            {
                cout << "密码错误,请重新登录" << endl;
                adminLogin(admin);
            }
        }
    }
    if (!flag)
    {
        cout << "学工号错误,请重输入" << endl;
        adminLogin(admin);
    }
    readFile.close();
    readFile1.close();
}
void COperationManagement::init(CManagementBooks& mb)
{
    mb.initBooks();
    mb.initOutBook();
}
void COperationManagement::adminOperation(CAdministrator admin, CManagementBooks mb)
{
    while (1)
    {
        cout << "请选择您的操作 1.增加书 2.查看当前借阅情况 3.查看当前所有图书信息情况 4.查看借阅人详细信息 5.退出" << endl;
        int t;
        cin >> t;
        if (t == 1)
        {
            admin.addBook(mb);
        }
        else if (t == 2)
        {
            mb.checekOutBook();
        }
        else if (t == 3)
        {
            mb.showAllBooksInfo();
        }
        else if (t == 4)
        {
            string id;
            cout << "请输入您要查看借阅人的学工号:" << endl;
            cin >> id;
            mb.viewBorrowerDetails(id);
        }
        else if (t == 5)
        {
            cout << "退出成功" << endl;
            break;
        }
        else
        {
            cout << "暂无此操作,请按提示操作" << endl;
        }
    }
}

登录效果:

C++详细实现完整图书管理功能

其余功能大家可以自行测试。

CUser.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "CUser.h"
#include<iostream>
#include<fstream>
#include"CManagementBooks.h"
using namespace std;
CUser::CUser()
{
    m_name = "陈1";
}
void CUser::setId(string id)
{
    m_id = id;
}
void CUser::setName(string name)
{
    m_name = name;
}
void CUser::setGender(string gender)
{
    m_gender = gender;
}
void CUser::setDepartment(string department)
{
    m_department = department;
}
CUser::~CUser()
{
}
void CUser::returnBook(CManagementBooks& mb)
{
    int all = mb.checkBorrowedBook(m_id);
    if (all == 0)
    {
        cout << "您暂未借书,无需归还" << endl;
    }
    else
    {
        cout << "请输入您要归还的书名:" << endl;
        string bookName;
        cin >> bookName;
        if (mb.checkTrueBorrow(m_id, bookName))
        {
            mb.Return(m_id, bookName);
            cout << "还书成功" << endl;
        }
        else
        {
            cout << "您并未借阅此书" << endl;
        }
    }
}
string CUser::getId()
{
    return m_id;
}
string CUser::getName()
{
    return m_name;
}
string CUser::getGender()
{
    return m_gender;
}
string CUser::getDepartment()
{
    return m_department;
}
std::ostream& operator<<(std::ostream& os, const CUser* user)
{
    os<< endl << user->m_id << " " << user->m_name << " " << user->m_gender << " " << user->m_department;
    return os;
}
std::istream& operator>>(std::istream& is, CUser* user)
{
   is >> user->m_id >> user->m_name >> user->m_gender >> user->m_department;
   return is;
}

CTeacher.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "CTeacher.h"
#include<fstream>
CTeacher::CTeacher()
{
    m_name = "刘X";
}
void CTeacher::borrowBookFromLibrary(CManagementBooks& mb)
{
        int all = mb.checkBorrowedBook(m_id);
        if (all < 5)
        {
            string name;
            cout << "请输入您要借的书名:" << endl;
            cin >> name;
            if (mb.borrow(name))
            {
                ofstream writeFile("borrowedBook.txt", ios::app);
                mb.setMapValue(m_id, name);
                writeFile << endl << m_id << " " << name;
                writeFile.close();
            }
        }
        else
        {
            cout << "您已经超过了最大可借阅数" << endl;
        }
}
void CTeacher::showInfo()
{
    cout << "姓名:" << m_name<<" " << "学号:" << m_id<<" " << "性别:" << m_gender<<" " << "院系:" << m_department << endl;
}

CStudent.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "CStudent.h"
#include<fstream>
using  namespace std;
CStudent::CStudent()
{
    m_class = "软件";
}
void CStudent::showInfo()
{
    cout << "姓名:" << m_name << " " << "学号:" << m_id << " " << "性别:" << m_gender << " " << "院系:" << m_department << " "<<"班级:"<<m_class<<endl;
}
void CStudent::borrowBookFromLibrary(CManagementBooks& mb)
{
    int all = mb.checkBorrowedBook(m_id);
    if (all < 3)
    {
        string name;
        cout << "请输入您要借的书名:" << endl;
        cin >> name;
        if (mb.borrow(name))
        {
            ofstream writeFile("borrowedBook.txt", ios::app);
            mb.setMapValue(m_id, name);
            writeFile << endl << m_id << " " << name;
            writeFile.close();
        }
    }
    else
    {
        cout << "您已经超过了最大可借阅数" << endl;
    }
}
void CStudent::setClass(string Class)
{
    m_class = Class;
}
string CStudent::getClass()
{
    return m_class;
}

CManagementBooks.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#include "CManagementBooks.h"
using namespace std;
void CManagementBooks::showCurrentAllBook()
{
    for (int i = 0; i < m_allBookNum; i++)
    {
        cout << "书名:" << m_books[i].getName() <<" " << "剩余数量" << m_books[i].getNum() << endl;
    }
}
CManagementBooks::CManagementBooks()
{
    m_allBookNum = 0;
}
void CManagementBooks::addBook(CBook book)
{
    int flag = 0;
    for (int i = 0; i < m_allBookNum; i++)
    {
        if (m_books[i].getName() == book.getName())
        {
            flag = 1;
            m_books[i].setNum(m_books[i].getNum() + book.getNum());
            ofstream writeFile("library.txt", ios::out);
            for (int i = 0; i < m_allBookNum; i++)
            {
                writeFile << m_books[i];
            }
            writeFile.close();
            break;
        }
    }
    if (!flag)
    {
        ofstream writeFile("library.txt", ios::app);
        m_books.push_back(book);
        m_allBookNum++;
        writeFile << book;
        writeFile.close();
    }
}
int CManagementBooks::getAllBookNum()
{
    return m_allBookNum;
}
void CManagementBooks::showAllBooksInfo()
{
    for (int i = 0; i < m_allBookNum; i++)
    {
        m_books[i].showInfo();
    }
}
bool CManagementBooks::borrow(string name)
{
    for (int i =0; i <m_allBookNum; i++)
    {
        if (m_books[i].getName() == name)
        {
            if (m_books[i].getNum() >= 1)
            {
                m_books[i].setNum(m_books[i].getNum() - 1);
                cout << "借书成功" << endl;
                ofstream writeFile("library.txt");
                for (int i = 0; i < m_allBookNum; i++)
                {
                    writeFile << m_books[i];
                }
                writeFile.close();
                return true;
            }
            else
            {
                cout << "此书数量不足" << endl;
                return false;
            }
        }
    }
    cout << "很抱歉,暂无此书" << endl;
    return false;
}
void CManagementBooks::Return(string id,string bookName)
{
    CBook book;
    book.setName(bookName);
    addBook(book);
    ofstream writeFile("borrowedBook.txt",ios::out);
    for (auto iter =m_outBookMap.begin(); iter != m_outBookMap.end(); ++iter)
    {
        if (iter->first == id && iter->second == bookName)
        {
            m_outBookMap.erase(iter);
            break;
        }
    }
    for (auto map : m_outBookMap)
    {
        writeFile << endl << map.first << " " << map.second;
    }
    writeFile.close();
}
void CManagementBooks::initOutBook()
{
    ifstream readFile("borrowedBook.txt");
    if (!readFile.is_open())
    {
        cout << "查看全体借书情况数据读取出错" << endl;
    }
    else
    {
        while (!readFile.eof())
        {
            string studentId, bookName;
            readFile >> studentId >> bookName;
            m_outBookMap.insert(pair<string, string>(studentId, bookName));
        }
    }
    readFile.close();
}
void CManagementBooks::checekOutBook()
{
    for (auto map : m_outBookMap)
    {
        cout << "借阅人学工号:" << map.first<<" " << "借阅书名:" << map.second << endl;
    }
}
void CManagementBooks::initBooks()
{
    ifstream readFile;
    readFile.open("library.txt");
    if (!readFile.is_open())
    {
        cout << "图书数据读取错误" << endl;
        readFile.close();
        return;
    }
    while (!readFile.eof())
    {
        CBook book;
        readFile >> book;
        m_allBookNum++;
        m_books.push_back(book);
    }
    readFile.close();
}
int CManagementBooks::checkBorrowedBook(string userId)
{
    int flag = 0;
    for (auto map : m_outBookMap)
    {
        if (userId == map.first)
        {
            if (!flag)
            {
                cout << "您已经借的全部图书如下:" << endl;
                flag++;
            }
            else
            {
                flag++;
            }
            cout << map.second << " ";
        }
    }
    if (!flag)
    {
        cout << "您目前没有借书" << endl;
    }
    cout << "共:" << flag << "本";
    cout << endl;
    return flag;
}
void CManagementBooks::viewBorrowerDetails(string id)
{
    ifstream readFile("teacher.txt");
    ifstream readFile1("student.txt");
    int flag = 0;
    if (!readFile1.is_open()|| !readFile.is_open())
    {
        cout << "用户数据读取错误" << endl;
    }
    while (!readFile1.eof())
    {
        string act1, name, department, gender;
        readFile1 >> act1 >> name >> gender >> department;
        if (id == act1)
        {
            cout<<"用户类别:"<<"学生"<<" " << "用户姓名:" << name << " " << "用户性别:" << gender << " " << "用户所在部门:" << department << endl;
            flag = 1;
        }
    }
    if (!flag)
    {
        while (!readFile.eof())
        {
            string act1, name, department, gender;
            readFile >> act1 >> name >> gender >> department;
            if (id == act1)
            {
                flag = 1;
                cout << "用户类别:"<<"老师"<<" " << "用户姓名:" << name << " " << "用户性别:" << gender << " " << "用户所在部门:" << department << endl;
            }
        }
    }
    if (!flag)
    {
        cout << "无此用户!" << endl;
    }
    readFile.close();
    readFile1.close();
}
bool CManagementBooks::checkTrueBorrow(string id, string bookName)
{
    for (auto map : m_outBookMap)
    {
        if (map.first == id && map.second == bookName)
        {
            return true;
        }
    }
    return false;
}
void CManagementBooks::setMapValue(string userId,string bookName)
{
    m_outBookMap.insert(pair<string, string>(userId, bookName));
}

CBook.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "CBook.h"
#include <iostream>
#include<fstream>
using namespace std;
CBook::CBook()
{
    string b = "";
    string randStr = "0123456789X";
    for (int i = 0; i <= 12; i++)
    {
        if (i == 1 || i == 5 || i == 11)
        {
            b += '-';
        }
        else
        {
            if (i == 12)
            {
                b += randStr[rand() % 11];
            }
            else
            {
                b += randStr[rand() % 10];
            }
        }
    }
    m_num = 1;
    m_name = "等待戈多";
    m_author = "李XX";
    m_isbn = b;
    m_page = rand();
    m_pressInfo = "XX出版社";
    m_price = rand();
}
void CBook::setNum(int num)
{
    m_num = num;
}
int CBook::getNum()
{
    return m_num;
}
void CBook::setName(string name)
{
    m_name = name;
}
string CBook::getName()
{
    return m_name;
}
void CBook::setIsbn(string isbn)
{
    m_isbn = isbn;
}
string CBook::getIsbn()
{
    return m_isbn;
}
void CBook::setPressInfo(string perssInfo)
{
    m_pressInfo = perssInfo;
}
string CBook::getPressInfo()
{
    return m_pressInfo;
}
void CBook::setPrice(double price)
{
    m_price = price;
}
double CBook::getPrice()
{
    return m_price;
}
void CBook::setPage(int page)
{
    m_page = page;
}
int CBook::getPage()
{
    return m_page;
}
void CBook::setAuthor(string author)
{
    m_author = author;
}
string CBook::getAuthor()
{
    return m_author;
}
void CBook::checkIsnb()
{
    int sum = 0;
    for (int i = 0, j = 1; i < m_isbn.size(); i++) {
        if (m_isbn[i] != '-' && i != 12) {
            sum += (m_isbn[i] - '0') * j;
            j++;
        }
    }
    sum %= 11;
    char c = 'X';
    if (sum < 10) c = sum + '0';
    if (m_isbn[12] == c) puts("This book isbn are Right!");
    else puts("This book isbn are wrong!");
}
bool CBook::isBorrowed()
{
    if (m_num >= 1)
    {
        m_num--;
        return true;
    }
    return false;
}
void CBook::showInfo()
{
    cout<<"作者:" << m_author << " "<<"isbn号码:" << m_isbn << " " <<"书本名称:"<< m_name << " "
        <<"总页数:" << m_page << " " <<"出版社:" << m_pressInfo << " " <<"价格:" << m_price
        << " " <<"剩余本数:"<<m_num<< endl;
}
std::ostream& operator <<(std::ostream& os, const CBook& book)
{
    os << endl <<book.m_name << " " <<book.m_isbn << " " << book.m_pressInfo << " " <<book.m_price << " " << book.m_page << " " << book.m_author << " " << book.m_num;
    return os;
}
std::istream& operator>>(std::istream& is, CBook& book)
{
    is >> book.m_name >> book.m_isbn >> book.m_pressInfo >> book.m_price >>book.m_page >> book.m_author >> book.m_num;
    return is;
}

CAdministrator.cpp

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "CAdministrator.h"
void CAdministrator::addBook(CManagementBooks& mb)
{
    CBook book;
    cout << "当前图书馆情况如下" << endl;
    mb.showAllBooksInfo();
    cout << "请输入您要增加的图书信息:" << endl;
    string name, author;
    double price;
    int num;
    cout << "请输入增加的图书书名:" << endl;
    cin >> name;
    cout << "请输入增加的图书的作者:" << endl;
    cin >> author;
    cout << "请输入增加的图书价格:" << endl;
    cin >> price;
    cout << "请输入增加的图书的本书:" << endl;
    cin >> num;
    book.setName(name);
    book.setAuthor(author);
    book.setNum(num);
    book.setPrice(price);
    mb.addBook(book);
    cout << "新增图书成功" << endl;
}
void  CAdministrator::setId(string id)
{
    m_id = id;
}
void CAdministrator::setName(string name)
{
    m_name = name;
}
void CAdministrator::setGender(string gender)
{
    m_gender = gender;
}
void CAdministrator::setDepartment(string department)
{
    m_department = department;
}
void CAdministrator::showInfo()
{
    cout << "姓名:" << m_name << " " << "工号:" << m_id << " " << "性别:" << m_gender << " " << "部门:" << m_department <<endl;
}
std::istream& operator>>(std::istream& is, CAdministrator& admin)
{
    is >> admin.m_id >> admin.m_name >> admin.m_gender >> admin.m_department;
    return is;
}
string CAdministrator::getId()
{
    return m_id;
}
string CAdministrator::getName()
{
    return m_name;
}
string  CAdministrator::getGender()
{
    return m_gender;
}
string  CAdministrator::getDepartment()
{
    return m_department;
}

到此这篇关于C++详细实现完整图书管理功能的文章就介绍到这了,更多相关C++图书管理内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/chandfy/article/details/124572534

延伸 · 阅读

精彩推荐
  • C/C++详解C语言结构体的定义和使用

    详解C语言结构体的定义和使用

    这篇文章主要为大家介绍了C语言结构体的定义和使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...

    女孩脸红了11702022-07-31
  • C/C++QString使用正则操作的接口实现

    QString使用正则操作的接口实现

    这篇文章主要介绍了QString使用正则操作的接口实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    Qt君6712021-08-06
  • C/C++一文彻底搞懂IO底层原理

    一文彻底搞懂IO底层原理

    我们今天要给大家讲的底层的IO看上去简单,实则抽象。并且在它之上衍生出了语言层面用于实战的技术,比如我们熟悉的java语言中的NIO或者像Netty这样的...

    vivo互联网技术5602021-11-16
  • C/C++C语言实现清空指定文件夹中所有文件的方法

    C语言实现清空指定文件夹中所有文件的方法

    这篇文章主要介绍了C语言实现清空指定文件夹中所有文件的方法,实例分析了C语言实现文件删除的相关技巧,需要的朋友可以参考下...

    小卒过河9822021-02-27
  • C/C++手把手带你搞懂C语言指针

    手把手带你搞懂C语言指针

    这篇文章主要介绍了C语言的指针,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下,希望能给你带来帮助...

    宝全哥哥10662021-12-23
  • C/C++C语言类的双向链表详解

    C语言类的双向链表详解

    大家好,本篇文章主要讲的是C语言类的双向链表详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下...

    weixin_520796693482022-08-29
  • C/C++C语言详解float类型在内存中的存储方式

    C语言详解float类型在内存中的存储方式

    在c语言中float函数是单精度的。它在内存中以二进制的形式存储。分为符号位,阶码与尾数三部分,下面我们详细来了解一下...

    小刘好好学习3922022-11-08
  • C/C++VSCode远程代码开发及DNS隧道端口转发实现远程办公代码

    VSCode远程代码开发及DNS隧道端口转发实现远程办公代码

    这篇文章主要介绍了VSCode远程代码开发及DNS隧道端口转发实现远程办公,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参...

    胖虎一号8112021-08-30