Міністерство освіти і науки України
ФАКУЛЬТЕТ ІНФОРМАТИКИ
КАФЕДРА ІНФОРМАЦІЙНИХ УПРАВЛЯЮЧИХ СИСТЕМ ТА ТЕХНОЛОГІЙ
КУРСОВА РОБОТА
Тема:
Проектування користувальницького інтерфейсу в C++ Builder
Підписи членів комісії
Зміст
Форми є основою проектів C++ Builder. Створення користувальницького інтерфейсу проекту полягає в додаванні у вікно форми елементів обєктів C++ Builder, називаних компонентами. Компоненти C++ Builder розташовуються на палітрі компонентів, виконаної у вигляді многостранічного блокнота. Важлива особливість C++ Builder полягає в тому, що він дозволяє створювати власні компоненти та набудовувати палітру компонентів, а також створювати різні версії палітри компонентів для різних проектів.
Для додавання компонента у форму можна вибрати мишею потрібний компонент у палітрі та клацнути лівою клавішею миші в потрібнім місці проектованої форми. Компонент зявиться на формі, і далі його можна переміщати, міняти розміри та інші характеристики.
Кожен компонент C++ Builder має три різновиди характеристик: властивості, події та методи.
Якщо вибрати компонент із палітри та додати його до форми, інспектор обєктів автоматично покаже властивості та події, які можуть бути використані з тім компонентом. У верхній частині інспектора обєктів є список, що випадає, що дозволяє вибирати потрібний обєкт із наявних на формі.
Рис.3. Інспектор обєктів
При визначенні властивостей компонента під час проектування потрібно вибрати компонент на формі, відкрити сторінку властивостей в інспекторі обєктів, вибрати обумовлена властивість і змінити його за допомогою редактора властивостей (це може бути пусте поле для уведення тексту або числа, що випадає список, що розкривається список, діалогова панель і т.д.).
Для того, щоб додати оброблювач подій, потрібно вибрати на формі за допомогою миші компонент, якому необхідний оброблювач подій, потім відкрити сторінку подій інспектори обєктів і двічі клацнути лівою клавішею миші на колонку з поруч із подією, щоб змусити C++ Builder згенерувати прототип оброблювача подій і показати його в редакторі коду. При цьому автоматично генерується текст порожньої функції, і редактор відкривається в тім місці, де варто вводити код. Курсор позиціюється усередині операторних дужок { ... }. Далі потрібно ввести код, що повинен виконуватися при настанні події. Оброблювач подій може мати параметри, які вказуються після імені функції в круглих дужках.
Рис.4. Прототип оброблювача подій.
За замовчуванням проект спочатку містить файли для однієї форми та вихідного коду одного модуля. Однак більшість проектів містять кілька форм і модулів. Щоб додати модуль або форму до проекту, потрібно клацнути правою кнопкою миші та вибрати пункт New Form з контекстного меню. Можна також додавати існуючі форми та модулі до проекту, використовуючи кнопку Add контекстного меню менеджера проектів і вибираючи модуль або форму, яку потрібно додати. Форми та модулі можна видалити в будь-який момент протягом розробки проекту. Однак, через те, що форма звязані завжди з модулем, не можна видалити одне без видалення іншого, за винятком случаючи, коли модуль не має звязку з формою. Видалити модуль із проекту можна, використовуючи кнопку Remove менеджера проектів.
Якщо вибрати кнопку Options у менеджері проектів, відкриється діалогова панель опцій проекту, у якій можна вибрати головну форму проекту, визначити, які форми будуть створюватися динамічно, які параметри компіляції модулів (у тому числі створених в Delphi 2.0, тому що C++ Builder може включати їх у проекти) і компонування.
Рис. 6. Установка опцій проекту
Важливим елементом середовища розробки C++ Builder є контекстне меню, яке з`являється при натисканні на праву клавішу миші та дозволяє швидкий доступ до найбільше часто використовуваних команд.
Зрозуміло, C++ Builder має убудовану систему контекстно-контекстно-залежної допомоги, доступної для будь-якого елемента інтерфейсу та довідкової інформації, що є великим джерелом, про C++ Builder.
Практична частина
Середою розробки був вибраний інструментарій C++ Builder. Програма складається з 6 основних модулей лістинг який проводиться нище. Зауважимо лише, що вся текстова інформації системи навчання міститься у відповідних .DOC файлах, що дозволяє досить просто та оперативно управляти самою програмою.
Лістинг 1. (project.cpp)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
USEFORM("Unit2.cpp", Form2);
USEFORM("Unit3.cpp", Form3);
USEFORM("Unit4.cpp", Form4);
USEFORM("Unit5.cpp", Form5);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->CreateForm(__classid(TForm3), &Form3);
Application->CreateForm(__classid(TForm4), &Form4);
Application->CreateForm(__classid(TForm5), &Form5);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
Лістинг 2. (Unit1.cpp)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
DrawScene();
Yield();
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
BOOL bSetupPixelFormat(HDC hdc)
{
PIXELFORMATDESCRIPTOR pfd, *ppfd;
int pixelformat;
ppfd = &pfd;
ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
ppfd->nVersion = 1;
ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER;
ppfd->dwLayerMask = PFD_MAIN_PLANE;
ppfd->iPixelType = PFD_TYPE_COLORINDEX;
ppfd->cColorBits = 8;
ppfd->cDepthBits = 16;
ppfd->cAccumBits = 0;
ppfd->cStencilBits = 0;
if ( (pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0 )
{
MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
return FALSE;
}
if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
{
MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
return FALSE;
}
return TRUE;
}
void TForm2::DrawScene()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix();
latitude += latinc;
longitude += longinc;
polarView( radius, 0, latitude, longitude );
glIndexi(RED_INDEX);
glCallList(CONE);
glIndexi(BLUE_INDEX);
glCallList(GLOBE);
glIndexi(GREEN_INDEX);
glPushMatrix();
glTranslatef(0.8F, -0.65F, 0.0F);
glRotatef(30.0F, 1.0F, 0.5F, 1.0F);
glCallList(CYLINDER);
glPopMatrix();
glPopMatrix();
SwapBuffers(ghDC);
}
GLvoid TForm2::resize( GLsizei width, GLsizei height )
{
GLfloat aspect;
glViewport( 0, 0, width, height );
aspect = (GLfloat) width / height;
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0, aspect, 3.0, 7.0 );
glMatrixMode( GL_MODELVIEW );
}
GLvoid TForm2::createObjects()
{
GLUquadricObj *quadObj;
glNewList(GLOBE, GL_COMPILE);
quadObj = gluNewQuadric ();
gluQuadricDrawStyle (quadObj, GLU_LINE);
gluSphere (quadObj, 1.5, 16, 16);
glEndList();
glNewList(CONE, GL_COMPILE);
quadObj = gluNewQuadric ();
gluQuadricDrawStyle (quadObj, GLU_FILL);
gluQuadricNormals (quadObj, GLU_SMOOTH);
gluCylinder(quadObj, 0.3, 0.0, 0.6, 15, 10);
glEndList();
glNewList(CYLINDER, GL_COMPILE);
glPushMatrix ();
glRotatef ((GLfloat)90.0, (GLfloat)1.0, (GLfloat)0.0, (GLfloat)0.0);
glTranslatef ((GLfloat)0.0, (GLfloat)0.0, (GLfloat)-1.0);
quadObj = gluNewQuadric ();
gluQuadricDrawStyle (quadObj, GLU_FILL);
gluQuadricNormals (quadObj, GLU_SMOOTH);
gluCylinder (quadObj, 0.3, 0.3, 0.6, 12, 2);
glPopMatrix ();
glEndList();
}
GLvoid TForm2::initializeGL(GLsizei width, GLsizei height)
{
GLfloat maxObjectSize, aspect;
GLdouble near_plane;
glClearIndex( (GLfloat)BLACK_INDEX);
glClearDepth( 1.0 );
glEnable(GL_DEPTH_TEST);
glMatrixMode( GL_PROJECTION );
aspect = (GLfloat) width / height;
gluPerspective( 45.0, aspect, 3.0, 7.0 );
glMatrixMode( GL_MODELVIEW );
near_plane = 3.0;
maxObjectSize = 3.0F;
radius = near_plane + maxObjectSize/2.0;
latitude = 0.0F;
longitude = 0.0F;
latinc = 6.0F;
longinc = 2.5F;
createObjects();
}
void TForm2::polarView(GLdouble radius, GLdouble twist, GLdouble latitude,
GLdouble longitude)
{
glTranslated(0.0, 0.0, -radius);
glRotated(-twist, 0.0, 0.0, 1.0);
glRotated(-latitude, 1.0, 0.0, 0.0);
glRotated(longitude, 0.0, 0.0, 1.0);
}
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
/* Timer1->Enabled = false;
*/
if (ghRC)
wglDeleteContext(ghRC);
if (ghDC)
ReleaseDC(Handle, ghDC);
MediaPlayer1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
ghDC = GetDC(Handle);
if (!bSetupPixelFormat(ghDC))
Close();
ghRC = wglCreateContext(ghDC);
wglMakeCurrent(ghDC, ghRC);
initializeGL(ClientRect.Right, ClientRect.Bottom);
MediaPlayer1->Open();
MediaPlayer1->Play();
ProgressBar1->Position = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
MediaPlayer1->Close();
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormResize(TObject *Sender)
{
resize(ClientRect.Right, ClientRect.Bottom);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Timer2Timer(TObject *Sender)
{
ProgressBar1->Position++;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int step=0;
TForm3::nextstep(){
switch(step){
case 0:
deltatime(300);
break;
case 1:
MediaPlayer1->FileName = "data765888.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 2:
deltatime(1000);
break;
case 3:
Shape3->Visible=true;
deltatime(300);
break;
case 4:
MediaPlayer1->FileName = "data9564334.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 5:
Label1->Visible = false;
Label2->Visible = false;
Label3->Visible = false;
Label4->Visible = false;
Label5->Visible = false;
Label6->Visible = false;
Label7->Visible = false;
Label8->Visible = false;
Label9->Visible = false;
Label13->Visible = false;
Shape3->Visible=false;
/* Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
Label15->Visible = false;
Label16->Visible = false;*/
Label10->Visible = true;
Label11->Visible = true;
Label12->Visible = true;
Label14->Visible = true;
deltatime(300);
break;
case 6:
MediaPlayer1->FileName = "data533677.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 7:
deltatime(400);
break;
case 8:
Label1->Visible = true;
Label2->Visible = true;
Label3->Visible = true;
Label4->Visible = true;
Label5->Visible = true;
Label6->Visible = true;
Label7->Visible = true;
Label8->Visible = true;
Label9->Visible = true;
Label13->Visible = true;
Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
deltatime(300);
break;
case 9:
Shape2->Visible=true;
deltatime(300);
break;
case 10:
MediaPlayer1->FileName = "data822567.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 11:
deltatime(400);
break;
case 12:
Shape2->Visible=false;
deltatime(300);
break;
case 13:
MediaPlayer1->FileName = "data6345676.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 14:
deltatime(400);
break;
case 15:
Label1->Visible = false;
Label3->Visible = false;
Label4->Visible = false;
Label5->Visible = false;
Label8->Visible = false;
Label9->Visible = false;
Label13->Visible = false;
deltatime(300);
break;
case 16:
MediaPlayer1->FileName = "data123423.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 17:
deltatime(300);
break;
case 18:
Label1->Visible = true;
Label2->Visible = true;
Label3->Visible = true;
Label4->Visible = true;
Label5->Visible = true;
Label6->Visible = true;
Label7->Visible = true;
Label8->Visible = true;
Label9->Visible = true;
Label13->Visible = true;
Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
deltatime(300);
break;
case 19:
MediaPlayer1->FileName = "data908976.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 20:
deltatime(300);
break;
case 21:
Label2->Visible = false;
Label4->Visible = false;
Label6->Visible = false;
Label7->Visible = false;
Label8->Visible = false;
Label9->Visible = false;
deltatime(300);
break;
case 22:
MediaPlayer1->FileName = "data444555.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 23:
deltatime(300);
break;
case 24:
Label1->Visible = true;
Label2->Visible = true;
Label3->Visible = true;
Label4->Visible = true;
Label5->Visible = true;
Label6->Visible = true;
Label7->Visible = true;
Label8->Visible = true;
Label9->Visible = true;
Label13->Visible = true;
Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
deltatime(1500);
break;
case 25:
Label1->Visible = false;
Label2->Visible = false;
Label3->Visible = false;
Label5->Visible = false;
Label6->Visible = false;
Label7->Visible = false;
Label8->Visible = false;
Label9->Visible = false;
Label13->Visible = false;
deltatime(300);
break;
case 26:
MediaPlayer1->FileName = "data444777.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 27:
deltatime(300);
break;
case 28:
MediaPlayer1->FileName = "data8349244.avi";
MediaPlayer1->Open();
MediaPlayer1->Play();
Label4->Visible = false;
break;
case 29:
Close();
break;
}
}
TForm3::deltatime(int delta){
Timer1->Interval = delta;
Timer1->Enabled = true;
}
void __fastcall TForm3::FormActivate(TObject *Sender)
{
Label1->Visible = true;
Label2->Visible = true;
Label3->Visible = true;
Label4->Visible = true;
Label5->Visible = true;
Label6->Visible = true;
Label7->Visible = true;
Label8->Visible = true;
Label9->Visible = true;
Label13->Visible = true;
Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
step=0;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::BitBtn1Click(TObject *Sender)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
deltatime(10);
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Timer2Timer(TObject *Sender)
{
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::MediaPlayer1Notify(TObject *Sender)
{
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
step=1000;
}
//---------------------------------------------------------------------------
int t=1;
void __fastcall TForm3::BitBtn3Click(TObject *Sender)
{
if(t)
{
MediaPlayer1->Notify = false;
MediaPlayer1->Pause();
}
else
{
MediaPlayer1->Resume();
MediaPlayer1->Notify = true;
}
//Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
Лістинг 4. (Unit4.cpp)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
TForm4::deltatime(int delta){
Timer1->Interval = delta;
Timer1->Enabled = true;
}
int step=0;
TForm4::nextstep(){
switch(step){
case 0:
deltatime(200);
break;
case 1:
MediaPlayer1->FileName = "data6565.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 2:
deltatime(200);
break;
case 3:
MediaPlayer1->FileName = "data555.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 4:
deltatime(200);
break;
case 5:
MediaPlayer1->FileName = "data4567.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 6:
Close();
break;
}
void __fastcall TForm4::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm4::FormActivate(TObject *Sender)
{
step=0;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm4::MediaPlayer1Notify(TObject *Sender)
{
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm4::FormClose(TObject *Sender, TCloseAction &Action)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
step=1000;
}
//---------------------------------------------------------------------------
void __fastcall TForm4::BitBtn1Click(TObject *Sender)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
deltatime(10);
}
//---------------------------------------------------------------------------
int t=1;
void __fastcall TForm4::BitBtn3Click(TObject *Sender)
{
if(t)
{
MediaPlayer1->Notify = false;
MediaPlayer1->Pause();
}
else
{
MediaPlayer1->Resume();
MediaPlayer1->Notify = true;
}
}
//---------------------------------------------------------------------------
Лістинг 5. (Unit5.cpp)
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm5 *Form5;
//---------------------------------------------------------------------------
__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int step=0;
TForm5::nextstep(){
switch(step){
case 0:
deltatime(300);
break;
case 1:
MediaPlayer1->FileName = "data89674.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 2:
deltatime(300);
break;
case 3:
Image3->Visible = true;
deltatime(300);
break;
case 4:
MediaPlayer1->FileName = "data888777.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
case 5:
deltatime(200);
break;
case 6:
Image3->Visible = false;
deltatime(400);
break;
case 7:
Label1->Visible = true;
Label2->Visible = true;
Label3->Visible = true;
deltatime(200);
break;
case 8:
MediaPlayer1->FileName = "data876.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
break;
}
}
TForm5::deltatime(int delta){
Timer1->Interval = delta;
Timer1->Enabled = true;
}
void __fastcall TForm5::FormActivate(TObject *Sender)
{
Label1->Visible = false;
Label2->Visible = false;
Label3->Visible = false;
Label4->Visible = false;
Label5->Visible = false;
Label6->Visible = false;
Label7->Visible = false;
Label8->Visible = false;
Label9->Visible = false;
Label13->Visible = false;
Label10->Visible = false;
Label11->Visible = false;
Label12->Visible = false;
Label14->Visible = false;
Image1->Visible = false;
Image2->Visible = false;
step=0;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm5::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm5::BitBtn1Click(TObject *Sender)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
deltatime(10);
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm5::MediaPlayer1Notify(TObject *Sender)
{
step++;
nextstep();
}
//---------------------------------------------------------------------------
void __fastcall TForm5::FormClose(TObject *Sender, TCloseAction &Action)
{
MediaPlayer1->Close();
Timer1->Enabled = false;
step=1000;
}
//---------------------------------------------------------------------------
int t=1;
void __fastcall TForm5::BitBtn3Click(TObject *Sender)
{
if(t)
{
MediaPlayer1->Notify = false;
MediaPlayer1->Pause();
}
else
{
MediaPlayer1->Resume();
MediaPlayer1->Notify = true;
}
//Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
Результат роботи програми
Розроблена нами програма має досить простий інтерфейс та фактично буде являти собою простий док - вьюєр скомпонованих документів, які містять інформацію для навчання.
Скрін 1. Загальний графічний інтерфейс програми.
Скрін 2. Приклад уроку по Borland C++ Builder в розробленій нами програмі
Висновки
В нашій роботі були проаналізовані питання відносно теоретичної основи побудови програм з простим інтерфейсом користувача в середовищі Borland C++ Builder а також проблеми, які виникають при цьому. Результатом цього є програма яка реалізує процес навчання програмування на даній мові програмування.
Дана програма має досить простий інтерфейс та алгоритмічну структуру.
Література
Касаткин А.И., Вальвачев А.Н. Профессиональное прогрпммирование на языке Си. Мн., 1992. 240 С.
Бруно Бабэ. Просто и ясно о Borland C++. М., 1996. 400 С.
Справочник по классам Borland C++ 4.0. К., 1994. 256 С.
! | Как писать курсовую работу Практические советы по написанию семестровых и курсовых работ. |
! | Схема написания курсовой Из каких частей состоит курсовик. С чего начать и как правильно закончить работу. |
! | Формулировка проблемы Описываем цель курсовой, что анализируем, разрабатываем, какого результата хотим добиться. |
! | План курсовой работы Нумерованным списком описывается порядок и структура будующей работы. |
! | Введение курсовой работы Что пишется в введении, какой объем вводной части? |
! | Задачи курсовой работы Правильно начинать любую работу с постановки задач, описания того что необходимо сделать. |
! | Источники информации Какими источниками следует пользоваться. Почему не стоит доверять бесплатно скачанным работа. |
! | Заключение курсовой работы Подведение итогов проведенных мероприятий, достигнута ли цель, решена ли проблема. |
! | Оригинальность текстов Каким образом можно повысить оригинальность текстов чтобы пройти проверку антиплагиатом. |
! | Оформление курсовика Требования и методические рекомендации по оформлению работы по ГОСТ. |
→ | Разновидности курсовых Какие курсовые бывают в чем их особенности и принципиальные отличия. |
→ | Отличие курсового проекта от работы Чем принципиально отличается по структуре и подходу разработка курсового проекта. |
→ | Типичные недостатки На что чаще всего обращают внимание преподаватели и какие ошибки допускают студенты. |
→ | Защита курсовой работы Как подготовиться к защите курсовой работы и как ее провести. |
→ | Доклад на защиту Как подготовить доклад чтобы он был не скучным, интересным и информативным для преподавателя. |
→ | Оценка курсовой работы Каким образом преподаватели оценивают качества подготовленного курсовика. |
Курсовая работа | Деятельность Движения Харе Кришна в свете трансформационных процессов современности |
Курсовая работа | Маркетинговая деятельность предприятия (на примере ООО СФ "Контакт Плюс") |
Курсовая работа | Политический маркетинг |
Курсовая работа | Создание и внедрение мембранного аппарата |
Курсовая работа | Социальные услуги |
Курсовая работа | Педагогические условия нравственного воспитания младших школьников |
Курсовая работа | Деятельность социального педагога по решению проблемы злоупотребления алкоголем среди школьников |
Курсовая работа | Карибский кризис |
Курсовая работа | Сахарный диабет |
Курсовая работа | Разработка оптимизированных систем аспирации процессов переработки и дробления руд в цехе среднего и мелкого дробления Стойленского ГОКа |