C++图书馆管理系统
维维sanguine 人气:0思路
在本程序中共有四个类:
book类:此类有书的基本信息:书名,编号,作者,价格等,和基本的get()和set()方法。类图如下:
library类:此类中有一个存放的书的数组,并且可以对书进行,查询,借阅,归还,添加,等相关操作。类图如下:
reader_infor类:此类中有读者的相关信息:名字,学号,年级,借书数量。和基本的get()和set()方法,类图如下:
reader_admin类:此类中有一个存放读者对象的数组,并且可以进行添加读者,修改读者信息等操作。类图如下:
登陆页面如下
读者页面
管理员页面
在本程序过程中的不足:
1.书和读者的存储是通过静态数组实现的,如果用动态数组的话更好一点。
2.还有一些其他点感觉写的不是很好,但还不知道要怎么改。
后面有时间会再完善一下。
代码
“book.h"
#pragma once #include <iostream> using namespace std; class book { public: book(); book(string name, int n_number, int s_number, int id, string author, double price); //get方法 string get_name(); int get_n_number(); int get_s_number(); int get_id(); string get_author(); double get_price(); //set方法 void set_name(string name); void set_n_number(int n_number); void set_s_number(int s_number); void set_id(int id); void set_author(string author); void set_price(double price); private: string name;//名称 int n_number;//现有数量 int s_number;//库存数量 int id;//编号 string author;//作者 double price;//价格 };
"book.cpp"
#include "book.h" book::book() { name = " "; n_number = 0; s_number = 0; id = 0; author = " "; price = 0; } book::book(string name, int n_number, int s_number, int id, string author, double price) { this->name = name; this->n_number = n_number; this->s_number = s_number; this->id = id; this->author = author; this->price = price; } //get方法。 string book::get_name() { return name; } int book::get_n_number() { return n_number; } int book::get_s_number() { return s_number; } int book::get_id() { return id; } string book::get_author() { return author; } double book::get_price() { return price; } //set方法。 void book::set_name(string name) { this->name = name; } void book::set_n_number(int n_number) { this->n_number = n_number; } void book::set_s_number(int s_number) { this->s_number = s_number; } void book::set_id(int id) { this->id = id; } void book::set_author(string author) { this->author = author; } void book::set_price(double price) { this->price = price; }
"library.h"
#pragma once #include"reader_admin.h" #include "book.h" using namespace std; class library { public: library(); int get_m();//返回存放书的总数量 int get_place();//返回查找到书的位置 void set_book1();//存放书籍 void show_book();//显示书籍的相关信息 bool search();//查找书籍 //修改书的相关信息 bool chang_book1(); bool borrow_book(reader_admin&r_ad);//借书 bool return_book(reader_admin& r_ad);//还书 private: int m;//存放书的总数。 int place;//记录查找到书的位置。 book book1[1000];//一个存放1000本书的数组。 };
librayry.cpp
#include "library.h" #include "book.h" //book类作为书籍的基类 //书共有的属性:名称,现有数量,库存数量,编号,作者,价格 library::library() { m = 0; } int library::get_m() { return m; } int library::get_place() { return place;//返回查找到书的位置。 } void library::set_book1() { cout << "请输入书的名称:" << endl; string name; cin >> name; cout << "请输入书的现存数量:" << endl; int now; cin >> now; cout << "请输入书的库存数量:" << endl; int s; cin >> s; cout << "请输入书的编号:" << endl; int id; cin >> id; cout << "请输入书的作者:" << endl; string author; cin >> author; cout << "请输入书的价格:" << endl; double price; cin >> price; book b(name, now, s, id, author, price); this->book1[m] = b; m++; cout << "恭喜您完成书的存储!" << endl; } void library::show_book() { cout << "您好,下面将为您显示图书信息!" << endl; cout << "名称" << " " << "编号" << " " << "现有数量" << " " << "库存数量" << " " << "作者" << " " << "价格" << endl; for (int i = 0; i < m; i++) { cout << book1[i].get_name() << " " << book1[i].get_id() << " " << book1[i].get_n_number() << " " << book1[i].get_s_number() << " " << book1[i].get_author() << " " << book1[i].get_price() << endl; } } bool library::search() { int id; cout << "请输入您借阅书籍的ID:" << endl; cin >> id; for (int i = 0; i < m; i++) { if (book1[i].get_id() == id) { cout << "名称" << " " << "编号" << " " << "现有数量" << " " << "库存数量" << " " << "作者" << " " << "价格" << endl; cout << book1[i].get_name() << " " << book1[i].get_id() << " " << book1[i].get_n_number() << " " << book1[i].get_s_number() << " " << book1[i].get_author() << " " << book1[i].get_price() << endl; return true; } } cout << "您查找的书不存在!" << endl; return false; } bool library::borrow_book(reader_admin&r_ad)//借书 { char c = ' '; do { cout << "请输入您的学号:" << endl; string r_id; cin >> r_id; if (r_ad.sreach_id(r_id) == true)//判断输入的学号是否存在 { char d = ' '; do { int id; cout << "请输入您借阅书籍的ID:" << endl; cin >> id; for (int i = 0; i < m; i++) { if (book1[i].get_id() == id)//如果查找的书本存在 { if (book1[i].get_n_number() == 0) { cout << "您找的书已借阅完!" << endl; return false; } else { book1[i].set_n_number(book1[i].get_n_number() - 1);//使书本的数量少一。 r_ad.r_borrow();//读者的借阅量加一。 cout << "恭喜您借阅成功!" << endl; return true; } } } cout << "您查找的书籍不存在!/已借阅完!" << endl; cout << "重新输入请按Y!按其他任意键退出!" << endl; cin >> d; } while (d == 'Y' || d == 'y'); return false; } cout << "您输入的学号不存在!" << endl; cout << "重新输入请按Y!按其他任意键退出!" << endl; cin >> c; } while (c == 'Y' || c == 'y'); return false; } bool library::return_book(reader_admin& r_ad) { char c = ' '; do { cout << "请输入您的学号:" << endl; string r_id; cin >> r_id; if (r_ad.sreach_id(r_id) == true)//判断输入的学号是否存在 { char d = ' '; do { int id; cout << "请输入您借阅书籍的ID:" << endl; cin >> id; for (int i = 0; i < m; i++) { if (book1[i].get_id() == id)//如果查找的书本存在 { if (book1[i].get_n_number() == 0) { } else { book1[i].set_n_number(book1[i].get_n_number() +1);//使书本的数量加一。 r_ad.r_reutrn();//读者的借阅量减一。 cout << "恭喜您借阅成功!" << endl; return true; } } } cout << "您查找的书籍不存在!/已借阅完!" << endl; cout << "重新输入请按Y!按其他任意键退出!" << endl; cin >> d; } while (d == 'Y' || d == 'y'); return false; } cout << "您输入的学号不存在!" << endl; cout << "重新输入请按Y!按其他任意键退出!" << endl; cin >> c; } while (c == 'Y' || c == 'y'); return false; } //修改书的相关信息 bool library::chang_book1() { char c = ' '; char d = ' '; do { cout << "请输入您要修改信息书的id:" << endl; int id; cin >> id; for (int i = 0; i < m; i++) { if (book1[i].get_id() == id) { do { cout << "请选择您要修改的信息:" << endl; cout << "1.name" << "2.id" << "3.n_number" << "4.s_number" << "5.id" << "6.author" << "7.price" << endl; int n; cin >> n; //修改名称 if (n == 1) { cout << "请输入您修改的名称:" << endl; string new_name; cin >> new_name; book1[i].set_name(new_name); cout << "恭喜您修改成功!" << endl; } //修改id if (n == 2) { cout << "请输入您修改的id" << endl; int new_id; cin >> new_id; book1[i].set_id(new_id); cout << "恭喜您修改成功!" << endl; } //修改n_number if (n == 3) { cout << "请输入您修改的现有数量" << endl; int new_n_number; cin >> new_n_number; book1[i].set_n_number(new_n_number); cout << "恭喜您修改成功!" << endl; } //修改库存信息 if (n == 4) { cout << "请输入您修改的库存数量" << endl; int new_s_number; cin >> new_s_number; book1[i].set_s_number(new_s_number); cout << "恭喜您修改成功!" << endl; } //修改书的编号 if (n == 5) { cout << "请输入您修改的编号" << endl; int new_id; cin >> new_id; book1[i].set_id(new_id); cout << "恭喜您修改成功!" << endl; } //修改作者信息 if (n == 6) { cout << "请输入您修改的作者" << endl; string new_name; cin >> new_name; book1[i].set_name(new_name); cout << "恭喜您修改成功!" << endl; } //修改价格信息 if (n == 7) { cout << "请输入您修改的价格" << endl; double new_price; cin >> new_price; book1[i].set_price(new_price); cout << "恭喜您修改成功!" << endl; } cout << "继续修改请按Y!" << endl; cin >> d; } while (d == 'Y' || d == 'y'); } } cout << "您查找的书不存在" << endl; cout << "重新输入请按Y!按其他任意键退出!" << endl; cin >> c; } while (c == 'Y' || c == 'y'); return false; }
"reader_infor.h"
#pragma once //存储学生信息 #include"book.h" class reader_infor { public: reader_infor(); reader_infor(string Id, string Name, string Grade, int Number); //get函数 string get_r_id();//返回学生的学号。 string get_r_name();//返回学生的名字。 string get_r_grade();//返回学生的班级。 int get_r_borrow();//返回学生借阅书籍的数量。 //set函数 void set_r_id(string ID); void set_r_name(string Name); void set_r_grade(string Grade); void set_r_borrow(int Number); private: string r_id;//学生的学号 string r_name;//学生的名字 string r_grade;//学生的班级 int r_borrow;//学生借阅书籍的数量 };
"reader_infor.cpp"
#include"reader_infor.h" //构造函数 reader_infor::reader_infor() { r_id = ""; r_name = ""; r_grade = ""; r_borrow = 0; } reader_infor::reader_infor(string id, string name, string grade, int number) { this->r_id = id; this->r_name = name; this->r_grade = grade; this->r_borrow = number; } //get函数 string reader_infor::get_r_id() { return this->r_id; } string reader_infor::get_r_name() { return this->r_name; } string reader_infor::get_r_grade() { return this->r_grade; } int reader_infor::get_r_borrow() { return this->r_borrow; } //set函数 void reader_infor::set_r_id(string Id) { this->r_id = Id; } void reader_infor::set_r_name(string Name) { this->r_name = Name; } void reader_infor::set_r_grade(string Grade) { this->r_grade = Grade; } void reader_infor::set_r_borrow(int Borrow) { this->r_borrow = Borrow; }
"reader_admin.h
#pragma once #include"reader_infor.h" //管理学生信息 class reader_admin { public: reader_admin(); int get_borrow_number(); void set_borrow_number(int i); void set_reader_infor();//创建学生信息。 void show_reader_infor();//显示学生的信息。 bool chang_reader();//修改读者信息。 bool sreach_id(string id);//查找学生的学号。 void r_borrow();//读者的借阅量+1。 void r_reutrn();//读者的借阅量-1。 private: int borrow_number;//查找的相关位置。 int reader_number;//记录学生的个数。 reader_infor reader1[1000];//存放学生信息。 };
"reader_admin.cpp
#include"reader_admin.h" reader_admin::reader_admin() { reader_number = 0; borrow_number = -1; } int reader_admin::get_borrow_number() { return borrow_number; } void reader_admin::set_borrow_number(int i) { this->borrow_number = i; } //添加读者信息 void reader_admin::set_reader_infor() { cout << "请输入学生的id:" << endl; string r_id; cin >> r_id; cout << "请输入学生的姓名:" << endl; string r_name; cin >> r_name; cout << "请输入学生的年级:" << endl; string r_grade; cin >> r_grade; cout << "请输入学生的借书数量:" << endl; int r_number; cin >> r_number; reader_infor reader_new(r_id, r_name, r_grade, r_number); reader1[reader_number] = reader_new; reader_number++;//学生数量加1. } //显示读者信息 void reader_admin::show_reader_infor() { for (int i = 0; i < reader_number; i++) { cout << "学生的学号是:" << reader1[i].get_r_id() << endl; cout << "学生的姓名是:" << reader1[i].get_r_name() << endl; cout << "学生的年级是:" << reader1[i].get_r_grade() << endl; cout << "学生的借书数量是:" << reader1[i].get_r_borrow() << endl; } } bool reader_admin::sreach_id(string id)//查找学号是否存在 { for (int i = 0; i < reader_number; i++) { if (reader1[i].get_r_id() == id) { borrow_number = i; return true; } } return false; } //借书数量加一 void reader_admin::r_borrow() { reader1[borrow_number].set_r_borrow(reader1[borrow_number].get_r_borrow() + 1); borrow_number = -1; } //借书数量减一 void reader_admin::r_reutrn() { reader1[borrow_number].set_r_borrow(reader1[borrow_number].get_r_borrow() - 1); borrow_number = -1; } //修改书籍信息 bool reader_admin::chang_reader() { char c = ' '; char d = ' '; do { cout << "请输入您要修改信息学生的id" << endl; string r_id; cin >> r_id; if (sreach_id(r_id) == true) { do { cout << "请选择您要修改的信息:" << endl; cout << "1.学号" << "2.名字" << "3.班级" << "4.借阅书籍数量" << endl; int i; cin >> i; //修改学号 if (i == 1) { cout << "请输入您修改的学号" << endl; string new_r_id; cin >> new_r_id; reader1[borrow_number].set_r_id(new_r_id); cout << "恭喜您修改成功!" << endl; } //修改名称 if (i == 2) { cout << "请输入您修改的名称" << endl; string new_r_name; cin >> new_r_name; reader1[borrow_number].set_r_name(new_r_name); cout << "恭喜您修改成功!" << endl; } //修改班级 if (i == 3) { cout << "请输入您修改的班级" << endl; string new_r_grade; cin >> new_r_grade; reader1[borrow_number].set_r_grade(new_r_grade); cout << "恭喜您修改成功!" << endl; } //修改借阅数量 if (i == 4) { cout << "请输入您修改的数量" << endl; int new_r_number; cin >> new_r_number; reader1[borrow_number].set_r_borrow(new_r_number); cout << "恭喜您修改成功!" << endl; } cout << "继续修改信息请按Y!按任意键退出!" << endl; cin >> d; } while(d == 'Y' || d == 'y'); borrow_number = -1;//将查找到的位置初始化。 break;//跳出本次修改。 } cout << "继续修改请按Y!按任意键退出!" << endl; cin >> c; } while (c == 'Y' || c == 'y'); return false; }
test.cpp
#include <string> #include "book.h" #include "library.h" #include"reader_infor.h" #include"reader_admin.h" using namespace std; int main() { reader_admin r_ad; library lib; int i; while (1) { cout << "************欢迎来到图书馆************" << endl; cout << "**********请选择您的登陆身份**********" << endl; cout << " 1. 借阅者登陆 " << endl; cout << " 2. 管理员登陆 " << endl; cin >> i; int j; if (i == 1) { do { cout << "********请选择您要进行的操作**********" << endl; cout << "********1.浏览图书信息**********" << endl; cout << "********2. 查找 **********" << endl; cout << "********3. 借书 **********" << endl; cout << "********4. 还书 **********" << endl; cout << "********5. 退出 **********" << endl; cin >> j; switch (j) { case 1:lib.show_book(); break; case 2:lib.search(); break; case 3:lib.borrow_book(r_ad); break; case 4:lib.return_book(r_ad); break; case 5:break; } } while (j == 1 || j == 2 || j == 3 || j == 4); } int m; if (i == 2) { do { cout << "********请选择您要进行的操作**********" << endl; cout << "********1. 浏览图书信息 **********" << endl; cout << "********2. 浏览读者信息 **********" << endl; cout << "********3. 添加图书信息 **********" << endl; cout << "********4. 添加读者信息 **********" << endl; cout << "********5. 修改图书信息 **********" << endl; cout << "********6. 修改读者信息 **********" << endl; cout << "********7. 退出 **********" << endl; cin >> m; switch (m) { case 1:lib.show_book(); break; case 2:r_ad.show_reader_infor(); break; case 3:lib.set_book1(); break; case 4:r_ad.set_reader_infor(); break; case 5:lib.chang_book1(); break; case 6:r_ad.chang_reader(); break; case 7:continue; } } while (m==1||m==2||m==3||m==4||m==5||m==6); } } return 0; }
加载全部内容