Столкнулся с такой проблемой
Задали курсовую
Нужно написать программу для аэропорта
Должны присутстовавать следующие пункты
1.Занесение завяки в базу
2.Вывод всех заявок
3.Поиск по номеру
4.Удаление заявки
С первыми 3 пунктами справился, а вот с удалением никак
Перерыл кучу форумов и книжек, но не могу понять как это осуществить
Заявки хранятся в текстовом файле base.txt
Снизу код программы
Код:
struct Node
{
char point[20]; //- пункт назначения;
int reis; //- номер рейса;
char name[12]; //- фамилия пассажира;
char surname[12]; //- имя
char patr[12]; //- отчество
char date[100]; //- желаемая дата вылета;
Node * next; // указатель на структуру заявка.
};
void Menu();
Node *addNode(Node *first); // - добавление заявок в список;
Node *deleteNode(Node *first); // - удаление заявок по заданному номеру рейса
void outNode(Node *first); // - вывод всех заявок.
void outNodeNum(Node *first); // вывод одной заявки
int main()
{
setlocale(LC_ALL, "Rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Node *first = new Node;
Node *f1 = NULL;
int k = 5;
while (k != 6)
{
switch (k)
{
case 1: first = addNode(first); break;
case 2: outNode(first); break;
case 3: outNodeNum(first); break;
case 4: first = deleteNode(first); break;
case 5: Menu(); break;
case 6: break;
default: cout << " ОШИБКА! Числа от 1 до 6.\n";
}
cout << "\nВведите нужный пункт: ";
cin >> k;
}
getchar(); // пауза
return 0;
}
void Menu()
{
system("cls");
cout << "\n";
cout << "1 - Добавить заявку\n";
cout << "2 - Вывести все заявки\n";
cout << "3 - Вывести заявку по номеру рейса и дате вылета\n";
cout << "4 - Удалить заявку\n";
cout << "5 - Очистить экран\n";
cout << "6 - Выход\n";
}
// (1) Добавление заявки в базу
Node *addNode(Node *first)
{
cout << "______________________________________________\n";
Node *pv = new Node;
cout << "Данные о заявке: \n";
cout << "Введите номер рейса > ";
cin >> pv->reis;
cout << "Введите пункт назначения > ";
cin >> pv->point;
cout << "Введите имя пассажира > " ;
cin >> pv->name;
cout << "Введите фамилию пассажира > ";
cin >> pv->surname;
cout << "Введите отчество пассажира > ";
cin >> pv->patr;
cout << "Введите дату вылета > ";
cin >> pv->date;
cout << "\n";
pv->next = NULL;
{ fstream out("base.txt", ios::out | ios::app);
out << pv->reis << "\n";
out << pv->point << "\n";
out << pv->name << "\n";
out << pv->surname << "\n";
out << pv->patr << "\n";
out << pv->date << "\n";
out.close();
}
cout << "______________________________________________\n";
if (first == NULL)
{
first = pv;
return first;
}
}
// (2) Открытие базы данных
void outNode(Node *first)
{
string path = "base.txt";
ifstream fin;
fin.open(path);
if (!fin.is_open())
{
cout << "Ошибка открытия файла" << endl;
}
else
{
cout << "Файл открыт" << endl;
string str;
string str1;
string str2;
string str3;
string str4;
string str5;
string str6;
while (!fin.eof())
{
str = "";
getline(fin, str);
cout <<"Номер рейса: "<< str << endl;
str1 = "";
getline(fin, str1);
cout << "Пункт назначения: " << str1 << endl;
str2 = "";
getline(fin, str2);
cout << "Имя: " << str2 << endl;
str3 = "";
getline(fin, str3);
cout << "Фамилия: " << str3 << endl;
str4 = "";
getline(fin, str4);
cout << "Отчество: " << str4 << endl;
str5 = "";
getline(fin, str5);
cout << "Дата вылета: " << str5 << endl;
str6 = "";
cout << "_________________________________" << endl;
fin.ignore();
}
fin.close();
}
}
// (3) Вывод завяки по номеру рейса
void outNodeNum(Node *first)
{
struct work
{
string flightNumber;
string destination;
string surname;
string name;
string patronymic;
string dateOfDeparture;
};
{
ifstream fin("base2.txt");
if (!fin.is_open())
{
cerr << "Error!" << endl;
system("pause");
}
cout << "Введите номер рейса: ";
string flightNumber;
cin >> flightNumber;
cout << "______________________________________________\n";
work temp;
while (true)
{
fin >> temp.flightNumber;
if (fin.eof()) break;
fin >> temp.destination;
fin >> temp.surname;
fin >> temp.name;
fin >> temp.patronymic;
fin >> temp.dateOfDeparture;
if (temp.flightNumber == flightNumber) break;
}
if (!fin.eof())
{
cout << "Номер рейса: " << temp.flightNumber << endl;
cout << "Пункт назначения: " << temp.destination << endl;
cout << "Фамилия: " << temp.surname << endl;
cout << "Имя: " << temp.name << endl;
cout << "Отчество: " << temp.patronymic << endl;
cout << "Дата вылета: " << temp.dateOfDeparture << endl;
}
else cout << "Заявка не найдена!" << endl;
cout << endl;
system("pause");
}
}
//(4) Удаление завяки из базы
Node *deleteNode(Node *first)