国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼

這篇具有很好參考價值的文章主要介紹了期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

功能展示
期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼運行效果
主界面:期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼
圖書管理界面:
期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼
讀者管理界面:

期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼
借還書管理界面:
期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-508694.html

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<Windows.h>
#include<conio.h>
using namespace std;

#define BOOK_NUM 200
#define READER_NUM 100
#define LEN_BOOK sizeof(Book)
#define LEN_READER sizeof(Reader)

//圖書結(jié)構(gòu)體
typedef struct Book
{
	int Num;//圖書編號
	char Name[15];//圖書名稱
	char Auther[15];//圖書作者
	char Press[15];//圖書出版社
	int Amount;//圖書數(shù)量
}Book;
//讀者結(jié)構(gòu)體
typedef struct Reader
{
	int Num;//讀者編號
	char Name[15];//讀者姓名
	char Sex[4];//讀者性別
	int Max;//讀者最大可借閱數(shù)量
	int Amount;//讀者當前可借閱的數(shù)量
	int BookId[20];//讀者已經(jīng)借閱的圖書列表
}Reader;

//全局結(jié)構(gòu)體記錄所有圖書信息和讀者信息
 Book astBook[BOOK_NUM];
 Reader astReader[READER_NUM];

void Menu()
{
	system("cls");//清屏
	cout << "\t\t" << "*********** -圖書管理主菜單- ***********" << endl << endl;
	cout << "\t\t" << "***********   1.圖書管理     ***********" << endl;
	cout << "\t\t" << "***********   2.讀者管理     ***********" << endl;
	cout << "\t\t" << "***********   3.借還書登記   ***********" << endl;
	cout << "\t\t" << "***********   0.退出系統(tǒng)     ***********" << endl << endl;
	cout << "\t\t" << "請選擇項目:";
}
void ShowBookMenu()
{
	system("cls");//清屏
	cout << "\t\t" << "*********** -圖書管理子菜單- ***********" << endl << endl;
	cout << "\t\t" << "***********   1.顯示圖書     ***********" << endl;
	cout << "\t\t" << "***********   2.添加圖書     ***********" << endl;
	cout << "\t\t" << "***********   3.查找圖書     ***********" << endl;
	cout << "\t\t" << "***********   4.刪除圖書     ***********" << endl;
	cout << "\t\t" << "***********   5.修改圖書     ***********" << endl;
	cout << "\t\t" << "***********   0.返回主菜單   ***********" << endl << endl;
	cout << "\t\t" << "請選擇項目:";
}
void ShowReaderMenu()
{
	system("cls");//清屏
	cout << "\t\t" << "*********** -讀者管理子菜單- ***********" << endl << endl;
	cout << "\t\t" << "***********   1.顯示讀者     ***********" << endl;
	cout << "\t\t" << "***********   2.添加讀者     ***********" << endl;
	cout << "\t\t" << "***********   3.查找讀者     ***********" << endl;
	cout << "\t\t" << "***********   4.刪除讀者     ***********" << endl;
	cout << "\t\t" << "***********   5.修改讀者     ***********" << endl;
	cout << "\t\t" << "***********   0.返回主菜單   ***********" << endl << endl;
	cout << "\t\t" << "請選擇項目:";
}
void ShowBorrowReturnMenu()
{
	system("cls");//清屏
	cout << "\t\t" << "***********  -借還書子菜單-  ***********" << endl << endl;
	cout << "\t\t" << "***********   1.借書登記     ***********" << endl;
	cout << "\t\t" << "***********   2.還書登記     ***********" << endl;
	cout << "\t\t" << "***********   0.返回主菜單   ***********" << endl << endl;
	cout << "\t\t" << "請選擇項目:";
}

//讀文件到內(nèi)存中,再內(nèi)存中操作
int ReadBookFile(const char* pcMode)
{
	int BookRecond = 0;
	FILE* pfBook;//文件指針
	pfBook = fopen("G:\\book.txt", pcMode);
	if (pfBook == NULL)
	{
		return -1;
	}
	while (!feof(pfBook))//讀文件末尾
	{
		if (fread(&astBook[BookRecond], LEN_BOOK, 1, pfBook))
		{
			BookRecond++;
		}
	}
	fclose(pfBook);
	return BookRecond;
}

//顯示圖書信息
void ShowBook()
{
	int BookRecord;//記錄條數(shù)
	system("cls");
	BookRecord = ReadBookFile("rb");//讀文件
	if (BookRecord == -1)
	{
		cout << "\t文件打開失敗,請?zhí)砑訄D書信息" << endl;

	}
	if (BookRecord == 0)
	{
		cout << "\t文件中沒有圖書信息" << endl;

	}
	else
	{
		cout << endl << "\t**********************************************************" << endl << endl << endl;
		cout << "\t\t" << "編號" << "\t書名" << "\t作者" << "\t出版社" << "\t庫存" << endl;
		for (int i = 0; i < BookRecord; i++)
		{
			cout << "\t\t" << astBook[i].Num << "\t" << astBook[i].Name << "\t" << astBook[i].Auther << "\t" << astBook[i].Press << "\t" << astBook[i].Amount << endl;
			
		}
		cout << endl << endl << "\t**********************************************************" << endl;

	}
}


//添加圖書信息
void AddBook()
{
	FILE* pfBook;
	int BookRecord;
	int	FlagExist;//圖書編號存在標記
	char Flag;//記錄y/n選項
	system("cls");
	BookRecord = ReadBookFile("ab+");//ab+追加方式打開或新建二進制文件
	if (BookRecord == -1)
	{
		cout << "\t文件打開失敗" << endl;
		return;
	}
	else if (BookRecord == 0)
	{
		cout << "\t沒有圖書信息" << endl;
	}
	else
	{
		ShowBook();//如果圖書記錄不為0則顯示所有圖書
	}

	//循環(huán)錄入圖書信息
	cout << "\t是否輸入信息(y/n)";
	cin >> Flag;
	cout << endl;
	if (Flag == 'n')
	{
		return;
	}
	pfBook = fopen("G:\\book.txt", "ab+");
	if (pfBook == NULL)
	{
		cout << "\t文件打開失敗" << endl;
		return;
	}
	while (Flag == 'y')
	{
		//錄入數(shù)據(jù)
		if (BookRecord >= BOOK_NUM)
		{
			cout << "\t錄入已滿" << endl;
			fclose(pfBook);
			return;
		}
		//圖書編號不能重復
		cout << "\t請輸入圖書編號:";

		do {
			FlagExist = 0;
			cin >> astBook[BookRecord].Num;
			cout << endl;

			for (int i = 0; i < BookRecord; i++)//循環(huán)判斷圖書編號,直到編號不重復為止 
			{
				if (astBook[i].Num == astBook[BookRecord].Num)
				{
					FlagExist = 1;
					cout << "\t該圖書編號已經(jīng)存在,請重新輸入編號:";
					break;
				}
			}
		} while (FlagExist == 1);
		
			cout << "\t請輸入圖書名稱:";
			cin >> astBook[BookRecord].Name;
			cout << endl;

			cout << "\t請輸入圖書作者:";
			cin >> astBook[BookRecord].Auther;
			cout << endl;

			cout << "\t請輸入圖書出版社:";
			cin >> astBook[BookRecord].Press;
			cout << endl;

			cout << "\t請輸入圖書庫存量:";
			cin >> astBook[BookRecord].Amount;
			cout << endl;
		
		
		//將新增的圖書信息寫入到文件中
		if (fwrite(&astBook[BookRecord], LEN_BOOK, 1, pfBook) != 1)
		{
			cout << "\t無法保存該信息" << endl;
			return;
		}
		else
		{
			cout << "\t" << astBook[BookRecord].Num << "號圖書信息已經(jīng)保存" << endl;
			BookRecord++;
		}

		cout << endl;
		cout << "\t是否繼續(xù)輸入信息(y/n):";
		cin >> Flag;
		cout << endl;
	}
	fclose(pfBook);
	if (Flag != 'y' && Flag != 'n')
	{
		cout << "\t輸入錯誤,請退出重新輸入" << endl;
	}
	else
	{
		cout << "\t成功添加圖書" << endl;
	}

}

//查找圖書信息
int SearchBook()
{
	int i;
	int BookRecord;
	int BookNum;//需要查找的ID
	int BookID = 0;//查找到的ID
	system("cls");
	BookRecord = ReadBookFile("rb");
	if (BookRecord == -1)
	{
		cout << "\t文件打開失敗" << endl;
		cout << endl << "按任意鍵返回" << endl;
		_getch();
		return -2;//文件打開失敗,返回-2
	}
	else if (BookRecord == 0)
	{
		cout << "\t沒有圖書記錄" << endl;
		cout << endl << "按任意鍵返回" << endl;
		_getch();
		return -3;//文件打開失敗,返回-3
	}

	//進行查找
	cout << "\t請輸入圖書編號:";
	cin >> BookNum;
	cout << endl;

	for (i = 0; i < BookRecord; i++)
	{
		if (BookNum == astBook[i].Num)
		{
			BookID = i;//找到后返回記錄編號
			cout << "\t\t" << "編號" << "\t書名" << "\t作者" << "\t出版社" << "\t庫存" << endl;
			cout << "\t\t" << astBook[i].Num << "\t" << astBook[i].Name << "\t" << astBook[i].Auther << "\t" << astBook[i].Press << "\t" << astBook[i].Amount << endl;
			break;
		}
	}
	if (i == BookRecord)
	{
		cout << "\t找不到" << BookNum << "號圖書信息";
		BookID = -1;
	}
	return BookID;
}

//刪除圖書信息
void DeleteBook()
{
	FILE* pfbook;
	int BookID;
	int BookRecord;
	char Flag;

	system("cls");
	BookID = SearchBook();
	cout << endl;
	//文件打開失敗
	if (BookID == -1)
	{
		return;
	}
	if (BookID == -3)
	{
		return;
	}

	BookRecord = ReadBookFile("rb");
	cout << "\t已經(jīng)找到該圖書,是否刪除(y/n):";
	cin >> Flag;
	cout << endl;
	
	int index = astBook[BookID].Num;//刪除的信息編號

	//把要刪除的記錄后的數(shù)組全部向前移動一位,然后再寫入文件中
	if (Flag == 'n')
	{
		return;
	}
	else if (Flag == 'y')
	{
		for (int i = BookID; i < BookRecord - 1; i++)
		{
			astBook[i] = astBook[i + 1];
		}
		BookRecord--;
	}

	//寫入文件
	if (Flag == 'y')
	{
		pfbook = fopen("G:\\book.txt", "wb");
		if (pfbook != NULL)
		{
			for (int i = 0; i < BookRecord; i++)
			{
				if (fwrite(&astBook[i], LEN_BOOK, 1, pfbook) != 1)
				{
					cout << "\t無法保存該信息" << endl;
					return;
				}
			}
			fclose(pfbook);
			cout << "\t" << index << "號圖書信息已經(jīng)成功刪除" << endl;
		}
	}
	else
	{
		cout << "\t輸入錯誤,請退出重新輸入" << endl;
	}
}

//保存到文件中
void SaveBookFile(int BookID)
{
	FILE* pfbook;
	pfbook = fopen("G:\\book.txt", "rb+");
	if (pfbook != NULL)
	{
		fseek(pfbook, LEN_BOOK * BookID, SEEK_SET);
		if (fwrite(&astBook[BookID], LEN_BOOK, 1, pfbook) != 1)
		{
			cout << "\t無法保存該信息";
		}
	}
	fclose(pfbook);
}


//修改圖書信息
void ModifyBook()
{
	int BookID, BookRecord;
	int FlagExist;//圖書編號存在標記
	int item, Num;
	
	system("cls");
	BookID = SearchBook();
	cout << endl;
	//文件打開失敗
	if (BookID == -1)
	{
		return;
	}
	if (BookID == -3)
	{
		return;
	}
	//找到該序號的圖書,可以進行修改操作
	BookRecord = ReadBookFile("rb");

	//顯示修改選項的子菜單
	cout << endl << "\t1.編號  " << "2.書名  " << "3.作者  " << "4.出版社  " << "5.圖書庫存量" << endl << endl;
	cout << "\t請輸入需要修改的相應信息(輸入相應數(shù)字):";
	cin >> item;
	if (item > 5 || item < 1)
	{
		cout << endl << "\t輸入數(shù)字有誤,請退出重新輸入";
		return;
	}

	switch (item)
	{
	case 1:
		do {
			FlagExist = 0;
			cout << endl << "\t請輸入修改后的圖書編號:";
			cin >> Num;
			cout << endl;

			for (int i = 0; i < BookRecord; i++)
			{
				if (Num == astBook[i].Num && i != BookID)//數(shù)字和已有編號重復不行,更改的編號原來一樣可以
				{
					FlagExist = 1;
					cout << "\t輸入錯誤,該圖書編號已經(jīng)存在,請重新輸入" << endl;
					break;
				}
			}
		} while (FlagExist == 1);

		astBook[BookID].Num = Num;
		break;
	case 2:
		cout << endl << "\t請輸入修改后的圖書名稱:";
		cin >> astBook[BookID].Name;
		cout << endl;
		break;
	case 3:
		cout << endl << "\t請輸入修改后的圖書作者:";
		cin >> astBook[BookID].Auther;
		cout << endl;
		break;
	case 4:
		cout << endl << "\t請輸入修改后的圖書出版社:";
		cin >> astBook[BookID].Press;
		cout << endl;
		break;
	case 5:
		cout << endl << "\t請輸入修改后的圖書庫存量:";
		cin >> astBook[BookID].Amount;
		cout << endl;
		break;
	}
	//保存到文件中
	SaveBookFile(BookID);
	cout << "\t圖書信息修改成功";

}

//書籍管理系統(tǒng)
void MangaeBook()
{
	int item;
	ShowBookMenu();
	cin >> item;
	while (item)
	{
		switch (item)
		{
		case 1:
			ShowBook();//顯示圖書信息
			break;
		case 2:
			AddBook();//添加圖書信息
			break;
		case 3:
			SearchBook();//查找圖書信息
			break;
		case 4:
			DeleteBook();//刪除圖書信息
			break;
		case 5:
			ModifyBook();//修改圖書信息
			break;
		default:
			cout << "\t\t" << "輸入錯誤,請重新輸入" << endl;
			Sleep(1500);
			break;
		}
		cout << endl << "按任意鍵返回" << endl;
		_getch();//從控件中獲取字符而無需顯示
		ShowBookMenu();
		cin >> item;
	}
}


int ReadReaderFile(const char*fopenMode)
{
	int ReaderRecord = 0;
	FILE* pfReader;
	pfReader = fopen("G:\\reader.txt", fopenMode);
	if (pfReader == NULL)
	{
		return -1;
	}
	while (!feof(pfReader))//feof讀文件的末尾
	{
		if (fread(&astReader[ReaderRecord], LEN_READER, 1, pfReader))
		{
			ReaderRecord++;
		}
	}
	fclose(pfReader);
	return ReaderRecord;
}


//顯示讀者信息
void ShowReader()
{
	int ReaderRecord;//記錄條數(shù)
	system("cls");
	ReaderRecord = ReadReaderFile("rb");//讀文件
	if (ReaderRecord == -1)
	{
		cout << "\t文件打開失敗,請?zhí)砑幼x者信息" << endl;

	}
	if (ReaderRecord == 0)
	{
		cout << "\t文件中沒有讀者信息" << endl;

	}
	else
	{
		cout << endl << "\t*******************************************************************" << endl << endl << endl;
		cout << "\t\t" << "編號" << "\t姓名" << "\t性別" << "\t最大可借閱量" << "\t當前可借閱量"  << endl;
		for (int i = 0; i < ReaderRecord; i++)
		{
			cout << "\t\t" << astReader[i].Num << "\t" << astReader[i].Name << "\t" << astReader[i].Sex << "\t" << astReader[i].Max << "\t\t" << astReader[i].Amount << endl;

		}
		cout << endl << endl << "\t*******************************************************************" << endl;

	}
}

//添加讀者信息
void AddReader()
{
	FILE* pfReader;
	int ReaderRecord;
	int	FlagExist;//讀者編號存在標記
	char Flag;//記錄y/n選項

	system("cls");
	ReaderRecord = ReadReaderFile("ab+");//ab+追加方式打開或新建二進制文件
	if (ReaderRecord == -1)
	{
		cout << "\t文件打開失敗" << endl;
		return;
	}
	else if (ReaderRecord == 0)
	{
		cout << "\t沒有讀者信息" << endl;
	}
	else
	{
		ShowReader();//如果圖書記錄不為0則顯示所有讀者信息
	}

	//循環(huán)錄入圖書信息
	cout << "\t是否輸入信息(y/n)";
	cin >> Flag;
	cout << endl;

	if (Flag == 'n')
	{
		return;
	}
	pfReader = fopen("G:\\reader.txt", "ab+");
	if (pfReader == NULL)
	{
		cout << "\t文件打開失敗" << endl;
		return;
	}
	while (Flag == 'y')
	{
		//錄入數(shù)據(jù)
		if (ReaderRecord >= READER_NUM)
		{
			cout << "\t錄入已滿" << endl;
			fclose(pfReader);
			return;
		}
		//圖書編號不能重復
		cout << "\t請輸入讀者編號:";

		do {
			FlagExist = 0;
			cin >> astReader[ReaderRecord].Num;
			cout << endl;

			for (int i = 0; i < ReaderRecord; i++)//循環(huán)判斷圖書編號,直到編號不重復為止 
			{
				if (astReader[i].Num == astReader[ReaderRecord].Num)
				{
					FlagExist = 1;
					cout << "\t該讀者編號已經(jīng)存在,請重新輸入編號:";
					break;
				}
			}
		} while (FlagExist == 1);

		cout << "\t請輸入讀者姓名:";
		cin >> astReader[ReaderRecord].Name;
		cout << endl;

		cout << "\t請輸入讀者性別(F/M):";
		cin >> astReader[ReaderRecord].Sex;
		cout << endl;
		while (astReader[ReaderRecord].Sex != 0)
		{
			
			if (strcmp(astReader[ReaderRecord].Sex, "F") == 0 || strcmp(astReader[ReaderRecord].Sex, "M") == 0)
			{
				break;
			}
			cout << "\t輸入錯誤,只許輸入'F'或'M',請重新輸入";
			cin >> astReader[ReaderRecord].Sex;
			cout << endl;
		}

		cout << "\t請輸入讀者最大可借閱數(shù)量:";//todo可細化判斷數(shù)量
		cin >> astReader[ReaderRecord].Max;
		cout << endl;

		cout << "\t請輸入讀者當前可借閱數(shù)量:";//兩種一開始是相等的
		cin >> astReader[ReaderRecord].Amount;
		cout << endl;


		//將新增的讀者信息寫入到文件中
		if (fwrite(&astReader[ReaderRecord], LEN_READER, 1, pfReader) != 1)
		{
			cout << "\t無法保存該信息" << endl;
			return;
		}
		else
		{
			cout << "\t" << astReader[ReaderRecord].Num << "號讀者信息已經(jīng)保存" << endl;
			ReaderRecord++;
		}

		cout << endl;
		cout << "\t是否繼續(xù)輸入信息(y/n):";
		cin >> Flag;
		cout << endl;
	}
	fclose(pfReader);
	if (Flag != 'y' && Flag != 'n')
	{
		cout << "\t輸入錯誤,請退出重新輸入" << endl;
	}
	else
	{
		cout << "\t成功添加讀者信息" << endl;
	}
}

//查找圖讀者信息
int SearchReader()
{
	int i;
	int ReaderRecord;
	int ReaderNum;//需要查找的ID
	int ReaderID = 0;//查找到的ID

	system("cls");
	ReaderRecord = ReadReaderFile("rb");
	if (ReaderRecord == -1)
	{
		cout << "\t文件打開失敗" << endl;
		cout << endl << "按任意鍵返回" << endl;
		_getch();
		return -2;//文件打開失敗,返回-2
	}
	else if (ReaderRecord == 0)
	{
		cout << "\t沒有讀者記錄" << endl;
		cout << endl << "按任意鍵返回" << endl;
		_getch();
		return -3;//文件打開失敗,返回-3
	}

	//進行查找
	cout << "\t請輸入讀者編號:";
	cin >> ReaderNum;
	cout << endl;

	for (i = 0; i < ReaderRecord; i++)
	{
		if (ReaderNum == astReader[i].Num)
		{
			ReaderID = i;//找到后返回記錄編號
			cout << "\t\t" << "編號" << "\t姓名" << "\t性別" << "\t最大可借閱數(shù)量" << "\t當前可借閱的數(shù)量" << endl;
			cout << "\t\t" << astReader[i].Num << "\t" << astReader[i].Name << "\t" << astReader[i].Sex << "\t" << astReader[i].Max << "\t\t" << astReader[i].Amount << endl;
			break;
		}
	}
	if (i == ReaderRecord)
	{
		cout << "\t找不到" << ReaderNum << "號讀者信息";
		ReaderID = -1;
	}
	return ReaderID;
}

//刪除讀者信息
void DeleteReader()
{
	FILE* pfReader;
	int ReaderID;
	int ReaderRecord;
	char Flag;

	system("cls");
	ReaderID = SearchReader();
	cout << endl;
	//文件打開失敗
	if (ReaderID == -1)
	{
		return;
	}
	if (ReaderID == -3)
	{
		return;
	}

	ReaderRecord = ReadReaderFile("rb");
	cout << "\t已經(jīng)找到該讀者,是否刪除(y/n):";
	cin >> Flag;
	cout << endl;

	int index = astReader[ReaderID].Num;//刪除的信息編號

	//把要刪除的記錄后的數(shù)組全部向前移動一位,然后再寫入文件中
	if (Flag == 'n')
	{
		return;
	}
	else if (Flag == 'y')
	{
		for (int i = ReaderID; i < ReaderRecord - 1; i++)
		{
			astReader[i] = astReader[i + 1];
		}
		ReaderRecord--;
	}

	//寫入文件
	if (Flag == 'y')
	{
		pfReader = fopen("G:\\reader.txt", "wb");
		if (pfReader != NULL)
		{
			for (int i = 0; i < ReaderRecord; i++)
			{
				if (fwrite(&astReader[i], LEN_READER, 1, pfReader) != 1)
				{
					cout << "\t無法保存該信息" << endl;
					return;
				}
			}
			fclose(pfReader);
			cout << "\t" << index << "號圖書信息已經(jīng)成功刪除" << endl;
		}
	}
	else
	{
		cout << "\t輸入錯誤,請退出重新輸入" << endl;
	}
}


//保存到文件中
void SaveReaderFile(int ReaderID)
{
	FILE* pfReader;
	pfReader = fopen("G:\\reader.txt", "rb+");
	if (pfReader != NULL)
	{
		fseek(pfReader, LEN_READER * ReaderID, SEEK_SET);
		if (fwrite(&astReader[ReaderID], LEN_READER, 1, pfReader) != 1)
		{
			cout << "\t無法保存該信息";
		}
	}
	fclose(pfReader);
}



//修改讀者信息
void ModifyReader()
{
	int ReaderID, ReaderRecord;
	int item, Num, Max;
	int FlagExist;
	int Borrow;//已經(jīng)借閱的書數(shù)目

	system("cls");
	ReaderID = SearchReader();
	cout << endl;
	if (ReaderID == -1)
	{
		return;
	}
	if (ReaderID == -3)
	{
		return;
	}

	//找到該序號讀者后進行修改
	ReaderRecord = ReadReaderFile("rb");
	
	//顯示修改選項的子菜單
	cout << endl << "\t\t" << "1.編號" << "\t2.姓名" << "\t3.性別" << "\t4.最大可借閱數(shù)量" << endl;
	cout << endl << "\t請輸入需要修改的相應信息(輸入相應數(shù)字):";
	cin >> item;
	if (item > 4 || item < 1)
	{
		cout << endl << "\t輸入數(shù)字有誤,請退出重新輸入";
		return;
	}

	switch (item)
	{
	case 1:
		do {
			FlagExist = 0;
			cout << endl << "\t請輸入修改后的讀者編號:";
			cin >> Num;
			cout << endl;

			for (int i = 0; i < ReaderRecord; i++)
			{
				if (Num == astReader[i].Num && i != ReaderID)//數(shù)字和已有編號重復不行,更改的編號原來一樣可以
				{
					FlagExist = 1;
					cout << "\t輸入錯誤,該讀者編號已經(jīng)存在,請重新輸入" << endl;
					break;
				}
			}
		} while (FlagExist == 1);

		astReader[ReaderID].Num = Num;
		break;
	case 2:
		cout << endl << "\t請輸入修改后的讀者名稱:";
		cin >> astReader[ReaderID].Name;
		cout << endl;
		break;
	case 3:
		cout << endl << "\t請輸入修改后的讀者性別(F/M):";
		cin >> astReader[ReaderID].Sex;
		cout << endl;
		while (astReader[ReaderID].Sex != 0)
		{
			if (strcmp(astReader[ReaderID].Sex, "F") == 0 || strcmp(astReader[ReaderID].Sex, "M") == 0)
			{
				break;
			}
			cout << "\t輸入錯誤,只許輸入'F'或'M',請重新輸入";
			cin >> astReader[ReaderID].Sex;
			cout << endl;
		}
		break;
	case 4:
		Borrow = astReader[ReaderID].Max - astReader[ReaderID].Amount;
		cout << endl << "\t請輸入讀者最大可借閱的數(shù)量(范圍為20以內(nèi)):";
		cin >> Max;
		cout << endl;

		while (Max != -1)//bug輸入-1會退出
		{
			if (Max >= 0 && Max <= 20)
			{
				if (Borrow > Max)
				{
					cout << "\t請先還書!" << endl;
					return;
				}
				else
				{
					astReader[ReaderID].Max = Max;
					astReader[ReaderID].Amount = Max - Borrow;
					for (int i = Borrow; i < Max; i++)
					{
						astReader[ReaderID].BookId[i] = 0;
					}
					break;
				}
			}
			cout << "\t錯誤,讀者最大可借閱的書的范圍為20以內(nèi),請重新輸入:";
			cin >> Max;
			cout << endl;
		}
		break;
	}
	//保存到文件中
	SaveReaderFile(ReaderID);
	cout << "\t讀者信息修改成功";
}

//讀者管理模塊
//讀者已借閱的數(shù)量=Max-Amount
void MangaeReader()
{
	int item;
	ShowReaderMenu();
	cin >> item;
	while (item) 
	{
		switch (item)
		{
		case 1:
			ShowReader();//顯示讀者信息
			break;
		case 2:
			AddReader();//添加讀者信息
			break;
		case 3:
			SearchReader();//查找圖讀者信息
			break;
		case 4:
			DeleteReader();//刪除讀者信息
			break;
		case 5:
			ModifyReader();//修改讀者信息
			break;
		default:
			cout << "\t\t" << "輸入錯誤,請重新輸入" << endl;
			Sleep(1500);
			break;
		}
		cout << endl << "按任意鍵返回" << endl;
		_getch();//從控件中獲取字符而無需顯示
		ShowReaderMenu();
		cin >> item;
	}
}

//借書模塊
void BorrowBook()
{
	//讀者是否可以借書
	int BookID,ReaderID;
	int Borrow;//讀者當前借閱的書數(shù)

	system("cls");
	//輸入要借書的讀者編號,判斷編號是否存在,如果再顯示讀者的借閱的圖書信息
	ReaderID = SearchReader();
	cout << endl;
	if (ReaderID == -1)
	{
		return;
	}
	if (ReaderID == -3)
	{
		return;
	}
	

	Borrow = astReader[ReaderID].Max - astReader[ReaderID].Amount;
	if (Borrow == 0)
	{
		cout << "\t該讀者沒有借閱任何書" << endl;
	}
	else
	{
		cout << "\t該讀者借閱的圖書為:" << endl;
		for (int i = 0; i < Borrow; i++)
		{
			cout << "\t" << astReader[ReaderID].BookId[i] << endl;
		}
	}
	if (astReader[ReaderID].Amount == 0)
	{
		cout << "\t該讀者可借閱書數(shù)目為0,不能繼續(xù)借書" << endl;
	}
	

	//圖書是否可借閱
	cout << "\t按任意鍵進入選擇借閱圖書環(huán)節(jié):";
	_getch();
	BookID = SearchBook();
	if (BookID == -1)
	{
		return;
	}
	if (BookID == -3)
	{
		return;
	}
	if (astBook[BookID].Amount == 0)
	{
		cout << "\t該圖書庫存量為0,圖書不可借閱" << endl;
	}

	//借書
	astReader[ReaderID].BookId[Borrow] = astBook[BookID].Num;
	//圖書庫存-1
	astBook[BookID].Amount--;
	//當前讀者可借閱數(shù)量-1
	astReader[ReaderID].Amount--;

	SaveBookFile(BookID);
	SaveReaderFile(ReaderID);
	cout << "\t借書成功";
}

//還書模塊
void ReturnBook()
{
	int BookID, ReaderID;
	int Borrow;//讀者當前借閱的書數(shù)

	system("cls");
	//讀者
	ReaderID = SearchReader();
	cout << endl;
	if (ReaderID == -1)
	{
		return;
	}
	if (ReaderID == -3)
	{
		return;
	}

	Borrow = astReader[ReaderID].Max - astReader[ReaderID].Amount;
	if (Borrow == 0)
	{
		cout << "\t該讀者沒有借閱任何書,無需歸還" << endl;
	}
	else
	{
		cout << "\t該讀者借閱的圖書為:" << endl;
		for (int i = 0; i < Borrow; i++)
		{
			cout << "\t" << astReader[ReaderID].BookId[i] << endl;
		}
	}
	if (astReader[ReaderID].Amount == 0)
	{
		cout << "\t該讀者可借閱書數(shù)目為0,不能繼續(xù)借書" << endl;
	}


	//圖書
	cout << "\t按任意鍵進入選擇歸還圖書環(huán)節(jié):";
	_getch();
	BookID = SearchBook();
	if (BookID == -1)
	{
		return;
	}
	if (BookID == -3)
	{
		return;
	}

	int i;
	for (i = 0; i < Borrow; i++)
	{
		if (astReader[ReaderID].BookId[i] == astBook[BookID].Num)
		{
			//還書
			for (int j = i; j < Borrow - 1; j++)
			{
				astReader[ReaderID].BookId[j] = astReader[ReaderID].BookId[j + 1];
			}
			astReader[ReaderID].BookId[Borrow - 1] = 0;//清除最后一個信息

			//圖書庫存+1
			astBook[BookID].Amount++;
			//讀者可借閱數(shù)量+1
			astReader[ReaderID].Amount++;
			break;
		}
	}

	//如果借書列表里面沒有這本書
	if (i == Borrow)
	{
		cout << "\t該讀者沒有借閱這本書,無需歸還";
		return;
	}

	SaveBookFile(BookID);
	SaveReaderFile(ReaderID);
	cout << "\t還書成功";
	
}

//借還書模塊
void BorrowReturnManger()
{
	ShowBorrowReturnMenu();
	int item;
	cin >> item;
	
	while (item)
	{
		switch (item)
		{
		case 1:
			BorrowBook();//借書模塊
			break;
		case 2:
			ReturnBook();//還書模塊
			break;
		default:
			cout << "\t\t" << "輸入錯誤,請重新輸入" << endl;
			Sleep(1500);
			break;
		}
		cout << endl << "按任意鍵返回" << endl;
		_getch();//從控件中獲取字符而無需顯示
		ShowBorrowReturnMenu();
		cin >> item;
	}
}

int main()
{
	Menu();
	int item;
	cin >> item;
	while (item)
	{
		switch (item)
		{
		case 1:
			MangaeBook();//圖書管理模塊
			break;
		case 2:
			MangaeReader();//讀者管理模塊
			break;
		case 3:
			BorrowReturnManger();//借還書模塊
			break;
		default:
			cout << "\t\t" << "輸入錯誤,請重新輸入" << endl;
			Sleep(1500);
			break;
		}
		Menu();
		cin >> item;

	}
	return 0;
}

到了這里,關(guān)于期末大作業(yè)圖書管理系統(tǒng)(c++)源代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Android期末大作業(yè):使用AndroidStudio開發(fā)圖書管理系統(tǒng)APP(使用sqlite數(shù)據(jù)庫)

    Android期末大作業(yè):使用AndroidStudio開發(fā)圖書管理系統(tǒng)APP(使用sqlite數(shù)據(jù)庫)

    Android Studio開發(fā)項目圖書管理系統(tǒng)項目視頻展示: 點擊進入圖書管理系統(tǒng)項目視頻 現(xiàn)在是一個信息高度發(fā)達的時代,伴隨著科技的進步,文化的汲取,人們對于圖書信息的了解與掌握也達到了一定的高度。尤其是學生對于知識的渴求更是與日俱增。圖書館作為學生學習知識的

    2024年02月08日
    瀏覽(31)
  • PHP-MySQL圖書管理系統(tǒng)(附源代碼)

    PHP-MySQL圖書管理系統(tǒng)(附源代碼)

    本系統(tǒng)采用phpstudy開發(fā)平臺,采用PHP和MySQL數(shù)據(jù)庫進行開發(fā),開發(fā)工具為HBuilder。phpStudy是一個PHP調(diào)試環(huán)境的程序集成最新的 Apache+PHP+MySQL+phpMyAdmin,一次性安裝,無須配置即可使用,是非常方便、好用的PHP調(diào)試環(huán)境。(其他平臺均可)@@@文末有獲取方式 功能: 圖書部分: 圖書錄入

    2024年02月11日
    瀏覽(20)
  • JavaWeb期末項目 圖書館管理系統(tǒng)

    JavaWeb期末項目 圖書館管理系統(tǒng)

    1 項目基本信息 1.1 項目名稱 圖書館管理系統(tǒng) 1.2 開發(fā)運行環(huán)境 Window 10 64位 JDK 1.8.0 Eclipse 4.8版本 MySql 5.5 Tomcat 9.0 2 項目需求分析 2.1 學生登錄部分 (1)學生注冊:在進入圖書館前必須要登錄,如果沒有學號則要注冊,注冊時系統(tǒng)會將用戶填寫的學號與數(shù)據(jù)庫里面的數(shù)據(jù)對比,

    2024年02月10日
    瀏覽(31)
  • django的簡易的圖書管理系統(tǒng)jsp書店進銷存源代碼MySQL

    django的簡易的圖書管理系統(tǒng)jsp書店進銷存源代碼MySQL

    本項目為前幾天收費幫學妹做的一個項目,Java EE JSP項目,在工作環(huán)境中基本使用不到,但是很多學校把這個當作編程入門的項目來做,故分享出本項目供初學者參考。 django的簡易的圖書管理系統(tǒng) 系統(tǒng)有1權(quán)限:管理員 用所技術(shù) python3.10 django mysql5.6 注冊登錄和書籍信息的增刪

    2024年02月11日
    瀏覽(23)
  • MySQL數(shù)據(jù)庫期末項目 圖書館管理系統(tǒng)

    MySQL數(shù)據(jù)庫期末項目 圖書館管理系統(tǒng)

    1 項目需求分析 1.1 項目名稱 圖書館管理系統(tǒng) 1.2 項目功能 在以前大多部分圖書館都是由人工直接管理,其中每天的業(yè)務和操作流程非常繁瑣復雜,紙質(zhì)版的登記信息耗費了大量的人力物力。因此圖書館管理系統(tǒng)應運而生,該系統(tǒng)采用智能化設計,在業(yè)務流程的實現(xiàn)方面更加

    2023年04月18日
    瀏覽(22)
  • 基于java的圖書借閱管理系統(tǒng)設計與實現(xiàn)(源代碼+數(shù)據(jù)庫+部署文檔+部署視頻)

    基于java的圖書借閱管理系統(tǒng)設計與實現(xiàn)(源代碼+數(shù)據(jù)庫+部署文檔+部署視頻)

    ?????? 圖書管理系統(tǒng) 該系統(tǒng)對數(shù)據(jù)進行保存、修改、刪除等管理。為用戶提供了一個友好、簡單快捷的運行操作平臺。該統(tǒng)對數(shù)據(jù)進行保存、修改、刪除等管理,為用戶提供了一個友好、簡單快捷的運行操作平臺。本系統(tǒng)的各界面設計友好、流程正確、功能也較為完善,

    2024年02月03日
    瀏覽(29)
  • Android大作業(yè):安卓開發(fā)圖書管理系統(tǒng)APP

    Android大作業(yè):安卓開發(fā)圖書管理系統(tǒng)APP

    Android Studio開發(fā)項目圖書管理系統(tǒng)項目視頻展示: 點擊進入圖書管理系統(tǒng)項目視頻 現(xiàn)在是一個信息高度發(fā)達的時代,伴隨著科技的進步,文化的汲取,人們對于圖書信息的了解與掌握也達到了一定的高度。尤其是學生對于知識的渴求更是與日俱增。圖書館作為學生學習知識的

    2024年02月07日
    瀏覽(30)
  • 【javaweb課設源碼】圖書管理系統(tǒng)SSM Mysql 期末課設

    【javaweb課設源碼】圖書管理系統(tǒng)SSM Mysql 期末課設

    本系統(tǒng)使用Javaweb技術(shù)制作,數(shù)據(jù)庫為mysql 附帶論文報告文檔

    2024年02月09日
    瀏覽(27)
  • 期末考試還缺項目嗎?黑馬的圖書借閱管理系統(tǒng)很香

    期末考試還缺項目嗎?黑馬的圖書借閱管理系統(tǒng)很香

    提示:黑馬程序員的云借閱管理系統(tǒng), 后端ssm框架, 前端jQuery, layui,模板引擎為thymeleaf。 有需要的小伙伴可以三連, 我會私聊你發(fā)源碼。 提示:視頻觀看地址 bibi視頻項目展示 提示:管理員全部功能, 用戶部分功能 登錄分為管理員登錄, 普通用戶登錄, 不同身份登錄擁有的權(quán)限

    2024年02月12日
    瀏覽(21)
  • 基于ssm+vue.js+uniapp小程序的圖書管理系統(tǒng)附帶文章和源代碼部署視頻講解等

    基于ssm+vue.js+uniapp小程序的圖書管理系統(tǒng)附帶文章和源代碼部署視頻講解等

    ?? 博主介紹 :?CSDN特邀作者、985計算機專業(yè)畢業(yè)、某互聯(lián)網(wǎng)大廠高級全棧開發(fā)程序員、碼云/掘金/華為云/阿里云/InfoQ/StackOverflow/github等平臺優(yōu)質(zhì)作者、專注于Java、小程序、前端、python等技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn),以及程序定制化開發(fā)、全棧講解、就業(yè)輔導、面試輔導、簡

    2024年04月22日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包