- •1 Мета та задачі курсового проектування
- •2 Тематика курсових робіт
- •3 Порядок виконання курсової роботи
- •4 Порядок захисту курсової роботи
- •5 Критерії оцінювання курсової роботи
- •6 Структура курсової роботи
- •7 Зміст курсової роботи
- •8 Вимоги що до оформлення курсової роботи
- •Додаток а Орієнтовний перелік тем курсових робіт, в яких треба розробити фрагменти аіс
- •Зразок оформлення пояснювальної записки курсової роботи
- •Додаток в Форма № у 6.01
- •На курсовий проект (роботу) студента
- •(Прізвище, ім’я, по-батькові)
- •4. Зміст розрахунково-пояснювальної записки (перелік підлягаючих розробці питань)______________________________________________________________
- •5. Перелік графічного матеріалу (з точним в казанням обов’язкових креслень)____________________________________________________________
- •Календарний план
- •1 Характеристика предметної області
- •Вхідні дані інформаційної системи:
- •1.3 Вихідні дані інформаційної системи:
- •2 Проектування бази даних
- •2.1 Моделювання бази даних
- •2.2 Зв’язування таблиць
- •2.3 Встановлення умов цілостності даних.Створення тригерів.
- •3 Програмна частина
- •Створення збережених процедур
- •3.2 Розробка клієнтської частини додатку
- •Сервісні функції додатка
- •4 Організація запуску додатка
- •4.1 Інсталяція додатка
- •4.2 Запуск і закриття встановленого додатка
- •Висновки
- •Скрипт – файл створення бази даних та ії об’єктів
- •Програмний код форми модуля даних
- •Список літератури
Сервісні функції додатка
При роботі з додатком виконується контроль і обмеження вхідних даних. Цей контроль виконується як засобами Interbase-сервера так і за допомогою компонентів Delphi.
Виклик довідників виконується за допомогою стандартних кнопок, розташованих на головній формі додатку. У кожнім довіднику для швидкого пошуку його елементів можна накладати фільтр. Завдання фільтра вибору даних здійснюється за допомогою клавіш CTRL+F.
За допомогою меню «Виборки» користувач може одержати різноманітні дані про хід роботи приймальної комісії.
За допомогою меню «Отчеты» формуються і друкуються основні звіти для керівників приймальної комісії.
За допомогою меню «Очистка» можна швидко і просто підготувати систему до нового сезону прийому абітурієнтів.
Меню «Помощь» дозволяє одержати додаткову інформацію про програму.
4 Організація запуску додатка
Перед запуском додатка необхідно настроїти BDE. Для цього варто запустити додаток “BDE Administrator” або “Real SQLExplorer”. Потім створимо аліас ABITYRIENT і вкажемо наступні параметри:
Database Driver Name Interbase
SERVER NAME Шлях до файлу бази даних
4.1 Інсталяція додатка
Для інсталяції додатка необхідно скопіювати файл Abityrient.exe з дискети на твердий диск і створити ярлик на робочому столі на цей файл, для зручного і швидкого запуску додатка.
4.2 Запуск і закриття встановленого додатка
Запуск додатка здійснюється за допомогою ярлика на робочому столі.
Для виходу з додатка варто натиснути ALT+F4 чи мишею натиснути на хрестик у правому верхньому куті головного вікна програми.
Висновки
Розроблена система одержала зручний інтерфейс, що дозволяє швидко і легко виконувати необхідні користувачу дії. Система дозволяє роздруковувати звіти і вибірки, вести повний електронний облік роботи приймальної комісії.
Скрипт – файл створення бази даних та ії об’єктів
CREATE DATABASE "D:\Abit\ABITYRIENT.GDB"
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 1024 DEFAULT CHARACTER SET WIN1251;
CREATE TABLE FACULT(
PRKEY INTEGER NOT NULL,
SNAM VARCHAR(10) CHARACTER SET WIN1251,
LNAM VARCHAR(50) CHARACTER SET WIN1251,
CONSTRAINT FACULT_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE SPECIALIT(
PRKEY INTEGER NOT NULL,
LFACULT INTEGER,
TEACHFORMD INTEGER,
TEACHFORMW INTEGER,
CIPHER VARCHAR(10) CHARACTER SET WIN1251,
LNAM VARCHAR(50) CHARACTER SET WIN1251,
PLANGOV INTEGER,
PLANEC INTEGER,
CONSTRAINT SPECIALIT_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE TOWN(
PRKEY INTEGER NOT NULL,
LNAM VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT TOWN_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE FORLANG(
PRKEY INTEGER NOT NULL,
LNAM VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT FORLANG_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE EDINST(
PRKEY INTEGER NOT NULL,
LNAM VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT EDINST_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE PRIVIL(
PRKEY INTEGER NOT NULL,
LNAM VARCHAR(20) CHARACTER SET WIN1251,
CONSTRAINT PRIVIL_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE ENTRANT(
PRKEY INTEGER NOT NULL,
REGID INTEGER,
FIO VARCHAR(50) CHARACTER SET WIN1251,
LSPECIALIT INTEGER,
TEACHFORM INTEGER,
BIRTHDAT DATE,
SEX INTEGER,
LTOWN INTEGER,
ADDRESS VARCHAR(50) CHARACTER SET WIN1251,
PHONE VARCHAR(15) CHARACTER SET WIN1251,
ITN VARCHAR(15) CHARACTER SET WIN1251,
JOINDAT DATE,
GOTMONEY INTEGER,
ENTERED INTEGER,
PAYED INTEGER,
MUSTPAY INTEGER,
WANTFREE INTEGER,
MARK1 INTEGER,
MARK2 INTEGER,
MARK3 INTEGER,
MARKT INTEGER,
LEDINST INTEGER,
EDINSTNAM VARCHAR(50) CHARACTER SET WIN1251,
EDINSTFINDAT DATE,
AVRMRK NUMERIC(15,1),
LFORLANG INTEGER,
CAT INTEGER,
ADDDATA BLOB SUB_TYPE 0 SEGMENT SIZE 80,
CONSTRAINT ENTRANT_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE FACULTREGID(
PRKEY INTEGER NOT NULL,
LFACULT INTEGER,
REGID INTEGER,
CONSTRAINT FACULTREGID_PK1 PRIMARY KEY (PRKEY));
CREATE TABLE ENTRANTPRIVIL(
PRKEY INTEGER NOT NULL,
LENTRANT INTEGER,
LPRIVIL INTEGER,
CONSTRAINT ENTRANTPRIVIL_PK1 PRIMARY KEY (PRKEY));
CREATE GENERATOR FACULT_PRKEY_GEN;
SET GENERATOR FACULT_PRKEY_GEN TO 10000;
CREATE GENERATOR SPECIALIT_PRKEY_GEN;
SET GENERATOR SPECIALIT_PRKEY_GEN TO 10000;
CREATE GENERATOR TOWN_PRKEY_GEN;
SET GENERATOR TOWN_PRKEY_GEN TO 10000;
CREATE GENERATOR FORLANG_PRKEY_GEN;
SET GENERATOR FORLANG_PRKEY_GEN TO 10000;
CREATE GENERATOR EDINST_PRKEY_GEN;
SET GENERATOR EDINST_PRKEY_GEN TO 10000;
CREATE GENERATOR ENTRANT_PRKEY_GEN;
SET GENERATOR ENTRANT_PRKEY_GEN TO 10000;
CREATE GENERATOR FACULTREGID_PRKEY_GEN;
SET GENERATOR FACULTREGID_PRKEY_GEN TO 10000;
CREATE GENERATOR PRIVIL_PRKEY_GEN;
SET GENERATOR PRIVIL_PRKEY_GEN TO 10000;
CREATE GENERATOR ENTRANTPRIVIL_PRKEY_GEN;
SET GENERATOR ENTRANTPRIVIL_PRKEY_GEN TO 10000;
CREATE INDEX SPECIALIT_I_LFACULT ON SPECIALIT(LFACULT);
CREATE INDEX ENTRANT_I_LSPECIALIT ON ENTRANT(LSPECIALIT);
CREATE INDEX ENTRANT_I_LTOWN ON ENTRANT(LTOWN);
CREATE INDEX ENTRANT_I_LEDINST ON ENTRANT(LEDINST);
CREATE INDEX FACULTREGID_I_LFACULTREGID ON FACULTREGID(LFACULT,REGID);
CREATE INDEX ENTRANTPRIVIL_I_LEP ON ENTRANTPRIVIL(LENTRANT,LPRIVIL);
/* Exceptions */
CREATE EXCEPTION HASLINKS "На элемент существуют ссылки! Удаление
элемента невозможно!";
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE NAME_CONTAINING AS BEGIN EXIT; END ^
CREATE PROCEDURE FACULTREGID_GET_ID AS BEGIN EXIT; END ^
CREATE PROCEDURE FACULTREGID_FREE_ID AS BEGIN EXIT; END ^
CREATE PROCEDURE ENTRANTREPORT_SELECT AS BEGIN EXIT; END ^
CREATE PROCEDURE ENTRANTREPORT2_SELECT AS BEGIN EXIT; END ^
ALTER PROCEDURE NAME_CONTAINING (
IN_LNAM VARCHAR(255),
MASK VARCHAR(255)
) RETURNS (
OUT_LNAM VARCHAR(255)
) AS
BEGIN
IF ((IN_LNAM COLLATE PXW_CYRL) CONTAINING MASK) THEN OUT_LNAM=IN_LNAM;
ELSE OUT_LNAM='ERROR';
SUSPEND;
END
^
ALTER PROCEDURE FACULTREGID_GET_ID(
ILFACULT INTEGER
)RETURNS(
OREGID INTEGER
)AS
DECLARE VARIABLE LCNT INTEGER;
DECLARE VARIABLE LREGID INTEGER;
BEGIN
SELECT MIN(F.REGID)
FROM FACULTREGID F
WHERE F.LFACULT=:ILFACULT
INTO :OREGID;
IF(OREGID IS NULL)THEN
BEGIN
OREGID=1;
INSERT INTO FACULTREGID(PRKEY,LFACULT,REGID)
VALUES(GEN_ID(FACULTREGID_PRKEY_GEN,1),:ILFACULT,2);
END
ELSE
BEGIN
DELETE FROM FACULTREGID F
WHERE F.LFACULT=:ILFACULT AND F.REGID=:OREGID;
SELECT COUNT(F.PRKEY)
FROM FACULTREGID F
WHERE F.LFACULT=:ILFACULT AND F.REGID<>:OREGID
INTO :LCNT;
IF((LCNT=0)OR(LCNT IS NULL))THEN
BEGIN
LREGID=OREGID+1;
INSERT INTO FACULTREGID(PRKEY,LFACULT,REGID)
VALUES(GEN_ID(FACULTREGID_PRKEY_GEN,1),:ILFACULT,:LREGID);
END
END
SUSPEND;
END
^
ALTER PROCEDURE FACULTREGID_FREE_ID(
ILFACULT INTEGER,
IREGID INTEGER
)AS
BEGIN
INSERT INTO FACULTREGID(PRKEY,LFACULT,REGID)
VALUES(GEN_ID(FACULTREGID_PRKEY_GEN,1),:ILFACULT,:IREGID);
END
^
ALTER PROCEDURE ENTRANTREPORT_SELECT
RETURNS(
ORT INTEGER,
OFPRKEY INTEGER,
OFNAM VARCHAR(50),
OSPRKEY INTEGER,
OSNAM VARCHAR(50),
OPLAN INTEGER,
OJOINED INTEGER,
OPAYED INTEGER,
OENTERED INTEGER
)AS
DECLARE VARIABLE LPLANGOV INTEGER;
DECLARE VARIABLE LPLANEC INTEGER;
DECLARE VARIABLE LPLAN INTEGER;
DECLARE VARIABLE LJOINED INTEGER;
DECLARE VARIABLE LPAYED INTEGER;
DECLARE VARIABLE LENTERED INTEGER;
BEGIN
FOR SELECT F.PRKEY,F.LNAM
FROM FACULT F
ORDER BY F.LNAM
INTO :OFPRKEY,:OFNAM
DO
BEGIN
ORT=1;
OPLAN=NULL;
OJOINED=NULL;
OPAYED=NULL;
OENTERED=NULL;
SUSPEND;
LPLAN=0;
LJOINED=0;
LPAYED=0;
LENTERED=0;
ORT=2;
FOR SELECT S.PRKEY,S.LNAM,S.PLANGOV,S.PLANEC
FROM SPECIALIT S
WHERE S.LFACULT=:OFPRKEY
ORDER BY S.LNAM
INTO :OSPRKEY,:OSNAM,:LPLANGOV,:LPLANEC
DO
BEGIN
OPLAN=0;
IF(LPLANGOV>0)THEN OPLAN=OPLAN+LPLANGOV;
IF(LPLANEC>0)THEN OPLAN=OPLAN+LPLANEC;
OJOINED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.GOTMONEY=0
INTO :OJOINED;
IF(OJOINED IS NULL)THEN OJOINED=0;
OPAYED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.PAYED=1
INTO :OPAYED;
IF(OPAYED IS NULL)THEN OPAYED=0;
OENTERED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.ENTERED=1
INTO :OENTERED;
IF(OENTERED IS NULL)THEN OENTERED=0;
LPLAN=LPLAN+OPLAN;
LJOINED=LJOINED+OJOINED;
LPAYED=LPAYED+OPAYED;
LENTERED=LENTERED+OENTERED;
SUSPEND;
END
ORT=3;
OPLAN=LPLAN;
OJOINED=LJOINED;
OPAYED=LPAYED;
OENTERED=LENTERED;
SUSPEND;
END
END
^
ALTER PROCEDURE ENTRANTREPORT2_SELECT
RETURNS(
ORT INTEGER,
OFPRKEY INTEGER,
OFNAM VARCHAR(50),
OSPRKEY INTEGER,
OSNAM VARCHAR(50),
OPLAN INTEGER,
OTEACHFORMD INTEGER,
OTEACHFORMW INTEGER,
OJOINED INTEGER,
OPAYED INTEGER,
OENTERED INTEGER
)AS
DECLARE VARIABLE LPLANGOV INTEGER;
DECLARE VARIABLE LPLANEC INTEGER;
DECLARE VARIABLE LPLAN INTEGER;
DECLARE VARIABLE LJOINED INTEGER;
DECLARE VARIABLE LPAYED INTEGER;
DECLARE VARIABLE LENTERED INTEGER;
DECLARE VARIABLE LTEACHFORMD INTEGER;
DECLARE VARIABLE LTEACHFORMW INTEGER;
BEGIN
FOR SELECT F.PRKEY,F.LNAM
FROM FACULT F
ORDER BY F.LNAM
INTO :OFPRKEY,:OFNAM
DO
BEGIN
ORT=1;
OPLAN=NULL;
OJOINED=NULL;
OPAYED=NULL;
OENTERED=NULL;
SUSPEND;
LPLAN=0;
LJOINED=0;
LPAYED=0;
LENTERED=0;
LTEACHFORMD=0;
LTEACHFORMW=0;
ORT=2;
FOR SELECT S.PRKEY,S.LNAM,S.PLANGOV,S.PLANEC
FROM SPECIALIT S
WHERE S.LFACULT=:OFPRKEY
ORDER BY S.LNAM
INTO :OSPRKEY,:OSNAM,:LPLANGOV,:LPLANEC
DO
BEGIN
OPLAN=0;
IF(LPLANGOV>0)THEN OPLAN=OPLAN+LPLANGOV;
IF(LPLANEC>0)THEN OPLAN=OPLAN+LPLANEC;
OJOINED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.GOTMONEY=0
INTO :OJOINED;
IF(OJOINED IS NULL)THEN OJOINED=0;
OPAYED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.PAYED=1
INTO :OPAYED;
IF(OPAYED IS NULL)THEN OPAYED=0;
OENTERED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.ENTERED=1
INTO :OENTERED;
IF(OENTERED IS NULL)THEN OENTERED=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.TEACHFORM=1
INTO :OTEACHFORMD;
IF(OTEACHFORMD IS NULL)THEN OTEACHFORMD=0;
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=:OSPRKEY AND E.TEACHFORM=2
INTO :OTEACHFORMW;
IF(OTEACHFORMW IS NULL)THEN OTEACHFORMW=0;
LPLAN=LPLAN+OPLAN;
LJOINED=LJOINED+OJOINED;
LPAYED=LPAYED+OPAYED;
LENTERED=LENTERED+OENTERED;
LTEACHFORMD=LTEACHFORMD+OTEACHFORMD;
LTEACHFORMW=LTEACHFORMW+OTEACHFORMW;
SUSPEND;
END
ORT=3;
OPLAN=LPLAN;
OJOINED=LJOINED;
OPAYED=LPAYED;
OENTERED=LENTERED;
OTEACHFORMD=LTEACHFORMD;
OTEACHFORMW=LTEACHFORMW;
SUSPEND;
END
END
^
SET TERM ; ^
COMMIT WORK ;
SET AUTODDL ON;
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER FACULT_BD_01 FOR FACULT ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(S.PRKEY)
FROM SPECIALIT S
WHERE S.LFACULT=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
DELETE FROM FACULTREGID
WHERE LFACULT=OLD.PRKEY;
END
^
CREATE TRIGGER SPECIALIT_BD_01 FOR SPECIALIT ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LSPECIALIT=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
^
CREATE TRIGGER TOWN_BD_01 FOR TOWN ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LTOWN=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
^
CREATE TRIGGER EDINST_BD_01 FOR EDINST ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LEDINST=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
^
CREATE TRIGGER FORLANG_BD_01 FOR FORLANG ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANT E
WHERE E.LFORLANG=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
^
CREATE TRIGGER PRIVIL_BD_01 FOR PRIVIL ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE LCNT INTEGER;
BEGIN
SELECT COUNT(E.PRKEY)
FROM ENTRANTPRIVIL E
WHERE E.LPRIVIL=OLD.PRKEY
INTO :LCNT;
IF(LCNT>0)THEN EXCEPTION HASLINKS;
END
^
CREATE TRIGGER ENTRANT_BD_01 FOR ENTRANT ACTIVE BEFORE DELETE POSITION 1
AS
BEGIN
DELETE FROM ENTRANTPRIVIL
WHERE LENTRANT=OLD.PRKEY;
END
^
COMMIT WORK ^
SET TERM ; ^