Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Інформаційно-довідкова система 2

Тип Реферат
Предмет Информатика
Просмотров
644
Размер файла
39 б
Поделиться

Ознакомительный фрагмент работы:

Інформаційно-довідкова система 2

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

"ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ"

Кафедра Обчислювальної техніки та програмування

ЗАТВЕРДЖУЮ

Завідувач кафедри ОТП

__________ /xxxxxxxxx./

"___" __________ 2007р.

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

Специфікація

ЛИСТ ЗАТВЕРДЖЕННЯ

Xxxxxxxx

Розробники

Керівник проекту

__________ /доц. xxxxxxx./

"___" __________ 2007 р.

Виконавець

__________ /студ. xxxxxxx./

"___" __________ 2007 р.

2007
УЗГОДЖЕНО

xxxxxxxxxxxxxx

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

Специфікація

xxxxxxxxxxxxx

2007

Формат Позначення Найменування КількістьПримітка
А4Xxxxxxxxxxx-01 81 ТЗТехнічне завдання2
А4Xxxxxxxxxxx-01 81 ПЗПояснювальна записка6
А4Xxxxxxxxxxx-01 81 ОППрограма та методика іспитів2
А4Xxxxxxxxxxx-01 81 ТПТекст програми4-6

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

"ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ"

Кафедра Обчислювальної техніки та програмування

ЗАТВЕРДЖУЮ

Завідувач кафедри ОТП

__________ /xxxxxxxxx./

"___" __________ 2007р.

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

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

ЛИСТ ЗАТВЕРДЖЕННЯ

Xxxxxxxxxxx-01 81 01-1-ЛЗ

Розробники

Керівник проекту

__________ /доц. xxxxxxx./

"___" __________ 2007 р.

Виконавець

__________ /студ. xxxxxxxx./

"___" __________ 2007 р.

2007
1. Вступ

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

2. Підстава для розробки

Підставою для розробки програми є отримання завдання за темою «Інформаційно-довідкова система».

3. Мета і призначення розробки

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

4. Вимоги до розробки

Розроблена програма повинна виконувати такі пункти:

- Створення поліморфного списку об’єктів;

- Вивід його на екран;

- Занесення у файл;

- Зчитування з файлу;

- Пошук запису;

- Редагування запису;

- Вставка нового запису;

- Знищення запису;

- Виконання задачі;

- Вихід.

5. Стадії та етапи розробки

1. Створення класів;

2. Застосування поліморфізму;

3. Створення двонаправленого списку та робота з ним;

4. Втілення можливостей для даної програми, розглянутих у п.4;

5. Ввід та вивід інформації.

6. Показ результатів.

6. Порядок контролю та прийомки

Розроблене програмне забезпечення повинно:

- виконувати асоціативний пошук даних на основі розробленого алгоритму;

- легко адаптуватися при модифікації структури даних;

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

Відмовлення ЕОМ у роботі не повинний приводити до значних втрат інформації.

Розроблювальне програмне забезпечення має функціонувати в середовищі MS-DOS та Windows і повинний бути написаний мовою C++/С.

7. Програмна документація

Для розроблювального виробу повинні бути складені програмні документи:

- Специфікація;

- Технічне завдання;

- Пояснювальна записка;

- Програма та методика іспиту;

- Текст програми.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

"ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ

Кафедра Обчислювальної техніки та програмування

ЗАТВЕРДЖУЮ

Завідувач кафедри ОТП

__________ /Xxxxxxxxxxx./

"___" __________ 2007р.

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

Пояснювальна записка

ЛИСТ ЗАТВЕРДЖЕННЯ

Xxxxxxxxxxx-01 81 01-1-ЛЗ

Розробники

Керівник проекту

__________ /доц. Xxxxxxxxxxx./

"___" __________ 2007 р.

Виконавець

__________ /студ. Xxxxxxxxxxx./

"___" __________ 2007 р.

2007
Анотація

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

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


Аннотация

В данном расчетно-графическом задании подробно рассматривается алгоритмы полиморфных списков объектов, разработанная программа, которая реализует алгоритм полиморфных списков объектов и интерфейсная часть программы языком C++.

Объяснительная записка содержит достаточно примеров и теоретическую часть для самостоятельного рассмотрения и овладение темы «Полиморфные списки объектов».


Annotation

In the given settlement-graphic task in details is described algorithms of polymorphic lists of the objects, the developed program which realizes algorithm of polymorphic lists of objects and the interface part of the program language C++.

The explain annotation contains enough examples and a theoretical part for independent consideration and mastering of a theme « polymorphic lists of objects».

Зміст

1. Вступ

2. Призначення

3. Технічні характеристики

4. Отримані результати

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

С++ - це спроба рішення розроблювачами мови С завдань об¢єктно- орієнтованого програмування (Object Oriented Programming, OOP). Побудований на твердому фундаменті С, С++ крім ООР підтримує безліч інших корисних інструментів, ні жертвуючи при цьому ні міццю, ні елегантністю, ні гнучкістю С. С++ став універсальною мовою для програмістів усього миру. Саме на мові С++ проводиться навчання студентів у вузах вищих навчальних закладів для підготовки подальшої бази для гарного працевлаштування. С++ містить зручний інтерфейс для користувача початківця для розробки простіших задач але має також і можливості для розробки складних програм.

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

1. Призначення та область використання

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

Розроблена програма повинна виконувати:

- Створення поліморфного списку об’єктів;

- Вивід його на екран;

- Занесення у файл;

- Зчитування з файлу;

- Пошук запису;

- Редагування запису;

- Вставка нового запису;

- Знищення запису;

- Знаходження запису найменшою кількістю треків у заданому діапазоні років

- Вихід.

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

При роботі зі списками на практиці частіше усього приходиться виконувати наступні операції:

- знайти елемент з заданими властивостями;

- знайти перший елемент у лінійному списку;

- вставити елемент до та після вказаного вузла;

- видалити конкретний елемент із списку;

- упорядкувати вузли списку у конкретному порядку.

2. Технічні характеристики

Функціонування системи цілком забезпечується стандартною конфігурацією IBM сумісних персональних ЕОМ. Для експлуатації системи необхідний IBM/PC AT з CPU типу k286 чи вище, обсягом оперативної пам'яті 4 Мбайт і накопичувачем на HARD диску обсягом не менш 200 Мбайт.

Що стосується даної програми, то вхідними даними є інформація типу int та char. Вихідні дані є типами цих же типів. Основні функції встановлюють інформацію або виводять її на екран.

Нижче приведені схеми алгоритму головної функції void main().(Дивись малюнок 1.1)


3. Очікувані техніко-економічні показники

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

4. Розробка

У програмі використовується поліморфізм, інкапсуляція та успадкування, яскраво представлено ООП. При звернені до батьківського класу, викликаються функції наслідних класів(поліморфізм).При успадкуванні наслідні класи мають доступ до полів батьківського класу. Використано віртуальні функції та поліморфний список об’єктів.

Інкапсуляція дозволяє «заховати» змінні-елементи класу.

Опис класів

album

ЗміннаПризначення МетодиПризначення

Nazv

God

Назва альбому

Рік випуску

virtual void input()

virtual void output()

Вод та вивод інформації

аlbum1

ЗміннаПризначення МетодиПризначення
TrekКількість треків

--//--

int getTrek()

void setTrek()

--//--

Встановлення значення trek

аlbum

ЗміннаПризначення МетодиПризначення
TimeПротяжність за часом

--//--

int getTime()

void setTime()

--//--

Встановлення значення time

album3

ЗміннаПризначення МетодиПризначення
BonusКількість бонусних треків

--//--

Int getBonus(), void setBonus()

--//--

Встановлення значення bonus

Tool

ЗміннаПризначення МетодиПризначення

T

*d

*right

*left

Змінна списку

Указ. на об’єкт

Указ. на об’єкт->

Указ. на об’єкт<-

Trst

ЗміннаПризначення МетодиПризначення

*head

*tail

*current

Указ. на голову

Указ. на хвіст

Указ. на текущій

Void add(int type, int vvod)Додавнна нових елементів списку

Клас аlbum – це базовий (батьківський) клас, що містить два інформаційних поля: назву альбому (строковий тип) та рік випуску (цілочисловий тип). Він має дві віртуальні функції (вводу/виводу), та конструктор з деструктором.

Клас аlbum1 – це клас-нащадок класу аlbum, він містить інформаційне поле, що несе інформацію о кількості треків у альбомі. Він також має віртуальні функції (вводу/виводу) та конструктор з деструктором, але ще він має дві функції що створюють поле trek, та повертають значення цього поля.

Клас аlbum2 – це клас-нащадок класу аlbum1, він містить інформаційне поле, що несе інформацію о протяжності альбому за часом. Він також має віртуальні функції (вводу/виводу) та конструктор з деструктором, але ще він має дві функції що створюють поле time, та повертають значення цього поля.

Клас аlbum3 – це клас-нащадок класу аlbum2, він містить інформаційне поле, що несе інформацію о кількості бонусних треків у альбомі. Він також має віртуальні функції (вводу/виводу) та конструктор з деструктором, але ще він має дві функції що створюють поле bonus, та повертають значення цього поля.

Клас Tool – це клас який є двонапрямленим списком об’єктів класу аlbum та його нащадків. Функціями даного класу є конструктор та деструктор що відповідно створюють поліморфний список об’єктів та вивільняють пам'ять відведену під нього.

Клас Trist є дружнім до класу Tool.Він вміщає функцію додавання нових об’єктів до списку. Нові об’єкти додаються у кінець(хвіст) списку і можуть бути одного з типів аlbum, аlbum1, аlbum2 та аlbum3.

Функція intget….() повертає значення даного поля для об’єкту.

Функція intset….() створює поле об'єкта а саме встановлює відповідність(заносить у поле інформацію) з інформацією що вводить користувач при заповнені таблиці.

Функції virtualvoidoutput() та virtualvoidinput() являються яскравими покажчиками поліморфізму бо є віртуальними функціями. Вони слугують для виводу на екран або заповнення об’єкту при роботі з таблицею.

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

· Шилдт Г. Самоучитель С++. – Санкт-Петербург, 2007.

· Матеріали локальної сітки НТУ "ХПІ".

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

"ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ

Кафедра Обчислювальної техніки та програмування

ЗАТВЕРДЖУЮ

Завідувач кафедри ОТП

__________ /Xxxxxxxxxxx./

"___" __________ 2007р.

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

Програма та методика іспитів

ЛИСТ ЗАТВЕРДЖЕННЯ

Xxxxxxxxxxx-01 51 01-1-ЛЗ

Розробники

Керівник проекту

__________ /доц. Xxxxxxxxxxx./

"___" __________ 2007 р.

Виконавець

__________ /студ. Xxxxxxxxxxx./

"___" __________ 2007 р.

2007
УЗГОДЖЕНО

Xxxxxxxxxxx-01 51 01-1-ЛЗ

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

Програма та методика іспитів

Xxxxxxxxxxx-01 51 01-1

2007


1. Об’єкт іспитів

Програма являє собою модуль, що складається з трьох файлів:

- RGZ.cpp (Основний файл, містить функцію main( ) );

- RGZ_DSC.cpp (Файл, що містить опис функцій класів) ;

- RGZ.Н (Файл, що містить опис класів)

Об’єктом іспитів є нижче приведена програма.

2. Мета іспитів

Мета іспитів – це впевнитися у правильності роботи даної програми та оцінити її ефективність.

Тести, котрі перевірюють правильність роботи програми приведені у пункті «Засоби та порядок випробувань».

3. Вимоги до програми та програмного документа

Функціонування системи цілком забезпечується стандартною конфігурацією IBM сумісних персональних ЕОМ.

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

4. Засоби та порядок іспитів

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

Розглянемо виконання програми по пунктах:

· Перед користувачем з'являється повідомлення: "Vveditenomeroperatsii".

· Якщо ви натиснете клавішу "1", то виконаєте наступні дії:

Sozdanie tablizi dannih

Vvedite N: 3

Vvedite tip zapisi [0..2]: 2

Vvedite nazvanie alboma: qqq

Vvedite god vipuska: 1889

Vvedite kl-vo trekov v albome: 11

Vvedite prodolzitelnost alboma po vremeni: 60

Vvedite kolichestvo bonus trekov: 2

Vvedite tip zapisi [0..2]: 0

Vvedite nazvanie alboma: www

Vvedite god vipuska: 1990

Vvedite kl-vo trekov v albome: 12

Vvedite tip zapisi [0..2]: 1

Vvedite nazvanie alboma: eee

Vvedite god vipuska: 1991

Vvedite kl-vo trekov v albome: 13

Vvedite prodolzitelnost alboma po vremeni: 58

· При натисканні на клавішу "2" на екрані з'явиться таблиця яку ви заповнили вище:

Vivod na ekran

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

qqq 1889 11 60 2

www 1990 12

eee 1991 13 58

Vivod na ekran zavershen.

· Якщо ви натиснете "3", то на екрані з'явиться повідомлення:

Vvedite nomer operatsii:3

Vivod v fail a.dat

Vivod v fail uspeshno zavershen.

· Якщо ви натиснете "4", то на екрані з'явиться повідомлення:

Vvedite nomer operatsii:4

Chtenie iz faila a.dat

Chtenie iz faila uspeshno zavershena.

· При натисканні на клавішу "5" на екрані з'явиться повідомлення та ви виконаєте наступні дії:

Vvedite nomer operatsii:5

Poisk obyekta

Vvedite kluch dlya poiska(nazvanie alboma): www

Zapis bila naidena.

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

www 1990 12

· Якщо ви натиснете "6", то на екрані з'явиться повідомлення та ви виконаєте наступні дії:

Vvedite nomer operatsii:6

Redaktirovanie zapisi

Vvedite nomer zapisi: 2

vedite nazvanie alboma: rrr

vedite god vipuska: 1234

vedite kl-vo trekov v albome: 13

vedite prodolzitelnost alboma po vremeni: 56

Redaktirovanie uspeshno zaversheno.

· Результатом ваших дій буде те, що один запис у таблиці зміниться:

Vivod na ekran

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

qqq 1889 11 60 2

www 1990 12

rrr 1234 13 56

Vivod na ekran zavershen.

· При натисканні на клавішу "7" на екрані з'явиться повідомлення та ви виконаєте наступні дії:

Vvedite nomer operatsii:7

Vstavka novoi zapisi

Vvedite tip novoy zapisi [0..2]: 2

vedite nazvanie alboma: zzz

vedite god vipuska: 1534

Vvedite kl-vo trekov v albome: 13

Vvedite prodolzitelnost alboma po vremeni: 222

Vvedite kolichestvo bonus trekov: 1

Vstavka zapisi uspeshno zaversena.

· Результатом ваших дій буде те що один запис у таблиці зміниться:

Vivod na ekran

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

qqq 1889 11 60 2

www 1990 12

rrr 1234 13 56

zzz 1534 11 222 1

Vivod na ekran zavershen.

· Якщо ви натиснете "8" то на екрані з'явиться повідомлення та ви виконаєте наступні дії:

Vvedite nomer operatsii:8

Udalenie zapisi

Vvedite nomer zapisi dlya udalenia:1

Zapis bila udalena.

· Результатом ваших дій буде те, що один запис у таблиці буде знищено:

Vivod na ekran

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

qqq 1889 11 60 2

rrr 1234 13 56

zzz 1534 11 222 1

Vivod na ekran zavershen.

· При натисканні на клавішу "9" на екрані з'явиться повідомлення та ви виконаєте наступні дії:

Vvedite nomer operatsii:9

Poisk obyekta s minimalnim kl-vom trekov v zadannom diapazone let

Vvedite leviy predel poiska(god): 1

Vvedite praviy predel poiska(god): 1600

Zapis bila naidena.

|Nazv |God |Treki |Vremya |Bonus+

-------------------------------------------------------

zzz 1534 11 222 1

· При натисканні на клавішу "10" програму буде завершено.

Кожний отриманий результат відповідає поставленій задачі.

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

"ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ

Кафедра Обчислювальної техніки та програмування

ЗАТВЕРДЖУЮ

Завідувач кафедри ОТП

__________ /Xxxxxxxxxxx./

"___" __________ 2007р.

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

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

Xxxxxxxxxxx-01 12 01-1-ЛЗ

Розробники

Керівник проекту

__________ /доц. Xxxxxxxxxxx./

"___" __________ 2007 р.

Виконавець

__________ /студ. Xxxxxxxxxxx./

"___" __________ 2007 р.

2007
УЗГОДЖЕНО

Xxxxxxxxxxx-01 81 01-1-ЛЗ

Розрахунково-графічне завдання № 1, 2

ІНФОРМАЦІЙНО-ДОВІДКОВА СИСТЕМА

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

Xxxxxxxxxxx-01 12 01-1

2007

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

//Заголовковий файл

#include <string.h>

classalbum

{

public:

album() {}

virtualvoidinput();

virtualvoidoutput();

charnazv[4];//Назва

intgod;//Рік випуску

~album() {}

};

classalbum1: publicalbum

{ protected:

inttrek;//Кількість треків

public:

album1();

virtualvoidinput();

virtualvoidoutput();

intgetTrek()

{

returntrek;

}

voidsetTrek(intc)//ф-ція створення поля

{

trek=c;

}

~album1();

};

class album2: public album1

{

protected:

int time;//Час звучання

public:

album2();

virtual void input();

virtual void output();

int getTime()

{

return time;

}

void setTime(int c)

{

time=c;

}

~album2();

};

class album3: public album2

{

protected:

int bonus;//Кількість бонус треків

public:

album3();

virtual void input();

virtual void output();

int getBonus()

{

return bonus;

}

void setBonus(int c)

{

bonus=c;

}

~album3();

};

class Tool

{

public:

album *d;

int t;

friend class Trist;//об'явлення дружнього класу

Tool *right,*left;

};

class Trist

{

public:

Tool *head,*tail;

Tool *current;

Trist(int type,int vvod);//Конструктор

void add(int type, int vvod);//ф_ція добавлення об’єктів

~Trist();//Деструктор

};

//Описний файл

#include "RGZ.h"

#include <iostream.h>

#include <string.h>

#include <stdlib.h>

#include <iomanip.h>

void album::input()//ф-ція вводу

{

cout << "Vvedite nazvanie alboma: ";

cin >> nazv;

nazv[3]=NULL;

cout << "Vvedite god vipuska: ";

cin >> god;

}

void album::output()//ф-ція виводу

{

cout << endl<< setw(10) << setiosflags(ios::left) << nazv

<< setw(10) << setiosflags(ios::left) << god;

}

album1::album1():album() {}//конструктор

album1::~album1(){ album::~album(); }//деструктор

void album1::input()

{

album::input();

cout << "Vvedite kl-vo trekov v albome: ";

cin >> trek;

}

void album1::output()

{

album::output();

cout<< setw(10) << setiosflags(ios::left) << trek;

}

album2::album2():album1() {}

album2::~album2() { album1::~album1(); }

void album2::input()

{

album1::input();

cout << "Vvedite prodolzitelnost alboma po vremeni: ";

cin >> time;

}

void album2::output()

{

album1::output();

cout << setw(12) << setiosflags(ios::left) << time;

}

album3::album3():album2() {}

album3::~album3() { album2::~album2(); }

void album3::input()

{

album2::input();

cout << "Vvedite kolichestvo bonus trekov: ";

cin >> bonus;

}

void album3::output()

{

album2::output();

cout << setw(10) << setiosflags(ios::left) << bonus;

}

void caption()//заголовкова ф-ція

{

cout << endl << setw(10) << setiosflags(ios::left) << "|Nazv"

<< setw(10) << setiosflags(ios::left) << "|God"

<< setw(10) << setiosflags(ios::left) << "|Treki"

<< setw(10) << setiosflags(ios::left) << "|Vremya"

<< setw(10) << setiosflags(ios::left) << "|Bonus+"<< endl;

cout << "-------------------------------------------------------";

}

Trist::Trist(int type, int vvod)//Створення списку об'єктів

{

album1 *pr;

album2 *sp;

album3 *fl;

head = new Tool;

head->t = type;

if (head->t == 0)

{

pr = new album1;

if (vvod)

pr->input();

head->d=pr;

} else

if (head->t == 1)

{

sp = new album2;

if (vvod)

sp->input();

head->d=sp;

} else

if (head->t == 2)

{

fl = new album3;

if (vvod)

fl->input();

head->d=fl;

}

head->right=NULL;

head->left=NULL;

tail=head;

current=head;

}

Trist::~Trist()//Висвободження памяті

{

Tool *h;

h=head;

while (h!=0)

{ head=head->right;

head->left=NULL;

delete h;

h=head;

}

}

void Trist::add(int type, int vvod)//додавання нового об’єкта у список

{

Tool *q = new Tool;

album1 *pr;

album2 *sp;

album3 *fl;

q->t = type;

switch (q->t)

{

case 0:

pr = new album1;

if (vvod)

pr->input();

q->d=pr;

break;

case 1:

sp=new album2;

if (vvod)

sp->input();

q->d=sp;

break;

case 2:

fl=new album3;

if (vvod)

fl->input();

q->d=fl;

break;

}

if (current==tail)

{

q->right=NULL;

q->left=current;

current->right=q;

tail=q;

current=q;

} else

{ q->right=current->right;

current->right->left=q;

current->right=q;

q->left=current;

current=q;

}

}

//Головний файл

#include "RGZ_dsc.cpp"

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <fstream.h>

void sozdan(Trist *&a, int n);//створення

void output(Trist *&a);//вивід на екран

void output_file(Trist *&a, int n);//вивід до файлу

void input_file(Trist *&a);//читання з файлу

Tool* pois(Trist *&a, char* nazv);//ф-ція пошуку

Tool* zadacha(Trist *&a,int godL,int godR);//виконання задачі

void main()//Головна програма

{

int i,N=5,k;

Trist *a = NULL;

clrscr();

randomize();

while (1)

{

cout << "nn############################";

cout << "n# 1 - Sozdanie bazi dannih #";

cout << "n# 2 - Vivod na ekran #";

cout << "n# 3 - Vivod v fail #";

cout << "n# 4 - Chtenie iz faila #";

cout << "n# 5 - Poisk #";

cout << "n# 6 - Redaktirovanie zapisi #";

cout << "n# 7 - Vstavka novoi zapisi #";

cout << "n# 8 - Udalenie zapisi #";

cout << "n# 9 - Vipolnrnie zadachi #";

cout << "n# 10 - Vihod #";

cout << "nn############################";

cout << "n Vvedite nomer operatsii:";

cin >> k;

switch (k)

{

case 1:

cout << "n Sozdanie tablizi dannih";

cout << "n Vvedite N: ";

cin >> N;

sozdan(a,N);

cout << "n Tabliza dannih sozdana.";

getch();

break;

case 2:

cout << "n Vivod na ekran ";

output(a);

cout << "n Vivod na ekran zavershen.";

getch();

break;

case 3:

cout << "n Vivod v fail a.dat ";

output_file(a,N);

cout << "n Vivod v fail uspeshno zavershen.";

getch();

break;

case 4:

cout << "n Chtenie iz faila a.dat ";

input_file(a);

cout << "n Chtenie iz faila uspeshno zavershena.";

getch();

break;

case 5:

cout << "n Poisk obyekta ";

cout << "n Vvedite kluch dlya poiska(nazvanie alboma): ";

char *nazv;

cin >> nazv;

Tool *n;

// n=NULL;

n = pois(a,nazv);

if (n==NULL) cout << "n Zapis ne naidena.";

else

{

cout << "n Zapis bila naidena.";

caption();

n->d->output();

}

delete nazv;

getch();

break;

case 6:

cout << "n Redaktirovanie zapisi ";

cout << "n Vvedite nomer zapisi: ";

int c;

cin >> c;

a->current=a->head;

for (i=0;a->current!=NULL;i++)

{

if (i==c)

{

a->current->d->input();

break;

}

a->current=a->current->right;

}

cout << "n Redaktirovanie uspeshno zaversheno.";

getch();

break;

case 7:

cout << "n Vstavka novoi zapisi ";

cout << "n Vvedite tip novoy zapisi [0..2]: ";

int p = 0;

cin >> p;

a->current=a->tail;

a->add(p,1);

cout << "n Vstavka zapisi uspeshno zaversena.";

getch();

break;

case 8:

cout << "n Udalenie zapisi ";

cout << "n Vvedite nomer zapisi dlya udalenia: ";

int j = 0;

cin >> j;

a->current=a->head;

for (i=0;a->current!=NULL;i++)

{

if (i==j)

{

Tool *q = a->current;

if (q->left!=NULL) q->left->right = q->right;

if (q->right!=NULL) q->right->left = q->left;

if (q==a->head) a->head=q->right;

if (q==a->tail) a->tail=q->left;

delete q;

a->current = a->tail;

break;

}

a->current=a->current->right;

}

cout << "n Zapis bila udalena.";

getch();

break;

case 9:

cout << "n Poisk obyekta s minimalnim kl-vom trekov v zadannom diapazone let";

cout << "n Vvedite leviy predel poiska(god): ";

int godL,godR;

cin >> godL;

cout << "n Vvedite praviy predel poiska(god): ";

cin >> godR;

Tool *k;

k = zadacha(a,godL,godR);

if (n==NULL) cout << "n Zapis ne naidena.";

else

{

cout << "n Zapis bila naidena.";

caption();

k->d->output();

}

getch();

break;

case 10:

delete a;

exit(0);

break;

}

}

}

void sozdan(Trist *&a, int n)

{

if (a!=NULL)

delete a;

cout << "nVvedite tip zapisi [0..2]: ";

int k;

cin >> k;

a = new Trist(k,1);

for (int i=1;i<n;i++)

{

cout << "nVvedite tip zapisi [0..2]: ";

cin >> k;

a->add(k,1);

}

}

void output(Trist *&a)

{

caption();

a->current=a->head;

while (a->current!=NULL)

{

a->current->d->output();

a->current=a->current->right;

}

}

void output_file(Trist *&a, int n)

{

ofstream file("a.dat",ios::out|ios::binary);

if (!file)

{

cerr << "nOshibka vivoda v fail!n";

getch();

exit(1);

}

file.seekp(0);

file.write((char*)&(n),sizeof(n));

a->current=a->head;

while (a->current!=NULL)

{

file.write((char*)&(a->current->t),sizeof(a->current->t));

file.write(a->current->d->nazv,sizeof(a->current->d->nazv));

switch (a->current->t)

{

case 0:

album1 *obj1;

obj1=(album1*)a->current->d;

int trek = obj1->getTrek();

file.write((char*)&(trek),sizeof(trek));

break;

case 1:

album2 *obj2;

obj2=(album2*)a->current->d;

trek = obj2->getTrek();

int time = obj2->getTime();

file.write((char*)&(trek),sizeof(trek));

file.write((char*)&(time),sizeof(time));

break;

case 2:

album3 *obj3;

obj3=(album3*)a->current->d;

trek = obj3->getTrek();

time = obj3->getTime();

int bonus = obj3->getBonus();

file.write((char*)&(trek),sizeof(trek));

file.write((char*)&(time),sizeof(time));

file.write((char*)&(bonus),sizeof(bonus));

break;

}

a->current=a->current->right;

}

file.close();

}

void input_file(Trist *&a)

{

ifstream file("a.dat",ios::in);

if (!file)

{

cerr << "nOshibka chtenia faila!n";

getch();

exit(1);

}

int n;

file.read((char*)&(n),sizeof(n));

int i;

delete a;

for (i=0;i<n;i++)

{

int t;

file.read((char*)&(t),sizeof(t));

if (i==0) a=new Trist(t,0); else a->add(t,0);

file.read((char*)&(a->current->d->nazv),sizeof(a->current->d->nazv));

switch (t)

{

case 0:

album1 *obj1;

obj1=(album1*)a->current->d;

int trek = 0;

file.read((char*)&(trek),sizeof(trek));

obj1->setTrek(trek);

break;

case 1:

album2 *obj2;

obj2=(album2*)a->current->d;

trek = 0;

int time = 0;

file.read((char*)&(trek),sizeof(trek));

file.read((char*)&(time),sizeof(time));

obj2->setTrek(trek);

obj2->setTime(time);

break;

case 2:

album3 *obj3;

obj3=(album3*)a->current->d;

trek = 0;

time = 0;

int bonus = 0;

file.read((char*)&(trek),sizeof(trek));

file.read((char*)&(time),sizeof(time));

file.read((char*)&(bonus),sizeof(bonus));

obj3->setTrek(trek);

obj3->setTime(time);

obj3->setBonus(bonus);

break;

}

}

file.close();

}

Tool* pois(Trist *&a, char* nazv)

{

Tool *n = NULL;

a->current=a->head;

while (a->current!=NULL)

{

n = a->current;

if (strcmp(n->d->nazv,nazv)==0) break;

else n=NULL;

a->current=a->current->right;

}

return n;

}

Tool* zadacha(Trist *&a,int godL,int godR)

{

Tool *k = NULL;

a->current=a->head;

int max=1000;

while (a->current!=NULL)

{

k = a->current;

if(k->d->god>godL)

if(k->d->god<godR)

if(k->d->trek<min) break;

else k=NULL;

a->current=a->current->right;

}

return k;


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Подогнать готовую курсовую под СТО

Курсовая, не знаю

Срок сдачи к 7 дек.

только что
только что

Выполнить задания

Другое, Товароведение

Срок сдачи к 6 дек.

1 минуту назад

Архитектура и организация конфигурации памяти вычислительной системы

Лабораторная, Архитектура средств вычислительной техники

Срок сдачи к 12 дек.

1 минуту назад

Организации профилактики травматизма в спортивных секциях в общеобразовательной школе

Курсовая, профилактики травматизма, медицина

Срок сдачи к 5 дек.

2 минуты назад

краткая характеристика сбербанка анализ тарифов РКО

Отчет по практике, дистанционное банковское обслуживание

Срок сдачи к 5 дек.

2 минуты назад

Исследование методов получения случайных чисел с заданным законом распределения

Лабораторная, Моделирование, математика

Срок сдачи к 10 дек.

4 минуты назад

Проектирование заготовок, получаемых литьем в песчано-глинистые формы

Лабораторная, основы технологии машиностроения

Срок сдачи к 14 дек.

4 минуты назад

2504

Презентация, ММУ одна

Срок сдачи к 7 дек.

6 минут назад

выполнить 3 задачи

Контрольная, Сопротивление материалов

Срок сдачи к 11 дек.

6 минут назад

Вам необходимо выбрать модель медиастратегии

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

Срок сдачи к 7 дек.

7 минут назад

Ответить на задания

Решение задач, Цифровизация процессов управления, информатика, программирование

Срок сдачи к 20 дек.

7 минут назад
8 минут назад

Все на фото

Курсовая, Землеустройство

Срок сдачи к 12 дек.

9 минут назад

Разработка веб-информационной системы для автоматизации складских операций компании Hoff

Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления

Срок сдачи к 1 мар.

10 минут назад
11 минут назад

перевод текста, выполнение упражнений

Перевод с ин. языка, Немецкий язык

Срок сдачи к 7 дек.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно