Розробка інформаційної системи відомостей про вулиці м. Києва

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    320,75 Кб
  • Опубликовано:
    2013-07-26
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Розробка інформаційної системи відомостей про вулиці м. Києва

Зміст

1. Опис предметного середовища та постановка задачі

. Концептуальна модель бази даних

. Даталогічна модель бази даних

. Словник даних

. Зв’язки між сутностями

. Функціональні залежності

. Опис реалізації проекту бази даних

Висновки

Список використаної літератури

Документація

Додатки

 

1.     
Опис предметного середовища та постановка задачі

Необхідно розробити інформаційну систему, яка дозволяла б виконувати перегляд відомостей про вулиці м. Києва, їх розташування, параметри та історію.

До головних задач, які повинна виконувати система, відносяться:

·        Ведення обліку вулиць, тобто інформація про розташування, код, назву, тип, хронологію перейменувань вулиці.

·        Ведення обліку об’єктів, які розташовані на відповідних вулицях - номер, назва, тип, точні координати розташування.

Перелік вхідної інформації, що повинна зберігатися в БД

·        Район: код району (унікальний), назва району.

·        Вулиця: код вулиці (унікальний), назва вулиці, тип вулиці, коротка назва типу, кількість об’єктів (споруди розташовані на даній вулиці), код району (унікальний).

·        Хронологія: номер запису (унікальний), нова назва, дата створення, код вулиці (унікальний).

·        Геометрія: координати вулиці (X, Y), код вулиці (унікальний).

·        Об’єкт: номер (унікальний), назва (якщо є, в іншому випадку взяти назву вулиці), тип об’єкта, координати об’єкта (Х, Y), код вулиці (унікальний).

2.      Концептуальна модель БД

На етапі концептуального проектування визначаються основні типи даних, що підлягають збереженню у базі даних, виділяються об’єкти (сутності) предметного середовища, визначаються характеристики (атрибути) об’єктів, структурні зв’язки між об’єктами, які дають можливість реалізувати усю множину запитів до БД.

Рисунок 1 - Концептуальна модель

3.      Даталогічна модель БД

Фізична модель відображає розміщення даних, методи доступу до даних і техніку індексування, що будуть реалізовані в рамках обраної СУБД.

Нижче наведена структура таблиць та їх взаємозв‘язок у вигляді діаграми.

Рисунок 2 - Даталогічна модель

.        Словник даних

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

Таблиця 1 - Атрибути інформаційної моделі

Сутність

Атрибути

Ідентифікатор

Ключі

Тип даних

Розмір

Район

Код району Назва району

ID_Part Name_Part

Pk

Числовий(і) Текстовий(А)

ціле 50

Вулиця

Код вулиці Назва вулиці Тип Коротка назва типу Кількість об’єктів  Код району

ID_St Name_St Type_St Type_Short Count_St ID_Part

Pk     Fk

Числовий(і) Текстовий(А) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і)

ціле 20 15 5 ціле ціле

Хронологія

Номер запису Нова назва Дата створення Код вулиці

Num_H Name_New Date_Create ID_St

Pk   Fk

Числовий(і) Текстовий(А) Дата Числовий(і)

ціле 20 Date ціле

Геометрія

X Y Код вулиці

X_St Y_St ID_St

Fk

Числовий(і) Числовий(і) Числовий(і)

ціле ціле ціле

Об’єкт

Код Назва Тип об’єкта  Номер X Y Код вулиці

Num_Obj Name_Obj Type_Obj Nomer_Obj X_Obj Y_Obj ID_St

Pk      Fk

Числовий(і) Текстовий(А) Текстовий(А) Числовий(і) Числовий(і) Числовий(і) Числовий(і)


.        Зв’язки між сутностями

Далі необхідно визначити зв‘язки між сутностями, які включені до моделі.

Таблиця 2 - Зв’язки між сутностями

Сутність

Тип звязку

Зміст звязку

Район Вулиця

1:М

В одному районі знаходиться багато вулиць, вулиця входить до одного району.

Вулиця Хронологія

1:М

 Вулиця має багато історичних відомостей, історичні відомості притаманні окремій, одній вулиці.

Вулиця Геометрія

1:М

 Вулиця представляє собою складну геометричну фігуру з унікальними координатами, які відповідають тільки одній вулиці.

Вулиця Об’єкт

1:М

На вулиці розташовано багато об’єктів, об’єкт розташований на відповідній вулиці.


.       
Функціональні залежності

Інформаційні об’єкти:

Район (Part) - (ID_Part , Name_Part);

Вулиця(Street) - (ID_St, Name_St, Type_St, Type_Short, Count_St);

Об’єкт(Object) - (Num_Obj, Name_Obj, Type_Obj, X_Obj, Y_Obj);

Хронологія(History) - (Num_H, Name_New, Date_Create);

Геометрія(Geometry) - (X_St, Y_St).

Аналіз даних дозволяє визначити наступі функціональні залежності:

ID_Part ®  Name_Part_St ® Name_St, Type_St, Type_Short, Count_St, ID_Part_Obj ® Name_Obj, Type_Obj, X_Obj, Y_Obj, ID_St

Num_H ® Name_New, Date_Create, ID_St_St, Y_St ® ID_St

.        Опис реалізації проекту бази даних

Oпис реалізації клієнтських застосувань

Створено два застосування з різними правами доступу у програмному середовищі Delphi.

Перше - для адміністратора , з можливістю редагування всіх таблиць БД;

Друге - для користувача “GUEST”, якому встановлено роль “USER1”, права тільки на читання даних з усіх таблиць БД.

Перше застосування призначено для додавання, редагування та видалення даних з усіх таблиць. Друге для перегляду списків таблиць БД.

Опис інтерфейсу розробленої системи, функціональне призначення основних опцій меню

Застосування для адміністратора

1)      Головна форма:

Рисунок 3 - Головна форма застосування

)        Запис нових вулиць та редагування:

Рисунок 4 - Додавання нового запису

)        Перегляд історії перейменувань вулиць :

Рисунок 5 - Перегляд хронології перейменувань вулиць

Застосування для користувача з правами тільки на читання

1)      Головна форма:

Рисунок 6 - Головна форма клієнтського застосування

a.       Використані компоненти для зв’язку з сервером InterBase

Рисунок 7 - Компоненти для зв’язку read_committed з сервером  rec_version

Для зв’язування з сервером використані компоненти вкладки InterBase:

Головний компонент TIBDataBase - TIBDB1 має параметри:

user_name=SYSDBA=masterkey_ctype=WIN1251

Для функціонування застосування використано компонент IBTransaction.

IBTR1 має параметри: read

інформаційний вулиця дані інтерфейс

Висновок

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

·        перегляд записів;

·        внесення записів;

·        редагування записів.

Використана література


1. Горев А., Акаян Р., Макашаринов С. Эффективная работа с СУБД - СГб.: Питер, 1997. - 704 с.

. Гайна Г.А. Методичні вказівки до виконання курсової роботи з дисципліни «Організація баз даних та знань». - КНУБА, 1999. - 34 с.

. Конспект лекцій з баз даних. - 96 с.

Додаток1

Метадані бази даних KIEV_STRET.GDB

SET SQL DIALECT 1;

/* CREATE DATABASE 'C:\Kiev_Street\KIEV_STREET.gdb' PAGE_SIZE 4096CHARACTER SET WIN1251 */

/* Table: GEOMETRY, Owner: SYSDBA */TABLE GEOMETRY

(_STFLOAT,_STFLOAT,_STDOM_FK

);

/* Table: HISTORY, Owner: SYSDBA */TABLE HISTORY

(_HDOM_PK,_NEWDOM_20,_CREATETIMESTAMP,_STDOM_FK,PK_H PRIMARY KEY (NUM_H)

);

/* Table: OBJECT, Owner: SYSDBA */TABLE OBJECT

(_OBJDOM_PK,_OBJDOM_20,_OBJDOM_20,_OBJVARCHAR(10) CHARACTER SET WIN1251,_OBJFLOAT,_OBJFLOAT,_STDOM_FK,PK_OBJ PRIMARY KEY (NUM_OBJ)

);

/* Table: PART, Owner: SYSDBA */TABLE PART

(_PARTDOM_PK,_PARTDOM_20,PK_PART PRIMARY KEY (ID_PART)

);

/* Table: STREET, Owner: SYSDBA */TABLE STREET

(_STDOM_PK,_STDOM_20,_STDOM_TYPE,_SHORTDOM_STYPE,_STINTEGER,_PARTDOM_FK,PK_ST PRIMARY KEY (ID_ST)

);

FROM STREET:SNAME, :STYPE, :SCOUNT;

^PROCEDURE PROC2

(INTEGER

)COUNT(NUM_OBJ)OBJECT:SCOUNT;

^PROCEDURE PROC3

(VARCHAR(20) CHARACTER SET WIN1251,TIMESTAMP,TIMESTAMP

)

(INTEGER

)=0;COUNT(H.NUM_H)HISTORY H INNER JOIN STREET S ON H.ID_ST=S.ID_STNAME_ST=:SNAME AND DATE_CREATE BETWEEN :SFROM AND :STO:SCOUNT;

^PROCEDURE PROC4

(VARCHAR(20) CHARACTER SET WIN1251

)

(FLOAT,FLOAT

)G.X_ST, G.Y_STGEOMETRY G INNER JOIN STREET S ON G.ID_ST=S.ID_STNAME_ST=:SNAME:SX, :SY;

^

SET TERM ; ^WORK;.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);

^TRIGGER TRHISTORY_UPD FOR STREET AFTER UPDATE POSITION 0VARIABLE D DATE;VARIABLE I INTEGER;=GEN_ID(GEN_H,0);='NOW';(NEW.NAME_ST<>OLD.NAME_ST) THENINTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE, HISTORY.ID_ST)(:I, NEW.NAME_ST, :D, NEW.ID_ST);

^WORK ^TERM ;^

/* Grant Roles for this database */

/* Role: ADMINISTRATOR, Owner: SYSDBA */ROLE ADMINISTRATOR;ROLE USER1;

/* Grant permissions for this database */DELETE, INSERT, SELECT, UPDATE, REFERENCES ON GEOMETRY TO ADMINISTRATOR;SELECT ON GEOMETRY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON HISTORY TO ADMINISTRATOR;SELECT ON HISTORY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON OBJECT TO ADMINISTRATOR;SELECT ON OBJECT TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON PART TO ADMINISTRATOR;SELECT ON PART TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON STREET TO ADMINISTRATOR;SELECT ON STREET TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_HISTORY TO ADMINISTRATOR;SELECT ON V_HISTORY TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_OBJ TO ADMINISTRATOR;SELECT ON V_OBJ TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PART TO ADMINISTRATOR;SELECT ON V_PART TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_PCOUNT TO ADMINISTRATOR;SELECT ON V_PCOUNT TO USER1;DELETE, INSERT, SELECT, UPDATE, REFERENCES ON V_ST TO ADMINISTRATOR;SELECT ON V_ST TO USER1;ADMINISTRATOR TO DENNIS;USER1 TO GUEST;EXECUTE ON PROCEDURE PROC1 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC1 TO USER1;EXECUTE ON PROCEDURE PROC2 TO ADMINISTRATOR;EXECUTE ON PROCEDURE PROC2 TO USER1;EXECUTE ON PROCEDURE PROC3 TO ADMINISTRATOR;

/* View: V_HISTORY, Owner: SYSDBA */VIEW V_HISTORY (_H, _NEW, _CREATE, _ST

) ASH.NUM_H, H.NAME_NEW, H.DATE_CREATE, S.NAME_STHISTORY H, STREET SS.ID_ST=H.ID_ST

;WORK;AUTODDL OFF;TERM ^ ;

/* Stored procedures */PROCEDURE PROC1

(VARCHAR(20) CHARACTER SET WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER

)EXIT; END ^PROCEDURE PROC2

(INTEGER

)EXIT; END ^PROCEDURE PROC3

(VARCHAR(20) CHARACTER SET WIN1251,TIMESTAMP,TIMESTAMP

)

(INTEGER

)EXIT; END ^PROCEDURE PROC4

(VARCHAR(20) CHARACTER SET WIN1251

)

(FLOAT,FLOAT

)EXIT; END ^

ALTER PROCEDURE PROC1

(VARCHAR(20) CHARACTER SET WIN1251,VARCHAR(20) CHARACTER SET WIN1251,INTEGER

)

ASNAME_ST, TYPE_ST, COUNT_ST

SET AUTODDL ON;TERM ^;

/* Triggers only will work for SQL triggers */TRIGGER ON_GENH FOR HISTORY BEFORE INSERT POSITION 0.NUM_H = GEN_ID(GEN_H,1);

^TRIGGER ON_GENOBJ FOR OBJECT BEFORE INSERT POSITION 0.NUM_OBJ = GEN_ID(GEN_OBJ,1);

^TRIGGER TRCOUNT FOR OBJECT AFTER INSERT POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER TRCOUNT_U FOR OBJECT AFTER UPDATE POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER TRCOUNT_D FOR OBJECT AFTER DELETE POSITION 0STREETSTREET.COUNT_ST = (SELECT COUNT(OBJECT.NUM_OBJ) FROM OBJECT WHERE STREET.ID_ST=OBJECT.ID_ST);

^TRIGGER ON_GENPART FOR PART BEFORE INSERT POSITION 0.ID_PART = GEN_ID(GEN_PART,1);

^TRIGGER ON_GENST FOR STREET BEFORE INSERT POSITION 0.ID_ST = GEN_ID(GEN_ST,1);

^TRIGGER TRHISTORY_INS FOR STREET AFTER INSERT POSITION 0VARIABLE D DATE;VARIABLE I INTEGER;=GEN_ID(GEN_H,0);='NOW';INTO HISTORY(HISTORY.NUM_H, HISTORY.NAME_NEW, HISTORY.DATE_CREATE,

GRANT EXECUTE ON PROCEDURE PROC3 TO USER1;EXECUTE ON PROCEDURE PROC4 TO ADMINISTRATOR;

GRANT EXECUTE ON PROCEDURE PROC4 TO USER1;

Додаток 2

Програмні модулі Delphi

Застосування для адміністратора

…..…: TForm1;: integer;DataModule1, BD2;

{$R *.dfm}TForm1.N2Click(Sender: TObject);;;TForm1.FormCreate(Sender: TObject);.ActivePage:=TabSheet1;:=0;;TForm1.BitBtn4Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Insert;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn17Click(Sender: TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;

//DM1.PART.Open;;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn19Click(Sender: TObject);(DBEdit3.Text <> '') AND (DBEdit4.Text <> '') AND (DBEdit4.Text <> '')(Combobox1.Text <> '') AND (DBLookupComboBox1.Text <> '') then.STREET.FieldByName('TYPE_ST').AsString:=combobox1.Text;

if combobox1.ItemIndex=0 then DM1.STREET.Fields[3].Value:='âóë'if combobox1.ItemIndex=1 then

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;;TForm1.BitBtn22Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn25Click(Sender: TObject);(DBEdit14.Text <> '') AND (DBEdit15.Text <> '') AND (DBEdit16.Text <> '')(DBLookupComboBox4.Text <> '') then.HISTORY.Post;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;;TForm1.BitBtn24Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn1Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Insert;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn5Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Edit;.PART.Cancel;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.BitBtn7Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Insert;.Visible:=true;.Visible:=true;.Top:=446;.Visible:=true;.Top:=260;;TForm1.N9Click(Sender: TObject);.ActivePage:=TabSheet5;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N10Click(Sender: TObject);:=1;.ShowModal;;TForm1.N11Click(Sender: TObject);:=2;.ShowModal;;TForm1.N12Click(Sender: TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender: TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn6Click(Sender: TObject);.PART.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.PART.Delete;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn2Click(Sender: TObject);DM1.IBTR1.InTransaction then.IBTR1.Commit;Exception do

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;.PART.Active:=false;.PART.Active:=true;TForm1.TabSheet4Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet5Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn36Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Edit;.STREET.Cancel;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.BitBtn28Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn27Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn9Click(Sender: TObject);.OBGECT.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)

then beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Delete;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn34Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn33Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.close;;.BD2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;

…………: TForm2;: integer;BD, DataModule1;

{$R *.dfm}TForm2.FormActivate(Sender: TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2) then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then PageControl1.ActivePage:=TabSheet8if (Form1.TabSheet=4) then PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender: TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;1.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü áóä³âåëü';

end;TForm2.TabSheet8Show(Sender: TObject);.IBProc1.Prepare;.IBProc1.ExecProc;.Panels[1].Text:='Âñüîãî áóä³âåëü: ' + DM1.IBProc1.Parambyname('SCOUNT').AsString;

DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender: TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text <> '') then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender: TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender: TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';

DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';

end;.DataModule1;, Classes, IBDatabase, DB, IBCustomDataSet, IBTable, IBQuery,;= class(TDataModule): TIBDatabase;: TIBTable;: TIBTable;: TDataSource;: TDataSource;: TIBTransaction;: TIBTable;: TIBTable;: TIBTable;: TDataSource;: TDataSource;: TDataSource;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;_H: TIntegerField;_NEW: TIBStringField;_CREATE: TDateTimeField;_ST: TIntegerField;_ST: TIntegerField;_ST: TIBStringField;_ST: TIBStringField;_SHORT: TIBStringField;_ST: TIntegerField;: TStringField;_PART: TIntegerField;_OBJ: TIntegerField;_OBJ: TIBStringField;_OBJ: TIBStringField;_OBJ: TIBStringField;_OBJ: TFloatField;_OBJ: TFloatField;_ST: TIntegerField;: TStringField;_ST: TFloatField;_ST: TFloatField;   DM1.STREET.Fields[3].Value:='ïðîñ'if combobox1.ItemIndex=2 then DM1.STREET.Fields[3].Value:='ïë'

else if combobox1.ItemIndex=3 then DM1.STREET.Fields[3].Value:='áóë'

else if combobox1.ItemIndex=4 then DM1.STREET.Fields[3].Value:='óçâ'

else if combobox1.ItemIndex=5 then DM1.STREET.Fields[3].Value:='ïðîâ';.STREET.Post;.HISTORY.Active:=false;.HISTORY.Active:=true;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.STREET.Active:=false;.STREET.Active:=true;.Refresh;;TForm1.BitBtn18Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn21Click(Sender: TObject);(DBEdit5.Text <> '') AND (DBEdit6.Text <> '') AND (DBEdit8.Text <> '')(DBEdit9.Text <> '') AND (DBEdit10.Text <> '') AND (DBEdit11.Text <> '')(DBLookupComboBox2.Text <> '') then.OBGECT.Post;.STREET.Active:=false;.STREET.Active:=true;

if (MessageDlg('Ïîìèëêà! ³äìîâèòèñü â³ä çì³í?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)DM1.IBTR1.RollbackDM1.IBTR1.Commit;;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;;TForm1.BitBtn20Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn23Click(Sender: TObject);(DBEdit12.Text <> '') AND (DBEdit13.Text <> '')(DBLookupComboBox3.Text <> '') then.GEOMETRY.Post;;TForm1.BitBtn8Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.OBGECT.Edit;.OBGECT.Cancel;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.BitBtn10Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Insert;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn11Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Edit;.GEOMETRY.Cancel;.Visible:=true;.Visible:=true;.Top:=260;;TForm1.BitBtn13Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Insert;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.BitBtn14Click(Sender: TObject);not DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Edit;.HISTORY.Cancel;.Visible:=true;.Visible:=true;.Top:=310;;TForm1.N5Click(Sender: TObject);.ActivePage:=TabSheet1;.Visible:=true;.Visible:=true;.Top:=230;;TForm1.N6Click(Sender: TObject);.ActivePage:=TabSheet2;.Visible:=true;.Visible:=true;.Top:=366;;TForm1.N7Click(Sender: TObject);.ActivePage:=TabSheet3;.Visible:=true;.Visible:=true;.Top:=446;;TForm1.N8Click(Sender: TObject);.ActivePage:=TabSheet4;.Visible:=true;.Refresh;.Visible:=false;;TForm1.BitBtn26Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn16Click(Sender: TObject);(DBEdit1.Text <> '') AND (DBEdit2.Text <> '') then.PART.Post;

on Exception do showmessage('Íåêîðêòíî çàïîâíåí³ ïîëÿ!');;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

DM1.PART.Active:=false;.PART.Active:=true;.Refresh;;TForm1.BitBtn3Click(Sender: TObject);.STREET.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.STREET.Delete;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.TabSheet1Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.PART.Active:=false;.PART.Active:=true;.Refresh;.Visible:=false;.Visible:=true;.Top:=230;;TForm1.TabSheet2Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.STREET.Active:=false;.STREET.Active:=true;.Refresh;.Visible:=false;;TForm1.TabSheet3Show(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.IBTR1.StartTransaction;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;.OBGECT.Active:=false;.OBGECT.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn12Click(Sender: TObject);.GEOMETRY.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)

then beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.GEOMETRY.Delete;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn30Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn29Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.GEOMETRY.Active:=false;.GEOMETRY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn15Click(Sender: TObject);.HISTORY.Cancel;

if (MessageDlg('Òî÷íî âèäàëèòè çàïèñ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)beginnot DM1.IBTR1.InTransaction then DM1.IBTR1.StartTransaction;.HISTORY.Delete;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=true;.Visible:=false;.Top:=40;;;TForm1.BitBtn32Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Commit;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn31Click(Sender: TObject);DM1.IBTR1.InTransaction then DM1.IBTR1.Rollback;.HISTORY.Active:=false;.HISTORY.Active:=true;.Refresh;.Visible:=false;;TForm1.BitBtn35Click(Sender: TObject);.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;.IBProc2.ExecProc;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;

StatusBar2.Panels[1].Text:='Çíàéäåíî: ' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

end;TForm2.TabSheet1Show(Sender: TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;

DBGRID2.Columns[0].Title.Caption:='Íîìåð çàïèñó';.Columns[1].Title.Caption:='Íîâà íàçâà';.Columns[2].Title.Caption:='Äàòà ñòâîðåííÿ';

DBGRID2.Columns[3].Title.Caption:='Ïîòî÷íà íàçâà';

end;TForm2.Button3Click(Sender: TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select * from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;

else showmessage('Ââåä³òü äàí³');

end;TForm2.Button2Click(Sender: TObject);.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;TForm2.Button4Click(Sender: TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');_ST: TIntegerField;: TStringField;: TStringField;_PART: TIntegerField;_PART: TIBStringField;: TDataSource;: TDataSource;: TIBStoredProc;: TIBStoredProc;: TIBQuery;: TIBQuery;: TIBQuery;: TDataSource;: TDataSource;: TDataSource;: TDataSource;: TIBQuery;IBDB1AfterConnect(Sender: TObject);

{ Private declarations }

{ Public declarations };: TDM1;

{$R *.dfm}.

Застосування для користувача з правами тільки на читання даних

unit BD;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, Grids, DBGrids, Menus, ExtCtrls, StdCtrls, Buttons,, Mask;

……………: TForm1;: integer;DataModule1, BD2;

{$R *.dfm}TForm1.N2Click(Sender: TObject);;;TForm1.FormCreate(Sender: TObject);.ActivePage:=TabSheet1;:=0;.Align:=AlRight;;TForm1.N10Click(Sender: TObject);:=1;.ShowModal;;TForm1.N11Click(Sender: TObject);:=2;.ShowModal;;TForm1.N12Click(Sender: TObject);:=3;.ShowModal;;TForm1.TabSheet: integer;:=n;;TForm1.N13Click(Sender: TObject);:=4;.ShowModal;;TForm1.N14Click(Sender: TObject);:=5;.ShowModal;;TForm1.BitBtn35Click(Sender: TObject);.close;;..IBProc2.ExecProc;ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;

StatusBar2.Panels[1].Text:='Çíàéäåíî: ' + DM1.IBProc2.Parambyname('SCOUNT').AsString;.IBProc2.Cancel;.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY where NAME_ST=:NEW');not DM1.IBQ7.prepared then DM1.IBQ7.prepare;.IBQ7.ParamByName('NEW').AsString:=edit3.Text;.IBQ7.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ')end;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;.Clear;.Clear;.Clear;

else showmessage('Çàïîâí³òü âñ³ ïîëÿ');

end;TForm2.TabSheet1Show(Sender: TObject);.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;D2.Columns[0].Title.Caption:='Íîìåð çàïèñó';.Columns[1].Title.Caption:='Íîâà íàçâà';.Columns[2].Title.Caption:='Äàòà ñòâîðåííÿ';.Columns[3].Title.Caption:='Ïîòî÷íà íàçâà';

end;TForm2.Button3Click(Sender: TObject);(edit9.text <> '') then.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select * from PROC4(:NEW)');.IBQ6.ParamByName('NEW').AsString:=edit9.Text;.IBQ6.Open;

except ShowMessage('Íå êîðåêòíî ââåäàíà ³íôîðìàö³ÿ');.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Clear;

else showmessage('Ââåä³òü äàí³');

end;TForm2.Button2Click(Sender: TObject);.IBQ6.SQL.Clear;.IBQ6.SQL.Text:=('select G.X_ST, G.Y_ST, S.NAME_ST from STREET S, GEOMETRY G where S.ID_ST=G.ID_ST');.IBQ6.Open;.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;;BD2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, StdCtrls;

…………..: TForm2;: integer;BD, DataModule1;

{$R *.dfm}TForm2.FormActivate(Sender: TObject);(Form1.TabSheet=1) then.ActivePage:=TabSheet6;if (Form1.TabSheet=2) then PageControl1.ActivePage:=TabSheet7if (Form1.TabSheet=3) then PageControl1.ActivePage:=TabSheet8if (Form1.TabSheet=4) then PageControl1.ActivePage:=TabSheet1PageControl1.ActivePage:=TabSheet2;;TForm2.TabSheet7Show(Sender: TObject);.IBQ5.SQL.Clear;.IBQ5.SQL.Add('select * FROM proc1');.IBQ5.Open;.IBQ5.Active:=false;.IBQ5.Active:=true;.Refresh;.IBQ3.Active:=false;.IBQ3.Active:=true;.Refresh;.Columns[0].Title.Caption:='Âóëèöÿ';.Columns[1].Title.Caption:='Òèï';.Columns[2].Title.Caption:='ʳëüê³ñòü áóä³âåëü';

end;TForm2.TabSheet8Show(Sender: TObject);.IBProc1.Prepare;.IBProc1.ExecProc;

StatusBar9.Panels[1].Text:='Âñüîãî áóä³âåëü: ' + DM1.IBProc1.Parambyname('SCOUNT').AsString;

DM1.IBProc1.Cancel;.IBQ4.Active:=false;.IBQ4.Active:=true;.Refresh;;TForm2.Button1Click(Sender: TObject);(edit3.text <> '') and (edit2.text <> '') and (edit1.text <> '') then.IBProc2.ParamByName('SNAME').Value:=edit3.Text;.IBProc2.ParamByName('SFROM').Value:=edit2.Text;.IBProc2.ParamByName('STO').Value:=edit1.Text;.IBProc2.Prepare;TForm2.Button4Click(Sender: TObject);.Panels[1].Text:='';.IBQ7.SQL.Clear;.IBQ7.SQL.Text:=('select * from V_HISTORY');.IBQ7.Open;.IBQ7.Active:=false;.IBQ7.Active:=true;.Refresh;;TForm2.TabSheet6Show(Sender: TObject);.IBQ1.Active:=false;.IBQ1.Active:=true;.IBQ2.Active:=false;.IBQ2.Active:=true;.Refresh;.Refresh;;TForm2.TabSheet2Show(Sender: TObject);.IBQ6.Active:=false;.IBQ6.Active:=true;.Refresh;.Columns[0].Title.Caption:='X';.Columns[1].Title.Caption:='Y';

DBGRID4.Columns[2].Title.Caption:='Âóëèöÿ';

end;

end

Похожие работы на - Розробка інформаційної системи відомостей про вулиці м. Києва

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!