图书借阅管理系统——C++版

这篇具有很好参考价值的文章主要介绍了图书借阅管理系统——C++版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

前言

一、总体结构

二、详细代码


前言

图书借阅管理系统的总体功能要求

图书借阅管理系统的总体目标:在Visual Studio 2022的开发环境下,利用所学C++语言和数据结构的相关知识,编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息等智能化管理过程。

主要分为两大功能:

  1. 图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
  2. 会员管理(增加会员、查询会员、删除会员、借书信息);

提示:以下是本篇文章正文内容,下面案例可供参考

一、总体结构

主函数、图书管理类、会员管理类

二、详细代码

1.主函数

constexpr auto PASSWORD = "password.txt";
#include<fstream>
#include<iostream>
using namespace std;
#include<string>
#include"BookManage.h"
#include"MemberManage.h"

//菜单界面
void menu() {
	cout << "\t 欢迎使用图书借阅系统" << endl;
	cout << "\t   1、图书管理" << endl;
	cout << "\t   2、会员管理" << endl;
	cout << "\t   3、修改密码" << endl;
	cout << "\t   0、退出系统" << endl;
	cout << endl;
}

//获取密码
string getpassword() {
	ifstream ifs;
	ifs.open(PASSWORD, ios::in);
	string val;
	string password;

	while (ifs>>val)
	{
		password = val;
	}

	ifs.close();
	return password;
}

//保存密码
void savepassword(string mima ) {
	ofstream ofs;
	ofs.open(PASSWORD, ios::out);

	ofs << mima;
	ofs.close();
}
//系统登录
bool password(string mima) {
	
	static string MiMa = getpassword();

	if (MiMa == mima)
	{
		return true;
	}
	else
	{
		cout << "密码输入错误!" << endl;
		system("pause");
		system("cls");
		return false;
	}
}



int main() 
{
	//登陆界面
	do
	{
		string mima;
		cout << "\n\n\n\n\t\t\t\t请输入登录密码:";
		cin >> mima;
		bool temp = password(mima);
		if (temp)
		{
			break;
		}
	} while (true);
	system("cls");

	//功能选择
	menu();

	do
	{
		int choice = 0;
		cout << "请输入功能号:";
		cin >> choice;

		static bool fanhui = false;
		system("pause");
		system("cls");

		switch (choice)
		{
		case 1: {
			BookManage book;
			do
			{
				int option;
				cout << "请输入功能号:";
				cin >> option;

				switch (option)
				{
				case 1:
					book.addbook();
					break;
				case 2:
					book.showbook();
					break;
				case 3:
					book.delete_book();
					break;
				case 4:
					book.modify_condition();
					break;
				case 5:
					book.search_book();
					break;
				case 6:
					fanhui = true;
					break;
				default:
					cout << "请输入正确的功能号!" << endl;
					break;
				}
			} while (!fanhui);
			system("cls");
			menu();
            fanhui = false;
			break;
		}
		case 2: 
		{
			MemberManage member;
			do
			{
				int option;
				cout << "请输入功能号:";
				cin >> option;

				switch (option)
				{
				case 1:
					member.add();
					break;
				case 2:
					member.show();
					break;
				case 3:
					member.delete_mem();
					break;
				case 4:
					member.modify();
					break;
				case 5:
					member.search();
					break;
				case 6:
					fanhui = true;
					break;
				default:
					cout << "请输入正确的功能号!" << endl;
					break;
				}
			} while (!fanhui);
			system("cls");
			menu();
            fanhui = false;
			break;
		}
		case 3:
		{
			do
			{
				string mima;
				cout << "\n\n\n\n\t\t\t\t请输入登录密码:";
				cin >> mima;
				bool temp = password(mima);
				if (temp)
				{
					cout << "请输入新密码:";
					string xin_Mima;
					cin >> xin_Mima;

					static string MiMa = xin_Mima;
					savepassword(xin_Mima);

					cout << "修改成功!新密码:" << MiMa << endl;

					break;
				}
			} while (true);
			menu();
			break;
		}
		case 0:
			system("pause");
			return 0;
		default:
			cout << "请输入正确的功能号!" << endl;
			break;
		}
	} while (true);

	return 0;
}

注释:程序包含密码登录功能。主函数写了获取密码、保存密码、密码核对、修改密码等功能函数。其中密码保存至项目文件夹下的password.txt中。

图书借阅管理系统——C++版

 

2.图书管理类

constexpr auto FILENAME ="bookfile.txt";
#include"BookManage.h"
#include<fstream>

BookManage::BookManage() {
	
	menu();
	
	//文件不存在
	ifstream ifs;
	ifs.open(FILENAME, ios::in);
	if (!ifs.is_open())
	{
		this->bookarray = NULL;
		this->arr_number = 0;
		this->file_empty = true;

		ifs.close();
		return;
	}

	//文件为空
	char c;
	ifs >> c;
	if (ifs.eof())
	{
		this->bookarray = NULL;
		this->arr_number = 0;
		this->file_empty = true;

		ifs.close();
		return;
	}

	//文件不为空
	this->arr_number = this->getbook_num();
	init_array();
	this->file_empty = false;
	
}

int BookManage::getbook_num() {
	ifstream ifs;
	ifs.open(FILENAME, ios::in);

	int number;
	string name;
	int price;
	int condition;

	int num = 0;
	while (ifs>>number && ifs>>name && ifs>>price &&ifs>>condition)
	{
		num++;
	}

	ifs.close();
	return num;
}

void BookManage::init_array() {
	ifstream ifs;
	ifs.open(FILENAME, ios::in);

	int number;
	string name;
	int price;
	int condition;

	int num = this->getbook_num();

	struct m_book* p = new m_book[num];
	int i = 0;
	while (ifs >> number && ifs >> name && ifs >> price && ifs >> condition)
	{
		p[i].m_number = number;
		p[i].m_name = name;
		p[i].m_price = price;
		p[i].m_condition = condition;

		i++;
	}
	this->bookarray = p;
	ifs.close();
}

BookManage::~BookManage() {
	if (this->bookarray != NULL)
	{
		delete[]this->bookarray;
		this->bookarray = NULL;
	}
}

void BookManage::menu() {
	cout << "\t   1、增添图书信息" << endl;
	cout << "\t   2、显示图书信息" << endl;
	cout << "\t   3、删除图书信息" << endl;
	cout << "\t   4、修改图书状态" << endl;
	cout << "\t   5、查找图书信息" << endl;
	cout << "\t   6、返回上一级界面" << endl;
	cout << endl;
}

void BookManage::addbook() {
	int val;
	cout << "请输入你要录入几本书的信息:";
	cin >> val;

	struct m_book* p;
	p = new m_book[val + arr_number];

	if (this->bookarray != NULL)
	{
		for(int i = 0; i<this->arr_number; ++i)
		{
			p[i].m_number = this->bookarray[i].m_number;
			p[i].m_name = this->bookarray[i].m_name;
			p[i].m_price = this->bookarray[i].m_price;
			p[i].m_condition = this->bookarray[i].m_condition;
		}
	}
	for (int i = this->arr_number ; i < val + this->arr_number; i++)
	{
		int number;
		string name;
		int price;
		bool condition;

		cout << "请输入书的编号:" << endl;
		cin >> number;
		p[i].m_number = number;

		cout << "请输入书的书名:" << endl;
		cin >> name;
		p[i].m_name = name;

		cout << "请输入书的价格:" << endl;
		cin >> price;
		p[i].m_price = price;

		cout << "请输入书的状态:  0、在馆   1、借出" << endl;
		cin >> condition;
		p[i].m_condition = condition;
	}

	delete[]this->bookarray;

	this->arr_number += val;
	this->bookarray = p;

	savefile();
	this->file_empty = false;

	cout << "录入成功!" << endl;

}

void BookManage::showbook() {
	for (int i = 0; i < this->arr_number; i++)
	{
		cout << "编号:" << this->bookarray[i].m_number << "\t";
		cout << "书名:" << this->bookarray[i].m_name << "\t";
		cout << "价格:" << this->bookarray[i].m_price << "\t";
		cout << "状态:" <<( this->bookarray[i].m_condition ? "借出" : "在馆") << endl;
	}
}

void BookManage::savefile() {
	ofstream ofs;
	ofs.open(FILENAME, ios::out);

	for (int i = 0; i < this->arr_number; i++)
	{
		ofs << this->bookarray[i].m_number << " "
			<< this->bookarray[i].m_name << " "
			<< this->bookarray[i].m_price << " "
			<< this->bookarray[i].m_condition << endl;
	}

	ofs.close();
	
}

int BookManage::index(int number) {
	for (int i = 0; i < this->arr_number; i++)
	{
		if (this->bookarray[i].m_number == number)
		{
			return i;
		}
	}
	return -1;
}

void BookManage::delete_book() {
	cout << "请输入所要删除的图书的编号:";
	int number;
	cin >> number;

	int val = index(number);
	if (val == -1)
	{
		cout << "馆内无该编号图书信息,删除失败!" << endl;
	}
	else
	{
		for (int i = val; i < this->arr_number; i++)
		{
			this->bookarray[i].m_number = this->bookarray[i + 1].m_number;
			this->bookarray[i].m_name = this->bookarray[i + 1].m_name;
			this->bookarray[i].m_price = this->bookarray[i + 1].m_price;
			this->bookarray[i].m_condition = this->bookarray[i + 1].m_condition;
		}

		this->arr_number--;
		savefile();
		cout << "删除成功!" << endl;
	}
}

void BookManage::modify_condition() {
	cout << "请输入所要修改的图书的编号:";
	int number;
	cin >> number;

	int val = index(number);
	if (val == -1)
	{
		cout << "馆内无该编号图书信息,修改失败!" << endl;
	}
	else
	{
		cout << "请选择该书的状态: 0、在馆  1、借出" << endl;
		bool m;
		cin >> m;

		this->bookarray[val].m_condition = m;
		savefile();
		cout << "修改成功!" << endl;
	}
}

void BookManage::search_book() {
	cout << "请选择查询方式: 1、按图书编号查询  2、按图书书名查询" << endl;
	int n;
	cin >> n;

	if (n == 1)
	{
		cout << "请输入图书的编号:";
		int number;
		cin >> number;

		int val = index(number);
		if (val == -1)
		{
			cout << "馆内无该编号图书信息,查找失败!" << endl;
		}
		else
		{
			cout << "编号:" << this->bookarray[val].m_number << "\t"
				<< "书名:" << this->bookarray[val].m_name << "\t"
				<< "价格:" << this->bookarray[val].m_price << "\t"
				<< "状态:" << (this->bookarray[val].m_condition ? "借出" : "在馆") << endl;
		}
	}
	if (n == 2)
	{
		cout << "请输入图书名:";
		string name;
		cin >> name;

		int sign = 0;
		for (int i = 0; i < this->arr_number; i++)
		{
			if(this->bookarray[i].m_name == name)
			{
				cout << "编号:" << this->bookarray[i].m_number << "\t"
					<< "书名:" << this->bookarray[i].m_name << "\t"
					<< "价格:" << this->bookarray[i].m_price << "\t"
					<< "状态:" << (this->bookarray[i].m_condition ? "借出" : "在馆") << endl;
				++sign;
			}
		}
		if (sign == 0)
		{
			cout << "馆内无该书名的图书,查找失败!" << endl;
		}
	}
}

3.会员管理类

#include"MemberManage.h"
#include<fstream>


MemberManage::MemberManage() {
	menu();

	//文件不存在
	ifstream ifs;
	ifs.open("member.txt", ios::in);
	if (!ifs.is_open())
	{
		this->mem_array = NULL;
		this->array_num = 0;
		this->file_empty = true;

		ifs.close();
		return;
	}

	//文件为空
	char c;
	ifs >> c;
	if (ifs.eof())
	{
		this->mem_array = NULL;
		this->array_num = 0;
		this->file_empty = true;

		ifs.close();
		return;
	}

	//文件不为空
	this->array_num = this->get_num();
	init_array();
	this->file_empty = false;

}

MemberManage::~MemberManage() {
	if (this->mem_array != NULL)
	{
		delete[]this->mem_array;
		this->mem_array = NULL;
	}
}


void MemberManage::menu() {
	cout << "\t   1、增添会员信息" << endl;
	cout << "\t   2、显示会员信息" << endl;
	cout << "\t   3、删除会员信息" << endl;
	cout << "\t   4、修改借书信息" << endl;
	cout << "\t   5、查找会员信息" << endl;
	cout << "\t   6、返回上一级界面" << endl;
	cout << endl;
}

int MemberManage::get_num() {
	ifstream ifs;
	ifs.open("member.txt", ios::in);

	int id;
	string name;
	int sex;
	string imfo;

	int num = 0;
	while (ifs >> id && ifs >> name && ifs >> sex && ifs >> imfo)
	{
		num++;
	}

	ifs.close();
	return num;
}

void MemberManage::init_array() {
	ifstream ifs;
	ifs.open("member.txt", ios::in);

	int id;
	string name;
	int sex;
	string imfo;

	int num = this->get_num();

	struct m_member* p = new m_member[num];
	int i = 0;
	while (ifs>>id && ifs>>name && ifs>>sex && ifs>>imfo)
	{
		p[i].id = id;
		p[i].name = name;
		p[i].sex = sex;
		p[i].imfo = imfo;

		i++;
	}

	this->mem_array = p;
	ifs.close();
}

void MemberManage::save() {
	ofstream ofs;
	ofs.open("member.txt", ios::out);

	for (int i = 0; i < this->array_num; i++)
	{
		ofs << this->mem_array[i].id << " "
			<< this->mem_array[i].name << " "
			<< this->mem_array[i].sex << " "
			<< this->mem_array[i].imfo << endl;
	}

	ofs.close();
}

void MemberManage::add(){
	int id;
	string name;
	int sex;
	string imfo;

	cout << "请输入会员卡号:" ;
	cin >> id;
	cout << "请输入会员姓名:";
	cin >> name;
	cout << "请选择会员性别: 1、男   2女    ";
	cin >> sex;
	cout << "请输入会员的借阅信息:";
	cin >> imfo;

	if (this->mem_array == NULL)
	{
		this->mem_array = new m_member;
	}
	int num = this->get_num();
	
	struct m_member* p = new m_member[num + 1];
	for (int i = 0; i < num; i++)
	{
		p[i].id = this->mem_array[i].id;
		p[i].name = this->mem_array[i].name;
		p[i].sex = this->mem_array[i].sex;
		p[i].imfo = this->mem_array[i].imfo;
	}
	p[num].id = id;
	p[num].name = name;
	p[num].sex = sex;
	p[num].imfo = imfo;

	delete[]this->mem_array;

	this->mem_array = p;

	this->array_num++;

	
	save();

	cout << "录入成功!" << endl;
}

void MemberManage::show() {
	for (int i = 0; i < this->array_num; i++)
	{
		cout << "卡号:" << this->mem_array[i].id << "\t";
		cout << "姓名:" << this->mem_array[i].name << "\t";
		cout << "性别:" << (this->mem_array[i].sex == 1 ? "男" : "女") << "\t";
		cout << "借阅信息:" << this->mem_array[i].imfo << endl;
	}
}

int MemberManage::index(int id) {
	for (int i = 0; i < this->array_num; i++)
	{
		if (this->mem_array[i].id == id)
		{
			return i;
		}
	}
	return -1;
}

void MemberManage::delete_mem() {
	cout << "请输入会员的卡号:" << endl;
	int id;
	cin >> id;

	int m = index(id);
	if (m == -1)
	{
		cout << "系统内无相应卡号持有者的信息,删除失败!" << endl ;
	}
	else
	{
		for (int i = m; i < this->array_num; i++)
		{
			this->mem_array[i].id = this->mem_array[i + 1].id;
			this->mem_array[i].name = this->mem_array[i + 1].name;
			this->mem_array[i].sex = this->mem_array[i + 1].sex;
			this->mem_array[i].imfo = this->mem_array[i + 1].imfo;
		}

		this->array_num--;
		save();
		cout << "删除成功!" << endl;
	}
}

void MemberManage::search() {
	cout << "请输入会员的卡号:" << endl;
	int id;
	cin >> id;

	int m = index(id);
	if (m == -1)
	{
		cout << "系统内无相应卡号持有者的信息,搜索失败!" << endl;
	}
	else
	{
		cout << "卡号:" << this->mem_array[m].id << "\t"
			<< "姓名:" << this->mem_array[m].name << "\t"
			<< "性别:" << (this->mem_array[m].sex == 1 ? "男" : "女") << "\t"
			<< "借阅信息:" << this->mem_array[m].imfo;

		this->array_num--;
	}
}

void MemberManage::modify() {
	cout << "请输入会员的卡号:" << endl;
	int id;
	cin >> id;

	int m = index(id);
	if (m == -1)
	{
		cout << "系统内无相应卡号持有者的信息,修改失败!" << endl;
	}
	else
	{
		cout << "会员为姓名:" << this->mem_array[m].name << endl;
		cout << "请输入该会员的新的借阅信息:" << endl;
		string imfo;
		cin >> imfo;
		
		this->mem_array[m].imfo = imfo;
		save();
		cout << "修改成功!" << endl;
	}
}

图书借阅管理系统——C++版

图书借阅管理系统——C++版 图书借阅管理系统——C++版文章来源地址https://www.toymoban.com/news/detail-506950.html

到了这里,关于图书借阅管理系统——C++版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于SSM框架的借阅图书管理系统

    目录 一、功能 二、开发环境 三、系统项目文件组织结构 四、数据库设计 1.用户表 2.图书表 3.借阅记录表 五、页面展示 1.登录页面 2.用户端 3.管理员端 六、源码 本系统后台使用SSM框架编写,前台页面使用当前主流的Bootstrap和jQuery框架编写。 借阅图书管理系统主要实现了两

    2024年02月09日
    浏览(59)
  • 云借阅图书管理系统的测试项目实践

    项目背景:通过学习到的 SSM(Spring + SpringMVC + MyBatis)框架知识来实现一个前后端分离的云借阅图书管理系统。 目标:完成系统搭建,用户和图书相关模块编写,在 SSM 框架整合的基础上实现系统功能。 时间:2022-11-30 到 2022-12-26。 项目成员: 项目经理:lyg 产品经理:cch 开

    2024年02月10日
    浏览(58)
  • python+django在线借阅图书管理系统vue

    本论文是以构建图书借阅为目标,使用  django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块,图书归还模块,管理员登录等)以及后台数据库管理。从网站设计到具

    2024年02月07日
    浏览(56)
  • 云借阅图书管理系统[基于SSM框架的项目]

    SSM框架本学期也是刚进行完答辩,在云借阅图书管理系统的基础功能上 新增了一些功能 用来作为SSM框架的大作业进行的答辩。也是对 MyBatis框架、Spring框架、Spring MVC框架 的注解开发有了一定的理解。下面给大家展示效果图,有对这个项目感兴趣的可以到我的 下载资源 里下

    2024年02月05日
    浏览(113)
  • 第七章:借阅管理【基于Servlet+JSP的图书管理系统】

    1.1 查询借书卡   借书卡在正常的 CRUD 操作的基础上,我们还需要注意一些特殊的情况。查询信息的时候。如果是管理员则可以查询所有的信息,如果是普通用户则只能查看自己的信息。这块的控制在登录的用户信息 然后就是在Dao中处理的时候需要考虑根据当前登录用户查

    2024年02月11日
    浏览(51)
  • 基于Java的图书借阅网站, java+springboot+vue开发的图书借阅管理系统 - 毕业设计 - 课程设计

    本程序实现图书的智能化、信息化和简单化;实现图书信息的增加、删除、修改、查找、借阅、还书、收藏的显示操作及实时数据库的提交和更改和对普通用户的增、删、改、查;提高图书管理员工作信息报送及反馈的工作效率,减轻管理员的劳动负担;提高信息的及时性和

    2024年04月28日
    浏览(67)
  • 基于Java+SpringBoot+vue实现图书借阅管理系统

    🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国

    2024年01月25日
    浏览(78)
  • 基于VUE的图书借阅管理系统的设计与实现

    目录 一、摘要 二、技术描述 三、部分截图 四、获取方式         随着我国经济的高速发展,人们对图书的需求也愈发旺盛,而传统图书管理模式存在以下弊端:信息存储和分类操作不够高效,导致查找书籍困难;借还书流程繁琐,工作量大;图书统计和更新困难,无法

    2024年02月07日
    浏览(63)
  • 【计算机毕业设计】图书馆借阅管理系统

    一、系统截图(需要演示视频可以私聊)         摘  要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、

    2024年02月09日
    浏览(74)
  • 期末考试还缺项目吗?黑马的图书借阅管理系统很香

    提示:黑马程序员的云借阅管理系统, 后端ssm框架, 前端jQuery, layui,模板引擎为thymeleaf。 有需要的小伙伴可以三连, 我会私聊你发源码。 提示:视频观看地址 bibi视频项目展示 提示:管理员全部功能, 用户部分功能 登录分为管理员登录, 普通用户登录, 不同身份登录拥有的权限

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包