База данных "Студенты и преподаватели"

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

СОДЕРЖАНИЕ

  • ВВЕДЕНИЕ
  • 1. АНАЛИЗ ЗАДАЧИ
    • 1.1 Анализ предметной области, выявление необходимой пользователю функциональности
    • 1.2 Разработка общей архитектуры информационной системы
  • 2. РАЗРАБОТКА СЕРВЕРНОЙ ЧАСТИ ИНФОРМАЦИОННОЙ СИСТЕМЫ
    • 2.1 Выявление сущностей, их атрибутов и ключей
    • 2.2 Выявление связей
    • 2.3 Построение ER-диаграммы
    • 2.4 Переход от ER-диаграммы к предварительным отношениям
    • 2.5 Заполнение предварительных отношений атрибутами
    • На рисунке представлены следующие обозначения:
    • 2.6 Проверка предварительных отношений на соответствие нормальным формам
    • 2.7 Построение схемы данных
    • 2.8 Задание частных ограничений целостности данных
    • 2.9 Разработка хранимых процедур
    • 3.1 Организация взаимодействия клиентской программы с БД
    • 3.2 Разработка форм
    • 3.3 Разработка отчетов
    • 3.4 Разработка сценария инсталляции клиентской программы
    • 3.5 Руководство пользователя
  • Заключение
  • СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
  • Приложение 1: SQL-скрипт для создания БД
  • Приложение 2: исходный текст клиентской программы
  • Приложение 3: Сценарий инсталляции программы
  • ВВЕДЕНИЕ
  • база данный атрибут
  • Высшие учебные заведения являются важной частью жизни многих людей, как получающих высшее профессиональное образование, так и обучающих юных студентов разнообразным профессиональным навыкам. Зачастую вуз — не просто место работы или учёбы, это дружный коллектив и интересные мероприятия. Но всё же важнейшей функцией вуза является передача опыта многих поколений будущим молодым специалистам.
  • Эта тема показалась нам актуальной. Структура вуза довольно сложна, и чтобы облегчить работу преподавателей, ректора и студентов может использование базы данных, содержащей информацию о студентах и их успеваемости, преподавателях, специальностях, кафедрах и факультетах вуза. Преподаватели всегда смогут просматривать информацию о начисленных заработных платах, о предметах, которые они ведут. Студентам будет доступна информация о стипендиях и собственной успеваемости. Абитуриенты смогут ознакомиться со структурой вуза, его кафедрами, факультетами и специальностями. Ректору будут в удобной форме предоставляться необходимые данные обо всех студентах и преподавателях вуза. В обязанности администратора будет входить грамотная корректировка и обновление информации о вузе.
  • Для выполнения поставленной задачи будет использоваться следующее программное обеспечение:
  • · СУБД: MS SQL Server 2005;
  • · система программирования: Microsoft Visual C# 2005;
  • · CASE средства проектирования баз данных: Sybase PowerDesigner 15;
  • · программа инсталляции: Inno Setup 4.2.7.

1. АНАЛИЗ ЗАДАЧИ

1.1 Анализ предметной области, выявление необходимой пользователю функциональности

В данном курсовом проекте рассматривается такая область как «Студенты и преподаватели».

Каждый студент должен иметь возможность просматривать информацию о начисленных ему стипендиях и собственной успеваемости.

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

Ректору должна предоставляться вся необходимая информация о студентах и преподавателях.

Абитуриенты вуза должны иметь возможность ознакомиться с перечнем кафедр, факультетов и преподаваемых в вузе специальностях.

Деятельность администратора шире, чем любого другого пользователя, т.к. именно он имеет возможность редактирования и сохранения сведений всей базы данных «Студенты и преподаватели». Именно от этого человека зависит правильность корректировки информации, доводимой до каждого конечного пользователя.

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

Клиентское приложение должно в удобной для пользователя форме предоставлять информацию для просмотра или редактирования в зависимости от его учетной записи, чему будет способствовать дружественный и довольно простой интерфейс.

1.2 Разработка общей архитектуры информационной системы

В курсовом проекте применена клиент-серверная архитектура с применением двухзвенной модели DBS (DateBase Server — сервер баз данных). Для этой модели характерно, что функции компьютера клиента ограничиваются функциями представления информации, в то время как прикладные функции обеспечиваются приложением, находящемся на компьютере сервере. При этом приложения реализуются в виде хранимых процедур.

Процедуры обычно хранятся в словаре базы данных и разделяются несколькими клиентами.

Рисунок 1 — Двухзвенная модель архитектуры клиент-сервер

Достоинствами DBS является возможность хорошего администрирования приложения на этапах разработки, сопровождения и модификации, а также эффективного использования вычислительных и коммуникационных ресурсов.

2. РАЗРАБОТКА СЕРВЕРНОЙ ЧАСТИ ИНФОРМАЦИОННОЙ СИСТЕМЫ

2.1 Выявление сущностей, их атрибутов и ключей

В ходе разработки информационной системы были выявлены следующие сущности:

1. Студент

2. Первичный ключ: Номер зачётной книжки

3. Стипендия

4. Первичный ключ: ID стипендии

5. Экзамен

6. Первичный ключ: ID экзамена

7. Факультет

8. Первичный ключ: ID факультета

9. Группа

10. Первичный ключ: ID группы

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

12. Первичный ключ: Номер специальности

13. Кафедра

14. Первичный ключ: Номер кафедры

15. Экзамен

16. Первичный ключ: ID экзамена

17. Предмет

18. Первичный ключ: Номер предмета

19. Преподаватель

20. Первичный ключ: ID преподавателя

21. Зарплата

22. Первичный ключ: ID зарплаты

23. Учёная степень

Первичный ключ: ID учёной степени

24. Преподаёт (Была выявлена при переходе от концептуальной модели данных к логической)

25. Первичный ключ: Номер занятия

2.2 Выявление связей

В ходе разработки информационной системы были выявлены следующие связи между сущностями:

1)

Рисунок 2 — Связь «Есть у».

Один преподаватель может иметь несколько учёных степеней. Одна запись об ученой степени может относиться только к одному преподавателю. Следовательно, имеет место связь 1.N. Каждая запись об учёной степени должна относиться к какому-либо преподавателю. Учёная степень есть не у каждого преподавателя. Следовательно, для связи «Учёная степень > Преподаватель» будет использоваться кардинальность 1,1, а для связи «Преподаватель > Учёная степень «- 0, n.

2)

Рисунок 3 — Связь «Выдается».

Один преподаватель может получать несколько заработных плат. Одна запись о зарплате может относиться только к одному преподавателю. Следовательно, имеет место связь 1.N. Каждая запись о зарплате должна относиться к какому-либо преподавателю. Но не каждый преподаватель имеет начисленную зарплату (например, только что нанятый преподаватель). Следовательно, для связи «Зарплата > Преподаватель» будет кардинальность 1,1, а для связи «Преподаватель > Зарплата» — 0, n.

3)

Рисунок 4 — Связь «Преподаёт».

Преподаватель может преподавать различные предметы, один и тот же предмет могут вести несколько преподавателей. Следовательно, имеет место связь N.N. Предмет может временно не преподаваться никаким преподавателем. Преподаватель может и не преподавать никакой предмет. Следовательно, для связи «Преподаватель > Предмет» будет использоваться кардинальность 0, n, а для связи «Предмет > Преподаватель» — 0, n.

4)

Рисунок 5 — Связь «Работает на».

На кафедре может работать несколько преподавателей. Каждый преподаватель работает только на одной кафедре. Следовательно, имеет место связь 1.N. На кафедре может временно не числиться ни одного преподавателя. Преподаватель должен быть закреплен за какой-либо кафедрой. Следовательно, для связи «Кафедра > Преподаватель» будет кардинальность 0, n., а для связи «Преподаватель > Кафедра» — 1,1.

5)

Рисунок 6 — Связь «По».

Экзамен по конкретному предмету может сдаваться несколько раз. Каждой записи об экзамене соответствует только один предмет. Следовательно, имеет место связь 1.N. Предмет может и не сдаваться на экзамене. Экзамен должен сдаваться только по существующим предметам. Следовательно, для связи «Предмет > Экзамен» будет кардинальность 0, n., а для связи «Экзамен > Предмет» — 1,1.

6)

Рисунок 7 — Связь «Числится на».

На факультете может учиться много студентов. Студент может учиться только на одном факультете. Следовательно, имеет место связь 1.N. На факультете может временно не числиться студентов. Каждый студент должен числиться на каком-либо факультете. Следовательно, для связи «Факультет > Студент» будет кардинальность 0, n., а для связи «Студент > Факультет» — 1,1.

7)

Рисунок 8 — Связь «Сдаётся».

Студент может сдавать несколько экзаменов. Каждый экзамен сдаётся только одним студентом. Следовательно, имеет место связь 1.N. Студент может не сдавать никаких экзаменов (например, первокурсник на первом семестре обучения). Каждый экзамен обязательно сдаётся каким-либо студентом. Следовательно, для связи «Студент > Экзамен» будет кардинальность 0, n., а для связи «Экзамен > Студент» — 1,1.

8)

Рисунок 9 — Связь «Выплачивается».

Студенту может начисляться несколько стипендий. Стипендия начисляется одному студенту. Следовательно, имеет место связь 1.N. Студент может не получать стипендий. Каждая запись о стипендии должна относиться к какому-либо зарегистрированному студенту. Следовательно, для связи «Студент > Стипендия» будет кардинальность 0, n., а для связи «Экзамен > Стипендия» — 1,1.

9)

Рисунок 10 — Связь «Относится к».

В группе может учиться много студентов. Студент может учиться только в одной группе. Следовательно, имеет место связь 1.N. В группе может временно не числиться студентов. Каждый студент должен относиться к какой-либо группе. Следовательно, для связи «Группа > Студент» будет кардинальность 0, n., а для связи «Студент > Группа» — 1,1.

10)

Рисунок 11 — Связь «Принадлежит».

Специальности может принадлежать несколько групп. Группа принадлежит только одной специальности. Следовательно, имеет место связь 1.N. На специальности может временно не числиться никаких групп. Группа должна относиться к какой-нибудь специальности. Следовательно, для связи «Специальность> Группа» будет кардинальность 0, n., а для связи «Группа > Специальность» — 1,1.

11)

Рисунок 12 — Связь «Выпускается».

Кафедра может выпускать несколько специальностей. Каждая специальность может выпускаться только одной кафедрой. Следовательно, имеет место связь 1.N. Кафедра может и не выпускать никаких специальностей. Но специальность должна принадлежать к какой-либо кафедре. Следовательно, для связи «Кафедра > Специальность» будет кардинальность 0, n., а для связи «Специальность > Кафедра» — 1,1.

2.3 Построение ER-диаграммы

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

Рисунок 13 — Концептуальная модель данных для предметной области «Студенты и преподаватели».

2.4 Переход от ER-диаграммы к предварительным отношениям

Так как используется CASE-средство проектирования баз данных переход от концептуальной модели данных к предварительным отношениям (логической модели данных) осуществляется автоматически.

Покажем переход к предварительным отношениям на примере связи «Выдаётся». В данном случае используется связь 1.N. Кардинальность многосвязной сущности 1. 1, односвязной 0.n. Следовательно, необходимо сформировать два предварительных отношения, то есть по одному для каждой сущности. Первичными ключами в отношениях будут ключи соответствующих сущностей. В отношение «Зарплата» будет добавлен внешний ключ для связи с отношением «Преподаватель». Предварительные отношения для связи «Выдаётся» показаны на рисунке 14.

Рисунок 14 — Предварительные отношения для связи «Выдаётся».

2.5 Заполнение предварительных отношений атрибутами

При переходе от концептуальной модели данных к логической были получены предварительные отношения, приведенные на рисунке 15.

Рисунок 15 — Логическая модель данных для предметной области «Студенты и преподаватели».

На рисунке представлены следующие обозначения:

— Primary Key;

— Foreign Key;

— Mandatory;

— Необязательные поля.

2.6 Проверка предварительных отношений на соответствие нормальным формам

Для каждого отношения нашей БД построим диаграмму функциональных зависимостей и определим, в какой нормальной форме оно находится.

На рисунке 16 показана диаграмма функциональных зависимостей для отношения «Учёная степень».

Рисунок 16 — Диаграмма функциональных зависимостей для отношения

«Учёная степень».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 17 показана диаграмма функциональных зависимостей для отношения «Предмет».

Рисунок 17 — Диаграмма функциональных зависимостей для отношения

«Предмет».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 18 показана диаграмма функциональных зависимостей для отношения «Преподаватель».

Рисунок 18 — Диаграмма функциональных зависимостей для отношения

«Преподаватель».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 19 показана диаграмма функциональных зависимостей для отношения «Преподаёт».

Рисунок 19 — Диаграмма функциональных зависимостей для отношения

«Преподаёт».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 20 показана диаграмма функциональных зависимостей для отношения «Экзамен».

Рисунок 20 — Диаграмма функциональных зависимостей для отношения

«Экзамен».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 21 показана диаграмма функциональных зависимостей для отношения «Факультет».

Рисунок 21 — Диаграмма функциональных зависимостей для отношения

«Факультет».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 22 показана диаграмма функциональных зависимостей для отношения «Стипендия».

Рисунок 22 — Диаграмма функциональных зависимостей для отношения

«Стипендия».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 23 показана диаграмма функциональных зависимостей для отношения «Студент».

Рисунок 23 — Диаграмма функциональных зависимостей для отношения

«Студент».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 24 показана диаграмма функциональных зависимостей для отношения «Группа».

Рисунок 24 — Диаграмма функциональных зависимостей для отношения

«Группа».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 25 показана диаграмма функциональных зависимостей для отношения «Специальность».

Рисунок 25 — Диаграмма функциональных зависимостей для отношения

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

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 26 показана диаграмма функциональных зависимостей для отношения «Кафедра».

Рисунок 26 — Диаграмма функциональных зависимостей для отношения

«Кафедра».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

На рисунке 27 показана диаграмма функциональных зависимостей для отношения «Зарплата».

Рисунок 27 — Диаграмма функциональных зависимостей для отношения

«Зарплата».

Отношение находится в 1НФ, 2НФ, 3НФ, БКНФ.

2.7 Построение схемы данных

Так как используется CASE-средство проектирования баз данных, переход от логической модели данных к физической осуществляется автоматически. Физическая модель приведена на рисунке 28.

Рисунок 30 — Физическая модель данных для предметной области «Студенты и преподаватели».

2.8 Задание частных ограничений целостности данных

Все необходимые ограничения целостности задаются первичными и внешними ключами, а также разрешением каскадного обновления данных.

2.9 Разработка хранимых процедур

В данном курсовом проекте в ходе разработки информационной системы были созданы хранимые процедуры на добавление, обновление и удаление данных для каждой из таблиц, а также хранимые процедуры для идентификации пользователя:

1. Таблица Кафедра (dbo. Department)

1.1. Удаление данных

Use Университет

Go

Create proc [dbo]. DepartmentDelete]

(@ID int,@re int output)

as

set @re=0

if exists (select * from Department

where ID_Dep=@ID)

begin

if (exists (select * from Teachers

where Department=@ID))

or (exists (select * from Speciality

where Department=@ID))

set @re= -1 /*Нельзя удалить, потому что на кафедре есть преподаватели или специальности*/

else

delete from Department

where ID_Dep=@ID

end

else set @re= -2 /*Нельзя удалить, потому что нет такой кафедры*/

1.2. Добавление данных

Use Университет

Go

Create proc [dbo]. DepartmentInsert]

(@ShortName nvarchar (10),

@FullName nvarchar (100),@re int output)

as

set @re=0

if not exists (select * from Department

where ShortName=@ShortName or

FullName=@FullName)

insert into Department (ShortName, FullName) values (@ShortName,@FullName)

else set @re= -1

1.3. Обновление данных

Use Университет

Go

Create [dbo]. DepartmentUpdate]

(@ID int, @ShortName nvarchar (10),@FullName nvarchar (100),@re int output)

as

set @re=0

if exists (select * from Department

where ID_Dep=@ID)

begin

if exists (select * from Department

where (ShortName=@ShortName or

FullName=@FullName) and @ID< >ID_Dep)

set @re= -2else

update Department

set ShortName=@ShortName, FullName=@FullName

where ID_Dep=@ID

end

else set @re= -1

Входные параметры, используемые в данных процедурах:

@id int — Номер кафедры;

@ShortName nvarchar (10) — Краткое название кафедры;

@FullName nvarchar (100) — Полное название кафедры;

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

2. Таблица Экзамен (dbo. Exam)

2.1. Удаление данных

Use Университет

Go

Create [dbo]. ExamDelete]

(@ID int, @re int output)

as

set @re=0

if exists (select * from Exam where ID_Exam=@ID)

delete from Exam where ID_Exam=@ID

else set @re=-1

2.2. Добавление данных

Use Университет

Go

Create proc [dbo]. ExamInsert]

(@FIO nvarchar (5),@Subject nvarchar (50),@Mark nvarchar (1), @Date datetime, @re int output)

as

set @re=0

declare @subj int

if exists (select * from Student where Nzach=@FIO)

if exists (select * from subject where [name]=@Subject)

if (@mark='3')or (@mark='4')or (@mark='5')or (@mark='2')

begin

select @subj=Nsubject from subject where [name]=@Subject

if not exists (select * from Exam where (Nzach=@FIO)and (Date=@Date))

insert into Exam (Nzach, Nsubject, mark, date)

values (@FIO,@subj,@mark,@date)

else set @re=-4

end

else set @re=-3

else set @re=-2

else set @re=-1

2.3. Обновление данных

Use Университет

Go

Create proc [dbo]. ExamUpdate]

(@ID int,@FIO nvarchar (5),@Subject nvarchar (50),@Mark int, @Date datetime, @re int output)

as

set @re=0

declare @subj int

if exists (select * from exam where ID_Exam=@ID)

if exists (select * from Student where Nzach=@FIO)

if exists (select * from subject where [name]=@Subject)

if (@mark='3')or (@mark='4')or (@mark='5')or (@mark='2')

begin

select @subj=Nsubject from subject where [name]=@Subject

if not exists (select * from Exam where (ID_Exam< >@ID) and (Nzach=@FIO)and (Date=@Date))

update Exam

set Nzach=@FIO, Nsubject=@subj, mark=@mark, date=@date

where ID_Exam=@ID

else set @re=-4

end

else set @re=-3

else set @re=-2

else set @re=-1

else set @re=-5

Входные параметры, используемые в данных процедурах:

@id int — Номер экзамена;

@FIO nvarchar (5) — Номер зачётной книжки студента;

@Subject nvarchar (50)-Название сдаваемого предмета;

@Mark int — Оценка за экзамен;

@Date datetime — Дата сдачи экзамена;

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

3. Таблица Факультет (dbo. Faculty)

3.1. Удаление данных

Use Университет

Go

Create proc [dbo]. FacultyDelete]

(@ID int,@re int output)

as

set @re=0

if exists (select * from Faculty

where ID_Faculty=@ID)

begin

if (exists (select * from Student

where Faculty=@ID))

set @re= -1else

delete from Faculty

where ID_Faculty=@ID

end

else set @re= -2

3.2. Добавление данных

Use Университет

Go

Create roc [dbo]. FacultyInsert]

(@ShortName nvarchar (10),@FullName nvarchar (100),@re int output)

as

set @re=0

if not exists (select * from Faculty

where ShortName=@ShortName or

FullName=@FullName)

insert into Faculty (ShortName, FullName) values (@ShortName,@FullName)

else set @re= -1

3.3. Обновление данных

Use Университет

Go

Create proc [dbo]. FacultyUpdate]

(@ID int, @ShortName nvarchar (10),@FullName nvarchar (100),@re int output)

as

set @re=0

if exists (select * from Faculty

where ID_Faculty=@ID)

begin

if exists (select * from Faculty

where (ShortName=@ShortName or

FullName=@FullName) and ID_Faculty< >@ID)

set @re= -2

else

update Faculty

set ShortName=@ShortName, FullName=@FullName

where ID_Faculty=@ID

end

else set @re= -1

Входные параметры, используемые в данных процедурах:

@id int — Номер факультета;

@ShortName nvarchar (10) — Краткое название факультета;

@FullName nvarchar (100) — Полное название факультета;

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

4. Таблица Группа (dbo. Group)

4.1. Удаление данных

Use Университет

Go

Create proc [dbo]. GroupDelete]

(@ID int,@re int output)

as

set @re=0

if exists (select * from [group] where ID_Group=@ID)

if not exists (Select * from student where [Group]=@ID)

delete from [Group]

where ID_Group=@ID

else set @re= -1

else set @re= -2

4.2. Добавление данных

Use Университет

Go

Create proc [dbo]. GroupInsert]

(@number nvarchar (4),@speciality nvarchar (6),@re int output)

as

set @re=0

if not exists (Select * from [Group] where Number=@number)

if exists (select * from speciality where nspec=@speciality)

begin

declare @p int

select @p=ID_Spec From Speciality where nspec=@speciality

insert into [Group](number, speciality)

values (@number,@p)

end

else set @re= -2

else set @re= -1

4.3. Обновление данных

Use Университет

Go

Create proc [dbo]. GroupUpdate]

(@ID int, @Number nvarchar (4),@speciality nvarchar (6),@re int output)

as

set @re=0

if exists (select * from [group]

where ID_Group=@ID)

if exists (select * from [group]

where Number=@Number and ID_Group< >@ID)

set @re= -2

else

if exists (select * from speciality where nspec=@speciality)

begin

declare @p int

select @p=ID_Spec from speciality where nspec=@speciality

update [group]

set Number=@Number, Speciality=@p

where ID_Group=@ID

end

else set @re=-3

else set @re= -1

Входные параметры, используемые в данных процедурах:

@id int — ID группы;

@Number nvarchar (4)-Номер группы;

@speciality nvarchar (6) -Номер специальности;

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

5. Таблица Стипендия (dbo. Grant)

5.1. Удаление данных

Use Университет

Go

Create proc [dbo]. GrantDelete]

(@ID int,@re int output)

as

set @re=0

if exists (Select * from [Grant]

where ID_Grant=@ID)

delete from [Grant]

where ID_Grant=@ID

else set @re= -1

5.2. Добавление данных

Use Университет

Go

Create proc [dbo]. GrantInsert]

(@Student nvarchar (5),@volume money,@date datetime,@re int output)

as

if exists (Select * from Student

where Nzach=@Student)

BEGIN

set @re=0

insert into [Grant](Student, GrantSize, date)

values (@Student,@volume,@date)

END

else set @re= -1

5.3. Обновление данных

Use Университет

Go

Create proc [dbo]. GrantUpdate]

(@ID int,@Student nvarchar (5),@volume money,@date datetime,@re int output)

as

if exists (Select * from [Grant]

where ID_Grant=@ID)

if exists (Select * from Student

where Nzach=@Student)

begin

set @re=0

update [Grant]

set student=@Student, GrantSize=@volume, date=@date

where ID_Grant=@ID

end

else set @re= -2

else set @re= -1

Входные параметры, используемые в данных процедурах:

@id int — ID стипендии;

@Student nvarchar (5)-Номер зачётной книжки студента;

@volume money — Объём стипендии;

@date datetime — Дата начисления стипендии.

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

6. Таблица Учёная степень (dbo. SDegree)

6.1. Удаление данных

Use Университет

Go

Create proc [dbo]. SDegreeDelete]

(@ID int, @re int output)

as

if exists (Select * from SDegree

where ID_UchStep=@ID)

begin

set @re=0

delete from SDegree

where ID_UchStep=@ID

end

else set @re= -1

6.2. Добавление данных

Use Университет

Go

Create proc [dbo]. SDegreeInsert]

(@Teachers int,@sdegree nvarchar (50),@date datetime,@re int output)

as

if exists (Select * from Teachers

where Nprep=@Teachers)

BEGIN

insert into SDegree (Teachers, SDegree, date)

values (@Teachers,@sdegree,@date)

set @re=0

END

else set @re= -1

6.3. Обновление данных

Use Университет

Go

Create proc [dbo]. SDegreeUpdate]

(@ID int,@Teachers int,@SDegree nvarchar (50),@date datetime,@re int output)

as

if exists (Select * from SDegree

where ID_UchStep=@ID)

if exists (Select * from Teachers

where Nprep=@Teachers)

begin

set @re=0

update SDegree

set Teachers=@Teachers, SDegree=@SDegree, date=@date

where ID_UchStep=@ID

end

else set @re= -2

else set @re= -1

Входные параметры, используемые в данных процедурах:

@id int — ID учёной степени;

@Teachers int — Номер преподавателя;

@SDegree nvarchar (50)-Наименование учёной степени;

@date datetime — Дата получения учёной степени.

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

7. Таблица Специальность (dbo. Speciality)

7.1. Удаление данных

Use Университет

Go

Create proc [dbo]. SpecialityDelete]

(@ID int,@re int output)

as

set @re=0

if exists (select * from Speciality

where ID_Spec=@ID)

begin

if exists (select * from [Group]

where Speciality=@ID)

set @re= -1

else

delete from Speciality

where ID_Spec=@ID

end

else set @re= -2

7.2. Добавление данных

Use Университет

Go

Create proc [dbo]. SpecialityInsert]

(@Nspec nvarchar (6),@Name nvarchar (100),@Department nvarchar (10),@StudyCost money,@re int output)

as

set @re=0

if not exists (select * from Speciality

where Nspec=@Nspec or

[Name]=@Name)

if exists (Select * from Department

where ShortName=@Department)

begin

declare @p int

select @p=ID_Dep from Department where ShortName=@Department

insert into Speciality (Nspec,[Name], Department, StudyCost)

values (@Nspec,@Name,@p,@StudyCost)

end

else set @re= -2

else set @re= -1

7.3. Обновление данных

Use Университет

Go

Create proc [dbo]. SpecialityUpdate]

(@ID int,@Nspec nvarchar (6),@Name nvarchar (100),@Department nvarchar (10),@StudyCost money,@re int output)

as

set @re=0

if not exists (select * from Speciality

where (Nspec=@Nspec or

[Name]=@Name) and ID_Spec< >@ID)

begin

if exists (select * from Department where ShortName=@Department)

begin

declare @p int

select @p=ID_Dep from Department where ShortName=@Department

Update Speciality

set Nspec=@Nspec,[Name]=@Name, Department=@p, StudyCost=@StudyCost

where ID_Spec=@ID

end

else set @re=-1

end

else set @re= -2

Входные параметры, используемые в данных процедурах:

@id int -номер специальности;

@Nspec nvarchar (6) — код специальности;

@Name nvarchar (100) — название специальности;

@Department nvarchar (10) — краткое название выпускающей кафедры;

@StudyCost money — стоимость обучения на специальности

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

8. Таблица Студент (dbo. Student)

8.1. Удаление данных

Use Университет

Go

Create proc [dbo]. StudentDelete]

(@Nzach nvarchar (5),@re int output)

as

set @re=0

if exists (select * from student where Nzach=@Nzach)

begin

delete from Exam where Nzach=@Nzach

delete from [Grant] where Student=@Nzach

delete from Student where Nzach=@Nzach

end

else set @re=-1

8.2. Добавление данных

Use Университет

Go

Create proc [dbo]. StudentInsert]

(@Nzach nvarchar (5),@FIO nvarchar (50),@group nvarchar (4),@faculty nvarchar (10),@fo nvarchar (10),@factory nvarchar (100),@ispay bit,@re int Output)

as

set @re=0

if not exists (select * from student where Nzach=@Nzach)

if exists (select * from [Group] where Number=@group)

if exists (select * from Faculty where ShortName=@faculty)

begin

declare @a int,@b int

select @a=ID_Group from [Group] where Number=@group

select @b=ID_Faculty from Faculty where ShortName=@faculty

insert into Student

values (@Nzach,@FIO,@b,@a,@fo,@factory,@ispay)

end

else set @re=-3

else set @re=-2

else set @re=-1

8.3. Обновление данных

Use Университет

Go

Create proc [dbo]. StudentUpdate]

(@Nzach nvarchar (5),@FIO nvarchar (50),@group nvarchar (4),@faculty nvarchar (10),@fo nvarchar (10),@factory nvarchar (100),@ispay bit,@re int Output)

as

set @re=0

if exists (select * from [Group] where Number=@group)

if exists (select * from Faculty where ShortName=@faculty)

begin

declare @a int,@b int

select @a=ID_Group from [Group] where Number=@group

select @b=ID_Faculty from Faculty where ShortName=@faculty

update Student

set FIO=@FIO, Faculty=@b,[Group]=@a, StudyForm=@fo, Factory=@factory, IsPay=@ispay

where Nzach=@Nzach

end

else set @re=-3

else set @re=-2

Входные параметры, используемые в данных процедурах:

@Nzach nvarchar (5) — номер зачётной книжки;

@FIO nvarchar (50) — ФИО студента;

@group nvarchar (4) — номер группы студента;

@faculty nvarchar (10) — краткое навание факультета студента;

@fo nvarchar (10) — форма обучения;

@factory nvarchar (100) — предприятие, оплачивающее обучение (для студентов по целевому набору)

@ispay bit — платит ли студент за обучение

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

9. Таблица Предмет (dbo. Subject)

9.1. Удаление данных

Use Университет

Go

Create proc [dbo]. SubjectDelete]

(@Nsubject int,@re int output)

as

set @re=0

if exists (select * from subject

where Nsubject=@Nsubject)

begin

if (exists (select * from Teach

where Subject=@Nsubject))

or (exists (select * from Exam

where Nsubject=@Nsubject))

set @re= -1else

delete from subject

where Nsubject=@Nsubject

end

else set @re= -2

9.2. Добавление данных

Use Университет

Go

Create proc [dbo]. SubjectInsert]

(@Name nvarchar (50),@re int output)

as

set @re=0

if not exists (select * from Subject

where [Name]=@Name)

insert into Subject ([Name]) values (@Name)

else set @re= -1

9.3. Обновление данных

Use Университет

Go

Create proc [dbo]. SubjectUpdate]

(@ID int,@name nvarchar (50), @re int output)

as

Set @re=0

if not exists (select * from Subject where [name]=@name)

update Subject

set [Name]=@name

where Nsubject=@ID

else set @re=-1

Входные параметры, используемые в данных процедурах:

@ID int — Номер предмета;

@name nvarchar (50) — Название предмета.

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

10. Таблица Преподает (dbo. Teach)

10.1. Удаление данных

Use Университет

Go

Create proc [dbo]. TeachDelete]

(@ID int, @re int output)

as

set @re=0

if exists (select * from teach where ID_Teach=@ID)

delete from teach where ID_Teach=@ID

else set @re=-1

10.2. Добавление данных

Use Университет

Go

Create proc [dbo]. TeachInsert]

(@prep char (50),@Subject char (50),@date datetime, @re int output)

as

set @re=0

if exists (select * from teachers where FIO=@prep)

if exists (select * from subject where [Name]=@Subject)

begin

declare @a int,@b int

select @a=Nsubject from subject where [Name]=@Subject

select @b=Nprep from teachers where FIO=@prep

if not exists (select * from Teach where (subject=@a) and (Teachers=@b) and (date=@date))

insert into teach (Subject, Teachers, date)

values (@a,@b,@date)

else set @re=-2

end

else set @re=-3

else set @re=-1

10.3. Обновление данных

Use Университет

Go

Create proc [dbo]. TeachUpdate]

(@ID int,@prep char (50),@Subject char (50),@date datetime, @re int output)

as

set @re=0

if exists (select * from teach where ID_Teach=@ID)

if exists (select * from teachers where FIO=@prep)

if exists (select * from subject where [Name]=@Subject)

begin

declare @a int,@b int

select @a=Nsubject from subject where [Name]=@Subject

select @b=Nprep from teachers where FIO=@prep

if not exists (select * from Teach where (subject=@a)and (Teachers=@b)and (date=@date))

update teach

set Subject=@a, Teachers=@b, date=@date

where ID_Teach=@ID

else set @re=-4

end

else set @re=-3

else set @re=-1

else set @re=-2

Входные параметры, используемые в данных процедурах:

@ID int — Номерзаписи о преподавании;

@prep char (50) — ФИО преподавателя;

@Subject char (50) — название предмета;

@date datetime — Дата.

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

11. Таблица Преподаватель (dbo. Teachers)

11.1. Удаление данных

Use Университет

Go

Create proc [dbo]. TeachersDelete]

(@ID int, @re int output)

as

set @re=0

if exists (select * from Teachers where Nprep=@ID)

if not exists (select * from Teach where Teachers=@ID)

begin

delete from SDegree where Teachers=@ID

delete from salary where Teachers=@ID

delete from Teachers where Nprep=@ID

end

else set @re=-2

else set @re=-1

11.2. Добавление данных

Use Университет

Go

Create proc [dbo]. TeachersInsert]

(@FIO nvarchar (50),@Department nvarchar (10),@Dolznost nvarchar (50),@DatePrin datetime, @re int output)

as

set @re=0

if exists (select * from Department where ShortName=@Department)

begin

declare @p int

select @p=ID_Dep from Department where ShortName=@Department

insert into teachers (FIO, Department, Dolznost, DatePrin)

values (@FIO,@p,@Dolznost,@DatePrin)

end

else set @re=-1

11.3. Обновление данных

Use Университет

Go

Create proc [dbo]. TeachersUpdate]

(@ID int,@FIO nvarchar (50),@Department nvarchar (10),@Dolznost nvarchar (50),@DatePrin datetime, @re int output)

as

set @re=0

if exists (select * from teachers where Nprep=@ID)

if exists (select * from Department where ShortName=@Department)

begin

declare @p int

select @p=ID_Dep from Department where ShortName=@Department

update teachers

set FIO=@FIO, Department=@p, Dolznost=@Dolznost, DatePrin=@DatePrin

where Nprep=@ID

end

else set @re=-1

else set @re=-2

Входные параметры, используемые в данных процедурах:

@ID int — Номер преподавателя;

@FIO nvarchar (50) — ФИО преподавателя;

@Department nvarchar (10) — краткое название кафедры, где преподаватель работает

@Dolznost nvarchar (50) — должность, занимаема преподавателем

@DatePrin datetime — дата принятия на работу

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

12. Таблица Зарплата (dbo. Salary)

12.1. Удаление данных

Use Университет

Go

Create proc [dbo]. SalaryDelete]

(@ID int,@re int output)

as

if exists (Select * from salary

where ID_Zarplata=@ID)

begin

delete from salary

where ID_Zarplata=@ID

set @re=0

end

else set @re= -1

12.2. Добавление данных

Use Университет

Go

Create proc [dbo]. SalaryInsert]

(@Teachers int,@volume money,@date datetime,@re int output)

as

if exists (Select * from Teachers

where Nprep=@Teachers)

BEGIN

set @re=0

insert into Salary (Teachers, Volume, date)

values (@Teachers,@volume,@date)

END

else set @re= -1

12.3. Обновление данных

Use Университет

Go

Create proc [dbo]. SalaryUpdate]

(@ID int,@Teachers int,@volume money,@date datetime,@re int output)

as

if exists (Select * from salary

where ID_Zarplata=@ID)

if exists (Select * from Teachers

where Nprep=@Teachers)

begin

set @re=0

update Salary

set Teachers=@Teachers, volume=@volume, date=@date

where ID_Zarplata=@ID

end

else set @re= -2

else set @re= -1

Входные параметры, используемые в данных процедурах:

@ID int — Номер записи о зарплате;

@Teachers int — Номер преподавателя

@volume money — размер зарплаты

@date datetime — дата начисления

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

13. Идентификация пользователей

13.1. Идентификация студента

Create proc [dbo]. StuPass]

(@pass nvarchar (5),@re int output,@FIO nvarchar (50)output)

AS

set @re=0

if exists (select * from student where Nzach=@pass)

select @FIO=FIO from Student where Nzach=@pass

else set @re=-1

13.2. Идентификация преподавателя

Create proc [dbo]. TeachPass]

(@pass int,@re int output,@FIO nvarchar (50) output)

AS

set @re=0

if exists (select * from teachers where Nprep=@pass)

select @FIO = FIO from TEACHERS where Nprep=@pass

else set @re=-1

Входные параметры, используемые в данных процедурах:

@pass nvarchar (5)/ @pass int — пароль пользователя (соответственно номер зачётной книжки и номер преподавателя)

Выходные параметры, используемые в данных процедурах:

@Re int — Вспомогательная переменная, позволяющая определить успешность или не успешность выполнения операции.

@FIO nvarchar (50) — ФИО пользователя

3. РАЗРАБОТКА КЛИЕНТСКОЙ ЧАСТИ ИНФОРМАЦОННОЙ СИСТЕМЫ

3.1 Организация взаимодействия клиентской программы с БД

Для доступа к базе данных использовалась технология ADO. NET. Экземпляры компонентов доступа к БД, применённые в данном проекте, приведены в таблице 1.

Таблица 1

Тип компонента и его описание

Экземпляры компонентов

Назначение

DataConnectionDialog

Вызывает диалоговое окно с настройками для подключения

_dialog

Настроить подключение для синхронизации с базой данных

SqlConnection

Предоставляет уникальный сеанс связи с источником данных SQL Server.

conDB

Установка соединения с сервером. Используется в коде всей программы.

SqlCommand

Представляет инструкцию Transact-SQL или хранимую процедуру, выполняемую над базой данных SQL Server.

com

Выполнение запросов к БД или вызов хранимых процедур.

SqlDataAdapter

Представляет набор выполняемых над данными команд и подключения базы данных, которые используется для заполнения и обновления базы данных SQL Server.

da

Извлечение и сохранение данных в БД. Используется для создания сложных наборов данных (из нескольких таблиц).

DataSet

Представляет собой расположенный в памяти кэш данных, загружаемых из источника данных.

ds

Хранит данные из БД в виде таблиц для дальнейшего их отображения компонентом DataGridView

DataGridView

предоставляет настраиваемую таблицу для отображения данных.

dataGridView1 — dataGridView20

Отображение данных таблиц созданной базы данных

BindingNavigator

Представляет собой панель для редактирования данных в таблицах

BindingNavigator1 — BindingNavigator8

Необходимы для навигации в таблицах БД.

3.2 Разработка форм

Клиентская программа работы с БД была создана в стиле MDI-приложения.

При запуске программы на экран выводится форма заставки zast с логотипом программы.

Форма представлена в файлах: zast. cs, zast. Designer. cs, zast. resx.

Для авторизации пользователя создана форма Password. Список компонентов данной формы и их назначение представлены следующим образом:

· «Войти» — кнопка подтверждения авторизации;

· «Выход» — кнопка для выхота из программы;

· Переключатели «Абитуриент», «Студент», «Преподаватель», «Ректор» и «Администратор» — для выбора типа пользователя;

· TextBoxPassword — поле для ввода пароля.

Форма представлена в файлах: Password. cs, Password. Designer. cs, Password. resx.

После входа загружается главное (родительское) окно программы, в пределах которого и будут отображаться необходимые формы. Основным элементом формы является «Главное меню», обеспечивающее доступ к основным функциям программы.

Форма представлена в файлах: MainForm. cs, MainForm. Designer. cs, MainForm. resx.

Если вход осуществил «администратор», на экране отобразится форма EditForm. Форма состоит из вкладок, на каждой из которых размещены элементы:

ПоказатьСвернуть
Заполнить форму текущей работой