Тема: Проблема з пошуком по файлу та редагуванням інформації
СрочноТерміново, допоможіть, будь ласка. Завтра здача курсової, а в мене проблема з кодом. Не працює пошук по файлу та редагування інформації в файлі. Працювало все до того моменту, поки не відредагувала введення даних. Після цього як не пробувала змінювати - результату ніякого, і я ніяк не можу зрозуміти у чому проблема. Буду дуже вдячна, якщо допоможете. Програма типу міні база-даних у файлі формату .txt .
#include <iostream>
#include <string>
#include <fstream>
#include <cstdio>
#include <locale>
#include <windows.h>
using namespace std;
void input();
void searchname();
void searcht();
void searchinfom();
void quit();
void displayall();
void search();
void deleteFile();
void editFile();
int main()
{
system("title Database Program");
system("cls");
system("color 0F");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int choice;
cout << "1.Введіть назву нового закладу " << endl;
cout << "2.Пошук по базі даних закладів" << endl;
cout << "3.Очистити журнал" << endl;
cout << "4.Редагувати дані" << endl;
cout << "5.Вийти з програми" << endl;
cin >> choice;
switch (choice) {
case 1:
input();
break;
case 2:
search();
break;
case 3:
deleteFile();
break;
case 4:
editFile();
break;
case 5:
quit();
break;
cin.get();
}
}
void editFile()
{
string name, input, newName, decision;
string t;
string inform;
ifstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt");
if (!foodestablishment.eof()) {
foodestablishment >> name >> t >> inform;
}
system("cls");
cout << "Введіть назву закладу:";
cin >> input;
if (input == name)
{
cout << name << " | " << t << " | " << inform << endl;
cout << "Це правильно введена назва закладу[Т]ак[Н]і:";
cin >> decision;
if (decision == "Т") {
cout << "Введіть нову назву:";
cin >> newName;
name = newName;
}
foodestablishment.close();
}
ofstream foodestablishment2("БазаданихзакладівхарчуванняКременця.txt", ios::app);
foodestablishment2 << name << ' ' << t << ' ' << inform << endl;
foodestablishment2.close();
system("pause");
main();
}
void input()
{
string name, t, inform;
ofstream newfoodestablishment("БазаданихзакладівхарчуванняКременця.txt", ios::app);
system("cls");
cout << "Додайте дані про новий заклад" << endl;
cin >> name;
cin.ignore();
system("cls");
cout << "Введіть тип закладу " << endl;
getline(cin, t);
cin.ignore();
system("cls");
cout << "Введіть коротку інформацію про заклад" << endl;
getline(cin, inform);
cin.ignore();
system("cls");
newfoodestablishment << name << " | " << t << " | " << inform << endl;
newfoodestablishment.close();
main();
}
void searchname()
{
ifstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt");
string name;
string str, line;
string t;
string offset;
string inform;
string s;
system("CLS");
cout << "Введіть назву закладу:";
cin >> str;
while (foodestablishment >> name >> t >> inform)
{
if (str == name)
{
system("CLS");
cout << "Заклад знайдено" << endl;
cout << "Назва" << " | " << "Тип" << " | " << "Інформація про заклад" << endl;
cout << "---------------------------------" << endl;
//getline(foodestablishment, s);
//cout << s << endl;
cout << name << " | " << t << " | " << inform << endl;
}
}
while (foodestablishment >> name)
{
if (str != name)
{
system("CLS");
cout << "Не існує закладу з такою назвою " << endl;
}
}
system("pause");
main();
}
void searcht()
{
ifstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt");
string name;
string t;
string ft;
string inform;
system("CLS");
cout << "Введіть тип закладу: ";
cin >> ft;
while (foodestablishment >> name >> t >> inform) {
if (ft == t) {
system("CLS");
cout << "Заклад знайдено " << endl;
cout << "Назва" << ' ' << "Тип" << ' ' << "Інформація" << endl;
cout << "---------------" << endl;
cout << name << ' ' << t << ' ' << inform << endl;
}
}
while (foodestablishment >> t) {
if (ft != t) {
system("CLS");
cout << "Заклад не знайдено " << endl;
}
}
system("pause");
cin.get();
main();
}
void searchinform()
{
ifstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt");
string name;
string t;
string inform;
string finform;
system("CLS");
cout << "Введіть інформацію про заклад:";
cin >> finform;
while (foodestablishment >> name >> t >> inform) {
if (finform == inform) {
system("cls");
cout << "Заклад знайдено" << endl;
cout << "Назва" << ' ' << "Тип" << ' ' << "Інформація" << endl;
cout << "---------------" << endl;
cout << name << ' ' << t << ' ' << inform << endl;;
}
}
while (foodestablishment >> inform) {
if (finform != inform) {
system("CLS");
cout << "Заклад не знайдено" << endl;
}
}
system("pause");
cin.get();
main();
}
void quit()
{
system("CLS");
cout << "Дякую, що використали мою програму" << endl;
system("pause");
cin.get();
}
void displayall()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
ifstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt");
string t;
string inform;
string name;
string str;
system("CLS");
cout << "Вся інформація про всі заклади" << endl;
cout << "Назва" << " | " << "Тип" << " | " << "Інформація" << endl;
cout << "---------------" << endl;
while (!foodestablishment.eof()) {
str = " ";
getline(foodestablishment, str);
cout << str << endl;
}
system("pause");
cin.get();
main();
}
void search()
{
string t;
string name;
string inform;
int choice2;
system("CLS");
cout << "1.Шукати по назві" << endl;
cout << "2.Шукати по типу" << endl;
cout << "3.Шукати по інформації" << endl;
cout << "4.Показати всю інформацію про всі заклади" << endl;
cout << "5.Вернутися у попереднє меню" << endl;
cout << "6.Закрити програму" << endl;
cin >> choice2;
switch (choice2) {
case 1:
searchname();
break;
case 2:
searcht();
break;
case 3:
searchinform();
break;
case 4:
displayall();
break;
case 5:
main();
break;
case 6:
quit();
break;
}
}
void deleteFile()
{
string decision;
cout << "Ви впевнені?[Т]ак[Н]і" << endl;
cin >> decision;
if (decision == "Т") {
ofstream foodestablishment("БазаданихзакладівхарчуванняКременця.txt", ios_base::trunc);
system("cls");
cout << "Успішно виконано!" << endl;
system("pause");
foodestablishment.close();
main();
}
else {
main();
}
}