Разработка приложений с использованием API Ingres
Разработка интерактивных приложений
Редактор форм, библиотека VCL
События, обработчики
Файл заголовка формы
Файл кода формы
Файл головного модуля приложения
Соединение с сервером базы данных
Применяемые типы данных
Получение данных
Получение данных
Получение данных с передачей параметра
Получение данных с передачей параметра
Получение данных с передачей параметра (продолжение)
Получение данных с заполнением списка
Получение данных с заполнением списка
Получение данных с заполнением списка (продолжение)
Обновление данных
Заполнение таблицы
Организация массива данных
Заполнение таблицы
Использование массива
Работа с изображениями
557.50K

Разработка приложений с использованием API Ingres. Тема 7

1. Разработка приложений с использованием API Ingres

Проектирование и разработка программного обеспечения интегрированных систем управления
Разработка приложений с
использованием API Ingres
Шевченко А. В.
Разработка приложений с использованием API Ingres
1

2.

Проектирование и разработка программного обеспечения интегрированных систем управления
Программирование приложений интегрированных систем
• клиент-сервер
• трехзвенная архитектура
• WEB-приложения
Приложение
База данных
Интерфейс
БД
• API
• встроенные языки
• стандартные интерфейсы
Шевченко А. В.
Логика
функциональной
задачи
Пользовательский
интерфейс
• C++
• JAVA
• специальные
Разработка приложений с использованием API Ingres
• Windows
• X-Window (UNIX)
2

3.

Проектирование и разработка программного обеспечения интегрированных систем управления
Разработка объектно-ориентированных приложений
Концептуальный
дизайн
Разработка пользовательского
интерфейса, интерфейса БД,
определение состава модулей,
классов и методов
.h
.h.h
Кодирование
.h.h
.cpp
Компиляция
Библиотеки
.h.h
.lib
Шевченко А. В.
Написание программного кода
для классов и методов
Трансляция кода с языка
программирования в объектный
код
.h.h
.obj
Построение
.exe
Отладка
Разработка приложений с использованием API Ingres
«Сборка» приложения в
исполняемый файл
Тестирование приложения
3

4.

Проектирование и разработка программного обеспечения интегрированных систем управления
Разработка приложений в среде Borland C++ Builder
Управление
проектом
Дизайнер
форм
Библиотека
компонентов
Редактор
кода
Отладчик
Шевченко А. В.
Введение. Понятие базы данных
4

5. Разработка интерактивных приложений

Проектирование и разработка программного обеспечения интегрированных систем управления
Разработка интерактивных приложений
Головной модуль
Модуль формы
Форма
Шевченко А. В.
Разработка приложений с использованием API Ingres
5

6. Редактор форм, библиотека VCL

Проектирование и разработка программного обеспечения интегрированных систем управления
Редактор форм, библиотека VCL
Файл WindowsAppForm.dfm
Объект
Свойства
Шевченко А. В.
object MainForm: TMainForm
Left = 591
Top = 367
Width = 314
Height = 132
Caption = 'MainForm'
...
object Label2: TLabel
Left = 64
Top = 16
...
Caption = 'Hello, world!'
...
end
object Label1: TLabel
Left = 62
Top = 14
...
Caption = 'Hello, world!'
...
end
object CloseButton: TButton
Left = 112
Top = 64
...
Caption = 'OK'
...
end
end
Разработка приложений с использованием API Ingres
6

7. События, обработчики

Проектирование и разработка программного обеспечения интегрированных систем управления
События, обработчики
Объект
Компонент
Обработчик
Событие
Шевченко А. В.
Разработка приложений с использованием API Ingres
7

8. Файл заголовка формы

Проектирование и разработка программного обеспечения интегрированных систем управления
Файл заголовка формы
Файл WindowsAppForm.h
#ifndef WindowsAppFormH
#define WindowsAppFormH
Класс
компонента
#include
#include
#include
#include
<Classes.hpp>
<Controls.hpp>
<StdCtrls.hpp>
<Forms.hpp>
Указатель на
объект
class TMainForm : public TForm
{
__published:
// IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TButton *CloseButton;
void __fastcall ButtonOKClick(TObject *Sender);
private: // User declarations
Декларация
public:
// User declarations
обработчика
__fastcall TMainForm(TComponent* Owner);
};
extern PACKAGE TMainForm *MainForm;
#endif
Шевченко А. В.
Разработка приложений с использованием API Ingres
8

9. Файл кода формы

Проектирование и разработка программного обеспечения интегрированных систем управления
Файл кода формы
Файл WindowsAppForm.cpp
#include <vcl.h>
#pragma hdrstop
Включение
заголовка
#include "WindowsAppForm.h"
#pragma resource "*.dfm"
TMainForm *MainForm;
__fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner)
{
}
void __fastcall TMainForm::ButtonOKClick(TObject *Sender)
{
Close();
}
Реализация
обработчика
Шевченко А. В.
Разработка приложений с использованием API Ingres
9

10. Файл головного модуля приложения

Проектирование и разработка программного обеспечения интегрированных систем управления
Файл головного модуля приложения
Файл WindowsApp.cpp
#include <vcl.h>
#pragma hdrstop
USEFORM("WindowsAppForm.cpp", MainForm);
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
Создание
try
формы
{
Application->Initialize();
Application->CreateForm(__classid(TMainForm), &MainForm);
Application->Run();
}
catch(Exception &exception)
Цикл
{
обработки
Application->ShowException(&exception);
сообщений
}
return(0);
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
10

11. Соединение с сервером базы данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Соединение с сервером базы данных
Connection
DB;
__fastcall TMainForm::TMainForm(TComponent* Owner) :
TForm(Owner)
{
if(!DB.Open())
{
UI.Error("Ошибка соединения с Ingres!");
return;
}
DDS.Init();
}
void __fastcall TMainForm::FormClose(TObject *Sender,
TCloseAction &Action)
{
DB.Close();
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
11

12. Применяемые типы данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Применяемые типы данных
DTInt1
a;
// integer1
DTInt2
b;
// integer2
DTInt4
c;
// integer4
DTFloat4
d;
// float4
DTFloat8
e;
// float8
DTString
f;
// char, varchar
DTTime
g;
// ingresdate
DTMoney
h;
// money
DTRaw
i;
// longbyte
Шевченко А. В.
Разработка приложений с использованием API Ingres
12

13. Получение данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных
TEdit : dbname_fl
OnClick : QueryExecute
Шевченко А. В.
Разработка приложений с использованием API Ingres
13

14. Получение данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных
void __fastcall TMainForm::QueryExecute(TObject *Sender)
{
DTString dbname;
DB.OutPar(dbname);
DB.Query("select dbmsinfo('database')");
UI.SET(dbname_fl) = dbname;
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
14

15. Получение данных с передачей параметра

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с передачей параметра
OnKeyPress : NumOrderEnter
TEdit : number_fl
TEdit
TEdit
TEdit
TEdit
Шевченко А. В.
Разработка приложений с использованием API Ingres
:
:
:
:
code_fl
name_fl
total_fl
date_fl
15

16. Получение данных с передачей параметра

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с передачей параметра
void __fastcall TMainForm::NumOrderEnter(TObject *Sender, char &Key)
{
if(Key != VK_RETURN) return;
DTInt2 number = UI.Get(number_fl);
DTString
DTString
DTMoney
DTTime
code;
name;
total;
date;
DB.InpPar(number);
DB.OutPar(code, name, total, date);
DB.Query("select o.code, c.name, o.total, o.date from orders o "
"join client c using(client_id) where o.number = ~V ");
Шевченко А. В.
Разработка приложений с использованием API Ingres
16

17. Получение данных с передачей параметра (продолжение)

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с передачей параметра (продолжение)
DB.InpPar(number);
DB.OutPar(code, name, total, date);
DB.Query("select o.code, c.name, o.total, o.date from orders o "
"join client c using(client_id) where o.number = ~V ");
if(DB.rows == 0)
{
UI.Warning("Заказ не найден!");
return;
}
UI.SET(code_fl)
UI.SET(name_fl)
UI.SET(total_fl)
UI.SET(date_fl)
=
=
=
=
code;
name;
total^"%.2f";
date^"%D";
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
17

18. Получение данных с заполнением списка

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с заполнением списка
TComboBox : status_op
Style = csDropDownList
OnClick : OrderUpdate
Шевченко А. В.
Разработка приложений с использованием API Ingres
18

19. Получение данных с заполнением списка

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с заполнением списка
void __fastcall TMainForm::NumOrderEnter(TObject *Sender, char &Key)
{
if(Key != VK_RETURN) return;
DTInt2 number = UI.Get(number_fl);
DTString
DTString
DTMoney
DTTime
DTInt1
code;
name;
total;
date;
stat;
DB.InpPar(number);
DB.OutPar(code, name, total, date, stat);
DB.Query("select o.code, c.name, o.total, o.date, o.stat "
"from orders o join client c using(client_id) "
"where o.number = ~V ");
Шевченко А. В.
Разработка приложений с использованием API Ingres
19

20. Получение данных с заполнением списка (продолжение)

Проектирование и разработка программного обеспечения интегрированных систем управления
Получение данных с заполнением списка (продолжение)
DB.InpPar(number);
DB.OutPar(code, name, total, date, stat);
DB.Query("select o.code, c.name, o.total, o.date, o.stat "
"from orders o join client c using(client_id) "
"where o.number = ~V ");
if(DB.rows == 0)
{
UI.Warning("Заказ не найден!");
return;
}
UI.List(stat_op, DDS.Domain["order_stat"]);
UI.SET(code_fl)
UI.SET(name_fl)
UI.SET(total_fl)
UI.SET(date_fl)
UI.SET(stat_op)
=
=
=
=
=
code;
name;
total^"%.2f";
date^"%D";
stat;
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
20

21. Обновление данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Обновление данных
void __fastcall TMainForm::OrderUpdate(TObject *Sender)
{
DTInt2 number = UI.Get(number_fl);
DTString code = UI.Get(code_fl);
DTMoney total = UI.Get(total_fl);
DTTime date
= UI.Get(date_fl);
DTInt1 stat
= UI.Get(stat_op);
DB.InpPar(code, total, date, stat, number);
DB.Query("update orders set code = ~V , total = ~V , date = ~V , "
"stat = ~V where number = ~V ");
if(DB.rows == 1)
{
DB.Commit();
UI.Information(number^"Заказ %d обновлен.");
}
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
21

22. Заполнение таблицы

Проектирование и разработка программного обеспечения интегрированных систем управления
Заполнение таблицы
TListView : orders_vp
ViewStyle = vsReport
OnClick : ListOfOrders
Шевченко А. В.
Разработка приложений с использованием API Ingres
22

23. Организация массива данных

Проектирование и разработка программного обеспечения интегрированных систем управления
Организация массива данных
struct OrdSt : public DTStructure
{
DTInt2
number;
DTString
code;
DTString
name;
DTMoney
total;
DTTime
date;
DTInt1
stat;
};
DTArray<OrdSt> orders;
Шевченко А. В.
Разработка приложений с использованием API Ingres
23

24. Заполнение таблицы

Проектирование и разработка программного обеспечения интегрированных систем управления
Заполнение таблицы
void __fastcall TMainForm::ListOfOrders(TObject *Sender)
{
orders.Clear();
DB.OutArr(orders);
DB.OutPar(orders[0].number, orders[0].code, orders[0].name);
DB.OutPar(orders[0].total, orders[0].date, orders[0].stat);
SQL("select o.number, o.code, c.name, o.total, o.date, o.stat "
"from orders o join client c using(client_id) order by number");
UITable<OrdSt> tb(orders, orders_vp, TmIcons);
for(OrdSt* o = ALL(o, orders))
tb.Add(IND(o), UI.Icon("order"), o->code, o->name,
o->total^"%.2f", o->date^"%D");
tb.Sort(TXT, TXT, NUM, DAT);
tb.DblClick(&OrderSelect);
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
24

25. Использование массива

Проектирование и разработка программного обеспечения интегрированных систем управления
Использование массива
void TMainForm::OrderSelect(OrdSt* o)
{
UI.Information(o->number^o->code^o->name^
"Выбран заказ %d (код %s, клиент %s)");
}
Шевченко А. В.
Разработка приложений с использованием API Ingres
25

26. Работа с изображениями

Проектирование и разработка программного обеспечения интегрированных систем управления
Работа с изображениями
DTRaw image;
DB.OutPar(image);
DB.Query("select image from...");
TImage : image_im
AutoSize = True
UI.SET(image_im) = image;
Шевченко А. В.
Разработка приложений с использованием API Ingres
26
English     Русский Правила