13291

ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ

Лабораторная работа

Информатика, кибернетика и программирование

МЕТОДИЧНІ ВКАЗІВКИ до лабораторних робіт з дисципліни ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ Методичні вказівки до лабораторних робіт з дисципліни €œТехнології програмування€ для студентів напрямів 6.040302 Інформатика 6.040301 Прикладна математика / Упоряд. Кобилін О.А. Маш...

Русский

2013-05-11

1.46 MB

17 чел.

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторних робіт з дисципліни

«ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ»

Методичні вказівки до лабораторних робіт з дисципліни “Технології програмування” для студентів напрямів 6.040302  «Інформатика», 6.040301 «Прикладна математика» / Упоряд. Кобилін О.А., Машталір С.В.,  Харків: ХНУРЕ, 2008. - 47 с.

ЗМІСТ

[1] ЗМІСТ

[2]
1 Ознайомлення з технологіями програмування OLE

[3] 2 Створення звітів по базах даних за допомогою

[4] додатків Office

[5]
3 Створення додатка на базі серверів автоматизації Microsoft Word і Microsoft Excel

[5.0.0.1] ShowHint

[6] 4 Розробка додатка на базі елементів керування ActiveX F1Book і ChartFx

[7] 5 Створення невеликих COM - об'єктів з

[8] використанням бібліотеки активних шаблонів

[9] інтегрованого середовища розробки Visual Studio .NET

[10] 6 Створення Web - додатків і Web - сервісів У Visual Studio .NET

[11]
ПЕРЕЛІК ПОСИЛАНЬ


ЗАГАЛЬНІ ПОЛОЖЕННЯ

Під технологією програмування розуміється сукупність узагальнених і систематизованих знань, або наука, про оптимальні способи (прийоми і процедури) проведення процесу програмування, що забезпечує в заданих умовах одержання програмної продукції із заданими властивостями. Сучасні технології програмування припускають удосконалювання професійної культури програмування, організації та упорядкування праці самого програміста, незалежно від конкретної мови програмування, розв'язуваного завдання і ЕОМ.

Це новий напрямок у програмуванні, який швидко розвивається. Інтерес до інженерних питань програмування, деталей процесу виготовлення програмного продукту, до формування промислової культури програмування обумовлений збільшенням трудомісткості і вартості програмного продукту, що у наш час у кілька разів перевершує вартість ЕОМ. Причиною такого зростання витрат є те, що програмування складалося як важко дисциплінуємо, творча діяльність, що офіційно була названа мистецтвом. Кожний програміст писав програми, не дотримуючись яких-небудь чітких стандартів і правил. Стало майже неможливо розібратися до кінця, що робить програма, написана іншою людиною, і практично неможливо її налагодити або модифікувати. Виникла ситуація, коли стало простіше переписати програму заново, ніж її трохи змінити. Надії на те, що нові універсальні мови програмування в корені змінять ситуацію, не виправдалися.

У наведеному лабораторному практикумі розглядаються основні технології програмування, які розробляються і впроваджуються корпорацією Microsoft із другої половини 90-х років - від технології програмування OLE до технологій, заснованих на платформі Visual Studio .NET.

Звіт з лабораторної роботи повинен містити: прізвище, групу студента, тему роботи, мету роботи, опис розробленого додатка та тексти всіх процедур керування й оброблювачів подій на  аркушах формату А4.

Лабораторні роботи виконуються на ПК (персональному комп’ютері) з операційною системою Windows XP в середовищі C++Builder, VISUAL C ++.

 


1 Ознайомлення з технологіями програмування OLE

1.1 Мета роботи

Набуття   практичних  навичок зв'язування і вбудовування об'єктів OLE.

1.2 Методичні вказівки з організації самостійної  роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити  сучасні технології програмування, що базуються на  СОМ технології. Цей матеріал можна знайти в  [1, 2, 3, 4]. Після вивчення  матеріалу варто відповісти на контрольні питання й уважно вивчити робоче завдання до роботи.

1.3 Короткі теоретичні положення

Широкі можливості включення компонентів Microsoft Office в інші додатки забезпечуються в першу чергу тим, що ці компоненти мають у своєму розпорядженні безліч загальнодоступних інтерфейсів, що дозволяють використовувати їх  як сервери автоматизації OLE, а також як COM-об'єкти. Середовища програмування C++Builder і Delphi надають розробнику два способи звертання до цих серверів - за допомогою компонента TOleContainer і як до об'єкта автоматизації.

Вибір визначається специфікою завдання, що повинен вирішувати компонент Microsoft Office у розроблюваному інтегрованому додатку. Компонент TOleContainer найкраще використовувати у тих випадках, коли потрібно фактично включити той або інший компонент Microsoft Office у створювану програму, тобто зробити його частиною цієї програми. Але з  іншого боку, коли потрібно отримати більш гнучкі можливості керування роботою компонента, краще використовувати OleVariant і звертатися до компонентів Microsoft Office, як до об'єктів автоматизації.

OLE-документи – це, по суті, впроваджені або зв'язані об'єкти, створені додатками, що виступають як COM-сервери. Правила створення контейнерів для таких об'єктів (які називаються іноді OLE-контейнерами) описує відповідна специфікація COM, і одно з основних вимог цієї специфікації – так звана активізація по місцю, тобто реалізація можливості редагування об'єкта, що знаходиться в контейнері, за рахунок автоматичного запуску для цього додатка-сервера.

Найбільш привабливою перевагою OLE є можливість використовування методів інших серверів додатків. Звичайно,  набагато зручніше використовувати функціональність електронних таблиць, таких як MS Excel, або текстових процесорів, таких як MS Word, замість того щоб розробляти аналогічну функціональність у власному додатку.

1.4 Створення додатку на C++ з використанням компонента TOleContainer

1. Відкрийте новий додаток у C++ Builder.

2. Виберіть компонент TOIeContainer на сторінці System у палітрі компонентів і розмістіть його на формі. Настройте його розміри таким чином, щоб зазор між рамкою компонента і рамкою вікна додатка з усіх боків був близько 50 пикселів.

3. Додайте на екранну форму три кнопки, розмістіть їх нижче компонента TOleContainer. Властивості Name цих кнопок привласніть відповідно імена Button_Word, Button_Excel і Button_Destroy. Властивості Caption цих кнопок привласніть відповідно імена “Виклик Word”, “Виклик Excel” і “Видалення об'єктів”.

4. Додайте в модуль екранної форми оброблювачі подій OnClick, тексти яких наведені нижче.

 // --Кнопка "Виклик Word"

void __fastcall TForm1::Button_WordClick(TObject *Sender)

{

 OleContainer1-> CreateObject("Word.Document", false);

 OleContainer1->DoVerb(ovShow);

}

//-----------------------------------------------------------------

//-- Кнопка  "Виклик Excel"

void __fastcall TForm1::Button_ExcelClick(TObject *Sender)

{

 OleContainer1-> CreateObject("Excel.sheet", false);

 OleContainer1->DoVerb(ovShow);

}

//-----------------------------------------------------------------

//-- Кнопка - "Видалення об'єктів"

void __fastcall TForm1::Button_ DestroyClick(TObject *Sender)

{

 OleContainer1-> DestroyObject();

}

//-----------------------------------------------------------------

5. Скомпілюйте програму й запустіть її на виконання. Якщо у вікні працюючої програми Ви зробите подвійне клацання на порожньому контейнері, буде згенерована виняткова ситуація й з'явиться повідомлення про помилку “Operation not allowed on an empty OLE Container“ (Операція не виконана, оскільки контейнер OLE порожній ”). Клацніть на кнопці ОК і продовжіть роботу з контейнером.

6. Клацніть на одній із двох кнопок нижче поля контейнера. Після клацання на кнопках “Виклик Word”, “Виклик Excel” на місці поля контейнера відкриється вікно документа Word або Excel відповідно, а замість головного меню екранної форми буде виведене головне меню MS Word або MS Excel.

7. Установіть автоматичну ініціалізацію вбудованого об'єкта.

Переведіть додаток у режим проектування. Для цього перейдіть на форму, клацніть лівою кнопкою миші усередині контейнера і в інспекторі об'єктів змініть властивість AutoActivate з aaDoubleClick на aaGetFocus.

1.5 Створення додатка на C++ з використанням автоматизації OLE

Впровадження й зв'язування дозволяють запустити додаток, що обробляє відповідний документ як єдине ціле. Автоматизація OLE дозволяє керувати цим додатком (сервером OLE), використовуючи експонованим функції та процедури. Здійснюється зв'язок із сервером функцією CreateOleObject. У завданні розглядається приклад, у якому як сервер використовується Microsoft Word.

Необхідно створити додаток, який би друкував ідентичні листи, адресовані різним адресатам. Це можуть бути поздоровлення зі святами, запрошення на якісь заходи, листи діловим партнерам і т.ін. Ви бажаєте мати можливість написати у вашому додатку текст листа, вибрати для нього атрибути шрифту, а потім писати імена адресатів і друкувати листи, що створили, або записувати їх у файли для наступного друкування або пересилання по електронній пошті.

1. Відкрийте новий додаток у C++ Builder.

2. Створіть форму, вид якої зображений на рис. 1.1 і, що включає в себе вікно редагування Memo - для уведення тексту, вікно редагування Edit - для уведення імені адресата, групу радіокнопок, що визначають стать адресата, групу радіокнопок, що визначають здійснювану операцію: запис у файл або печатку, діалог FontDialog - для вибору шрифту, діалог SaveDialog - для завдання імені файлу, що зберігається, і дві кнопки – “Шрифт” для вибору шрифту й “Виконати” - для виконання заданої операції.

Рисунок 1.1 Вид вікна додатка, що використовує автоматизацію OLE

Пояснення до програми:

У додаток необхідно внести директиву препроцесора

#include "ComObj.hpp", що підключає файл ComObj.hpp, у якому міститься оголошення використовуваної далі процедури CreateOleObject. Уводиться змінна W типу Variant, що буде посиланням на об'єкт сервера. Основна функція додатка ButtonlClick — оброблювач клацання на кнопці “Виконати”. Її перший виконуваний оператор

W = CreateOleObject("Word.Basic");

створює посилання на об'єкт, що відповідає Microsoft Word. При виконанні цього оператора буде запущений Word, якщо він ще не був запущений до цього моменту. Наступні оператори використовують метод Ехес, що виконує процедуру або функцію OLE. Як параметр до неї передається конструкція Procedure(S), де S— ім'я викликуваної процедури WordBasic. Якщо в процедуру потрібно передати параметри, вони передаються операцією “<<”. Наприклад, у допоміжній функції  Ins, що заносить текст у документ Word, ви можете бачити оператор:

W.Exec(Procedure("Font")<<Memol->Font->Name << Memol->Font->Size) ;

Цей оператор викликає процедуру WordBasic Font, що встановлює шрифт, і передає їй два параметри: ім'я шрифту і його розмір.

Текст додатка повинен мати вигляд:

Файл Unit1.cpp

//-----------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "ComObj.hpp"

Variant W;

#include "Unit1.h"

//-----------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//-----------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//-----------------------------------------------------

__fastcall TForm1::Ins(AnsiString S)

{

W.Exec(Procedure("Font") << Memo1->Font->Name

                         << Memo1->Font->Size);

if (Memo1->Font->Style.Contains(fsBold))

 W.Exec(Procedure("Bold"));

if (Memo1->Font->Style.Contains(fsItalic))

 W.Exec(Procedure("Italic"));

 W.Exec(Procedure("Insert")<< (S+"\n"));

}

//------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

AnsiString s;

W=CreateOleObject("Word.Basic");

W.Exec(Procedure("AppShow"));

W.Exec(Procedure("FileNew") << "Normal");

if(RGSex->ItemIndex==0)

Ins("Шановний " + EName->Text + "!");

else Ins("Шановна " + EName->Text +"!");

for (int i=0; i<= Memo1->Lines->Count; i++)

Ins(Memo1->Lines->Strings[i]);

if (RGOp->ItemIndex ==0)

s=" Записати цей лист у файл?";

else s=" Надрукувати цей лист";

if (MessageDlg(s, mtConfirmation, TMsgDlgButtons() << mbYes

      <<mbNo, 0) ==mrYes)

   if (RGOp -> ItemIndex == 0)

   {

     if(SaveDialog1->Execute())

W.Exec(Procedure("FileSaveAs") << SaveDialog1 -> FileName);

    }

    else W.Exec(Procedure("FilePrint"));

         W.Exec(Procedure("FileClose") << 2);

}

//-----------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if (FontDialog1->Execute())

    Memo1->Font->Assign(FontDialog1->Font);

}

//------------------------------------------------------

Файл Unit1.h

//-------------------------------------

#ifndef Unit1H

#define Unit1H

//-------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

//-------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

       TEdit *EName;

       TLabel *Label1;

       TMemo *Memo1;

       TRadioGroup *RGSex;

       TRadioGroup *RGOp;

       TButton *Button1;

       TButton *Button2;

       TFontDialog *FontDialog1;

       TSaveDialog *SaveDialog1;

void __fastcall Button1Click(TObject *Sender);

 void __fastcall Button2Click(TObject *Sender);

private: // User declarations

public:  // User declarations

 __fastcall TForm1(TComponent* Owner);

 __fastcall TForm1::Ins(AnsiString S);

};

//-----------------------------------

extern PACKAGE TForm1 *Form1;

//----------------------------------

#endif

Послідовність викликуваних процедур така. Спочатку викликається процедура AppShow, що робить вікно Word видимим, оскільки за замовчанням запускається додаток, що працює у фоновому режимі. Наступний оператор викликає процедуру FileNew, що створює новий документ. Потім виконуються оператори, що формують текст документа з урахуванням установок шрифту. Ці оператори, що знаходяться в допоміжній функції Ins, звертаються до процедур Font, Bold, Italic, що формують атрибути шрифту, і до процедури Insert, що включає текст у документ Word.

Після формування тексту виконуються оператори, що запитують користувача про завершення операції (це дає йому можливість відмовитися від печатки або збереження файлу, якщо він помітить у листі якісь помилки). Заключні оператори завершують задану операцію процедурами FileSaveAs або FilePrint і закривають документ Word процедурою FileClose з параметром 2, що означає, що файл закривається без запиту на необхідність його збереження.

3. Запустіть додаток і у вікні Memo уведіть приблизно такий текст: «Запрошуємо Вас у неділю на день народження о 17 годині за адресою...». У поле «Ім'я та по батькові» уведіть різні імена, встановлюючи відповідні прапорці в полях радіокнопок, і перевірте правильність роботи програми у різних режимах.

Докладний опис інших процедур ви зможете знайти у довідці Word у розділі WordBasic. Одне зауваження - якщо Word відкритий до запуску вашого додатка, то подбайте про те, щоб він не був розгорнутий на весь екран. Інакше вікно Word закриє ваш додаток і його повідомлення.

1.6 Створення об'єктів OLE програмними засобами

Для створення об'єкта OLE за допомогою методу CreateObject потрібно вказати значення ідентифікатора програми (ProgID) і вид об'єкта (у вигляді піктограми, значення True) або сам об'єкт (значення False). Розглянемо приклад створення додатку, що буде редактором формул. Для цього скористаємося функціональними можливостями компонента Equation, що зареєстрований у реєстрі Windows з зазначеним ім'ям, а також методами і властивостями класу TOleContainer. Запустіть програму Regedit, відкрийте каталог HKEY_CLASSES_ROOT і переконайтесь, що компонент із таким ім'ям існує. Якщо такого компонента немає, то використайте компонент із таким самим ім'ям, але з іншим номером версії. Для створення цього додатка програмними засобами виконайте такі дії:

1. Відкрийте новий додаток в Delphi.

Виберіть компонент TOIeContainer на сторінці System у палітрі компонентів. Помістіть цей компонент на форму і двічі клацніть на ньому. Через кілька секунд на екрані з'явиться діалогове вікно Insert Object.. У списку Object Type виберіть будь-який тип об'єкта (наприклад, Календар) і клацніть на кнопці ОК.

2. В Object Inspector встановіть властивість AutoActivate в aaGetFocus.

3. В Object Inspector виберіть подію OnObjectMove і пов'яжіть із ним такий код:

Procedure Tform1.OleContainer1ObjectMove (OleContainer: OIeContainer; const Bounds: Trect);

begin

// Не допустити, щоб розміри контейнера були  менше розмірів об'єкта.

with OleContainer1 do  

begin

if  left <150 then Left:= 150;

if  Height < 150 then Height:= 150;

if  Top < 150 then Top:= 150;

  if  Width < 150 then Width:= 150;

 end; // with

OleContainer1.BoundsRect:= Bounds;

  end;  // Tforml.OleContainer1ObjectMove

4. Виберіть компонент Button на сторінці Standard у палітрі компонентів і помістіть на форму. Змініть властивість Caption компонента Button1 на “Виклик об'єкта” і пов'яжіть із ним такий код:

procedure TForm1.Button1Click(Sender: TObject);

        begin

          with OleContainer1 do

            begin

              CreateObject('Equation',False);

              SetFocus;

           end;   end;

5. Виберіть компонент Button на сторінці Standard у палітрі компонентів і помістіть на форму. Змініть властивість Caption компонента Button2 на “Знищення об'єкта” і пов'яжіть із ним такий код:

procedure TForm1.Button2Click(Sender: TObject);

begin

   with OleContainer1 do

     DestroyObject;

   end;

6. Виберіть компонент MainMenu на сторінці Standard у палітрі компонентів і помістіть на форму.

7. Зробіть подвійне клацання на компоненті TMainMenu для завантаження проектувальника меню.

8. У верхній частині екрана з'явиться заповнювач, на місці якого необхідно задати перше визначення меню. Уведіть із клавіатури &Файл.

9. Натисніть Enter для збереження заданого елемента і перейдіть до наступної позиції меню.

10. Уведіть із клавіатури &Open  і натисніть Enter.

11. Уведіть із клавіатури &Save  і натисніть Enter.

12. Уведіть "–" (дефіс) і натисніть Enter. Тим самим створюється роздільник між елементами меню Save і Exit.

13. Наберіть із клавіатури &Exit і натисніть Enter.

14. У рамках Object Inspector установіть значення властивості Enable елемента меню рівним False.

15. Виконайте клацання на вікні уведення з пунктирним обрамленням праворуч від меню Файл.

16. Наберіть із клавіатури &About.

17. Клацніть на елементі Файл для відкриття меню Файл.

18. Виконайте подвійне клацання на елементі Open.

19. У код оброблювача події OnClick  елемента меню Open уведіть такий код:

procedure TForm1.Open1Click(Sender: TObject);

  begin

      with OleContainer1 do

        begin

           CreateObject('Equation',False);

            SetFocus;

            LoadFromFile('C:\temp\Formul1.doc');

          end;

  end;

20. Використовуючи кнопку Toggle Form/Unit  на панелі інструментів, перейдіть назад у режим проектування меню.

21. Виконайте подвійне клацання на елементі меню Save.

22. У код оброблювача події OnClick елемента меню Save уведіть наступний код:

procedure TForm1.Save1Click(Sender: TObject);

   begin

       with OleContainer1 do

       SaveToFile('C:\Temp\Formul1.doc');

    End;

23. Використовуючи кнопку Toggle Form/Unit  на панелі інструментів, перейдіть назад у режим проектування меню.

24. Виконайте подвійне клацання на елементі Exit.

25. У код оброблювача події OnClick елемента меню Exit уведіть такий код:

procedure TForm1.Exit1Click(Sender: TObject);

     begin

        Close;

     end;

26. Використовуючи кнопку Toggle Form/Unit  на панелі інструментів, перейдіть назад у режим проектування меню.

27. Виконайте подвійне клацання на елементі About.

        Procedure TForm1.AboutClick(Sender:Tobject);

         Const NewLine = CHR(13) + Chr(10);

          Begin

          MessageDlg(‘Даний редактор формул’+ NewLine +

          NewLine+‘Створений з використанням функціональних’+NewLine+ ‘можливостей додатка Equation’+NewLine+’ редактора Word for Windows на базі’+NewLine + ’COM технології студентом групи ИНФ-Ф. И. О.  ‘, mtInformation,[mbOk],0);

         End;                         

28. Використовуючи кнопку Toggle Form/Unit  на панелі інструментів, перейдіть назад на форму.

29. Виконайте клацання на проектувальнику меню для  переведення його у фокус.

30. Закрийте проектувальник меню, клацнувши на позначку Х у верхньому правому куті проектувальника меню (але не Delphi!).

31. Виконайте компіляцію створеного додатка. За умови успішної компіляції буде створений Ваш додаток – Редактор Формул. Збережіть проект під відповідним ім'ям і перевірте його роботу.

1.7 Варіанти індивідуальних завдань

У наступних завданнях необхідно створити додаток, який буде використовувати функціональні можливості зазначеного об'єкта. Передбачити можливість переміщати контейнер і змінювати його розміри. Додати пункти меню Файл для збереження даних, відкриття файлу й виходу з додатка. На формі передбачити кнопки для виклику й знищення об'єкта.

1. Створити додаток, що використовує функціональні можливості об'єкта Excel.Sheet.

2. Створити додаток, що використовує функціональні можливості об'єкта Excel.Chart.

3. Створити додаток, що використовує функціональні можливості об'єкта Excel.MacroSheet.

4. Створити додаток, що використовує функціональні можливості об'єкта Excel.WorkSpace.

5. Створити додаток, що використовує функціональні можливості об'єкта MSGraph.Chart.

6. Створити додаток, що використовує функціональні можливості об'єкта Paint.Picture.

7. Створити додаток, що використовує функціональні можливості об'єкта Word.Document.

8. Створити додаток, що використовує функціональні можливості об'єкта Word.Picture.

9. Створити додаток, що використовує функціональні можливості об'єкта Workspace.

10. Створити додаток, що використовує функціональні можливості об'єкта Equations.

Примітка: Якщо зазначеного в завданні об'єкта не виявиться на Вашому комп'ютері, проконсультуйтеся з викладачем.

1.8 Контрольні запитання

1. Дайте характеристику об'єктам OLE й елементам керування ActiveX.

2. Що таке вбудовування і зв'язування об'єктів?

3. Призначення компонента TOleContainer.

4. Який метод компонента ToleContainer використовується для створення об'єктів OLE програмним шляхом? Навести приклад.

5. Оброблювач якої події необхідно передбачити у програмі, щоб була можливість переміщати контейнер і змінювати його розміри?

2 Створення звітів по базах даних за допомогою 

додатків Office

2.1 Мета роботи

Набуття практичних  навичок розробки додатків за допомогою додатків Microsoft Office.

2.2 Методичні вказівки по організації самостійної роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити сучасні технології програмування, що базуються на технології COM і дозволяють використовувати додатки Microsoft Office як сервери автоматизації. Цей матеріал можна знайти у [5, 6, 7]. Після вивчення  матеріалу варто відповісти на контрольні запитання й уважно вивчити робоче завдання до роботи.

2.3 Короткі теоретичні положення

Генерація звітів по базах даних за допомогою додатків Microsoft Office застосовується на практиці досить часто. Причиною цього є бажання користувачів одержувати звіти у вигляді файлу одного зі стандартних форматів, мати можливість редагувати їх і обмінюватися ними із клієнтами й партнерами.

Таким чином, шляхом автоматизації додатків Microsoft Office ми можемо створювати складні звіти, що містять таблиці, діаграми, які обчислюють значення, так само як і використовувати для цієї мети інші можливості Microsoft Office (наприклад, сервіси побудови зведених таблиць).

Створений додаток має дозволяти створювати звіти по базі даних Борей.mdb, що входить у комплект стандартної поставки пакета Microsoft Office.

2.4 Створення звітів по базах даних

1. Відкрийте новий додаток в Delphi.

2. Створіть форму, вигляд якої зображений на рисунку 2.1. Помістити на форму компонентів TADOConection, два компоненти TADODataSet і три компоненти TButton.

Рисунок 2.1. Головна форма додатка для створення звітів по базах даних

Властивостям Caption і Name привласнити значення з таблиці 2.1

Таблиця 2.1

Компонент

Властивість Caption

Властивість Name

TForm1

Звіт з використанням MS Office

Tbutton1

Звіт з використанням MS Word

Report_Word

Tbutton2

Звіт з використанням MS Excel

Report_Excel

Tbutton3

Звіт з використанням MS Charts

Report_Charts

Властивості ConnectionString об'єкта TADODataSet встановити значення, що пов'язувало його з базою даних Борею.mdb (можливий маршрут: C:\Program Files\Microsoft Office\Office10\Samples).

Оголосити глобальні змінні для об'єктів Application, Document, Range і Table:

Var Forml: TForm1;

// Range і Table

Wd, Doc, Rng, Tbl: Variant;

Властивостям CommandType і CommandText компонентів TADODataSet1 і TADODataSet2 привласнити значення з таблиці 2.2.

Таблиця 2.2

Компонент

Властивість CommandType

Властивість CommandText

TADODataSet1

cmdText

Select КодКлиента, Название, Город From Страна

TADODataSet2

cmdText

select Страна, Клиенты.Кодклиента, Название.count(Кодзаказа)

from Клиенты, Заказы

where Клиенти.Кодклиента=Заказы.Кодклиента

group by Страна, Клиенты.Кодклиента, Название

order by страна

3. Реалізувати генерацію табличного звіту в оброблювачі події OnClick компонента Button1. Можливий текст процедури наведений в електронній версії методичних вказівок.

4.Відкомпілюйте додаток і перевірте роботу кнопки «Звіт з використанням MS Word». При виконанні цього додатка створюється документ зі звітом по базі даних Борей.mdb.

5. Перейдіть у режим проектування й створіть генерацію звітів за допомогою Microsoft Excel.

Як і в попередньому випадку, нам варто також оголосити глобальні змінні для об'єктів Application, WorkBook і WorkSheet:

var

Forml: TForm1;

. . .

// Змінні для об'єктів ExcelApplication, WorkBook і WorkSheet

Xl, Wb, Ws: Variant;

Реалізуємо генерацію табличного звіту в оброблювачі події OnClick компонента Button2: Можливий текст процедури наведений в електронній версії методичних вказівок.

6. Відкомпілюйте додаток і перевірте роботу кнопки «Звіт з використанням MS Excel». При виконанні цього додатка створюється документ зі звітом по базі даних Борей.mdb.

7. Перейдіть у режим проектування і побудуйте діаграми у звітах за допомогою MS Charts.

У цьому випадку при створенні звітів ми створимо документ, що містить ділову графіку й опирається на обчислювальні можливості Excel. Створюваний звіт буде використовувати набір даних, що міститься в компоненті TADODataSet2 і список компаній-клієнтів, який представляє собою кількість їхніх замовлень, згруповану по країнах. Для кожної країни буде створений окремий аркуш із відомостями про клієнтів із цієї країни і графіком залежності числа замовлень від назви компанії-клієнта. На останньому аркуші зібрані дані для всіх країн і представлений графік залежності сумарного числа замовлень для кожної країни. Ці відомості будуть скопійовані в документ Word.

Як і в попередньому випадку, нам варто також оголосити глобальні змінні для об'єкта Charts:

var

Forml: TForm1;

. . .

   Ch : Variant;

Реалізувати генерацію табличного звіту в оброблювачі події OnClick компонента Button3. Можливий текст процедури наведений  в електронній версії методичних вказівок.

8. Відкомпілюйте додаток і перевірте роботу кнопки «Звіт з використанням MS Charts». Результатами роботи додатка буде робоча книга Excel із числом аркушів, рівним числу країн у вихідному наборі даних, і з даними про замовників з обраної країни та діаграмами на кожному аркуші. Крім того, ми отримаємо документ Word із підсумковими даними і діаграмою, побудованою за допомогою Excel на основі цих даних.

2.5 Варіанти індивідуальних завдань

Додати в розроблений додаток можливість побудови зведеної таблиці. Для цього скористайтеся таблицею «Замовлення» з тієї ж бази даних.

2.6 Контрольні запитання

1. Який компонент ADO використовується для зв'язку з базою даних?

2. Який компонент ADO використовується для формування запитів?

3. Чому необхідно відключати виведення діагностичних повідомлень?

4. Які властивості й методи об'єкта Excel.Application використовувалися в додатку? Надайте коротку характеристику.

5. Які властивості й методи об'єкта Excel.Application використовувалися в додатку для створення діаграм? Надайте коротку характеристику.

 


3 Створення додатка на базі серверів автоматизації Microsoft Word і Microsoft Excel

3.1 Мета роботи

Набуття практичних навичок розробки додатків на базі серверів автоматизації Microsoft Office.

3.2 Методичні вказівки з організації самостійної роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити сучасні технології програмування, що базуються на  технології COM і дозволяють використовувати додатки Microsoft Office як сервери автоматизації. Цей матеріал можна знайти у [7, 8, 9]. Після вивчення  матеріалу варто відповісти на контрольні запитання й уважно вивчити робоче завдання до роботи.

3.3 Короткі теоретичні положення

Взаємодія з MS Word, MS Excel і багатьма іншими розповсюдженими програмами, що входять у стандартну установку Word і Microsoft Office, може здійснюватися з додатків C++Builder 6 за допомогою компонентів, розміщених у бібліотеці на сторінці Office2k. Ці компоненти відображають безліч імпортованих серверів СОМ. Усі вони є нащадками свого базового класу TOleServer. У цьому класі оголошені абстрактні методи і властивості, що дозволяють встановлювати зв'язок із сервером. Тому об'єкти класу TOleServer не можна створювати безпосередньо. У додатках використовують тільки нащадки цього класу - конкретні сервери СОМ. Вони створюються імпортом бібліотек типів, здійснюваним у середовищі C++Builder командою Project | Import.

Сервери СОМ - компонент сторінки Servers слабко документовані в убудованій довідці C++Builder. Мета цієї роботи хоча б частково заповнити цей пробіл на прикладі використання серверів, що забезпечують зв'язок з редактором MS Word і MS Excel.

Відкрийте новий додаток, перенесіть на форму компонент WordApplication і перегляньте в інспекторі об'єктів його властивості. Їх дуже небагато. Крім звичайних для всіх компонентів Name і Tag є всього 4 властивості (у багатьох компонентах — серверах їх усього 3).

Властивість AutoConnect визначає, чи буде належний сервер автоматично завантажуватися з початком виконання додатка. Якщо встановити AutoConnect = true, то з'єднання із сервером відбудеться в момент початку виконання вашого додатка. Якщо ж залишити значення AutoConnect = false, прийняте за замовчанням, то з'єднання із сервером можна встановити викликом методу Connect. Наприклад;

WordApplication1->Connect ();

Втім, зовсім не обов'язково встановлювати з'єднання властивістю AutoConnect або методом Connect. З'єднання автоматично встановлюється, коли виконується виклик якогось методу сервера або задається значення якійсь його властивості.

При використанні властивості AutoConnect треба мати на увазі, що установка в true впливає тільки при запуску додатка, тобто якщо ця властивість установлена під час проектування. Завдання AutoConnect = true під час виконання додатка ні на що не впливає.

Властивість ConnectKind визначає, як саме здійснюється з'єднання із сервером. Ця властивість може набувати наступних значень:

Значення

властивостей

Опис властивості

CkRunningOrNew

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

CkNewInstance

Завжди створювати новий екземпляр сервера

ckRunningInstance

Тільки приєднатися до сервера, що виконується

ckRemote  

Приєднатися до віддаленого сервера. Ця опція повинна сполучатися із завданням властивості RemoteMachineName

ckAttachToInterface

He приєднуватися до сервера. Замість цього додаток забезпечує інтерфейс методом ConnectTo. Опція ckAttachToInterface не може використовуватися разом з установкою в true властивості AutoConnect

3.4 Створення додатка мовою програмування C++ з використанням серверів автоматизації MS Word

Необхідно створити додаток, призначений для складання серії різних листів у форматі текстового редактора Word. У додаток необхідно ввести можливість керування шрифтами, вирівнювання тексту, уведення імені адресата, визначення його статі, попередній перегляд, печатка, збереження документа, а також додавання у формований текст деякого малюнка. Це може бути виконане порівняно просто для того, щоб перевірити можливості використання серверів MS Word. Природно, це можна зробити й у самому текстовому редакторі. Але якщо необхідно брати дані для листів, наприклад, з бази даних, то однією програмою MS Word не обійтися.

1. Відкрийте новий додаток у C++Builder.

2. Створіть форму, вигляд якої представлений на рисунку 3.1 і, що включає в себе вікно редагування Memo для уведення тексту; вікно редагування Edit для уведення імені адресата; групу радіокнопок, що визначають стать адресата; групу радіокнопок, що визначають форматування тексту, що вводиться, (вибір шрифту й вирівнювання) і кнопки для виконання наступних дій:

Кнопка “У документ” (її ім'я в наведеному нижче тексті додатка BInDoc) заносить в активний документ текстового редактора текст, приклад якого наведений на рис. 3.1.

Рисунок 3.1 Вигляд вікна додатка при застосуванні сервера текстового редактора

Кнопка “Новий” визначає на сервері новий документ.

Кнопка “Відкрити” викликає стандартний діалог  редактора MS Word.

Кнопка “Перегляд” викликає стандартний діалог редактора попереднього перегляду документа перед печаткою.

Кнопка “Печать” викликає стандартний діалог редактора друку документа.

Кнопка “Word” робить видимим для користувача сервер - вікно програми Word.

Кнопка “Зберегти” викликає стандартний діалог редактора збереження документа.

Для того, щоб все це працювало, на форму, крім видимих елементів необхідно помістити зі сторінки Office2k компоненти WordApplication, WordDocument, WordFont і WordParagraphFormat.

Елементам керування Button установити властивості відповідно до таблиці 3.1

Таблиця 3.1

Caption

Name

Hint

ShowHint

Button1

Новий

BNew

Відкриття нового документа на сервері

True

Button2

Відкрити

BOpen

Виклик стандартного діалогу відкриття файлу

True

Button3

Перегляд

BPreview

Виклик стандартного діалогу попереднього перегляду

True

Button4

Печать

BPrint

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

True

Button5

Word

BWord

Робить видимим сервер – вікно програми Word

True

Button6

Зберегти

BSave

Викликає стандартний діалог збереження документа

True

Button7

У документ

BInDoc

Заносить в активний документ текст листа

True

Елементам радіокнопок установити значення відповідно до імен, наведених у таблиці 3.2.

Таблиця 3.2

Caption

Name

Items

RadioGroup1

Шрифт

RGFont

Звичайний

Курсив

Жирний

жирний курсив

RadioGroup2

Вирівнювання

RGAlign

Уліво

Вправо

По центру

По ширині

RadioGroup3

Стать

RGSex

М

Ж

У компонент Image1 помістити малюнок по Вашому вибору.

У заголовний файл додати оголошення функції в розділ функцій Private

void __fastcall Connect(void);

Текст заголовного файлу знаходиться в електронній версії методичних вказівок.

Розробити файл реалізації для всіх елементів керування. Текст можна взяти в електронній версії методичних вказівок.

3. Відкомпілюйте додаток і перевірте правильність функціонування всіх елементів керування.

4. Створіть текстовий документ «Лист 2» на будь-яку тему,  скопіюйте його в поле Memo і перевірте коректність роботи додатка.

Пояснення до програми можна подивитися в електронній версії методичних вказівок.

Доробити додаток, додавши функцію передачі тексту заготівлі листа з відкритого документа в поле Memo.

3.5 Інтеграція Visual Basic 6 і Microsoft Excel

Microsoft Excel поставляється разом з Microsoft Office і використовується мільйонами людей - як розроблювачами, так і простими користувачами. За деякими оцінками, приблизно 90% від загального числа користувачів працюють тільки із засобами робочого аркуша Excel без застосування мов програмування Visual Basic 6 і VBA (Visual Basic for Application), а виходить, вони використовують лише не більше 10% від реальних можливостей Excel. Таким чином, більша частина засобів Excel залишається незатребуваною просто тому, що багато хто не знають про наявність VBA або Visual Basic 6 і Visual Basic .NET або не вміють ними користуватися. Ця лабораторна робота допоможе Вам реалізувати на всі 100% об'єднану міць Excel і Visual Basic 6 або VBA при розробці Ваших додатків.

Студентові надається файл Excel “замовлення.xls”, що реєструє замовлення на придбання засобів ПЕОМ. Необхідно створити додаток на Visual Basic 6, що дозволить автоматизувати процес реєстрації проданого устаткування і облік клієнтів.

1. Відкрийте в Excel файл  “замовлення.xls” і перегляньте таблиці на аркушах «Клієнти», «Товари», «Замовлення», «Бланк замовлення», «Таблиця». З таблиці на аркуші «Клієнти» випишіть коди клієнтів. З таблиці на аркуші «Товари» випишіть номери товарів. З таблиці «замовлення» видаліть всі записи крім першого. Збережіть файл у форматі версії MS Excel, встановленому на Вашім комп'ютері.

2. Відкрийте новий додаток у Visual Basic 6.

3. Створіть форму, вигляд якої представлений на рис. 3.2 і, що включає в себе елемент керування ActiveX Calendar для вибору й уведення дат, вікно редагування Edit для уведення номера замовлення, 3 елементи ComboBox для вибору зі списку номера товару, кількості товару і коду замовника відповідно і кнопки для виконання наступних дій:

- кнопка “Заповнення таблиці” заносить в аркуш таблиці «замовлення.xls» уведені й обрані дані з полів перерахованих раніше елементів керування.

- кнопка “Прочитати номер попереднього замовлення” виводить у поле «Номер замовлення» номер останнього замовлення з таблиці «замовлення.xls».

- кнопка “Відкрити таблицю для перегляду” виводить заповнену таблицю “замовлення.xls” для перегляду.

Для того, щоб помістити елемент керування ActiveX Calendar на панель інструментів, необхідно такі дії:

- виконати команду Project->Components ( Проект-> Компоненти);

- у вікні Components вибрати “Microsoft Calendar Control 8.0;

- нажати послідовно кнопки «Застосувати» і «Закрити»;

- на панелі інструментів повинен з'явитися елемент “Calendar”.

Рисунок 3.2 Вигляд вікна додатка

Примітка: Якщо після виконання зазначених дій елемент не з'явиться на панелі інструментів, скористайтеся кнопкою Browse(Перегляд) і в папці С:/WINDOWS/SYSTEM виберіть файл mscal.ocx.

Вказівка: При виконанні цього пункту завдання ознайомтеся зі списком елементів керування ActiveX, встановлених на вашому комп'ютері.

Елементам керування Button установити властивості відповідно до таблиці 3.3

Таблиця 3.3

Caption

Name

Button1

Заповнення таблиці

CmdExcel

Button2

Одержати номер попереднього замовлення

CmdOrder

Button3

Перегляд таблиці замовлень

CmdView

Елементам ComboBox установити значення відповідно до імен, наведених у таблиці 3.4.

Таблиця 3.4

Name

List

Text

ComboBox1

ComboWares

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

Пусте

ComboBox2

ComboNumber

Значення від 1 до 10

Пусте

ComboBox3

ComboCod

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

Пусте

Текстовому блоку привласніть ім'я txtOrder.

Для того, щоб були доступні властивості та методи Microsoft Excel, виконайте команду Project -> References. У вікні References вибрати Microsoft Excel 9.0 Object Library або Microsoft Excel 8.0 Object Library залежно від версії MS Excel, встановленого на вашому комп'ютері

4. Реалізувати процедури для всіх елементів керування. Тексти процедур можна взяти в електронній версії методичних вказівок.

5. Відкомпілюйте додаток і перевірте правильність функціонування всіх елементів керування.

3.6 Індивідуальне завдання для виконання лабораторної роботи

Доробити додаток, додавши функції додавання в аркуш “Товари“ відомостей про нові товари і в аркуш «Клієнти» - нових клієнтів.

3.7 Контрольні запитання

1. Дайте характеристику об'єктів Application MS Word і MS Excel.

2. Розкажіть про властивості об'єктів Application MS Word і MS Excel.

3. Призначення об'єкта Workbook і сімейства Workbooks MS Excel

4. Розкажіть про властивості об'єкта Workbook і сімейства Workbooks MS Excel

5. Які призначення об'єкта Worksheet і сімейства Worksheets MS Excel.

4 Розробка додатка на базі елементів керування ActiveX F1Book і ChartFx

4.1 Мета роботи

Набуття практичних навичок розробки додатків у середовищі візуального програмування Delphi або C++Builder з використанням довідкової системи.

4.2 Методичні вказівки з організації самостійної роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити  сучасні технології програмування, що базуються на СОМ технології. Цей матеріал можна знайти у [8, 9]. Після вивчення  матеріалу варто відповісти на контрольні питання й уважно вивчити робоче завдання до роботи.

4.3 Короткі теоретичні положення

Сучасні системи програмування відрізняються від систем програмування попередніх років:

- дуже багатим набором програмних компонентів, які можна використовувати у програмах;

- дуже розвинутою системою отримання інформації про систему програмування безпосередньо із самої системи.

Уміння користуватися убудованою довідковою системою - це необхідна умова роботи програміста, тому що без навичок роботи з довідковою системою неможливо швидке і повноцінне програмування.

Перед тим як розглядати роботу з довідковою системою будь-якого середовища візуального програмування, варто звернути вашу увагу на труднощі, які можуть виникнути при роботі з нею:

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

- дуже рідко, але буває складно знайти необхідну спеціалізовану інформацію, але для того є об'єктивні причини;

- іноді прямий переклад відмінний від сформованих традицій у термінології, наприклад, "statement" у прямому перекладі "твердження" або "заява", але в програмуванні використовується термін "оператор", тому що за цим стоїть 40-річна традиція.

Перший керуючий елемент на сторінці – ChartFx, який дозволяє зображувати діаграми, графіки й деякі інші речі у вікні форми Delphi і C++Builder. Методика роботи з довідковою системою елемента ChartFx міститься в електронній версії методичних вказівок.

Для реалізації коду взаємодії з електронною таблицею використовуються методи і властивості елемента керування ActiveX за назвою Formula One (F1Book).

Елемент керування Formula One надає повний комплект властивостей і методів для уведення даних. У таблиці 4.1 наведені властивості і методи для уведення даних.

Таблиця 4.1

Властивості/ Метод

Опис

Entry

Уводить або повертає значення з поточної комірки в режимі редагування.

EntryRC

Уводить або повертає значення зі специфікованої комірки в режимі редагування.

Formula

Уводить або повертає формулу в активну комірку.

FormulaRC

Уводить або повертає формулу в специфіковану комірку.

Logical

Уводить або повертає логічне значення в активну комірку.

LogicalRC

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

Number

Уводить або повертає числове значення в активну комірку.

NumberRC

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

Text

Уводить або повертає текстове значення в активну комірку.

TextRC

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

Докладні відомості про використання наведених методів і властивостей можна одержати, запустивши на виконання файл vcf1.hlp, що знаходиться по маршруту C:\Program Files\Borland\Delphi7\Ocx\Vci\Form1.

Після запуску файлу відкриється діалогове вікно “Довідкова система: Formula One 3.0 Help”. Виберіть послідовно такі розділи: Working with Worksheets, Entering Data in Worksheets, Worksheet Data Entry, Entering Data with Properties. Ознайомтеся з довідкою і прикладами використання виш наведених властивостей і методів.

Для ознайомлення з можливостями елемента F1Book закрийте всі вікна, пов'язані з демонстрацією можливостей елемента F1Book1, відкрийте новий додаток C++Builder. На форму помістіть керуючий елемент TF1Book зі сторінки ActiveX. Виділіть елемент TF1Book і натисніть клавішу F1. З'явиться діалогове вікно "Formula One 3.0 Help". Ознайомтеся зі змістом розділів довідкової інформації.

У цій роботі буде створений додаток, що буде використовувати два керуючіх елемента ActiveX: F1Book і ChartFX для вирішення завдань по прийняттю рішень, що використовують такі критерії:

1. Критерій Лапласа (при недостачі інформації)

   (4.1)

2. Критерій Вальда (максіміний)

    (4.2)

4.4 Розробка додатка для Windows за допомогою ActiveX

Додаток повинен використовувати функціональні можливості керуючих елементів ActiveX: F1Book і ChartFX і, що реалізує ряд критеріїв з теорії прийняття рішень.

Додаток має функціонувати в такому вигляді:

- вихідні дані для ухвалення рішення повинні вводиться в комірки електронної таблиці. Після виділення області вихідних даних, вибирається пункт меню, що реалізує обраний критерій ухвалення рішення. Результат вибору виділяється і за необхідності будується графік;

- діапазон комірок, що підлягає відображенню на графіку, повинен бути виділений і переданий елементу ChartFX.

- розмістити на формі відповідні елементи керування й меню для побудови графіка, збереження й виклику побудованої діаграми, виклик довідкової інформації.

1. Відкрити новий додаток C++Builder.

2. Установити значення властивостей форми відповідно до таблиці 4.2.

Таблиця 4.2

Caption

Name

Height

Width

Додаток для реалізації методів прийняття рішень

FrmMain

400

544

3. Помістіть на форму компонент TPanel і надайте властивості Caption пусте значення, а властивості Align значення alTop.

4. Помістіть на форму компонент TPanel і надайте властивості Caption пусте значення, а властивості Align значення alButton.

5. Помістіть на форму компонент TPanel і надайте властивості Caption пусте значення, а властивості Align значення alClient.

6. На компонент TPanel1 помістити п'ять кнопок TSpeedButton і привласніть їхнім властивостям значення відповідно до таблиці 4.3: (Властивостям Hint і Show Hint установити спливаючі підказки)

Таблиця 4.3

Name

Hint

ShowHint

SpeedButton1

BitBtnOpen

Відкриття файлу

True

SpeedButton2

BitBtnSave

Збереження файлу

True

SpeedButton3

BitBtnFormat

Форматування даних

True

SpeedButton4

BitBtnTxt

Форматування тексту

True

SpeedButton5

BitBtnBuild

Побудова діаграм

True

7. На кнопки, відповідно до їх функцій, помістити зображення з файлу по маршруту: C:\Program Files\Common Files\Borland Shared\Images\Buttons\. Для цього для кожної кнопки вибрати властивість Glyph, відкрити список, у вікні, що з'явилося, натиснути кнопку Load, відрити файл із малюнком, що на вашу думку підходить для цієї кнопки й нажати клавішу ОК. На кнопку буде поміщене обране зображення.

8. На компонент TPanel3 помістити елемент TF1Book зі сторінки ActiveX. Властивості Align привласнити значення alClient, властивостям MaxRow і MaxCol привласнити значення 100.

9. На компонент TPanel2 помістити компоненти TOpenDialog, TSaveDialog і TFontDialog зі сторінки Dialogs і компонент TMainMenu зі сторінки Standard.

10. З кнопкою Open зв'язати код відкриття діалогового вікна OpenDialog

11. З кнопкою Save зв'язати код відкриття діалогового вікна SaveDialog

Дві наступні кнопки будуть виконувати форматування даних і форматування тексту. З ними пов'яжіть такі процедури:

void __fastcall TFrmMain::BitBtnFormatClick(TObject *Sender)

{

  F1Book1->FormatNumberDlg();

}

//------------------------------------------------------------

void __fastcall TFrmMain::BitBtnTxtClick(TObject *Sender)

{

  F1Book1->FormatDefaultFontDlg();

}

//-------------------------------------------------------------

12. Збережіть проект у своїй папці. Відкомпілюйте додаток і перевірте правильність функціонування створених елементів керування. Для цього уведіть кілька чисел у комірки електронної таблиці, збережіть у файлі, указавши розширення .xls. Потім очистіть таблицю й перевірте роботу кнопки «Відкрити».Для перевірки кнопки «Форматування даних» уведіть кілька чисел і за допомогою цієї кнопки змініть формат даних. Для перевірки кнопки «Форматування тексту» уведіть кілька слів і потім відформатуйте їх за допомогою діалогового вікна, що відкрилося.

13. Переведіть додаток у режим проектування, викличте редактор меню, двічі клацнувши лівою клавішею миші на компоненті TMainMenu1, і створіть пункти меню, привласнивши їхнім властивостям значення з таблиці 4.4:

Таблиця 4.4

Файл

Правка

Критерії

Допомога

Caption

Name

Caption

Name

Відкрити

BtnOpen

Дані

Лапласа

MnuLaplas

Про програму

Зберегти

BtnSave

Вальда

MnuValda

-------------

-

Севиджа

MnuSevidg

Вихід

BtnExit

Байеса

MnuBaies

14. Закрийте редактор меню й пов'яжіть коди відповідних процедур для реалізації методів Лапласа, Вальда.

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

Критерій Лапласа

S1

S2

S3

S4

A1

14

9

12

3

A2

8

15

6

15

A3

2

11

7

19

A4

7

13

4

13

Критерій Вальда

S1

S2

S3

S4

A1

14

9

12

3

A2

8

15

6

15

A3

2

11

7

19

A4

7

13

4

13

16. Перейдіть у режим проектування. Додайте код для реалізації таких критеріїв:

Критерій Севиджа (ризику)

 (4.3)

Критерій Байеса (максимум середнього виграшу)

 (4.4)

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

Критерій Севиджа

S1

S2

S3

S4

A1

0

6

0

16

A2

6

0

6

4

A3

12

4

5

0

A4

7

2

8

6

Критерій Байеса

 S1

S2

S3

S4

q

Q

Q

Q

A1

14

9

12

3

A2

8

15

6

15

A3

2

11

7

19

A4

7

13

4

13

0,15

0,4

0,2

0,25

18. Переведіть програму в режим проектування і продовжіть розробку програми.

19. З пунктами меню «Файл» пов'яжіть коди таких процедур:

20. З командою "Файл\Відкрити" пов'язати такий код:

void __fastcall TFrmMain::MnuOpenClick(TObject *Sender)

{

   int SSheetType;

   SSheetType=F1FileExcel5;

   F1Book1->Read("C:\Temp\Data1.xls",SSheetType);

}

//--------------------------------------------------------------

21. З командою "Файл\Зберегти" пов'язати такий код:

void __fastcall TFrmMain::MnuSaveClick(TObject *Sender)

{

   int SSheetType;

   SSheetType=F1FileExcel5;

   F1Book1->Write("C:\Temp\Data1.xls",SSheetType);

}

//--------------------------------------------------------------

22. З командою меню "Файл\Вихід пов'язати код такої процедури:

void __fastcall TFrmMain::MnuExitClick(TObject *Sender)

{

 Application -> Terminate ();

}

//--------------------------------------------------------------

23. Відкомпілюйте програму і перевірте функціонування створених команд меню «Файл».

24. Перейдіть у режим проектування. Додайте в додаток Form2. На Form2 помістіть такі компоненти:

- помістіть на форму компонентів TPanel і привласніть властивості Caption пусте значення, а властивості Align значення alTop.

- помістіть на форму компонентів TPanel і привласніть властивості Caption пусте значення, а властивості Align значення alClient.

- на компонент TPanel1 помістіть елемент TСheckBox зі сторінки Standard. Установити значення властивостей елемента CheckBox відповідно до таблиці 4.5

Таблиця 4.5

Caption

Name

Hint

ShowHint

Інструменти для

Графіка

CheckBox1

Включення інструментів графіка

True

25. На Form2 помістити елемент ChartFX зі сторінки ActiveX. Властивості Align привласніть значення alClient.

26. Із кнопкою "Графік" на FrmMain пов'язати код такої процедури:

void __fastcall TFrmMain::BitBtnBuildClick(TObject *Sender)

{

 int ColCount, RowCount, i, j;

 int StartRow, StartCol;

 StartRow=F1Book1->SelStartRow;

 StartCol=F1Book1->SelStartCol;

ColCount=F1Book1->SelEndCol-F1Book1->SelStartCol + 1;

RowCount=F1Book1->SelEndRow-F1Book1->SelStartRow + 1;

 Form2->Chartfx1->OpenDataEx(1, ColCount, RowCount);

 for (i=0;i<=ColCount-1;i++)

    for (j=0; j<=RowCount-1; j++)

    {

     Form2->Chartfx1->ThisSerie= i;

     Form2->Chartfx1->Value[j]=FrmMain->F1Book1->NumberRC[i+StartRow][j+StartCol];

     Form2->Chartfx1->SerLeg[i]=FrmMain->F1Book1->EntryRC[j+FrmMain->F1Book1->SelStartCol-1][j+FrmMain->F1Book1->SelStartCol];

     }

   Form2->Show();

 Form2->Chartfx1->CloseData(1);

}

З елементом CheckBox1 на Form2 пов'яжіть такий код:

void __fastcall TFrmMain::BtnCheckBoxClick(TObject *Sender)

{

Chartfx1->ToolBar=CheckBox1->Checked;

}

Для пов'язування основної форми і Form2 у список модулів, що підключаються, додайте

#include "Unit2.h"

27. Відкомпілюйте програму і перевірте функціонування створених елементів керування. Для цього відкрийте файл одного з контрольних прикладів, виділіть область даних і натисніть кнопку «побудова графіка». Повинна відкритися Form2 із графіком. Включіть панель інструментів і проекспериментуйте з усіма інструментами.

4.6. Завдання на самостійну роботу

Доробити програму, пов'язавши відповідні коди процедур для інших елементів керування й пунктів меню. Привести інтерфейс Вашого додатка до вигляду, подібного до інтерфейсу MS Excel.

4.7 Контрольні запитання

1. Дайте характеристику та можливість елементів ActiveX.

2. Розкажіть про властивості елемента ActiveX: F1Book.

3. Розкажіть про властивості елемента ActiveX: ChartFX.

4. Які елементі ActiveX можливо застосувати для реалізації у додатку з теорії прийняття рішень.

5. Як створити додаток для реалізації критеріїв з теорії прийняття рішень з використанням ActiveX та СОМ.

5 Створення невеликих COM - об'єктів з 

використанням бібліотеки активних шаблонів 

інтегрованого середовища розробки Visual Studio .NET

5.1 Мета роботи

Набуття практичних навичок по створенню COM-об'єктів і елементів керування ActiveX з використанням компілятора командного рядка та інструментальних засобів інтегрованого середовища розробки Visual Studio .NET. Навчитися створювати  COM-об'єкти  й елементи керування ActiveX, тестувати і включати їх в інші додатки.

5.2 Методичні вказівки з організації самостійної роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити  сучасні технології програмування, що базуються на платформі .NET. Цей матеріал можна знайти у [10, 11, 12, 13, 14, 15]. Після вивчення  матеріалу варто відповісти на контрольні запитання й уважно вивчити робоче завдання до роботи.

5.3 Короткі теоретичні положення

Бібліотека активних шаблонів (ATL) являє собою основу для створення невеликих COM-компонентів і забезпечує реалізацію їхніх ключових можливостей. Виконання багатьох рутинних процедур, з якими стикається розроблювач при використанні середовища програмування Visual Studio .NET , можна уникнути за рахунок використання класів шаблонів ATL.

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

5.4 Створення проекту за допомогою ATL COM AppWizard

Ця утиліта являє собою майстер Visual C++, що полегшує поетапне створення первісного проекту. До цієї утиліти при створенні будь-якого проекту доводиться звертатися тільки один раз. Як тільки проект створений, для додавання в нього компонентів застосовується майстер об'єктів ATL.

Запустіть середовище розробки Visual Studio .NET.

Виконаєте команду File | New | Project. У вікні, що з'явилося, New Project, виберіть тип проекту Visual C++ ATL, виберіть свій каталог і в полі Name введіть ім'я проекту - AutoSvr і потім із шаблонів виберіть ATL Project.

У вікні, що відкрилося, ATL Project Wizard – AutoSvr, виберіть сторінку Application Settings. На сторінці Application Settings скиньте прапорець Attributed,  виберіть тип сервера Dinamic Link Library (DLL) і підтвердіть свій вибір, натиснувши кнопку Finish.

По завершенні роботи майстра будуть створені  файли проекту. Для перегляду виконайте команду View | Solution Explorer. У вікні Solution Explorer будуть відображені всі файли проекту. Перегляньте всі файли проекту.

5.5 Створення компонентів за допомогою майстра об'єктів ATL

Створений за допомогою ATL COM AppWizard каркас проекту забезпечує тільки зберігання компонентів, але не містить файли, необхідні для створення того або іншого компонента. Ці файли можна створити, звернувшись до майстра об'єктів ATL Simple Object Wizard.  Для його виклику:

- виберіть команду основного меню Project;

- виберіть Add Class.

У діалоговому вікні Add Class – AutoSvr виберіть шаблон ATL Simple Object, підтвердіть вибір, натиснувши кнопку Add.

У діалоговому вікні, що з'явилося, ATL Simple Object Wizard - AutoSvr на сторінці Names для нашого приклада як значення поля Short Name введемо рядок “Math”. Крім того, змінимо пропоновані назви розділів реєстру CoClass і ProgID, приєднавши до них робочу назву “Component”. Для цього в поле ProgID ввести значення Math.MathCComponent, а в поле CoClass - MathCComponent. Параметри діалогового вікна Name майстра об'єктів мають такі значення:

Short Name

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

Class

Ім'я C++-класу, що реалізує об'єкт.

Файли H і CPP

Файли заголовків і файли реалізації.

CoClass

Ім'я COM-класу, що буде використано зовнішніми клієнтами як “тип” компонента.

Interface

Ім'я інтерфейсу, що потрібно створити для об'єкта. Розглянутий нами об'єкт буде представляти інтерфейс Imath.

Type

Зручне для сприйняття ім'я компонента, розташовуване в реєстрі. При програмуванні значення не має.

ProgID

Програмний ідентифікатор компонента. Клієнти можуть його використовувати для розміщення і створення екземпляра компонента.

Перейдіть на сторінку Options і визначіть основні параметри сховища компонентів. У нашому прикладі необхідно прийняти всі установки за замовчанням. Атрибути майстра об'єктів мають такий смисл:

Поле

Опис

Threading Model

(потокова модель)

COM-компоненти можуть використовувати наступні потокові моделі:

Просту (Single) - компонент використовує тільки один потік.

Модель ізольованих потоків (Apartment) - об'єкти розташовані тільки усередині власних потоків.

Подвійну (Both) - компоненти можуть підтримувати як ізольовані потоки, так і роботу з довільною кількістю потоків.

Вільну (Free) - компонент підтримує роботу з довільною кількістю потоків.

Interface (Інтерфейс)

Відповідно до рекомендацій Microsoft компоненти по можливості повинні його підтримувати. Двонаправлений інтерфейс реалізує як користувальницький, так і стандартний інтерфейс автоматизації Idispatch. Це дає можливість клієнтові вибирати спосіб доступу до функцій компонента.

Aggregation

(агрегація)

Агрегація являє собою широко використовуваний у СОМ технічний прийом, що дозволяє включати й використовувати в компоненті функції іншого компонента. Внутрішній компонент повинен явно підтримувати цю технологію за допомогою своєї реалізації інтерфейсу IUnknown. Значення даного атрибута дозволяє компоненту вибирати, підтримувати агрегацію чи ні.

Support Isupport ErrorInfo (підтримка для інтерфейсу IsupportErrorInfo)

При установці цього атрибуту майстер об'єкта додасть у проект реалізацію інтерфейсу IsupportInfo. У такий спосіб буде забезпечений стійкий механізм передачі повідомлень про помилки в системі клієнт-сервер.

Support Conection Points (підтримка точок підключення)

При установці цього атрибуту майстер об'єктів додасть у проект точку підключення інтерфейсів СОМ 

Free-Threaded Marshaler

У проект додаються засоби транспортування покажчиків інтерфейсів через границі потоків.

Натиснути кнопку Finish.

При створенні проекту були використані основні функції, що представляються утилітою AppWizard. Для додавання класу CMath був застосований майстер об’єктів ATL.

2. Визначення методів. Інтерфейс нашого об'єкта складається з чотирьох методів, що реалізують основні арифметичні операції: Add, Subtract, Multiply, Divide.

3. Виконайте команду View -> Class View. У вікні Class View розкрийте Project AutoSvr.

Додавання методу Add. Клацніть правою кнопкою  миші на IMath (вікно Class View) і виберіть у контекстному меню Add Method. У вікні, що з'явилося, Add Method Wizard - AutoSvr у полі Method name уведіть ім'я методу Add. У полі зі списком Parameter type виберіть тип LONG. У полі Parameter name уведіть ім'я параметра op1, визначіть його як вхідний, включивши прапорець in. Натисніть кнопку Add для додавання першого аргументу в список параметрів методу.

Тяким же способом у список аргументів методу додайте параметри другого аргументу op2.

Для третього, вихідного аргументу, вкажіть ім'я pResult, тип *LONG, визначіть як його як вихідний, установивши прапорці out і retval.

Натисніть кнопку Finish.

Аналогічним чином визначіть методи Subtract, Multiply, Divide.

Після додавання всіх методів у нижній частині вікна Class View повинні з'являтись заголовки всіх оголошених методів. Перевірте.

4. Реалізація методів. Останній крок полягає в реалізації чотирьох методів, каркаси яких створені автоматично. У вікні Solution Explorer – AutoSvr відкрийте файл Math.cpp. У тексти процедур додайте виділені оператори, як показано нижче.

// Math.cpp : Implementation of CMath

#include "stdafx.h"

#include "Math.h"

#include ".\mathc.h"

// CMath

STDMETHODIMP CMath::Add(LONG op1, LONG op2, LONG* pResult)

{

// TODO: Add your implementation code here

   *pResult=op1+op2;

 return S_OK;

}

STDMETHODIMP CMath::Subtract(LONG op1, LONG op2, LONG* pResult)

{

// TODO: Add your implementation code here

    *pResult=op1-op2;

 return S_OK;

}

STDMETHODIMP CMath::Multiply(LONG op1, LONG op2, LONG* pResult)

{

// TODO: Add your implementation code here

     *pResult=op1*op2;

 return S_OK;

}

STDMETHODIMP CMath::Divide(LONG op1, LONG op2, LONG* pResult)

{

// TODO: Add your implementation code here

    *pResult=op1/op2;

 return S_OK;

}

Переглянете файл AutoAvr.idl.

5.6 Створення сервера

ATL являє собою основне місце зберігання, лічильник звернень, фабрику класів і підтримку самореєстрації. Для спостереження за процесом створення DLL включіть вікно Output, виконавши команду View -> Output. Для завершення проекту необхідно виконати компіляцію, виконавши команду Build | Build AutoSvr. При відсутності помилок створення COM-об'єкта буде завершено успішно, й він повинен бути зареєстрований у реєстрі Windows.

Запустіть програму regedit і переконайтеся, що в реєстрі Windows з'явився запис Math.MathCComponent, що свідчить про те, що створений компонент зареєстрований і створення сервера завершене успішно. Закрийте Visual Studio.NET 2005.

6. Створення клієнтської програми в Delphi і C++Builder

Для проведення тестування розробленого проекту ATL сервера створимо в Delphi і C++Builder додаток клієнта. Зазначені середовища програмування  є потужними засобами розробки додатків, особливо тих з них, у яких використовується автоматизація. Автоматизація - це саме та технологія, яка найбільш сполучається із середовищами програмування, що підтримують COM-технологію. Кожний об'єкт, будь то елемент керування ActiveX, форма або клас, являє собою компонент автоматизації. Для створення клієнтського додатка запустіть Delphi і виконайте такі дії:

Створіть  новий проект  і на формі розмістіть елементи,  як показано на рисунку 5.1.  

Рисунок 5.1 Форма додатка

Із кнопками пов'яжіть тексти відповідних процедур. Їхній текст знаходиться в електронному варіанті методичних вказівок.

У списку директиви uses перевірте, чи є модулі ComObj, OleCtrls, ComCtrls. Якщо ні, додайте. У розділ var додайте V: Variant.

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

5.7 Створення багатофайлової збірки

Створити багатофайлову збірку, що містить два класи: один на Visual Basic.NET - називається SimpleMath, інший на - C# - називається ComplexMath. Клас SimpleMath повинен містити чотири методи: додавання Add, вирахування Subtract, множення Multiply і розподілу Divide. Клас ComplexMath повинен містити чотири методи, що реалізують основні операції інтервальної математики

[a, b]+[c, d] = [a + c, b + d];     (5.1)

[a, b] - [c, d] = [a-d, b-c];    (5.2)

[a, b] *[c, d]=[min(ac, ad, bc, bd), max(ac, ad, bc, bd];  (5.3)

[a, b]/[c, d] = [a, b]*[1/d,1/c].    (5.4)

Фізично збірка повинна складатися із трьох файлів:

- Simple.netmodule містить клас SimpleMath;

- Complex.netmodule містить клас ComplexMath;

- Math.dll містить клас декларуючої збірки.

Дана частина роботи виконується за допомогою компілятора командного рядка.

Порядок створення зборки:

У свою папку (рекомендується назвати її CalculatorSpesial) скопіюйте файли alink.dll, alinkui.dll, cscomp.dll, csccompui.dll, al.exe, csc.exe, vbc.exe.  

У цій же папці за допомогою програми «Блокнот» створіть текстовий файл Complex.cs і введіть у нього код, що реалізує методи інтервального калькулятора (5.1 - 5.4). Текст файлу Complex.cs можна взяти в електронній версії методичних вказівок.

Скомпілюйте Complex.cs у керований код за допомогою компілятора командного рядка (Виконати команду Пуск -> Виконати -> cmd).

csc /target:module complex.cs

У тій же папці створіть текстовий файл Simple.vb  і введіть у нього код, що реалізує методи звичайного калькулятора. Текст для процедури додавання наведений нижче.

Imports System

Public Class SimpleMath

Function Add(a As Integer, b As Integer) As Integer

 Return a+b

 End Function

Далі аналогічним чином додайте текст функцій для інших методів.

‘ Можна взяти з електронної версії методичних вказівок.

End Class

Скомпілюйте Simple.vb у керований код за допомогою компілятора командного рядка (Виконати команду Пуск -> Виконати -> cmd).

vbc /target:module simple.vb

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

Complex.netmodule і Simple.netmodule. Перевірте.

Створіть зборку, що зв'яже два керованих модулі, запустивши утиліту AL (Assembly Linker), яка входить до складу SDK:

Al /target:library /out:Math.dll simple.netmodule complex.netmodule

Отриманий файл –Math.dll – містить декларацію збірки. Усередині декларації міститься інформація, що ідентифікує Simple.netmodule і Complex.netmodule як членів збірки. Крім того, у декларації зазначене ім'я збірки: Math. Перевірте.

Ми побудували еквівалент DLL для .NET Framework. На наступному етапі необхідно написати клієнтську програму для тестування збірки.

1. Запустіть Visual Studio .NET 2005. Виконайте команду File -> New -> Project. У вікні New Project виберіть  тип проекту Visual C#,  папку для створення проекту. У поле імені введіть ім'я проекту. У нашому випадку пропонується ім'я MathDemo. Із пропонованих шаблонів вибрати Windows Application і натиснути кнопку ОК.

2. Установити посилання на Math.dll. Для цього виконати команду Project->Add Reference…У вікні Add Reference вибрати закладку Browse і пройти по маршруту\..\CalculatorSpesial\Math.dll і натиснути кнопку OK. У вікні Solution Explorer повинне з'явитися посилання на файл Math. Перевірте.

3. Спроектуйте форму, розмістивши на ній елементи керування, як показано на рисунку 5.2.

Рисунок 5.2. Форма додатку

Елементам керування привласніть значення, згідно з таблицею 5.2

Таблиця 5.2

Назва

елемента

Значення

властивості Name

Назва

елемента

Значення

властивості Name

Значення

властивості Text

TextBox1

op1

Button1

btnAdd

Скласти

TextBox2

op2

Button2

btnSubtract

Відняти

TextBox3

Result

Button3

btnMultiply

Помножити

TextBox4

op1k

Button4

btnDivide

Розділити

TextBox5

op2k

Button5

btnAddInt

AddInt

TextBox6

Resultk

Button6

btnSubtractInt

SubtractInt

Button7

btnMultiplyInt

MultiplyInt

Button8

btnDivideInt

DivideInt

Із кнопками пов'яжіть коди процедур, що реалізують основні арифметичні операції. Текст процедури додавання, процедури інтервального додавання і множення наведені нижче. Тексти інших процедур можна взяти в електронній версії методичних вказівок.

       private void btnAdd_Click(object sender, EventArgs e)

       {

           SimpleMath simple = new SimpleMath();

           int a,b,sum;

           a = Convert.ToInt32(op1.Text);

           b = Convert.ToInt32(op2.Text);

           sum = simple.Add(a, b);

           result.Text = (sum).ToString();

       }

       private void btnAddInt_Click(object sender, EventArgs e)

       {

           ComplexMath complex = new ComplexMath();

           int an,ak,bn,bk,cn,ck;

           an = Convert.ToInt32(op1.Text);

           ak = Convert.ToInt32(op1k.Text);

           bn = Convert.ToInt32(op2.Text);

           bk = Convert.ToInt32(op2k.Text);

           complex.AddInterval(an, ak, bn, bk, out cn, out ck);

           result.Text = (cn).ToString();

           resultk.Text = (ck).ToString();

       }

Відкомпілюйте додаток і перевірте функціонування всіх елементів на формі.

5.8 Індивідуальні завдання для виконання лабораторної роботи

У завданнях необхідно доробити можливості створеного COM-об'єкта, додавши методи, які реалізують функції відповідно до номеру варіанта. Перевірити роботу розширеного COM-об'єкта в клієнтській програмі в Visual Studio .NET. Зробити невидимими поля і елементи керування інтервального калькулятора при виконанні розрахунків у звичайному калькуляторі і їхню появу при виконанні розрахунків в інтервальному калькуляторі.

1. У модуль, що реалізує функції SimpleMath, додати функції  підтримки виконання основних математичних і  тригонометричних функцій.

2. У модуль, що реалізує функції SimpleMath, додати функції  підтримки виконання основних математичних і всіх зворотних тригонометричних функцій.

3. У модуль, що реалізує функції SimpleMath, додати функції  підтримки виконання основних математичних  і всіх гіперболічніх функцій.

4. У модуль, що реалізує функції SimpleMath, додати функції  підтримки виконання основних математичних,  показової  степеневої функцій.

5. У модуль, що реалізує функції SimpleMath, додати функції  підтримки виконання основних математичних і логарифмічних функцій.

6. У модуль, що реалізує функції ComplexMath, додати функції  підтримки виконання  операції інтервальної математики.

[a, b][c, d] = [min(ac,, ad,, bc ,bd), max(ac,, ad,, bc ,bd);    (5.5)

ln[a,b] = [min(lna,,lnb),max(lna,lnb)]    (5.6)

5.9 Контрольні запитання

1. Надайте характеристику макросів, які рекомендуються використовувати для об’яви і реалізації методів COM-об'єктів.

2. Бібліотека ATL- призначення і основні можливості.

3. Призначення GUID. Засоби генерації і розташування в реєстрі Windows.

4. Призначення зборок в Visual Studio .NET.

5. Надайте характеристику інструментів Visual Studio .NET для роботи з COM-компонентами.

6. Як створити .NET-компоненти для використанні в COM.

6 Створення Web - додатків і Web - сервісів У Visual Studio .NET

6.1 Мета   роботи

Набуття  практичних  навичок створення  Web-Forms і Web-сервісів з використанням інструментальних засобів інтегрованого середовища розробки Visual Studio .NET.

6.2 Методичні вказівки з організації самостійної  роботи студентів

При підготовці до лабораторної роботи рекомендується вивчити  сучасні технології програмування, що базуються на платформі .NET. Цей матеріал можна знайти у [15,16,17]. Після вивчення  матеріалу варто відповісти на контрольні запитання й уважно вивчити робоче завдання до роботи.

6.3 Короткі теоретичні положення

Web-додатки — це один із чотирьох типів Інтернет-додатків, які можна створювати за допомогою Visual Studio .NET і Microsoft ASP.NET. Із цього заняття ви довідаєтеся про різні типи Інтернет-додатків і познайомитеся із принципами роботи Web-додатків.

Точно кажучи, Інтернет-додатком можна вважати будь-який програмний продукт, який так чи інакше  використовує Інтернет. Відповідно до такого визначення додатка користувачі, які реєструються або отримують доступ до довідкової системи через Інтернет, теж у якійсь мірі є Інтернет-додатками. Але програм, що підпадають під це визначення, занадто багато для одного заняття. Давайте спробуємо обмежити область нашого інтересу, виділивши чотири типи Інтернет-додатків;

- web-додатки, які працюють на сервері, передаючи через Інтернет дані на клієнтські машини. Для їхнього застосування потрібні Web-браузери, такі як  Microsoft Internet Explorer і Netscape Navigator;

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

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

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

У Visual Studio .NET можна створювати всі перераховані вище типи додатків, але в цій роботі мова йтиме про розробку першого і другого типу програм — Web-додатків і Web-сервісів.

До складу Visual Studio .NET 2005 входить власний локальний Web-сервер, який можна використовувати для швидкого тестування і налагодження сторінок. Можливості убудованого Web-сервера дуже скромні, і він, звичайно, не може замінити повнофункціональне програмне забезпечення, наприклад, IIS. Убудований Web-сервер працює  тільки з окремими сторінками і не містить ніяких додаткових компонентів подібних до метабази IIS. Розміщається він звичайно на c:\Inetpub\wwwroot.

6.4 Створити Web-додаток для розрахунку платежів по заставних

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

Рисунок 6.1 Форма калькулятора місячних платежів

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

,     (6.1)

де: i - процентна ставка; n - строк кредиту; D - величина кредиту.

 

1. Запустіть Visual Studio .NET і виберіть команду File->New->Web Site. У вікні New Web Site виберіть ASP .NET Web Site. У запропонованому Вам за замовленням віртуальному каталозі (можлива адреса – C:\Documents and Setting \kam\Мои документы\Visual Studio 2005\WebSites\WebSite1) запропоноване ім’я за замовченням WebSite1 замініть на своє, наприклад, LoanCalc. Після коректування  адреса має бути такою: C:\Documents and Settings\kam\Мои документы\Visual Studio 2005\WebSites\LoanCalc. У полі Location має бути встановлене значення File System, у полі Language значення Visual C#. Натисніть OK.

2. Виберіть команду File->Open->Web Site. У вікні Open Web Site виберіть File System, розкрийте Веб-вузол за замовчанням і переконайтеся, що існує папка LoanCalc для вашого проекту.

3. Виберіть команду File->New->File. У вікні Templates виберіть шаблон Web Form. Інші установки  прийняти за замовчанням. Натиснути кнопку OK.

4. Спроектуйте форму, розмістивши на ній елементи керування, як показано на рисунку 6.1.

Назва елемента керування

Значення властивості ID

Значення властивості Text

Label1

Label1

Сума позики

Label2

Label2

Процентна ставка

Label3

Label3

Кількість місяців

TextBox1

TextBox1

TextBox2

TextBox2

TextBox3

TextBox3

TextBox4

Output

Button1

PaymentButton

Обчислити

 

5. Із кнопкою Обчислити пов'язати такий код:

protected void PaymentButton_Click(object sender, EventArgs e)

  {

    try

      {

       double Suma = Convert.ToDouble(TextBox1.Text);

       double Rate = Convert.ToDouble(TextBox2.Text) / 100;

       double Term = Convert.ToDouble(TextBox3.Text);

       double tmp = System.Math.Pow(1 + (Rate / 12), Term);

       double payment = Suma * (((Rate / 12) * tmp) / (tmp - 1));

       Output.Text = "Місячні платежі в гривнях= " + payment.ToString("G");

       }

       catch (Exception)

       {

           Output.Text = "Error";

       }

   }

6. Додати кілька елементів HTML для покращення зовнішнього вигляду форми. Для цього відкрийте файл Default2.aspx. Між тегами <body> і <form> вручну додайте наступні оператори:

<h1>Калькулятор місячних платежів</h1>

<hr>

7. Скомпілюйте створений код, виконавши команду Build -> Build Web Site. Якщо компонування пройшло без помилок, виберіть у меню Debug пункт Start (або Start Without Debugging)  для запуску додатка. Коли Web-форма  відобразиться в Internet Explorer, переконайтеся, що вона працює правильно. Для цього ввести  такі значення:

Сума – 100000;

Процентна ставка - 10;

Кількість місяців - 240.

8. Клацніть на кнопку «Обчислити».

6.5 Створення Сервіс-Web-сервісу в середовищі Visual Studio.NET

Термін «Web-сервіси XML» багаторазово зустрічається в будь-якій книзі, доповіді або статті по Microsoft .NET. Web-сервіси XML, або, як їх частіше називають, Web-сервіси - наріжний камінь ініціативи Microsoft .NET. Це ключ до Microsoft'івського бачення світу, у якому комп'ютери спілкуються у Web, використовуючи HTTP  інші повсюдно підтримувані протоколи. І саме вони є основною причиною, за якої Microsoft .NET  Framework  взагалі існує: зробити все, щоб  максимально спростити створення Web-сервісів і Web-клієнтів.

Web-сервіс — це особливий тип Web-додатка. На відміну від традиційного Web-додатка в нього немає користувальницького інтерфейсу. Замість цього він надає функції, більше відомі як Web-методи, які можуть бути викликані по Інтернету. Не його справа обслуговувати кінцевих  користувачів, як звичайні Web-додатки. Його завдання — надавати послуги іншим додаткам, будь то Web-додаток, додаток із графічним користувальницьким інтерфейсом або навіть консольні додатки.

Якого типу послуги надають Web-сервіси? Це визначає їхній творець. Web-сервіс може надавати в реальному часі інформацію про курси акцій. А може перевіряти кредитні картки або повідомляти прогноз погоди. Подібно до традиційних додатків, Web-сервіси настільки ж різноманітні, як і уява їхніх творців. Microsoft,  Sun, IBM та ін. говорять про те, що в майбутньому за допомогою Web-сервісів можна буде одержувати дані будь-якого типу. І якщо це стане реальністю, то один раз Web-сервіси стануть фундаментом високоавтоматизованого Інтернету - такого, котрий не просто обслуговує кінцевих користувачів, але й дозволяє серверам взаємодіяти, а додаткам звільнитися від обмежень платформ, на яких вони виконуються.

Додатку, що розмовляє мовою Web-сервісів, доступний цілий світ служб,  що зараз тільки зароджується. Компанії в усьому світі вже сьогодні надають доступ до даних і бізнес-логіки через Web-сервіси. Приклад програми цієї роботи показує, як легко створити клієнт Web-сервісу, для виконання обчислень звичайного та інтервального калькулятора.  У майбутньому виникнуть додатки, що будуть використовувати Web-сервіси для перевірки стану посилок, що перебувають в дорозі, або одержання сьогоднішнього меню ресторанів. Деякі технології змінили світ тієї самій мірі, у якій це можуть зробити Web-сервіси. І Microsoft .NET буде відігравати в цих змінах важливу роль, головним чином завдяки тому, що .NET Framework робить створення Web-сервісів і їхніх клієнтів неймовірно простим.

Web-сервіси — це не власність Microsoft. Це промисловий стандарт на основі відкритих протоколів, таких як HTTP і SOAP (Simple Object Access Protocol). Багато сучасних Web-сервісів працюють на UNIX-серверах. Використовувати .NET Framework — не обов'язкова умова створення Web-сервісів або їхніх клієнтів, але ви самі захочете задіяти її, тому що вона дуже спрощує це завдання. Усього декількома натисканнями кнопок у Visual Studio .NET можна створити Web-сервіс і реалізувати Web-методи, до яких може звернутися всякий, знаючий їх URL Створення клієнта Web-сервісу потребує настільки ж невеликих зусиль. Ви навіть не зобов'язані використовувати Visual Studio .NET. Потужні Web-сервіси можна писати і в WordPad.

ASMX-файл, наведений нижче — це закінчений Web-сервіс. Він реалізує чотири  Web-методи: Add, Subtract, Multiply і Divide. Всі вони приймають як вхідні параметри два цілих числа і повертають також ціле число. Установити Web-сервіс на комп'ютер настільки ж просто, як і скопіювати його в URL-адресуємий каталог на вашому Web-cepвeрі. Якщо помістити Service.asmx у wwwroot, те локальним URL Web-сервісу буде http:/ /localhost/Service.asmx.

Service.asmx демонструє кілька важливих принципів програмування Web сервісів за допомогою .NET Framework.

Web-сервіси реалізуються як ASMX-файли. ASMX - це особливе розширення імені файлу, зареєстроване за ASP.NET (точніше, за HTTP-оброблювачем ASP.NET) в Machine.config,

ASMX-файли починаються директивою @ WebService. Ця директива повинна містити хоча б атрибут Class, що задає клас, з якого складається Web-сервіс.

Класи Web-сервісів можуть мати необов'язкові атрибути WebServiice. У наведеному цьому прикладі такий атрибут призначає ім'я Web-сервісу й опис, що відображається на HTML-сторінці, коли користувач викликає Service.asmx зі свого браузера. Атрибут WebService також підтримує необов'язковий параметр Namespace, що дозволяє змінити найменування простору імен XML, у якому містяться члени Web-сервісу. Web-методи оголошуються шляхом призначення відкритим методам класу Webсервіса атрибута WebMethod. Для допоміжних методів Web-сервісу, застосовуваних усередині нього, але недоступних як Web-методи, цей атрибут не задається. Атрибути WebMethod  також задають опис своїх Web методів.

1. Запустіть Visual Studio .NET і виберіть команду File->New->Web Site. У вікні New Web Site виберіть ASP .NET Web Service. Пропоноване ім'я за замовчанням WebSite1 замініть на WebCalcServise. Після коригування адреса повинна бути  такою: C:\Documents and Settings\kam\Мои документы\Visual Studio 2005\WebSites\WebCalcServise. У полі Location має бути встановлене значення File System, у полі Language значення Visual C#. Натисніть OK.

2. Виберіть команду File->Open->Web Site. У вікні Open Web Site виберіть File System, розкрийте Веб-узел за замовчанням і переконайтеся, що існує папка WebCalcServise для вашого проекту.

3. У файл  App_Code/Service після коду методу Hello World додайте методи, що реалізують арифметичні дії. Текст одного методу наведений нижче. Тексти інших WebMetods можна взяти з електронного варіанта методичних вказівок.

[WebMethod (Description="Обчислює суму двох чисел") ]

   public int Add(int a, int b)

   { return a + b; }

4. Скомпілюйте створений код, виконавши команду Build -> Build Web Site. Якщо компонування пройшло без помилок, виберіть у меню Debug пункт Start (або Start Without Debugging)  для запуску додатка. Коли Web-форма відобразиться в Internet Explorer, переконайтеся, що вона має вигляд, як на рисунку  6.2.

Рисунок 6.2. Вигляд WebCalcService в Internet Explorer

5. Тестування  Web-сервісу

Запустіть браузер. У адресному рядку введіть http://localhost/WebCalcServise/Service.asmx.

ASP.NET на HTTP-запит до Service.asmx згенерував HTML-сторінку з описом Web-сервісу. Ім'я й опис із атрибута WebService ASMX-файлу відображені зверху сторінки. Нижче розташований список Web-методів, які реалізуються сервісом і постачаються описами, заданими в атрибутах WebMethods.

Клацніть “Add” у верхній частині сторінки, і ASP.NET відобразить іншу сторінку, яку можна використовувати для тестування методу Add (рисунку 6.3). ASP.NET повідомляє ім'я і сигнатуру методу, які є в метаданих DLL, отримані в результаті компіляції Service.asmx.

ASP.NET навіть генерує HTML-форму, за допомогою якої ви можете викликати метод Add із заданими вами параметрами. Уведіть 2 і 2 у полях «а» і «b» і клацніть Invoke, XML, повернутий Web-методом, з'явиться в окремому вікні браузера (рис. 6.3-6.4).

Рисунок 6.3 Тестовая сторінка для методу Add

Рисунок 6.4 XML, що повертається методом Add.

6.7. Індивідуальні завдання для виконання лабораторної роботи

У наведених завданнях необхідно доробити можливості створеного WebServer, додавши Webmedods, які реалізують функції відповідно до номеру варіанта. Перевірити роботу розширеного WebServer.

1. Додати Webmetods функцій тригонометричних функцій.

2. Додати Webmetods функцій зворотних тригонометричних функцій.

3. Додати Webmetods функцій гіперболічних функцій.

4. Додати Webmetods функцій показові й степеневої функцій.

5. Додати Webmetods функцій логарифмічних функцій.

6. Додати Webmetods функцій  операції інтервальної математики.

[a, b]+[c, d] = [a + c, b + d];     (6.1)

[a, b] - [c, d] = [a-d, b-c];    (6.2)

[a, b] *[c, d]=[min(ac, ad, bc, bd), max(ac, ad, bc, bd];  (6.3)

[a, b]/[c, d] = [a, b]*[1/d,1/c];    (6.4)

[a, b][c, d] = [min(ac,, ad,, bc ,bd), max(ac,, ad,, bc ,bd);    (6.5)

ln[a,b] = [min(lna,lnb),max(lna,lnb)].     (6.6)

6.8 Контрольні запитання

1. Типи Web-сайтів в Visual Studio .NET.

2. Структура сторінки ASP.NET.

3. Моделі програмування веб-додатків.

4. Призначення Web-сервісів і їх характеристика.

5. Клієнти Web-сервісів і проксі-сервери – призначення і коротка характеристика.

6. Як створити платний Web-сервіс?


ПЕРЕЛІК ПОСИЛАНЬ

1. Дэвид Чеппел. Технологии ActiveX и OLE/Пер. с англ. - М: Издательский отдел “Русская Редакция” ТОО “Channel Trading Ltd.”, 1997. - 320 с.: ил.

2. Дуйл Роджерсон. Основы СОМ/ Пер. с англ. - М: Издательский отдел “Русская Редакция” ТОО “Channel Trading Ltd.”, 1997. - 376 с.: ил.

3. Аргангельский А.Я. Программирование в С++Builder. – М.: ЗАО  “Издательство БИНОМ”, 2001. - 1152 с.: ил.

4. Холигвэрт, Джарод, Баттерфилд, Дэн, Сворт, Боб, и др. С++Builder 5.  Руководство разработчика, том 2. Сложные вопросы программирования : Пер. с англ. – М.: Издательский дом “Вильямс”, 2001. - 832 с.: ил. – Парал. тит. англ.

5. Архангельский А.Я. Приемы программирования в Delphi. Изд. 2-е, пере раб. и доп. – М.: ООО «Бином-Пресс», 2004 г. – 848 с.: ил.

6. Сайлер, Брайн, Споттс, Джефф. Использование Visual Basic 6. Специальное издание. Пер. с англ. - М.; СПб.; К.; Издательский дом «Вильямс»,  1999 - 832 с.: ил.

7. Гарнаев А.Ю. Microsoft Excel 2000: разработка приложений. – Спб.: БХВ. – Санкт-Петербург, 2000. - 576 с.: ил.

8. Елманова Н., Трепалин С., Тенцер А. Delphi 6 и технология COM. – СПб.: Питер, 2002. – 640 с.: - (Серия «Мастер-класс»).

9. Архангельский А.Я. Программирование в Delphi.Учебник по классическим версиям Delphi. – М.: ООО «Бином-Пресс», 2006 г. – 1152 с.:ил.

10. Троелсен Эндрю. C# и платформа .NET. Библиотека программиста – СПб.: Питер, 2006. – 796 с.: ил.

11. Шеферд Джордж. Программирование на Microsoft Visual C++ .NET. Мастер-класс./Пер. с англ. – 2-е изд. – М.: Издательско-торговый дом «Русская редакция»; СПб.: Питер, 2005. – 928 стр.: ил.997. - 376 с.: ил.

12. Пирогов В. Ю. Программирование на Visual C++ .NET..- СПб.:БХВ- Петербург, 2003.- 800 с., ил.

13. Шилдт Г. C#: учебный курс. - СПб: Питер; К.: Издательская группа BHV, 2003..- 512с.: ил.

14. Микелсен Клаус. Язык программирования C#. Лекции и упражнения. Учебник: Пер. с англ./Клаус Микелсен – СПб.: ООО «ДиаСофтЮП». – 2002. - 656c.

15. Джеф Просиз. Программирование для Microsoft .NET /Пер. с англ. – М.: Издательско-торговый дом «Русская редакция», 2003. – 704 стр.: ил.

16. Экспозито Д. Microsoft ASP.NET 2.0. Базовый курс. Мастер класс / Пер. с ангд. – М.: Издательство «Русская редакция» ; СПб. : Питер , 2007. – 688 стр. : ил.

17. Нейгел Кристиан, Ивбен Билл, Глин Джей, Скиннер Морган, Уотсон Карли. Н45 C# 2005 и платформа .NET 3.0 для профессионалов. : Пер. с анг. – М. : ООО  И.Д. “Вильямс”, 2008. – 1376+416 (на CD) с. : Парал. Тит. Анг.


 

А также другие работы, которые могут Вас заинтересовать

76750. Кость как орган: ее развитие, строение, рост 186.52 KB
  Как орган кость обеспечена сосудами и нервами находящимися в надкостнице а вглубь кости проникающими через питательные отверстия. На 6–8 неделе эмбрионального развития из соединительной ткани начинает формироваться костная например в костях свода черепа такие кости называют первичными покровными. При хрящевом остеогенезе в соединительной ткани появляется хрящ а потом в нем развивается костная ткань что характерно для большинства костей скелета – и такие кости называют вторичными. Разрастание костной ткани в хряще осуществляется...
76751. Позвонки: их строение в различных отделах 191.33 KB
  Отростки processi: поперечные: правый и левый processus trnsversus – для прикрепления мышц и связок; суставные верхние и суставные нижние – processus rticulre superiores et inferiores – для образования межпозвоночных суставов; остистый – processus spinlis – для прикрепления связок и мышц. Атлант tls – первыйшейный позвонок отличительные признаки передняя и задняя дуга – rcus nterior et rcus posterior – для прикрепления мембран и связок; борозды позвоночной артерии – на задней дуге сверху – sulci . vertebrle; передний и задний...
76752. Позвоночный столб в целом 188.39 KB
  Грудной отдел – 12 позвонков – наличие реберных ямок на телах для суставов головки ребра и суставных поверхностей на поперечных отростках для ребернопоперечных суставов Поясничный отдел – 5 позвонков – массивность тела специфическое положение отростков сосцевидные бугорки на верхних суставных отростках. Величина изгибов меняется в зависимости от массы тела и его отдельных частей физической нагрузки мышечного напряжения возраста пола наконец от положения тела при вертикальном она увеличивается горизонтальном уменьшается. С...
76753. Ребра и грудина. Грудная клетка в целом 184.3 KB
  На позвоночном конце ребра находятся: головка с гребнем у IIX ребер и верхней нижней суставными поверхностями покрытыми гиалиновым хрящом у I XI и XII ребер гребень отсутствует; шейка переходящая углом в тело; на переходе – бугорок на 10 верхних ребрах с двумя возвышениями: медиальнонижнее имеет суставную ямку для сочленения с поперечным отростком позвонка к другому возвышению прикрепляется связка; последние два ребра бугорка не имеют у первого ребра бугорок совпадает с вершиной угла. Тело ребра изогнутое у позвоночного конца...
76754. Развитие черепа в онтогенезе 191.91 KB
  Кости лицевого черепа развиваются на основе висцеральных дуг которых закладывается 5 пар а между ними – 5 пар висцеральных карманов старое название жаберные дуги и жаберные карманы. Висцеральные дуги для лицевого черепа. Ядра точки окостенения подразделяются на: первичные 4150 появляющиеся во внутриутробном периоде в костях мозгового черепа их больше всего начало появления 78 недели к рождению они образуют 20 крупных очагов оссификации; вторичные появляющиеся после рождения; в больших костях черепа их мало но между костями в...
76755. Варианты и аномалии костей черепа 181.64 KB
  Теменные кости выраженность теменных бугров особенно у женщин; появление межтеменной кости. Затылочная кость наличие поперечного шва отделяющего верхнюю часть чешуи и образование вставочной дополнительной кости; присутствие более мелких добавочных костей часто расположенных в швах кости швов; значительная выраженность затылочных выступов; уплощение чешуи слабая выраженность борозд или наоборот увеличение изогнутости чешуи и углубление борозд; разнообразные формы большого отверстия костных валиков вокруг внутреннего его края;...
76756. Первая и вторая висцеральные дуги 187.99 KB
  Развитие лицевого (висцерального) черепа определяется мозгом и краниальным (глоточным) отделом первичной кишки, в котором на боковых стенках между висцеральными (жаберными) карманами появляются хрящевые висцеральные (жаберные) дуги, но особое значение для черепа имеют первые две.
76757. Кости лицевого черепа. Глазница 192.12 KB
  Подвисочная поверхность находится сзади тела образуя стенку подвисочной и крылонебной ямок состоит: из бугра верхней челюсти с задними альвеолярными отверстиями для одноименных нервов и сосудов. Глазничная поверхность занимает на теле кости верхнее положение участвуя в образовании нижней стенки глазницы. Носовая поверхность образует латеральную стенку полости носа. Небный отросток носовой гребень по медиальному краю; передняя носовая ость: окончание носового гребня впереди; верхняя носовая поверхность; нижняя небная поверхность...
76758. Височная кость 184.9 KB
  У верхушки пирамиды внутреннее отверстие сонного канала. На передней поверхности пирамиды находятся: каменисточешуйчатая щель хрящевая ростковая зона и отверстие мышечнотрубного канала; дугообразное возвышение от полукружных костных каналов лабиринта; крыша барабанной полости от среднего уха; тройничное вдавление на вершине пирамиды для одноименного нервного узла; расщелины и борозды большого и малого каменистого нервов. На задней поверхности пирамиды располагаются: внутреннее слуховое отверстие и внутренний слуховой проход для YII...