c++课程设计图书管理系统

课程设计要求:

编制图书信息管理系统,实现如下功能:插入图书(-i)、查找图书(-f)、删除图书(-d)、显示图书(-s)。

要求:

1. 图书信息包括:书名、作者、出版年份、出版社;

2. 显示图书时按照出版年份由近到远显示;

3. 查找图书和删除图书的输入为完整书名或是部分书名;

4. 插入图书的命令代码-i;查找图书的命令代码-f;删除图书的命令代码-d;显示图书的命令代码为-s;

5. 使用容器类和库算法完成编制。

思路:图书信息可以用结构体来存储,一本书就是一个结构体变量,然后用容器嵌套结构体来存储很多本图书,显示的图示年份由近及远这是个典型的排序算法,再本程序中使用排序算法,总体来说其实就是对图书的增删改查,还是很简单的,可以创建一个booker类来作为管理图书的管理远。

图书管理员有查找图书、插入图书、删除图书、显示图书的权利,可以作为类的成员函数,参数为操作的图书容器类,和要操作的相应图书。

类的具体的代码如下:

class booker
{
public:
	void Insert_book(vector<initbook>&books,string book_name,string writer,date Date,string publisher);
	void search_book(string book_name,vector<initbook>&booklist);
	void editor_book(string book_name, vector<initbook>& booklist);
	void delete_book(string book_name, vector<initbook>&booklist2);
	void show_book();
	int getdata() { return book_nummber; }
	void print_All_books(vector<initbook>&book);
	
protected:
	
private:
	int book_nummber = 0;
};

相应的函数实现如下:

void booker::Insert_book(vector<initbook>&books,string book_name, string writer, date Date, string publisher)
{
	initbook* s = new initbook;
	s->bookName = book_name;
	s->Writer = writer;
	s->Date = Date;
	s->publisher = publisher;
	books.push_back(*s);
	
}
void booker::delete_book(string book_name,vector<initbook>&booklist2)
{

	for (vector<initbook>::iterator id=booklist2.begin();id<booklist2.end();id++)
	{
		if ((*id).bookName == book_name)
		{
			booklist2.erase(id);
			break;//删除以后id已失效要及时跳出循环
			
		}
	}
}
void booker::search_book(string book_name,vector<initbook>&booklist)
{
	for (vector<initbook>::iterator id = booklist.begin(); id < booklist.end(); id++)
	{
		if ((*id).bookName == book_name)
		{
			cout << "已成功找到图书:" << endl;
			cout << (*id).bookName << endl;
			cout << (*id).Writer << endl;
			cout << (*id).Date.day << "-" << (*id).Date.month << "-" << (*id).Date.day << endl;
			cout << (*id).publisher << endl;
			break;//找到后直接跳出for
		}
         
	}
}
void booker::editor_book(string book_name, vector<initbook>& booklist)
{
	string writer;
	string publisher;
	for (vector<initbook>::iterator id = booklist.begin(); id < booklist.end(); id++)
	{
		if ((*id).bookName == book_name)
		{
			cout << "请输入新的作者名" << endl;
			cin >> writer;
			cout << "请输入新的出版商" << endl;
			cin >> publisher;
			(*id).Writer = writer;
			(*id).publisher = publisher;
		}
	}
}

void booker::print_All_books(vector<initbook>&book)
{
	int min;
	for (int i = 0; i < book.size() - 1; i++)
	{
		min = i;
		for (int j = i + 1; j < book.size(); j++)
		{
			if (book[j].Date.year < book[min].Date.year||(book[j].Date.year==book[min].Date.year&&book[j].Date.month<book[min].Date.month))
			{
				min = j;
			}
		}
		if (i != min)
		{
			initbook temp = book[i];
			book[i] = book[min];
			book[min] = temp;
		}
	}
	for (vector<initbook>::iterator id = book.begin(); id < book.end(); id++)
	{
		
		cout <<"书籍名称:"<< (*id).bookName << endl;
		cout << "书籍作者:"<<(*id).Writer << endl;
		cout <<"出版日期:"<< (*id).Date.day << "-" << (*id).Date.month << "-" << (*id).Date.day << endl;
		cout << "出版社:"<<(*id).publisher << endl;
	}
}

主函数:注意这里面的get_data,等是相应的对书籍的操作,为了让switch语句看起来比较整洁简单所以用了函数,参数为booker类和图书容器,在函数中调用booker类的方法对图书进行操作。这部分很简单的,就自己实现把~

int main()
{
    booker liberian;
    vector<initbook>booklist;
    while (1)
    {
    menu();
    cout << "请输入你要的操作:" << endl;
    char a;
    cin >> a;
    switch (a)
    {
    case 'i':
        get_data(&liberian,booklist);
        break; 
    case 'f':
        search_data(&liberian, booklist);
        break;

    case 'd':
        delete_data(&liberian, booklist);
        break;
    case 's':
        show_data(&liberian, booklist);
        break;
    case 'k':
        editor_book(&liberian, booklist);
        break;

    case 'l':
        cout << "欢迎下次使用" << endl;
        system("pause");
        return 0;
        break;
    }
  

    }


    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_53206200/article/details/125471973