Учет успеваемости студентов
Министерство
образования и науки РФ
Пермский
национальный исследовательский политехнический университет
Электротехнический
факультет
Кафедра ИТАС
Курсовая работа по базам данных
На тему: Учет успеваемости студентов
Выполнил
Шаякбаров
Н.Ф.
Пермь 2015
Введение
В современном мире базы данных применяются практически везде - в интернет
магазинах, предприятиях, учебных и медицинских учреждениях. В связи с этим
возникает нужда в создании специальных систем, которые ответственны за
управление базами данных.
Язык SQL широко применяется в работе с базами
данных. Значительная сфера IT-сферы
так или иначе связана с ним. Несмотря на свою кажущуюся простоту, язык SQL предоставляет огромные возможности
для работы с базами данных.
В ходе работы будет проведена систематизация и углубление теоретических
знаний о базах данных и методах работы с ними. Помимо этого, курсовая работа
позволит практически применить методы проектирования информационных систем,
освоить выбранную СУБД и выработать навыки работы с базой данных.
Для выполнения курсовой работы была выбрана СУБД MS Access - один из нынешних лидеров рынка программного
обеспечения для работы с базами данных. Для программирования пользовательского
приложения был выбран компилятор CODEGear - как один из наиболее удобных, современных и наиболее часто
встречающихся.
1.
Цели и задачи курсовой работы
Цель курсовой работы - систематизация и углубление теоретических знаний,
полученных за время обучения, а так же приобретение и закрепление навыков
самостоятельной работы.
Задачи курсовой работы:
) практическое применение методов проектирования ИС;
) выработка навыков работы с БД;
) усвоение приемов работы с СУБД Access и языком SQL;
В ходе выполнения курсового проекта было поставлено следующее задание.
Необходимо создать базу данных для учета успеваемости студентов, состоящую из
трех таблиц:
Студент (НомерЗачетки, Фамилия, ДомашнийАдрес, Группа),
Предмет (КодПредмета, Наименование),
Экзамен (КодПредмета, НомерЗачетки, ДатаЭкзамена).
Далее нужно запрограммировать систему, позволяющую получать ответы на
запросы:
) получите данные о студентах указанной группы, например ПОВТ-06;
) получите данные о студентах, сдавших экзамен после указанной даты;
) получите данные о студенте по номеру его зачетки;
) получите данные о количестве студентов, сдававших экзамены по
предметам;
) получите сведения о количестве студентов, получивших положительные
оценки;
) получите название предмета, по которому поставлено наибольшее
количество двоек;
) получите данные о предметах, которые сдавали студенты заданной группы;
) получите домашние адреса студентов, сдавших на «отлично» указанный
предмет.
Необходимо разработать формы ввода, просмотра и редактирования данных в
базе и создать отчеты по таблице «Студенты», по запросам 1, 7, 8.
2. Выбор
СУБД для реализации БД
Основными критериями для выбора служили: 1) Доступность ПО; 2) Знакомство
с ПО; 3) Функциональные возможности;
В качестве реляционной СУБД была выбрана MSAccess, по следующим причинам:
1) Access легко взаимодействует с другими программами;
2) Access широко распространён;
3) Access наиболее привычен, имеет удобный интерфейс, широкий
функционал и субъективно понятен.
Несмотря на отсутствие лицензии, можно использовать Access в режиме trial.
В сравнении Access с другими
реляционными СУБД можно сказать следующее. Большая часть СУБД аналогичная и
различается незначительно. Вопрос выбора СУБД чаще всего упирается в удобство и
привычку использования той или иной СУБД, ну и конечно доступности. На примере
того же OpenOfficeBase можно сказать, что различия не
всегда могут быть найдены обычным пользователем. Самым существенным различием
между Access и Base для меня стало трудность прикрепления БД от Base к сторонним ПО разработки, т.к. не
все они знают о такой СУБД. По этой причине, Access наиболее удобен для разработки БД. [1]
Для разработки клиентского приложения была выбрана свободно
распространяемая CODEGearRADStudio.
Основными преимуществами данного ПО можно назвать:
) Поддержка большого количества языков разработки;
2) Поддержка технологии ADO;
) Широкий функционал и лёгкая интеграция VS с Access.
3. Обоснование
выбора способа соединения с БД
Технология ADO имеет как свои
недостатки, так и свои преимущества. Основными преимуществами можно назвать:
· Технология ADO предлагает разработчику удобный прикладной
интерфейс для OLE DB;
· ADO удобна в обращении, так как предоставляет объекты
Automation, скрывающие интерфейсы OLE DB, что позволяет программисту уделять
основное внимание решаемым задачам, а не сложностям технологии OLE DB;
· ADO-объекты разрешается применять на любой платформе, которая
поддерживает СОМ и Automation;
· ADO-набор данных допустимо отсоединять от источника данных и
передавать другим приложениям, при этом возможно изменение данных набора в
отрыве от сети и источника данных.
Ко всему вышесказанному стоит прибавить тот факт, что ADO проста в использовании и привычна.
Это и стало ключевым моментом в выборе технологии соединения. [2]
В качестве языка для разработки клиентского приложения использовался Delphi. В качестве ПО для разработки
использовался CodeGear. Преимуществами CodeGear можно назвать:
) Поддержка множества языков программирования;
2) Поддержка технологии ADO.
) Простота и интуитивность интерфейса, собранность интерфейса в
едином окне;
) Широкий функционал;
) Привычность, большое количество учебных материалов в сети;
4. Интерфейсы
и приложения для технологических операций с БД
Рисунок 1 - форма ввода таблицы «Предмет»
Рисунок 2 - форма просмотра таблицы «Предмет»
Рисунок 3 - форма редактирования таблицы «Предмет»
Рисунок 4 - форма ввода таблицы «Студент»
Рисунок 5 - форма просмотра таблицы «Студент»
Рисунок 6 - форма редактирования таблицы «Студент»
Рисунок 7 - форма редактирования таблицы «Экзамен»
Рисунок 8 - форма ввода таблицы «Экзамен»
Рисунок 9 - форма просмотра таблицы «Экзамен»
Рисунок 10 - Отчёт по запросу 1
Рисунок 11 - Отчёт по запросу 2
Рисунок 12 - Отчёт по запросу 8
5. Приёмы
работы с Базой Данных
В СУБД были установлены связи между таблицами. Тип связей между:
) КодПредмета(Экзамен) - КодПредмета(Экзамен) один-ко-многим, так
как одному коду соответствует несколько экзаменов. Т.е. один и тот же предмет
сдают многие студенты.
2) НомерЗачётки(Студент) - НомерЗачётки(Студент) многие-ко-многим,
т.к. один студент может сдавать несколько экзаменов, по нескольким предметам, и
несколько студентов могут сдавать один и тот же экзамен.
Рисунок 13 - Логическая модель базы данных
Связи с отношением «многие-ко-многим» создаются в базе данных с помощью
промежуточных (связующих) таблиц. Связующая таблица содержит столбцы первичного
ключа обеих связываемых таблиц. Была создана связующая таблица «Студент +
Экзамен». Она содержит в себе ключевой ключ НомерЗачётки таблицы «Студент» и id_записи, ключевой ключ таблицы
«Экзамен».
Рисунок 14 - Cвязующая таблица
Физическая модель данных - это конкретные места хранения данных в
конкретной СУБД. Модель зависит от конкретной СУБД. Объектами физической модели
являются таблицы и поля с типами данных, определенными для выбранной СУБД.
Объекты именуются в соответствии с правилами СУБД. Одной логической модели
данных может соответствовать несколько физических моделей.
Так как, CODEGear не может
работать с версиями MS Access после 2003, то было создано две базы
данных. Одна из них версия 2003 - для работы с пользовательским приложением,
другая аналогичная, с формами ввода, просмотра, редактирования, отчётами,
запросами в режиме конструктора и так далее.
Рисунок 15 - Физическая модель базы данных
6. Алгоритм
работы приложения
Если описывать основной алгоритм программы в работе, а именно
осуществление запросов к Базе Данных, то можно выразить его следующим образом:
НАЧАЛО
ОЧИСТИТЬ.SQL;
ВЫКЛЮЧИТЬ КОМПОНЕНТ ADO Query;
ДОБАВИТЬ НОВЫЙ.SQL;
ВКЛЮЧИТЬ КОМПОНЕНТ ADOQuery;
ВЫРАВНИТЬ СТОЛБЦЫ;
ЗАДАТЬ ШИРИНУ СТОЛБЦОВ;
КОНЕЦ
Теперь давайте рассмотрим пошагово:
) Необходимо очистить предыдущий SQL-запрос для корректного вывода нового. Данный шаг
выполняется строкой кода ADOQuery1.SQL.Clear;
2) Выключение компонента ADOQuery (т.е. выставление свойства Active в положение false) происходит автоматически, при очистке содержащейся в нём SQL-строки;
) Новый SQL-запрос
передаётся через 2 шага. Сначала срабатывает оператор множественного выбора,
который передаёт необходимый запрос в компонент Memo2, затем уже вне оператора множественного выбора
данный запрос передаётся в SQL
строку ADOQuery. Это сделано для того, что бы
пользователь легко мог найти ошибку в SQLзапросе, в случае если она допущена;
) Включение компонента ADOQuery происходит так же после оператора множественного выбора,
строчкой кода ADOQuery1.Active:=true;
) Выравнивание столбцов и задача их ширины не обязательны, но
позволяют легче просматривать полученные данные;
Далее приведём код программы:
Код, выполняющийся при создании формы
Код для вывода таблицы из Базы Данных и форматирования таблицы DBGrid
Код, выполняющий смену переменных оперирующих в запросах
данные
алгоритм access логический
Основной код, отвечающий за SQL запросы
Подробно разберём запросы:
1) SELECT * FROM
Студент WHERE Группа = '''+group+''' - простой запрос выборки всех
столбцов из таблицы Студент с условием, что столбец Группа будет равен
переменной строковой переменной group.
) SELECT * FROM Студент WHERE НомерЗачёткиIN(SELECT НомерЗачётки
FROM Экзамен WHERE ДатаЭкзамена>'''+date+''') - запрос с вложенным запросом.
Вложенный запрос выдаёт все номера зачётки, из таблицы Экзамен, у которых
ДатаЭкзамена позднее 01.01.2015. Конструкция IN принимает значения из вложенного запроса. Далее на основе
полученных НомеровЗачётки из таблицы Студент выбираются все данные.
3) SELECT * FROM
Студент WHEREНомерЗачётки='+IntToStr(numb)+' - простой запрос выборки всех данных из таблицы
студенты с условием, что НомерЗачётки будет равняться целочисленной переменной numb.
4) SELECTCOUNT(*) FROM
Экзамен WHEREКодПредмета='+IntToStr(pred)+' - простой запрос использующий агрегатную функцию COUNT(*) для подсчёта экзаменов по заданному
КодуПредмета.
5) SELECTCOUNT(*) FROM
Экзамен WHERE Оценка>3 - запрос использующий
агрегатную функцию COUNT(*) для
подсчёта количество оценок выше 3, в таблице Экзамен.
) SELECT TOP 1 Наименование FROM Предмет WHERE
КодПредметаIN(SELECT COUNT(*) as Оценка FROM Экзамен WHERE Оценка=2 GROUP BY
КодПредмета ORDER BY 1 DESC) - сложный запрос на выборку. TOP 1 - означает, что будет выводиться
только первый по значению. GROUPBYКодПредмета
- означает что данные группируются по заданному полю. ORDERBY 1 DESC-
задаёт, что упорядочивание происходит по 1 столбцу в порядке убывания. Таким
образом, вложенный запрос подсчитывает количество Оценок равных 2, затем
получает два результата 2 (Математика), 1(Физика). Сортирует их в порядке
убывания. Затем передаёт в основной запрос, который выводит только самый
верхний, т.е. максимальный.
) SELECT Наименование FROM Предмет WHERE КодПредметаIN(SELECT
КодПредмета FROM Экзамен WHERE НомерЗачетки IN(SELECT НомерЗачетки FROM Студент
WHERE Группа='''+group+''')) - сложный запрос, использующий две вложенности.
Сначала выбирается НомераЗачётки из таблицы Студенты, в соответствии с
прописанной группой, далее номера передаются и просматривается каким Экзаменам
соотвествуют данные номера в таблице Экзамен и наконец в Таблице КодПредмета
выводятся предметы.
) SELECT ДомашнийАдрес FROM Студент WHERE НомерЗачёткиIN(SELECT
НомерЗачётки FROM Экзамен WHERE Оценка=5 andКодПредмета='+IntToStr(pred)+') -
сложный запрос использующий вложенность. Изначально вложенный запрос выбирает
такие НомераЗачётки в таблице Экзамен, у которых Оценка по определённому
предмету 5. Затем данные передаются и из таблицы Студент находится их
ДомашнийАдрес.
Компоненты и процедуры разработанной программы
. Документация пользователя
Установка соединения БД с клиентским приложением происходит с помощью
компонента ADOConnection, в котором в режиме обозревателя
задаётся необходимая строка соединения. Если бы у нас было многооконное
приложение, то был бы смысл в отключении и подключении БД динамически, но так
как у нас всего одно окно, это не имеет большого значения.
Рисунок 16 - Свойство канала
Для соеденения использовался провайдер MicrosoftJet 4.0 OLEDBProvider и
технология ADO. Строка соединения связанна с другими компонентами связи -
ADOQuery, DataSourseи DBGrid.
Рисунок 17 - Тестовые данные таблицы «Студент»
Рисунок 18 - Тестовые данные таблицы «Экзамен»
Рисунок 19 - Тестовые данные таблицы «Предмет»
8. Интерфейс
приложения
Интерфейс приложения состоит из следующих компонентов:
DBGrid
- необходимый для отображения Базы Данных;- содержащий строку подключения с БД;
ADOQuery - содержащий запросы SQL;
компонента Memo - служащие
для вывода текста запроса и объяснения, что он должен делать;
компонентовLabel - для вывода
на экран пояснительных надписей;
компонента Edit - для ввода
данных новых переменных;
Рисунок 20 - Интерфейс приложения
9. Результаты
работы приложения
Таблицы Отображение таблицы «Студент»
Рисунок 21 - таблица «Студент»
Отображение таблицы «Экзамен»
Рисунок 22 - таблица «Экзамен»
Отображение таблицы «Предмет»
Рисунок 23 - таблица «Предмет»
Запросы
Запрос 1- получите данные о студентах указанной группы;
Рисунок 24 - ответ на запрос 1
Запрос 2 - получите данные о студентах, сдавших экзамен после указанной
даты;
Рисунок 25 - ответ на запрос 2
Запрос 3 - получите данные о студенте по номеру его зачетки;
Рисунок 26 - ответ на запрос 3
Запрос 4 - получите данные о количестве студентов, сдававших экзамены по
предметам;
Рисунок 27 - ответ на запрос 4
Запрос 5 - получите сведения о количестве студентов, получивших
положительные оценки;
Рисунок 28 - ответ на запрос 5
Запрос 6 - получите название предмета, по которому поставлено наибольшее
количество двоек;
Рисунок 29 - ответ на запрос 6
Запрос 7 - получите данные о предметах, которые сдавали студенты заданной
группы;
Рисунок 30 - ответ на запрос 7
Запрос 8 - получите домашние адреса студентов, сдавших на «отлично»
указанный предмет;
Рисунок 31 - ответ на запрос 8
Заключение
По мере работы с проектом были созданы логическая и физическая модели
базы данных, установлены связи, созданы запросы на языке SQL и в конструкторе запросов, были
сделаны отчёты по запросам, созданы таблицы и заполнены тестовыми данными,
формы просмотра, редактирования и ввода данных.
В ходе выполнения курсового проекта были выполнены поставленная цель и
задачи, а именно:
) Практически применены различные методы проектирования
информационных систем;
2) Были выработаны навыки работы с базами данных;
) Усвоены приёмы работы с СУБД Access и языком SQL;
Так же, в ходе работы над курсовым проектом было разработано
пользовательское приложение, которое позволяет работать с базой данных,
осуществлять подачу запросов на выборку данных в соответствии с заданием.
Вдобавок к этому, были получены навыки по использованию технологии
соединения с базами данных - ADO.
В ходе разработки пользовательского приложения, были на практике
продемонстрированы возможности языка SQL на возможность сложной выборки, условной выборки и использования
вложенных запросов.
Приложение 1
Листинг процедуры создания формы
Приложение 2
Листинг SQL-запросов