parent
319f0c2cc4
commit
1ded375019
@ -0,0 +1,170 @@
|
|||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#include "sqlist.h" // 顺序表
|
||||||
|
|
||||||
|
// 图书信息
|
||||||
|
struct Book {
|
||||||
|
int id; // 编号
|
||||||
|
string title; // 标题
|
||||||
|
string author; // 作者
|
||||||
|
float price; // 价格
|
||||||
|
};
|
||||||
|
|
||||||
|
// 所有书的列表
|
||||||
|
SqList<Book> books;
|
||||||
|
|
||||||
|
int get_command(); // 读取命令
|
||||||
|
void DoAddBook(); // 添加图书
|
||||||
|
void DoFindBook(); // 查找图书
|
||||||
|
void DoDeleteBook(); // 删除图书
|
||||||
|
void DoPrintBook(); // 打印图书
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
bool finish = false;
|
||||||
|
|
||||||
|
InitList(books);
|
||||||
|
|
||||||
|
while (!finish) {
|
||||||
|
switch (get_command()) {
|
||||||
|
case 1: // Add book
|
||||||
|
DoAddBook();
|
||||||
|
break;
|
||||||
|
case 2: // Find book
|
||||||
|
DoFindBook();
|
||||||
|
break;
|
||||||
|
case 3: // Delete book
|
||||||
|
DoDeleteBook();
|
||||||
|
break;
|
||||||
|
case 4: // Print
|
||||||
|
DoPrintBook();
|
||||||
|
break;
|
||||||
|
case 0: // Exit
|
||||||
|
finish = true;
|
||||||
|
break;
|
||||||
|
default: // no command
|
||||||
|
cout << "Error command." << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DestroyList(books);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取命令
|
||||||
|
int get_command()
|
||||||
|
{
|
||||||
|
int cmd;
|
||||||
|
cout << "Commands: (1) Add, (2) Find, (3) Delete, (4) Print, (0) Exit\n";
|
||||||
|
cout << "Enter your choice (0-4): ";
|
||||||
|
cin >> cmd;
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 输入一本书的信息
|
||||||
|
void read(Book& b)
|
||||||
|
{
|
||||||
|
cout << "ID : ";
|
||||||
|
cin >> b.id;
|
||||||
|
cin.ignore(1024, '\n'); // skip rest chars of the line
|
||||||
|
cout << "TITLE : ";
|
||||||
|
getline(cin, b.title);
|
||||||
|
cout << "AUTHOR: ";
|
||||||
|
getline(cin, b.author);
|
||||||
|
cout << "PRICE : ";
|
||||||
|
cin >> b.price;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印一本书的信息
|
||||||
|
void print(const Book& b)
|
||||||
|
{
|
||||||
|
cout << "Book { id: " << b.id << ","
|
||||||
|
<< " title:\"" << b.title << "\","
|
||||||
|
<< " author: \"" << b.author << "\","
|
||||||
|
<< " price: " << b.price << " }"
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据 id 查找图书
|
||||||
|
// 若找到,返回元素的位序,找不到时返回 0
|
||||||
|
int find(int id)
|
||||||
|
{
|
||||||
|
|
||||||
|
for (int i = 1; i <= books.length; i++)
|
||||||
|
{
|
||||||
|
if (id == books.elem[i].id){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; // not found
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加图书
|
||||||
|
void DoAddBook()
|
||||||
|
{
|
||||||
|
Book e;
|
||||||
|
read(e);
|
||||||
|
books.elem[books.length + 1] = e;
|
||||||
|
books.length++;
|
||||||
|
print(e);
|
||||||
|
cout << "Added" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找图书
|
||||||
|
void DoFindBook()
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
cout << "Enter book ID: ";
|
||||||
|
cin >> id;
|
||||||
|
Book e;
|
||||||
|
|
||||||
|
if (find(id) == 0)
|
||||||
|
cout << "Not found" << endl;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e = books.elem[find(id)];
|
||||||
|
print(e);
|
||||||
|
cout << "Found" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除图书
|
||||||
|
void DoDeleteBook()
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
cout << "Enter book ID: ";
|
||||||
|
cin >> id;
|
||||||
|
Book e;
|
||||||
|
int c = find(id);
|
||||||
|
if (find(id) == 0)
|
||||||
|
cout << "Not found" << endl;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e = books.elem[c];
|
||||||
|
print(e);
|
||||||
|
for (int i = c; i < books.length; i++)
|
||||||
|
{
|
||||||
|
books.elem[i] = books.elem[i + 1];
|
||||||
|
}
|
||||||
|
--books.length;
|
||||||
|
cout << "Deleted" << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印图书
|
||||||
|
void DoPrintBook()
|
||||||
|
{
|
||||||
|
int flag = 0;
|
||||||
|
for (int i = 0; i < books.length; i++)
|
||||||
|
{
|
||||||
|
Book e;
|
||||||
|
e = books.elem[i + 1];
|
||||||
|
print(e);
|
||||||
|
flag++;
|
||||||
|
}
|
||||||
|
cout << "Total: ";
|
||||||
|
cout << flag;
|
||||||
|
cout << " books" << endl;
|
||||||
|
}
|
Loading…
Reference in new issue