Список використаної літератури

Міністерство освіти, науки, молоді та спорту

Житомирський державний технологічний університет

 

 

Кафедра ПЗОТ

Група ПІ-43

 

 

КУрсова РОбота

з предмету

Об’єктно-Орієнтоване Програмування

 

 

 Виконав:                                                                Шкуратенюк Т.А.

 Перевірив:                                                        Антонюк Д.С.

 

Житомир

2012 р.

 

Зміст

Вступ. 3

Технічне завдання. 4

Записка користувача. 5

Записки програміста. 9

Пояснювальна записка програмісту. 9

Інтерфейс користувача. 9

Класи-дані 10

Допоміжні класи. 12

Додатки. 15

Реалізація шаблонного класу. 15

Реалізація класу BaseArticleFood. 16

Реалізація класу BaseArticleIndustry. 18

Реалізація класу Date. 20

Реалізація класу Enter. 22

Реалізація класу BaseFirm. 22

Реалізація MAIN. 24

Реалізація класу Menu. 29

Реалізація класу BaseOperation. 31

Реалізація класу Tovar. 34

Висновок. 36


Вступ

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

База даних – це розміщена на носіях велика кількість однотипних даних з конкретної предметної галузі. Тематики баз даних побутового характеру такі: телефонний довідник, картотека у відділі кадрів, каталог книг у бібліотеці тощо.

Поняття “база даних” пов’язане з комп’ютерними системами, з історією і розвитком.

 

Метою нашої курсової роботи є написання програми, яка б стала зручним методом, способом управління певної інформаційної системи, яка була б подібною до бази даних та оперувала основними функціями при роботі з нею:
- Додати запис

- Видалити запис

- Ввести інформацію

- Зберегти інформацію

Для досягнення цієї мети були поставлені наступні технічні завдання:

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

 

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

 

Теоретичний матеріал

В об'єктно-орієнтованої програми із застосуванням класів кожен об'єкт є «екземпляром» деякого конкретного класу, та інших об'єктів не передбачено. Тобто «екземпляр класу» в даному випадку означає не «приклад деякого класу» або «окремо взятий клас», а «об'єкт, типом якого є якийсь клас». При цьому в різних мовах програмування допускається або не допускається існування ще якихось типів даних, примірники яких не є об'єктами (тобто мова визначає, чи є об'єктами такі речі, як числа, масиви і покажчики, або не є, і, відповідно, чи є такі класи як «число», «масив» або «покажчик», екземплярами яких були б кожне конкретне число, масив або покажчик).

Наприклад, абстрактний тип даних «рядок тексту» може бути оформлений у вигляді класу, і тоді всі рядки тексту в програмі будуть об'єктами - екземплярами класу «рядок тексту».

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

Як і структури, класи можуть задавати поля - тобто змінні, що належать або безпосередньо самому класу (статичні), або екземплярів класу (звичайні). Статичні поля існують в одному примірнику на всю програму (або, в більш складному варіанті, - в одному примірнику на процес або на потік / нитка). Звичайні поля створюються по одній копії для кожного конкретного об'єкта - екземпляра класу. Наприклад, загальна кількість рядків тексту, створених в програмі за час її роботи, буде статичною полем класу «рядок тексту». А конкретний масив символів рядка буде звичайним полем екземпляра класу «рядок тексту», так само як мінлива «прізвище», що має тип «рядок тексту», буде звичайним полем кожного конкретного екземпляра класу «людина».

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

Як і поля, код у вигляді методів / функцій / процедур, що належать класу, може бути віднесений або до самого класу, або до екземплярів класу. Метод, що належить класу і співвіднесений з класом (статичний метод) може бути викликаний сам по собі і має доступ до статичних змінних класу. Метод, співвіднесений з екземпляром класу (звичайний метод), може бути викликаний тільки у самого об'єкта, і має доступ як до статичних полів класу, так і до звичайних полях конкретного об'єкта (при виклику цей об'єкт передасться прихованим параметром методу). Наприклад, загальна кількість створених рядків можна дізнатися з будь-якого місця програми, але довжину конкретної рядки можна дізнатися тільки вказавши, тим чи іншим чином, довжину якої рядки будемо міряти.

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

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

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

В об'єктно-орієнтованої програми прапорець «звільнений» буде оголошено приватним членом деякого класу, а для читання і зміни його будуть написані відповідні публічні методи. Правила, що визначають можливість або неможливість безпосередньо змінювати будь змінні, називаються правилами завдання областей доступу. Слова «приватний» і «публічний» в даному випадку є так званими «модифікаторами доступу». Вони називаються модифікаторами тому, що в деяких мовах вони використовуються для зміни раніше встановлених прав при спадкуванні класу. Спільно класи і модифікатори доступу задають область доступу, тобто у кожної ділянки коду, в залежності від того, якого класу він належить, буде своя область доступу щодо тих чи інших елементів (членів) свого класу та інших класів, включаючи змінні, методи, функції , константи і т. д. Існує основне правило: ніщо в одному класі не може бачити приватних елементів іншого класу. Щодо інших, більш складних правил, у різних мовах існують інші модифікатори доступу і правила їх взаємодії з класами.

Майже кожному члену класу можна встановити модифікатор доступу (за винятком статичних конструкторів і деяких інших речей). У більшості об'єктно-орієнтованих мов програмування підтримуються наступні модифікатори доступу:

private (закритий, внутрішній член класу) - звернення до члена допускаються тільки з методів того класу, в якому цей член визначений. Будь-які спадкоємці класу вже не зможуть отримати доступ до цього члену. Спадкування за типом  - - private забороняє доступ з дочірнього класу до всіх членів батьківського класу, включаючи навіть public-члени ;

- protected (захищений, внутрішній член ієрархії класів) - звернення до члена допускаються з методів того класу, в якому цей член визначений, а також з будь-яких методів його класів-спадкоємців. Спадкування за типом protected робить все public-члени батьківського класу protected-членами класу-спадкоємця ;

- public (відкритий член класу) - звернення до члена допускаються з будь-якого коду. Спадкування за типом public не змінює модифікаторів батьківського класу;

 

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

В сучасних об'єктно-орієнтованих мовах програмування (у тому числі в php, Java, C + +, Oberon, Python, Ruby, Smalltalk, Object Pascal) створення класу зводиться до написання деякої структури, яка містить набір полів і методів (серед останніх особливу роль відіграють конструктори, деструктори, фіналізатори). Практично клас може розумітися як якийсь шаблон, за яким створюються об'єкти - екземпляри даного класу. Всі екземпляри одного класу створені за одним шаблоном, тому мають один і той же набір полів і методів.

 

Записка користувача

                                 Інструкція для користувача

1.Після запуску програми перед нами з’являється головне меню програми. Де ми можемо бачити 3 основних пункти меню.

 

 

Рис.1 Головне меню.

2. Для того щоб працювати з інформаційною базою, нам необхідний як мінімум один запис. Додати запис в базу ми можемо за допомогою натиснення клавіші «2» - «Add a record».

 

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

 

 

                                       Рис.2 Підменю Add record…

 

 

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

5. Після чого користувач має змогу відразу зберегти інформацію в файл

 

Рис.3 Підменю Add record - Save…

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

 

 

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

 

7. При обиранні пункту видалення запису «3»– «Delete record», користувачу лише необхідно вказати номер запису, якого необхідно видалити.

8. Для перегляду інформації, яка міститься в базі, користувачу достатньо натиснути «1» - «Print information» .

 

При перегляді інформації, вікно програми має наступний вигляд:

 

 

9. Для виходу з програми у головному меню слід натиснути клавішу «Esc» - Exit

 

 

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

 


Записки програміста

 Пояснювальна записка програмісту

Згідно технічного завдання реалізована система дозволяє оперувати даними, завантажувати та зберігати дані до файлу. Програмний код реалізовано на мові програмування С++ з використанням прийомів об’єктна-орієнтованого програмування. На рисунку представлено діаграму класів проекту.

Класи
Базовий клас “Hero”

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

 

#include <iostream.h>

#include <conio.h>

#include "team.h"

#include <fstream.h>

 

class Hero{

 protected:

char name[20];

int level;

float speed;

long hp;

double armor;

char ultimate[20];

Team Nation;

 

 public:

Hero *pnext;

Hero(){

 level = 1;

 speed = 350;

 hp = 437;

}

 virtual void print()=0;

 virtual void input()=0;

 virtual void save()=0;

 virtual void load()=0;

};

Клас-нащадок “Tank”

Клас “Tank” успадковується від базового класу “Hero” та доповнює його
таким важливим коефіцієнтом, як сила.

#include <iostream.h>

#include <conio.h>

#include <dir.h>

#include <fstream.h>

#include "head.h"

 

class Tank : public Hero{

 private:

int power;

 public:

 Tank(){

 level = 1;

 speed = 350;

 hp = 437;

 }

 

 void input();

 void print();

 void load();

 void save();

 

};

 

Реалізація методів класу ”Tank”

#include "tank.h"

 

void Tank :: input(){

       cout<<"name: ";   cin>>name;

       cout<<"level: ";  cin>>level;

       cout<<"speed: ";  cin>>speed;

       cout<<"HealthPoint: "; cin>>hp;

       cout<<"armor ";   cin>>armor;

       cout<<"ultimate: "; cin>>ultimate;

       cout<<"power: ";  cin>>power;

       cout<<"team: ";   cin>>Nation.team;

       cout<<"fraction: "; cin>>Nation.fraction;

}

void Tank :: print(){

       cout<<"Hero: "<<name<<endl;

       cout<<"level: "<<level<<endl;

       cout<<"speed: "<<speed<<endl;

       cout<<"HealthPoint: "<<hp<<endl;

       cout<<"armor "<<armor<<endl;

       cout<<"ultimate: "<<ultimate<<endl;

       cout<<"power: "<<power<<endl;

       cout<<"team: "<<Nation.team<<endl;

       cout<<"fraction: "<<Nation.fraction<<endl;

 }

 

 

void Tank :: save(){

 

       ofstream fout("tank.txt", ios :: app);

if(!fout){

 cerr<<"\n\nError opened file ... ";

 getch();

}

 fout<<name<<"\n"<<level<<"\n"<<speed<<"\n"

 <<hp<<"\n"<<armor<<"\n"<<ultimate<<"\n"<<power<<"\n"

 <<Nation.team<<"\n"<<Nation.fraction<<endl;

 

fout.close();

 

}

 

 void Tank :: load(){

 ifstream fin("tank.txt");

 if(!fin){

 cout<<"\n\nError opened file "; getch();

 }

        fin>>name;

        fin>>level;

        fin>>speed;

        fin>>hp;

        fin>>armor;

        fin>>ultimate;

        fin>>power;

        fin>>Nation.team;

        fin>>Nation.fraction;

 

fin.close();

 

}

 

Клас-нащадок “Dodger”

Клас “Dodger” успадковується від базового класу “Hero” та доповнює його
таким важливим коефіцієнтом, як спритність.

 

 

#include <iostream.h>

#include <conio.h>

#include <dir.h>

#include <fstream.h>

#include "mettank.h"

 

 

class Dodger : public Hero{

 private:

int agility;

 public:

Dodger(){

 level = 1;

 speed = 350;

 hp = 437;

 armor = 8;

 

}

void input();

void print();

void load();

void save();

};

 

Реалізація методів класу ”Dodger”

 

#include "dodger.h"

 

void Dodger :: input(){

       cout<<"name: ";   cin>>name;

       cout<<"level: ";  cin>>level;

       cout<<"speed: ";  cin>>speed;

       cout<<"HealthPoint: "; cin>>hp;

       cout<<"armor ";   cin>>armor;

       cout<<"ultimate: "; cin>>ultimate;

       cout<<"agility: "; cin>>agility;

       cout<<"team: ";   cin>>Nation.team;

       cout<<"fraction: "; cin>>Nation.fraction;

}

void Dodger :: print(){

       cout<<"Hero: "<<name<<endl;

       cout<<"level: "<<level<<endl;

       cout<<"speed: "<<speed<<endl;

       cout<<"HealthPoint: "<<hp<<endl;

       cout<<"armor: "<<armor<<endl;

       cout<<"ultimate: "<<ultimate<<endl;

       cout<<"agility: "<<agility<<endl;

       cout<<"team: "<<Nation.team<<endl;

       cout<<"fraction: "<<Nation.fraction<<endl;

 }

 

 

void Dodger :: save(){

       ofstream fout("dodger.txt", ios :: app);

if(!fout){

 cerr<<"\n\nError opened file ... ";

 getch();

}

 fout<<name<<"\n"<<level<<"\n"<<speed<<"\n"

 <<hp<<"\n"<<armor<<"\n"<<ultimate<<"\n"<<agility<<"\n"

 <<Nation.team<<"\n"<<Nation.fraction<<endl;

 

fout.close();

 

}

 

 

 void Dodger :: load(){

 ifstream fin("dodger.txt");

 if(!fin){

 cout<<"\n\nError opened file "; getch();

 }

 

        fin>>name;

        fin>>level;

        fin>>speed;

        fin>>hp;

        fin>>armor;

        fin>>ultimate;

        fin>>agility;

        fin>>Nation.team;

        fin>>Nation.fraction;

 

 

fin.close();

 

}

 

 

Клас-нащадок “Warlock”

 

Клас “Warlock” успадковується від базового класу “Hero” та доповнює його таким важливим коефіцієнтом, як розум.

 

 

#include <iostream.h>

#include <conio.h>

#include <dir.h>

#include <fstream.h>

#include "metdodge.h"

 

 

class Warlock : public Hero{

 private:

int intelligence;

 public:

Warlock(){

 level = 1;

 speed = 350;

 hp = 437;

 armor = 5;

 

}

void input();

void print();

void save();

void load();

 

};

 

 

Реалізація методів класу ”Warlock”

#include "warlock.h"

 

void Warlock :: input(){

       cout<<"name: ";   cin>>name;

       cout<<"level: ";  cin>>level;

       cout<<"speed: ";  cin>>speed;

       cout<<"HealthPoint: "; cin>>hp;

       cout<<"armor ";   cin>>armor;

       cout<<"ultimate: "; cin>>ultimate;

       cout<<"intelligence: "; cin>>intelligence;

       cout<<"team: ";   cin>>Nation.team;

       cout<<"fraction: "; cin>>Nation.fraction;

 

}

void Warlock :: print(){

       cout<<"Hero: "<<name<<endl;

       cout<<"level: "<<level<<endl;

       cout<<"speed: "<<speed<<endl;

       cout<<"HealthPoint: "<<hp<<endl;

       cout<<"armor: "<<armor<<endl;

       cout<<"ultimate: "<<ultimate<<endl;

       cout<<"intelligence: "<<intelligence<<endl;

       cout<<"team: "<<Nation.team<<endl;

       cout<<"fraction: "<<Nation.fraction<<endl;

 }

 

 

void Warlock :: save(){

 

       ofstream fout("warlock.txt", ios :: app);

if(!fout){

 cerr<<"\n\nError opened file ... ";

 getch();

}

 fout<<name<<"\n"<<level<<"\n"<<speed<<"\n"

 <<hp<<"\n"<<armor<<"\n"<<ultimate<<"\n"<<intelligence<<"\n"<<Nation.team<<"\n"

 <<Nation.fraction<<endl;

 

fout.close();

 

}

 

 

 void Warlock :: load(){

 ifstream fin("warlock.txt");

 if(!fin){

 cout<<"\n\nError opened file "; getch();

 }

        fin>>name;

        fin>>level;

        fin>>speed;

        fin>>hp;

        fin>>armor;

        fin>>ultimate;

        fin>>intelligence;

        fin>>Nation.team;

        fin>>Nation.fraction;

fin.close();

 

}

 

 

Допоміжний клас “Team”

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

 

class Team{

 public:

char team[20];

char fraction[20];

 

void inputT();

void printT();

};

 

 

Реалізація методів класу “Team”

#include "team.h"

 

void Team :: inputT(){

 cout<<"Team: "; cin>>team;

 cout<<"Fraction: "; cin>>fraction;

}

 

void Team :: printT(){

 cout<<"Team: "<<team;

 cout<<"Fraction: "<<fraction;

 

}

 

 Клас “Collection”

Клас “Collection”, призначений для роботи з великою кількістю записів, містить у собі методи, які виконують основні ф-ції програми з декількома записами

Колекція об’єктів організована за допомогою динамічної структури(черга)

 

#include "matwarlo.h"

 

class Collection{

 public:

Collection(){

count = 0;

}

int count;

Hero *top;

void print_col();

void add_tank();

void add_dodger();

void add_warlock();

void del_rec(int position);

};

 

Реалізація методів класу “Collection”

#include "col.h"

#include <stdio.h>

 

 

void Collection :: print_col(){

clrscr();

Hero *tmp;

tmp=top;

for(int i=0;i<count;i++){

        cout<<i+1<<") -------record-------\n";

        tmp->print();

        tmp=tmp->pnext;

}getch();

}

 

void Collection :: add_tank(){

 int m = 0;

Hero *tmp;

tmp = new Tank;

       count ++;

       do{

       clrscr();

       cout<<"\n1) input information.\n2) load information from file ";

       m = getch();

       }while(m>'2' || m<'1');

       switch(m){

       case '1': tmp->input(); break;

       case '2': tmp->load(); break; }

       do{

       clrscr();

       cout<<"\nSave information to file?\n1) Yes\n2) No ";

       m = getch();

}while(m>'2' || m<'1');

        if(m == '1')

        tmp->save();

        tmp->pnext=top;

        top=tmp;

}

 

 

void Collection :: add_dodger(){

 int m = 0;

Hero *tmp;

tmp = new Dodger;

       count ++;

       do{

       clrscr();

       cout<<"\n1) input information.\n2) load information from file ";

       m = getch();

       }while(m>'2' || m<'1');

       switch(m){

       case '1': tmp->input(); break;

       case '2': tmp->load(); break; }

       do{

       clrscr();

       cout<<"\nSave information to file?\n1) Yes\n2) No ";

       m = getch();

}while(m>'2' || m<'1');

        if(m == '1')

        tmp->save();

        tmp->pnext=top;

        top=tmp;

 

}

 

 

void Collection :: add_warlock(){

int m = 0;

Hero *tmp;

tmp = new Warlock;

       count ++;

       do{

       clrscr();

       cout<<"\n1) input information.\n2) load information from file ";

       m = getch();

       }while(m>'2' || m<'1');

       switch(m){

       case '1': tmp->input(); break;

       case '2': tmp->load(); break; }

       do{

       clrscr();

       cout<<"\nSave information to file?\n1) Yes\n2) No ";

       m = getch();

}while(m>'2' || m<'1');

        if(m == '1')

        tmp->save();

        tmp->pnext=top;

        top=tmp;

 

}

 

void Collection :: del_rec(int position){

 

if(position==0 || (position <1&& position>100)) return;

Hero * beforeDeleted = top;

Hero * afterDeleted = top;

for(int i = 0;i<position-2;i++)

       beforeDeleted=beforeDeleted->pnext;

afterDeleted = afterDeleted->pnext->pnext;

 

delete beforeDeleted->pnext;

beforeDeleted->pnext=afterDeleted;

delete beforeDeleted, afterDeleted;

count--;

}

 

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

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

 

Висновок

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

 

Список використаної літератури

1.Войтенко В.В., Морозов А.В. С/С++. Теорія та практика

2. http://www.programmersclub.ru/

 


Дата добавления: 2018-04-05; просмотров: 390; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!