Смекни!
smekni.com

Разработка базы данных, отражающей учет успеваемости студентов (стр. 1 из 3)

Министерство образования

Российской Федерации

Хабаровский Государственный Технический Университет

Кафедра: «Программное обеспечение»

КУРСОВАЯ РАБОТА

По теме «Разработка базы данных,

отражающей учет успеваемости студентов»

Выполнил студент

гр. ПО-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: