📄 untitled1.cpp
字号:
#include <iostream>
#include <conio.h>
#include <string>
#include <stdio.h>
using namespace std;
#define MAX_BOOKS 250
struct book_type
{
char isbn[20];
char author[20];
char title[20];
};
//Prototypes
void load_file(book_type books[]);
void save_file(book_type books[]);
void create_new(book_type books[]);
void search_isbn(book_type books[]);
void search_title(book_type books[]);
void display_all(book_type books[]);
int book_count(book_type books[]);
void show_book(book_type books[]);
//The Menu class - main Detail
int main()
{
book_type books[MAX_BOOKS];
char choice;
do
{
cout << " Book Catalogue" << endl;
cout << " ==============" << endl;
cout << "1. Load from File" << endl;
cout << "2. Save to File" << endl;
cout << "3. Create a New Entry" << endl;
cout << "4. Search for an ISBN" << endl;
cout << "5. Search for a Title" << endl;
cout << "6. Display All" << endl;
cout << "0. Exit" << endl;
cout << endl << endl;
cout << " Enter Choice (1...6,0) : ";
cin >> choice;
switch(choice)
{
case '1':
load_file(books);
break;
case '2':
save_file(books);
break;
case '3':
create_new(books);
break;
case '4':
search_isbn(books);
break;
case '5':
search_title(books);
break;
case '6':
display_all(books);
break;
default:
cout << endl << "Invalid Choice - Please Try Again" << endl;
}
}while(choice != '0');
}
//The Table class - load Detail
void load_file(book_type books[])
{
FILE *in_file;
in_file = fopen("books.dat","rb");
if(in_file == NULL)
{
cout << "File not found exception" << endl;
}
else
{
fread(books, sizeof(book_type), MAX_BOOKS, in_file);
fclose(in_file);
}
}
//The Table class - save Detail
void save_file(book_type books[])
{
FILE *out_file;
out_file = fopen("books.dat","wb");
fwrite(books, sizeof(book_type), MAX_BOOKS, out_file);
fclose(out_file);
}
//The Table class - createEntry Detail
void create_new(book_type books[])
{
int num_of_books, next_record_num;
num_of_books = book_count(books);
next_record_num = num_of_books;
if(num_of_books < MAX_BOOKS)
{
cout << "\n Enter the book's ISBN, author and title." << flush;
cout << "\n ISBN: " << flush;
cin >> books[next_record_num].isbn;
if(strlen(books[next_record_num].isbn) != 13)
{
cout << "Faulty ISBN" << endl << endl;
}
else
{
cout << endl << "Author: " << flush;
gets(books[next_record_num].author);
cout << endl << "Title: " << flush;
gets(books[next_record_num].title);
}
}
else
{
cout << "No space left" << endl;
}
save_file(books);
}
//The Table class - Search ISBN Delete
void search_isbn(book_type books[])
{
int num_of_books, record_num;
string isbn;
char choice;
num_of_books = book_count(books);
cout << "Enter ISBN to search for: ";
cin >> isbn;
for(record_num = 0; record_num <= num_of_books; record_num++)
{
if(isbn == books[record_num].isbn)
{
show_book(books);
cout << endl << endl;
cout << " Record Sub-Menu" << endl;
cout << " ============" << endl;
cout << "1. Delete" << endl;
cout << "0. Continue" << endl;
cout << " Enter Choice (1, 0) : ";
cin >> choice;
switch(choice)
{
case '0':
break;
case '1':
strcpy(books[record_num].isbn,books[num_of_books - 1].isbn);
strcpy(books[record_num].author,books[num_of_books - 1].author);
strcpy(books[record_num].title,books[num_of_books - 1].title);
books[num_of_books - 1].isbn[0] = 0;
break;
}
}
else
{
cout << "ISBN Not Found" << endl;
}
}
}
//The Table class - Search title Detail
void search_title(book_type books[])
{
int num_of_books, record_num;
string title;
num_of_books = book_count(books);
cout << "Enter title to seach for: ";
cin >> title;
for(record_num = 0; record_num <= num_of_books; record_num++)
{
if(title == books[record_num].title)
{
show_book(books);
}
else
{
cout << "Title Not Found \n";
}
}
}
//The Table class - Display All Detail
void display_all(book_type books[])
{
int record_num = 0;
int num = book_count(books);
if(book_count == 0)
{
cout<<"no data to display"<<endl;
}
for (int count = 0; count < num; count++)
{
cout << "ISBN: " << books[record_num].isbn << ";" << endl;
cout << "Author: " << books[record_num].author << ";" << endl;
cout << "Title: " << books[record_num].title << ".\n" << endl;
}
}
//Counter
int book_count(book_type books[])
{
int count;
count = 0;
while(strlen(books[count].isbn) > 0)
{
count++;
}
return(count);
}
//Show book
void show_book(book_type books[])
{
int record_num = 0;
cout << endl << "ISBN: " << books[record_num].isbn << ";";
cout << endl << "Author: " << books[record_num].author << ";";
cout << endl << "Title: " << books[record_num].title << ".\n";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -