- •Курсовая работа
 - •Содержание
 - •Задание на курсовую работу
 - •Структура целей разрабатываемой программы
 - •Ограничения, учитываемые в программе обработки
 - •Внешние спецификации функций разрабатываемой программы.
 - •Таблицы решений
 - •Тестирование программы
 - •Тестирование подпрограммы «Чтение и проверка на корректность файла f1»
 - •Тестирование подпрограммы «Чтение и проверка на корректность файла f2»
 - •Тестирование подпрограммы «Создание записей таблицыF3»
 
Таблицы решений
Проектирование спецификаций процессов с помощью таблиц решений заключается в задании матрицы, отображающей множество входных условий и множество решений.
ТР состоит из двух частей, верхняя часть таблицы используется для определения условий. Обычно условие является ЕСЛИ - частью оператора ЕСЛИ-ТО и требует ответа "да" или "нет". Нижняя часть ТР используется для определения действий, т.е. ТО - части оператора ЕСЛИ-ТО. Левая часть ТР содержит собственно описание условия 1 и действий, а в правой части перечисляются все возможные комбинации условий и, соответственно, указывается, какие конкретно действия, и в какой последовательности выполняются, если определенная комбинация имеет место.
Таблица решений - это такая внешняя спецификация программного обеспечения, в которой отражаются комбинации условий, выполняемых для входных данных, и соответствующие этим комбинациям действия по преобразованию информации.
Методика построения ТР:
определить все условия и действия в спецификациях;
вписать действия и условия в таблицу;
в нумерованных столбцах отметить все возможные комбинации условий и осуществляемые при выполнении условий действий;
при необходимости редуцировать таблицу (если имеются столбцы, у которых перечень действий совпадает и, которые отличаются только результатами условий "д" и "н" в одной строке, то такие столбцы можно будет объединить в один);
Таблица решений для подпрограммы «Чтение и проверка на корректность файла F1»
| 
				 Условия  | 
				 1  | 
				 2  | 
				 3  | 
				 4  | 
				 5  | 
				 6  | 
				 7  | 
				 8  | 
				 9  | 
				 10  | 
| 
				 1) Файл существует и может быть открыт для чтения?  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
| 
				 2) Считаны все записи?  | 
				 -  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
| 
				 3) Значение поля «регистрационный номер» - целое неотрицательное число?  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 -  | 
				 -  | 
				 -  | 
| 
				 4) Поле «Класс средств связи и вычислительной техники» не содержит неразрешенные символы?  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 -  | 
				 -  | 
				 -  | 
| 
				 5) Поле «Название средства связи и вычислительной техники» не содержит неразрешенные символы?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 -  | 
				 -  | 
				 -  | 
| 
				 6) Поле «Цена» содержит неотрицательное число?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 -  | 
				 -  | 
				 -  | 
| 
				 7) Фатальная ошибка?  | 
				 -  | 
				 -  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Н  | 
				 -  | 
				 -  | 
				 -  | 
| 
				 8) Количество записей больше нуля?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
| 
				 9) Значение поля «регистрационный номер» уникально?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
| 
				 Действия  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Вывод сообщениея «Невозможно открыть файл F1»  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Открыть файл F1 для чтения и установить позицию чтения на 1 байт  | 
				 
  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Начать обработку записей  | 
				 
  | 
				 2  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Создание структуры PriceItem  | 
				 
  | 
				 
  | 
				 1  | 
				 1  | 
				 1  | 
				 1  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Чтение полей структуры PriceItem  | 
				 
  | 
				 
  | 
				 2  | 
				 2  | 
				 2  | 
				 2  | 
				 2  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Вывод сообщения «Ошибка чтения записи»  | 
				 
  | 
				 
  | 
				 3  | 
				 3  | 
				 3  | 
				 3  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Добавление структуры PriceItemк спискуPriceItems  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 3  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Продолжить обработку – перейти к следующей записи  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 4  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Закрыть файл F1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 1  | 
				 1  | 
				 1  | 
| 
				 Вывод сообщениея «В таблице нет записей»  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 2  | 
				 
  | 
				 
  | 
| 
				 Проверить значения поля «регистрационный номер» на уникальность  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 2  | 
				 2  | 
| 
				 Вывод сообщения «поле регистрационный номер» содержит неуникальные значения  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 3  | 
				 
  | 
| 
				 Установить флаг «фатальная ошибка»  | 
				 2  | 
				 
  | 
				 4  | 
				 4  | 
				 4  | 
				 4  | 
				 
  | 
				 3  | 
				 4  | 
				 
  | 
| 
				 Завершить обработку  | 
				 3  | 
				 
  | 
				 5  | 
				 5  | 
				 5  | 
				 5  | 
				 
  | 
				 4  | 
				 5  | 
				 3  | 
Таблица решений для подпрограммы «Чтение и проверка на корректность файла F2»
| 
				 Условия  | 
				 1  | 
				 2  | 
				 3  | 
				 4  | 
				 5  | 
				 6  | 
				 7  | 
				 8  | 
| 
				 1) Файл существует и может быть открыт для чтения?  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
| 
				 2) Считаны все записи?  | 
				 -  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Н  | 
				 Д  | 
				 Д  | 
| 
				 3) Значение поля «регистрационный номер» - целое неотрицательное число?  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 -  | 
				 -  | 
| 
				 4) Поле «Название отдела» не содержит неразрешенные символы?  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 -  | 
				 -  | 
| 
				 5) Поле «Материально-ответственное лицо» не содержит неразрешенные символы?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
				 -  | 
				 -  | 
| 
				 6) Фатальная ошибка?  | 
				 -  | 
				 -  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Н  | 
				 -  | 
				 -  | 
| 
				 7) Количество записей больше нуля?  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
| 
				 Действия  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Вывод сообщениея «Невозможно открыть файл F2»  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Открыть файл F2 для чтения и установить позицию чтения на 1 байт  | 
				 
  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Начать обработку записей  | 
				 
  | 
				 2  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Создание структуры PriceItem  | 
				 
  | 
				 
  | 
				 1  | 
				 1  | 
				 1  | 
				 1  | 
				 
  | 
				 
  | 
| 
				 Чтение полей структуры PriceItem  | 
				 
  | 
				 
  | 
				 2  | 
				 2  | 
				 2  | 
				 2  | 
				 
  | 
				 
  | 
| 
				 Вывод сообщения «Ошибка чтения записи»  | 
				 
  | 
				 
  | 
				 3  | 
				 3  | 
				 3  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Добавление структуры PriceItemк спискуPriceItems  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 3  | 
				 
  | 
				 
  | 
| 
				 Продолжить обработку – перейти к следующей записи  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 4  | 
				 
  | 
				 
  | 
| 
				 Закрыть файл F2  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 1  | 
				 1  | 
| 
				 Вывод сообщениея «В таблице нет записей»  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 2  | 
				 
  | 
| 
				 Установить флаг «фатальная ошибка»  | 
				 2  | 
				 
  | 
				 4  | 
				 4  | 
				 4  | 
				 
  | 
				 3  | 
				 
  | 
| 
				 Завершить обработку  | 
				 3  | 
				 
  | 
				 5  | 
				 5  | 
				 5  | 
				 
  | 
				 4  | 
				 2  | 
Таблица решений для подпрограммы «Создание записей таблицыF3»
| 
				 Условия  | 
				 1  | 
				 2  | 
				 3  | 
				 4  | 
| 
				 Есть ли еще элементы в списке PriceItem?  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
| 
				 Есть ли еще элементы в списке Departments?  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Д  | 
| 
				 Регистрационные номера в структурах PriceItem и Departmentсовпадают (PriceItem.Id = Department.Id)?  | 
				 -  | 
				 -  | 
				 Н  | 
				 Д  | 
| 
				 Действия  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Начать обработку списка PriceItems  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 PriceItem –очередной элемент списка  | 
				 
  | 
				 1  | 
				 
  | 
				 
  | 
| 
				 Начать обработку списка Departments  | 
				 
  | 
				 2  | 
				 
  | 
				 
  | 
| 
				 Department –очередной элемент списка  | 
				 
  | 
				 
  | 
				 1  | 
				 1  | 
| 
				 Создание структуры ReportItem  | 
				 
  | 
				 
  | 
				 
  | 
				 2  | 
| 
				 Заполнение полей структуры ReportItem  | 
				 
  | 
				 
  | 
				 
  | 
				 3  | 
| 
				 Добавление структуры ReportItemк спискуReportItems  | 
				 
  | 
				 
  | 
				 
  | 
				 4  | 
| 
				 Перейти к следующему элементу списка Departments  | 
				 
  | 
				 
  | 
				 2  | 
				 
  | 
| 
				 Завершить обработку списка Departments  | 
				 
  | 
				 3  | 
				 
  | 
				 
  | 
| 
				 Вывод сообщения «Ошибка связывания таблиц»  | 
				 
  | 
				 4  | 
				 
  | 
				 
  | 
| 
				 Перейти к следующему элементу списка PriceItems  | 
				 
  | 
				 
  | 
				 
  | 
				 5  | 
| 
				 Завершить обработку списка PriceItems  | 
				 2  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Установить флаг «фатальная ошибка»  | 
				 
  | 
				 5  | 
				 
  | 
				 
  | 
| 
				 Завершить обработку  | 
				 3  | 
				 6  | 
				 
  | 
				 
  | 
Таблица решений для подпрограммы «Формирование выходного файлаF3»
| 
				 Условия  | 
				 1  | 
				 2  | 
				 3  | 
				 4  | 
				 5  | 
| 
				 Есть ли еще элементы в списке ReportItems?  | 
				 Н  | 
				 Д  | 
				 Д  | 
				 Д  | 
				 Д  | 
| 
				 Текущий элемент первый?  | 
				 -  | 
				 Н  | 
				 Д  | 
				 Н  | 
				 Д  | 
| 
				 Достигнута последняя запись для данного класса (ReportItem.ClassName!=class_name)?  | 
				 -  | 
				 Д  | 
				 Д  | 
				 Н  | 
				 Н  | 
| 
				 Действия  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Открыть файл F3 для записи и установить позицию записи на 1 байт  | 
				 1  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Обнулить подитог по классу (total_by_class = 0.0)  | 
				 2  | 
				 
  | 
				 
  | 
				 4  | 
				 5  | 
| 
				 Обнулить итог по таблице (total_by_table= 0.0)  | 
				 3  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Начать обработку списка ReportItems  | 
				 4  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 ReportItem –очередной элемент списка  | 
				 
  | 
				 1  | 
				 1  | 
				 1  | 
				 1  | 
| 
				 Переход к обработке очередного класса (class_name=ReportItem.ClassName)  | 
				 
  | 
				 
  | 
				 2  | 
				 
  | 
				 2  | 
| 
				 Вывод подитога по классу (total_by_class)  | 
				 
  | 
				 
  | 
				 
  | 
				 2  | 
				 3  | 
| 
				 Пересчет итога по таблице (total_by_table += total_by_class)  | 
				 
  | 
				 
  | 
				 
  | 
				 3  | 
				 4  | 
| 
				 Пересчет подитога по классу (total_by_class += ReportItem.Price)  | 
				 
  | 
				 2  | 
				 3  | 
				 5  | 
				 6  | 
| 
				 Вывод полей записиReportItem  | 
				 
  | 
				 3  | 
				 4  | 
				 6  | 
				 7  | 
| 
				 Перейти к следующему элементу списка PriceItems  | 
				 
  | 
				 4  | 
				 5  | 
				 7  | 
				 8  | 
| 
				 Завершить обработку списка ReportItems  | 
				 5  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Вывод итога по таблице (total_by_table)  | 
				 6  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Закрыть файл F3  | 
				 7  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
| 
				 Завершить обработку  | 
				 8  | 
				 
  | 
				 
  | 
				 
  | 
				 
  | 
