Міністерство освіти та науки України
Луцький національний технічний університет
Кафедра комп`ютерної
інженерії
Пояснювальна записка
до курсової роботи
з дисципліни «Програмування»
Варіант 3
ТЕМА: Розробка програм мовою С++
1. Постановка задачі.
1.1. Лінійний алгоритм. Обчислити висоту з якої впало тіло за проміжок часу t із початковою швидкістю .
1.2. Цикли. Знайти суму ряду із заданою точністю .
1.3. Текстові дані. Відредагувати текстовий файл, замінюючи в ньому всі букви g зірочками (*).
1.4. Матриці. Скласти масив структур для опису групи студентів з полями: номер по списку в журналі, прізвище, кількість пропущених занять за перший модуль, кількість пропущених занять за другий модуль. Вивести на екран і в окремий файл прізвища студентів у порядку спадання кількості пропусків за семестр. Крім того в інший файл записати прізвища студентів, які мають більше 36 пропусків за семестр.
1.5. Емблема. У верхній лівій чверті графічного екрану нарисувати емблему своєї групи (дизайн придумати самостійно).
1.6. Титулка. Розробити титулку до курсової роботи в графічному режимі.
1.7. Програма-монітор. Написати програму-монітор для управління викликами всіх написаних Вами програм. Ця програма повинна в графічному режимі відображати титулку, потім після натиснення будь-якої клавіші виводити перелік написаних програм і способів їх запуску (зміст). При виборі якоїсь програми у верхній частині екрану повинна відображатися умова задачі, а в нижній – розв’язок з усіма коментарями. При натисненні будь-якої клавіші переходимо до змісту. У змісті передбачити пункт виводу інформації про автора роботи та пункт виходу з програми.
ЗМІСТ ЗАВДАННЯ ТА КАЛЕНДАРНИЙ ПЛАН ЙОГО ВИКОНАННЯ:
1.
Провести аналітичний огляд літератури по заданій темі
2.
Написати програму Лінійний алгоритм
3.
Написати програму Цикли
4.
Написати програму Текстові дані
5.
Написати програму Матриці
6.
Написати програму Емблема
7.
Розробити модуль, який відображає електронну титульну сторінку курсової роботи в середовищі програмування
8.
Розробити модуль меню програми
9.
Написати програму-монітор, яка б об’єднувала всі модулі, додати інформацію про автора і протестувати роботу проекту
10.
Оформити пояснювальну записку до курсової роботи за планом:
- титульний лист та лист затвердження (згідно ГОСТ 19.104-78)
- анотація;
- зміст;
- вступ;
- аналіз завдання та розробка методу вирішення задачі;
- опис структури програмного проекту;
- опис алгоритмів розв’язання задачі;
- контрольний приклад та аналіз результатів комп'ютерної реалізації програми;
- висновки;
- література;
- додатки
ЗАВДАННЯ ПРИЙНЯТО ДО ВИКОНАННЯ: ______________30.11.2010р.
підпис студента
Керівник : _______________/Лавренчук С.В.
АНОТАЦІЯ
Вданій курсовій роботі була виконана розробка програми на мові програмування С++ з використанням об`єктно-орієнтовного програмування, яка включає в себе роботу з лінійними алгоритмами, текстовими даними, матрицями та роботу з графікою. Розроблено алгоритми розв`язування задач згідно індивідуального завдання, створено меню програми.
АННОТАЦИЯ
В данной курсовой роботе была выполнена разработка программы на языке программирования С++ с использованием объектно-ориентировочного программирования которая включает в себя роботу с линейными алгоритмами, циклами, текстовыми данными, матрицами, а также роботу с графикой. Разработано алгоритмы развязывания задач согласно индивидуального задания, создано меню программы.
ANNOTATION
In this work there was the executed working out of the program in programming of С++ language with the use of the objective-reference programming, which includes for itself work with linear algorithms, text data, matrices and work with graphic arts. The algorithms of unting of tasks are worked out in obedience to an individual task, a program menu is create
ЗМІСТ
ВСТУП 6
1 АНАЛІЗ ЗАВДАННЯ ТА РОЗРОБКА МЕТОДУ ВИРІШЕННЯ ЗАДАЧІ 7
1.1 Розробка методу виконання основного завдання 7
1.2 Структура даних і функцій 13
2 ОПИС СТРУКТУРИ ПРОГРАМНОГО ПРОЕКТУ 16
3 ОПИС АЛГОРИТМІВ РОЗВ’ЯЗАННЯ ЗАДАЧІ 17
4 РОЗРОБКА ТА ВИКОНАННЯ ТЕСТОВОГО ПРИКЛАДУ 18
5 ІНСТРУКЦІЯ КОРИСТУВАЧА 23
ВИСНОВКИ 25
ПЕРЕЛІК ПОСИЛАНЬ 26
ДОДАТКИ 27
Додаток А 27
Додаток Б 28
Додаток В 36
ВСТУП
Серед інформаційних технологій, які лежать в основі всіх напрямів підготовки спеціалістів з комп’ютерних технологій, особливе місце займає математичне моделювання. При цьому під математичних співвідношень (формул, рівнянь, логічних виразів), які визначають точною моделлю фізичної системи, об’єкта або процесу звичайно розуміють сукупність характеристики стану і властивості системи, об’єкта і процесу та їх функціонування залежно від параметрів їх компонентів, початкових умов, вхідних збуджень і часу. Загалом математична модель описує функціональну залежність між вихідними залежними змінними, через які відображається функціонування системи, незалежними (такими, як час) і змінюваними змінними (такими, як параметри компонентів, геометричні розміри та ін.), а також вхідними збудженнями, прикладеними до системи.
Для кожної математичної моделі звичайно формулюється математична задача.
1 АНАЛІЗ ЗАВДАННЯ ТА РОЗРОБКА МЕТОДУ ВИРІШЕННЯ ЗАДАЧІ
1.1 Розробка методу виконання основного завдання
Робота з графікою
Розглянемо, як виконувати графічні побудови у середовищах C++ для операційної системи DOS.
Система координат у графічному режимі не відповідає системі координат текстового режиму (80x25). Графічний екран дисплея складається з точок, які можна засвічувати певним кольором чи гасити, в результаті чого на екрані утворюється деяке зображення. Точки називаються пікселями. Розташування точок визначається їхніми координатами. Можливе завдання різних графічних режимів (розміри екрану) для кожного з адаптерів-електронної плати.
Тому будь-яка програма, яка використовує графічні можливості комп'ютера повинна ініціалізувати (встановлювати) графічний режим роботи дисплейного адаптера .
Налаштування процедур на роботу з конкретним адаптером досягається за допомогою підключення потрібного графічного драйвера. Драйвер - це спеціальна програма, яка здійснює управління тими чи іншими технічними засобами комп'ютера.
Графічний драйвер управляє дисплейним адаптером в графічному режимі.
Графічні драйвери розроблені фірмою Borland для всіх типів адаптерів. Вони знаходяться на диску в вигляді файлу з розширенням BGI (від англ. Borland Graphics Interface - графічний інтерфейс фірми Borlan.
Для різних типів адаптерів застосовуються різні драйвери: CGA.BGI - драйвер для CGA і MCGA, EGAVGA.BGI - драйвер для адаптерів EGA,VGA, HERC.BGI - драйвер для монохромних адаптерів Hercules.
Графічні функції мобільної групи підрозділяються таким чином:
1. Функції для підготовки графічної системи і переходу в текстовий режим.
2. Функції для отримання зображень на екрані дисплея.
3. Функції для установки параметрів зображення (вид штрихування, товщина ліній і т.д.).
4. Функції для визначення параметрів режимів і зображень.
Перед використанням графічних функцій необхідно ініціалізувати систему графіки. Графічні режими, підтримувані бібліотекою графіки, задаються символічними константами, описаними у файлі <graphics.h> у типі, що перераховує graphics_mode.
Ініціалізація графічної системи проводиться функцією initgraph(), яка завантажує графічний драйвер і перемикає екран дисплея в необхідний графічний режим. Прототип функції initgraph:
initgraph(&g_driver,&g_mode," ");
У подвійних апострофах (третій параметр в прототипі функції ) необхідно вказати шлях (маршрут) до графічного драйвера. Якщо вказати пропуск, то графічний драйвер повинен бути в поточному каталозі. Перший параметр - &g_driver - тип графічного драйвера: 1 - CGA, 3 - EGA, 9 - VGA і т.д. Другий параметр - &g_mode - графічний режим
(розглянемо тільки для VGA драйвера):
VGA 0 640x200
VGAMED 1 640x350
VGAHI 2 640x480
Запис типу 640x200 - це роздільна здатність екрану дисплея в графічному режимі (число рядків помножити на число стовпців).
Для завдання автоматичного режиму графіки необхідно записати:
int g_diver=DETECT,g_mode;
Для завершення роботи в графічному режимі необхідно застосувати функцію closegraph();
Лінійні алгоритми
Якщо алгоритм складається лише з послідовності простих команд то його називають простим, або лінійним. Наглядним прикладом є наша програма, яка шукає висоту падіння тіла.
Приклад. Ранок
Алгоритм Ранок
1. Встати о 6.30 годині.
2. Виконати гімн. вправи.
3. Умитися.
4. Поснідати.
5. Вийти з дому о 7.30 годині.
Оператор циклу
Оператори циклу використовуються для організації обчислень, що багато разів повторюються.
Будь-який цикл складається з тіла циклу, тобто тих операторів, які виконуються кілька разів, початкових установок, блоку модифікації, параметра циклу і перевірки умови виходу з циклу, яка може розміщуватися або до тіла циклу (тоді говорять про циклю з передумовою), або після тіла циклу (цикл з післяумовою).
Один прохід циклу називається ітерацією. Змінні, що примусово змінюються в циклі і використовуються при перевірці умови виходу з нього, називаються параметрами циклу. Цілочисельні параметри циклу, що змінюються на ціле число на кожній ітерації, називаються лічильниками циклу.
Оператор while визначає операції, які циклічно виконуються до того моменту, поки вираз, який стоїть після while, стане хибним. Цей оператор називається оператором циклу з передумовою; рішення про чергове виконання тіла циклу приймається перед початком його проходження. Тому можлива ситуація, коли тіло циклу може бути не виконаним жодного разу. Форма запису оператору така:
while (вираз) оператор.
Схема дії оператора така: спочатку обчислюється значення виразу, якщо обчислене значення не дорівнює нулеві, тобто вираз істинний, то виконується тіло циклу, потім вираз перевіряється знову. Ця послідовність дій виконується до тих пір, поки значення виразу не дорівнюватиме нулеві, тобто вираз прийме хибне значення. У цьому разі тіло циклу не виконується, а керування передається оператору, наступному за оператором циклу. Особливості використання оператора while:
Перед входженням в оператор мають бути визначені всі складові для обчислення;
У тілі циклу необхідно передбачити зміну параметрів для визначення кожного потокового значення виразу;
Якщо ітераційний процес має параметр, то переадресація параметра повинна відбуватися в тілі циклу;
Початкове входження у цикл можливе тільки в тому разі, коли початкове значення виразу не дорівнюватиме нулеві.
На рисунку 1 подано опис оператора while у вигляді схеми алгоритму.
Рис.1
Оператор while є оператором циклу з передумовою, оскільки істинність умови перевіряється перед входом у цикл, тобто тіло циклу може не виконатися жодного разу.
Приклад (програма друкує таблицю значень функції y=x2+1 у введеному діапазоні):
#include <stdio.h>
int main()
{
float Xn, Xk, Dx;
printf("Введіть діапазон і крок зміни аргументу: ");
scanf("%f%f%f" &Xn, &Xk, &Dx);
printf("| X | Y |\n");//шапка таблиці
int X = Xn;//початкові установки циклу
while (X<=Xk) //перевірка умови виходу
{
printf("| %5.2f | %5.2f |\n", X, X*X + 1);//тіло
X += Dx;//модифікація
}
}
Робота з текстовими даними
У С++ символьна константа має тип char.
Символьна змінна займає один байт пам’яті та описується з використанням ключового слова char. Наприклад,
char symbol='k'; char k;
Символьний рядок — це послідовність, що складається з одного чи більше одного символів, взятих у подвійні лапки. Інакше символьні рядки називають літерним рядком, рядковим літералом або рядковою константою. Символьний рядок має таку форму представлення:
Помилка! Помилка зв'язку.<символи>";
<символи> — це довільна кількість символів з великої кількості зображуваних символів, за винятком символів подвійна лапка, зворотний слеш, новий рядок. Всередині символьних рядків допускається використання Esc-послідовностей. Наприклад,
"Це рядкова константа"
"А" "$"
Для формування символьних рядків, що займають декілька рядків тексту програми, використовується комбінація символів — зворотний слеш і новий рядок. Зворотний слеш ігнорується компілятором, і наступний рядок вважається продовженням попереднього.
У мові C++ немає спеціального описувача для символьних рядків, вони можуть бути описані лише як масиви типу char.
Відкрити файл для записування у нього даних можна так:
ofstream <назва файлової змінної>(<зовнішня назва>,
ознака 1 | ознака2 |... | ознакаї\І)
Дія команд. Підключаємо потік виведення у файл і налагоджуємо зв'язок між файловою змінною у програмі та файлом на зовнішньому носії. Ознаки зазначати не обов'язково.
Приклад . Відкрити файл MyTextl.txt для запису у нього даних можна так (тут FileForZap - файлова змінна):
ofstream FileForZap("MyText1 .txt"); або так:
Ifstream FileForZap; FileForZap.open("MyText1 .txt");
Щоб занести дані у файл, використовують команду виведення даних «. Наприклад, після виконання команд Int n = 10; FileForZap « n;
У файл MyTextl.txt буде занесено число 10. Занести декілька даних у файл можна так само, як і вивести їх на екран: використовуючи стандартні правила команди « та керуючі послідовності.
Отже, записати дані у файл можна так:
<назва файлової змінної> « <змінна 1> «<змінна 2> « ... « <змінна N>
Метод обміну («бульки»)
Читаємо два перші елементи масиву (5 та 2) і порівнюємо їх між собою. Якщо перший елемент більший за другий, то міняємо їх місцями (стане 2 і 5). Далі розглядаємо другий і третій елемент (тепер це елементи 5 і 3) і порівнюємо їх між собою. Якщо треба, то міняємо їх місцями (стане 3 і 5). Потім порівнюємо третій і четвертий елементи (5 і 6) і так далі. Отримаємо масив 2, 3, 5, 1, 4, 6. Таким чином максимальний елемент (це елемент 6) опинився в самому кінці масиву, тобто там, де потрібно. Після цього знову розглядаємо масив, але вже без останнього елемента. Застосовуємо метод обміну до нового масиву (2, 3, 5, 1, 4). На останньому місці опиниться 5. Далі знов розглядатимемо масив без останнього елемента і застосовуватимемо метод обміну і т. д. Якщо масив має п елементів, то метод обміну треба застосувати п — 1 разів до кожного разу меншої кількості елементів. Упорядковані елементи будуть нагромаджуватись із кінця масиву.
Приклад:
// Впорядкування масиву методом обміну елементів
#include <iostream.h>
#inc!ude <conio.h>
void sort(int m[6]);
void main()
{
clrscr();
int i;
int a[6];
cout<< "Введіть 6 чисел: \n";
for (i = 0; і < 6; i++)
cin >> *(a + i);
sort(a);
cout<<"Упорядкований масив: \n”;
for (i = 0; і < 6; i++)
cout<< *(a + i) « "\n";
getch();
}
//----------------------------------------------
void sort(int m[6])
{
int temp, i, j;
for (i = 0; і < 5; i++)
for (j = 0; j < 6 - і -1; j++)
if(*(m+j)>(m+j+1))
{
temp = *(m + j + 1);
*(m+j + 1) = *(m+j);
*(m + j) = temp;
}
}
Зауваження. Оскільки назва масиву - це вказівник на перший елемент цього масиву, а функції користувача можуть повертати значення у програму не тільки за допомогою команди return, а й через вказівники, то у програмі сортування масиву міняємо місцями значення елементів масиву а за допомогою функції sort(), використовуючи вказівники.
1.2 Структура даних і функцій
Згідно завдання наша курсова складається з 7 додаткових модулів, та основного модуля, в якому міститься головна функція MENU() нашого проекту.
Коротко охарактеризуємо кожен з модулів. Почнемо з основного. Він має назву – MENU.cpp. Містить одну функцію void MENU(). Вона є головноюго. Вона є фактично монітором нашого проекту, спочатку запускає електронну титульну сторінку курсової роботи, потім при нажиманні будь-якої клавіши, вона виводить на екран головне меню, в якому міститься список програм різних типів. Крім того, функція void MENU() ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI.
У головному модулі оголошено такі локальні змінні:
goto – команда безумовного переходу;
int gdriver = DETECT, gmode, errorcode – додаткові змінні для ініціалізації графічного режиму;
switch (q) –оператор вибору;
Тепер перейдемо до додаткових модулів.
Модуль TUTYLKA.cpp містить лише одну функцію void TUTYLKA(), що виводить на екран електронну титульну сторінку розробника курсової роботи. Цей модуль містить додаткові локальні зміни для ініціалізації графічного режиму; sebtkolor(15) – задає колір тла; setcolor (9) – задає колір тексту; settextstyle (0,0,2) – задає розмір шрифту; closegraph() – закриває графічний режим.
Модуль ZAV1.cpp містить функцію void ZAV1(), що обчислює висоту з якої впало тіло за певний проміжок часу. Оголошує змінні за допомогою команди float, виводить на екран інформацію завдяки команді cout<<.
Модуль ZAV2.cpp містить функцію void ZAV2(), оголошує такі змінні , як float z, d, eps, p – обчислення значення вказаного в заданому виразі для певного значення p, cout<<"p="<<p – виведення на екран результат обчислення.
Модуль ZAV3.cpp містить функцію void ZAV3() і оголошує такі локальні змінні:
char a[100]; – оголошення символьного масиву, де а – назва рядка, а [100] – довжина рядка;
Int n; - допоміжна змінна для виклику функції strlen – визначає фактичну кількість символів у рядку;
int i; - лічильник циклу;
ifstream F("KSM.txt"); - зчитування даних з файлу;
ofstream F1("KSM.txt"); - виведення даних у файл;
Модуль ZAV4.cpp містить функцію void ZAV4(), оголошує структуру студент і масив прізвищ, за допомогою оператора sort(), сортує прізвища студентів згідно завдання виводячи за допомогою циклу for результати у текстові файли.
Модуль EMBLEMA.cpp містить функцію void EMBLEMA(), котра графічно демонструє емблему групи, використовуючи підключені стандартні функції бібліотеки graphics.h, ініціалізує графічний режим, задає колір екрану та колір ліній. В цій функції оголошено такі локальні змінні:
сircle() – рисує коло з відповідним радіусом;
arc() – рисує дугу;
setfillstyle – суцільно заповнює замкнуту область;
floodfill – заповнює замкнуту область, що містить точку.
Модуль Avtor.cpp містить функцію void Avtor(), що графічно демонструє інформацію про автора курсової. Оголошено такі локальні змінні:
setcolor (9) – задає колір тексту;
int xmax=getmaxx(),ymax=getmaxy(); - значення роздільної здатності екрану у графічному режимі;
bar(0,0,xmax,ymax); - рисує зафарбований прямокутник;
settextstyle (0,0,2); – задає розмір шрифту;
closegraph() – закриває графічний режим.
2 ОПИС СТРУКТУРИ ПРОГРАМНОГО ПРОЕКТУ
Як зазначалося вище, наш проект складається з 7 додаткових модулів, та основного модуля, в якому міститься головна функція menu() нашого проекту. Додаткові модулі не зв’язані один з одним, а лише з головним модулем.
Загальна схема проекту із способами взаємодії між модулями наведена в додатку А.
Розбиття програми на різні файли визначається логічною структурою програми. Використання додаткових модулів дозволило спростити реалізацію нашого проекту та більш наочно показати взаємодію одних частин проекту з іншими та значно зменшити час на від лагодження та компіляцію цілого проекту.
3 ОПИС АЛГОРИТМІВ РОЗВ’ЯЗАННЯ ЗАДАЧІ
Опишемо алгоритм роботи усіх функцій усіх модулів нашого проекту. Почнемо з основного модуля menu.cpp. Він містить функцію void menu(). Вона є фактично монітором нашого проекту, спочатку ініціалізує графічний режим, підключаючи BGI драйвер EGAVGA.BGI, потім запускає електронну титульну сторінку курсової роботи, після цього виводить головне меню на екран і очікує вибір користувача.
Тепер перейдемо до додаткових модулів.
Модуль TUTYLKA.cpp містить лише одну функцію void TUTYLKA(), що виводить на екран електронну титульну сторінку розробника курсової роботи. Алгоритм роботи дуже простий і подібний до алгоритму функції void avtor().
Модуль ZAV1.cpp містить функцію void ZAV1(), що обчислює висоту з якої впало тіло. Алгоритм роботи є лінійним.
Модуль ZAV2.cpp містить функцію void ZAV1(), оголошує такі змінні: float z, d, eps, p – обчислення значення вказаного в заданому виразі для певного значення p.
Модуль ZAV3.cpp містить функцію void ZAV3(), застосовується рядки символів і дії над ними та типи символьних констант та змінних.
Модуль ZAV4.cpp містить функцію void ZAV4(), котра оголошує struct stydent , в цьому типі даних міститься інформація про студента (номер по списку, прізвище, кількість пропусків за І-ий модуль та кількість пропусків за ІІ-ий модуль), за допомогою функції sort(a) сортує прізвища студентів у порядку спадання кількості пропусків за семестр та записує їх у текстовий файл, а в інший текстовий файл записує прізвища студентів, які мають більше 36 пропусків за семестр.
Модуль EMBLEMA.cpp містить функцію void EMBLEMA(), алгоритм цієї програми є дуже простий і подібний до алгоритму void TUTYLKA().
Void Avtor() – виводить інформацію про автора проекту. Алгоритм роботи дуже простий: очистка екрану -> задання кольору -> отримання розмірів екрану -> замальовування екрану вибраним кольором -> задання кольору та стилю тексту -> вивід тексту на екран.
Алгоритми всіх функцій у вигляді блок-схем подані в Додатку В.
4 РОЗРОБКА ТА ВИКОНАННЯ ТЕСТОВОГО ПРИКЛАДУ
Запускаємо програму після чого на екран виводиться електронна титульна сторінка, яку ми бачимо на рис.4.1.
Рисунок 4.1
Програма чекає, поки буде двічі натиснута довільна кнопка. Що ми і робимо. З’являється меню програми (рис.4.2). Завдяки йому ми маємо можливість переглянути роботу усіх створених програм.
Рисунок 4.2
Коли ми натиснемо довільну кнопку, а потім введемо цифру 2, з’являється вікно з програмою, яка обчислює висоту падіння тіла (рис. 4.3).
Рисунок 4.3
Натискаємо цифру 3 на екран виводиться програма, яка обчислює суму ряду (рис.4.4).
Рисунок 4.4
При натисканні цифри 4 – з`являється програма, яка редагує текстовий файл, замінюючи в ньому всі букви g зірочками (*).
Рисунок 4.5 Рисунок 4.6
Після запуску програми ми бачимо що вона відредагувала текст (рис. 4.5), замінивши в ньому всі букви g зірочками (рис. 4.6).
Після вибору цифри 6 на екран виводиться програма(рис.4.7), яка виводить на екран і в окремий файл прізвища студентів у порядку спадання кількості пропусків за семестр, а в інший файл записує прізвища студентів, які мають більше 36 пропусків за семестр (рис.4.8).
Рисунок 4.7
Рисунок 4.8
Після натискання довільної кнопки переходимо до меню користувача.
При виборі пункту 6 з’являється у верхній лівій чверті графічного екрану з’являється емблема групи (рис. 4.9).
Рисунок 4.9
Обравши 7 побачимо вікно з інформацією про автора програми (Рис. 4.10).
Натиснувши 8 – вийдемо з програми. На інші кнопки програма не реагує.
Рисунок 4.10
5 ІНСТРУКЦІЯ КОРИСТУВАЧА
Для запуску програми потрібно зайти в папку Program і запустити на виконання файл KYRSOVA.EXE. Для вірної роботи програми у тій же папці має бути файл-драйвер EGAVGA.bgi.
Дана програма може працювати під управлінням операційної системи сімейства Windows, починаючи від версії 95 та під управлінням ОС MS-DOS.
Мінімальні системні вимоги для коректної роботи програми:
- операційна система сімейства Windows або MS-DOS;
- процесор – не менше 80386;
- оперативної пам’яті – 1 Мб;
- відеокарта з якістю кольоропередачі – 16 біт;
- вільного місця на жорсткому диску – 135 кб.
Після запуску програми спочатку бачимо зображення електронної титульної сторінки (рис. 4.1). Програма чекає, поки буде двічі натиснута довільна кнопка. Що ми і робимо. З’являється меню програми (рис. 4.2). Знову натискаємо довільну кнопку і вибравши цифру 1, ми знову бачимо титульну сторінку. І знову ж таки натиснувши двічі довільну кнопку, переходимо до меню користувача. Із меню вибираємо цифру 2, ця програма просить нас ввести початкову швидкість, час. Ввівши дані ця програма обчислить висоту з якої впало тіло(рис. 4.3).
Натиснувши знову двічі довільну кнопку, повертаємося до головного меню. Вибравши цифру 3,на моніторі з’являється програма, яка обчислює суму ряду, з точністю , ввівши потрібні дані, отримаємо розв’язок (рис. 4.4).
Переходимо до меню користувача і вибираємо цифру 4, ця програма редагує текст який ми набрали у папці KSM.txt (рис. 4.5) замінюючи букву g, якщо вона є в тексті, на зірочку(*) (рис.4.6).
Знову переходимо до меню і вибираємо цифру 5, монітор нам показує програму, яка просить ввести номери по порядку студентів, їх прізвища та кількість пропусків за перший та другий модулі(рис. 4.7). Посортувавши прізвища студентів у порядку спадання кількості пропусків за семестр, вона вводить ці дані у текстовий файл STUD.txt, а в файл PROPUSKY.txt записує прізвища студентів, які мають більше 36 пропусків за семестр(рис.4.8).
При виборі цифри 6 з’являється емблема групи у вигляді смайлика (рис.4.9).
Щоб отримати інформацію про автора виконаної курсової роботи., потрібно натиснути цифру 7 (рис.4.10).
Нажимаємо цифру 8 і виходимо із даної програми.
ВИСНОВКИ
В ході виконання даної курсової роботи ми вдосконалили свої знання мови С++ та вміння нею користуватися в середовищі Borland C++. Певна частина теоретичного матеріалу була опрацьована самостійно, використовуючи літературні джерела. Серед новизни слід відмітити використання багатомодульного проектування.
До переваг розробленої програми можна віднести компактність, використання малих системних ресурсів, можливість запуску на застарілих ЕОМ.
Створений програмний проект, який відповідає вимогам індивідуального завдання, можна застосувати у будь-яких галузях промисловості. Ця програма є доступною та легкою у використанні.
Крім того, нами було побудовано блок-схеми алгоритмів основних функцій відповідають діючим стандартам і вимогам.
Отже, можемо зробити висновок, що створений нами проект повністю відповідає завданню, а пояснююча записка написана з дотриманням всіх вимог і стандартів.
ПЕРЕЛІК ПОСИЛАНЬ
Глинський Я.М., Анохін В.Є., Ряжська В.А. С++ і С++ Builder. Навч. посібн. 3-тє вид. – Львів: СПД Глинський, 2006. – 192с.
Пахомов Б.И. С/С++ и Borland C++ Builder для студента. – Спб.: БХВ-Петербург, 2006. – 448 с.:ил.
Эккель Б. Философия С++. Введение в стандартный С++. «2-е изд. – СПб.: Питер, 2004. – 572 с.
Субаров С. В. Языки программирования С и С++.- М.: Бук-пресс, 2006. – 647с.
Шилдт Г. Теория и практика С++. — СПб.: BHV, 1996.
Делявський М.В., Коцюба А.Ю., Лавренчук С.В. “Програмування. Методичні вказівки до виконання курсової роботи для студентів спеціальності “Комп’ютерні системи та мережі” денної та заочної форми навчання”- Луцьк ЛНТУ, 2009.-48с.
Делявський М.В., Лавренчук С.В., Коцюба А.Ю. «Конспект лекцій для студентів спеціальності КСМ денної і заочної форми навчання» - Луцьк: ЛНТУ, 2009. – 192 с.
ДОДАТКИ
Додаток А.
(обов’язковий)
Загальна схема проекту із способами взаємодії між модулями:
Додаток Б.
(обов’язковий)
Текст програми
TUTYLKA.cpp
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void TUTYLKA()
{
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if (errorcode!=grOk)
{
cout<<"Pomilka:"<<grapherrormsg(errorcode);
cout<<"\nnatusnit bud jaky klavishy";
getch;
exit(1);
}
setbkcolor(15);
setcolor(9);
settextstyle(0,0,1);
outtextxy(180,10,"Ministerstvo Osvitu i Nayku Ukrainu");
outtextxy(150,20,"lutskij Natsionalnuj Texnichnuj Universutet");
outtextxy(350,50,"Kafedra Kompjuternoi Ingenerii");
settextstyle(0,0,2);
setcolor(5);
outtextxy(190,130,"Kursova robota");
settextstyle(0,0,1);
outtextxy(250,150,"z duscyplinu");
outtextxy(245,165,"PROGRAMYVANNJA");
outtextxy(270,180,"na temy:");
outtextxy(200,195,"ROZROBKA PROGRAM MOVOJU C++");
setcolor(9);
outtextxy(380,330,"Vukonav:stydent gr. KSMz-21");
outtextxy(380,340,"Kypura Olga");
outtextxy(380,350,"Pereviruv asustent:");
outtextxy(380,360,"Lavrenchyk S.V.");
outtextxy(265,460,"Lutsk 2010");
getch();
closegraph();
}
menu.cpp
#include"EMBLEMA.cpp"
#include"ZAV1.cpp"
#include"ZAV2.cpp"
#include"Avtor.cpp"
#include"ZAV3.cpp"
#include"ZAV4.cpp"
#include"TUTYLKA.cpp"
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
void main()
{
TUTYLKA();
getch();
mitka:
{
int gdriver=DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode,"");
errorcode=graphresult();
if (errorcode!=grOk)
{
cout<<"Pomilka:"<<grapherrormsg(errorcode);
cout<<"\nnatusnit bud jaky klavishy";
getch;
exit(1);
}
setbkcolor(15);
setcolor(1);
settextstyle(0,0,2);
outtextxy(175,20,"VUBERIT ZI SPUSKY:");
setcolor(9);
settextstyle(0,0,2);
outtextxy(175,55,"1->Tutylka");
outtextxy(175,90,"2->Linijnuj algorutm");
outtextxy(175,125,"3->Chukl");
outtextxy(175,160,"4->Tekstovi dani");
outtextxy(175,195,"5->Matruchi");
outtextxy(175,230,"6->Emblema");
outtextxy(175,265,"7->Avtor");
outtextxy(175,300,"8->Exit");
getch();
closegraph();
int q;
cin>>q;
switch (q)
{
case 1: TUTYLKA();getch();goto mitka;//break;
case 2:ZAV1(); getch();goto mitka; //break;
case 3:ZAV2();getch();goto mitka; // break;
case 4:ZAV3 ();getch();goto mitka; // break;
case 5:ZAV4 ();getch();goto mitka; //break;
case 6:EMBLEMA ();getch();goto mitka; //break;
case 7:Avtor ();getch();goto mitka; //break;
case 8:exit(1);
default:{cout<<"Eror";}
}
}
getch();
}
ZAV1.cpp
#include<conio.h>
#include<iostream.h>
#include<math.h>
void ZAV1()
{
const g=9.8;
clrscr();
float v,t, h;
cout<<"vedit' pochatkovy shvudkist'\n";
cin>>v;
cout<<"vedit\' chas\n";
cin>>t;
h=v*t+(pow(t,2)*g)/2;
cout<<"\rozvazok\n tilo vpalo z vusotu "<<h<<" metriv";
getch();
}
ZAV2.cpp
#include<iostream.h>
#include<conio.h>
#include<math.h>
void ZAV2()
{
clrscr();
float z,d,eps,p;
cout<<"eps>0 eps=?";
cin>>eps;
z=1;
p=0;
d=1;
while(d>=eps)
{
p=p+d;
z++;
d=1/pow(z,2);
}
cout<<"p="<<p;
getch();