Курсовая работа. Федеральное государственное автономное образовательное учреждение высшего образования
Скачать 243.5 Kb.
|
1 2 \n\n";\n\n";\n\n";\n\n";\n\n";\n\n";} } List *t = begin; for (int i = 0; i < size_table(begin); i++) { *t = buf[i]; t = t->next; } delete[] buf; cout << "Таблица отсортирована!\n" << endl; } void save_data(List *begin) { ofstream fout; List *temp = begin; fout.open("ZNAK.txt", ios :: trunc); fout << size_table(begin) << endl; for (int i = 0; i < size_table(begin); i++) { fout << temp->data.firstName << " " << temp->data.secondName << " " << temp->data.number[0] << " " << temp->data.number[1] << " " << temp->data.number[2] << " " << temp->data.znak << endl; temp = temp->next; } fout.close(); cout << "\t\t |
}
void continue_work(List **begin, List **end)
{
ifstream fin;
List temp;
fin.open("ZNAK.txt");
if (!fin.is_open())
{
cout << "\t\tФайл ни разу не записывался!\n" << endl;
return;
}
if (*begin == NULL)
{
int a, b[3] = {};
fin >> a;
fin.get();
string str1, str2, str3;
for (int i = 0; i < a; i++)
{
fin >> str1; fin.get();
fin >> str2; fin.get();
fin >> b[0]; fin.get();
fin >> b[1]; fin.get();
fin >> b[2]; fin.get();
fin >> str3; fin.get();
temp.data.firstName = str1;
temp.data.secondName = str2;
temp.data.znak = str3;
temp.data.number[0] = b[0];
temp.data.number[1] = b[1];
temp.data.number[2] = b[2];
addList(begin, end, temp);
}
fin.close();
cout << "\t\tФайл успешно загрузился!\n" << endl;
}
}
void allarmToSave(List *begin)
{
cout << "Сохранить информацию перед выходом?\n1. ДА\n2. НЕТ" << endl;
short c;
cout << "Выберите значение: ";
while (!((cin >> c) && (c == 1 || c == 2)))
{
cin.clear();
cin.sync();
cout << endl << "Повторите ввод: ";
}
if (c == 1)
{
system("cls");
save_data(begin);
}
else
{
system("cls");
cout << "\t\t
}
}
List input_UPD(List *begin)
{
List a;
List *temp = begin;
int s;
do {
print_table(begin);
cout << "Введите имя:/назад - 0 ";
s = 0;
getline(cin, a.data.firstName);
while (1)
{
if (space_in_string(a.data.firstName))
{
cout << "В имени присутствует пробел. Повторите: ";
cin.clear();
cin.sync();
getline(cin, a.data.firstName);
}
else if (a.data.firstName == "0")
{
return a;
}
else if (checkNumbersInString(a.data.firstName))
{
cout << "В имени присутствуют цифры. Повторите: ";
cin.clear();
cin.sync();
getline(cin, a.data.firstName);
}
else break;
}
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName)
s++;
temp = temp->next;
}
temp = begin;
if (s == 0)
{
system("cls");
cout << "Нет совпадений именен. Повторите: " << endl;
}
else break;
} while (1);
if (s == 1)
{
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName)
{
a.data.secondName = temp->data.secondName;
a.data.number[0] = temp->data.number[0];
a.data.number[1] = temp->data.number[1];
a.data.number[2] = temp->data.number[2];
a.data.znak = temp->data.znak;
return a;
}
temp = temp->next;
}
}
if (s >= 2)
{
cout << "С таким именем найдено " << s << " человек. Продолжите ввод:\n" << endl;
}
do {
short qq = 1;
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName)
{
cout << qq << ") " << temp->data.firstName << " " << temp->data.secondName << " " << temp->data.number[0] << "." << temp->data.number[1] << "." << temp->data.number[2] << " " << temp->data.znak << endl;
qq++;
}
temp=temp->next;
}
temp = begin;
s = 0;
cout << "Введите фамилию:/назад - 0 ";
getline(cin, a.data.secondName);
while (1)
{
if (space_in_string(a.data.secondName))
{
cout << "В фамилии присутствует пробел. Повторите: ";
cin.clear();
cin.sync();
getline(cin, a.data.firstName);
}
else if (a.data.secondName == "0")
{
return a;
}
else if (checkNumbersInString(a.data.secondName))
{
cout << "В фамилии присутствуют цифры. Повторите: ";
cin.clear();
cin.sync();
getline(cin, a.data.secondName);
}
else break;
}
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName && a.data.secondName == temp->data.secondName)
s++;
temp = temp->next;
}
temp = begin;
if (s == 0)
{
system("cls");
cout << "Нет совпадений фамилии. Повторите: " << endl;
}
else break;
} while (1);
if (s == 1)
{
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName && a.data.secondName == temp->data.secondName)
{
a.data.secondName = temp->data.secondName;
a.data.number[0] = temp->data.number[0];
a.data.number[1] = temp->data.number[1];
a.data.number[2] = temp->data.number[2];
a.data.znak = temp->data.znak;
return a;
}
temp = temp->next;
}
}
if (s >= 2)
{
cout << "С таким именем и фамилией найдено " << s << " человек. Продолжите ввод:\n" << endl;
}
temp = begin;
do {
short qq = 1;
for (int i = 0; i < size_table(begin); i++)
{
if (a.data.firstName == temp->data.firstName && a.data.secondName == temp->data.secondName)
{
cout << qq << ") " << temp->data.firstName << " " << temp->data.secondName << " " << temp->data.number[0] << "." << temp->data.number[1] << "." << temp->data.number[2] << " " << temp->data.znak << endl;
qq++;
}
temp = temp->next;
}
temp = begin;
s = 0;
cout << "Введите дату рождения (год): ";
int date[3];
while (!(cin >> date[2] && date[2] >= 1950 && date[2] <= 2000))
{
cin.clear();
cin.sync();
cout << "Возможно, вы ввели букву, либо ввели число не в промежутке от 1950 до 2000. Повторите: ";
}
cout << "Введите дату рождения (месяц): ";
while (!(cin >> date[1] && date[1] >= 1 && date[1] <= 12))
{
cin.clear();
cin.sync();
cout << "Возможно, вы ввели букву, либо ввели число не в промежутке от 1 до 12. Повторите: ";
}
cout << "Введите дату рождения (день): ";
int year365_6[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (date[2] % 4 == 0 && date[2] % 400 == 0)
{
year365_6[2] = 29;
}
while (!(cin >> date[0] && date[0] >= 1 && date[0] <= year365_6[date[1] - 1]))
{
cin.clear();
cin.sync();
cout << "Возможно, вы ввели букву, либо ввели число не в промежутке от 1 до " << year365_6[date[1] - 1] << ". Повторите: ";
}
for (int i = 0; i < size_table(begin); i++)
{
if (temp->data.firstName == a.data.firstName && temp->data.secondName == a.data.secondName && temp->data.number[0] == date[0] && temp->data.number[1] == date[1] && temp->data.number[2] == date[2])
s++;
temp = temp->next;
}
temp = begin;
for (int i = 0; i < 3; i++)
a.data.number[i] = date[i];
if (s == 0)
{
system("cls");
cout << "Нет совпадений в дате рождения. Повторите: " << endl;
}
else break;
} while (1);
if (s == 1)
{
for (int i = 0; i < size_table(begin); i++)
{
if (temp->data.firstName == a.data.firstName && temp->data.secondName == a.data.secondName && temp->data.number[0] == a.data.number[0] && temp->data.number[1] == a.data.number[1] && temp->data.number[2] == a.data.number[2])
{
a.data.secondName = temp->data.secondName;
a.data.number[0] = temp->data.number[0];
a.data.number[1] = temp->data.number[1];
a.data.number[2] = temp->data.number[2];
a.data.znak = temp->data.znak;
return a;
}
temp = temp->next;
}
}
cin.get();
}
int main()
{
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
List *begin = NULL;
List *end = NULL;
bool exit = false;
char c;
do
{
PLAN();
cout << "Выберите значение: ";
cin >> c;
switch (c)
{
case '0':
{
system("cls");
cin.sync();
continue_work(&begin, &end);
break;
}
case '1':
{
system("cls");
cin.sync();
List a = inputValueСheck();
while (search(begin, a))
{
cout << "Такой человек уже есть, повторите ввод: " << endl;
a = inputValueСheck();
}
addList(&begin, &end, a);
system("cls");
cout << "Запись добавлена!\n" << endl;
break;
}
case '2':
{
system("cls");
cin.sync();
if (begin == 0)
{
cout << "Таблица пуста!\n" << endl;
break;
}
List x;
x = input_UPD(begin);
if (x.data.firstName == "0" || x.data.secondName == "0")
{
cout << "Действие отменено!\n" << endl;
break;
}
List *_q;
_q = search(begin, x);
edit(begin,_q);
break;
}
case '3':
{
system("cls");
if (begin == 0)
{
cout << "Таблица пуста!" << endl << endl;
break;
}
cin.sync();
cout << "\t\t
sort_table(begin);
break;
}
case '4':
{
system("cls");
cin.sync();
if (begin == 0)
{
cout << "Таблица пуста!" << endl << endl;
break;
}
cout << "Введите данные о человеке, которого хотите удалить:\n"<
List b;
b = input_UPD(begin);
if (b.data.firstName == "0" || b.data.secondName == "0")
{
cout << "Действие отменено!\n" << endl;
break;
}
delist(&begin, b);
cout << endl;
break;
}
case '5':
{
system("cls");
cin.sync();
if (begin == 0)
{
cout << "Таблица пуста!" << endl << endl;
break;
}
cout << "\t\t
save_data(begin);
break;
}
case '6':
{
system("cls");
cin.sync();
if (begin == 0)
{
cout << "Таблица пуста!" << endl << endl;
break;
}
cout << "\t\t
search3(begin);
break;
}
case '7':
{
system("cls");
cin.sync();
cout << "\t\t