Основи розробки електронного підручника

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Введення

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

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

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

У другому розділі «Обчислювальна система» розглядається характеристики апаратного засобу для коректної роботи програмного засобу.

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

У четвертому розділі «Програмна реалізація» описуються форми вхідних та вихідних даних, функціональні рішення (функції, їх призначення та зв'язок з елементами інтерфейсу), фізична структура (модулі реалізації) і взаємозв'язок модулів, проведене тестування і його результати.

У п'ятому розділі «Опис застосування» вказуються призначення програми, область її застосування, системні вимоги, що пред'являються програмі, а також наводиться опис системи довідки.

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

1 Постановка завдання

1.1 Вимоги до повчальних програм

Застосування представленого програмно-педагогічного засобу передбачає знання основ алгоритмізації та програмування. Для вивчення матеріалів, представлених в розробляється електронному підручнику, необхідна наявність деяких знань про базові принципи об'єктно-орієнтованого програмування (абстракція, обмеження доступу, ієрархія). Також користувач для роботи з даними програмно-педагогічним засобом повинен мати базові знання з мови програмування C + +. Зокрема, необхідно мати певне уявлення про синтаксис мови С + +, його основних операторів і виразах, базових типи даних. Все це потрібно для розуміння представлених у излагаемом матеріалі концепцій і прикладів.

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

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

1.2 Огляд і аналіз існуючих програмно-педагогічних засобів

В даний час існує величезна кількість програмно-педагогічних засобів з програмування на мові С + +. Більшість з них являють собою html-підручники. Однак у багатьох з існуючих навчальних програм відсутня можливість перегляду демонстраційних програм. Крім того, переважно такі кошти не є вузько спеціалізованими, оскільки спрямовані на навчання програмуванню мовою C + + в цілому.

1.3 Інтерфейс

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

2 Обчислювальна система

2.1 Апаратні вимоги

Для нормального функціонування розробленого програмного засобу необхідний персональний комп'ютер з операційною системою MS Windows NT/2000/XP. При цьому мінімальними апаратними вимогами буде така комплектація, при якій функціонування самої операційної системи буде здійснюватися без збоїв і затримок.

2.2 Системні вимоги

Даний програмний засіб тестувалося на ВП Windows XP SP3, при наступному оснащенні PC:

процесор - CPU Intel Celeron 1700 MHz;

Материнська плата - MB Giga-Byte 8PE800-RS2;

Відеокарта - SVGA GeForce MX5200-8x 128MB і SVGA GeForce 2 Ti-8x 64MB;

ОЗУ - DDR RAM 256MB PC-3200 Hynix/DDR400 + Samsung/DDR400;

Вінчестер - Samsung 160Gb

Для нормального функціонування можна використовувати PC з наступного оснащенням:

процесор з частотою 200Mhz і вище;

мінімальний об'єм оперативної пам'яті 32 Mb;

вільне місце на диску 10 Mb;

операційна система Windows 9.x/2000/XP;

клавіатура, мишка.

2.3 Операційна система

Для розробки даного проекту потрібно операційна система сімейства Windows, зокрема Windows XP. Дана ОС містить якісний інтерфейс, надає зручні засоби розробки додатків. Windows XP є на сьогоднішній день однією з найпоширеніших систем серед користувачів програмного забезпечення, тому її використання збільшує ймовірність високого попиту на даний програмний додаток.

3 Проектування завдання

3.1 Опис класів

Тому що при розробці програми використовується інтегрована середовище розробки Borland C + + Builder 6.0, то необхідно навести опис класів, що використовуються при роботі з компонентами бібліотеки VCL - бібліотекою візуальних компонентів.

Клас TObject є базовим класом для всіх інших породжуваних класів. TObject інкапсулює спільне для всіх об'єктів системи C + + Builder функціональне поведінку, а саме:

- Здатність конструктора створювати, а деструктора руйнувати об'єкт-екземпляр класу в динамічній пам'яті. Конструктор TObject повертає покажчик на створюваний об'єкт.

- Інформацію RTTI про ім'я, типі похідного об'єкта і його властивості, які оголошені як _published.

- Підтримку обробки повідомлень.

Більшість цих методів призначені для внутрішнього використання середовищем C + + Builder. Тому всі компоненти повинні породжуватися безпосередньо від класу TComponent або від його нащадків. TComponent, будучи в свою чергу нащадком TObject, успадковує його члени, методи і властивості.

TObject використовується для оголошення простих об'єктів, які не є компонентами і не потребують поточності і присвоєнні.

Клас TPersistent безпосередньо зроблено від TObject. Цей абстрактний клас не визначає жодних спеціальних властивостей або подій, проте його похідні набувають особливі здібності присвоювання і поточності.

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

- Assign дозволяє присвоювати значення властивостям.

- AssignTo дозволяє присвоювати вміст одного об'єкта іншому (наприклад, як робить це похідний від TPersistent клас TClipboard).

- DefineProperties дозволяє визначити процедуру завантаження й збереження в потоці особливих додаткових властивостей. За замовчуванням зберігаються тільки властивості, оголошені як _published.

Клас TComponent безпосередньо зроблено від TPersistent. Як вже було сказано, всі компоненти є похідними від TComponent і можуть знаходиться в його володінні. TComponent інкапсулює спільне для всіх компонент функціональне поведінка, обумовлене властивостями і методами, які забезпечують:

- Перенесення на форму з Палітри компонентів і маніпуляції у вікні Редактора форм.

- Здатність володіння та обслуговування інших компонентів.

-Спеціальні характеристики поточності, з якими може маніпулювати Інспектор об'єктів на етапі проектування.

- Можливість маніпулювання деякими невидимими компонентами на стадії проектування.

Клас TComponent визначає ряд особливих властивостей:

- Owner - посилається на власника компоненти.

- ComponentCount - число компонент у переліку, якими володіє даний компонент.

- Componentlndex - індекс компоненти у переліку, починаючи з 0.

- Components - Властивість, що містить перелік компонентів, якими володіє даний компонент.

- ComponentState - поточний стан компоненти.

- ComponentStyle - стиль, що визначає поведінку компоненти.

- Name - ім'я компоненти.

- Tag - властивість типу int, яке не має визначеного значення і може містити будь-які дані або покажчики, на розсуд програміста.

Клас TComponent визначає ряд методів, які надають об'єкту право володіння іншими компонентами і можливість доступу до них за допомогою Інспектора об'єктів:

- Destroying і DestroyComponents встановлюють атрибути даного компоненту і компонентів, якими вона володіє, в стан, що вказує на те, що вони підлягають знищенню.

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

- InsertComponent додає компоненту, передану в якості параметра, до переліку компонентів, якими володіє даний компонент, а RemoveComponent видаляє компоненту з цього переліку.

- FindComponent повертає покажчик примірника компоненти, про яку відомо тільки ім'я, але невідома посилання на власника

Клас TControl визначає загальні для видимих ​​компонент члени даних, методи і події.

Оскільки елементи TControl мають здатність відображати себе, деякі його властивості оперують з положенням, розміром і видом об'єкта (Top, Left, Width, Height і Cursor, Hint), а інші властивості відносяться до параметрів області клієнта (ClientRect, ClientWidth і ClientHeight).

TControl також вводить властивості, що встановлюють видимість, доступність, колір і шрифт елементів управління (Visible, Enabled, Color і Font). Властивості Text і Caption забезпечують встановлення редагованих текстів і назв.

Наявність властивості Parent (мати, батько), що містить відповідне посилання, обумовлено можливістю класу TControl мати батька. Цей батько може бути похідним від TWinControl, оскільки батьки зобов'язані бути віконними елементами управління.

TControl містить ряд подій, що виникають при маніпуляціях мишею над, видимими елементами управління (OnClick, OnDblClick, OnMouseDown, OnMouseMove, OnMouseUp, OnDragOver, OnDragDrop і OnEndDrag).

Більшість компонентів є похідними від TWinControl або TGraphicControl. Ці базові класи розглядаються нижче.

Клас TWinControl інкапсулює віконні елементи управління з дескрипторами. Деякі похідні від TWinControl (компоненти TEdit, TListBox і TComboBox) інкапсулюють стандартні елементи управління Windows - поля редагування, прості і комбіновані списки і т.д. Тому програмісту не доведеться маніпулювати з ними за допомогою стандартних функцій Windows API, а користуватися властивостями і методами, наданими самими компонентами.

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

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

- Controls. Містить список елементів управління, для яких TWinControl є батьком.

- ControlCount. Містить число елементів управління, для яких TWinControl є батьком.

- Ctl3d. Визначає, чи потрібно тривимірне відображення компоненти.

- Handle. Посилається на віконний дескриптор об'єкту Windows, який інкапсулює TWinControl. Це властивість передається тим стандартних функцій Windows API, які беруть дескриптор як параметр.

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

- Showing. Вказує, видима чи невидима компонента.

- TabStop. Вказує, чи можна використовувати клавішу табуляції для вибору потрібної частини.

- TabOrder. Визначає позиції табулятора вибору компонент.

Методи TWinControl головним чином орієнтовані на розробників компонент і призначені для управління фокусом, отримання статусної інформації, диспетчеризації повідомлень і позиціонування:

- Broadcast використовується для розсилки повідомлень всім нащадкам TWinControl.

- CanFocus повертає логічне значення, яке визначає, чи може TWinControl прийняти фокус вводу. Наприклад, компонента не зможе прийняти фокус, якщо її властивість Visible має значення false.

- ContainsControl визначає, чи міститься даний елемент управління всередині класу TWinControl. Цей метод не повідомляє про те, чи є даний елемент нащадком по відношенню до TWinControl. Наприклад, зовнішній клас TWinControl може бути батьком іншого елемента, і ця батьківська наступність може тривати далі. Проте, всі внутрішні елементи містяться в зовнішньому класі TWinControl.

- ContrblAtPos повертає посилання на нащадка, якщо елемент керування укладений в заданих координатах області клієнта батька. Таким чином можна знайти відносне положення нащадка по відношенню до батьків.

- DisableAlign і EnableAlign використовуються для тимчасової заборони або дозволу вирівнювання компонент всередині TWinControl.

- Focused повертає значення true, якщо TWinControl знаходиться у фокусі введення, тобто є активним елементом форми, на якій він розміщений.

- HandleAllocated повертає значення true, якщо елемент керування має віконний дескриптор. HandleNeeded створює новий дескриптор, якщо він ще не був створений. Аналогічну дію виконується автоматично при прямому зверненні до властивості Handle.

- InsertControl додає елемент керування до властивості Controls (типу масив), роблячи TWinControl своїм батьком. Кращий спосіб додати нащадка під час роботи програми - просто присвоїти посилання на батька властивості Parent. RemoveControl видаляє елемент управління з Controls.

- Invalidate і Repaint виконують перемальовування компоненти.

- SetBounds встановлює властивості кордонів компоненти (Left, Top, Width, Height) для TWinControl. Пряме зміна кожного із зазначених властивостей менш ефективно, оскільки щоразу пов'язане з перемальовуванням

- SetFocus активізує TWinControl.

TWinControl має події, викликані взаємодією з клавіатурою і зміною фокусу (OnKeyDown, OnKey Press, OnKeyUp, OnEnter і OnExif).

Розробляються компоненти рідко відбуваються безпосередньо від TWinControl. Краще виробляти нові компоненти від загального класу TCustomControl, який надає канву для малювання і обробляє повідомлення WM_PAINT, або від деяких більш спеціалізованих класів (TButtonControl, TCustomComboBox, TCustomEdit або TCustomListBox).

Похідні від абстрактного класу TGraphicControl, на відміну від TWinControl, не мають віконного дескриптора, не можуть прийняти фокус введення і не можуть бути батьками інших елементів управління.

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

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

TGraphicControl покладає на користувача операції перемальовування. Цей клас містить властивість Canvas (Канва), яке забезпечує доступ до відведеної для малювання поверхні, і віртуальний метод Paint, який викликається у відповідь на повідомлення WM_PAINT, прийняте батьківським елементом управління.

Крім того, при роботі з формами, змістом, браузерами, панелями, кнопками, рамками і написами використовуються відповідно класи TForm, TTreeView, TCppWebBrowser, TPanel, TBitBtn, TBevel і TLabel.

3.2 Ієрархія класів

У розробляється програмному продукті присутня ієрархія класів, представлена ​​на малюнку 1.

Рисунок 1 - Ієрархія класів

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

Як інструментальний засіб реалізації розроблюваного програмного продукту була обрана інтегрована середовище розробки Borland C + + Builder 6.0.

Вибір даного інструментального кошти не випадковий і заснований на тому, що дана ІСР має ряд достоїнств. Основні переваги Borland C + + Builder в порівнянні з іншими засобами розробки додатків:

- Швидкість розробки програми.

- Висока продуктивність розробленого додатку за рахунок отримання 32-розрядного виконуваного коду за допомогою оптимизирующего компілятора.

- Невисокі вимоги розробленого додатка до ресурсів комп'ютера.

- Можливість повного доступу до функцій операційних систем сімейства Windows.

- Можливість модернізації середовища розробки за рахунок вбудовування в неї нових компонент, інструментів, експертів

- Вдала опрацювання ієрархії об'єктів

- Використання для написання коду одного з найбільш популярних мов програмування С + +.

4 Програмна реалізація

4.1 Форми вхідних і вихідних даних

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

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

4.2 Функціональні рішення

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

При запуску програми створюється вступна форма (Form1), яка показує запрошення до запуску головної форми. При натисканні кнопки "Запуск підручника" (TForm1:: SpeedButton1Click) запускається головна форма (Form2). На ній зображено ієрархічна структура розділів, і поле для відображення теорії.

Для вибору певного розділу слід зробити подвійне натискання на цікавить назва розділу після чого викликається функція TForm2:: TreeView1DblClick. Дана функція в залежності від того, яка тема вибрана у змісті, автоматично формує шлях до файлу з темою (dat-документу), завантажує його у вікно браузера тем.

Для переходу до попереднього або наступного розділу передбачені кнопки "Попередня", "Наступна" при натисканні яких викликається подія TForm2:: SpeedButton2Click і TForm2:: SpeedButton3Click відповідно.

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

Для зміни шрифту варто вибрати Опції -> Шрифт після чого запускається стандартне вікно вибору шрифту FontDialog в якому можна вибрати шрифт, стиль, розмір, видозміна і колір тексту відображається на головній формі.

Для пошуку слід вибрати Опції -> Пошук після чого запускається стандартне вікно пошуку FindDialog в якому можна задати текст для пошуку (пошук здійснюється у відкритому в даний момент розділі).

Відображення спливаючих підказок може бути включено і відключено, яке здійснюється при виборі Параметри -> Спливаючі підказки.

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

При закритті головної форми викликається подія TForm2:: FormClose, яке викликає функцію Application-> Terminate ().

4.3 Модулі реалізації

У розроблений проект входять одинадцять модулів - файл проекту (головний програма - файл Project1.cpp), заголовний файл запрошення форми (опис класу TForm1-файл Unit1.h), файл з реалізацією функцій-членів класу TForm1 (файл Unit1.cpp), заголовний файл головної форми (опис класу TForm2-файл Unit2.h), файл з реалізацією функцій-членів класу TForm2 (файл Unit2.cpp), заголовний файл форми про автора (опис класу TForm3-файл Unit3.h), файл з реалізацією функцій- членів класу TForm3 (файл Unit3.cpp), заголовний файл форми про програму (опис класу TForm4-файл Unit4.h), файл з реалізацією функцій-членів класу TForm4 (файл Unit4.cpp).

4.4 Взаємозв'язок модулів

Найбільш поширена зв'язок, яка може існувати між двома модулями, - компіляційний залежність. У C + + така залежність вказується директивою # include (файл Form2.cpp містить директиву # include до всіх модулів програми)

4.5 Тестування

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

5 Опис застосування

5.1 Призначення програми

Дана програма являє собою програмно-педагогічний засіб і призначена для вивчення матеріалів по предмету C + +.

5.2 Область застосування

Розроблений програмний продукт може застосовуватися як одиночним користувачем з метою самостійного опрацювання матеріалу з мови С + +, так і в навчальних закладах як допоміжний засіб у навчальному процесі.

5.3 Система допомоги

У програмі реалізована спливаюча довідка.

Висновок

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

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

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

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

Список використаних джерел

1. Ліберті, Джесс. Освой самостійно С + + за 21 день: 3-е изд, пров. з англ.: Уч. сел. - М.: Видавничий дім «Вільямс», 2000. - 816 с.: Іл. - Хрон. тит. англ.

2. Буч Г. Об'єктно-орієнтований аналіз та проектування з прикладами додатків на С + +. 2-е вид.: Пер. з англ. - М.: Видавництво Біном, СПб.: Невський діалект, 1999.

3. Прата Стівен. Мова програмування C + +. Лекції та упражненія.Учебнік.: Пер. з англ. - М.: Видавництво ДіаСофт, 2004.

Додаток А Текст програми

/ / Файл з головним програмою Project1.cpp

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

# Include <vcl.h>

# Pragma hdrstop

USEFORM ("Unit1.cpp", Form1);

USEFORM ("Unit2.cpp", Form2);

USEFORM ("Unit3.cpp", Form3);

USEFORM ("Unit4.cpp", Form4);

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

# Include "Unit1.h"

HRGN Rgn;

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

WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application-> Initialize ();

Application-> CreateForm (__classid (TForm1), & Form1);

Application-> CreateForm (__classid (TForm3), & Form3);

Application-> CreateForm (__classid (TForm4), & Form4);

{

Rgn = CreateEllipticRgn (0,0, Form1-> Width, Form1-> Height);

SetWindowRgn (Form1-> Handle, Rgn, True);

}

Application-> CreateForm (__classid (TForm2), & Form2);

Application-> Run ();

}

catch (Exception & exception)

{

Application-> ShowException (& exception);

}

return 0;

}

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

/ / Заголовний файл Unit1.H з оголошенням класу форми Form1

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

# Ifndef Unit1H

# Define Unit1H

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

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include <Menus.hpp>

# Include <Buttons.hpp>

# Include <ExtCtrls.hpp>

# Include <ImgList.hpp>

# Include <jpeg.hpp>

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

class TForm1: public TForm

{

__published: / / IDE-managed Components

TSpeedButton * SpeedButton1;

TSpeedButton * SpeedButton2;

TImage * logo;

void __fastcall SpeedButton1Click (TObject * Sender);

void __fastcall SpeedButton2Click (TObject * Sender);

void __fastcall SpeedButton1MouseMove (TObject * Sender,

TShiftState Shift, int X, int Y);

void __fastcall FormMouseMove (TObject * Sender, TShiftState Shift,

int X, int Y);

void __fastcall SpeedButton2MouseMove (TObject * Sender,

TShiftState Shift, int X, int Y);

private: / / User declarations

public: / / User declarations

__fastcall TForm1 (TComponent * Owner);

};

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

extern PACKAGE TForm1 * Form1;

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

# Endif

/ / Заголовний файл Unit2.H з оголошенням класу головної форми Form2

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

# Ifndef Unit2H

# Define Unit2H

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

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include <Buttons.hpp>

# Include <Menus.hpp>

# Include <ComCtrls.hpp>

# Include <Dialogs.hpp>

# Include <ImgList.hpp>

# Include <ExtCtrls.hpp>

# Include <ToolWin.hpp>

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

class TForm2: public TForm

{

__published: / / IDE-managed Components

TMainMenu * MainMenu1;

TMenuItem * N1;

TMenuItem * N2;

TMenuItem * N3;

TMenuItem * N4;

TSpeedButton * SpeedButton1;

TTreeView * TreeView1;

TMemo * Memo1;

TMenuItem * N5;

TMenuItem * N6;

TFontDialog * FontDialog1;

TSpeedButton * SpeedButton2;

TSpeedButton * SpeedButton3;

TFindDialog * FindDialog1;

TMenuItem * N7;

TMenuItem * N9;

TSpeedButton * SpeedButton4;

TSaveDialog * SaveDialog1;

void __fastcall SpeedButton1Click (TObject * Sender);

void __fastcall TreeView1DblClick (TObject * Sender);

void __fastcall FormClose (TObject * Sender, TCloseAction & Action);

void __fastcall N6Click (TObject * Sender);

void __fastcall SpeedButton3Click (TObject * Sender);

void __fastcall SpeedButton2Click (TObject * Sender);

void __fastcall TreeView1KeyDown (TObject * Sender, WORD & Key,

TShiftState Shift);

void __fastcall Memo1KeyDown (TObject * Sender, WORD & Key,

TShiftState Shift);

void __fastcall N4Click (TObject * Sender);

void __fastcall N3Click (TObject * Sender);

void __fastcall N7Click (TObject * Sender);

void __fastcall FindDialog1Find (TObject * Sender);

void __fastcall N9Click (TObject * Sender);

void __fastcall SpeedButton4Click (TObject * Sender);

private: / / User declarations

public: / / User declarations

__fastcall TForm2 (TComponent * Owner);

};

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

extern PACKAGE TForm2 * Form2;

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

# Endif

/ / Заголовний файл Unit3.H з оголошенням класу форми Form3

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

# Ifndef Unit3H

# Define Unit3H

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

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include <ExtCtrls.hpp>

# Include <ImgList.hpp>

# Include <Buttons.hpp>

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

class TForm3: public TForm

{

__published: / / IDE-managed Components

TSpeedButton * SpeedButton1;

TLabel * Label1;

TLabel * Label2;

TLabel * Label3;

TLabel * Label4;

void __fastcall SpeedButton1Click (TObject * Sender);

private: / / User declarations

public: / / User declarations

__fastcall TForm3 (TComponent * Owner);

};

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

extern PACKAGE TForm3 * Form3;

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

# Endif

/ / Заголовний файл Unit4.H з оголошенням класу форми Form4

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

# Ifndef Unit4H

# Define Unit4H

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

# Include <Classes.hpp>

# Include <Controls.hpp>

# Include <StdCtrls.hpp>

# Include <Forms.hpp>

# Include <ExtCtrls.hpp>

# Include <ImgList.hpp>

# Include <Buttons.hpp>

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

class TForm4: public TForm

{

__published: / / IDE-managed Components

TSpeedButton * SpeedButton1;

TLabel * Label1;

TLabel * Label2;

TLabel * Label3;

TLabel * Label4;

TLabel * Label5;

void __fastcall SpeedButton1Click (TObject * Sender);

private: / / User declarations

public: / / User declarations

__fastcall TForm4 (TComponent * Owner);

};

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

extern PACKAGE TForm4 * Form4;

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

# Endif

/ / Файл Unit1.cpp для форми Form1

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

# Include <vcl.h>

# Pragma hdrstop

# Include "Unit1.h"

# Include "Unit2.h"

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

# Pragma package (smart_init)

# Pragma resource "*. dfm"

TForm1 * Form1;

int c, c1;

bool fl, fl2;

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

__fastcall TForm1:: TForm1 (TComponent * Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm1:: SpeedButton1Click (TObject * Sender)

{

Form2-> Visible = true;

Form1-> Visible = false;

}

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

void __fastcall TForm1:: SpeedButton2Click (TObject * Sender)

{

Application-> Terminate ();

}

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

void __fastcall TForm1:: SpeedButton1MouseMove (TObject * Sender,

TShiftState Shift, int X, int Y)

{

fl = true;

}

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

void __fastcall TForm1:: FormMouseMove (TObject * Sender, TShiftState Shift,

int X, int Y)

{

fl = false;

}

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

void __fastcall TForm1:: SpeedButton2MouseMove (TObject * Sender,

TShiftState Shift, int X, int Y)

{

Form1-> Repaint ();

}

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

/ / Файл Unit2.cpp для головної форми Form2

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

# Include <vcl.h>

# Pragma hdrstop

# Include "Unit2.h"

# Include "Unit1.h"

# Include "Unit3.h"

# Include "Unit4.h"

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

# Pragma package (smart_init)

# Pragma resource "*. dfm"

TForm2 * Form2;

int i = 0;

bool fg1, fg2;

int v1, v2, c2;

int SelPos;

AnsiString a;

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

__fastcall TForm2:: TForm2 (TComponent * Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm2:: SpeedButton1Click (TObject * Sender)

{

Application-> Terminate ();

}

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

void __fastcall TForm2:: TreeView1DblClick (TObject * Sender)

{

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 1)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/1.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 2)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/2.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 3)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/3.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 4)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/4.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 5)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/5.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 6)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/6.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 7)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/7.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 8)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/8.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 9)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/9.dat");

a = Form2-> Memo1-> Lines-> Text;

};

if (Form2-> TreeView1-> Selected-> AbsoluteIndex == 10)

{Form2-> Memo1-> Lines-> LoadFromFile ("pages/10.dat");

a = Form2-> Memo1-> Lines-> Text;

};

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

}

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

void __fastcall TForm2:: FormClose (TObject * Sender, TCloseAction & Action)

{

Application-> Terminate ();

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

void __fastcall TForm2:: N6Click (TObject * Sender)

{If (FontDialog1-> Execute ())

{Form2-> Memo1-> Font = Form2-> FontDialog1-> Font;

Form2-> TreeView1-> Font = Form2-> FontDialog1-> Font;

}

}

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

void __fastcall TForm2:: SpeedButton3Click (TObject * Sender)

{

int z = Form2-> TreeView1-> Items-> Owner-> Selected-> SelectedIndex;

if (z <Form2-> TreeView1-> Items-> Count-1) {

Form2-> TreeView1-> Items-> Item [z +1] -> Selected = true;

Form2-> TreeView1-> OnDblClick (Sender);}

}

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

void __fastcall TForm2:: SpeedButton2Click (TObject * Sender)

{

int z = Form2-> TreeView1-> Items-> Owner-> Selected-> SelectedIndex;

if (z> 0) {

Form2-> TreeView1-> Items-> Item [z-1] -> Selected = true;

Form2-> TreeView1-> OnDblClick (Sender);}

}

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

void __fastcall TForm2:: TreeView1KeyDown (TObject * Sender, WORD & Key,

TShiftState Shift)

{

if (Key == VK_RETURN) {Form2-> SpeedButton3-> OnClick (Sender);}

}

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

void __fastcall TForm2:: Memo1KeyDown (TObject * Sender, WORD & Key,

TShiftState Shift)

{

if (Key == VK_RETURN) {Form2-> SpeedButton3-> OnClick (Sender);}

}

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

void __fastcall TForm2:: N4Click (TObject * Sender)

{

Form3-> Visible = true;

}

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

void __fastcall TForm2:: N3Click (TObject * Sender)

{

Form4-> Visible = true;

}

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

void __fastcall TForm2:: N7Click (TObject * Sender)

{

Form2-> FindDialog1-> Execute ();

}

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

void __fastcall TForm2:: FindDialog1Find (TObject * Sender)

{AnsiString d;

for (i = 0; i <Form2-> FindDialog1-> FindTextA.Length (); i + +)

{D = d + i;}

if (Form2-> FindDialog1-> Options.Contains (frFindNext)) {

SelPos = a.Pos (Form2-> FindDialog1-> FindTextA);

if (SelPos> 0) {

Memo1-> SelStart = SelPos-1;

Memo1-> SelLength = Form2-> FindDialog1-> FindTextA.Length ();

a.Delete (SelPos, Form2-> FindDialog1-> FindTextA.Length ());

a.Insert (d, SelPos);

}

else {

ShowMessage ("Текст '" + Form2-> FindDialog1-> FindTextA + "' не знайдено");

a = Form2-> Memo1-> Lines-> Text;}

Form2-> SetFocus ();

Form2-> Memo1-> SetFocus ();}

}

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

void __fastcall TForm2:: N9Click (TObject * Sender)

{

if (Form2-> N9-> Checked) {

Form2-> N9-> Checked = false;

Form2-> SpeedButton1-> ShowHint = false;

Form2-> SpeedButton2-> ShowHint = false;

Form2-> SpeedButton3-> ShowHint = false;

Form2-> TreeView1-> ShowHint = false;

}

else {Form2-> N9-> Checked = true;

Form2-> SpeedButton1-> ShowHint = true;

Form2-> SpeedButton2-> ShowHint = true;

Form2-> SpeedButton3-> ShowHint = true;

Form2-> TreeView1-> ShowHint = true;

}

}

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

void __fastcall TForm2:: SpeedButton4Click (TObject * Sender)

{

if (SaveDialog1-> Execute ()) {

Memo1-> Lines-> SaveToFile (SaveDialog1-> FileName);

}

ChDir (ExtractFilePath (Application-> ExeName));

}

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

/ / Файл Unit3.cpp для форми Form3

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

# Include <vcl.h>

# Pragma hdrstop

# Include "Unit3.h"

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

# Pragma package (smart_init)

# Pragma resource "*. dfm"

TForm3 * Form3;

int c3;

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

__fastcall TForm3:: TForm3 (TComponent * Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm3:: SpeedButton1Click (TObject * Sender)

{

Form3-> Close ();

}

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

Файл Unit4.cpp для форми Form4

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

# Include <vcl.h>

# Pragma hdrstop

# Include "Unit4.h"

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

# Pragma package (smart_init)

# Pragma resource "*. dfm"

TForm4 * Form4;

int c4;

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

__fastcall TForm4:: TForm4 (TComponent * Owner)

: TForm (Owner)

{

}

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

void __fastcall TForm4:: SpeedButton1Click (TObject * Sender)

{

Form4-> Close ();

}

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

Додаток Б

Діаграма варіантів використання

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
84.2кб. | скачати


Схожі роботи:
Розробка електронного підручника Криміналістика
Розробка електронного підручника по темі Моделювання ліфа 3
Розробка електронного підручника по темі Моделювання ліфа
Розробка електронного підручника по темі Моделювання ліфа 2
Правові основи використання електронного цифрового підпису в цивіл
Правові основи використання електронного цифрового підпису в цивіл
Правові основи використання електронного цифрового підпису в цивільному обігу
Основи розробки психологічного дослідження
Основи розробки родовищ корисних копалин
© Усі права захищені
написати до нас