栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++期末,图书管理系统 (写着玩,轻喷)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++期末,图书管理系统 (写着玩,轻喷)

功能:

界面

入库:

查询书库:

录入学生信息与遍历:

借书:

借阅时间为读取操作系统的时间

修改信息

还书:

 

出库:

 

代码:

各种类定义(头文件):


class Book {
public:
	virtual void display() = 0;  //抽象基类
	
protected:
	int ID;     //图书编号
	float price;//图书价格
	string book_name; //图书名称
};

class store_Book :  public Book
{
public:
	store_Book();
	int return_ID();
	string return_book_name();
	float return_price();
	string return_borrower();
	bool return_borrowed();
	bool return_on_shelves();

	virtual void display();

	void operateStoreBook();

	void Offshelves();

	void Onshelves();

	void borrowerBook();

	void returnBook();

	void setBorrower(string name);

	static int amount; //图书的总数量(静态成员)
private:
	bool borrowed; //是否被借阅	
	bool on_shelves;//是否上架(默认上架)

	string borrower;//借阅者
};


class borrowed_Book :public Book//被借阅的书籍
{ 
	public:
		borrowed_Book(store_Book book);

		int return_ID();
		string return_book_name();

		virtual void display();

	private:
		Day borrow_date;  //借阅日期
		Day return_date ;  //还书日期

	};

class Day {
public:
	Day();

	Day operator+(int m); //操作符重载,归还日期=借阅日期加期限

	friend ostream& operator<<(ostream& output, Day Day);



private:
	int year;
	int month;
	int day;
};


class borrower
{
public:
	int number;//借阅者借书的数量	
	list  Book;  //借的书,一个人可以借10本

	string return_borrower_name();

	int return_ID();

	borrower(int ID, string name);

	borrower();

	void display();

	static int stu_amount;

private:
	string borrower_name; //借阅者姓名
	int ID;  //借阅者学号
	
};

各种函数:

界面:

void Interface() {
	system("COLOR 74");
	cout << "****************************************************************" << endl;
	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 << "输入Q展示所有学生信息" << endl;
	cout << "输入W统计所有书的数量" << endl;
	cout << "输入E统计某本书数量" << endl;
	cout << "输入R清屏" << endl;
	cout << "输入0重新展示版面" << endl;
	cout << "为防止误触,关闭程序请在操作系统直接关闭" << endl;
	cout << "****************************************************************" << endl;
	cout << endl;
}

 操作:

#include "function.h"

void operate(list & store, vector& borrowed) {
	Interface();
	char n;
	while (1) {
		cin.clear();
		cin >> n;
		switch (n) {
		case '1':
			cout << "将书入库操作:" << endl;
			putOn(store);
			cout << endl;
			break;

		case '2':
			cout << "将书出库操作:" << endl;
			deleteBook(store);
			cout << endl;
			break;

		case '3':
			cout << "浏览书库操作:" << endl;
			displayBook(store);
			cout << endl;
			break;

		case '4':
			cout << "查询指定书操作:" << endl;
			searchBook(store);
			cout << endl;
			break;

		case '5':
			cout << "更改书籍信息以及上架或下架书籍操作:" << endl;
			changeInform(store);
			cout << endl;
			break;

		case '6':
			cout << "录入学生操作:" << endl;
			enterStudent(borrowed);
			cout << endl;
			break;

		case '7':
			cout << "学生借书操作:" << endl;
			borrowBook(borrowed, store);
			cout << endl;
			break;

		case '8':
			cout << "学生还书操作:" << endl;
			returnBook(borrowed, store);
			cout << endl;
			break;

		case '9':
			cout << "查询指定学生信息操作:" << endl;
			searchBorrower(borrowed);
			cout << endl;
			break;

		case 'q':
		case 'Q':
			cout << "展示所有学生信息操作:" << endl;
			displayBorrower(borrowed);
			cout << endl;
			break;

		case 'w':
		case 'W':
			cout << "统计所有书的数量操作:" << endl;
			cout << "书库书籍有:" << store_Book::amount << "本" << endl;
			cout << endl;
			break;

		case 'e':
		case 'E':
			cout << "统计某本书数量操作:" << endl;
			statisticsName(store);
			cout << endl;
			break;

		case 'r':
		case 'R':
			cout << "清屏操作:" << endl;
			system("cls");
			Interface();
			cout << endl;
			break;
		case '0':
			Interface();

			break;
		default:
			cout << "非法输入,请重试" << endl;
			break;
		}

	}
}

 书库中的书类:

store_Book::store_Book() {
	cout << "请分别输入ID,书名,价格:";
	cin >> ID >> book_name >> price;
	borrowed = false;
	on_shelves = true;
	borrower = "Nobody";
}

int store_Book::amount = 0;

int store_Book::return_ID() {
	return ID;
}
string store_Book::return_book_name() {
	return book_name;
}
float store_Book::return_price() {
	return price;
}
string  store_Book::return_borrower() {
	return borrower;
}

bool store_Book::return_borrowed() {
	return borrowed;
}

bool store_Book::return_on_shelves() {
	return on_shelves;
}

void store_Book::Onshelves() {
	on_shelves = true;
}
void store_Book::Offshelves() {
	on_shelves = false;
}

void store_Book::borrowerBook() {
	borrowed = true;
}

void store_Book::returnBook() {
	borrowed = false;
}

void store_Book::setBorrower(string name) {
	borrower = name;
}



void store_Book::operateStoreBook() {
	char n;
	re:
	cout << "输入1上架,输入2下架,输入3修改信息,输入0退出:";
	while (1) {
		cin >> n;
		if (n == '1') {
			on_shelves = true;
			cout << "上架成功" << endl;
			continue;
		}
		else if (n == '2') {
			on_shelves = false;
			cout << "下架成功" << endl;
			continue;
		}
		else if (n == '3') {
			char m;
			while (1) {
				cout << "输入1修改ID,输入2修改书名,输入3修改价格,输入4返回上一级,输入0退出:";
					cin >> m;
					if (m == '1') {
						cout << "请输入修改的ID:";
						cin >> ID;
						cout << "修改成功" << endl;
						break;
					}
					else if (m == '2') {
						cout << "请输入修改的书名:";
						cin >> book_name;
						cout << "修改成功" << endl;
						break;
					}
					else if (m == '3') {
						cout << "请输入修改的价格:";
						cin >> price;
						cout << "修改成功" << endl;
						break;
					}
					else if (m == '4') {
						goto re;
					}
					else if (m == '0')return;
					else {
						cout << "非法输入,请重试";
						continue;
					}
				}
			}
	
		else if (n == '0') {
			cout << "结束操作" << endl;
			return;
		}
		else {
			cout << "非法输入,请重试";
			continue;
		}
	}
}


void store_Book::display() {
	cout << "书的ID:" < 

被借阅的书类:

borrowed_Book::borrowed_Book(store_Book book) {   //参数是仓库里的书籍,给本
	int m;
	ID = book.return_ID();
	book_name = book.return_book_name();
	price = book.return_price();
	cout << "输入借书时间1~12(月):";
	while(1){
	cin >> m;
	if (m >= 1 && m <= 12) {
		return_date = borrow_date + m;
		break;
	}
	else {
		cout << "非法输入,请重试"< 

 时间类:

Day Day:: operator+(int m) {
	Day d=*this;
	if (month + m <= 12)d.month += m;
	else {
		d.year++;
		d.month = (d.month + m) % 12;
	}
	return d;
}

ostream& operator<<(ostream& output, Day Day) {
	output << Day.year << '-' << Day.month << '-' << Day.day;
	return output;
}

Day::Day() {
	SYSTEMTIME sys;     //获取系统时间
	GetLocalTime(&sys);
	year = sys.wYear;
	month = sys.wMonth;
	day = sys.wDay;
}

借阅者类:

string borrower:: return_borrower_name() {
	return borrower_name;
}
int borrower::return_ID() {
	return ID;
}


borrower::borrower() {
	cout << "请分别输入学号,姓名:";
	cin >> ID >> borrower_name;
	number = 0;
	stu_amount++;
}

borrower::borrower(int ID,string name) {
	this->ID = ID;
	this->borrower_name = name;
	number = 0;
	stu_amount++;
}

void borrower::display() {
	cout <display();
	}
}

int borrower::stu_amount = 0;

各种功能函数:

void borrowBookAPI(borrower& stu, list & Book) {
flag:
	cout << "请输入需要借的书的信息" << endl;
	list ::iterator it = findBook(Book);
	if (it != Book.end()) {
		if (!(it->return_borrowed()) && it->return_on_shelves()) {
			borrowed_Book book(*it);
			it->borrowerBook();
			stu.Book.push_back(book);
			stu.number++;
			it->setBorrower(stu.return_borrower_name());
		}
		else {
			cout << "该书没有上架或者被假借走了,按任意重试,按0退出";
			char n;
			cin >> n;
			if ('0')return;
			else {
				goto flag;
			}
		}
	}
	else {
		cout << "未找到该书,按任意重试,按0退出" << endl;
		char n;
		cin >> n;
		if ('0')return;
		else {
			goto flag;
		}
	}
}


void borrowBook(vector& borrowers, list & Book)//借书函数,先输入借书人信息然后再输入书的信息进行查找操作
{
	cout << "请输入借书同学的信息" << endl;
	int i = findBorrowerName(borrowers);
	if (i != -1) {     //找到该同学在数据库里,在其后面添加借书信息即可;
		borrowBookAPI(borrowers[i], Book);
		cout << "借书成功" << endl;
	}
	else {   //未找到,添加该同学信息,再操作
		cout << "未找到数据库里有该名同学,请再次输入相关信息" << endl;
		borrower stu;
		borrowers.push_back(stu);
		borrowBookAPI(borrowers.back(), Book);
		cout << "借书成功" << endl;
	}

}


void changeInform(list & Book)//在根据用户输入的要修改的内容修改
{
	cout << "输入要修改的相关书籍信息或状态" << endl;
	auto it = findBook(Book);
	if (it != Book.end()) {
		it->operateStoreBook();
	}
	else {
		cout << "未查找到要修改的书籍" << endl;
	}

}

int statisticsName(list  Book)//统计该书数量,返回数量
{
	string name;
	cout << "请输入需要查询的书籍名:";
	cin >> name;
	int count = 0;
	for (auto it = Book.begin(); it != Book.end(); it++) {
		if (it->return_book_name() == name)count++;
	}
	cout << "名字为" << name << "的书有:" << count << "本" << endl;
	return count;
}

void displayBook(list  Book)//遍历书的信息
{
	cout << "一共有" << store_Book::amount << "本书" << endl;
	for_each(Book.begin(), Book.end(), [](store_Book Book) {
		Book.display();
		});
	cout << "遍历完成" << endl;
}

void displayBorrower(vector borrowers)//遍历所有借阅者各种信息;
{
	cout << "一共有" << borrower::stu_amount << "位学生:" << endl;
	for (auto it = borrowers.begin(); it != borrowers.end(); it++) {
		it->display();
	}
}

void enterStudent(vector& borrowers) {
	string name;
	int ID;
	cout << "请分别输入要导入的学生的学号、姓名:" << endl;
	cin >> ID >> name;
	for (auto it = borrowers.begin(); it != borrowers.end(); it++) {
		if (it->return_ID() == ID) {
			cout << "已存在此学号的学生,录入失败" << endl;
			return;
		}
	}
	borrower stu(ID,name);
	borrowers.push_back(stu);
	cout << "录入成功" << endl;
}


list ::iterator findBookByName(list & Book, string name) {   //根据书名查找函数,传入一个书库(书的数组)参数,一个书名参数,查询成功返回数组下标,查询失败返回-1;
	list ::iterator it;
	for (it = Book.begin(); it != Book.end(); it++) {
		if (it->return_book_name() == name) {
			break;
		}
	}
	return it;
}

list ::iterator findBookById(list & Book, int id)   //根据ID查找函数,传入一个书库(书的数组)参数,一个ID参数,查询成功返回数组下标,查询失败返回-1;
{
	list ::iterator it;
	for (it = Book.begin(); it != Book.end(); it++) {
		if (it->return_ID() == id) {
			break;
		}
	}
	return it;
}
list ::iterator findBook(list & Book)  //查找函数,让用户决定传入ID还是书名,查询成功返回数组下标,查询失败返回-1(调用上面两个函数解决);
{
	char n;
	list ::iterator it = Book.end();
	cout << "输入1用书名查找,输入2用ID查找" << endl;
	while (1) {
		cin >> n;
		if (n == '1') {
			string name;
			cout << "请输入书名:";
			cin >> name;
			it = findBookByName(Book, name);
			break;
		}
		else if (n == '2') {
			int ID;
			cout << "请输入ID:";
			cin >> ID;
			it = findBookById(Book, ID);
			break;
		}
		else {
			cout << "非法输入,请重试";
			continue;
		}
	}
	return it;
}


list ::iterator findBorrowedBookByName(list & Book, string name) {   //根据书名查找函数,传入一个书库(书的数组)参数,一个书名参数,查询成功返回数组下标,查询失败返回-1;
	list ::iterator it;
	for (it = Book.begin(); it != Book.end(); it++) {
		if (it->return_book_name() == name) {
			break;
		}
	}
	return it;
}

list ::iterator findBorrowedBookById(list & Book, int id)   //根据ID查找函数,传入一个书库(书的数组)参数,一个ID参数,查询成功返回数组下标,查询失败返回-1;
{
	list ::iterator it;
	for (it = Book.begin(); it != Book.end(); it++) {
		if (it->return_ID() == id) {
			break;
		}
	}
	return it;

}

list ::iterator findBorrowedBook(list & Book)  //查找函数,让用户决定传入ID还是书名,查询成功返回数组下标,查询失败返回-1(调用上面两个函数解决);
{
	char n;
	list ::iterator it = Book.end();
	cout << "输入1用书名查找,输入2用ID查找" << endl;
	while (1) {
		cin >> n;
		if (n == '1') {
			string name;
			cout << "请输入书名:";
			cin >> name;
			it = findBorrowedBookByName(Book, name);
			break;
		}
		else if (n == '2') {
			int ID;
			cout << "请输入ID:";
			cin >> ID;
			it = findBorrowedBookById(Book, ID);
			break;
		}
		else {
			cout << "非法输入,请重试";
			continue;
		}
	}
	return it;
}



int findBorrowerName(vector& borrowers)//让用户决定传入ID还是姓名,查询成功返回数组下标,查询失败返回-1;
{
	int n;
	
	int id;
	cout << "请输入学号:";
	cin >> id;
	for (int i = 0; i < borrowers.size(); i++) {
		if (id == borrowers[i].return_ID())return i;
	}
	return -1;
}

//	}
//	
//}


void deleteBook(list & Book)//删除函数,先查找,查找在的位置完删除该书(数组内元素的删除)
{
	list ::iterator it;
	cout << "输入相关信息:" << endl;
	it = findBook(Book);
	if (it != Book.end()) {
		Book.erase(it);
		store_Book::amount--;
		cout << "删除成功" << endl;
	}
	else {
		cout << "没有该书籍,删除失败" << endl;
	}
}

void putOn(list & Book)//入库函数,输入要加入的信息,数组加入末尾加入该书
{
	store_Book book;
	for (auto it = Book.begin(); it != Book.end(); it++) {
		if (book.return_ID() == it->return_ID()) {
			cout << "已存在ID为" << book.return_ID() <<"的书,入库失败" << endl;
			return;
		}
	}
	
	Book.push_back(book);
	book.amount++;
	cout << "入库成功" << endl;
}


void returnBook(vector& borrowers, list & Book)//还书函数,同上
{
	cout << "请输入还书同学的信息" << endl;
	int i = findBorrowerName(borrowers);
	if (i != -1) {
		cout << "请输入该同学要归还的书的信息" << endl;
		list::iterator it = findBorrowedBook(borrowers[i].Book);
		if (it != borrowers[i].Book.end()) {
			int ID = it->return_ID();
			borrowers[i].Book.erase(it);
			borrowers[i].number--;
			list::iterator it2 = findBookById(Book, ID);  //对应书库里的书
			if (it2 != Book.end()) {
				it2->returnBook();
				cout << "还书成功" << endl;
			}
			else cout << "该同学的借的书不在库里了,送你了" << endl;
		}
		else {
			cout << "该同学没有借这本书" << endl;
		}
	}
	else {
		cout << "该同学不在数据库里" << endl;
	}
}


void searchBook(list  Book) {
	auto it = findBook(Book);
	if (it != Book.end()) {
		cout << "查找成功:" << endl;
		it->display();
	}
	else {
		cout << "查找失败" << endl;
	}
}

void searchBorrower(vector borrowers) {
	int i = findBorrowerName(borrowers);
	if (i != -1) {
		borrowers[i].display();
	}
	else {
		cout << "未找到该学生" << endl;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号