You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text1/data.h

218 lines
4.5 KiB

#ifndef DATA_H_INCLUDED
#define DATA_H_INCLUDED
#include <stdio.h>
2 years ago
#include "sqlist.h"
// 函数声明
2 years ago
void print_book(void); // 打印
void query_book(void); // 查询
void add_book(void); // 添加
void delete_book(void); // 删除
void boorow_book(void); // 借书
void repaid_book(void); // 还书
void DoAddBook(); // 添加图书
void DoFindBook(); // 查找图书
void DoDeleteBook(); // 删除图书
void DoPrintBook(); // 打印所有图书
void DoRepaidBook(); // 归还图书
void DoBoorowBook(); // 借用图书
2 years ago
void repaid_book(void) // 还书
{
2 years ago
printf("还书\n");
2 years ago
DoRepaidBook();
}
2 years ago
void boorow_book(void) // 借书
{
2 years ago
printf("借书\n");
2 years ago
DoBoorowBook();
}
2 years ago
void query_book(void) // 查询
{
2 years ago
printf("查书\n");
2 years ago
DoFindBook();
}
2 years ago
void print_book(void) // 打印
{
2 years ago
printf("打印\n");
2 years ago
DoPrintBook();
2 years ago
}
void add_book(void) // 添加
{
puts("添加");
2 years ago
DoAddBook();
}
2 years ago
void delete_book(void) // 删除
{
2 years ago
puts("删除");
2 years ago
DoDeleteBook();
}
2 years ago
struct Book {
int id; // 编号
string title; // 标题
int number; // 数量
};
SqList <Book> books;
// 输入一本书的信息
void input(Book& b)
{
cout << "ID : ";
cin >> b.id;
cin.ignore(1024, '\n'); // skip rest chars of the line
cout << "TITLE : ";
getline(cin, b.title);
cout << "Number : ";
while (1){
cin >> b.number;
if (b.number>0) break;
cout << "Number ERROR" << endl;
cout << "Input again" << endl;
}
}
// 打印一本书的信息
void print(const Book& b)
{
cout << "Book " << endl << endl
<<"**************** id: " << b.id << " ****************" << endl
<< "**** title: 《 " << b.title << " 》****" << endl
<< "************** Number: " << b.number << " **************" << endl << endl;
}
// 根据 id 查找图书
// 若找到,返回元素的位序,找不到时返回 0
int find(int id)
{
for (int i = 1; i <= books.length; i++)
{
2 years ago
if (id == books.elem[i].id){
return i;
}
}
return 0; // not found
}
// 添加图书
void DoAddBook()
{
Book book;
input(book); //输入图书
books.elem[books.length + 1] = book;
books.length++;
print(book);
cout << "*******Added********" << endl;
}
// 查找图书
void DoFindBook()
{
int id;
cout << "Enter book ID: ";
cin >> id;
Book book;
if (find(id) == 0)
cout << "Not found" << endl;
else
{
book = books.elem[find(id)];
cout << "Found" << endl;
cout << "************" << endl;
print(book);
}
2 years ago
}
// 删除图书
void DoDeleteBook()
{
int id;
cout << "Which book you wanna delelet?"<<endl;
cout << "Enter book ID: ";
cin >> id;
Book e;
if (find(id) == 0)
cout << "Not found" << endl;
else
{
2 years ago
e = books.elem[find(id)];
print(e);
for (int i = find(id); i < books.length; i++)
{
books.elem[i] = books.elem[i + 1];
}
--books.length;
cout << "************************" << endl;
cout << "Deleted" << endl;
}
2 years ago
}
// 打印所有图书
void DoPrintBook()
{
int flag = 0;
for (int i = 0; i < books.length; i++)
{
2 years ago
Book e;
e = books.elem[i + 1];
print(e);
flag++;
}
cout << "Total: ";
cout << flag;
cout << " books" << endl;
}
// 归还图书
void DoRepaidBook()
{
int id;
cout << "Which book you wanna repaid ? " << endl;
cin >> id;
cout << endl;
if (find(id)){
Book e;
e = books.elem[find(id)];
++books.elem[find(id)].number;
}else{
DoAddBook();
}
2 years ago
}
// 借用图书
void DoBoorowBook()
{
int id;
cout << "Which book you wanna boorow ? " << endl;
cin >> id;
cout << endl;
if (find(id)){
if (books.elem[find(id)].number>0) {
Book e;
e = books.elem[find(id)];
cout<< "*********"<< endl << "OK" << endl << "*********"<<endl;
--books.elem[find(id)].number;
}else cout << "***************************"<< endl
<< "Book empty" << endl << "***************************" << endl;
}else throw "NOT FOUND THIS BOOK";
}
#endif // DATA_H_INCLUDED