Формализация информации. Предметная область
КУРСОВОЙ ПРОЕКТ
по информатике
специальность 230400 «информационные системы и технологии»
Тема:
«ИЗУЧЕНИЕ ДИНАМИЧЕСКИХ СТРУКТУР И
ИХ ИСПОЛЬЗОВАНИЕ ПРИ ОБРАБОТКЕ ДАННЫХ»
СОДЕРЖАНИЕ
Формализация информации. Предметная область. 2
Разработка структуры БД.. 6
Задание. 7
Требования к оформлению курсовой работы: 7
Пример (фрагмент структуризации решения задачи) 8
Список рекомендуемой литературы: 11
Формализация информации. Предметная область
В настоящее время жизнь человека настолько насыщена различного рода информацией, что для ее обработки требуется создание огромного количества хранилищ информации различного назначения.
Тем, кто работает с большим объемом фактического материала, часто приходится составлять и собирать различные выписки, цитаты, даты, имена, афоризмы, высказывания различных людей, наблюдения, интересные факты и т.п.
Разобраться в записях, часто хаотических, найти нужную в данный момент информацию весьма трудно. Ускорить поиск необходимых данных, облегчить процесс составления справочных материалов помогают индивидуальные информационно-справочные системы. В соответствии с потребностями пользователей составляются специальные программы. Так, если ввести в машину различные выписки, фрагменты текста, справки, составленные в произвольном порядке (например, указать источники, имена авторов, даты и т.п.), то можно этот материал автоматически упорядочить, разместив по алфавиту или разбив на группы по темам, для того чтобы по мере надобности быстро отыскать цитату, справку и т.п. в памяти машины и получить их на печатающем устройстве. Нужная часть собранного массива данных может последовательно просматриваться на экране дисплея. Таким же образом поступают и с рефератами прочитанных книг и статей, библиографиями использованных источников или материалов, которые нужно просмотреть еще раз.
Польза индивидуальных информационно-справочных систем в том, что каждый может создать именно ту систему, которая нужна ему для работы. Кроме того, архив, накопленный за длительное время, остается всегда сохранным и доступным. Удобно, что такими системами могут пользоваться несколько человек. К тому же не надо разбирать непонятные почерки, перекладывать с места на место тяжелые папки и т.д.
Современные информационные системы характеризуются огромными объемами хранимых данных, сложной организацией, необходимостью удовлетворять разнообразные требования многочисленных пользователей.
Целью любой информационной системы является обработка данных об объектах реального мира. Основой информационной системы является база данных.
В широком смысле слова база данных - это совокупность сведений о конкретных объектах реального мира в какой-либо предметной области.
Кроме того, база данных – это хранилище данных для совместного использования. При автоматизации деятельности человека происходит перенос реального мира в электронный формат. Для этого выделяется какая-то часть этого мира и анализируется на предмет возможности автоматизации. Она называется предметной областью и строго очерчивает круг объектов, которые изучаются, измеряются, оцениваются и т.д. В результате этого процесса выделяются объекты автоматизации и определяются реквизиты, по которым данные объекты оцениваются. Графически данный процесс схематично показан на рисунке.
Предметная область.
Объекты
Реквизиты:
рост,
возраст,
размер обуви
Результатом данного процесса становится база данных, которая описывает конкретную часть реального мира со строго определенных позиций. Итак, оценивая все вышесказанное, можно сказать, что:
Предметная область - это часть реального мира, подлежащего изучению для организации управления и автоматизации.
Объект - это элемент предметной области, информацию о котором мы сохраняем.
Реквизит (атрибут) – поименованная характеристика объекта. Он показывает, какая информация об объекте должна быть собрана.
Объектами могут быть:
§ люди, например, перечисленные в какой-либо платежной ведомости или являющиеся объектами учетов органов внутренних дел;
§ предметы, например, номерные или имеющие характерные отличительные особенности вещи, средства автомототранспорта;
§ построения - воображаемые объекты;
§ события.
Базы данных выполняют две основные функции. Они группируют данные по информационным объектам и их связям и предоставляют эти данные пользователям.
Данные- это формализованное представление информации, доступное для обработки, интерпретации и обмена между людьми или в автоматическом режиме.
Информация может храниться в неструктурированном виде, например, в виде текстового документа, где данные об объектах предметной области записаны в произвольной форме:
Студент Иванов Иван родился 4 апреля 1981 года, обучается в 411 группе, номер его зачетной книжки 200205; студент Виктор Сидоров 06.08 1982 г.р., имеет зачетную книжку №200213, обучается в 413 группе; Женя Петров, родился в 1982 году 25 марта, номер зачетной книжки 200210, обучается в 411 группе.
В качестве предметной области в данном примере может быть представлена сфера деятельности деканата факультета по учету студентов. Объектами этой предметной области выступают как сами студенты, так и данные их номеров зачетных книжек.
Структурированный вид хранения информации предполагает введение соглашений о способах представления данных. Это означает, что в определенном месте хранилища могут находиться данные определенного типа, формата и содержания. Указанная выше информация о гражданах Петрове, Сидорове и Иванове в структурированном виде будет выглядеть следующим образом:
№ | Фамилия | Имя | Дата рождения | Учебная группа | № зачетной книжки |
1 | ИВАНОВ | ИВАН | 04.04.1981 | 411 | 200205 |
2 | ПЕТРОВ | ЕВГЕНИЙ | 25.03.1982 | 411 | 200210 |
3 | СИДОРОВ | ВИКТОР | 06.08.1982 | 414 | 200213 |
Представление информации в таблице - наилучший способ структурирования данных. Все данные записаны в клеточках таблицы по определенным правилам – форматам, одинаковым для всего столбца. Все столбцы имеют названия. Кроме этого нетрудно заметить, что фамилии студентов записаны по алфавиту, при этом для записей имен и фамилий используются заглавные буквы. Каждая строка таблицы имеет порядковый номер.
Автоматизировать обработку данных, которые хранятся в неструктурированном виде сложно, а порой и просто невозможно. Поэтому вырабатывают определенные соглашения о способах представления данных. Обычно это делает разработчик базы данных. В результате все реквизиты имеют одинаковый вид и тип данных, что делает их структурированными и позволяет создать базу данных. В результате можно сказать, что:
База данных - это поименованная совокупность структурированных данных, относящихся к определенной предметной области.
Система управления базой данных – это комплекс программных средств, предназначенных для создания структуры новой базы, наполнения ее содержимым, редактирования содержимого и визуализации информации. Под визуализацией БД понимается отбор отображаемых данных в соответствии с заданным критерием, их упорядочение, оформление и последующая выдача на устройство вывода или передача по каналам связи.
Структура простейшей БД содержит в себе таблицы данных и методы хранения и обработки данных в базе. Если в базе нет никаких данных, то это все равно существующая полноценная (пустая) база данных, так как она имеет свою структуру.
Поле - это элементарная единица логической организации данных, которая соответствует неделимой единице информации - реквизиту.
Запись - совокупность логически связанных полей, представленных одной строкой таблицы.
Файл (таблица) – совокупность экземпляров записей одной структуры.
Строки-записи Столбцы=поля
Имена полей
Фамилия | Имя | Отчество | Клички |
Авраменко | Юрий | Иванович | Авраам |
Белов | Виктор | Петрович | Белый |
Петрова | Галина | Сергеевна | Худоба |
Сидоров | Иван | Захарович | Захар |
Если значение поля однозначно определяет соответствующую запись, то такое поле называют ключевым.
Необходимо следить, чтобы в качестве ключа не выступали атрибуты, которые подлежат редактированию во время жизни информационной системы.
Внешний ключ таблицы – поле (или несколько полей этой же таблицы), которое является первичным ключом в другой таблице. Таблица, содержащая внешний ключ, называется ссылающейся таблицей. Таблица, содержащая первичный ключ, адекватный внешнему ключу другой таблицы, называется ссылочной таблицей.
Разработка структуры БД
1. Сбор и содержательный анализ информации о предметной области и прикладных задачах будущих пользователей.
2. Построение модели БД. На этом этапе выявляются элементы БД, их свойства, связи между ними. Составляется таблица. Если присутствует избыточность информации, выполняют декомпозицию таблицы.
3. Определяют ключи таблиц (в качестве такового выбирают атрибуты, данные которых не изменяются во времени). Определяют связи между таблицами (они осуществляются с помощью внешних ключей).
Пример.
Имеется таблица, содержащая избыточность информации:
№ зачетки | ФИО студента | Группа | ФИО куратора | Должность куратора | Телефон |
Иванов И.И. | ИСБ-02 | Матвеева С.С. | Ассистент каф. ИСБ | 3-47-45 | |
Петров П.П. | ИСБ-02 | Матвеева С.С. | Ассистент каф. ИСБ | 3-47-45 | |
Сидоров А.А. | ИСБ-01 | Калинина Т.Ю. | Инженер | 55-56-4 | |
Мамонтов И.Г. | АИС-01 | Морозова Ю.Г. | Ст. преподаватель каф. АИС | 12-4-89 | |
Григорьев А.А. | АИС-01 | Морозова Ю.Г. | Ст. преподаватель каф. АИС | 12-4-89 |
Наличие избыточной многократно повторяющейся информации снижает надежность хранения информации. Рассмотрим основные операции над данными и возникающие вследствие избыточности проблемы.
Операция удаления. Предположим, что один из кураторов увольняется или отказывается от работы куратора. Просто удалить информацию, содержащую сведения о кураторе мы не можем, так как теряются сведения и о студентах. Можно просто удалить информацию в соответствующих полях таблицы, но это требует написания дополнительной процедуры и предельного внимания ответственного за БД.
Операция редактирования. Студент переводится из одной группы в другую. В этом случае помимо изменения значения группы необходимо проследить, чтобы были внесены все изменения значений полей ФИО куратора, Должность куратора, Телефон куратора. В противном случае получим противоречивую информацию, кто действительно курирует ту или иную группу.
Операция ввода информации. При вводе одной и той же информации кроме того, что может «лопнуть терпение» пользователя, возрастает вероятность совершения ошибки.
Все вышеперечисленные проблемы могут быть разрешены с помощью декомпозиции таблицы на два таблицы.
№ зачетки | ФИО студента | Группа | Группа | ФИО куратора | Должность куратора | Телефон | |
Иванов И.И. | ИСБ-02 | ИСБ-02 | Матвеева С.С. | Ассистент каф. ИСБ | 3-47-45 | ||
Петров П.П. | ИСБ-02 | ИСБ-01 | Калинина Т.Ю. | Инженер | 55-56-4 | ||
Сидоров А.А. | ИСБ-01 | АИС-01 | Морозова Ю.Г. | Ст. препод. каф. АИС | 12-4-89 | ||
Мамонтов И.Г. | АИС-01 | ||||||
Григорьев А.А. | АИС-01 |
Задание
Разработать программу, выполняющую следующие операции обработки данных: ввод новых данных, поиск данных по заданному значению, сортировка данных, редактирование данных, удаление данных. Данные хранить во внешней памяти в виде файла. Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе. Предметную область студент выбирает сам на свое усмотрение.
Требования к оформлению курсовой работы:
Курсовая работа должна содержать в себе следующие разделы:
§ Пояснительная записка, содержание курсовой работы с указанием страниц (взять на кафедре).
§ Постановка задачи.
§ Описание предметной области.
§ Описание структуры информационно-справочной системы: словесное описание ее объектов, их реализация на базе абстрактных (динамических) типов данных.
§ Листинг программы (все подпрограммы сопровождаются подробными комментариями).
§ Протокол выполнения программы (вывод основного меню, подменю, результатов выполнения основных операций).
§ Список литературы.
Пример (фрагмент структуризации решения задачи)
Постановка задачи
Написать программу обработки данных отдела кадров предприятия. База хранится в текстовом файле, его размер может быть произвольным. Каждая строка файла содержит запись об одном сотруднике. Формат записи: фамилия и инициалы (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
Уровень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);
· И т.д.
Список рекомендуемой литературы:
1) Г.С. Иванова. Основы программирования. М.: Издательство МГТУ им. Н.Э. Баумана. 2001 г.
2) Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. – М.: КУДИЦ-ОБРАЗ, 2000 г.
3) Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Практикум. – СПб.: Питер, 2006. – 317 с.
4) Т. Кормен, Ч.Лейзерсон, Р.Ривест. Алгоритмы: построение и анализ. М.: МЦНМО, 2001. – 960 с.
5) Левитин А.В. Алгоритмы: введение в разработку и анализ.