База данных "Деканат". 2

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И  НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

АТЫРАУСКИЙ ИНСТИТУТ НЕФТИ И ГАЗА

Технологический факультет

 

Кафедра:  «Информационные системы»

 

 

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

 

 

на тему:  «База данных "Деканат"»

 

 

 

 

Шифр и наименование специальности:  5В070400 – Вычислительная техника и

программное обеспечение

Группа: ВТ-10 к/о

 

 

 

 

 

Выполнил:

___________

студент Садуов А. М.

Руководитель:

___________

к.т.н., доцент  Коданова Ш.К.


 

 

 

Атырау, 2013

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И  НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

АТЫРАУСКИЙ ИНСТИТУТ НЕФТИ И ГАЗА

Технологический факультет

 

 

Кафедра:  «Информационные системы»

 

«Утверждаю»

 

зав.кафедрой___________ Шабдиров  Д.Н

«___» _________ 2013г.

                                                                       

                                                                        ЗАДАНИЕ

 

                                                                          на курсовую работу

 

Студент

 

Садуов А. М.

Специальность

5В070400 – Вычислительная  техника и программное обеспечение

 

Группа

 

ВТ-10 к/о

Тема:

«База данных "Деканат"»


 

 

 

 

 

 

Утверждено на заседании  кафедры     № ______    от «___»

_____________

2013г.

Срок сдачи курсового  проекта (работы):

до «    »

____

2013г

Защита проекта (работы):

с «    » ____

по «    »

____

2013г


 

 

Исходные данные проекта (работы)

1

Литература  по проектирование сервисное программного обеспечение СПО

 

.

2

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

   

 

1. Исходная постановка задачи

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

Работник деканата может вносить в БД следующие изменения:

Удалить или добавить в базу студента;

Поменять студенту номер зачетки и перевести его в другую группу;

Занести оценки, полученные студентами на экзаменах по каждому предмету;

Работнику деканата могут потребоваться следующие сведения:

Студенты, обучающиеся на определенной кафедре и не сдавшие хотя бы один экзамен, с указанием  группы и предмета, по которому оценка отсутствует или равна 2?

Средний балл студентов каждой группы указанного факультета?

Средний балл по каждому предмету?

Список студентов указанной кафедры, которые по итогам сессии могут получать стипендию?

Список студентов, подлежащих отчислению (не сдано более  двух предметов) по всему факультету.

Количество студентов факультета, не получающих стипендию, получающих обычную стипендию, с 50 % надбавкой и со 100 % надбавкой.

По какому предмету больше всего неудовлетворительных оценок?

Дополнительные сведения:

Cредний балл каждого студента, группы и факультета

Общее число студентов в группе, на факультете и в университете 
2. Проектирование базы данных

2.1. Сущности

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

Студент с атрибутами: ФИО, Номер зачетной книжки (ключ),

Адрес постоянной прописки, Адрес (по которому студент проживает), Иногородний студент или нет, Получает или нет стипендию.

Группа с атрибутами: Номер группы (ключ), Факультет, Название кафедры, Год формирования.

Специальность с атрибутами: Код специальности (ключ), Название специальности

Предмет с атрибутами: Название предмета (ключ).

2.2. Связи

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

Учится :  связь «один-ко-многим» между сущностями «студент» и «группа», связь является обязательной для обеих сущностей:

- один студент не может обучаться в нескольких группах;

       - в группе обучается несколько студентов;

- каждый студент должен учиться в какой-нибудь группе;

- в каждой группе должен кто-то учиться;

Специализируется : связь «один-ко-многим» между сущностями «группа» и «специальность», связь является обязательной для обеих сущностей:

- группа относится к одной специальности;

- к одной специальности может относиться несколько групп;

- каждая группа относится к какой-то специальности;

- к каждой специальности относится хотя бы одна группа;

Экзамен: связь «много-ко-многим» между сущностями «группа» и «предмет», связь является обязательной для обеих сущностей:

- группа может сдавать несколько экзаменов;

- экзамен могут сдавать несколько групп;

- группа должна сдавать какие-либо экзамены;

- экзамены обязательно сдаются группами;

Результаты Экзаменов: связь «много-ко-многим» между сущностями «студент» и «предмет», связь является обязательной для обеих сущностей:

- студент может сдавать несколько экзаменов;

- экзамен могут сдавать несколько студентов;

- студент должен сдавать какие-то экзаменов;

- экзамены обязательно сдаются студентами;

Зачеты: связь «много-ко-многим» между сущностями «студент» и «предмет», связь является обязательной для обеих сущностей:

- студент может сдавать несколько зачетов;

- зачет могут сдавать несколько студентов;

- студент должен сдавать какие-то зачеты;

- зачеты обязательно сдаются студентами;

        Получение отношений

По правилам генерации отношений из ER-диаграмм получаем следующие отношения:

Из связи «Учится» получаем отношения

Студент (№Зачетки, ФИО, №Группы, Адрес_проп, Адрес_прож, Иногородний) и

Группа (№Группы, Факультет, Название кафедры)

Из связи «Специализируется» получаем отношения

Группа (№Группы, Факультет, Название кафедры, Код специальности) и

Специальность (Код специальности, Название).

Из связи «Результаты экзаменов» получаем отношения

Студент (№Зачетки, ФИО, Адрес_проп, Адрес_прож, Иногородний), 

Предмет (Название предмета) и

Результаты экзаменов (№Зачетки, Название предмета)

Из связи «Экзамен» получаем отношения

Группа (№Группы, Факультет, Кафедра)

Предмет (Название предмета)

Экзамен (№Группы, название предмета)

Из связи «Зачет» получаем отношения

Группа (№Группы, Факультет, Кафедра)

Предмет (Название предмета)

Зачет (№Группы, название предмета)

В результате получаем следующие предварительные отношения:

Студент (№Зачетки, ФИО, №Группы, Адрес_проп, Адрес_прож, Иногородний)

Группа (№Группы, Факультет, Название кафедры)

Группа (№Группы, Факультет, Название кафедры, Код специальности)

Специальность (Код специальности, Название)

Студент (№Зачетки, ФИО, Адрес_проп, Адрес_прож, Иногородний)

Предмет (Название предмета)

Результаты экзаменов (№Зачетки, Название предмета)

Экзамен (№Группы, название предмета)

Зачет (№Группы, название предмета)

Оставим нужные:

Студент (№Зачетки, ФИО, №Группы, Адрес_проп, Адрес_прож, Иногородний)

Группа (№Группы, Факультет, Название кафедры, Код специальности)

Специальность (Код специальности, Название)

Предмет (Название предмета)

Результаты экзаменов (№Зачетки, Название предмета)

Экзамен (№Группы, название предмета)

Зачет (№Группы, название предмета)

Теперь разместим в этих отношениях пока еще не попавшие в них атрибуты предметной области.

Студент (№Зачетки, №Группы, ФИО, Адрес_проп, Адрес_прож, Иногородний)

Группа (№Группы, Код специальности, Факультет, Название кафедра)

Специальность (Код специальности, Название специальности)

Предмет (Название предмета)

Результаты экзаменов (№Зачетки, Название предмета, Оценка)

Экзамен (№Группы, Название предмета, Дата экзамена, Аудитория экзамена)

Зачет (№Зачетки, Название предмета, Зачет)

Все атрибуты распределены. Отношение Предмет является избыточным, т. к. его единственный атрибут “Название предмета”, мы можем получить из отношений Результаты экзаменов, Экзамен и Зачет, мы можем его удалить, при этом никакие связи между отношениями не нарушатся.

Видно, что Студент, Группа, Специальность, Предмет, Результаты экзаменов, Экзамен и Зачет находятся в НФБК. Проверим отношение Студент. В нем можно выделить следующие функциональные зависимости:

Nзачетки => ФИО

Nзачетки => Nгруппы

Nзачетки => Адрес_проп

Nзачетки => Адрес_прож

Nзачетки => Иногородний

Адрес_проп => Иногородний

Мы можем выполнить декомпозицию без потерь при естественном соединении, получим два отношения:

Студент(Nзачетки, ФИО, Nгруппы, Адрес_проп, Адрес_прож)

Прописка(Адрес_проп, Иногородний)

Теперь оба отношения находятся в НФБК.

Проектирование можно считать законченным.

3.1. Cтруктуры таблиц

1 .Таблица “Студент”, содержит информацию о студентах

2. Таблица “Группа” содержит информацию о группе

3. Таблица “Экзамен” содержит информацию об экзаменах

4. Таблица “Специальность” содержит информацию о специальностях

5. Таблица “Сдача_экзамена” содержит информацию о сданных экзаменах.

6. Таблица “Зачет” содержит информацию о сданных зачетах

3.2. Постоянные связи между отношениями

4. Содержимое таблиц, на котором производилась отладка системы.

Таблица «Студент»

Номер зачетки

Группа

ФИО

Адрес проживания

Адрес прописки

Иногородний

987

1100

вася

ввв

ввв

Да

111111

1100

Иванов А. Е.

Спб

Спб

Да

222222

1100

Сергеев М. Н.

СПб

Спб

Нет

333333

2200

Петров А. К.

СПб

Новосибирск

Да

444444

2200

Юрьев С. С.

СПб

Спб

Нет

555555

3300

Асин А. Ю.

СПб

Киев

Да

666666

3300

Никифоров Б. Б.

СПб

СПб

Нет


 

Таблица «Группа»

Номер группы

Факультет

Кафедра

Специальность

1100

Литературный

АЛ

1

2200

Литературный

Литература

2

3300

Программирование

МО

3


 

Таблица «Экзамен»

Номер группы

Название предмета

Дата

Аудитория

1100

Русский язык

01.02.2004

5552

1100

Физкультура

03.02.2004

0001

2200

Русский язык

01.02.2004

5552

2200

Физкультура

05.02.2004

0001

3300

Базы данных

10.02.2004

2410

3300

Математика

05.02.2004

2311

3300

Физика

06.02.2004

2222

3300

Физкультура

07.02.2004

0001


 

Таблица «Специальность»

Код_специальности

Название_специальности

1

Журналистика

2

Беллетристика

3

Программирование


 

Таблица «Сдача_экзамена»

 

Номер зачетки

Название

Оценка

111111

Русский язык

5

111111

Физика

5

111111

Физкультура

5

222222

Русский язык

2

222222

Физика

2

222222

Физкультура

2

333333

Русский язык

2

333333

Физика

4

333333

Физкультура

4

444444

Русский язык

4

444444

Физкультура

5

555555

Базы данных

2

555555

Математика

2

555555

Физика

2

555555

Физкультура

2

666666

Базы данных

2

666666

Математика

2

666666

Физика

2

666666

Физкультура

2


 

Таблица «Зачеты»

Номер зачетки

Название

Оценка

222222

Базы данных

Да

222222

Русский язык

Да

222222

Физкультура

Да

333333

Базы данных

Да

333333

Русский язык

Да

333333

Физкультура

Да

444444

Базы данных

Да

444444

Русский язык

Да

444444

Физкультура

Да

555555

Базы данных

Да

555555

Математика

Да

555555

Русский язык

Да

555555

Физика

Да

555555

Физкультура

Да

666666

Базы данных

Да

666666

Математика

Да

666666

Русский язык

Да

666666

Физика

Да

666666

Физкультура

Да


 

 

5. Схема иерархии интерфейса.

6. Описание экранных форм.

База данных содержит следующие формы:

Главная форма запускается автоматически при запуске программы. Она содержит следующие кнопки:

Кнопка “Просмотр данных студентов” открывает форму “Студент”.

Кнопка “Изменение данных студентов” открывает форму “Работа со студентами”.

Кнопка “Информация о предметах” открывает форму “Предмет”.

Кнопка “Добавление экзамена” открывает форму “Сдача экзамена”.

Кнопка “Отчеты” открывает кнопочную форму “Отчеты”.

Кнопка “Выход” закрывает главную форму.

Форма Студент (пункт меню “Просмотр данных студентов” в главной форме) выводит информацию о студентах, включающую в себя также и стипендию, которую они получают.

Источник данных – запрос “Для форму студент”.

Кнопки. Кнопки “КнопкаКАФПрименить” и “КнопкаФАКПрименить”, расположенные слева от списков вызывают макрос “ФильтрКафедры_Факультета”, который в зависимости от значения группы переключателей (“Группа”) и значений в списках производит следующие действия:

Условие отбора : [Forms]![Студент]![Группа54]=1

Применить фильтр :

[Для формы студент].[Кафедра]=[Forms]![Студент]![ПолеКафедра] And [Для формы студент].[Двойки]>0

Условие отбора : [Forms]![Студент]![Группа54]=2

Применить фильтр :

[Двойки] Is Null And ([Тройки] Is Null Or ([Иногородний]=1 And ([Тройки] Is Null Or [Тройки]=1))) And [Для формы студент].[Кафедра]=[Forms]![Студент]![ПолеКафедра]

Условие отбора : [Forms]![Студент]![Группа54]=3

Применить фильтр :

[Двойки]>2 And [Для формы студент].[Факультет]=[Forms]![Студент]![ПолеФакультет]

Кнопка “Показать все” вызывает макрос “Показать все”, в котором содержится одна макрокоманда “ПоказатьВсеЗаписи”.

Кнопка “Выход” использует стандартную процедуру обработки события закрытия формы.

Списки. Два выпадающих списка “ПолеКафедра” и “ПолеФакультет”, расположенные слева от надписей “Кафедра” и “Факультет” соответственно (Источники данных – поля Кафедра и Факультет таблицы Группы) содержат списки кафедр и факультетов соответственно.

Подчиненные формы.

Форма содержит 4 подчиненные формы :

“подчиненная форма __Количество студентов без стипендии”

“подчиненная форма __Количество студентов с 100%-ым повышением”

“подчиненная форма __Количество студентов с 50%-ым повышением”

“подчиненная форма __Количество студентов с обычной стипендией”

Форма Работа со студентом (пункт меню “Изменение данных студента” в главной форме) позволяет добавлять и удалять студента в базу данных, а также изменять его данные.

Источник данных – таблица “Студент”.

Кнопки.

Кнопка “Добавить студента” открывает форму “Добавление студента”

Кнопка “Удалить запись” использует стандартную процедуру обработки удаления данных из таблицы.

Кнопка “Выход” использует стандартную процедуру обработки события закрытия формы.

Форма Добавление студента (открывается при нажатии на кнопку “Добавить студента” в форме “Работа со студентом”) позволяет добавить студента.

Источник данных – таблица “Студент”

Кнопки.

Кнопка “Добавить” вызывает макрос “Добавление студента” который осуществляет проверку на то, что все значения были введены в соответствующие поле, и если это не было сделано, выводит сообщение об ошибке, при этом выполнение макроса приостанавливается до тех пор, пока не будут введены все значения. Например, проверка на то, что было введено значение в поле зачетки описано следующим образом:

Условие : [Forms]![Добавление студента]![Номер_зачетки] Is Null

Сообщение : необходимо ввести номер зачетки!

ОстановитьМакрос

Если все значения были введены, то выполняется запуск запроса SQL :

INSERT INTO Студент VALUES (Номер_зачетки, Номер_группы, ФИО, адрес_прож, Адрес_проп, Иногородний)

Кнопка “Выход” использует стандартную процедуру обработки события закрытия формы.

Форма Предмет (пункт меню “Информация о предметах” в главной форме) показывает список всех предметов, а также средний балл и количество двоек по каждому из них. 

Источник данных – запрос “Для формы предмет”

Кнопки. Кнопка “Выход” использует стандартную процедуру обработки события закрытия формы.

Форма Сдача экзамена (пункт меню “Добавление экзамена” главной формы) позволяет добавить оценку по экзамену любому студенту.

Списки.

Выпадающий список “Номер_зачетки” (источник данных – поле Номер зачетки таблицы Студент) справа от надписи “Номер зачетки” содержит номера зачеток студентов.

Выпадающий список “Название_предмета” (источник данных – поле Название предмета таблицы Студент) справа от надписи “Название предмета” содержит названия предметов.

Выпадающий список “Оценка” содержит фиксированный набор значений : 2, 3, 4, 5.

Кнопки.

Кнопка “Добавить” вызывает макрос “ДобавлениеОценкиПоЭкзамену”, который проверяет все ли значения введены в соответствующие поля, и, если это не так, выводит соответствующие сообщения, при этом выполнение макроса приостанавливается до тех пор, пока не будут введены все значения. Если все значения введены, то выполняется запуск запроса SQL:

INSERT INTO Сдача_экзамена VALUES (Номер_зачетки, Название_предмета, оценка)

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

Кнопка “Студент факультета, получающие стипендию” открывает отчет “Студенты, получающие стипендию”

Кнопка “Количество студентов” открывает отчет “Количество студентов”

Кнопка “Количество студентов с разной стипендией” открывает отчет “Количество СтудентовСРазнойСтипендией”

Кнопка “Записки на отчисление” открывает отчет “Приказ на отчисление”

Кнопка “Средний балл” открывает отчет “Средний балл каждого студента, группы и факультета”

Кнопка “На главную” осуществляет переход к главной форме.

7. Описание запросов.

Запрос Для формы студент

Используется как источник данных для формы “Студент”. Содержит таблицы “Студент” и “Группа” и запрос “_Сколько оценок у студента”

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

SQL-код запроса.

SELECT Студент.*, [_Сколько оценок у студента].[_Сколько двоек у студента].[Count-Оценка_по_экзамену1] AS Двойки, [_Сколько оценок у студента].[_Сколько троек у студента].[Count-Оценка_по_экзамену1] AS Тройки, [_Сколько оценок у студента].[_Сколько четверок у студента].[Count-Оценка_по_экзамену1] AS Четверки, [_Сколько оценок у студента].[_Сколько пятерок у студента].[Count-Оценка_по_экзамену1] AS Пятерки, Группа.Факультет, Группа.Кафедра

FROM Группа INNER JOIN (Студент INNER JOIN [_Сколько оценок у студента] ON Студент.Номер_зачетки = [_Сколько оценок у студента].Номер_зачетки) ON Группа.Номер_группы = Студент.Номер_группы;

Результат запроса.

Запрос _Сколько оценок у студента

Вспомогательный запрос для запроса “Для формы студент”. Содержит таблицу “Студент” и запросы “_Сколько двоек у студента”, “_Сколько троек у студента ”, “_Сколько четверок у студента”, “_Сколько пятерок у студента ”

Формулировка запроса. Вывести номера зачеток студентов, и количество их оценок.

SQL-код запроса.

SELECT Студент.Номер_зачетки, [_Сколько двоек у студента].[Count-Оценка_по_экзамену1], [_Сколько троек у студента].[Count-Оценка_по_экзамену1], [_Сколько четверок у студента].[Count-Оценка_по_экзамену1], [_Сколько пятерок у студента].[Count-Оценка_по_экзамену1]

FROM (((Студент LEFT JOIN [_Сколько двоек у студента] ON Студент.Номер_зачетки = [_Сколько двоек у студента].Номер_зачетки) LEFT JOIN [_Сколько троек у студента] ON Студент.Номер_зачетки = [_Сколько троек у студента].Номер_зачетки) LEFT JOIN [_Сколько четверок у студента] ON Студент.Номер_зачетки = [_Сколько четверок у студента].Номер_зачетки) LEFT JOIN [_Сколько пятерок у студента] ON Студент.Номер_зачетки = [_Сколько пятерок у студента].Номер_зачетки;

Результат запроса.

Номер зачетки

_Сколько двоек у студента.Count-Оценка_по_экзамену1

_Сколько троек у студента.Count-Оценка_по_экзамену1

_Сколько четверок у студента.Count-Оценка_по_экзамену1

_Сколько пятерок у студента.Count-Оценка_по_экзамену1

987

       

111111

     

3

222222

3

     

333333

1

 

2

 

444444

   

1

1

555555

4

     

666666

4

     

 

Запрос _Сколько двоек у студента

Вспомогательный запрос для запроса “_Сколько оценок у студента”. Содержит таблицу “Сдача экзамена”.

Формулировка запроса. Вывести номера зачеток студентов и количество двоек у каждого из них.

SQL-код запроса.

SELECT Сдача_экзамена.Номер_зачетки, Count(Сдача_экзамена.Оценка_по_экзамену) AS [Count-Оценка_по_экзамену1]

FROM Сдача_экзамена

GROUP BY Сдача_экзамена.Номер_зачетки, Сдача_экзамена.Оценка_по_экзамену

HAVING (((Сдача_экзамена.Оценка_по_экзамену)=2));

Результат запроса.

Номер зачетки

Count-Оценка_по_экзамену1

222222

3

333333

1

555555

4

666666

4


 

Запрос _Сколько троек у студента

Вспомогательный запрос для запроса “_Сколько оценок у студента”. Содержит таблицу “Сдача экзамена”.

Формулировка запроса. Вывести номера зачеток студентов и количество троек у каждого из них.

SQL-код запроса.

SELECT Сдача_экзамена.Номер_зачетки, Count(Сдача_экзамена.Оценка_по_экзамену) AS [Count-Оценка_по_экзамену1]

FROM Сдача_экзамена

GROUP BY Сдача_экзамена.Номер_зачетки, Сдача_экзамена.Оценка_по_экзамену

HAVING (((Сдача_экзамена.Оценка_по_экзамену)=3));

Результат запроса. Пусто, так как ни один студент не получил 3 по экзамену.

Запрос _Сколько четверок у студента

Вспомогательный запрос для запроса “_Сколько оценок у студента”. Содержит таблицу “Сдача экзамена”.

Формулировка запроса. Вывести номера зачеток студентов и количество четверок у каждого из них.

SQL-код запроса.

SELECT Сдача_экзамена.Номер_зачетки, Count(Сдача_экзамена.Оценка_по_экзамену) AS [Count-Оценка_по_экзамену1]

FROM Сдача_экзамена

GROUP BY Сдача_экзамена.Номер_зачетки, Сдача_экзамена.Оценка_по_экзамену

HAVING (((Сдача_экзамена.Оценка_по_экзамену)=4));

Результат запроса.

Номер зачетки

Count-Оценка_по_экзамену1

333333

2

444444

1


 

Запрос _Сколько пятерок у студента

Вспомогательный запрос для запроса “_Сколько оценок у студента”. Содержит таблицу “Сдача экзамена”.

Формулировка запроса. Вывести номера зачеток студентов и количество пятерок у каждого из них.

SQL-код запроса.

SELECT Сдача_экзамена.Номер_зачетки, Count(Сдача_экзамена.Оценка_по_экзамену) AS [Count-Оценка_по_экзамену1]

FROM Сдача_экзамена

GROUP BY Сдача_экзамена.Номер_зачетки, Сдача_экзамена.Оценка_по_экзамену

База данных "Деканат". 2