简单的图书馆借/还系统——C++实现

其实这是学期初的一次作业,整理文件的时候在角落里找到的,索性就把代码放上来。

一个比较简陋的图书馆借书/还书系统,也许以后有时间会做一些完善。

首先完成一个图书馆类Opt_library,放在头文件中。

#ifndef Opt_library_H
#define Opt_library_H

class Opt_library {
private:
	int card_number;//借书证号
	int valid_days_left;//剩余有效日期
	int Number_of_books;//这一次借出的书的数量
	int books_issued;//上一次借出的书的数量
	int books_returned;//归还的书的数量
public:
	Opt_library() {}//无参构造函数
	~Opt_library() {}//析构函数
	int GetCardNumber() { return card_number; }//获取借书证号
	void SetCardNumber(int c_number) { card_number = c_number; }//设置借书证号
	int GetValidDays() { return valid_days_left; }//获取借书证的剩余有效日期
	void SetValidDays(int v_d_left) { valid_days_left = v_d_left; }//设置借书证的剩余有效日期
	int GetNumberOfBooks() { return Number_of_books; }//获取这一次借出的书的数量
	void SetNumberOfBooks(int n_o_books) { Number_of_books = n_o_books; }//设置这一次借出的书的数量
	int GetBooksIssued() { return books_issued; }//获取上一次借出的书本数量
	void SetBooksIssued(int b_issued) { books_issued = b_issued; }//设置上一次借出的书本数量
	int GetBooksReturned() { return books_returned; }//获取归还的书本数量
	void SetBooksReturned(int b_returned) { books_returned = b_returned; }//设置归还的书本数量
};
#endif

然后是对借阅过程进行操作的一系列函数

#include "stdafx.h"
#include <iostream>
#include "Opt_library.h"
using namespace std;

inline void display(int card, int n_books)
{
	cout <<"*     "<< n_books << "book(s), issued to the card number" ; 
        cout << card << endl;
	return;
};

//判断是否借出书本,接受借阅者输入的借阅数量。
inline void issue_books(int b_books, int re_books, int card,int n_o_books)
{
	bool usable = (b_books == re_books);//判断借阅者是否已经将前一次借阅的书本全部归还
	int b_tobeissued;
	if (usable) 
        {       //“书本全部归还”判断为真
		cout << "*     Please enter the number of books to be issued:" << endl;
                //借阅者输入将要借阅的数量
		cin >> b_tobeissued;
		if (b_tobeissued > 2) 
                {         //借阅数量超过限制
                     cout << "*     More than 2 books can not be issued at a time."; 
                     cout << endl;
		}
		else if (b_tobeissued >= 0) {
			n_o_books = b_tobeissued;
			display(card,n_o_books);
		}
	        else 
                {       //借阅者输入的数为负
		    cout << "*     Sorry,the number you entered is forbiddened." << endl;
	        }
	}
	else 
        {          //“书本全部归还”判断为假
		;
	}
	return ;
}

//确认借书证剩余的有效日期,调用了issue_books函数和display函数
inline void check_valid_days(int v_d_left, int b_issued, int b_returned, int c_number,int n_o_books)
{
	if (v_d_left >= 15) 
        {   //借书证有效日期>=15天
	    issue_books(b_issued, b_returned, c_number, n_o_books);
	}
	else 
        {   //有效日期小于15天则无法借阅
	    cout << "*     Books cannot be issued, there are not enough days left for the validity of card." << endl;
	}
	return ;
}

inline void library(int c_number_1,int v_d_left_1,int b_issued_1, int b_returned_1,int n_o_books_1)
{
	int c_number, v_d_left, b_issued, b_returned, n_o_books;
	Opt_library op1;                   //构建类op1
	op1.SetCardNumber(c_number_1);
	c_number= op1.GetCardNumber();
	op1.SetValidDays(v_d_left_1);
	v_d_left = op1.GetValidDays();
	op1.SetBooksIssued(b_issued_1);
	b_issued = op1.GetBooksIssued();
	op1.SetBooksReturned(b_returned_1);
	b_returned = op1.GetBooksReturned();
	op1.SetNumberOfBooks(n_o_books_1);
	n_o_books = op1.GetNumberOfBooks();

	bool usable=(b_issued == b_returned);//布尔函数判断借阅者是否已经将借出的书全部归还

	if (b_issued==b_returned) 
       {    //借阅者已经将借出的书全部归还,执行下一步
	    cout << "*     Card Number:"<<c_number<<endl;
	    cout << "*     Valid days left:"<<v_d_left<<endl;
	    cout << "*     Books issued previously:"<<b_issued<<endl;
	    cout << "*     Books returned previously:"<<b_returned<<endl;
	    cout << "*     The status has been cleared"<<endl;

	    check_valid_days(v_d_left, b_issued, b_returned, c_number,n_o_books);
	}
	else if (b_issued < b_returned) 
        {   //借阅者尚未将书本全部归还
	    cout << "*     Number of books returned can not be greater than number of books issued." << endl;
	}
	else 
        {   //归还的书过多
	    cout << "*     No further operations can be made. Some books are still not returned." << endl;
	}
	return;
}

最后是项目的main.cpp文件

#include "stdafx.h"
#include <stdlib.h>
#include <string>
#include "library.cpp"
using namespace std;

int main()
{
	int card_number, days_left, books_issued, books_returned,n_o_books;
	string a;
	n_o_books = 0;
	cout << "*********************************************";
        cout << "*********************************************" << endl;
	cout <<"*"<< endl;
	cout << "*     Welcome to the library!" << endl;
	cout << "*     If you want to return books,press any key."<<endl;
	cin >> a;
	while (bool(a == "*")) {
		cout << "*     Enter card number :";
		cin >> card_number;
		cout << "*     Enter days left for the validation:";
		cin >> days_left;
		cout << "*     Enter number of books issued previously:";
		cin >> books_issued;
		cout << "*     Enter number of books returned previously:";
		cin >> books_returned;
		library(card_number, days_left, books_issued, books_returned, n_o_books);
	}
	system("pause");
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值