0

Здраствуйте, я делаю базу данных в консольном приложении на С++. У меня есть файлы с данными, которые нужно отфильтровать. Проект я делаю с использованием хедеров, где описываю классы и методы классов. В чем же ПРОБЛЕМА. При попытке отфильтровать данные за заданым критерием, компилируя проект, видает 2 какие-то непонятные ошыбки, хотя в самом написанном коде компилятор ошибок не выдает. Я хочу реализовать 4 запрос. Помогите разобратся) Код файлов .cpp и .h Main файл

#include "Additionals.h"
#include "CompetitionsFunctions.h"
using namespace std;

//class Sport_clubs { //public: // void Show_all_clubs() {}; //
//}; // //class Sport_sporudy { //public: // void Show_sporudy() {}; // //}; // // //class Organisators { //public: // void Show_organisators() {}; // //}; // //class Competitions : public Organisators, Sport_sporudy { //public: // void Show_competitions() {}; // //}; // //class Coachs : public Sport_clubs { //public: // void Show_coachs() {} // //}; // //class Sportsmen : public Sport_clubs, Coachs { //public: // void Show_sportmen() {}; // void Show_best_sportmen() {}; // void Show_free_sportsmen() {}; // void Show_pryzery() {}; // void Show_rozryad() {}; // //};

int state_Menu; void Menu() { cout << "Виберіть дію:" << endl << "1. Перелік спортивних клубів міста" << endl << "2. Список спортсменів певного клубу, що займаються зазначеним видом спорту" << endl << "3. Список тренерів певного клубу за певним видом спорту" << endl << "4. Перелік змагань, проведених з певного виду спорту" << endl << "5. Список призерів змагань із зазначеного виду спорту" << endl << "6. Список найкращих(по кількості зайнятих призових місць) спортсменів міста" << endl << "7. Список спортсменів, які не брали участь в жодних змаганнях" << endl << "8. Список спортсменів певного розряду зазначеного спортивного клубу" << endl << "9. Список організаторів змагань та число проведених ними змагань" << endl << "10. Перелік змагань проведених зазначеним організатором" << endl << "11. Перелік спортивних клубів і число спортсменів цих клубів, що брали участь у змаганнях" << endl << "12. Перелік спортивних споруд міста зазначеного типу в цілому або такі що задовольняють заданим характеристикам" << endl << "13. Перелік змагань, які проводились на зазначених спортивних спорудах міста" << endl << "0. Вихід з програми" << endl << "Ваш вибір: "; cin >> state_Menu;

}

int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251);

Menu();

int _size = 0; 
Competitions_Data* arrCompetitions = new Competitions_Data[_size];
DataCompReading(arrCompetitions, _size, &quot;Competitions.txt&quot;);

while (state_Menu != 0)
{
    switch (state_Menu)
    {
    case 1:
        system(&quot;cls&quot;);
        showOnlySportClubs();
        cout &lt;&lt; endl;
        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 2:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 3:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 4: //Перелік змагань, проведених з певного виду спорту
        system(&quot;cls&quot;);
        if (_size != 0) {
            findCompBySport(arrCompetitions, _size);
        }
        else {
            cout &lt;&lt; &quot;Файл порожній!&quot; &lt;&lt; endl;
        }
        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 5:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 6:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 7:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 8:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 9:
        system(&quot;cls&quot;);
        showOrganisators();
        cout &lt;&lt; endl;
        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 10:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 11:
        system(&quot;cls&quot;);
        showSportClubs();
        cout &lt;&lt; endl;
        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 12:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;
    case 13:
        system(&quot;cls&quot;);

        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;

    default:
        cout &lt;&lt; &quot;Пункт введено не вірно&quot; &lt;&lt; endl;
        system(&quot;pause&quot;);
        system(&quot;cls&quot;);
        Menu();
        break;

    }
}

system(&quot;cls&quot;);
cout &lt;&lt; &quot;Роботу закінчено!&quot; &lt;&lt; endl;

return 0;

}

Competitions.h

#pragma once
#include <iostream>
#include <string>
#include <fstream>
#include <Windows.h>

using namespace std;

struct Competitions { string comp_name, comp_sport, comp_org, comp_sporuda; };

class Competitions_Data { protected: Competitions comp_data; public: Competitions_Data(); Competitions_Data(Competitions comp_data_); ~Competitions_Data();

void Print();
void DataEntry(Competitions comp_data_);

Competitions GetCompData() { return comp_data; }

Competitions_Data&amp; operator = (Competitions_Data d_o);

};

Competitions.cpp

#include "Competitions.h"

Competitions_Data::Competitions_Data() { comp_data.comp_name = ""; comp_data.comp_sport = ""; comp_data.comp_org = ""; comp_data.comp_sporuda = "";

} Competitions_Data::Competitions_Data(Competitions comp_data_) { comp_data.comp_name = comp_data_.comp_name; comp_data.comp_sport = comp_data_.comp_sport; comp_data.comp_org = comp_data_.comp_org; comp_data.comp_sporuda = comp_data_.comp_sporuda; }

Competitions_Data::~Competitions_Data() { } void Competitions_Data::Print() { cout << "Назва змагання: " << comp_data.comp_name << endl; cout << "Вид спорту: " << comp_data.comp_sport << endl; cout << "Організатор: " << comp_data.comp_org << endl; cout << "Спортивна споруда: " << comp_data.comp_sporuda << endl; }

void Competitions_Data::DataEntry(Competitions comp_data_) { comp_data.comp_name = comp_data_.comp_name; comp_data.comp_sport = comp_data_.comp_sport; comp_data.comp_org = comp_data_.comp_org; comp_data.comp_sporuda = comp_data_.comp_sporuda; } Competitions_Data& Competitions_Data::operator=(Competitions_Data arrCompetitions_o) { this->comp_data.comp_name = arrCompetitions_o.comp_data.comp_name; this->comp_data.comp_sport = arrCompetitions_o.comp_data.comp_sport; this->comp_data.comp_org = arrCompetitions_o.comp_data.comp_org; this->comp_data.comp_sporuda = arrCompetitions_o.comp_data.comp_sporuda;

return *this;

}

CompetitionsFunctions.h

#pragma once
#include "Competitions.h"

void DataEntry(Competitions_Data* (arrCompetitions), int& mass); void DataCompReading(Competitions_Data* (&arrCompetitions), int& mass, string fileName); void showComp(Competitions_Data* arrCompetitions, int mass); void Copy(Competitions_Data* arrCompetitions_n, Competitions_Data* arrCompetitions_o, int mass); void findCompBySport(Competitions_Data* arrCompetitions, int mass); void DataSave(Competitions_Data* arrCompetitions, int mass, string fileName);

CompetitionsFunctions.cpp

    #include "CompetitionsFunctions.h"
    void DataEntry(Competitions_Data* (&amp;arrCompetitions), int&amp; mass) {
        Competitions competitions;
        cout &lt;&lt; &quot;Введіть розмір масиву: &quot;;
    cin &gt;&gt; mass;
    arrCompetitions = new Competitions_Data[mass];
    for (int i = 0; i &lt; mass; i++) {
        char e; cin.get(e);
        cout &lt;&lt; &quot;Введіть назву змагання: &quot;;
        getline(cin, competitions.comp_name, '\n');
        cout &lt;&lt; &quot;Введіть вид спорту змагання: &quot;;
        getline(cin, competitions.comp_sport, '\n');
        cout &lt;&lt; &quot;Введіть організатора: &quot;;
        cin &gt;&gt; competitions.comp_org;
        cout &lt;&lt; &quot;Введіть спортивну споруду: &quot;;
        getline(cin, competitions.comp_sporuda, '\n');
        //add new data to element of array
        arrCompetitions[i].DataEntry(competitions);
        cout &lt;&lt; &quot;_______________________\n&quot;;
    }
}
void DataСompReading(Competitions_Data* (&amp;arrCompetitions), int&amp; mass, string fileName) {
    ifstream fin(fileName);
    if (fin) {
        Competitions competitions;
        fin &gt;&gt; mass;
        arrCompetitions = new Competitions_Data[mass]; 
        for (int i = 0; i &lt; mass; i++) {
            getline(fin, competitions.comp_name);
            getline(fin, competitions.comp_sport);
            getline(fin, competitions.comp_org);
            getline(fin, competitions.comp_sporuda);
            arrCompetitions[i].DataEntry(competitions);
        }
    }
    else {
        cout &lt;&lt; &quot;Problem with file opening!&quot; &lt;&lt; endl;
    }
    fin.close();
}

void showComp(Competitions_Data* arrCompetitions, int mass) {
    for (int i = 0; i &lt; mass; i++) {
        cout &lt;&lt; &quot;Змагання #&quot; &lt;&lt; i + 1 &lt;&lt; endl;
        arrCompetitions[i].Print();
        cout &lt;&lt; &quot;_______________________________________\n&quot;;
    }
}
void Copy(Competitions_Data* arrCompetitions_n, Competitions_Data* arrCompetitions_o, int mass) {
    for (int i = 0; i &lt; mass; i++) {
        arrCompetitions_n[i] = arrCompetitions_o[i];
    }
}

void findCompBySport(Competitions_Data* arrCompetitions, int mass) {
    string sport;
    cout &lt;&lt; &quot;Введіть вид спорту: &quot;;
    cin &gt;&gt; sport;
    system(&quot;cls&quot;);
    for (int i = 0; i &lt; mass; i++) {
        if (arrCompetitions[i].GetCompData().comp_sport == sport) {
            cout &lt;&lt; &quot;Змагання #&quot; &lt;&lt; i + 1 &lt;&lt; endl;
            arrCompetitions[i].Print();
                cout &lt;&lt; &quot;_______________________\n&quot;;
        }
    }
}

void DataSave(Competitions_Data* arrCompetitions, int mass, string fileName) {
    ofstream fout(fileName);
    if (fout) {
        fout &lt;&lt; mass &lt;&lt; endl;
        for (int i = 0; i &lt; mass; i++) {
            fout &lt;&lt; arrCompetitions[i].GetCompData().comp_name &lt;&lt; endl
                &lt;&lt; arrCompetitions[i].GetCompData().comp_sport &lt;&lt; endl
                &lt;&lt; arrCompetitions[i].GetCompData().comp_org &lt;&lt; endl
                &lt;&lt; arrCompetitions[i].GetCompData().comp_sporuda &lt;&lt; endl;
            if (i &lt; mass - 1) {
                fout &lt;&lt; endl;
            }
        }
    }
    else {
        cout &lt;&lt; &quot;Проблеми з відкриттям файлу!&quot;;
    }
    cout &lt;&lt; &quot;Дані про змагання збережено: &quot; &lt;&lt; endl;
    fout.close();
}

Код ошыбки

Ошибка  LNK2019 ссылка на неразрешенный внешний символ "void __cdecl DataCompReading(class Competitions_Data * &,int &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?DataCompReading@@YAXAEAPEAVCompetitions_Data@@AEAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) в функции main.  Kursova robota  D:\KURSOVA\Kursova robota\Kursova robota.obj    1

Ошибка LNK1120 неразрешенных внешних элементов: 1 Kursova robota D:\KURSOVA\Kursova robota\x64\Debug\Kursova robota.exe 1

0 Answers0