Разработка подсистемы учета успеваемости студентов Байкальского государственного университета экономики и права

Система учета успеваемости студентов Байкальского государственного университета экономики и права. Действующая Информационная система, организация и требования к подсистеме учета успеваемости БГУЭП. Конструирование подсистемы, построение модели функций.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.11.2010
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Экзаменационная оценка/100бальная оценка

№№ зачетных книжек

Подпись экзаменато- ра и дата

1

??????? ?.?.

68316

2

?????? ?.?.

69704

3

?????? ?.?.

69606

4

??????? ?.?.

68255

5

?????? ?.?.

63870

6

????? ?.?.

68312

7

???????? ?.?.

68429

8

?????? ?.?.

71107

9

???????? ?.?.

69707

10

?????? ?.?.

68472

11

??????? ?.?.

68340

12

?????? ?.?.

68392

13

??????? ?.?.

68448

14

??????? ?.?.

68397

15

???????? ?.?.

59112

16

??????? ?.?.

68325

17

???????? ?.?.

68400

18

????????? ?.?.

69638

19

???????? ?.?.

68362

20

??????? ?.?.

73990

21

???????? ?.?.

68309

22

?????? ?.?.

69696

23

????? ?.?.

69594

Итого: Зачтено _______________ Не зачтено _____________

Декан факультета_____________________

Форма «Выписка по итогам сессии в личное дело студента»

ПРИЛОЖЕНИЕ 2

Техническое задание

Подсистема «Сессия»

Учета успеваемости Байкальского государственного университета экономики и права

1. Общие сведения

Подсистема управления качеством знаний Байкальского государственного университета экономики и права «Сессия», называемая в дальнейшем подсистемой, разрабатывается силами группы АСУ университета на основании плана развития ИС БГУЭП за счет собственных средств университета. Прием подсистемы в опытную и промышленную эксплуатацию осуществляется комитетом БГУЭП по развитию информационных технологий

2. Назначение и цели создания подсистемы

Подсистема предназначена для автоматизации:

- учета успеваемости в деканатах;

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

- формирования и печати итоговых документов по обучению студентов;

- анализа успеваемости.

Цели подсистемы:

- снижение времени на подготовку экзаменационных сессий;

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

- уменьшение ошибок в приказах о переводе студентов с курса на курс;

- увеличение достоверности и подробности анализа успеваемости и организованности проведения сессий;

- повышение качества обучения на основе анализа оценок;

3. Характеристики объекта автоматизации

Рабочие места проректора по учебной работе, инспекторов Учебно-методического управления, деканов, инспекторов деканатов, зав.кафедрами, лаборантов кафедр, оснащены ПК, подключенными к ЛВС с пропускной способностью 100Мб/С. Для хранения данных о контингенте студентов и кадрах БГУЭП используется MS SQL server 2000. Персонал имеет навыки работы на ПК с Windows 98, 2000 и MS Office.

4. Требования к подсистеме

4.1. Требования к подсистеме в целом

Система должна состоять из приложений - АРМов инспектора деканата (он же используется деканом только для просмотра данных), лаборанта кафедры (он же используется зав.кафедрой только для просмотра данных), ректора, проректора по учебной работе (он же используется инспекторами учебного отдела для вычисления показателей успеваемости). АРМы регистрируют и получают данные с SQL-сервера, которые обеспечивает эффективное хранение данных и выполнение запросов на расчет различных показателей успеваемости. Для публикации данных об успеваемости и рейтинге студентов на Internet-сервере БГУЭП должны быть разработаны специальные страницы.

Эксплуатация подсистемы не потребует увеличения штатов. Должны быть расширены функции администратора SQL-сервера для управления полномочиями новых пользователей и работа инспекторов и лаборантов будет выполняться при помощи ПО подсистемы.

Защита информации от несанкционированного доступа должна выполняться штатными средствами операционной системы и SQL-сервера. Сохранность информации должна быть обеспечена ежедневным копированием данных. Одна копия должна храниться администратором вне здания, в котором расположен SQL-сервер.

4.2. Требования к функциям подсистемы

АРМ инспектора деканата должен автоматизировать следующие функции:

- редактирование описания сессии - списка испытаний (зачетов и экзаменов, список должен извлекаться из рабочих учебных планов для указанной сессии и может корректироваться инспектором деканатов;

- печать экзаменационных и зачетных ведомостей и направлений,

- ввод и редактирование оценок на основе групповых ведомостей и персональных направлений на сдачу зачета, экзамена;

- регистрация перезачета оценки при переводе студента из другого вуза;

- редактирование оценок студентов,;

- формирование ведомостей на пересдачу, включающая всех студентов потока;

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

- формирование и печать сведений об успеваемости за указанный период обучения (количество и доля отличников, ударников, троечников, задолжников) в разрезах групп, потоков, курсов, специальностей, форм обучения, по видам финансирования обучения: бюджетное или коммерческое;

- формирование и печать итоговых таблиц об итогах сессии по группам: студенты по строкам, столбцы - экзамены и зачеты, на пересечении - итоговые оценки;

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

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

- формирование и печать рейтинга студентов по средневзвешенной стобалльной оценке;

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

- формирование и печать академической справки;

- формирование и печать итогов сессии в личное дело студента.

АРМ лаборанта кафедры должен автоматизировать следующие функции:

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

- формирование и печать меры отличия распределения оценок (сумма квадратов отклонений частот оценок) преподавателя, предмета от среднего по вузу, кафедре

- формирование и печать среднеквадратического отклонения распределения оценок преподавателя, предмета в сравнении с аналогичным показателем по вузу, кафедре;

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

- предоставлять подробную информацию об успеваемости по дисциплинам кафедры;

- формировать и печатать списки студентов по группам.

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

Интернет-страница с данными успеваемости должна по персональным данным студента (фамилия, имя, отчество, серия и номер паспорта) формировать таблицу со списком экзаменов и зачетов и соответствующими оценками.

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

4.3. Требования к видам обеспечения

Требования к информационному обеспечению:

- данные должны хранится на сервере в нормализованной форме;

- должна быть обеспечена ссылочная целостность данных;

- должны быть предусмотрены следующие проверки корректности данных: дублирование оценок, наличие оценок выше, чем добавляемая, соответствие традиционной и стобалльной оценок;

- данные о студентах, преподавателях, кафедрах должны браться из данных подсистем «Кадры» и «Контингент».

Требования к техническому обеспечению:

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

- компьютер пользователя должен обладать быстродействием…, оперативной памятью…, свободным дисковым пространством…, сетевой картой …;

Требования к организационному обеспечению:

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

- функции администратора SQL-сервера должны включать предоставление полномочий пользователям подсистемы;

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

5. Состав и содержание работ по созданию системы

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

Опытная эксплуатация должна быть проведена на рабочих местах в течение сессии и закончиться предоставлением исправленных ИО, ПО, описаний и инструкций пользователям, администраторам сети и SQL-сервера.

6. Порядок контроля и приемки системы

В процессе опытной эксплуатации должны быть введены все оценки сессий студентов очной формы обучения; сформированы и напечатаны все выходные формы приложений; сформированы интернет-страницы подсистемы.

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

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

7. Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие

Обучения персонала производится инженерами группы АСУ до начала опытной эксплуатации.

8. Требования к документированию

По итогам разработки формируется следующая документация:

- Описание подсистемы «Сессия».

- Описание приложений.

- Описание интернет-страниц.

- Описание структур данных и программных объектов базы данных подсистемы «Сессия».

- Инструкция администратору сети.

- Инструкция администратору базы данных.

- Инструкции приложений АРМ ректора, АРМ старшего лаборанта кафедры, АРМ инспектора деканата.

9. Источники разработки

Приложение 3 «Концепция развития ИС БГУЭП» к приказу № 37 от 01.04.2002

Отчет о НИР «Проблемы автоматизации управления качеством обучения»

СОСТАВИЛИ

Наименование предприятия

Должность исполнителя

Фамилия имя, отчество

Подпись

Дата

Ведущий программист

Жоголь П.И

Начальник отдела АСУ

Казмиров А.Д.

СОГЛАСОВАНО

Наименование предприятия

Должность исполнителя

Фамилия имя, отчество

Подпись

Дата

Нач. Учебно-методеского управления

Деренко Н.В.

Декан ФЭК

Амбросов Н.В.

ПРИЛОЖЕНИЕ 3

Хранимые процедуры подсистемы учета успеваемости

/****************************************************************************

Процедура [e_CopyStudyPlanToExList]копирует список экзаменов в таблицу ExList

для группы с кодом @CodGrup, курса @Course и семестра @NumTerm COrganization

Зубков Сергей, 12.01.2002

****************************************************************************/

CREATE PROCEDURE [dbo].[e_CopyStudyPlanToExList](@CodGrup int, @Course tinyint, @NumTerm tinyInt, @COrganization tinyInt=1) AS

-- приходится применять курсор из-за триггера, расчитанного на добавление одной записи -->VV

--

declare @CodPlan int

select @CodPlan = CodPlan from Grup where CodGrup = @CodGrup

create table #tmp

(

CodSub smallint,

Course tinyint,

NumTerm tinyint,

CodExType tinyint,

Lec smallint,

Sem smallint,

Sam smallint,

ECTScredits float

)

insert into #tmp exec e_GetExHoursList @CodPlan

declare

@CodVar int,

@CodSub int,

@CodSubType tinyint,

@CodOrganization tinyint,

@CodKaf tinyint,

@Lec smallint,

@Sem smallint,

@Sam smallint,

@ECTScredits float,

@CodExType tinyint,

@CodPrep int,

@ExLot tinyint

declare EL cursor for

select e.CodExType, ExLot = case when c.CodSubType = 2 then c.SubLot else e.ExLot end,

c.CodSub, CodSubType=case when c.CodSubType = 2 then c.CodSubType else e.CodControlType end, c.CodKaf, isNULL(Lec,0), isNULL(Sem,0), isNULL(Sam,0), isNULL(ECTScredits,0.0)

from (dbo.Grup g

left join dbo.StudyPlans p on p.CodPlan = g.CodPlan

left join dbo.StudyContents c on c.CodPlan = p.CodPlan

left join dbo.StudyExams e on e.CodPlan = c.CodPlan and e.CodSub = c.CodSub)

left join #tmp on #tmp.CodSub = c.CodSub and #tmp.Course = e.Course and #tmp.NumTerm = e.NumTerm and #tmp.CodExType = e.CodExType

-- left join dbo.StudyTerm t on t.CodPlan = c.CodPlan and t.CodSub = c.CodSub and t.Course = e.Course and t.NumTerm = e.NumTerm

where

g.CodGrup = @CodGrup

and e.Course = @Course and e.NumTerm = @NumTerm

UNION

--

-- Гос экзамены

--

SELECT [CodExType]=CASE WHEN ISNULL(tf.CodExType,0)=0 THEN 1 ELSE tf.CodExType END

, 0 AS [ExLot],

CodSub=CASE WHEN ISNULL(tf.CodSub,0)=0 THEN 841 ELSE tf.CodSub END,

1 AS [CodSubType],CodKaf, 20 AS Lec, 0 AS Sem, 216 AS Sam, 6.0 AS ECTScredits

FROM [dbo].TermFlow tf

inner join StudyPlans p on tf.CodPlan=p.CodPlan

WHERE tf.CodPerType=7

AND ((@CodPlan IS NULL) OR (tf.CodPlan = @CodPlan)) AND

tf.Course=@Course and tf.NumTerm=@NumTerm

UNION

-- =============================================

-- Практики 1.5 кредита в неделю (для преддипломной - 5 кредитов)

-- =============================================

SELECT [CodExType]=CASE WHEN ISNULL(tf.CodExType,0)=0 THEN 1 ELSE tf.CodExType END,

0 AS [ExLot],

CodSub=CASE WHEN ISNULL(tf.CodSub,0)=0 THEN -1 ELSE tf.CodSub END,

1 AS [CodSubType],CodKaf, 0 AS Lec, 0 AS Sem, WorkLng*48 AS Sam,

ECTScredits=CASE WHEN NameSub LIKE 'преддипломная практика%' THEN 5 ELSE WorkLng*1.5 END

FROM [dbo].TermFlow tf

inner join StudyPlans p on tf.CodPlan=p.CodPlan

left join Subs s on tf.CodSub=s.CodSub

left join ExTypes e on tf.CodExType=e.CodExType

WHERE tf.CodPerType=4 AND

tf.Course=@Course and tf.NumTerm=@NumTerm

AND ((@CodPlan IS NULL) OR (tf.CodPlan = @CodPlan))

open EL

select @CodOrganization = @COrganization, @CodPrep = NULL

fetch next from EL into @CodExType, @ExLot, @CodSub, @CodSubType, @CodKaf, @Lec, @Sem, @Sam, @ECTScredits

while (@@fetch_status <> -1)

begin

IF (@@fetch_status <> -2)

begin

execute dbo.e_DetectCodVar @CodSub, @CodSubType, @CodOrganization, @CodKaf, @Lec, @Sem, @Sam, @ECTScredits, @CodVar output

if @CodVar > 0 and not exists(select * from dbo.ExList e, dbo.HoursVars h where e.CodVar = h.CodVar and

e.CodGrup = @CodGrup and e.Course = @Course and e.NumTerm = @NumTerm and e.CodExType = @CodExType and h.CodSub = @CodSub)

insert dbo.ExList values (@CodGrup, @Course, @NumTerm, @CodExType, @CodPrep, @ExLot, @CodVar)

end

fetch next from EL into @CodExType, @ExLot, @CodSub, @CodSubType, @CodKaf, @Lec, @Sem, @Sam, @ECTScredits

end

deallocate EL

CREATE PROCEDURE [dbo].[Web_GetEstimations] (@CodStudent int)

AS

/*

Возвращает оценки по студенту

Зубков Андрей

19.09.2007

exec Web_GetEstimations 8000

*/

select Course, NumTerm, NameSub, ExType, ECTSCredits,Mark=CASE WHEN (m.CodExType=2 and Mark>2)

THEN 'зачтено' ELSE CASE WHEN Mark=5 THEN 'отлично'

WHEN Mark=4 THEN 'хорошо'

WHEN Mark=3 THEN 'удовл.' END END+'('+convert(varchar,ECTSMark)+')'

from analysis.s_GetMarks(@CodStudent) m

left join Subs s on m.CodSub=s.CodSub

left join ExTypes et on m.CodExType=et.CodExType

where isnull(Mark,0)>2-- is not null --alt 18.01.2008 только положительные оценки

order by Course, NumTerm, NameSub

/*

Ситник Игорь

01.12.2006

Функция возвращает список всех оценок студента из БД Analysis

(а то у студентов возникают вопросы о неправильном подсчете + здесь уже есть дипломное проектирование)

alt 07 2007 Добавлено разделение на предметы обычные и по выбору (для того, чтобы выбрать оценку и нагрузку только по одному из них)

*/

CREATE FUNCTION [dbo].[s_GetMarks](@CodStudent int=0)

RETURNS

@Marks TABLE(Course tinyint,NumTerm tinyint, CodSub int,CodSubType tinyint, CodExType tinyint, Mark tinyint, ECTSMark smallint,ECTSCredits float, CodPrep int, InReit bit)

BEGIN

declare @CodPlan int

select top 1 @CodPlan=CodPlan from dbo.StudyMarks WHERE CodStudent =@CodStudent

declare @ExLot Table (Course tinyint, NumTerm tinyint, CodSub int, CodSubType tinyint, CodExType tinyint,

Mark int, ECTSMark int, ECTSCredits int, CodPrep int, InReit bit)

insert into @Exlot

select Course=IsNull(se.Course,sm.CourseSub), NumTerm=IsNULL(se.NumTerm,sm.NumTerm),

CodSub=IsNULL(sm.CodSub,se.CodSub), CodSubType=IsNULL(sm.CodSubType,se.CodSubType),

CodExType=IsNULL(se.CodExType,sm.CodExType), sm.Mark, sm.ECTSMark, ECTSCredits=IsNULL(se.ECTSCredits,0), sm.CodPrep, sm.InReit

from

(select * from dbo.ECTS_studyExams where CodPlan=@CodPlan AND CodSubType not in (3,4)) se

JOIN (select * from dbo.StudyMarks where CodStudent=@CodStudent) sm

on se.CodPlan=sm.CodPlan and (se.CodSub=sm.CodSub or sm.CodSub=-1)

and (se.CodSubType=sm.CodSubType or sm.CodSubType=2) and se.Course=sm.CourseSub

and se.NumTerm=sm.NumTerm and se.CodExType=sm.CodExType

where isnull(exlot,0)=1

insert into @Marks

select Course=IsNull(se.Course,sm.CourseSub), NumTerm=IsNULL(se.NumTerm,sm.NumTerm),

CodSub=IsNULL(sm.CodSub,se.CodSub), CodSubType=IsNULL(sm.CodSubType,se.CodSubType),

CodExType=IsNULL(se.CodExType,sm.CodExType), sm.Mark, sm.ECTSMark, ECTSCredits=IsNULL(se.ECTSCredits,0), sm.CodPrep, sm.InReit

--s.CodStudent, M=sum(IsNULL(sm.Mark,0)),R=case when sum(se.ECTSCredits)=0 then 0 else sum(IsNULL(ECTSMark,0)*sу.ECTSCredits)/sum(se.ECTSCredits) end

from

(select * from dbo.ECTS_studyExams where CodPlan=@CodPlan AND CodSubType not in (3,4)) se

FULL JOIN (select * from dbo.StudyMarks where CodStudent=@CodStudent) sm

on se.CodPlan=sm.CodPlan and (se.CodSub=sm.CodSub or sm.CodSub=-1) --case when sm.CodSub in (688,689) then -1 else sm.CodSub end--academia.e_GetCodSub(sm.CodSub)

and (se.CodSubType=sm.CodSubType or sm.CodSubType=2) and se.Course=sm.CourseSub

and se.NumTerm=sm.NumTerm and se.CodExType=sm.CodExType

where isnull(exlot,0)<>1

union

select * from @ExLot

return

END

/************************************************

Предназначена для работы с оценкой (в частности, вызывается в коде upExam - update на qExam)

@CodOp = 1 - удаление

@CodOp = 0 - добавление и модификация

************************************************/

CREATE PROCEDURE [dbo].[e_UpdateExam]

(

@CodOp tinyint,

@CodStudent int,

@CodKaf int,

@CodSub int,

@CodSubType tinyint,

@Course tinyint,

@NumTerm tinyint,

@CodExType tinyint,

@Mark tinyint,

@CodECTSMark smallint,

@CodPrep int,

@DateExam smalldatetime,

@CodVUZ tinyint,

@CodVar int,

@ECTScretits float

)as

BEGIN

--begin tran

--if not @Mark in (1,2,3,4,5) return

--Удаление

IF @CodOp=1

begin

delete from Exam

where

CodStudent = @CodStudent and

Course =@Course and

NumTerm = @NumTerm and

CodExType = @CodExType and

Mark = @Mark and

CodVar = @CodVar

-- if @@error <> 0 rollback tran else commit tran

return

end

declare

@CodOrganization tinyint,

@CodVarNEW int,

@Lec smallint,

@Sem smallint,

@Sam smallint

-- @err varchar(500)

select @CodOrganization = CodOrganization,

@Lec = Lec, @Sem = Sem, @Sam = Sam

from HoursVars

where CodVar = @CodVar

select @CodOrganization = isNULL(@CodOrganization,1),

@Lec = isNULL(@Lec,0), @Sem = isNULL(@Sem,0), @Sam = isNULL(@Sam,0)

--select @err = 'Mark = '+str(@CodOrganization)

execute dbo.e_DetectCodVar @CodSub, @CodSubType, @CodOrganization,

@CodKaf, @Lec, @Sem, @Sam, @ECTScretits, @CodVarNEW output

--raiserror(@err, 16,1);

select @CodOp = 3

if not exists(select * from Exam

where

CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVar

) select @CodOp = 2

--Добавление

IF @CodOp=2

begin

Insert Exam (CodStudent,Course,NumTerm,CodExType,Mark,CodECTSMark,

CodPrep,DateExam,CodVar,CodVUZ)

Values(@CodStudent,@Course,@NumTerm,@CodExType,@Mark,@CodECTSMark,

@CodPrep,@DateExam,@CodVarNEW,@CodVUZ)

-- if @@error <> 0 rollback tran else commit tran

return

end

--Изменение

IF @CodOp=3

begin

if exists(select * from Exam

where

CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVarNEW

and CodECTSmark = @CodECTSmark

and CodPrep = @CodPrep

and DateExam = @DateExam

and CodVUZ = @CodVUZ

) return

UPDATE Exam SET CodECTSMark=@CodECTSMark,

CodPrep=@CodPrep, DateExam=@DateExam, CodVUZ=@CodVUZ

WHERE CodStudent=@CodStudent

and Course=@Course

and NumTerm=@NumTerm

and CodExType=@CodExType

and mark = @mark

and CodVar=@CodVar

-- if @@error <> 0 rollback tran else commit tran

end

END

/**************************************************************

Предназначена для изменения существующей оценки в таблице Exam

Параметры делятся на три группы:

- старые значения ключевых полей (для идентификации изменяемой оценки);

- новые значения ключевых полей;

- новые значения неключевых полей.

Предварительно необходимо определить CodVarNEW для изменяемой оценки

Сначала производится удаление оценки, а затем вставка с новыми значениями

ЗУБКОВ СЕРГЕЙ

28\05\2002 17:21

****************************************************************/

CREATE PROCEDURE [dbo].[e_UpdateMark]

(

@CodStudent int,

@CodVar int, -- ключевые поля, определяющие, какую оценку меняем

@Course tinyint,

@NumTerm tinyint,

@CodExType tinyint,

@Mark tinyint,

@CodVarNEW int, --набор новых значений ключевых полей

@CourseNEW tinyint,

@NumTermNEW tinyint,

@CodExTypeNEW tinyint,

@MarkNEW tinyint,

@CodECTSMark smallint, -- значение неключевых полей

@CodPrep int,

@DateExam smalldatetime,

@CodVUZ int

)as

BEGIN

--if @CodECTSMark IS NULL BEGIN RAISERROR('Не указана рейтинговая оценка!',16,-1) return END

if @DateExam IS NULL BEGIN RAISERROR('Не указана дата!',16,-1) return END

if @CodVUZ IS NULL BEGIN RAISERROR('Не указан ВУЗ!',16,-1) return END

if @CodECTSMark IS NULL SELECT @CodECTSMark=0

BEGIN TRAN

-- удаляем старую оценку

exec e_DeleteMark @CodStudent, @CodVar, @Course, @NumTerm, @CodExType, @Mark

-- добавляем новую

exec e_AddMark @CodStudent, @CodVarNEW, @CourseNEW, @NumTermNEW, @CodExTypeNEW, @MarkNEW, @CodECTSMark, @CodPrep, @DateExam, @CodVUZ

IF @@ERROR<>0

BEGIN

ROLLBACK TRAN

END

ELSE COMMIT TRAN

END

/******************************************************************************

Object: Stored Procedure dbo.e_DetectCodVar Script Date: 17.11.2001 15:03:37

Процедура определяет @CodVar по содержанию варианта (остальные параметры)

Если варианта нет, то он заносится в HoursVars

****************************************************************************/

CREATE PROCEDURE [dbo].[e_DetectCodVar]

(@CodSub int, @CodSubType tinyint, @CodOrganization tinyint,

@CodKaf tinyInt, @Lec SmallInt, @Sem SmallInt, @Sam SmallInt, @ECTScretits float,

@CodVar int OUTPUT)

AS

--

-- Проверка существования варианта

--

IF EXISTS(SELECT * FROM HoursVars WHERE

CodSub=@CodSub AND CodSubType=@CodSubType

AND CodOrganization=@CodOrganization AND CodKaf=@CodKaf

AND Lec = @Lec AND Sem = @Sem AND Sam=@Sam AND ECTScretits = @ECTScretits)

--

-- Возвращается номер существующего варианта

--

SELECT @CodVar=CodVar FROM HoursVars WHERE

CodSub=@CodSub AND CodSubType=@CodSubType

AND CodOrganization=@CodOrganization AND CodKaf=@CodKaf

AND Lec = @Lec AND Sem = @Sem AND Sam=@Sam AND ECTScretits = @ECTScretits

ELSE

BEGIN

BEGIN TRAN

--

-- Выбирается свободный номер

--

SELECT @CodVar=curentvalue from autoincdata where tablename='HoursVars'

--

-- Добавляется вариант

--

INSERT HoursVars

VALUES (@CodVar,@CodSub,@CodSubType,@CodOrganization,@CodKaf,@Lec,@Sem,@Sam,@ECTScretits)

if @@error<>0

begin

rollback tran

--

-- При аварийном завершении возвращается -1

--

SELECT @CodVar=-1

end

else

begin

commit tran

end

END


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.