Информационная система ВУЗа
Информационная система ВУЗа
Оглавление
Введение
Постановка задачи
Глава 1 Проектирование БД
1.1 Концептуальное проектирование БД
1.2 Формулировка ограничений целостности
1.3 Физическое проектирование
Глава 2 Проектирование интерфейса
2.1 Интерфейс ввода/корректировки БД
2.2 Генерация отчетов
Глава 3 Программная реализация
Заключение
Список литературы
Введение
Одним из важнейших условий обеспечения эффективного функционирования любой организации является наличие развитой автоматизированной информационной системы (АИС). Под АИС понимают все системы, реализующие автоматизированный сбор, обработку и манипулирование данными и включающие технические средства обработки данных, программное обеспечение и обслуживающий персонал. Современной формой АИС являются автоматизированные банки данных (АБД), которые включают в свой состав вычислительную систему, одну или несколько БД, систему управления базами данных (СУБД) и набор прикладных программ (ПП).
Цель данной курсовой работы - разработка информационной системы Вуза. Информационная система Вуза предполагает учет успеваемости студентов различных групп.
В соответствии с поставленной целью в работе предполагается решить следующие задачи:
- сбор данных;
- концептуальное проектирование базы данных;
- формулировка ограничений целостности;
- физическое проектирование;
- разработка приложения;
- генерация отчетов.
Для обеспечения надежности системы управления данными необходимо выполнить следующие основные требования:
- целостность и непротиворечивость данных,
- достоверность данных,
- простота управления данными,
- безопасность доступа к данным.
Постановка задачи
Задание. Студенты, организованные в группы, учатся на одном из факультетов, возглавляемом деканатом, в функции которого входит контроль за учебным процессом. В учебном процессе участвуют преподаватели кафедр, административно относящиеся к одному из факультетов. Преподаватели подразделяются на следующие категории: ассистенты, преподаватели, старшие преподаватели, доценты, профессора. Ассистенты и преподаватели могут обучаться в аспирантуре, ст. преподаватели, доценты, могут возглавлять научные темы, профессора - научные направления. Преподаватели любой из категории в свое время могли защитить кандидатскую, а доценты и профессора и докторскую диссертацию, при этом преподаватели могут занимать должности доцента и профессора только, если они имеют соответственно звания доцента и профессора.
Учебный процесс регламентируется учебным планом, в котором указывается, какие учебные дисциплины на каких курсах и в каких семестрах читаются для студентов каждого года набора, с указанием количества часов на каждый вид занятий по дисциплине (виды занятий: лекции, семинары, лабораторные работы, консультации, курсовые работы, ИР и т.д.) и формы контроля (зачет, экзамен). Преподаватель может вести занятия по одной или нескольким дисциплинам для студентов как своего, так и других факультетов. Сведения о проведенных экзаменах и зачетах собираются деканатом.
По окончании обучения студент выполняет дипломную работу, руководителем которой является преподаватель с кафедры, относящейся к тому же факультету, где обучается студент, при этом преподаватель может руководить несколькими студентами.
Требуется разработать информационную систему Вуза.
Глава 1 Проектирование БД
1.1 Концептуальное проектирование БД
Поставленную задачу реализуем с помощью E-R-проектирования БД.
Для этого представим предметную область «Учебный процесс» как взаимодействие следующих сущностей: каждый «Студент» сдает экзамен по некоторой «Дисциплине» согласно учебному плану. В учебном процессе участвует «Преподаватель», который осуществляет чтение учебного курса и контроль знаний «Студента». В учебном процессе также участвует «Кафедра», которая организовывает работу «Преподавателя».
Таким образом определить сущности мы можем с помощью набора простых фраз:
Преподаватель читает дисциплину
Студент сдает (экзамен) дисциплину
Преподаватель работает на кафедре.
В таком описании предметной области сущность - это, как правило, существительное, а связь - глагол. Одни и те же существительные обозначают одни и те же сущности. В данном примере можно выделить сущности Преподаватель, Студент и Кафедра.
На основании внимательного изучения предметной области выделим следующие сущности модели «сущность-связь» («Entity Relationship» - ER-модели): «Студент», «Кафедра», «Преподаватель», «Дисциплина» и изобразим их в виде графических обозначений (прямоугольник, в верхней части которого записано имя сущности, а ниже перечисляются атрибуты, причем ключевые атрибуты помечаются подчеркиванием).
Определение сущности «Студент» в E-R-модели.
СТУДЕНТ
|
|
Номер зачетной книжки
|
|
ФИО
|
|
Группа
|
|
Город
|
|
|
Определение сущности «Кафедра» в E-R-модели.
КАФЕДРА
|
|
Название кафедры
|
|
Телефон
|
|
|
Определение сущности «Преподаватель» в E-R-модели.
ПРЕПОДАВАТЕЛЬ
|
|
Табельный номер
|
|
ФИО
|
|
Ученая степень
|
|
Кафедра
|
|
|
Определение сущности «Предмет учебного плана» в E-R-модели.
ДИСЦИПЛИНА
|
|
Код предмета
|
|
Наименование предмета
|
|
Количество часов
|
|
|
Для успешной классификации связей введем следующие предположения:
Каждый преподаватель обязательно числится на какой-либо кафедре.
Каждый преподаватель может вести несколько курсов, и каждый преподаватель ведет хотя бы один предмет; каждый курс может читаться несколькими преподавателями.
Студент получает оценки по нескольким курсам; возможно, что студент не имеет ни одной оценки; возможны курсы, также возможны предметы, по которым не имеет оценки ни один студент.
При этих предположениях E-R диаграмму предметной области можно представить следующим образом (жирным шрифтом выделены ключевые атрибуты).
Рис. 1. E-R диаграмма задачи «Успеваемость студентов».
По данным E-R-диаграммы построим набор отношений, с указанием для каждого предполагаемых первичных ключей.
В нашей работе степень связи 1:N будет соответствовать предположению, что на одной кафедре может быть множество преподавателей. Обязательный класс принадлежности для сущности «Преподаватель» означает, что за каждым преподавателем обязательно закреплена одна кафедра. Приведем E-R диаграмму для этого случая.
Степень бинарной связи M:N означает, что каждый студент может сдавать несколько дисциплин, а каждая дисциплина может сдаваться несколькими студентами. E-R диаграммы для этого случая приведена ниже.
Экземпляры полученных отношений:
Студент Сдает Дисциплину
№
зачетки
|
ФИО
|
№ зачетки
|
Дисциплина
|
Оценка
|
Дисциплина
|
Колич. часов
|
|
101
|
Иванов
|
101
|
Математика
|
5
|
Математика
|
120
|
|
120
|
Сидоров
|
101
|
Физика
|
4
|
Физика
|
80
|
|
203
|
Кузнецов
|
120
|
Информатика
|
5
|
Философия
|
150
|
|
245
|
Петров
|
245
|
Сопромат
|
4
|
Сопромат
|
90
|
|
|
|
203
|
Механика
|
4
|
Механика
|
120
|
|
|
|
203
|
Физика
|
5
|
Информатика
|
150
|
|
|
Степень бинарной связи M:N означает, что каждый преподаватель может вести несколько предметов, а каждый предмет может читаться несколькими преподавателями. Обязательный класс принадлежности говорит о том, что за каждой дисциплиной обязательно должен быть закреплен преподаватель. E-R диаграммы и экземпляры отношений для этого случая приведены ниже.
Экземпляры полученных отношений:
Преподаватель Читает Дисциплина
Таб. №
|
ФИО
|
Дисциплина
|
Таб. №
|
Дисциплина
|
Колич. часов
|
|
101
|
Иванов
|
Математика
|
101
|
Математика
|
120
|
|
120
|
Сидоров
|
Физика
|
101
|
Физика
|
80
|
|
203
|
Кузнецов
|
Информатика
|
101
|
Философия
|
150
|
|
245
|
Петров
|
Сопромат
|
120
|
Сопромат
|
90
|
|
|
|
Механика
|
120
|
Механика
|
120
|
|
|
|
Физика
|
120
|
Информатика
|
150
|
|
|
Проведя анализ на наличие функциональных зависимостей мы выделили следующие функциональные зависимости:
1. № зачетки (NZ) ФИО (FIO), Группа (GRUPPA), Город (TOWN)
2. №зачетки (NZ), Код дисциплины (S_ID) Оценка (MARK)
3. Код дисциплины (S_ID) Наименование (SUBS), Колич. Часов (HOUR)
5. Код дисциплины (S_ID) Таб. № (TN)
6. Таб. № (TN) ФИО (FIO), Ученая степень (UCHSTEPEN), Кафедра (KAFEDRA)
1.2 Формулировка ограничений целостности
Ограничения целостности, как ограничения на значения ключевых полей в связных таблицах служат для сохранения логической структуры баз данных. Как правило, ограничения целостности реализуются на уровне приложений и являются составной частью технического задания на их разработку. Некоторые СУБД способны поддерживать определенные виды ограничений на уровне организации окружения программы. Требования целостности для ключевых полей каждого отношения приведены в таблицах.
Таблица Student (отношение «Студент»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
NZ
|
№ зачетной книжки
|
+
|
ключ
|
Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы.
|
|
FIO
|
ФИО
|
Alpha
|
|
|
|
GRUPPA
|
Группа студента
|
Alpha
|
|
|
|
TOWN
|
Город
|
Alpha
|
|
|
|
|
Таблица Marks (отношение «Оценки»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
NZ
|
№ зачетной книжки
|
Long integer
|
|
Должен принадлежать домену Student.NZ
|
|
S_ID
|
Код дисциплины
|
Long integer
|
|
Должен принадлежать домену Subs.S_ID
|
|
MARK
|
Оценка за предмет
|
Number
|
|
|
|
|
Таблица Subs (отношение «Дисциплина»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
S_ID
|
Код дисциплины
|
+
|
ключ
|
Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы.
|
|
Subs
|
Наименование дисциплины
|
Alpha
|
|
|
|
Hour
|
Количество часов
|
Number
|
|
|
|
|
Таблица Subj (отношение «Дисциплина2»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
S_ID
|
Код дисциплины
|
Long integer
|
|
Должен принадлежать домену Subs.S_ID
|
|
TN
|
Табельный номер преподавателя
|
Long integer
|
|
Должен принадлежать домену Prepodavatel.TN
|
|
|
Таблица Prepodavatel (отношение «Преподаватель»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
TN
|
Табельный номер преподавателя
|
+
|
ключ
|
Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы.
|
|
FIO
|
ФИО преподавателя
|
Alpha
|
|
|
|
UCHSTEPEN
|
Ученая степень
|
Alpha
|
|
|
|
KAFEDRA
|
Название кафедры
|
Alpha
|
|
|
|
|
Таблица Kafedra (отношение «Кафедра»).
Имя поля
|
Описание
|
Тип
|
Примечание
|
Требование
|
|
KAFEDRA
|
Название кафедры
|
Alpha
|
|
|
|
TELEPHON
|
№ телефона кафедры
|
Long integer
|
|
|
|
|
1.3 Физическое проектирование
В качестве исходных данных для физического проектирования примем простейшую ситуацию :
Задача реализуется на одном рабочем месте.
Многопользовательский доступ к базе данных не предусмотрен.
В нашем случае таблицы хранятся в формате DB; все файлы базы данных располагаются на локальном диске. Здесь же хранятся файлы поддержки СУБД и файлы прикладной программы.
Важная часть физического проектирования - выбор индексных выражений для построения индексов и выбор формата хранения индексов. Для обеспечения скорости работы, особенно на операциях выборки и поиска, необходима индексация по всем ключевым полям таблиц (см. таблицы выше).
Для создания таблиц мы используем Database Desktop программы Borland Delphi. Входим в меню File -> New -> Table и выбираем тип таблицы Paradox 7. И заполняем поля таблицы. Созданные таблицы (см. Приложение 1) будут хранится в формате DB.
Глава 2 Проектирование интерфейса
Функционально приложение состоит из трех частей:
- Интерфейс ввода / корректировки БД
- Подсистема генерации печатных форм.
- Вспомогательные функции.
Каждой из этих частей соответствует опция главного меню программы.
2.1 Интерфейс ввода/корректировки БД
Главное меню представляет собой иерархическую систему из собственно главного меню и всплывающих меню, позволяющих уточнить выбор, сделанный в меню. Передача управления в процедуру обработки выбранной команды происходит при выборе надлежащей опции всплывающего меню. Для передачи управления используется механизм управления событиями.
Меню программы выглядит следующим образом.
Рис. 2. Структурная схема (дерево диалога)
Интерфейс ввода / корректировки данных позволяет вводить, исправлять либо корректировать информацию в БД. На программную поддержку интерфейса возлагается задача отслеживания как корректности действий оператора, так и ограничений целостности.
Интерфейс состоит из двух уровней. На первом из них предоставляется доступ к одной из четырех справочников - «Студенты», «Предметы», «Преподаватели» либо «Кафедры». Для доступа к этим справочникам используется экранная форма (см. Приложение 2), в которой отображается содержимое справочника в виде таблицы. На форме размещены специальные кнопки для редактирования, добавления и удаления записи. При нажатии на кнопку «Редактировать» открывается окно (см. Приложение 2), в котором содержатся поля для редактирования. Кнопка «Добавить» добавляет строку в таблицу, а кнопка «Удалить» соответственно удаляет запись.
Выбрав на экране, например, справочник «Студенты» (см. Приложение 2), пользователь получает доступ к информации, содержащейся в данном справочнике, т.е. он получает доступ к личным данным студентов: ФИО студента, номер зачетной книжки, группа, в которой обучается студент, а также город, в котором он проживает. Получив доступ к данной информации, пользователь может осуществлять ввод и корректировку данных. Аналогично и с другими справочниками. Выбрав в меню справочник «Предметы», на экранной форме (см. Приложение 3) пользователь может увидеть список дисциплин, код дисциплин и количество часов для каждой дисциплины. Выбрав в меню справочник «Преподаватели» (см. Приложение 3), пользователь на экранной форме получает доступ к личной информации преподавателей: табельному номеру преподавателя, ФИО, ученой степени и на какой кафедре он работает. Выбрав в меню справочник «Кафедры» (см. Приложение 4) пользователь видит список кафедр и их телефоны.
2.2 Генерация отчетов
Поскольку вся информация хранится в виде декомпозиции, постольку для выдачи на печать отчетов необходимо проводить обратное слияние таблиц. Это можно делать либо на логическом уровне, используя динамические связи, либо на физическом уровне.
Практически во всех современных СУБД, где используется современная техника программирования, этот вопрос решается следующим образом. Все СУБД располагают каким - либо подмножеством языка запросов SQL, встроенным в систему. Этот язык предоставляет возможность корректного взаимодействия с сервером, а также создать объединение таблиц любой сложности, в том числе и с вложенными группировками и агрегатированием данных всего лишь в одной команде Select. Кроме гибкости и мощности запросы SQL отличаются еще и высоким быстродействием - по сравнению с запросом на языке навигационного типа выборка выполняется иногда в десятки раз быстрее.
В качестве рабочего алгоритма выбрана следующая последовательность действий :
- С помощью команды Select создается выборка в курсоре SQL.
- Этот курсор устанавливается как текущая рабочая область и из него происходит вывод на печать.
Для вывода отчета пользователь может выбрать в меню вкладку «Печать». При нажатии на «Печать» открывается экранная форма (см. Приложение 4), на которой изображены две кнопки «Вывод отчета №1» и «Вывод отчета №2». При нажатии на одну из этих кнопок выводится отчет (см. Приложение 5).
Глава 3 Программная реализация
Для реализации БД и разработки интерфейса мы используем среду программирования Delphi.
Главное меню программы создаем следующим образом.
Создаем новый проект и на форме (Form1) размещаем следующие компоненты (см. Приложение 6):
1. MainMenu - этот компонент служит для создания меню программы, в свойстве Items мы прописываем наше меню, состоящее из справочников, отчетов, «о программе» и «выход».
2. Button - в данном компоненте мы изменяем свойство Caption на «Выход», щелкаем два раза по компоненту и в процедуре прописываем Close; т.е. при нажатии на эту кнопку происходит закрытие окна.
Затем для осуществления доступа к нашим созданным в Database Desktop таблицам мы создаем дополнительный модуль Data Module (см. Приложение 6). На этом модуле мы размещаем следующие компоненты:
1. Query1 - в данном компоненте в свойстве DatabaseName мы прописываем путь у нашей БД, в свойстве SQL мы прописываем текст запроса: Select * from Student
И свойству Action мы устанавливаем значение True.
2. DataSource1 - этот компонент обеспечивает доступ к БД через компонент Query1. В свойстве DataSet мы выбираем Query1.
3. Table1 - в этом компоненте в свойстве DatabaseName мы прописываем путь у нашей БД, а в свойстве TableName мы выбираем нужную нам таблицу. Затем устанавливаем для свойства Action значение True.
4. DataSource2 - этот компонент мы связываем с компонентом Table1 при помощи свойства DataSet,
Далее создаем новую форму (Form3). На ней размещаем следующие компоненты (см. Приложение 6):
1. DBGrid1 - данный компонент мы используем для отображения содержимого наших справочников. В свойстве DataSource мы прописываем DataM.DataSource2, тем самым получая доступ к справочнику.
2. Размещаем кнопку редактирования, используя при этом компонент Button. Для того, чтобы при нажатии на эту кнопку появилось окно редактирования создадим еще одну форму(см. ниже Form7). Затем щелкнем по кнопке два раза и напишем текст программы в процедуре.
procedure TForm3.Button1Click(Sender: TObject);
begin
Form7.Show; //отображение окна редактирования
end;
3. Размещаем кнопку «Добавить», используя компонент Button. Щелкаем два раза по компоненту и в открывшемся окне в процедуре procedure TForm3.Button2Click(Sender: TObject) прописываем следующий текст:
procedure TForm3.Button2Click(Sender: TObject);
begin // вставка новой строки
DataM.Table1.Insert;
DataM.Table1.FieldByName('FIO').AsString:=' ';
DataM.Table1.FieldByName('GRUPPA').AsString:=' ';
DataM.Table1.FieldByName('TOWN').AsString:=' ';
DataM.Table1.Post;
end;
4. Размещаем кнопку «Удалить», используя все тот же компонент Button. Щелкаем два раза и пишем следующий текст:
procedure TForm3.Button3Click(Sender: TObject);
begin
DataM.Table1.Delete; // удаление записи
end;
5. Аналогично размещаем кнопку «Закрыть» и пишем следующий текст:
procedure TForm3.Button4Click(Sender: TObject);
begin
Close;
end;
Создаем еще одну форму (Form4), размещая на ней следующие компоненты (см. Приложение 7):
1. Кнопку Button с названием «Просмотр отчета №1», щелкаем по ней два раза и пишем следующее:
procedure TForm4.Button1Click(Sender: TObject);
begin
Form5.QuickRep1.Preview; // вывод отчета
end;
2. Кнопку Button с названием «Просмотр отчета №2», щелкаем по ней два раза и пишем следующее:
procedure TForm4.Button3Click(Sender: TObject);
begin
Form6.QuickRep1.Preview;
end;
3. Кнопку Button с названием «Закрыть», щелкаем по ней два раза и пишем следующее:
procedure TForm4.Button2Click(Sender: TObject);
begin
Close;
end;
Создаем новую форму (Form5), на которой будет отображаться отчет №1. Размещаем на ней следующие компоненты (см. Приложение 7):
1. Query1 - в свойстве DatabaseName мы прописываем путь у нашей БД. И свойству Action устанавливаем значение True.
В свойстве SQL пишем следующий запрос:
Select NZ,FIO,Subs,MARK
from Student,Subs,Marks
where Student.NZ=Marks.NZ and Subs.S_ID=Marks.S_ID
ORDER BY FIO
2. QuckRep1 - данный компонент служит для отображения нужного нам отчета. В свойстве DataSet выбираем Query1.
Создаем новую форму (Form6), на которой будет отображаться отчет №2. Размещаем на ней следующие компоненты (см. Приложение 8):
1. Query1 - В свойстве DatabaseName мы прописываем путь у нашей БД. И свойству Action устанавливаем значение True.
В свойстве SQL пишем следующий запрос:
Select * from Prepodavatel ORDER BY FIO
2. QuckRep1 - данный компонент служит для отображения нужного нам отчета. В свойстве DataSet выбираем Query1.
Создаем новую форму (Form7) - это будет наше окно для редактирования. Размещаем следующие компоненты (см. Приложение 8):
1. Label1, Label2, Label3 - в свойстве Caption меняем название соответственно «ФИО», «Группа», «Город».
2. Edit1, Edit2, Edit3 - для ввода значений
3. Кнопка Button «Выполнить», щелкаем по ней два раза и пишем следующий текст:
procedure TForm7.Button1Click(Sender: TObject);
begin
DataM.Table1.Edit;
DataM.Table1.FieldByName('FIO').AsString:=Edit1.Text;
DataM.Table1.FieldByName('GRUPPA').AsString:=Edit2.Text;
DataM.Table1.FieldByName('TOWN').AsString:=Edit3.Text;
DataM.Table1.Post;
end;
4. Кнопка Button «Закрыть», щелкаем по ней два раза и пишем следующий текст:
procedure TForm7.Button2Click(Sender: TObject);
begin
Close;
end;
Создаем последнюю форму для наших справочников (Form8), на которой размещаем следующие компоненты:
1. DBGrid1 - данный компонент мы используем для отображения содержимого наших справочников. В свойстве DataSource мы прописываем DataM.DataSource1, тем самым получая доступ к справочнику.
2. Кнопку Button с названием «Закрыть», щелкаем по ней два раза и пишем следующее:
procedure TForm8.Button1Click(Sender: TObject);
begin
Close; end;
Для того чтобы при выборе в меню справочника отбражались нужные данные, мы щелкаем в компоненте MainMenu по справочнику «Студенты» и прописываем следующий текст программы:
procedure TForm1.N2Click(Sender: TObject);
begin
Form3.Show;
end;
Затем щелкаем по справочнику «Предметы» и пишем:
procedure TForm1.N3Click(Sender: TObject);
begin
Form8.Show;
DataM.Query1.SQL.Clear;
DataM.Query1.SQL.Add('Select * from Subs');
DataM.Query1.Active:=true;
end;
Далее щелкаем по справочнику «Преподаватели» и пишем:
procedure TForm1.N4Click(Sender: TObject);
begin
Form8.Show;
DataM.Query1.SQL.Clear;
DataM.Query1.SQL.Add('Select * from Prepodavatel');
DataM.Query1.Active:=true;
end;
И наконец, щелкаем по справочнику «Кафедры» и пишем следующее:
procedure TForm1.N5Click(Sender: TObject);
begin
Form8.Show;
DataM.Query1.SQL.Clear;
DataM.Query1.SQL.Add('Select * from Kafedra');
DataM.Query1.Active:=true;
end;
С помощью данных компонентов мы разработали удобный интерфейс для пользователя.
|