Анализ связей между сущностями




Связь позволяет моделировать отношения между объектами предметной области. Наименование связи должно быть уникально во всей модели.

Существует 4 типа связей:

1. «Один-к-одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, и наоборот. (Рисунок 1.1)

Рисунок 1.1 – Один-к-одному.

2. «Один-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, но любому экземпляру сущности В соответствует только один экземпляр сущности А. (Рисунок 1.2)

Рисунок 1.2 – Один-ко-многим.

 

3. «Многие-к-одному» - любому экземпляру сущности А соответствует только один экземпляр сущности В, но любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. (Рисунок 1.3)

Рисунок 1.3 – Многие-к-одному.

4. «Многие-ко-многим» - любому экземпляру сущности А соответствует 0, 1 или несколько экземпляров сущности В, и любому экземпляру сущности В соответствует 0, 1 или несколько экземпляров сущности А. (Рисунок 1.4)

Рисунок 1.4 – Многие-ко-многим.

 


 

Технология разработки приложения

Создание псевдонима

Алиас заменен на функцию которая принимает значение имени базы и привязывает к нужной таблице.

Структура таблиц

 

Таблица2.1 –Отраслевая деятельность.

Атрибут Тип Описание
Наименование организации Text Наименование организации
Отраслевая деятельность Text Отраслевая деятельность
Вид продукта Text Вид продукта
Оперативная информация Text Оперативная информация
Преобретается Text Преобретается
Продается Text Продается

 

Таблица 2.2 –Расценки.

Атрибут Тип Описание
Название организации Text Название организации
Кол-во предприятий Short Кол-во предприятий
Страна Text Страна
Город Text Город
Точный адрес Text Точный адрес
Телефон Text Телефон
Факс Text Факс
Дата регистрации date Дата регистрации

 

Таблица 2.3 –Рекламодатели.

Атрибут Тип Описание
Наименование Text Наименование
Дата Date Дата

 

Описание экранных форм

В разработке форм ввода вывода данных использовались следующие компоненты Delphi:

1. Form – компонент-форма для отображения всех компонентов ввода вывода,

2. DBEdit – компонент-окно ввода информации,

3. DBComboBox – компонент выпадающий список для ввода информации,

4. DBGrid – компонент-таблица для вывода информации,

5. Label – компонент-метка для отображения названия окон ввода информации,

6. DateTimePicker – компонент-календарь для ввода даты,

7. Button – компонент-кнопка для вызова событий ввода информации.

Навигация по модулям приложения осуществляется посредством меню модуля Main. Интерфейс разработанных модулей можно отнести к стандартному интерфейсу Windows.

Для добавления, редактирования и удаления данных применяются формы с элементами управления модулей В каждой форме присутствуют таблицы базы данных, которые отображают информацию в виде сетки. На формах можно редактировать, добавлять и удалять записи с использованием навигационного интерфейса DBNavigator .

В таблице 2.4 Приведено описание каждой из кнопок данного элемента.

Таблица 2.4 - Кнопки компонента DBNavigator

Кнопка Назначение Действие
К первой Указатель текущей записи перемещается к первой записи файла данных
К предыдущей Указатель текущей записи перемещается к предыдущей записи файла данных
К следующей Указатель текущей записи перемещается к следующей записи файла данных
К последней Указатель текущей записи перемещается к последней записи файла данных
Добавить В файл данных добавляется новая запись
Удалить Удаляется текущая запись файла данных
Редактирование Устанавливает режим редактирования текущей записи
Сохранить Изменения, внесенные в текущую запись, записываются в файл данных
Отменить Отменяет внесенные в текущую запись изменения
Обновить Записывает внесенные изменения в файл

2.4 Интерфейс пользователя

Тип проекта - клиент-серверный. Клиентская часть разработана в среде быстрой разработки приложений Delphi 7. Серверная часть реализована в СУБД Paradox.

При разработке АИС учета документооборота предприятия использовался метод объектно-ориентированного программирования. Разработка программы велась с использованием в качестве объектов готовых компонент ввода вывода данных Delphi 7, связь и отображение данных сервера осуществляется посредством следующих компонентов вкладки BDE:

1. Компонент Database, с помощью этого компонента настраивается подключение к БД.

2. Table соединяется с компонентом базой с помощью настройки свойства DatabaseName. Компонент предназначен для получения набора записей из таблицы БД, которая записана в свойство TableName;

3. DataSource – компонент является промежуточным звеном между Table и DBGrid. Связан с Table свойством DataSet.

4. DBGrid – компонент отображает таблицу БД. Связан с DataSource свойством DataSource.
При запуске программы появляется главная форма программы. Данная форма является основной. На ней находится вся функциональная часть. Рис.2.1.

 

Рис. 2.1 – Начало программы.

Рис. 2.1 – Основная часть.

Тестовый пример США

 

Сортировка по стране- рис 2.3.

Рис. 2.3 – Сортировка по стране.

Найдем все записи где страна равна «СшА». Рис. 2.4.

Рис. 2.4–Фильтр.

Поиск успешно выполнен.

 


2.5Листингпрограммы

unit Unit1;

 

interface

 

uses

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

Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, Menus, XPMan, ExtCtrls,

DBCtrls, ImgList, TeeProcs, TeEngine, Chart, DbChart, Series;

 

type

TForm1 = class(TForm)

ComboBox1: TComboBox;

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

DBNavigator1: TDBNavigator;

Label1: TLabel;

ComboBox2: TComboBox;

Button1: TButton;

N10: TMenuItem;

N11: TMenuItem;

Edit1: TEdit;

Button2: TButton;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button3: TButton;

N12: TMenuItem;

Label5: TLabel;

Label6: TLabel;

N13: TMenuItem;

DBChart1: TDBChart;

Series1: TBarSeries;

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedureFormCreate(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure N13Click(Sender: TObject);

procedureFormClose(Sender: TObject; var Action: TCloseAction);

procedure N7Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

uses Unit2;

 

{$R *.dfm}

 

procedureConnectToBase(var Table: TTable; NameBase: string; IndexBox: TComboBox;

NameBox: TComboBox; Grid: TDBGrid; DataSoure: TDataSource; DBNavigator: TDBNavigator);

var i: Byte;

ConnectPuth: string;

begin

ConnectPuth:='';

with Table do

begin

if Active then Active:=not Active;

ConnectPuth:=extractfilepath(application.exename)+'db\'+NameBase;

TableName:=ConnectPuth;

 

IndexDefs.Update;

IndexBox.Clear;

IndexBox.Text:= 'Индексы для сортировки';

NameBox.Clear;

NameBox.Text:= 'Выберите парметр Фильтра';

for i:=0 to IndexDefs.Count-1 do

IndexBox.Items.Add(IndexDefs[i].Name);

DataSoure.DataSet:=Table;

Active:=not Active;

end;

DBNavigator.DataSource:=DataSoure;

Grid.DataSource:=DataSoure;

for i:=0 to Grid.Columns.Count-1 do

NameBox.Items.Add(Grid.Fields[i].DisplayName);

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

ConnectToBase(DataModule2.table1, 'Наименование.db', ComboBox1, ComboBox2, DBGrid1, DataModule2.DataSource1, DBNavigator1);

DBGrid1.Hint:='';

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

ConnectToBase(DataModule2.table2, 'Отраслеваядеятельность.db', ComboBox1, ComboBox2, DBGrid1, DataModule2.DataSource2, DBNavigator1);

DBGrid1.Hint:='';

end;

 

procedure TForm1.N5Click(Sender: TObject);

begin

ConnectToBase(DataModule2.table3, 'Квартальныйотчет.db', ComboBox1, ComboBox2, DBGrid1, DataModule2.DataSource3, DBNavigator1);

DBGrid1.Hint:='';

end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

Label5.Visible:= not Label5.Visible;

ComboBox1.Visible:= not ComboBox1.Visible;

end;

 

procedure TForm1.N11Click(Sender: TObject);

begin

ComboBox2.Visible:= not ComboBox2.Visible;

Edit1.Visible:= not Edit1.Visible;

Button1.Visible:= not Button1.Visible;

Button2.Visible:= not Button2.Visible;

Label6.Visible:= not Label6.Visible;

end;

 

procedure TForm1.N6Click(Sender: TObject);

begin

DBGrid1.Visible:= not DBGrid1.Visible;

DBNavigator1.Visible:= not DBNavigator1.Visible;

Label1.Visible:= not Label1.Visible;

Label2.Visible:= not Label2.Visible;

 

Label3.Visible:= not Label3.Visible;

Label4.Visible:= not Label4.Visible;

Button3.Visible:= not Button3.Visible;

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

N6Click(Sender);

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

if DBGrid1.DataSource=nil then DBGrid1.Hint:='Нужновыбратьтаблицу'

else DBGrid1.Hint:='';

Form1.Caption:='Информационоеагенство';

DBChart1.Width:=Form1.Width-8;

end;

 

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

if DBGrid1.DataSource=DataModule2.DataSource1 then begin

if DataModule2.Table1.Active then

DataModule2.Table1.Active:= not DataModule2.Table1.Active;

DataModule2.Table1.IndexName:=ComboBox1.Text;

DataModule2.Table1.Active:= not DataModule2.Table1.Active;

end

else if DBGrid1.DataSource=DataModule2.DataSource2 then begin

if DataModule2.Table2.Active then

DataModule2.Table2.Active:= not DataModule2.Table2.Active;

DataModule2.Table2.IndexName:=ComboBox1.Text;

DataModule2.Table2.Active:= not DataModule2.Table2.Active;

end

else begin

if DataModule2.Table3.Active then

DataModule2.Table3.Active:= not DataModule2.Table3.Active;

DataModule2.Table3.IndexName:=ComboBox1.Text;

DataModule2.Table3.Active:= not DataModule2.Table3.Active;

end;

if ComboBox1.Text='' then ComboBox1.Text:='Индексыдлясортировки';

 

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

name_kolonka: Integer;

seach_value: string;

begin

if DBGrid1.DataSource=DataModule2.DataSource1 then begin

name_kolonka:=ComboBox2.ItemIndex;

casename_kolonka of

{'id'}0: begin DataModule2.Table1.IndexName:=''; ComboBox2.Text:='Индексыдлясортировки'; ComboBox2.ItemIndex:=-1; end;

{'Названиеорганизации'}1: DataModule2.Table1.IndexName:='NameOrg';

{'Кол-во'}2: DataModule2.Table1.IndexName:='Count';

{'Страна'}3: DataModule2.Table1.IndexName:='Country';

 

{'Город'}4: DataModule2.Table1.IndexName:='City';

{'Точныйадрес'}5: DataModule2.Table1.IndexName:='Adress';

{'Телефон'}6: DataModule2.Table1.IndexName:='Phone';

{'Факс'}7: DataModule2.Table1.IndexName:='Fax';

{'Датарегистрации'}8: DataModule2.Table1.IndexName:='DateReg';

elseshowmessage('Не выбран параметр');

end;

seach_value:=edit1.text;

ifseach_value<>'' then begin

with DataModule2.Table1 do

begin

CancelRange;

SetRange([seach_value],[seach_value]);

end; end

elseshowmessage('Невыбранпараметр');

{отменаФильтрации}

end else

if DBGrid1.DataSource=DataModule2.DataSource2 then begin

name_kolonka:=ComboBox2.ItemIndex;

casename_kolonka of

{'id'}0: begin DataModule2.Table2.IndexName:=''; ComboBox2.Text:='Индексыдлясортировки'; ComboBox2.ItemIndex:=-1; end;

{'Наименованиеорганизации'}1: DataModule2.Table2.IndexName:='NameOrg';

{'Отраслеаядеятельность'}2: DataModule2.Table2.IndexName:='SectoralActivities';

{'Видпродукта'}3: DataModule2.Table2.IndexName:='TypeOfProduct';

{'Опер. инф.'}4: DataModule2.Table2.IndexName:='OperationalInformation';

{'Преобретается'}5: DataModule2.Table2.IndexName:='Purchased';

{'Продается'}6: DataModule2.Table2.IndexName:='Sale';

 

elseshowmessage('Не выбран параметр');

end;

seach_value:=edit1.text;

ifseach_value<>'' then begin

with DataModule2.Table2 do

begin

CancelRange;

SetRange([seach_value],[seach_value]);

end; end

elseshowmessage('Невыбранпараметр');

{отменаФильтрации}

end else

if DBGrid1.DataSource=DataModule2.DataSource3 then begin

name_kolonka:=ComboBox2.ItemIndex;

casename_kolonka of

{'id'}0: begin DataModule2.Table3.IndexName:=''; ComboBox2.Text:='Индексыдлясортировки'; ComboBox2.ItemIndex:=-1; end;

{'Наименование'}1: DataModule2.Table3.IndexName:='Name';

{'Дата'}2: DataModule2.Table3.IndexName:='Date';

elseshowmessage('Не выбран параметр');

end;

seach_value:=edit1.text;

ifseach_value<>'' then begin

with DataModule2.Table3 do

begin

CancelRange;

SetRange([seach_value],[seach_value]);

end; end

 

elseshowmessage('Невыбранпараметр');

{отменаФильтрации}

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Clear;

ComboBox2.ItemIndex:=-1;

ComboBox2.Text:='ВыберитепарметрФильтра';

if DBGrid1.DataSource=DataModule2.DataSource1 then

DataModule2.Table1.CancelRange

else if DBGrid1.DataSource=DataModule2.DataSource2 then

DataModule2.Table2.CancelRange

else if DBGrid1.DataSource=DataModule2.DataSource3 then

DataModule2.Table3.CancelRange

end;

 

procedure TForm1.N12Click(Sender: TObject);

begin

TransparentColorValue:=clCream;

Form1.TransparentColor:= not Form1.TransparentColor;

end;

 

procedure TForm1.N13Click(Sender: TObject);

begin

DBChart1.Visible:=not DBChart1.Visible;

DataModule2.Table1.First;

DBChart1.Series[0].Clear;

while not DataModule2.Table1.Eof do begin

DBChart1.Series[0].Add(DataModule2.Table1.FieldValues['Кол-вопредприятий'],DataModule2.Table1.FieldValues['Названиеорганизации']);

DataModule2.Table1.Next;

end;

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

ifMessageDlg('Выдействительнохотитепокинутьпрограмму',mtConfirmation,[mbYes,mbNo],0)= mrYes then

ifMessageDlg('Выточноуверены',mtConfirmation,[mbYes,mbNo],0)= mrYes then

ifMessageDlg('Я не уверен, что вы уверены, а вы уверены что уверены',mtConfirmation,[mbYes,mbNo],0)= mrYesthen

begin

MessageBox(Handle, PChar('Ну ладно выпущу вас'), PChar('Добрая программа'), MB_ICONERROR+MB_OK);

end

else begin MessageBox(Handle, PChar('Я так и знал'), PChar('Добраяпрограмма'), MB_ICONINFORMATION+MB_OK); Action:= caNone end

else begin MessageBox(Handle, PChar('Нувотвидите, а выхотелиещевыйти'), PChar('Добраяпрограмма'), MB_ICONINFORMATION+MB_OK); Action:= caNone end

else begin MessageBox(Handle, PChar('Ну и правильноячем я хужедругих'), PChar('Добраяпрограмма'), MB_ICONWARNING+MB_OK); Action:= caNone end;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

end

Заключение

 

В результате выполнения курсового проектирования было разработано приложение по работе базами «Информационое агентство»

Приложение былоразработано в среде разработки Delphi 7.0, в качестве СУБД выбрана Paradox. При написании программы было уделено внимание удобству работы пользователя и построению дружественного интерфейса. Программа обладает развитым графическим интерфейсом. Также внимание уделялось на работу с псевдонимами.

Цель работы по созданию приложения «Информационое агентство» выполнена.

 


Список литературы

1. Кузнецов С.Д. Основы современных баз данных // Системы управления базами данных. — 1995. — №№ 1–5.

2. Чудинов И.Л. Организация баз данных: Учебное пособие. — Томск: ТУСУР, 2000. — 89 с.

3. Матрин Дж. Организация баз данных в вычислительных системах. — М.: Мир, 1980.

4. U. Dayal et al. Third Generation TP Monitors: A Database Challenge. — Proceeding of the 1993 ACM SIGMOD, 394.

5. J. Melton and A. Simon, Understanding the New SQL: A Complete Guide (San Francisco: Morgan Kaufmann Publishers, 1992), 39–40.

6. Саймон А.Р. Стратегические технологии баз данных: менеджмент на 2000 год. — М.: Финансы и статистика, 1999. — 479 с.

7. Атре Ш. Структурный подход к организации баз данных. — М.: Финансы и статистика, 1983.

8. E.F. Codd. «A Relational Model of Data for Large Shared Data Banks», Communications of the ACM (June 1970).

9. Кодд Э.Ф. Реляционная модель данных для больших, совместно используемых банков данных. // Системы управления базами данных. — 1995. — № 1. — С. 145–160.

10. Дейт, К. Дж. Введение в системы баз данных. — Киев, М.: Диалектика, 1998. — 784 с.

11. Мишель Пуле. Четыре грани целостности // https://www.osp.ru/ win2000/sql/2000/01/010.htm

12. Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. — М.: Финансы и статистика, 1998.

13. CASE-Технологии // https://case-tech.h1.ru

14. Марк Ривкин, новые возможности oracle 9.2 // «Открытые системы». — 2002. — №11.

15. Попов А.А. Программирование в среде СУБД FoxPro 2.0. Построение систем обработки данных. — Киев: ТОО "ВЕК"; М.: Радио и связь, 1995. — 352 с.

16. В. Кирстен, М. Ирингер и др. СУБД Cache'. Объектно-ориентированная разработка приложений. — Питер, 2001.

 

 


 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-31 Нарушение авторских прав и Нарушение персональных данных


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