Слайд 2ЗАДАНИЕ
Дан файл, содержащий сведения о пациентах клиники. Каждая строка файла содержит
![ЗАДАНИЕ Дан файл, содержащий сведения о пациентах клиники. Каждая строка файла содержит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-1.jpg)
запись об одном пациенте. Структура записи файла:
- фамилия и инициалы пациента;
- год рождения;
- дата поступления;
- диагноз.
Написать программу, которая
- выводит список пациентов, поступивших в заданный день;
- выводит средний возраст пациентов;
- записывает в новый файл список пациентов с заданным диагнозом.
Слайд 3Пример строки файла
Анисимов Д.Г. 1961 12.05.10 инфаркт миокарда
| 25 символов | 5
![Пример строки файла Анисимов Д.Г. 1961 12.05.10 инфаркт миокарда | 25 символов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-2.jpg)
| 9 | <= 40 |
Слайд 4Пример входного файла patient.txt
Анисимов Д.Г. 1961 12.05.10 пневмония
Хайрутдинов И.С. 1945 12.05.10 инфаркт
![Пример входного файла patient.txt Анисимов Д.Г. 1961 12.05.10 пневмония Хайрутдинов И.С. 1945](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-3.jpg)
миокарда
Петрова Т.В. 1933 13.05.10 стенокардия
Аксенов-Зварчук И.А.1955 13.05.10 пневмония
Галиева А.И. 1960 12.05.10 инсульт
Сидоров. П.Е. 1956 14.05.10 язва желудка
Хасанов И.Р. 1974 14.05.10 левосторонняя пневмония
Харламов Ф.А. 1957 13.05.10 цирроз печени
Иванов И.С. 1949 14.05.10 инфаркт миокарда
Могилевский С.П. 1943 12.05.10 стенокардия
Слайд 5Выходные данные
Меню:
Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших в заданный
![Выходные данные Меню: Выберите номер пункта меню: 1 - вывод списка пациентов,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-4.jpg)
день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
Слайд 6При выборе пункта 1 на экран выводится сообщение:
Введите дату поступления в виде:
![При выборе пункта 1 на экран выводится сообщение: Введите дату поступления в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-5.jpg)
дд.мм.гг
После ввода даты, например 12.05.10, выводится результат в виде:
Слайд 7№ Фамилия И.О. Год рожд. Диагноз
--------------------------------------------------------------------------
1. Анисимов Д.Г. 1961 пневмония
2. Хайрутдинов И.С. 1945 инфаркт
![№ Фамилия И.О. Год рожд. Диагноз -------------------------------------------------------------------------- 1. Анисимов Д.Г. 1961 пневмония](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-6.jpg)
миокарда
3. Галиева А.И. 1960 инсульт
4. Могилевский С.П. 1943 стенокардия
Слайд 8Пример результата при выборе пункта 2
==================================================
Выберите номер пункта меню:
1 - вывод списка
![Пример результата при выборе пункта 2 ================================================== Выберите номер пункта меню: 1](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-7.jpg)
пациентов, поступивших в заданный день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
2
Средний возраст пациентов: 50.7
Слайд 9Пример результата при выборе пункта 3
Введите имя выходного файла
pnevmon.txt
Укажите диагноз
пневмония
Запись в файл
![Пример результата при выборе пункта 3 Введите имя выходного файла pnevmon.txt Укажите](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-8.jpg)
завершена
Слайд 10Файл pnevmon.txt:
Анисимов Д.Г. 1961 12.05.10
Аксенов-Зварчук И.А. 1955 13.05.10
Хасанов И.Р. 1974
![Файл pnevmon.txt: Анисимов Д.Г. 1961 12.05.10 Аксенов-Зварчук И.А. 1955 13.05.10 Хасанов И.Р. 1974 14.05.10](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-9.jpg)
14.05.10
Слайд 11Функциональная структура программы
![Функциональная структура программы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-10.jpg)
Слайд 12Подпрограммы:
Date – вывод пациентов, поступивших в заданный день.
MiddleAge - определение среднего возраста
![Подпрограммы: Date – вывод пациентов, поступивших в заданный день. MiddleAge - определение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-11.jpg)
пациентов.
Diagnos - запись в новый файл списка пациентов с заданным диагнозом.
Age - определение возраста пациента по году рождения.
Слайд 13Поэтапная разработка программы
1 этап: Разработка функции main()
![Поэтапная разработка программы 1 этап: Разработка функции main()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-12.jpg)
Слайд 16Главная функция программы:
int main()
{
char n; /* номер пункта меню */
clrscr();
ofstream f
![Главная функция программы: int main() { char n; /* номер пункта меню](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-15.jpg)
(" patient. txt ");
if (!f.is_open())
{ cout<<"Файл patient.txt не найден";
getch();
return 1;
}
Слайд 17
do
{ cout<<"\n==========================================");
cout<< ("Выберите номер пункта меню:");
cout<< ("1 - вывод
![do { cout cout cout cout cout cout cout n = getche();](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-16.jpg)
списка пациентов, поступивших в заданный день");
cout<< ("2 - определение среднего возраста пациентов");
cout<<("3 - запись в новый файл списка пациентов с заданным диагнозом");
cout<< ("4 - выход");
cout<< ("----------------------------------------------------------------------------");
n = getche();
Слайд 18
switch (n)
{
case '1': Date(f); break;
case '2': MiddleAge(f);
![switch (n) { case '1': Date(f); break; case '2': MiddleAge(f); break; case](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-17.jpg)
break;
case '3': Diagnos(f); break;
case '4': break;
default: cout<<"\nНужно вводить номер пункта от 1 до 4";
}
}
while (n != '4');
f.close();
return 0;
}
Слайд 19Тестирование функции main()
#include
#include
/* прототипы функций */
void Date(ofstream &f);
void MiddleAge(ofstream &f);
void
![Тестирование функции main() #include #include /* прототипы функций */ void Date(ofstream &f);](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-18.jpg)
Diagnos(ofstream &f);
Слайд 20/* Гл. функция */
int main()
{
. . .
cout<<“Программа завершила работу”;
getch();
return 0;
}
![/* Гл. функция */ int main() { . . . cout getch(); return 0; }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-19.jpg)
Слайд 21/* Заглушки подпрограмм */
void Date (ofstream &f)
{ cout<<“\n Функция Date вызвана”;
}
void MiddleAge
![/* Заглушки подпрограмм */ void Date (ofstream &f) { cout } void](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-20.jpg)
(ofstream &f)
{ cout<<“\n Функция MiddleAge вызвана”;
}
void Diagnos (ofstream &f)
{ cout<< “\n Функция Diagnos вызвана”;
}
Слайд 22Результаты тестирования
Тест 1. Входного файла нет в текущем каталоге.
Результат:
Файл patient.txt
![Результаты тестирования Тест 1. Входного файла нет в текущем каталоге. Результат: Файл patient.txt не найден](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-21.jpg)
не найден
Слайд 23Тест 2. Входной файл есть в текущем каталоге
Результат:
================================================
Выберите номер пункта меню:
1 -
![Тест 2. Входной файл есть в текущем каталоге Результат: ================================================ Выберите номер](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-22.jpg)
вывод списка пациентов, поступивших в заданный день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
1
Функция Date вызвана
Слайд 24
================================================
Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших в заданный
![================================================ Выберите номер пункта меню: 1 - вывод списка пациентов, поступивших в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-23.jpg)
день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
2
Функция MiddleAge вызвана
Слайд 25
================================================ Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших в
![================================================ Выберите номер пункта меню: 1 - вывод списка пациентов, поступивших в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-24.jpg)
заданный день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
3
Функция Diagnos вызвана
Слайд 26
================================================ Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших в
![================================================ Выберите номер пункта меню: 1 - вывод списка пациентов, поступивших в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-25.jpg)
заданный день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
5
Нужно вводить номер пункта от 1 до 4
Слайд 27
================================================ Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших в
![================================================ Выберите номер пункта меню: 1 - вывод списка пациентов, поступивших в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1123989/slide-26.jpg)
заданный день
2 - определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
4
Программа завершила работу