Basic Anime Recommendation Engine C++
Tags: cpp, struct
Published: 2022-08-07 14:35:09

I have been developing in python for the last few years. C++ was something that I highly doubt I would ever need to learn but well lucks plays out in mysterious ways. Being in the final year of Electrical Engineering options of course I opted for a final year project in computer science because why make your life easier. 

Coming to the point here is the first ever project that I implemented using C++. 

This is an anime recommendation engine at its most basic form using almost all the basic elements the C++ has to offer. 

It can act as a very good beginner project which can be used by you to build something on for your own course. 

**Problem Statement**: Build a recommendation engine that:

1. Asks the user to register 
2. Verifies the user by asking it to login 
3. Asks the user to answer two questions 
4. Recommends anime based on the answers 

The Project can be extended to much more complex recommendations by simple adding more questions.

Lets dive into the code. 

**CODE**

```
#include <iostream>
#include <string.h>
#include <iomanip>

using namespace std;


int main(void){

    string name = "temp";
    string password = "temp";
    string login_name = "temp_1";
    string login_password = "temp_2";
    int input;
    string genre_in;
    bool air_in;
    int counter = 0;
    string output_name[2];
    int output_score[2];
    bool flag = false;

     struct {
        string name;
        string genre;
        int score;
        bool air;
    } anime[4][4];


    struct {
        string name;
        string genre;
        int score;
        bool air;
    } database[4][4];

    // name
    database[0]->name = "aot";
    database[1]->name = "death note";
    database[2]->name = "hero academia";
    database[3]->name = "haikyu";
    database[4]->name = "beyblade";
    // genre
    database[0]->genre = "action";
    database[1]->genre = "thrill";
    database[2]->genre = "action";
    database[3]->genre = "thrill";
    database[4]->genre = "action";
    // score 
    database[0]->score = 10;
    database[1]->score = 8;
    database[2]->score = 10;
    database[3]->score = 7;
    database[4]->score = 5;
    //air 
    database[0]->air = true;
    database[1]->air = false;
    database[2]->air = true;
    database[3]->air = true;
    database[5]->air = false;







    cout << "Welcome to anime recommednation engine !" << endl;
    cout << "Please register below to continue !" << endl;
    cout << endl;
    cout<<"Enter a user name: "<<flush;
    cin >> name;
    cout<< "Enter a password "<<flush;
    cin>>password;

    cout << " Thank you for registering !" << endl;
    cout << "Now you have to login !" <<endl;
    
    do{
        cout<<"username: "<< flush;
        cin>>login_name;
        cout<<"password: "<< flush;
        cin>>login_password;

        if((password==login_password) && (name==login_name)){
            cout<<"thank you logging in"<<endl;
            break;
        }
        else {
            cout<<"Please try again with correct information"<<endl;
        }
    } while (password!=login_password);





    cout<<"Welcome to the recommendtion engine!"<<endl;
    cout<<"what genre of anime you like ?" <<endl;
    cout<<"1- Action 2- Thrill (Enter 1 or 2): "<<endl;
    cin>>input;

    if (input == 1){
            genre_in = "action";
            
        }
    else if(input == 2){
            genre_in = "thrill";
        }

    cout<<"Do you want it to be on air ?" <<endl;
    cout<<"1- Yes 2- No (Enter 1 or 2): "<<endl;
    cin >> input;
    if (input == 1){
            air_in = true;
        
            
        }
    else if (input == 2){
            air_in = false;
          
        }


     for(int i = 0; i < 4 ; i++){
        if(database[i]->genre==genre_in){
            if(database[i]->air==air_in){
                output_name[counter] = database[i]->name;
                output_score[counter] = database[i]->score;
                counter++;
            }
        }
    }

    
    for(int j = 0; j < 2 ;j++){
        cout<<"Recommendation " << j << ": "<< output_name[j] << " Score: " << output_score[j]<<endl;
    }

   

    return 0;
}
```
```

The code is self explanatory and I am hoping comments are not needed to understand it. In case of any questions feel free to ask.