图书管理系统(小白也能懂)

本人大一,正在学习c与c++程序设计,教员布置了这个作业,所以通过查资料和不断尝试,最终完成了这几个操作。

1:添加图书
2:删除图书
3:打印所有图书
4:打印未被借走的图书
5:打印已经借走的图书
6:添加读者
7:删除读者
8:打印所有读者信息
9:借书
10:还书
11:显示借书列表
12:结束操作

运用的知识也很简单,主要是类与结构体。所以,只要入门了就读的懂(毕竟,我也刚刚学,现在老师还在前面讲c++呢)话不多说,上代码!

头文件!!!!!!主要定义类。 

#pragma once
#ifndef BOOKMANAGE_H
#define BOOKMANAGE_H
struct books 
{
	char name[100];
	bool state; //state为0表示未被借出,state为1表示已被借出
};

struct readers
{
	char name[50];
};

class Book_manage
{
private:
	books* book;//图书信息
	readers* reader;//读者信息
	int b_size;
	int b_total;
	int r_size;
	int r_total;


public:
	Book_manage(int size_b,int size_r);//书本最大容量
	//Book_manage(const Book_manage& t);

	~Book_manage();

	//添加图书
	void Add_book(books b);

	//删除图书
	void Delete_book();

	//打印所有图书
	void Printf_books();

	//打印未被借走的图书
	void Printf_books_0();

	//打印已经借走的图书
	void Printf_books_1();

	//添加读者
	void Add_reader();

	//删除读者
	void Delete_reader();

	//打印所有读者信息
	void Printf_readers();

	//借书
	void Borrow_book();

	//还书
	void Return_book();

	//显示借书列表
	void Printf_books_00();

};

#endif

定义类里的函数!!!!太长了。呜呜┭┮﹏┭┮

#include"Book_manage.h"
#include<iostream>
#include <cstring>
using namespace std;

Book_manage::Book_manage(int size_b, int size_r)
{
	book = new books[size_b];//图书信息
	reader = new readers[size_r];//读者信息
	b_size = size_b;
	r_size = size_r;
	b_total = 0;
	r_total = 0;
}

Book_manage::~Book_manage()
{
	delete[] book;
	delete[] reader;
}

//添加图书
void Book_manage::Add_book(books b)
{
	if (b_total < b_size)
	{
		book[b_total] = b;
		b_total++;
		cout << "添加图书成功!" << endl;
	}
	else
	{
		cout << "抱歉,书库已满,无法添加新书。" << endl;
	}
}

//删除图书
void Book_manage::Delete_book()
{
	if (b_total > 0) {
		for (int i = 0; i < b_total; i++) {
			cout << i + 1 << ":" << book[i].name << endl;
		}
		cout << "请输入要删除的书籍编号:";
		int num;
		cin >> num;
		if (num >= 1 && num <= b_total) {
			for (int i = num - 1; i < b_total - 1; i++) {
				book[i] = book[i + 1];
			}
			b_total--;
			cout << "删除书籍成功!" << endl;
		}
		else {
			cout << "输入的书籍编号无效。" << endl;
		}
	}
	else {
		cout << "当前书库里没有书籍。" << endl;
	}
}

//打印所有图书
void Book_manage::Printf_books()
{
	if (b_total > 0)
	{
		cout << "---书库里的所有书籍---" << endl;
		for (int i = 0; i < b_total; i++)
		{
			cout << i + 1 << ":" << book[i].name;
			if (book[i].state == 0)
			{
				cout << "(未借出)" << endl;
			}
			else
			{
				cout << "(已借出)" << endl;
			}
		}
	}
	else
	{
		cout << "书库里没有书籍。" << endl;
	}
}

//打印未被借走的图书
void Book_manage::Printf_books_0()
{
	bool empty = true;
	for (int i = 0; i < b_total; i++) {
		if (book[i].state == 0) {
			cout << i + 1 << ":" << book[i].name << endl;
			empty = false;
		}
	}
	if (empty) {
		cout << "书库里没有未借出的书籍。" << endl;
	}
}

//打印已经借走的图书
void Book_manage::Printf_books_1()
{
	bool empty = true;
	for (int i = 0; i < b_total; i++) {
		if (book[i].state == 1) {
			cout << i + 1 << ":" << book[i].name << endl;
			empty = false;
		}
	}
	if (empty) {
		cout << "书库里没有已借出的书籍。" << endl;
	}
}

//添加读者
void Book_manage::Add_reader()
{
	if (r_total < r_size) {
		cout << "请输入读者姓名:";
		cin >> reader[r_total].name;
		r_total++;
		cout << "添加读者信息成功!" << endl;
	}
	else {
		cout << "抱歉,读者信息库已满,无法添加新的读者信息。" << endl;
	}
}

//删除读者
void Book_manage::Delete_reader()
{
	if (r_total > 0) {
		for (int i = 0; i < r_total; i++) {
			cout << i + 1 << ":" << reader[i].name << endl;
		}
		cout << "请输入要删除的读者编号:";
		int num;
		cin >> num;
		if (num >= 1 && num <= r_total)
		{
			for (int i = num - 1; i < r_total - 1; i++)
			{
				reader[i] = reader[i + 1];
			}
			r_total--;
			cout << "删除读者信息成功!" << endl;
		}
		else
		{
			cout << "输入的读者编号无效。" << endl;
		}
	}
	else {
		cout << "当前没有读者信息。" << endl;
	}
}

//打印所有读者信息
void Book_manage::Printf_readers()
{
	if (r_total > 0) {
		cout << "---所有读者信息---" << endl;
		for (int i = 0; i < r_total; i++) {
			cout << i + 1 << ":" << reader[i].name << endl;
		}
	}
	else {
		cout << "暂无读者信息。" << endl;
	}
}

//借书
void Book_manage::Borrow_book()
{
	if (b_total > 0 && r_total > 0) {
		for (int i = 0; i < b_total; i++) {
			cout << i + 1 << ":" << book[i].name << endl;
		}
		cout << "请输入您要借阅的书籍编号:";
		int num;
		cin >> num;
		if (num >= 1 && num <= b_total) {
			if (book[num - 1].state == 0) {
				for (int i = 0; i < r_total; i++) {
					cout << i + 1 << ":" << reader[i].name << endl;
				}
				cout << "请输入您的编号:";
				int reader_num;
				cin >> reader_num;
				if (reader_num >= 1 && reader_num <= r_total) {
					book[num - 1].state = 1;
					cout << "借阅成功!" << endl;
				}
				else {
					cout << "输入的编号无效。" << endl;
				}
			}
			else {
				cout << "该书籍已经被借走了。" << endl;
			}
		}
		else {
			cout << "输入的书籍编号无效。" << endl;
		}
	}
	else {
		cout << "暂无书籍或读者信息,请先添加相关信息。" << endl;
	}
}

//还书
void Book_manage::Return_book()
{
	if (b_total > 0) {
		for (int i = 0; i < b_total; i++) {
			if (book[i].state == 1) {
				cout << i + 1 << ":" << book[i].name << endl;
			}
		}
		cout << "请输入您要归还的书籍编号:";
		int num;
		cin >> num;
		if (num >= 1 && num <= b_total) {
			if (book[num - 1].state == 1) {
				book[num - 1].state = 0;
				cout << "归还成功!" << endl;
			}
			else {
				cout << "该书籍未被借走。" << endl;
			}
		}
		else {
			cout << "输入的书籍编号无效。" << endl;
		}
	}
	else {
		cout << "暂无书籍信息,请添加相关信息。" << endl;
	}
}

//显示借书列表
void Book_manage::Printf_books_00()
{
	bool empty = true;
	for (int i = 0; i < b_total; i++) 
	{
		if (book[i].state == 1) 
		{
			cout << book[i].name << endl;
			empty = false;
		}
	}
	if (empty) 
	{
		cout << "暂无借出的书籍。" << endl;
	}
}

最后就是主函数啦!因为没时间很仔细的做这个作业,就没把好多东西封装成函数,所以导致代码还是有一点点乱,如果以后有时间的话,会再修改的,当然,如果你看到这个代码,可以任意修改啦!

#include"Book_manage.h"
#include<iostream>
#include <cstring>
#include<Windows.h>
using namespace std;
int main()
{
	//操作列表
	Book_manage t1(50,50);//书库容量 读者容量
	while (1)
	{
		cout << "1:添加图书" << endl;
		cout << "2:删除图书" << endl;
		cout << "3:打印所有图书" << endl;
		cout << "4:打印未被借走的图书" << endl;
		cout << "5:打印已经借走的图书" << endl;
		cout << "6:添加读者" << endl;
		cout << "7:删除读者" << endl;
		cout << "8:打印所有读者信息" << endl;
		cout << "9:借书" << endl;
		cout << "10:还书" << endl;
		cout << "11:显示借书列表" << endl;
		cout << "12:结束操作" << endl;
		cout << "-------------------------------------------------------" << endl;
		while (1)
		{
			cout << "请输入你的操作编号:";
			int n;
			cin >> n;
			if (n == 12) break;
			switch (n)
			{
			case 1:
				books b;
				cout << endl << "请输入书籍名称:";
				cin >> b.name;
				b.state = 0;
				t1.Add_book(b);
				break;
			case 2:
				t1.Delete_book();
				break;
			case 3:
				t1.Printf_books();
				break;
			case 4:
				t1.Printf_books_0();
				break;
			case 5:
				t1.Printf_books_1();
				break;
			case 6:
				t1.Add_reader();
				break;
			case 7:
				t1.Delete_reader();
				break;
			case 8:
				t1.Printf_readers();
				break;
			case 9:
				t1.Borrow_book();
				break;
			case 10:
				t1.Return_book();
				break;
			case 11:
				t1.Printf_books_00();
				break;
			default:
				break;
			}
		}
		system("cls");
	}
	return 0;
}

欧克欧克,第一次很激动的分享代码,应该会有好多稚嫩的地方,而且其实好多因为是小菊若写,和最后老师教的代码很不一样,但是,还是十分自信的发出来了。耶耶耶!

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值