Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект_2011-12.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
46.16 Кб
Скачать

Задание

Разработать программу, выполняющую следующие операции обработки данных: ввод новых данных, поиск данных по заданному значению, сортировка данных, редактирование данных, удаление данных. Данные хранить во внешней памяти в виде файла. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе. Предметную область студент выбирает сам на свое усмотрение.

Требования к оформлению курсовой работы:

Курсовая работа должна содержать в себе следующие разделы:

  • Пояснительная записка, содержание курсовой работы с указанием страниц (взять на кафедре).

  • Постановка задачи.

  • Описание предметной области.

  • Описание структуры информационно-справочной системы: словесное описание ее объектов, их реализация на базе абстрактных (динамических) типов данных.

  • Листинг программы (все подпрограммы сопровождаются подробными комментариями).

  • Протокол выполнения программы (вывод основного меню, подменю, результатов выполнения основных операций).

  • Список литературы.

Пример (фрагмент структуризации решения задачи)

Постановка задачи

Написать программу обработки данных отдела кадров предприятия. База хранится в текстовом файле, его размер может быть произвольным. Каждая строка файла содержит запись об одном сотруднике. Формат записи: фамилия и инициалы (30 позиций, фамилия должна начинаться с первой позиции), год рождения (5 позиций), оклад (10 позиций). Программа должна обеспечивать поиск в базе по заданным критериям, корректировку и дополнение базы.

Так как размер файла, в котором хранится база не ограничен, для обработки и хранения в оперативной памяти воспользуемся линейным списком. Для удобства дополнения и удаления элементов сделаем список двусвязным. Каждый элемент списка включает информационную часть (фамилию, год рождения, оклад) и два указателя: на следующий и предыдущий элементы.

Type

Uk=^elem;

Elem=record

Name:string[30];

Data:integer;

Oklad:real;

Prev, next:uk;

End;

Var beg, en:Uk;

Прежде всего определим интерфейс нашей программы. Предоставим пользователю следующие возможности:

  • Вывод базы на экран,

  • Добавление новой записи о сотруднике в базу,

  • Корректировка сведений о сотруднике,

  • Удаление записи о сотруднике,

  • Поиск о сотруднике по его фамилии,

  • Выборка по некоторому критерию (например, по окладу),

  • Выход из программы.

Для разработки алгоритма и структуры программы применим метод пошаговой детализации (см.).

Таблица 1

Уровень1

Уровень 2

Уровень 3

Инициализация

Ввод базы

  • Проверка существования файла

  • Считывание одной записи

  • Добавление элемента в список

Инициализация меню

  • Задание цветов и режимов

  • Вывод пункта меню

  • Вывод одной страницы

Вывод базы на экран

Вывод одной страницы

  • Вывод одной страницы

Управление прокруткой

  • Управление прокруткой

Добавление записи о сотруднике

Запрос сведений сотруднике

  • Запрос сведений о сотруднике

Добавление в список

  • Добавление в список

Корректировка сведений о сотруднике

Запрос сведений сотруднике

  • Запрос сведений о сотруднике

Корректировка списка

  • Поиск в списке

  • Корректировка элемента списка

Удаление записи о сотруднике

Запрос фамилии

  • Запрос фамилии

Удаление из списка

  • Поиск в списке

  • Удаление элемента из списка

Поиск сведений о сотруднике

Запрос фамилии

  • Запрос фамилии

Поиск в списке

  • Поиск в списке

Вывод сведений о сотруднике

  • Вывод сведений о сотруднике

Выборка из базы

Запрос критерия выборки

  • Запрос критерия выборки

Формирование выборки

  • Формирование выборки

Вывод выборки

  • Вывод одной страницы

  • Управление прокруткой

Выход

Выход

  • Выход

Когда изменения в одной процедуре не могут влиять на поведение другой, отладка и модификация программы значительно упрощаются. Поэтому при определении интерфейсов подпрограмм будем исходить из того, что подпрограммы должны быть независимы друг от друга. Для этого все, что подпрограмме необходимо получать извне, будем передавать через параметры, а величины, используемые только внутри подпрограммы, определим как локальные.

Далее приводятся описания интерфейсов основных подпрограмм:

  • Ввод базы из файла. Процедура возвращает сформированный список, т.е. указатели на его начало и конец. Файловая переменная и имя файла определяются внутри подпрограммы:

Procedure Read_file (var beg,en:Uk);

  • Добавление элемента в список. Чтобы добавить сведения о сотруднике в базу, надо знать, что и куда добавить. Иными словами, в функцию надо передать указатели на начало и конец списка, а также собственно добавляемый элемент:

Procedure Add (var beg, en:Uk; el:elem);

  • Запрос сведений о сотруднике. Процедура возвращает запись, содержащую информацию о сотруднике:

Procedure Inf (var el:elem);

  • Запрос фамилии. Требуется и при удалении записи о сотруднике, и при корректировке данных, поэтому его также логично оформить в виде небольшой вспомогательной процедуры:

Procedure Inf_fam (var name:string[30]);

  • Поиск сотрудника по фамилии нужен в нашей программе сам по себе, а также для корректировки и удаления из списка. Функция получает указатель на начало списка, в котором требуется выполнить поиск и фамилию сотрудника, а возвращает указатель на найденный элемент или nil в случае неудачного поиска:

Function Poisk (beeg:uk; name:string):Uk;

  • Удаление элемента из списка. Чтобы удалить запись из базы, надо знать, из какой базы и какую запись удалять. Поэтому в процедуру предаются три указателя – на начало и конец списка и на элемент, который надо удалить:

Procedure Del (var beg, en, p:Uk);

  • Корректировка информации. В этой процедуре указатели на начало и конец списка измениться не могут, так как структура списка не изменяется, изменяется только содержание элемента. Поэтому достаточно передать указатель на начало и значение для поиска:

Procedure Edit (beg:Uk; name:string);

  • И т.д.