Главная страница

Курсовая работа. Федеральное государственное автономное образовательное учреждение высшего образования


Скачать 243.5 Kb.
НазваниеФедеральное государственное автономное образовательное учреждение высшего образования
Дата19.01.2018
Размер243.5 Kb.
Формат файлаdoc
Имя файлаКурсовая работа.doc
ТипКурсовая
#34589
страница2 из 2
1   2


}

}

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

Данные сохранены \n\n";

}

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 Работа успешно завершена! \n\n";

}

}

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 Сортировка \n\n";

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 Сохранение информации \n\n";

save_data(begin);

break;

}

case '6':

{

system("cls");

cin.sync();

if (begin == 0)

{

cout << "Таблица пуста!" << endl << endl;

break;

}

cout << "\t\t Поиск \n\n";

search3(begin);

break;

}

case '7':

{

system("cls");

cin.sync();

cout << "\t\t Таблица \n\n";

print_table(begin);

cout << endl;

break;

}

case '8':

{

if (begin == NULL)

{

exit = true;

break;

}

allarmToSave(begin);

exit = true;

break;

}

default:

{

system("cls");

cin.sync();

cout << "\t\tПовторите ввод!\n" << endl;

break;

}

}

} while (!exit);

Free(&begin);

system("pause");

return 0;

}


1   2


написать администратору сайта