Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Лабораторная работа - Интегрирование двух подсистем, Delphi - файл МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ.doc


Лабораторная работа - Интегрирование двух подсистем, Delphi
скачать (1278.3 kb.)

Доступные файлы (223):

contingent.dbf
facultet.dbf
group.dbf
spec.dbf
finance.gdb
rfunc.dll
Project1.dcu
Project1.ddp
Project1.~ddp
Project1.dfm
Project1.~dfm
Project1.pas
Project1.~pas
Project2.cfg
Project2.dof
Project2.dpr
Project2.~dpr
Project2.exe
Project2.res
_QSQL116.DBF
_QSQL324.DBF
_QSQL567.DBF
_QSQL754.DBF
SQL.txt5kb.23.04.2010 21:10скачать
123.txt1kb.08.05.2008 19:15скачать
ASN1Util.pas
blcksock.dcu
blcksock.pas
contingent.dbf
facultet.dbf
group.dbf
spec.dbf
DNSsend.pas
3073195
3073195.ini
3073218
3073218.ini
3073520
3073627
3073809
3073809.ini
3073815
3073857
3073857.ini
3073946
3073946.ini
3074230
3074325
3074373
3074585
3074733
3074795
3075112
3075321
3075327
3075432
3075563
3075800
3082275
3082275.ini
3082708
3084940
3085248
3085921
3085955
3089730
3090001
3091444
3091477
4071333
4071412
4071491
4075176
4075183
4075300
4075428
4075437
4075439
4075798
4075847
4075981
4076054
4076883
4077041
4077070
4077209
4077283
4077516
4077563
4077914
4077989
4078238
4078323
4078863
4082356
4082535
4082588
4082731
4082904
4083096
4083126
4083704
4083893
4083916
4083925
4083929
4084012
4084140
5073274
5073403
5073777
5073794
5076462
5076875
5089375
5089424
5089969
5090025
5091432
5091464
finance.gdb
rfunc.dll
FTPsend.dcu
FTPsend.pas
HTTPSend.dcu
HTTPSend.pas
IMAPsend.dcu
IMAPsend.pas
3073195
3073195.ini
3073218
3073218.ini
3073809
3073809.ini
3073857
3073857.ini
3073946
3073946.ini
3082275
3082275.ini
kod.txt2kb.29.05.2008 18:12скачать
_QSQL000.DBF
_QSQL238.DBF
MIMEinLn.dcu
MIMEinLn.pas
MIMEmess.dcu
MIMEmess.pas
MIMEpart.dcu
MIMEpart.pas
NNTPsend.pas
PINGsend.pas
POP3send.pas
Project1.dcu
Project1.ddp
Project1.~ddp
Project1.dfm
Project1.~dfm
Project1.pas
Project1.~pas
Project2.cfg
Project2.dof
Project2.dpr
Project2.~dpr
Project2.exe
Project2.res
_QSQL000.DBF
_QSQL117.DBF
_QSQL190.DBF
_QSQL198.DBF
_QSQL213.DBF
_QSQL227.DBF
_QSQL248.DBF
_QSQL267.DBF
_QSQL276.DBF
_QSQL284.DBF
_QSQL287.DBF
_QSQL313.DBF
_QSQL339.DBF
_QSQL354.DBF
_QSQL382.DBF
_QSQL397.DBF
_QSQL479.DBF
_QSQL489.DBF
_QSQL493.DBF
_QSQL548.DBF
_QSQL605.DBF
_QSQL637.DBF
_QSQL675.DBF
_QSQL718.DBF
_QSQL736.DBF
_QSQL757.DBF
_QSQL762.DBF
_QSQL770.DBF
_QSQL782.DBF
_QSQL793.DBF
_QSQL813.DBF
_QSQL852.DBF
_QSQL859.DBF
_QSQL906.DBF
_QSQL929.DBF
_QSQL940.DBF
_QSQL952.DBF
_QSQL990.DBF
_QSQL998.DBF
SLogSend.dcu
SLogSend.pas
SMTPsend.dcu
SMTPsend.pas
SNMPSend.pas
SNMPTrap.pas
SNTPsend.pas
sql.txt3kb.03.04.2002 07:16скачать
SynaChar.dcu
SynaChar.pas
SynaCode.dcu
SynaCode.pas
SynaSSL.dcu
SynaSSL.pas
SynaUtil.dcu
SynaUtil.pas
synsock.dcu
synsock.pas
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ.doc111kb.29.04.2010 00:18скачать

содержание

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ.doc

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

СУМСЬКИЙ ДЕРЖАВНИЙ УНІВЕРСИТЕТ

КАФЕДРА ІНФОРМАТИКИ

Контрольна робота
з курсу «ІНТЕГРОВАНІ СИСТЕМИ УПРАВЛІННЯ»

Виконала: студентка гр. Ін-61

Берко А.М.
Перевірила: Хоменко Л.В.

Суми 2010
Теоретичні відомості
Інтеграція – спосіб організації окремих компонентів в одну систему , яка забезпечує узгоджену і цілеспрямовану їх взаємодію
Інформаційна інтеграція передбачає єдиний комплексний підхід до створення та ведення інформаційної бази всієї системи та її компонентів на основі єдиного технологічного процесу збору, зберігання, передачі та обробки інформації, який забезпечує узгоджені інформаційні взаємодії всіх підсистем ІСУ.
^ Програмна інтеграція міститься у використанні узгодженого та взаємопов'язаного комплексу моделей, алгоритмів і програм для забезпечення спільного функціонування всіх компонентів ІСУ.

Інтегруюче середовище - сукупність програмних та організаційних складових, метою яких є забезпечення взаємодії систем та створення єдиної системи. Наявність інтегруючого середовища дозволяє говорити про цілісність єдиної системи, а не про набір окремих програм.

^ Активна система - система, яка використовує інтерфейс іншої системи.

Пасивна система - система, яка представляє інтерфейси для користування іншим системам та не використовує напряму інтерфейси інших систем.

^ Синхронна передача даних базується на одночасному встановленні зв’язку між підсистемами, що інтегруються.

Асинхронна передача даних базується на використанні проміжних файлів, у які записуються дані з однієї підсистеми, а потім з файлів переносяться в іншу підсистему.
^ SQL команди
INSERT добавляє одну або більше нових строк даних до існуючої таблиці.

UPDATE змінює одну або більше існуючих строк в таблиці. WHERE використовується для обмеження UPDATE до деякій підмножині строк таблиці.

SELECT повертає дані з таблиці або збереженої процедури.

Будь-яка команда SELECT містить два обов’язкових ключових слова (SELECT, FROM) також можливі інші ключові слова (WHERE, GROUP BY, HAVING, UNION, PLAN, ORDER BY).


Ключеві слова

Призначення

SELECT

Визначає стовпці, які повертаються

FROM

Визначає таблиці в яких іде пошук значення

WHERE

Визначає умови пошуку, які використовуються для відбору необхідних строк з множини всіх строк. Речення WHERE може містити команду SELECT, як під запит

GROUP BY

Групує строки, які повертаються на основі однакових значень стовпців

HAVING

Обмежує строки, які повертаються. Використовується сумісно з GROUP BY.

UNION

Комбінує результати двох або більше команд SELECT та створює об’єднану вибірку.

ORDER BY

Визначає порядок сортування строк, які повертає SELECT, в зростаючому порядку (ASC), або в убиваючому порядку (DESC)



^ CREATE TABLE створює нову таблицю, ії стовпці та обмеження цілісності в існуючій базі даних.

CREATE PROCEDURE створює нову збережену процедуру в базі даних.

Язик процедур и тригерів InterBase (Firebird) включає всі команди SQL маніпулювання даними та деякі доповнення, включаючи: IF ... THEN ... ELSE, WHILE ... DO, FOR SELECT ... DO, виняткові ситуації та обробку помилок.

Існує два види процедур:

  • Процедури вибору, програмні модулі можуть використовувати їх замість таблиць в команді SELECT. Процедура вибору має бути визначена для повернення одного або більше значень та містити команду SUSPEND.

  • Процедури виконання, програмні модулі можуть безпосередньо визвати їх в команді EXECUTE PROCEDURE.

^ Постановка задачі

Є дві підсистеми з різною архітектурою і форматами збереження даних:

«Деканат» - файл-серверна архітектура, формат збереження даних – dbf файли;

«Фінанси» - клієнт-серверна архітектура, формат збереження даних – gdb файл.

Потрібно інтегрувати ці підсистеми на програмному й інформаційному рівні, організувати передачу даних по особових справах студентів з підсистеми «Деканат» у підсистему «Фінанси». Як активна підсистема виступає підсистема «Фінанси», вона запитує дані в підсистеми «Деканат».

Під час виконання контрольної роботи необхідно розробити програмний модуль, що реалізує описану вище задачу обміну даними, та додатково забезпечити наступне:

  1. Записати данні у файли та передати на e-mail данні запаковані в архів;

  2. Отримати пошту і розархівувати данні;

  3. Занести данні в базу даних та вивести результати роботи.



Результат виконання програми:





Висновки

Під час виконання завдання ми освоїли роботу з сервером баз даних, ознайомилися з язиком SQL, отримали практичні навички реалізації програмної та інформаційної інтеграції окремих підсистем.


^ Створення допоміжної таблиці для перекодування кодів спеціальностей:
DROP TABLE IN61_Berko_Decode;

CREATE TABLE IN61_Berko_Decode (

new_id int NOT NULL,

old_id int NOT NULL,

primary key (new_id,old_id));

commit;

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(14, 13);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(12, 10);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(11, 8);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(20, 23);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(9, 7);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(28, 24);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(21, 20);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(24, 21);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(6, 16);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(10, 9);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(19, 17);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(40, 30);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(39, 29);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(13, 11);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(18, 1);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(4, 4);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(3, 3);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(32, 22);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(5, 12);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(25, 22);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(15, 15);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(16, 14);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(8, 6);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(36, 25);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(1, 19);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(17, 18);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(7, 5);

INSERT INTO IN61_Berko_Decode (new_id, old_id) VALUES(2, 2);
^ Створення збережених процедур:

DROP PROCEDURE IN61_Procedure_Berko;

set term ^;

CREATE PROCEDURE IN61_Procedure_Berko(

NUM_ZACH char(30),

F_FIO char(30),

I_FIO char(30),

O_FIO char(30),

D_O_B date,

ID_CODE char(15),

ID_DIV integer,

ID_PROF integer,

NAME_GROUP char(20),

COURSE integer

) returns(res integer, error char(30))

as

DECLARE VARIABLE new_f_fio char(30);

DECLARE VARIABLE new_i_fio char(30);

DECLARE VARIABLE new_o_fio char(30);

DECLARE VARIABLE new_id_prof integer;

DECLARE VARIABLE already_exists integer;

DECLARE VARIABLE new_id_div integer;

begin

res = 0;

already_exists = 0;

^ IF ((F_FIO IS NULL) OR (I_FIO IS NULL) OR (O_FIO IS NULL) OR (D_O_B IS NULL)

OR (ID_PROF IS NULL)) THEN

BEGIN

res = -1;

error = :NUM_ZACH;

exit;

END

SELECT D.ID_DIV

FROM Divisions D

^ WHERE D.CODE_DIV = :ID_DIV

into :new_id_div;

new_id_prof = 0;

SELECT new_id

FROM IN61_Berko_Decode

WHERE old_id = :ID_PROF

into :new_id_prof;

IF (new_id_prof = 0) THEN

BEGIN

res = -1;

error = :NUM_ZACH;

EXIT;

END

new_f_fio = RUpper(Substr(F_FIO,1,1))||RLower(Substr(F_FIO,2,30));

new_f_fio = StrReplace(new_f_fio,'I','І');

new_f_fio = StrReplace(new_f_fio,'i','і');

new_i_fio = RUpper(Substr(I_FIO,1,1))||RLower(Substr(I_FIO,2,30));

new_i_fio = StrReplace(new_i_fio,'I','І');

new_i_fio = StrReplace(new_i_fio,'i','і');

new_o_fio = RUpper(Substr(O_FIO,1,1))||RLower(Substr(O_FIO,2,30));

new_o_fio = StrReplace(new_o_fio,'I','І');

new_o_fio = StrReplace(new_o_fio,'i','і');

^ SELECT C.ID_FIO

FROM Contingents C

WHERE C.F_FIO = :new_f_fio

AND C.I_FIO = :new_i_fio

AND C.O_FIO = :new_o_fio

AND C.D_O_B = :D_O_B

into :already_exists;

IF(already_exists = 0) THEN

BEGIN

INSERT INTO Contingents (ID_FIO, F_FIO, I_FIO, O_FIO, D_O_B,

^ ID_CODE, ID_DIV, ID_PROF, NAME_GROUP, COURSE,

LAST_DATE, LAST_USER)

VALUES (gen_id(gen_contingent,1), :new_f_fio, :new_i_fio,

:new_o_fio, :D_O_B, :ID_CODE, :new_id_div, :new_id_prof,

:NAME_GROUP, :COURSE, CURRENT_TIMESTAMP, USER);

res = 1;

END

IF(already_exists <> 0) THEN

BEGIN

UPDATE Contingents SET F_FIO = :new_f_fio, I_FIO = :new_i_fio,

O_FIO = :new_o_fio, D_O_B = :D_O_B, ID_CODE = :ID_CODE,

ID_DIV = :new_id_div, ID_PROF = :new_id_prof,

^ NAME_GROUP = :NAME_GROUP, COURSE = :COURSE,

LAST_DATE = CURRENT_TIMESTAMP, LAST_USER = USER

WHERE ID_FIO = :already_exists;

res = 0;

END

end^

set term; ^


Додаток
unit Project1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, Spin, IBCustomDataSet,

IBDatabase, IBSQL;
type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Query1: TQuery;

DBGrid1: TDBGrid;

DataSource1: TDataSource;

DataSource2: TDataSource;

Query2: TQuery;

DBGrid2: TDBGrid;

Edit1: TEdit;

IBDatabase1: TIBDatabase;

IBTransaction1: TIBTransaction;

IBDataSet1: TIBDataSet;

DBGrid3: TDBGrid;

DataSource3: TDataSource;

Button3: TButton;

^ IBSQL1: TIBSQL;

Memo1: TMemo;

Button4: TButton;

IBSQL2: TIBSQL;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

// procedure Button7Click(Sender: TObject);
private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Query1.SQL.Text:='select A.*, G.NAIM from "contingent.dbf" A, "group.dbf" G'

+' where A.K_GRUP = G.KOD';

Query1.Open;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Query2.SQL.Text:='select A.*, G.NAIM from "contingent.dbf" A, "group.dbf"'

+ 'G where A.K_GRUP = G.KOD and A.OT=:name';

Query2.Close;

Query2.ParamByName('name').AsString:=Edit1.Text;

Query2.Open;

end;

procedure TForm1.Button3Click(Sender: TObject);

var i,j:integer;

s:string;

begin

Memo1.Clear;

Query2.first;

i:=0;

j:=0;

IBSQL1.SQL.Text:='execute procedure IN61_Procedure_Berko (:NUM_ZACH, :F_FIO, '

+ ':I_FIO, :O_FIO, :D_O_B, :ID_CODE, :ID_DIV, :ID_PROF, :NAME_GROUP, :COURSE)';

while (not Query2.Eof) do

begin

try

IBTransaction1.Active:=true;

IBSQL1.ParamByName('NUM_ZACH').asinteger:=Query2.Fieldbyname('NUM_ZACH').AsInteger;

IBSQL1.ParamByName('F_FIO').asstring:=Query2.Fieldbyname('FAM').Asstring;

IBSQL1.ParamByName('I_FIO').asstring:=Query2.Fieldbyname('IMJA').Asstring;

IBSQL1.ParamByName('O_FIO').asstring:=Query2.Fieldbyname('OT').Asstring;

IBSQL1.ParamByName('D_O_B').asdatetime:=Query2.Fieldbyname('DATA_ROJD').Asdatetime;

IBSQL1.ParamByName('ID_CODE').asstring:=Query2.Fieldbyname('NAL_KOD').Asstring;

IBSQL1.ParamByName('ID_DIV').asinteger:=Query2.Fieldbyname('K_FAK').AsInteger;

IBSQL1.ParamByName('ID_PROF').asinteger:=Query2.Fieldbyname('KOD_SPEC').AsInteger;

IBSQL1.ParamByName('NAME_GROUP').asstring:=Query2.Fieldbyname('NAIM').Asstring;

IBSQL1.ParamByName('COURSE').asinteger:=Query2.Fieldbyname('K_KURS').AsInteger;

IBSQL1.ExecQuery;

IBTransaction1.Commit;

except

IBTransaction1.Rollback;

end;

CASE IBSQL1.FieldByName('res').AsInteger of

0:inc (i);

1:inc (j);

else s:=s+(IBSQL1.FieldByName('error').Asstring)+' ';

end;

Query2.Next;

end;

Memo1.Lines.Add(format('Äîáàâëåíî %d', [j]));

Memo1.Lines.Add(format('Ìîäèôèöèðîâàíî %d', [i]));

Memo1.Lines.Add(format('Íå êîððåêòíûõ äàííûõ %s', [s]));

IBDATASET1.Close;

IBDATASET1.Open;

end;
procedure TForm1.Button4Click(Sender: TObject);

begin

IBTransaction1.Active:=true;

try

IBSQL2.SQL.Text:='Delete from CONTINGENTS';

IBSQL2.ExecQuery;

IBTransaction1.Commit;

except

IBTransaction1.Rollback;

end;

IBDATASET1.Close;

IBDATASET1.Open;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

//IBDatabase1.DatabaseName:='192.168.10.254:D:\isu\finance\finance.gdb';

IBDatabase1.DatabaseName:='E:\RAUS\ÑóìÃÓ(SumDU)\[4kurs]\isu\Finance\finance.gdb';

Query1.DatabaseName:='E:\RAUS\ÑóìÃÓ(SumDU)\[4kurs]\isu\Deanery\';

Query2.DatabaseName:='E:\RAUS\ÑóìÃÓ(SumDU)\[4kurs]\isu\Deanery\';

IBDatabase1.Connected:=true;

end;
end.


Скачать файл (1278.3 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации