Обработку файловой информации рекомендуется усваивать студентам на примере программирования функции “проверка на корректность справочного файла”.
Эта функция является частью задачи совместной обработки двух файлов, например таких:
Таблица 3.1 - Структура справочного файла
Номер предмета | Наименование предмета |
Таблица 3.2 – структура файла с оперативной информацией
ФИО студента | Группа | Номер предмета | Оценка по предмету |
Результатом совместной обработки должен быть выходной документ, структура которого приведена в таблице 3.3.
Таблица 3.3 – структура выходной таблицы
Группа | Наименование предмета | Оценка по предмету | Количество оценок в группе |
Основное положение проектирования программного обеспечения гласит: хорошая программа должна воспринимать любые данные на ее входе и правильные и неправильные (о чем часто программисты забывают) /3/. Иными словами, обработку неправильных входных данных нужно программировать также тщательно, как и правильных.
Исходя из этого постулата, функция “ проверка на корректность справочного файла” должна осуществлять проверку полей “ номер предмета ” и “наименование предмета на уникальность”. Иначе говоря, эти поля должны удовлетворять условию:
- разным номерам предметов не могут соответствовать одинаковые наименования предметов и один и тот же номер не может быть присвоен двум или более наименованиям предметов.
Кроме того, хорошая программа удовлетворяет следующим требованиям:
- не прекращает работу сразу же после первой выявленной ошибки в исходных данных, а проверяет всю информацию, относящуюся к одной структуре данных;
- сообщения программы об ошибках настолько информативны, что позволяют легко отыскивать входные ошибочные данные среди большого объема данных в файле.
Один из возможных вариантов схемы программы обработки информации из справочного файла приведен на рисунке 3. Символы схемы пронумерованы для пояснений их функций.
Установить
файл на
начало
5 Пока не
конец файла
Читать очередную
запись файла
8 J=I-1, J=J-1 Цикл перебора
предыдущих
записей
Рисунок 3 - Схема программы обработки информации из файла
да Совпадают
номера предметов
в I и J записях?
нет
Сообщение об ошибке
да Совпадают
наименован. предметов
в I и J записях?
нет
Сообщение об ошибке
15 J=1
17 Пока не конец
файла
Продолжение рисунка 3
Прежде всего следует отметить, что соответствующая этой схеме программа за одно чтение справочного файла от начала до конца выявит неуникальные номера предметов или неуникальные наименования предметов, выдаст сообщения о соответствующих ошибках и при их наличии установит признак некорректности файла flag, при этом прочитает все записи из файла и выявит все возможные повторения номеров или наименований. Кроме того, программа подсчитает количество прочитанных из файла записей и сохранит это значение в переменной I.
Такая обработка предполагает возможность доступа к любой прочитанной записи по индексу. Доступ можно обеспечить, если записи из файла поместить в таблицу (таблица реализуется в программах как массив записей одинакового формата). Заметим, что аналогичный алгоритм обработки можно реализовать, если записи из файла помещать в другую структуру данных – список. Однако, такой список должен быть двусвязным (первый указатель – на следующую запись списка, второй указатель – на предыдущую), в таком случае возможна выборка записей от последней прочитанной записи к первой, что является особенностью предлагаемой схемы программы.
Ниже приводится один из возможных вариантов реализации в программе основных действий по обработке информации из справочного файла.
Таблица для сохранения в оперативной памяти записей из справочного файла может быть в программе определена следующим образом:
.......
Занесение записей в таблицу (см. символы 3,7) выполняется следующими операторами:
......
Цикл просмотра предыдущих записей из таблицы для выявления возможных повторений номеров или наименований (символ 8) предполагает наличие в программе оператора:
.....
Проверка на совпадение номеров предметов в разных записях, печать сообщения при совпадении и установка признака некорректности (символы 9, 10, 11) могут быть выполнены следующими операторами:
.....
Аналогично предыдущему фрагменту программируется проверка на уникальность наименований предметов.
Порядок выполнения работы
1. Используя лекционный материал или методические указания к курсовой работе /3/, разработать таблицу решений для функции “проверка на корректность справочного файла”.
2. Разработать схему программы проверки на корректность справочного файла.
3. Реализовать алгоритм обработки информации, соответствующий разработанной схеме программы, на языке СИ++.
4. Провести отладку программы и проверить получаемые результаты.
5. Провести тестирование программы для правильных и неправильных исходных данных и убедиться в ее работоспособности.
6. Оформить отчет по лабораторной работе.
СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен включать:
а) титульный лист;
б) формулировку цели работы;
в) описание ограничений на исходные данные справочного файла;
г) описание результатов выполнения пунктов 1-5:
· таблицу решений для реализуемой функции;
· схему программы;
· -листинг программы;
· результаты тестирования программы;
г) выводы, согласованные с целью работы.
Контрольные вопросы
1. Дайте определение таблицы решений.
2. Какие спецификации, кроме таблицы решений Вы знаете?
3. Приведите нотацию схемы программы.
4. Какие группы символов не используются в схемах программ?
5. Прокомментируйте содержание листинга программы.
6. Какие требования удовлетворяются к качественной программе?
7. Какие операторы необходимы в программе на языке СИ++ для работы с входными файлами?
8. Какие операторы необходимы в программе на языке СИ++ для работы с выходными файлами?
9. Можно ли выделить поле записи в файле на внешнем носителе?
ВАРИАНТЫ ЗАДАНИЙ
Ниже приведены форматы справочных файлов, рекомендуемых для программирования функции “проверка на корректность справочного файла”.
6.1 Справочный файл для задач обработки информации о продаже билетов
Количест-во мест | N рейса | Пункт отправле-ния | Пункт прибытия | Время отправле-ния | Цена |
6.2 Справочный файл для задач составления расписания занятий
№ предмета | Наименование предмета | Фамилия И.О. преподавателя |
6.3 Справочный файл для задач учета средств связи и вычислительной техники
Регистрацион-ный номер | Класс средств связи и выч. техники | Наименование средств связи и ВТ | Цена |
6.4 Справочный файл для задач учета кадрового состава кафедр и нагрузки преподавателей
Табельный № преподавателя | Фамилия, имя, отчество преподавателя |
6.5 Справочный файл для задач учета нагрузки медицинского персонала больниц
Табельный № врача | ФИО врача | Специальность |
6.6 Справочный файл для информационных задач о наличии музыкальных или другого назначения дисков в магазинах города
Код CD | Наименование CD | Исполнитель |
6.7 Справочный файл для информационных задач о наличии товаров нв складах или в магазинах городазадач
Код товара | Наименование товара | Производитель товара |
6.8 Справочный файл для задач учета подписных изданий по почтовым отделениям
Номер отделения связи | Адрес отделения связи |
6.9 Справочный файл для задач продажи туров туристическими аганствами
Номер туристического агенства | Наименование агенства | Адрес туристического агенства |
СПИСОК ЛИТЕРАТУРЫ
1. Липаев В.В. Тестирование программ.- М.: Радио и связь, 1986.- 296 с.: ил.
2. Выполнение схем алгоритмов, программ, данных и систем: Методические указания к курсовому и дипломному проектированию / Уфимск. Гос. Авиац. техн. ун-т; Сост.: Р.Г. Валеева, Г.Р. Валеева. – Уфа, 2003. – 23 с.
3. Гвоздев В.Е., В.Н.Мукасеева, Хасанов А.Ю. Специфицирование и тестирование программ. Методические указания к курсовой работе по дисциплине ‘Технология программирования’ - Уфа, 2004.
4. Иванова Г.С. Технология программирования: Учебник для вузов.- 2-е изд., стереотип. – М.: МГТУ им. Баумана, 2003. – 320 с.
5. Технологии разработки программного обеспечения. Учебное пособие. 2-е изд./ С. Орлов. – Спб.: Питер, 2003. – 480 с.: ил.
6. Вычислительные системы, сети и телекоммуникации /
В.Л. Бройдо. – Спб.: Питер, 2002. – 688 с.: ил.
7. Программирование на СИ++