Для перехода к предыдущему или следующему разделу предусмотрены кнопки "Предыдущая", "Следующая" при нажатии которых вызывается событие 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 Тестирование
Тестирование программы проводилось в процессе разработки программы и по завершению этой разработки. В ходе тестирования проверялась работоспособность каждой операции, которую выполняет программа, моделировались все возможные действия пользователей и проверялась реакция программы на них.
Данная программа представляет собой программно-педагогическое средство и предназначена для изучения материалов по предмету C++.
Разработанный программный продукт может применяться как одиночным пользователем в целях самостоятельной проработки материала по языку С++, так и в учебных заведениях в качестве вспомогательного средства в учебном процессе.
В программе реализована всплывающая справка.
Заключение
Поставленная задача выполнена полностью. Разработанный электронный учебник можно успешно применять на практике, внедряя его в учебный процесс. Однако, как и в любом приложении в программе описанной выше имеются множество недостатков.
В частности у программы отсутствует возможность контроля знаний путем проведения тестирования, что не является плюсом представленного продукта.
Кроме того, пользовательский интерфейс продуман не достаточно профессионально, что вызвано отсутствием опыта у разработчика.
Несмотря на указанные недостатки, реализованное программное средство пригодно для использования в ходе учебного процесса и для самостоятельного изучения тем по предмету язык программирования 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,