- В проекте описан класс "Медицинские карты пациента".
- Каждая запись карты содержит дату приёма пациента, диагноз, назначение.
- Предусмотрена возможность формирования данных карты с клавиатуры и из файла.
- Возможна печать всех медицинских карт пациентов, карты определённого пациента, записей пациентов, сделанных в конкретный день.
- Возможны добавление и удаление записей, сохранение в файл.
- Программа содержит меню, позволяющее осуществить проверку работы всех методов класса.
- Для оптимизации поиска медицинских карт пациентов использовано бинарное дерево сортировки.
Фрагмент программного кода
Процедура рекурсивного поиска и дальнейшего вывода карты конкретного пациента
void Registry::PrintPacient(int day, int month, int year, string name, string sname, string fname, Card *&karta) { Card *cur = karta; if (cur->byear == year) { if (cur->bmonth == month) { if (cur->bday == day) { int i = 0; Card* cur1 = cur; while (cur1 != NULL) { if (cur1->name == name && cur1->sname == sname && cur1->fname == fname) // в случае совпадения всех параметров, начинаю вывод { cout << endl; cout << " Медицинская карта пациента" << endl << " Дата рождения и ФИО: "; cout << cur1->bday << "." << cur1->bmonth << "." << cur1->byear << " "; cout << (cur1->name) << " " << (cur1->sname) << " " << (cur1->fname) << endl; if (cur1->note == NULL) cout << " Kарта пуста" << endl << endl; else Look(cur1->note); PrintOneToFile("Вывод искомого больного.txt", cur1); // вывожу данные этого больного в отдельный файл } cur1 = cur1->next; } } else if (cur->bday > day) PrintPacient(day, month, year, name, sname, fname, cur->left); else PrintPacient(day, month, year, name, sname, fname, cur->right); } else if (cur->bmonth > month) PrintPacient(day, month, year, name, sname, fname, cur->left); else PrintPacient(day, month, year, name, sname, fname, cur->right); } else if (cur->byear > year) PrintPacient(day, month, year, name, sname, fname, cur->left); else PrintPacient(day, month, year, name, sname, fname, cur->right); }
MadamTat