⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled1.cpp

📁 图书管理程序,可用于查找书籍
💻 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 + -