课程设计要求:
编制图书信息管理系统,实现如下功能:插入图书(-i)、查找图书(-f)、删除图书(-d)、显示图书(-s)。
要求:
1. 图书信息包括:书名、作者、出版年份、出版社;
2. 显示图书时按照出版年份由近到远显示;
3. 查找图书和删除图书的输入为完整书名或是部分书名;
4. 插入图书的命令代码-i;查找图书的命令代码-f;删除图书的命令代码-d;显示图书的命令代码为-s;
5. 使用容器类和库算法完成编制。
思路:图书信息可以用结构体来存储,一本书就是一个结构体变量,然后用容器嵌套结构体来存储很多本图书,显示的图示年份由近及远这是个典型的排序算法,再本程序中使用排序算法,总体来说其实就是对图书的增删改查,还是很简单的,可以创建一个booker类来作为管理图书的管理远。
图书管理员有查找图书、插入图书、删除图书、显示图书的权利,可以作为类的成员函数,参数为操作的图书容器类,和要操作的相应图书。
类的具体的代码如下:
class booker
{
public:
void Insert_book(vector&books,string book_name,string writer,date Date,string publisher);
void search_book(string book_name,vector&booklist);
void editor_book(string book_name, vector& booklist);
void delete_book(string book_name, vector&booklist2);
void show_book();
int getdata() { return book_nummber; }
void print_All_books(vector&book);
protected:
private:
int book_nummber = 0;
};
相应的函数实现如下:
void booker::Insert_book(vector&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 &booklist2) { for (vector ::iterator id=booklist2.begin();id &booklist) { for (vector ::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 & booklist) { string writer; string publisher; for (vector ::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 &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 ::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;
vectorbooklist;
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;
}



