Здраствуйте, я делаю базу данных в консольном приложении на С++. У меня есть файлы с данными, которые нужно отфильтровать. Проект я делаю с использованием хедеров, где описываю классы и методы классов. В чем же ПРОБЛЕМА. При попытке отфильтровать данные за заданым критерием, компилируя проект, видает 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, "Competitions.txt");
while (state_Menu != 0)
{
switch (state_Menu)
{
case 1:
system("cls");
showOnlySportClubs();
cout << endl;
system("pause");
system("cls");
Menu();
break;
case 2:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 3:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 4: //Перелік змагань, проведених з певного виду спорту
system("cls");
if (_size != 0) {
findCompBySport(arrCompetitions, _size);
}
else {
cout << "Файл порожній!" << endl;
}
system("pause");
system("cls");
Menu();
break;
case 5:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 6:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 7:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 8:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 9:
system("cls");
showOrganisators();
cout << endl;
system("pause");
system("cls");
Menu();
break;
case 10:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 11:
system("cls");
showSportClubs();
cout << endl;
system("pause");
system("cls");
Menu();
break;
case 12:
system("cls");
system("pause");
system("cls");
Menu();
break;
case 13:
system("cls");
system("pause");
system("cls");
Menu();
break;
default:
cout << "Пункт введено не вірно" << endl;
system("pause");
system("cls");
Menu();
break;
}
}
system("cls");
cout << "Роботу закінчено!" << 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& 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* (&arrCompetitions), int& mass) {
Competitions competitions;
cout << "Введіть розмір масиву: ";
cin >> mass;
arrCompetitions = new Competitions_Data[mass];
for (int i = 0; i < mass; i++) {
char e; cin.get(e);
cout << "Введіть назву змагання: ";
getline(cin, competitions.comp_name, '\n');
cout << "Введіть вид спорту змагання: ";
getline(cin, competitions.comp_sport, '\n');
cout << "Введіть організатора: ";
cin >> competitions.comp_org;
cout << "Введіть спортивну споруду: ";
getline(cin, competitions.comp_sporuda, '\n');
//add new data to element of array
arrCompetitions[i].DataEntry(competitions);
cout << "_______________________\n";
}
}
void DataСompReading(Competitions_Data* (&arrCompetitions), int& mass, string fileName) {
ifstream fin(fileName);
if (fin) {
Competitions competitions;
fin >> mass;
arrCompetitions = new Competitions_Data[mass];
for (int i = 0; i < 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 << "Problem with file opening!" << endl;
}
fin.close();
}
void showComp(Competitions_Data* arrCompetitions, int mass) {
for (int i = 0; i < mass; i++) {
cout << "Змагання #" << i + 1 << endl;
arrCompetitions[i].Print();
cout << "_______________________________________\n";
}
}
void Copy(Competitions_Data* arrCompetitions_n, Competitions_Data* arrCompetitions_o, int mass) {
for (int i = 0; i < mass; i++) {
arrCompetitions_n[i] = arrCompetitions_o[i];
}
}
void findCompBySport(Competitions_Data* arrCompetitions, int mass) {
string sport;
cout << "Введіть вид спорту: ";
cin >> sport;
system("cls");
for (int i = 0; i < mass; i++) {
if (arrCompetitions[i].GetCompData().comp_sport == sport) {
cout << "Змагання #" << i + 1 << endl;
arrCompetitions[i].Print();
cout << "_______________________\n";
}
}
}
void DataSave(Competitions_Data* arrCompetitions, int mass, string fileName) {
ofstream fout(fileName);
if (fout) {
fout << mass << endl;
for (int i = 0; i < mass; i++) {
fout << arrCompetitions[i].GetCompData().comp_name << endl
<< arrCompetitions[i].GetCompData().comp_sport << endl
<< arrCompetitions[i].GetCompData().comp_org << endl
<< arrCompetitions[i].GetCompData().comp_sporuda << endl;
if (i < mass - 1) {
fout << endl;
}
}
}
else {
cout << "Проблеми з відкриттям файлу!";
}
cout << "Дані про змагання збережено: " << 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
DataCompReading? На будущее, показывайте ошибки текстом, а не картинками - и не эту таблицу, а вкладку output. – HolyBlackCat Jul 05 '22 at 18:01C– user7860670 Jul 05 '22 at 18:36