Змінна | Призначення | Методи | Призначення |
*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р.
Програма та методика іспитів
ЛИСТ ЗАТВЕРДЖЕННЯ
Xxxxxxxxxxx-01 51 01-1-ЛЗ
РозробникиКерівник проекту__________ /доц. Xxxxxxxxxxx./"___" __________ 2007 р.Виконавець__________ /студ. Xxxxxxxxxxx./"___" __________ 2007 р. |
2007
УЗГОДЖЕНО
Xxxxxxxxxxx-01 51 01-1-ЛЗ
Програма та методика іспитів
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р.
Текст програми
Xxxxxxxxxxx-01 12 01-1-ЛЗ
РозробникиКерівник проекту__________ /доц. Xxxxxxxxxxx./"___" __________ 2007 р.Виконавець__________ /студ. Xxxxxxxxxxx./"___" __________ 2007 р. |
2007
УЗГОДЖЕНО
Xxxxxxxxxxx-01 81 01-1-ЛЗ
Текст програми
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: ";