1. ホーム
  2. c++

C++図書館管理システム

2022-02-09 02:27:34
<パス

I. 実験名
図書館管理システム
II. 実験の目的
システムの終了、図書の追加、削除、図書の貸出、返却、図書情報の表示、図書の照会などの機能を持つ小規模な図書館管理システムのシミュレーションプログラムをC++で設計・開発し、その機能を実現しなさい。継承構造、およびオブジェクト、クラス、チェーンの使用とメンバ関数、コンストラクタの定義と呼び出し、およびプログラムの実験装置とデバッグ方法を使用するスキルとテクニックを習得している必要があります。
III. 実験用プラットフォーム
実行環境 VC++6.0
IV. 問題分析
図書館管理システムのシミュレーションプログラムは、出口モジュール、本の追加モジュール、本の削除モジュール、本の借り出しモジュール、本の返却モジュール、本の情報表示モジュール、本の照会モジュールの7つのモジュールに分けることができます。各モジュールは多かれ少なかれ互いに関連しており、例えば、チェックアウトモジュール、図書情報表示モジュール、図書照会モジュールはすべて図書モジュールを追加した後に実行する必要があります。モジュール間の主な関係を理解することは、プログラムの設計と完成に資するので、プログラムの階層が明確で、プログラムを書いて、読んで、デバッグするのは簡単です。以下は、本実験のプロジェクト・アーキテクチャ図である。

この実験では、3つのクラスが定義されています。Itemクラス、Personクラス、Libraryクラス
Itemクラスは、name、item_type、bool Registerというパブリック関数を持ちます(bool関数はtureとforceのみを出力し、登録されているかどうかを判断するために使用します)。

Personクラスは、パブリック関数を持っています。Name (), Adress (), Regist_items.

ライブラリクラスのパブリック関数:ライブラリに本を追加する addBook()、無駄な本を削除する deleteBook()、本が存在するかどうかを判断する前に本を借りる borrowBook()、本を返す returnBook()、一定数の本を借りた人を問い合わせる getReader()、番号を元に配列内の本の添え字を取得する indexOfNum( string num)。
private functions: vector books all books, map<string, int> readers readersとその読者が借りた本の数を格納する、currentNum在庫の本の数、browNumチェックアウトした本の数。

付録
プログラムのソースコードです。

#include

#include

#include

#include

#include

#include 

using namespace std;


class item
class
	public:
	string name;
	string item_type;

	bool Register;


};

//Magazine class
class magazine :public item
{
	string Type;
	string Writer;
};
//MusicCd class
class MusicCd :public item
{
	string Singer;
};
//Movie class
class Movie :public item
{
	string Type;
	string Director;
	string Actor;
};

//book class
class Book : public item
{
public:
	Book() { borrow_flag = false; } //no-parameter constructor
	Book(string name, string num, string auther)
		:name(name), num(num), auther(auther) {
		borrow_flag = false;
	} //Constructor with parameters
	void setReader(string reader, int lcn, string data); //set reader
	void setInfo(string name, string num, string auther); //Set book information
	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; } // Determine if the book is borrowed or not
	void setBorrow_flag(bool b) { borrow_flag = b; }
	void showInfo(); //Display data information
private:
	string name; //book name
	string num; //number (unique marker)
	string auther; //author

	bool borrow_flag;
	string reader; //Reader
	int lcn; //library card number
	string data; //date of borrowing
};
//DVD movie class
class DVD :public Movie
{

};
//Blu-ray movie class
class Blue_ligh :public Movie
{

};

//user
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 << "Book name: " << setiosflags(ios_base::left) << setw(56) << name << endl
		 << "book_number:" << setw(56) << num<< endl
		 << "Book author: " << setw(56) << auther << endl;
	if (borrow_flag)
	{
	   cout << "Book is lent.                                                      \n"
			<< "Reader name: " << setw(56) << reader< < endl
			<< "Library card number: " << setw(56) << lcn << endl
			<< "Date of borrowing: " <<
	int currentNum; // number of books in stock (not including loaned ones)
	int brrowNum; //number of books on loan
};
void Library::showInfo()
{
	cout << " *************************** all books information ***************************\n\n";
	for (int i = 0; i < books.size(); i++)
	{
		cout << "The " << i + 1 << " Information about this book. " << 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 << " ***************************** add interface *****************************\n\n";
	do {
		cout << " Enter book name, number, author: ";
		cin >> name >> num >> auther;
		b.setInfo(name, num, auther);
		if (indexOfNum(num) == -1) {
			books.push_back(b);
			currentNum++;
			cout << "\n added successfully. " << endl;
			cout << "Input 1 continues to increase, returning to the previous level Input 2: ";
			cin >> temp;
		}
		else {
			cout << "A book with this number already exists, add failed. " << endl;
			cout << " "Input 1 continue to re-add, return to the previous level Input 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 << " ***************************** delete interface *****************************\n\n";
	do {
		cout << " Enter the number of the book to be deleted: ";
		cin >> num;
		index = indexOfNum(num);
		if (index ! = -1) {
			if (!books[index].getBorrow_flag()) {
				cout << "Information about the deleted books: \n";
				books[index].showInfo();
				books.erase(books.begin() + index);
				currentNum--;
				cout << "Deletion successful. " << endl;
				cout << " "Input 1 continue to delete, return to the previous level Input 2: ";
				cin >> temp;
			}
			else {
				cout << "Deletion failed! Book has been checked out. " << endl;
				cout << " "Input 1 continue to delete, return to the previous level Input 2: ";
				cin >> temp;
			}
		}
		else
		{
			cout << "Deletion failed. Book with number " < < num < < " was not found. \n";
			cout << " " input 1 continue to delete, return to the previous level input 2: ";
			cin >> temp;
		}
	} while (temp == 1);
	system("pause");
	system("cls");
}
void Library::brrowBook()
{
	string num;
	int index;
	cout << " ***************************** borrowing interface *****************************\n\n";
	cout << "Enter the number of the book to be checked out: ";
	cin >> num;
	index = indexOfNum(num);
	if (index ! = -1) {
		if (books[index].isBorrow()) {
			cout << "Borrowing failed, books were checked out as well. \n";
			system("pause");
			system("cls");
		}
		else
		{
			cout << "Information about the book to be borrowed: \n";
			books[index].showInfo();
			string reader, data;
			int lcn;
			cout << "Enter the reader's name, library card number, and date of borrowing: ";
			cin >> reader >> lcn >> data;
			if (readers[reader] ! = 2) {
				books[index].setReader(reader, lcn, data);
				cout << "Borrowing of books completed. \n";
				currentNum--;
				brrowNum++;
				readers[reader]++;
				system("pause");
				system("cls");
			}
			else
			{
				cout << "Borrowing a book failed, the reader to borrow more than two books. \n";
				system("pause");
				system("cls");
			}
		}
	}
	else
	{
		cout << "Failed to borrow book. Book number " << num << " not found. \n";
		system("pause");
		system("cls");
	}

}
void Library::returnBook()
{
	string num;
	cout << " ****