- •Курсовая работа по дисциплине «Программирование на языке высокого уровня»
- •1. Задание
- •2. Описание применения
- •2.1. Запуск программы
- •2.2. Входные данные
- •2.3. Выходные данные
- •3.2. Структура программы
- •3.3. Описание функций
- •3.3.1. Main – главная функция
- •3.3.2. Date – вывод пациентов, поступивших в заданный день
- •3.3.3. MiddleAge - определение среднего возраста пациентов
- •2.4. Сообщения программы
- •3. Описание программы
- •3.1. Метод решения задачи
- •3.3.4. Diagnos - запись в новый файл списка пациентов с заданным диагнозом
- •4. Отладка программы
- •4.1. Проектирование тестов
- •4.2.1. Тесты черного ящика
- •4.2.2. Тесты белого ящика
- •Литература
- •Приложение 3. Результаты тестирования программы
3.3.4. Diagnos - запись в новый файл списка пациентов с заданным диагнозом
Заголовок функции:
void Diagnos (FILE *fin)
ввод диагноза zdiag;
net = 1
чтение строки вх. файла в структуру tz
Запись в выходной файл
tz. fio,
tz.gz, tz.data
да
Рис.4. Схема функции записи в новый файл списка пациентов
с заданным диагнозом.
3.3.5. Age - определение возраста по году рождения
Заголовок функции:
int Age (char gr[DL_GR])
Входные данные:
gr - год рождения.
Значение функции:
возраст.
Возраст пациента вычисляется как разность между текущим годом и годом рождения пациента. Для определения текущего года используются библиотечные функции, определенные в файле time.h . Функция time() позволяет получить текущую дату и время. Она возвращает ее в виде числа секунд, прошедших с полуночи 1 января 1970 года. Функция localtime() преобразует эту величину в стандартную структуру типа tm, который определен в том же файле time.h, и возвращает адрес этой структуры. Поле tm_year этой структуры содержит число лет, прошедших с 1900 года.
Текст функции:
int Age (char gr[DL_GR])
{
int igr = atoi(gr); /* преобразование года рождения в тип int */
long timer; /* число секунд, прошедших с начала 1970 года
до текущего момента */
int year; /* текущий год */
struct tm *t; /* указатель на структуру, содержащую текущую
дату и время */
timer = time (NULL); /* получение числа секунд, прошедших с начала 1970 года */
t = localtime(&timer);/* преобразование в структуру типа tm */
year = 1900+ t->tm_year; /* определение тек. года */
return year - igr;
}
4. Отладка программы
4.1. Проектирование тестов
4.2.1. Тесты черного ящика
Для проектирования тестов программы методами черного ящика [1] с помощью эквивалентного разбиения входных/выходных данных на области (классы) эквивалентности составлен список ситуаций, каждая из которых должна создаваться хотя бы одним тестом. Тестовые ситуации приведены в табл. 4.1, в скобках указаны их номера.
Таблица 4.1
Области входных/выходных данных тестов программы
Входное/выходное условие (значение) |
"Правильные" классы эквивалентности |
"Неправильные" ¦ классы эквивалентности |
¦Номер пункта меню |
1..4 (1) |
<1 (2), >4 (3) |
Входной файл |
существует (4), |
не существует (5) |
¦Входной файл |
Не пустой (6) |
пустой (7) |
Формат даты |
Верный (8) |
Не верный (9) |
¦День |
1..N (N зависит от месяца) (10) |
<1 (11), >4 (12) |
¦Месяц |
1..12 (13) |
<1 (14), >N (15) |
Год |
12 (14) |
<>12 (15) |
|
|
|
|
|
|
|
|
|
Для создания перечисленных тестовых ситуаций разработаны тесты, представленные в табл. 4.2. Входные и выходные данные тестов по возможности выбирались ближе к границам классов эквивалентности.
Таблица 4.2
Тесты черного ящика для отладки программы
|
Вход |
Выход |
Основные ситуации |
1 |
Номер пункта меню n=10 |
Нужно вводить номер пункта от 1 до 4 |
3 |
2 |
Номер пункта меню n=4 |
Завершение программы |
1 |
|
|
|
|
|
|
|
|
