Составление расписания в учебном отделе ВУЗа

Автор: Пользователь скрыл имя, 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

Работа содержит 1 файл

Курсовик КИС.docx

— 3.39 Мб (Скачать)

 

CREATE TABLE  "GRUPPA"

   ( "GRUPPA_ID" NUMBER(*,0) NOT NULL ENABLE,

"COLICHESTVO_GRUPPAA_NA_SKLADE" NUMBER(*,0),

"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="0001e5be", PARENT_OWNER="", PARENT_TABLE="GRUPPA"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_268", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="FAKULTET"

    CHILD_OWNER="", CHILD_TABLE="GRUPPA"

    P2C_VERB_PHRASE="Relationship_264", C2P_VERB_PHRASE="",

    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="00022cb1", PARENT_OWNER="", PARENT_TABLE="GRUPPA"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_268", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="FAKULTET"

    CHILD_OWNER="", CHILD_TABLE="GRUPPA"

    P2C_VERB_PHRASE="Relationship_264", C2P_VERB_PHRASE="",

    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_RASPISANIEE" NUMBER(*,0),

"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="0001db3a", PARENT_OWNER="", PARENT_TABLE="RASPISANIE"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_267", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="GRUPPA"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_268", C2P_VERB_PHRASE="",

    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="000227c7", PARENT_OWNER="", PARENT_TABLE="RASPISANIE"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_267", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="GRUPPA"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_268", C2P_VERB_PHRASE="",

    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="0002d632", PARENT_OWNER="", PARENT_TABLE="RASPISANIE"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_267", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="DN"

    CHILD_OWNER="", CHILD_TABLE="RASPISANIE"

    P2C_VERB_PHRASE="Relationship_265", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="AUDITORIYA"

    CHILD_OWNER="", CHILD_TABLE="RASPISANIE"

    P2C_VERB_PHRASE="Relationship_266", C2P_VERB_PHRASE="",

    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="000339ab", PARENT_OWNER="", PARENT_TABLE="RASPISANIE"

    CHILD_OWNER="", CHILD_TABLE="KURS"

    P2C_VERB_PHRASE="Relationship_267", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="DN"

    CHILD_OWNER="", CHILD_TABLE="RASPISANIE"

    P2C_VERB_PHRASE="Relationship_265", C2P_VERB_PHRASE="",

    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="00000000", PARENT_OWNER="", PARENT_TABLE="AUDITORIYA"

    CHILD_OWNER="", CHILD_TABLE="RASPISANIE"

    P2C_VERB_PHRASE="Relationship_266", C2P_VERB_PHRASE="",

    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

/

    1.  График выполнения проекта с указанием ресурсов.

 

График выполнения проекта (таблица 2.1.) состоит из трех этапов, каждый этап имеет свою длительность и своего исполнителя.

I. Предпроектная стадия:

Длительность составила  один месяц.

На данной этапе мы получили ТЗ на ИС от учебного отдела ВУЗа, сделали предполагаемую схему данных, согласовали ее с заказчиком. Так же заказчику были предоставлены: функциональная модель  предметной области и модель процессов информационной системы. Для выполнения были задействованы следующие ресурсы: Erwin (модели данных), BPwin (модель автоматизируемого процесса).

II. Стадия проектирования

Длительность составила  три месяца.

На данном этапе мы сконструировали  тестовую БД по данным заказчика, отобразили примерный интерфейс ЭИС. Получили уточненные данные по интерфейсу от заказчика, а программный код был согласован непосредственно с руководителем  службы ИТ. После внесения изменения  согласовали с заказчиком окончательную  версию реализуемой ИС (схема данных и интерфейс). Для выполнения была задействована СУБД Oracle

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

Информация о работе Составление расписания в учебном отделе ВУЗа