Слайд 1КУРСОВАЯ РАБОТА
ПРИМЕР РАЗРАБОТКИ ПРОГРАММЫ
Слайд 2ЗАДАНИЕ
Дан файл, содержащий сведения о пациентах
клиники. Каждая строка файла содержит запись об одном пациенте. Структура
записи файла:
- фамилия и инициалы пациента;
- год рождения;
- дата поступления;
- диагноз.
Написать программу, которая
- выводит список пациентов, поступивших в заданный день;
- выводит средний возраст пациентов;
- записывает в новый файл список пациентов с заданным диагнозом.
Слайд 3Пример строки файла
Анисимов Д.Г.
1961 12.05.04 инфаркт миокарда
| 25 символов
| 5 | 9 | <= 40 |
Слайд 4Пример входного файла patient.txt
Анисимов Д.Г. 1961
12.05.10 пневмония
Хайрутдинов И.С. 1945 12.05.10 инфаркт миокарда
Петрова Т.В.
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 - вывод списка пациентов,
поступивших в заданный день
2 - определение среднего
возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
Слайд 6При выборе пункта 1 на экран выводится сообщение:
Введите дату поступления
в виде: дд.мм.гг
После ввода даты, например 12.05.10, выводится результат в
виде:
Слайд 7№ Фамилия И.О. Год рожд. Диагноз
--------------------------------------------------------------------------
1.
Анисимов Д.Г. 1961 пневмония
2. Хайрутдинов И.С. 1945 инфаркт
миокарда
3. Галиева А.И. 1960 инсульт
4. Могилевский С.П. 1943 стенокардия
Слайд 8Пример результата при выборе пункта 2
==================================================
Выберите номер пункта меню:
1 -
вывод списка пациентов, поступивших в заданный день
2 -
определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
2
Средний возраст пациентов: 50.7
Слайд 9Пример результата при выборе пункта 3
Введите имя выходного файла
pnevmon.txt
Укажите диагноз
пневмония
Запись
в файл завершена
Слайд 10Файл pnevmon.txt:
Анисимов Д.Г. 1961 12.05.10
Аксенов-Зварчук И.А. 1955 13.05.10
Хасанов И.Р.
1974 14.05.10
Слайд 11Функциональная структура программы
Слайд 12Подпрограммы:
Date – вывод пациентов, поступивших в заданный день.
MiddleAge - определение
среднего возраста пациентов.
Diagnos - запись в новый файл списка пациентов
с заданным диагнозом.
Age - определение возраста пациента по году рождения.
Слайд 13Поэтапная разработка программы
1 этап: Разработка функции main()
Слайд 16Главная функция программы:
int main()
{
FILE *f; /* ссылка на входной файл
*/
char n; /* номер пункта меню */
clrscr();
f= fopen("patient.txt",
"r");
if (f == NULL)
{ puts ("Файл patient.txt не найден");
getch();
return 1;
}
Слайд 17
do
{ puts ("\n==========================================");
puts ("Выберите номер пункта меню:");
puts ("1 - вывод списка пациентов, поступивших в заданный
день");
puts ("2 - определение среднего возраста пациентов");
puts ("3 - запись в новый файл списка пациентов с заданным диагнозом");
puts ("4 - выход");
puts ("----------------------------------------------------------------------------");
n = getche();
Слайд 18
switch (n)
{
case '1': Date(f);
break;
case '2': MiddleAge(f); break;
case '3': Diagnos(f); break;
case
'4': break;
default: puts("\nНужно вводить номер пункта от 1 до 4");
}
}
while (n != '4');
fclose(f);
return 0;
}
Слайд 19Тестирование функции main()
#include
#include
/* прототипы функций */
void Date(FILE *f);
void
MiddleAge(FILE *f);
void Diagnos(FILE *fin);
Слайд 20/* Гл. функция */
int main()
{
. . .
puts (“Программа завершила работу”);
getch();
return
0;
}
Слайд 21/* Заглушки подпрограмм */
void Date (FILE *f)
{ puts (“\n Функция
Date вызвана”);
}
void MiddleAge (FILE *f)
{ puts (“\n Функция MiddleAge вызвана”);
}
void
Diagnos (FILE *fin)
{ puts (“\n Функция Diagnos вызвана”);
}
Слайд 22Результаты тестирования
Тест 1. Входного файла нет в текущем каталоге.
Результат:
Файл patient.txt
не найден
Слайд 23Тест 2. Входной файл есть в текущем каталоге
Результат:
================================================
Выберите номер
пункта меню:
1 - вывод списка пациентов, поступивших в заданный день
2
- определение среднего возраста пациентов
3 - запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
1
Функция Date вызвана
Слайд 24
================================================
Выберите номер пункта меню:
1 - вывод списка пациентов, поступивших
в заданный день
2 - определение среднего возраста пациентов
3 - запись
в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
2
Функция MiddleAge вызвана
Слайд 25
================================================ Выберите номер пункта меню:
1 - вывод списка
пациентов, поступивших в заданный день
2 - определение среднего возраста пациентов
3
- запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
3
Функция Diagnos вызвана
Слайд 26
================================================ Выберите номер пункта меню:
1 - вывод списка пациентов,
поступивших в заданный день
2 - определение среднего возраста пациентов
3 -
запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
5
Нужно вводить номер пункта от 1 до 4
Слайд 27
================================================ Выберите номер пункта меню:
1 - вывод списка пациентов,
поступивших в заданный день
2 - определение среднего возраста пациентов
3 -
запись в новый файл списка пациентов с заданным диагнозом
4 - выход
------------------------------------------------------------------------------------
4
Программа завершила работу