After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 139 KiB |
@ -0,0 +1,469 @@
|
|||||||
|
<<<<<<< HEAD:data.h
|
||||||
|
#ifndef DATA_H_INCLUDED
|
||||||
|
#define DATA_H_INCLUDED
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "sqlist.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct Book {
|
||||||
|
int id; // 编号
|
||||||
|
string title; // 标题
|
||||||
|
int number; // 数量
|
||||||
|
};
|
||||||
|
|
||||||
|
SqList <Book> books;
|
||||||
|
|
||||||
|
// 函数声明
|
||||||
|
bool bookempty(); // 书籍库判空
|
||||||
|
void input(Book& b); // 输入一本书的信息
|
||||||
|
void print(const Book& b);// 打印一本书的信息
|
||||||
|
int find(int id); // 根据 id 查找图书 || 若找到,返回元素的位序,找不到时返回 0
|
||||||
|
|
||||||
|
void DoAddBook(); // 添加图书
|
||||||
|
void DoFindBook(); // 查找图书
|
||||||
|
void DoDeleteBook(); // 删除图书
|
||||||
|
void DoPrintBook(); // 打印所有图书
|
||||||
|
void DoRepaidBook(); // 归还图书
|
||||||
|
void DoBoorowBook(); // 借用图书
|
||||||
|
void DoReviseBook(); // 修改图书
|
||||||
|
void DoSortBook(); // 排序图书
|
||||||
|
|
||||||
|
|
||||||
|
// 输入一本书的信息
|
||||||
|
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++)
|
||||||
|
{
|
||||||
|
if (id == books.elem[i].id){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; // not found
|
||||||
|
}
|
||||||
|
|
||||||
|
// 书籍库判空
|
||||||
|
bool bookempty()
|
||||||
|
{
|
||||||
|
int a=0;
|
||||||
|
for (int i=1;i<=books.length;i++)
|
||||||
|
{
|
||||||
|
if (find(i)==0) a++;
|
||||||
|
}
|
||||||
|
if (a==books.length) return true;
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加图书
|
||||||
|
void DoAddBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Add Book"<< endl<<endl;
|
||||||
|
Book book;
|
||||||
|
input(book); //输入图书
|
||||||
|
books.elem[books.length + 1] = book;
|
||||||
|
books.length++;
|
||||||
|
print(book);
|
||||||
|
cout << "*******Added********" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找图书
|
||||||
|
void DoFindBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Find Book" << endl <<endl;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除图书
|
||||||
|
void DoDeleteBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Delete Book" << endl << endl;
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印所有图书
|
||||||
|
void DoPrintBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Print All Books" << endl <<endl;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 归还图书
|
||||||
|
void DoRepaidBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Repaid Book" << endl<<endl;
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 借用图书
|
||||||
|
void DoBoorowBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Boorow Book" << endl <<endl;
|
||||||
|
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 cout<< "NOT FOUND THIS BOOK"<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改图书
|
||||||
|
void DoReviseBook()
|
||||||
|
{
|
||||||
|
cout <<endl<< "Revise Book" <<endl <<endl;
|
||||||
|
int id;
|
||||||
|
printf( "Which book you wanna revise ?\n" );
|
||||||
|
cin >> id;
|
||||||
|
|
||||||
|
if ( find(id)!=0 ) {
|
||||||
|
printf ( "Original book number : %d\n", books.elem[id].number );
|
||||||
|
printf ( "Revised number :" );
|
||||||
|
int xiugai;
|
||||||
|
scanf ( "%d", &xiugai );
|
||||||
|
books.elem[id].number+=xiugai;
|
||||||
|
cout << "**********************" << endl;
|
||||||
|
printf ( "Revise success \n" );
|
||||||
|
}
|
||||||
|
else printf ( "No such book\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序图书
|
||||||
|
void DoSortBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Sort Books" << endl << endl;
|
||||||
|
int a=0;
|
||||||
|
if (bookempty()) cout << "Book data empty"<< endl;
|
||||||
|
else {
|
||||||
|
for (int i=1;i<books.length;i++)
|
||||||
|
for (int j=books.length;j>0;j--)
|
||||||
|
{
|
||||||
|
if (books.elem[i].id>books.elem[j].id) {
|
||||||
|
Book temp=books.elem[i];books.elem[i]=books.elem[j];books.elem[j]=temp;}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << "*****************************" <<endl;
|
||||||
|
cout << "Sort success"<<endl;
|
||||||
|
}
|
||||||
|
=======
|
||||||
|
#ifndef DATA_H_INCLUDED
|
||||||
|
#define DATA_H_INCLUDED
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "sqlist.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct Book {
|
||||||
|
int id; // 编号
|
||||||
|
string title; // 标题
|
||||||
|
int number; // 数量
|
||||||
|
};
|
||||||
|
|
||||||
|
SqList <Book> books;
|
||||||
|
|
||||||
|
// 函数声明
|
||||||
|
bool bookempty(); // 书籍库判空
|
||||||
|
void input(Book& b); // 输入一本书的信息
|
||||||
|
void print(const Book& b);// 打印一本书的信息
|
||||||
|
int find(int id); // 根据 id 查找图书 || 若找到,返回元素的位序,找不到时返回 0
|
||||||
|
|
||||||
|
void DoAddBook(); // 添加图书
|
||||||
|
void DoFindBook(); // 查找图书
|
||||||
|
void DoDeleteBook(); // 删除图书
|
||||||
|
void DoPrintBook(); // 打印所有图书
|
||||||
|
void DoRepaidBook(); // 归还图书
|
||||||
|
void DoBoorowBook(); // 借用图书
|
||||||
|
void DoReviseBook(); // 修改图书
|
||||||
|
void DoSortBook(); // 排序图书
|
||||||
|
|
||||||
|
|
||||||
|
// 输入一本书的信息
|
||||||
|
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++)
|
||||||
|
{
|
||||||
|
if (id == books.elem[i].id){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; // not found
|
||||||
|
}
|
||||||
|
|
||||||
|
// 书籍库判空
|
||||||
|
bool bookempty()
|
||||||
|
{
|
||||||
|
int a=0;
|
||||||
|
for (int i=1;i<=books.length;i++)
|
||||||
|
{
|
||||||
|
if (find(i)==0) a++;
|
||||||
|
}
|
||||||
|
if (a==books.length) return true;
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加图书
|
||||||
|
void DoAddBook()
|
||||||
|
{
|
||||||
|
if (books.length == 256) cout << "Books full" << endl;
|
||||||
|
cout << endl << "Add Book"<< endl<<endl;
|
||||||
|
Book book;
|
||||||
|
input(book); //输入图书
|
||||||
|
books.elem[books.length + 1] = book;
|
||||||
|
books.length++;
|
||||||
|
print(book);
|
||||||
|
cout << "*******Added********" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查找图书
|
||||||
|
void DoFindBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Find Book" << endl <<endl;
|
||||||
|
if (bookempty()) cout << "Book data empty"<< endl;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除图书
|
||||||
|
void DoDeleteBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Delete Book" << endl << endl;
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印所有图书
|
||||||
|
void DoPrintBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Print All Books" << endl <<endl;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 归还图书
|
||||||
|
void DoRepaidBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Repaid Book" << endl<<endl;
|
||||||
|
int id;
|
||||||
|
cout << "Which book you wanna repaid ? " << endl;
|
||||||
|
cout << "Enter book ID :" << endl;
|
||||||
|
cin >> id;
|
||||||
|
cout << endl;
|
||||||
|
if (find(id)){
|
||||||
|
Book e;
|
||||||
|
e = books.elem[find(id)];
|
||||||
|
++books.elem[find(id)].number;
|
||||||
|
}else{
|
||||||
|
DoAddBook();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 借用图书
|
||||||
|
void DoBoorowBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Boorow Book" << endl <<endl;
|
||||||
|
int id;
|
||||||
|
if (bookempty()) cout << "Book data empty"<< endl;
|
||||||
|
cout << "Which book you wanna boorow ? " << endl;
|
||||||
|
cout << "Enter book ID :" << 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 cout<< "NOT FOUND THIS BOOK"<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改图书
|
||||||
|
void DoReviseBook()
|
||||||
|
{
|
||||||
|
cout <<endl<< "Revise Book" <<endl <<endl;
|
||||||
|
int id;
|
||||||
|
printf( "Which book you wanna revise ?\n" );
|
||||||
|
cin >> id;
|
||||||
|
|
||||||
|
if ( find(id)!=0 ) {
|
||||||
|
printf ( "Original book number : %d\n", books.elem[id].number );
|
||||||
|
printf ( "Revised number :" );
|
||||||
|
int xiugai;
|
||||||
|
scanf ( "%d", &xiugai );
|
||||||
|
books.elem[id].number+=xiugai;
|
||||||
|
cout << "**********************" << endl;
|
||||||
|
printf ( "Revise success \n" );
|
||||||
|
}
|
||||||
|
else printf ( "No such book\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序图书
|
||||||
|
void DoSortBook()
|
||||||
|
{
|
||||||
|
cout << endl << "Sort Books" << endl << endl;
|
||||||
|
int a=0;
|
||||||
|
if (bookempty()) cout << "Book data empty"<< endl;
|
||||||
|
else {
|
||||||
|
for (int i=1;i<books.length;i++)
|
||||||
|
for (int j=books.length;j>0;j--)
|
||||||
|
{
|
||||||
|
if (books.elem[i].id>books.elem[j].id) {
|
||||||
|
Book temp=books.elem[i];books.elem[i]=books.elem[j];books.elem[j]=temp;}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout << "*****************************" <<endl;
|
||||||
|
cout << "Sort success"<<endl;
|
||||||
|
}
|
||||||
|
>>>>>>> master:code/data.h
|
||||||
|
#endif // DATA_H_INCLUDED
|
@ -1,126 +1,126 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "sqlist.h"
|
#include "sqlist.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
CMD_QUIT, // 退出程序
|
CMD_QUIT, // 退出程序
|
||||||
CMD_QUERY, // 查书(数量)
|
CMD_QUERY, // 查书(数量)
|
||||||
CMD_BOOROW, // 借用书籍
|
CMD_BOOROW, // 借用书籍
|
||||||
CMD_REPAID, // 归还书籍
|
CMD_REPAID, // 归还书籍
|
||||||
CMD_PRINT, // 打印书籍
|
CMD_PRINT, // 打印书籍
|
||||||
CMD_INSERT, // 添加书籍
|
CMD_INSERT, // 添加书籍
|
||||||
CMD_DELETE, // 删除书籍
|
CMD_DELETE, // 删除书籍
|
||||||
CMD_UPDATE, // 修改书籍
|
CMD_UPDATE, // 修改书籍
|
||||||
CMD_SORT, // 排序书籍
|
CMD_SORT, // 排序书籍
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// 函数声明
|
// 函数声明
|
||||||
void init(void); // 程序启动
|
void init(void); // 程序启动
|
||||||
void quit(void); // 程序退出
|
void quit(void); // 程序退出
|
||||||
void display_menu(void); // 显示命令菜单
|
void display_menu(void); // 显示命令菜单
|
||||||
|
|
||||||
int make_choice(void); // 选择命令
|
int make_choice(void); // 选择命令
|
||||||
int confirm(const char* msg); // 确认
|
int confirm(const char* msg); // 确认
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 主函数
|
// 主函数
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
init(); // 程序启动
|
init(); // 程序启动
|
||||||
|
|
||||||
InitList(books);
|
InitList(books);
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
display_menu(); //
|
display_menu(); //
|
||||||
int c = make_choice();
|
int c = make_choice();
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case CMD_REPAID:// 还书
|
case CMD_REPAID:// 还书
|
||||||
{DoRepaidBook();
|
{DoRepaidBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_BOOROW:// 借书
|
case CMD_BOOROW:// 借书
|
||||||
{DoBoorowBook();
|
{DoBoorowBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_PRINT:// 打印所有书籍
|
case CMD_PRINT:// 打印所有书籍
|
||||||
{DoPrintBook();
|
{DoPrintBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_QUERY:// 查找书籍
|
case CMD_QUERY:// 查找书籍
|
||||||
{DoFindBook();
|
{DoFindBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_INSERT:// 添加书籍
|
case CMD_INSERT:// 添加书籍
|
||||||
{DoAddBook();
|
{DoAddBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_DELETE:// 删除书籍
|
case CMD_DELETE:// 删除书籍
|
||||||
{DoDeleteBook();
|
{DoDeleteBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_UPDATE:// 修改书籍
|
case CMD_UPDATE:// 修改书籍
|
||||||
{DoReviseBook();
|
{DoReviseBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_SORT: // 排序书籍
|
case CMD_SORT: // 排序书籍
|
||||||
{DoSortBook();
|
{DoSortBook();
|
||||||
break;}
|
break;}
|
||||||
case CMD_QUIT:// 退出程序
|
case CMD_QUIT:// 退出程序
|
||||||
{if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出
|
{if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出
|
||||||
break;}
|
break;}
|
||||||
default:
|
default:
|
||||||
puts("命令错误,请重新选择");
|
puts("命令错误,请重新选择");
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
quit(); // 程序退出
|
quit(); // 程序退出
|
||||||
|
|
||||||
DestroyList(books);
|
DestroyList(books);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void init(void)
|
void init(void)
|
||||||
{
|
{
|
||||||
puts("*******图书管理系统启动*******");
|
puts("*******图书管理系统启动*******");
|
||||||
}
|
}
|
||||||
void quit(void)
|
void quit(void)
|
||||||
{
|
{
|
||||||
puts("系统退出");
|
puts("系统退出");
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void display_menu(void)
|
void display_menu(void)
|
||||||
{
|
{
|
||||||
cout << "————————————————————————————————————————————————————————————————"<<endl;
|
cout << "————————————————————————————————————————————————————————————————"<<endl;
|
||||||
printf("| %d 查书 | %d 借书 | %d 还书 | %d 打印 | %d 添加 |\n| %d 删除 | %d 修改 | %d 排序 | %d 退出 |\n",
|
printf("| %d 查书 | %d 借书 | %d 还书 | %d 打印 | %d 添加 |\n| %d 删除 | %d 修改 | %d 排序 | %d 退出 |\n",
|
||||||
CMD_QUERY,CMD_BOOROW,CMD_REPAID,CMD_PRINT,CMD_INSERT,CMD_DELETE,CMD_UPDATE,CMD_SORT,CMD_QUIT);
|
CMD_QUERY,CMD_BOOROW,CMD_REPAID,CMD_PRINT,CMD_INSERT,CMD_DELETE,CMD_UPDATE,CMD_SORT,CMD_QUIT);
|
||||||
cout << "————————————————————————————————————————————————————————————————"<<endl;
|
cout << "————————————————————————————————————————————————————————————————"<<endl;
|
||||||
}
|
}
|
||||||
int make_choice(void)
|
int make_choice(void)
|
||||||
{
|
{
|
||||||
int c; // 用户输入
|
int c; // 用户输入
|
||||||
int n = 0; // 正确读入的数据项个数
|
int n = 0; // 正确读入的数据项个数
|
||||||
while (n == 0) {
|
while (n == 0) {
|
||||||
printf("请选择:");
|
printf("请选择:");
|
||||||
n = scanf("%d", &c); // 尝试读入整数 c
|
n = scanf("%d", &c); // 尝试读入整数 c
|
||||||
scanf("%*[^\n]"); // 跳过一行中剩余的字符
|
scanf("%*[^\n]"); // 跳过一行中剩余的字符
|
||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
int confirm(const char* msg)
|
int confirm(const char* msg)
|
||||||
{
|
{
|
||||||
char c = 'n'; // 默认选择是 no
|
char c = 'n'; // 默认选择是 no
|
||||||
printf("%s(Y/N): ", msg); // 提示输入 yes/no 进行确认s
|
printf("%s(Y/N): ", msg); // 提示输入 yes/no 进行确认s
|
||||||
scanf(" %c%*[^\n]", &c); // 读取第一个字符,忽略剩余字符
|
scanf(" %c%*[^\n]", &c); // 读取第一个字符,忽略剩余字符
|
||||||
return c == 'y' || c == 'Y'; // 返回确认结果
|
return c == 'y' || c == 'Y'; // 返回确认结果
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,231 +0,0 @@
|
|||||||
#ifndef DATA_H_INCLUDED
|
|
||||||
#define DATA_H_INCLUDED
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "sqlist.h"
|
|
||||||
|
|
||||||
|
|
||||||
struct Book {
|
|
||||||
int id; // 编号
|
|
||||||
string title; // 标题
|
|
||||||
int number; // 数量
|
|
||||||
};
|
|
||||||
|
|
||||||
SqList <Book> books;
|
|
||||||
|
|
||||||
// 函数声明
|
|
||||||
bool bookempty(); // 书籍库判空
|
|
||||||
void input(Book& b); // 输入一本书的信息
|
|
||||||
void print(const Book& b);// 打印一本书的信息
|
|
||||||
int find(int id); // 根据 id 查找图书 || 若找到,返回元素的位序,找不到时返回 0
|
|
||||||
|
|
||||||
void DoAddBook(); // 添加图书
|
|
||||||
void DoFindBook(); // 查找图书
|
|
||||||
void DoDeleteBook(); // 删除图书
|
|
||||||
void DoPrintBook(); // 打印所有图书
|
|
||||||
void DoRepaidBook(); // 归还图书
|
|
||||||
void DoBoorowBook(); // 借用图书
|
|
||||||
void DoReviseBook(); // 修改图书
|
|
||||||
void DoSortBook(); // 排序图书
|
|
||||||
|
|
||||||
|
|
||||||
// 输入一本书的信息
|
|
||||||
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++)
|
|
||||||
{
|
|
||||||
if (id == books.elem[i].id){
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0; // not found
|
|
||||||
}
|
|
||||||
|
|
||||||
// 书籍库判空
|
|
||||||
bool bookempty()
|
|
||||||
{
|
|
||||||
int a=0;
|
|
||||||
for (int i=1;i<=books.length;i++)
|
|
||||||
{
|
|
||||||
if (find(i)==0) a++;
|
|
||||||
}
|
|
||||||
if (a==books.length) return true;
|
|
||||||
else return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加图书
|
|
||||||
void DoAddBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Add Book"<< endl<<endl;
|
|
||||||
Book book;
|
|
||||||
input(book); //输入图书
|
|
||||||
books.elem[books.length + 1] = book;
|
|
||||||
books.length++;
|
|
||||||
print(book);
|
|
||||||
cout << "*******Added********" << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查找图书
|
|
||||||
void DoFindBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Find Book" << endl <<endl;
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除图书
|
|
||||||
void DoDeleteBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Delete Book" << endl << endl;
|
|
||||||
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
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 打印所有图书
|
|
||||||
void DoPrintBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Print All Books" << endl <<endl;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 归还图书
|
|
||||||
void DoRepaidBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Repaid Book" << endl<<endl;
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 借用图书
|
|
||||||
void DoBoorowBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Boorow Book" << endl <<endl;
|
|
||||||
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 cout<< "NOT FOUND THIS BOOK"<<endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改图书
|
|
||||||
void DoReviseBook()
|
|
||||||
{
|
|
||||||
cout <<endl<< "Revise Book" <<endl <<endl;
|
|
||||||
int id;
|
|
||||||
printf( "Which book you wanna revise ?\n" );
|
|
||||||
cin >> id;
|
|
||||||
|
|
||||||
if ( find(id)!=0 ) {
|
|
||||||
printf ( "Original book number : %d\n", books.elem[id].number );
|
|
||||||
printf ( "Revised number :" );
|
|
||||||
int xiugai;
|
|
||||||
scanf ( "%d", &xiugai );
|
|
||||||
books.elem[id].number+=xiugai;
|
|
||||||
cout << "**********************" << endl;
|
|
||||||
printf ( "Revise success \n" );
|
|
||||||
}
|
|
||||||
else printf ( "No such book\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 排序图书
|
|
||||||
void DoSortBook()
|
|
||||||
{
|
|
||||||
cout << endl << "Sort Books" << endl << endl;
|
|
||||||
int a=0;
|
|
||||||
if (bookempty()) cout << "Book data empty"<< endl;
|
|
||||||
else {
|
|
||||||
for (int i=1;i<books.length;i++)
|
|
||||||
for (int j=books.length;j>0;j--)
|
|
||||||
{
|
|
||||||
if (books.elem[i].id>books.elem[j].id) {
|
|
||||||
Book temp=books.elem[i];books.elem[i]=books.elem[j];books.elem[j]=temp;}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cout << "*****************************" <<endl;
|
|
||||||
cout << "Sort success"<<endl;
|
|
||||||
}
|
|
||||||
#endif // DATA_H_INCLUDED
|
|
@ -0,0 +1,6 @@
|
|||||||
|
*******图书管理系统启动*******
|
||||||
|
————————————————————————————————————————————————————————————————
|
||||||
|
| 1 查书 | 2 借书 | 3 还书 | 4 打印 | 5 添加 |
|
||||||
|
| 6 删除 | 7 修改 | 8 排序 | 0 退出 |
|
||||||
|
————————————————————————————————————————————————————————————————
|
||||||
|
请选择:
|