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.         Засоби та порядок іспитів

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

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

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

·          Якщо ви натиснете клавішу "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>

class album

{

public:

album() {}

virtual void input();

virtual void output();

char nazv[4];//Назва

int god;//Рік випуску

~album() {}

};

class album1: public album

{ protected:

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

public:

album1();

virtual void input();

virtual void output();

int getTrek()

{

return trek;

}

void setTrek(int c)//ф-ція створення поля

{

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 << "\n\n############################";

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 << "\n\n############################";

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;


Информация о работе «Інформаційно-довідкова система»
Раздел: Информатика, программирование
Количество знаков с пробелами: 28670
Количество таблиц: 12
Количество изображений: 0

Похожие работы

Скачать
54368
0
8

... ійних систем Unix або Windows NT. Засоби доступу до даних і самі БД розміщуються або на потужному Unix-сервері, або на великих мейнфреймах. Концепція автоматизованої інформаційно-аналітичної системи ДПС України передбачає використання трирівневої архітектури клієнт—сервер. Основним напрямом удосконалення інформаційного забезпечення ДПС є розроблення та запровадження архітектури єдиної розподілено ...

Скачать
56565
4
4

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

Скачать
73857
16
9

... ВНДОХ после 4 лет -1% ВНДОХ после 5 лет 8% ВИСНОВКИ Виходячи з того, що метою даної курсової роботи було вивчення методів оцінки ефективності функціонування інформаційної логістичної системи, в роботі розглянуті наступні питання: ·   розгляд проблем інформаційної логістики, ·   інформаційного забезпечення логісти

Скачать
35457
4
8

... ізування даних є виявлення певних правил та закономірностей у великих масивах різнорідних даних, які накопичуваються у інформаційній системі супроводження системи якості ВНЗ. Як відмічено у [12] система якості відповідно до вимог ISO 9001:2000 є інструментом для впровадження концептуальної моделі підготовки випускника ВНЗ. Зазначена модель вимагає збирання структурованої інформації і даних про ...

0 комментариев


Наверх