- В проекте описан класс "Медицинские карты пациента".
- Каждая запись карты содержит дату приёма пациента, диагноз, назначение.
- Предусмотрена возможность формирования данных карты с клавиатуры и из файла.
- Возможна печать всех медицинских карт пациентов, карты определённого пациента, записей пациентов, сделанных в конкретный день.
- Возможны добавление и удаление записей, сохранение в файл.
- Программа содержит меню, позволяющее осуществить проверку работы всех методов класса.
- Для оптимизации поиска медицинских карт пациентов использовано бинарное дерево сортировки.
Фрагмент программного кода
Процедура рекурсивного поиска и дальнейшего вывода карты конкретного пациента
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);
}
Телеграм
-