Автор: Пользователь скрыл имя, 24 Октября 2012 в 00:04, курсовая работа
Цель данной работы состоит в разработке модуля учета и анализа составления расписания в учебном отделе ВУЗа, который предназначен для ведения базы данных групп, студентов, дисциплин, преподавателей и т.д., а также обеспечивать ввод, удаление, хранение, редактирование и отчётность информации, которая содержится в таблицах данных.
Введение 3
1. Аналитическая часть 5
1.1 Анализ предметной области 5
1.2 Информационные потоки организации учебного процесса 9
1.3 Функциональная модель организации учебного процесса 15
1.4 Архитектура ИС 23
2 Проектная часть 25
2.1 Модель процессов ИС с использованием методологии DFD 25
2.2 Модель данных ИС предприятия с использованием стандарта IDEF1Х 30
2.3 Программная реализация ИС 32
2.4 График выполнения проекта с указанием ресурсов. 54
2.5 Расчет экономических показателей 55
ЗАКЛЮЧЕНИЕ 59
CREATE TABLE "GRUPPA"
( "GRUPPA_ID" NUMBER(*,0) NOT NULL ENABLE,
"COLICHESTVO_GRUPPAA_NA_
"NAZVANIE" VARCHAR2(20),
"ED_IZM" VARCHAR2(20),
"FAKULTET_ID" NUMBER(*,0),
CONSTRAINT "XPKТОВАРЫ" PRIMARY KEY ("GRUPPA_ID") ENABLE,
CONSTRAINT "RELATIONSHIP_264" FOREIGN KEY ("FAKULTET_ID")
REFERENCES "FAKULTET" ("FAKULTET_ID") ENABLE
)
/
CREATE OR REPLACE TRIGGER "TD_GRUPPA" AFTER DELETE ON GRUPPA for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- DELETE trigger on GRUPPA
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* GRUPPA Relationship_268 KURS on parent delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="GRUPPA_id" */
SELECT count(*) INTO NUMROWS
FROM KURS
WHERE
/* %JoinFKPK(KURS,:%Old," = "," AND") */
KURS.GRUPPA_id = :old.GRUPPA_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20001,
'Cannot DELETE GRUPPA because KURS exists.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* FAKULTET Relationship_264 GRUPPA on child delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="GRUPPA"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="FAKULTET_id" */
SELECT count(*) INTO NUMROWS FROM FAKULTET
WHERE
/* %JoinFKPK(:%Old,FAKULTET," = "," AND") */
:old.FAKULTET_id = FAKULTET.FAKULTET_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20010,
'Cannot DELETE GRUPPA because FAKULTET exists.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TD_GRUPPA" ENABLE
/
CREATE OR REPLACE TRIGGER "TU_GRUPPA" AFTER UPDATE ON GRUPPA for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- UPDATE trigger on GRUPPA
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* GRUPPA Relationship_268 KURS on parent update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="GRUPPA_id" */
IF
/* %JoinPKPK(:%Old,:%New," <> "," OR ") */
GRUPPA.GRUPPA_id <> GRUPPA.GRUPPA_id
THEN
SELECT count(*) INTO NUMROWS
FROM KURS
WHERE
/* %JoinFKPK(KURS,:%Old," = "," AND") */
KURS.GRUPPA_id = :old.GRUPPA_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20005,
'Cannot update GRUPPA because KURS exists.'
);
END IF;
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* FAKULTET Relationship_264 GRUPPA on child update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="GRUPPA"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="FAKULTET_id" */
SELECT count(*) INTO NUMROWS
FROM FAKULTET
WHERE
/* %JoinFKPK(:%New,FAKULTET," = "," AND") */
:new.FAKULTET_id = FAKULTET.FAKULTET_id;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
:new.FAKULTET_id IS NOT NULL AND
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update GRUPPA because FAKULTET does not exist.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TU_GRUPPA" ENABLE
/
Далее заполняем таблицу KURS:
Рис.2.18. Таблица KURS в Oracle
Далее представлен программный код таблицы KURS:
CREATE TABLE "KURS"
( "COLICHESTVO_GRUPPAA_V_
"RASPISANIEA_ID" NUMBER(*,0),
"GRUPPA_ID" NUMBER(*,0),
CONSTRAINT "RELATIONSHIP_267" FOREIGN KEY ("RASPISANIEA_ID")
REFERENCES "RASPISANIE" ("ORDER_ID") ENABLE,
CONSTRAINT "RELATIONSHIP_268" FOREIGN KEY ("GRUPPA_ID")
REFERENCES "GRUPPA" ("GRUPPA_ID") ENABLE
)
/
CREATE OR REPLACE TRIGGER "TD_KURS" AFTER DELETE ON KURS for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- DELETE trigger on KURS
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* RASPISANIE Relationship_267 KURS on child delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="RASPISANIEa_id" */
SELECT count(*) INTO NUMROWS FROM RASPISANIE
WHERE
/* %JoinFKPK(:%Old,RASPISANIE," = "," AND") */
:old.RASPISANIEa_id = RASPISANIE.Order_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20010,
'Cannot DELETE KURS because RASPISANIE exists.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* GRUPPA Relationship_268 KURS on child delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="GRUPPA_id" */
SELECT count(*) INTO NUMROWS FROM GRUPPA
WHERE
/* %JoinFKPK(:%Old,GRUPPA," = "," AND") */
:old.GRUPPA_id = GRUPPA.GRUPPA_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20010,
'Cannot DELETE KURS because GRUPPA exists.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TD_KURS" ENABLE
/
CREATE OR REPLACE TRIGGER "TU_KURS" AFTER UPDATE ON KURS for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- UPDATE trigger on KURS
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* RASPISANIE Relationship_267 KURS on child update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="RASPISANIEa_id" */
SELECT count(*) INTO NUMROWS
FROM RASPISANIE
WHERE
/* %JoinFKPK(:%New,RASPISANIE," = "," AND") */
:new.RASPISANIEa_id = RASPISANIE.Order_id;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
:new.RASPISANIEa_id IS NOT NULL AND
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update KURS because RASPISANIE does not exist.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* GRUPPA Relationship_268 KURS on child update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="GRUPPA_id" */
SELECT count(*) INTO NUMROWS
FROM GRUPPA
WHERE
/* %JoinFKPK(:%New,GRUPPA," = "," AND") */
:new.GRUPPA_id = GRUPPA.GRUPPA_id;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
:new.GRUPPA_id IS NOT NULL AND
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update KURS because GRUPPA does not exist.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TU_KURS" ENABLE
/
Далее заполняем таблицу RASPISANIE:
Рис.2.19. Таблица RASPISANIE в Oracle
Далее представлен программный код таблицы RASPISANIE:
CREATE TABLE "RASPISANIE"
( "ORDER_ID" NUMBER(*,0) NOT NULL ENABLE,
"OTGR_DATE" DATE,
"OPL_DATE" DATE,
"DN_ID" NUMBER(*,0),
"AUDITORIYA_ID" NUMBER(*,0),
"ДАТА_ЗАКАЗА" DATE,
CONSTRAINT "XPKЗАКАЗ" PRIMARY KEY ("ORDER_ID") ENABLE,
CONSTRAINT "RELATIONSHIP_265" FOREIGN KEY ("DN_ID")
REFERENCES "DN" ("DN_ID") ENABLE,
CONSTRAINT "RELATIONSHIP_266" FOREIGN KEY ("AUDITORIYA_ID")
REFERENCES "AUDITORIYA" ("AUDITORIYA_ID") ENABLE
)
/
CREATE OR REPLACE TRIGGER "TD_RASPISANIE" AFTER DELETE ON RASPISANIE for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- DELETE trigger on RASPISANIE
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* RASPISANIE Relationship_267 KURS on parent delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="RASPISANIEa_id" */
SELECT count(*) INTO NUMROWS
FROM KURS
WHERE
/* %JoinFKPK(KURS,:%Old," = "," AND") */
KURS.RASPISANIEa_id = :old.Order_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20001,
'Cannot DELETE RASPISANIE because KURS exists.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* DN Relationship_265 RASPISANIE on child delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="RASPISANIE"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="DN_id" */
SELECT count(*) INTO NUMROWS FROM DN
WHERE
/* %JoinFKPK(:%Old,DN," = "," AND") */
:old.DN_id = DN.DN_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20010,
'Cannot DELETE RASPISANIE because DN exists.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* AUDITORIYA Relationship_266 RASPISANIE on child delete no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="RASPISANIE"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="AUDITORIYA_id" */
SELECT count(*) INTO NUMROWS FROM AUDITORIYA
WHERE
/* %JoinFKPK(:%Old,AUDITORIYA," = "," AND") */
:old.AUDITORIYA_id = AUDITORIYA.AUDITORIYA_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20010,
'Cannot DELETE RASPISANIE because AUDITORIYA exists.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TD_RASPISANIE" ENABLE
/
CREATE OR REPLACE TRIGGER "TU_RASPISANIE" AFTER UPDATE ON RASPISANIE for each row
-- ERwin Builtin 15 мая 2012 г. 15:53:49
-- UPDATE trigger on RASPISANIE
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* RASPISANIE Relationship_267 KURS on parent update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="KURS"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="RASPISANIEa_id" */
IF
/* %JoinPKPK(:%Old,:%New," <> "," OR ") */
RASPISANIE.Order_id <> RASPISANIE.Order_id
THEN
SELECT count(*) INTO NUMROWS
FROM KURS
WHERE
/* %JoinFKPK(KURS,:%Old," = "," AND") */
KURS.RASPISANIEa_id = :old.Order_id;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20005,
'Cannot update RASPISANIE because KURS exists.'
);
END IF;
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* DN Relationship_265 RASPISANIE on child update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="RASPISANIE"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="DN_id" */
SELECT count(*) INTO NUMROWS
FROM DN
WHERE
/* %JoinFKPK(:%New,DN," = "," AND") */
:new.DN_id = DN.DN_id;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
:new.DN_id IS NOT NULL AND
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update RASPISANIE because DN does not exist.'
);
END IF;
/* ERwin Builtin 15 мая 2012 г. 15:53:49 */
/* AUDITORIYA Relationship_266 RASPISANIE on child update no action */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="RASPISANIE"
P2C_VERB_PHRASE="Relationship_
FK_CONSTRAINT="", FK_COLUMNS="AUDITORIYA_id" */
SELECT count(*) INTO NUMROWS
FROM AUDITORIYA
WHERE
/* %JoinFKPK(:%New,AUDITORIYA," = "," AND") */
:new.AUDITORIYA_id = AUDITORIYA.AUDITORIYA_id;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
:new.AUDITORIYA_id IS NOT NULL AND
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update RASPISANIE because AUDITORIYA does not exist.'
);
END IF;
-- ERwin Builtin 15 мая 2012 г. 15:53:49
END;
/
ALTER TRIGGER "TU_RASPISANIE" ENABLE
/
График выполнения проекта (таблица 2.1.) состоит из трех этапов, каждый этап имеет свою длительность и своего исполнителя.
I. Предпроектная стадия:
Длительность составила один месяц.
На данной этапе мы получили ТЗ на ИС от учебного отдела ВУЗа, сделали предполагаемую схему данных, согласовали ее с заказчиком. Так же заказчику были предоставлены: функциональная модель предметной области и модель процессов информационной системы. Для выполнения были задействованы следующие ресурсы: Erwin (модели данных), BPwin (модель автоматизируемого процесса).
II. Стадия проектирования
Длительность составила три месяца.
На данном этапе мы сконструировали
тестовую БД по данным заказчика, отобразили
примерный интерфейс ЭИС. Получили
уточненные данные по интерфейсу от заказчика,
а программный код был
III. Стадия реализации и внедрения
Длительность составила два месяца.
На данном этапе мы предоставили
заказчику окончательный
Таблица 2.1.
График выполнения проекта
Этап |
Длительность |
Исполнители |
Предпроектный |
1 месяц |
Программист, Инженер-лаборант |
Проектирования |
3 месяца |
Программист |
Внедрения |
2 месяца |
Программист, Инженер-лаборант |
Или представить в следующей таблице, в которую необходимо добавить столбец ресурс (исполнитель):
Таблица 2.1.
График выполнения проекта с указанием ресурсов
Наименование работы |
Сроки начала работ |
Сроки окончания работ | |
Предпроектная стадия | |||
Разработка технического задания |
01.02.2012 |
01.03.2012 | |
Стадия проектирования | |||
Разработка функциональной модели предметной области (автоматизируемых процессов) в IDEF0 |
02.03.2012 |
15.03.2012 | |
Разработка модели процессов информационной системы (функциональная модель) в DFD |
16.03.2012 |
01.04.2012 | |
Модель данных информационной системы |
12.04.2012 |
30.04.2012 | |
Связь модулей Bpwin и ERwin, работа с отчетами |
01.05.2012 |
15.05.2012 | |
Физическая модель, прямое и обратное проектирование |
06.05.2012 |
01.06.2012 | |
Реализация | |||
Разработка двухуровневой |
01.09.2012 |
30.09.2012 | |
Разработка печатной формы на Delphi по данным из БД |
01.10.2012 |
31.10.2012 | |
Внедрение | |||
Тестирование ИС |
1.11.2012 |
30.12.2012 | |
Внедрение ИС на предприятие |
01.01.2013 |
10.01.2013 |
Информация о работе Составление расписания в учебном отделе ВУЗа