需要帮助搜索我的电影数据库 C++ 的功能

Posted

技术标签:

【中文标题】需要帮助搜索我的电影数据库 C++ 的功能【英文标题】:Need help searchfunction for my moviedatabase C++ 【发布时间】:2013-05-09 06:00:28 【问题描述】:

我的电影数据库出现问题,我的搜索功能无法正常工作。 我是个初学者,已经得到了网络的搜索功能,但它不会搜索。

这是我的代码。

#include <iostream>
#include <vector>
#include <sstream> // För att kunna använda sig av getline()
#include <string> // För att kunna använda sig av getline()
#include <algorithm>

using namespace std;

class Film

public:
    string Titel;
    string Typ;

// FUNKTION: Skriver ut filmens titel och typ
    void skrivUtFilm()
    
        cout << endl;
        cout << "Titel: " << Titel << endl; // Skriver ut filmens titel
        cout << "Typ: " << Typ << endl; // Skriver ut filmens typ
    
;

int main()

    vector<Film> Databas;             // Skapa en vektor av typen Film

    Film nyFilm;                    // För att kunna skapa en film behöver vi kunna spara den

    while (true)
    
        // Skriver ut menyn:
        cout << " === FILMDATABAS === " << endl;
        cout << "1: Registera en ny film"   << endl;
        cout << "2: S\x94k efter en film"   << endl;
        cout << "3: Skriv ut filmlistan"    << endl;
        cout << "0: Avsluta"    << endl;
        cout << "Ange ditt val: ";

        char menySelection; // Användarens val
        cin >> menySelection;


        if (menySelection == '1') // Registerar nya filmer
        
            cin.get();
            cout << "\n\n1: Registrera en ny film\n";
            cout << "Vad \x84r filmens Titel: ";
            getline(cin, nyFilm.Titel);

            cout << "\x8er filmen p\x86 DVD eller BluRay? ";
            getline(cin, nyFilm.Typ);
            cout << endl;

            // Vi lägger vårt filmobjekt i vektorn
            Databas.push_back( nyFilm );
        
        else if (menySelection == '2') // Söker efter filmer som användaren har lagt till
        
            cin.get();
            cout << "\nS\x94k efter filmer i databasen: \n\n";
            string objekt;
            getline(cin, objekt);
            cout << endl;

            vector<Film>::iterator it;

            it = find_if(Databas.begin(), Databas.end(),[&] ( const Film &f )
            
                return ( f.Titel == objekt);
            );
        
        else if (menySelection == '3') // Skrivet ut alla filmer i Filmarkivet
        
            cout << "\n=========\n";
            cout << "Filmlistan\n";
            for(int i=0; i<Databas.size(); i++)
            
                Databas[i].skrivUtFilm(); // Skriver ut dem med hjälp av skrivUtFilm();
            
            cout << "\n=========\n";
            cout << "\n\nTryck p\x86 ENTER f\x94r att \x86terv\x84nda till menyn.\n\n";
            cin.get();
        
        else if (menySelection == '0') // Avslutar programmet
        
            break;
        
        else   
        
            cout << "Ogiltigt val!\n." << endl;
        
    
    cin.get();
    return 0;

【问题讨论】:

什么不起作用?您不检查从 find_if 返回的迭代器,因此它可能工作正常而您不知道。线性搜索只是遍历向量并与标题进行比较。不难。 不起作用的事情是在我使用选项 1 注册了一部电影之后,我想在选项 2 中搜索它,但是当我写了类型或标题时按下回车,它只是返回再次显示菜单,而不返回有关电影/类型的任何信息。我不知道我是否为我想做的事情使用了错误的代码。 就像我说的,您没有对从搜索中获得的数据做任何事情。您需要使用find_if 以某种方式返回的迭代器。 【参考方案1】:

当你找到这部电影时,你不会对它做任何事情。

在搜索功能之后,你应该添加如下内容:

if (it != Databas.end()) 
    it->skrivUtFilm();

 else 
    cout << "No film found" << endl;


打印有关您找到的电影的信息,或显示未找到电影的消息。

【讨论】:

非常感谢 LPC 的帮助,它现在按预期工作,我很高兴你能抽出时间来帮助我 :)

以上是关于需要帮助搜索我的电影数据库 C++ 的功能的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb Springmvc 电影院售票管理系统(数据库+源码+论文可运行《精品毕设》)主要实现了用户管理电影管理影片浏览选择票务管理订单通知公告影院模拟支付个人信息等功能

[Haskell电影搜索

Django实现微电影网站

Python丨Django实现微电影网站

需要帮助以使搜索功能在反应中起作用[关闭]

MySQL初学者查询帮助,电影和演员