Лекция: Постановка задачи и определение спецификаций
Постановка задачи заключается в разработке технического задания, содержащего следующие разделы:
— Наименование и краткая характеристика программы
Разработать систему учета и отчетности выполнения работ рабочими ремонтно-строительного управления «Учет работ РСУ». Учет выполнения работы рабочим фиксируется в исходном документе «Акт». Расценки работ содержатся в исходном документе «Справочник расценок». Отчет о всех выполненных работах рабочим и в целом за месяц определяется в результирующем документе «Ведомость стоимости работ».
— Требования к функциональным характеристикам
Система должна выполнять следующие функции: для исходных документов («Акты», «Справочник расценок») – ввод, просмотр, поиск, замена, удаление информации; для результирующего документа — только расчет «Ведомости».
Исходные данные: для документа «Акты» — таб. номер, разряд, вид работы, объем (в натур. ед.); для документа «Справочник расценок» — вид работы, расценка.
Результатные данные для документа «Ведомости» — таб. номер, разряд, вид работы, объем, стоимость работы, итого за месяц.
— Требования к техническим средствам: минимальная конфигурация, тип процессор – Pentium.
— Технологические требования: архитектура — однопользовательская, тип – программная система; пользовательский интерфейс-меню; метод программирования – объектно-ориентированный; язык программирования – C++; среда программирования – Visual C++ 2005.
Для получения спецификаций сформулируем содержательную постановку задачи, разработаем интерфейс-меню, определим подзадачи (функции меню), алгоритмы решения функций.
Исходные документы («Акты», «Справочник расценок») будем хранить в базе данных с индексной организацией; «Ведомость стоимости работ» — выводить сразу на экран. Структура записи файла Акты содержит следующие поля: таб. номер, разряд, вид работы, объем, где ключом записи является таб. номер. Структура записи файла Справочник расценок содержит следующие поля: вид работы, расценка, где ключом записи является вид работы.
Спроектируем пользовательский интерфейс-меню программной системы (см. рис. 4.1).
| Pr |
| File Акты Расценки Ведомости View Help Имена файлов Создание Создание Создание Status Bar About Exit Просмотр Просмотр Поиск Поиск Замена Замена Удаление Удаление |
Рис. 4.1. Интерфейс-меню программной системы
Рассмотрим алгоритмы управления базой данных с индексной организацией, необходимые для реализации меню.
Для файла данных создается массив в оперативной памяти, называемый индексным массивом, который содержит для каждой записи номер записи и значение ключа записи. Все операции управления базой данных выполняются через индексный файл, где по значению ключа записи определяется номер записи, и затем используется прямой доступ к записям файла данных.
Пример структуры базы данных с индексной организацией будет выглядеть следующим образом:
Файл данных Индексный массив
nomer tabn tabn nomer
0 <020… > 020 0
1 <050… > 050 1
2 <040… > 040 2
3 <010… > 010 3
4 <035… > 035 4
5 <\0… > \0 5
, где tabn (табельный номер служащих) — ключ записи;
nomer- номер записи в файле данных;
'\0' — признак пустой записи;
Файл данных содержит заполненные записи, а также пустые записи, которые образуются при удалении записей.
Алгоритм добавления записей включает два этапа:
— нахождение номера записи в файле в индексном массиве;
— добавление записи и корректировка индексного массива.
Нахождение номера записи в файле определяется состоянием индексного массива:
— если индексный массив содержит элемент с tabn=='\0', номер добавляемой записи будет равен соответствующему значению поля nomer элемента массива, т. е. добавление записи будет на место пустой записи.
— если индексный массив не содержит элемента с tabn=='\0', номер добавленной записи будет равен следующему индексу после фактического последнего индекса массива, т.е. добавление записи будет в конец файла данных;
Добавление записи в файл производится прямым доступом по найденному номеру. Корректировка индексного массива сводится к записи в поле tabn массива табельного номера добавляемой записи.
Алгоритм удаления записи включает два этапа:
— нахождение номера удаляемой записи по табельному номеру с помощью индексного массива;
— удаление записи и корректировка индексного массива.
Нахождение номера удаляемой записи определяется поиском элемента массива на совпадение табельного номера удаляемой записи с полем tabn элемента массива. Номер удаляемой записи будет равен значению поля nomer найденного элемента массива.
Удаление записи производится записью прямым доступом в файл по найденному номеру пустой записи. Корректировка индексного массива сводится к записи в поле tabn элемента массива символа '\0'.
Алгоритм замены записи включает два этапа:
— нахождение номера заменяемой записи;
— замена записи и корректировка индексного массива.
Замена записи в файле производится записью прямым доступом по найденному номеру новой записи. Корректировка индексного массива сводится к записи в поле tabn элемента массива нового табельного номера заменяемой записи.