Министерство образования
Российской Федерации
Хабаровский Государственный Технический Университет
Кафедра: «Программное обеспечение»
КУРСОВАЯ РАБОТА
По теме «Разработка базы данных,
отражающей учет успеваемости студентов»
Выполнил студент
гр. ПО-02 Самойленко П. Р.
Проверил преподаватель
Белоусова Людмила
Васильевна
Хабаровск 2001
Содержание:
1. Задание на разработку, постановка задачи.
2. Описание базы данных.
3. Описание средств, используемых при создании программы.
4. Первоначальные данные.
5. Интерфейс программы.
6. Описание используемых переменных и процедур.
7. Возможности полученного программного продукта.
Постановка задачи.
Построить систему управления базой данных (в дальнейшем-СУБД), отражающую учет успеваемости студентов вуза. При этом надо предусмотреть, что данные могут вноситься разными людьми. Построить базу данных, которая была бы максимально гибкой. В базе данных должны содержаться данные о студентах, оценках, преподавателях и предметах.
Описание базы данных.
База данных нормализована и состоит из четырех таблиц. Она разбита на четыре таблицы, дабы быть максимально гибкой. При этом разные таблицы могут заполняться разными людьми, а потом объединяться в одну общую базу данных. Например, таблицу о студентах заполняют на кафедре, на которой учиться студент, таблицу о преподавателе и предметах – на кафедре этих преподавателей, а оценки ставит преподаватель.
Структура таблиц
Все атрибуты имеют строковый тип данных. Причем столбец T1 у каждой из таблиц является первичным ключом, то есть данные в нем уникальны.
Изобразим связь между таблицами:Связь эта осуществляется через уникальные поля каждой из таблиц. Из схемы видно, что связь между преподавателями и например, студентами, осуществляется только через таблицу предметов. Такая организация базы данных позволяет избежать дублирования данных. Например, если бы у нас таблица предметов была объединена с таблицей преподавателей, то мог выползти такой случай – один преподаватель ведет два предмета, следовательно его фамилия, имя и отчество будут повторятся в таблице дважды. А это уже называется избыточностью данных.
Описание средств, используемых при создании программы
Данный программный продукт работает в текстовом режиме, периодически меняя цвет выводимых символов с помощью процедуры textcolor(). Эта процедура принадлежит модулю crt. Помимо нее из этого модуля используется еще две процедуры: clrscr – для отчистки экрана, да gotoxy – для перехода на заданные координаты экрана.
В программе используются списки, записи, собственные модули. Какие же преимущества дают использованные средства?
Списки позволяют рационально использовать память компьютера и выделять ее динамически, не занимая ее попусту. Правда при использовании списков я заметил значительное увеличение кода программы по сравнению со случаем, если бы мы использовали массивы и записи. Но работать с записями намного эффективнее, особенно при создании баз данных. При работе над данной СУБД я использовал стандартные процедуры для работы с указателями:
New() – выделение памяти для переменной
Dispose() - Возвращение памяти в кучу.
Указатель в моем случае указывает на следующий кортеж в данной таблице.
Четыре таблицы хранятся в динамическом списке. Список заканчивается, как только следующий элемент принимает значение nil, то есть ни на что не указывает.
Записи помогают структурировать данные, избежать избыточности.
Модуль я использую для предопределения в нем типов и заполнения записей, значения которых будут потом использованы в основной программе. В этих записях я храню массивы строк – строк меню. Таким образом, этот код не «захламляет» код основной программы. И добавлять новые элементы в меню намного проще – не надо переделывать всю программу.
Первоначальные данные
Для примера я ввел некоторые данные и сохранил в файле pasha. Вот эти данные, выведенные с помощью команды – «Сохр. в текст. файл»:
Студенты
+--------------------------------------------------------------------------+
¦ Студенческий¦ Фамилия¦ Имя¦ Отчество¦ Стипендия¦
+--------------+--------------+--------------+--------------+--------------¦
¦ 3412¦ Поляков¦ Анатолий¦ Алексеевич¦ 54.50¦
¦ 3413¦ Старова¦ Любовь¦ Михайловна¦ 17.00¦
¦ 3414¦ Гриценко¦ Владимир¦ Николаевич¦ 0.00¦
¦ 3415¦ Котенко¦ Анатолий¦ Николаевич¦ 0.00¦
¦ 3416¦ Нагорный¦ Евгений¦ Васильевич¦ 25.50¦
+--------------------------------------------------------------------------+
Предметы
+--------------------------------------------------------------------------+
¦ Код предмета¦ Название¦ Код преподав.¦ Время учебы¦ Курс¦
+--------------+--------------+--------------+--------------+--------------¦
¦ 2001¦ Физика¦ 4001¦ 34¦ 1¦
¦ 2002¦ Химия¦ 4002¦ 68¦ 1¦
¦ 2003¦ Математика¦ 4003¦ 68¦ 1¦
¦ 2004¦ Философия¦ 4005¦ 17¦ 2¦
¦ 2005¦ Экономика¦ 4004¦ 17¦ 3¦
+--------------------------------------------------------------------------+
Преподаватели
+--------------------------------------------------------------------------+
¦ Код преподав.¦ Фамилия¦ Имя¦ Отчество¦ Начало работы¦
+--------------+--------------+--------------+--------------+--------------¦
¦ 4001¦ Викулина¦ Валентина¦ Ивановна¦ 01/04/1984¦
¦ 4002¦ Костыркин¦ Олег¦ Владимирович¦ 01/09/1997¦
¦ 4003¦ Казанко¦ Виталий¦ Владимирович¦ 01/09/1988¦
¦ 4004¦ Позднякова¦ Любовь¦ Алексеевна¦ 01/09/1998¦
¦ 4005¦ Загарийчук¦ Игорь¦ Дмитриевич¦ 10/05/1989¦
+--------------------------------------------------------------------------+
Оценки
+--------------------------------------------------------------------------+
¦ Код сдачи¦ Оценка¦ Дата сдачи¦ Студенческий¦ Код предмета¦
+--------------+--------------+--------------+--------------+--------------¦
¦ 1001¦ 5¦ 10/06/1999¦ 3412¦ 2001¦
¦ 1002¦ 4¦ 10/06/1999¦ 3413¦ 2003¦
¦ 1003¦ 3¦ 11/06/1999¦ 3414¦ 2005¦
¦ 1004¦ 4¦ 12/06/1999¦ 3412¦ 2003¦
¦ 1005¦ 5¦ 12/06/1999¦ 3416¦ 2004¦
+--------------------------------------------------------------------------+
Эти данные будут использоваться в примерах.
Интерфейс программы
Для того, чтоб понять, что делает программа рассмотрим ее меню:
На рисунке 1 представлено главное меню программы, которое появляется при ее запуске. Тут:
«Загрузка» - ввод базы данных из типизированного файла.
«Сохр. в тип. файл» - сохранение базы данных в типизированном файле.
«Сохр. в текст. файл» - сохранение выбранной таблицы в текстовой файл.
«Просмотр» - просмотр данных таблиц.
«Корректировка» - изменение записей таблиц.
«Сортировка» - сортировка записей по определенному полю.
«Запросы» - поиск данных в четырех таблицах, соответствующие заданному условию.
«Выход» - выход из программы.
Главное меню содержит вложенные. Например на 2 рисунке показано меню, служащее для выбора таблицы (одной из четырех). Вход в него может быть осуществлен по разному. То есть это меню вы будете проходить при просмотре данных, при корректировке и при сохранении в текстовой файл. Это меню в комментариях не нуждается.
При выборе «Корректировка» вы перейдете к меню, показанному на рисунке 3.
«Добавление» - добавление нового кортежа в заданную с помощью предыдущего меню таблицу.
«Удаление» - удаление строки из таблицы, причем запись в таблице ищется по первому столбцу.
«Изменение» - изменение свойств существующей в базе данных строки.
Последнее подменю – это подменю запросов, на котором надо остановиться поподробнее. Рассмотрим рисунок:
«Найти оценку» - найти оценку студента по его фамилии и предмету, который он сдавал.
«Кто принимал экзамен» - фамилия преподавателя, принимавшего данный предмет.
«Найти размер стипендии» - размер стипендии выбранного студента.
«Вывод по оценке» - показать всех студентов, получивших данную оценку.
«Дата сдачи экзамена» - найти даты, когда принимался данный предмет.
В запросах используются реальные названия предметов, фамилии студентов, а не их номера (для студентов например номер соответствует номеру студенческого билета).
Больше в программе меню такого типа нет, но есть много строчного ввода, например выполним запрос с поиском оценок. После запроса экран будет выглядеть так (искали четверочников):Результат запроса отображается красным цветом.
Описание используемых процедур.
В приложении используются как глобальные, так и локальные переменные. К глобальным переменным относятся:
1) names,namer:string[10] – строковые переменные, которые вынесены в глобальные, чтобы сделать программу более компактной. Иначе бы в разных процедурах надо было вводить аналогичные типы данных, а так можно обойтись лишь парой глобальных переменных.
2) key,kr:char – символьные переменные. В переменной key хранится код нажатой клавиши. А в переменной kr находится текущее положение звездочки. Звездочка будет рассмотрена ниже.
3) tek,i,j,izm:integer – целочисленные переменные. Из них i и j –циклические, временные переменные. Tek и izm показывают, какое меню активно в текущий момент. Они помогают понять программе от какого меню к какому перешли, тоесть помогает восстановить последовательность действий.
4) exist,vfile,issor:boolean – Логические переменные. Exist – служит для выхода из программы. Vfile – позволяет пускать одну процедуру по двум путям – либо выводить данные на экран, либо в файл. Issor – показывает меню выбора таблиц, что следующим шагом должна быть сортировка данной таблицы.
5) nast:pered – Типизированная переменная, в которой хранятся строки текущего меню. Описание типа pered имеется в модуле:
pered=record
st:array[1..12] of string;
m:byte; {количество строк в меню}
end;
temr,tt1,tt2,tt3,tt4:cc – Таблицы базы данных. Тут tt1 – таблица с данными о студентах, tt2 – предметы, tt3 – преподаватели, tt4 – оценки (успеваемость). Temr – временная таблица. Все эти переменные являются динамическими списками. Они описаны в файле tips.pas: