Створення бази відеофільмів

що розробники багатьох реляційних БД включають в свої бази засоби роботи з об'єктними типами даних. Такі бази даних одержали назву об'єктно-реляційних. Таким же чином, зокрема, розвивається і Oracle. Що була раніше чисто реляційною базою, Oracle починаючи з 8 версії підтримує можливість зберігання і обробки об'єктів і без жодної натяжки може бути віднесена до об'єктно-реляційного класу баз даних.


2.1.3 Етапи проектування БД

I. Концептуальне проектування - збирання, аналіз і редагування вимог до даних. Для цього здійснюються слідуючі заходи:

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

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

моделювання і інтеграція всіх представлень.

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

II. Логічне проектування - перетворення вимог до даних в структури даних. На виході одержуємо СУБД-орієнтовану структуру бази даних і специфікації прикладних програм. На цьому етапі часто моделюють бази даних стосовно різних СУБД і проводять порівняльний аналіз моделей.

III. Фізичне проектування - визначення особливостей зберігання даних, методів доступу і т.д.

Відмінність рівнів представлення даних на кожному етапі проектування реляційної бази даних:

КОНЦЕПТУАЛЬНИЙ РІВЕНЬ - Представлення аналітика (використовується інфологічна модель «сутність-зв'язок»)

сутність

атрибути

зв'язки

ЛОГІЧНИЙ РІВЕНЬ - Представлення програміста

записи

елементи даних

зв'язки між записами

ФІЗИЧНИЙ РІВЕНЬ - Представлення адміністратора

групування даних

індекси

методи доступу


2.1.4 Використання БД

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

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

З одного боку, більшість БД створюється в ході рішення конкретних задач. Це проблемно-орієнтовані БД. Але є і такі бази, метою створення яких є збереження інформації, що міститься в джерелі, і велика доступність її для дослідника. Ці напрями розвиваються в руслі відповідно методико- і источнико-орієнтованих підходів.

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

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


2.2 Структури даних


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

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

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

Різні види структур даних підходять для різних додатків; деякі з них мають вузьку спеціалізацію для певних задач. Наприклад, Б-деревья звичайно підходять для створення баз даних, тоді як хэш-таблиці використовуються повсюдно для створення різного роду словників, наприклад, для відображення доменних імен в інтернет адреси комп'ютерів.

При розробці програмного забезпечення складність реалізації і якість роботи програм істотно залежить від правильного вибору структур даних. Це розуміння дало початок формальним методам розробки і мовам програмування, в яких саме структури даних, а не алгоритми, ставляться в розділ архітектури програмного засобу. Велика частина таких мов володіє певним типом модульної, дозволяючим структурам даних безпечно перевикористовуватися в різних додатках. Об'єктно-орієнтовані мови, такі як Java, C# і C++, є прикладами такого підходу.

Багато класичних структур даних представлені в стандартних бібліотеках мов програмування або безпосередньо вбудоване в мови програмування. Наприклад, структура даних хэш-таблиця вбудована в мови програмування Lua, Perl, Python, Ruby, Tcl і ін. Широко використовується стандартна бібліотека шаблонів STL мови C++. Фундаментальними будівельними блоками для більшої частини структур даних є масиви, записи (конструкція struct в мові С і конструкція record в мові Паскаль ), розмічені об'єднання (конструкція union в мові С) і посилання.

2.3 Функції


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

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

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

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

програмування база відеофільм

3 РОЗРОБКА ПРОГРАМНОГО ЗАБЕСПЕЧЕННЯ ДЛЯ РЕАЛІЗАЦІЇ БАЗИ ВІДЕОФІЛЬМІВ


3.1 Опис програмної реалізації бази відеофільмів


На початку роботи було підключено стандартні бібліотеки мови С <vcl.h>, <iostream.h> (для роботи з файлами), <conio.h> (для затримання екрана за допомогою функції getch()), <string.h> (для роботи зі строками), <stdio.h> (введення-виведення даних), <stdlib.h> (для використання функцій псевдовипадкових чисел).

Структура даних videoteka складається з даних символьного типу (char), які ініціалізують назву фільму (name), студію запису фільму (studio), жанр фільму (genre), рік випуску фільму (year), режисера фільму (producer), акторів, що грають у фільмі (actors), коротку характеристики фільму (about), суб'єктивну оцінку фільму (bal) і прізвище користувача відеотеки, охочого одержати або повернути касету (FIO).

В моїй програмі використовуються різноманітні функції, які відповідають за:

Функція showlist() записує дані про фільм і зчитує їх при необхідності.

Функція recive() дозволяє користувачу повернути касету. Функція також має перевірку на наявність помилок. Якщо касета знаходиться в відеотеці, про що свідчить надпис «No» в полі «Taken», то програма видасть повідомлення про неможливість сдачі касети в відеотеку: «You can not give current movie back, because it is not given out».

Функція delivery() містить інформацію про видачу касети. Якщо касета знаходиться на руках, то функція видає повідомлення про неможливість видачі касети «You can not receive current movie, because it is in».

Функція showfull() показує повну інформацію про фільм.

Функція list() організовує меню:

«1-View full information about movie

2-Distribute movie

3-Return movie», за допомогою якого стає можливим проглянути всю інформацію про фільм, одержати фільм і повернути його у відеотеку відповідно, що значно спрощує роботу з програмою.

Функція library() містить всі фільми, які присутні в відеотеці, а також всю інформацію про ці фільми. За допомогою цієї функції також можна додавати фільми до складу відеотеки.

Функція menu() дозволяє переглянути інформіцію про всі фільми відеотеки з подальшою можливістю замовити або повернути будь-яку касету з наявних, додати фільм до відеотеки та вийти з меню за допомогою трьох цифр 1, 2, 0 відповідно: «1 - List preview 2 - Add to the library 0 - exit».


3.2 Результати, отримані користувачем при використанні отриманого програмного забезпечення


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


Створення бази відеофільмів

Малюнок 3.1 Головне меню


Натискаємо 1 для перегляду відеотеки.


Створення бази відеофільмів

Малюнок 3.2 Зміст відеотеки


Натискаємо клавішу Ентер і перед нами з’являється меню, розташоване під переліком фільмів відеотеки.

Створення бази відеофільмів

Малюнок 3.3 Зміст відеотеки з меню


Натискаємо 1 для перегляду повнішої інформації про будь-який фільм. Потімвводтмо номер фільму, що цікавить нас, і читаємо відповідну інформацію. Дляприкладу візьмемо фільм під номером 5.


Створення бази відеофільмів

Малюнок 3.4 Інформація про фільм під номером 5 в відеотеці

Далі ми повертаємося до головного меню, використовуючи клавішу Ентер.

Для того, щоб узяти касету, необхідно в головному меню вибрати пункт «Distribute», ввести номер фільму і своє прізвище для успішного замовлення.


Створення бази відеофільмів

Малюнок 3.5 Успішне замовлення касети


При правильності введення всіх даних в полі «Given» навпроти фільму з’явиться «Yes», що означатиме відсутність касети у відеотеці.

Якщо ви не ввели своє прізвище, то програма видасть помилку «Canceled operation, because Last Name is empty».


Створення бази відеофільмів

Малюнок 3.6 Помилка при замовленні касети


Також буде виведена помилка «Out of Range», якщо ви ввели номер, який не відповідає жодному з фільмів (в даному випадку більше 9).


Створення бази відеофільмів

Малюнок 3.7 Помилка при замовленні касети


Повернення до головного меню здійснюється за допомогою клавіші Ентер.

Для повернення касети в тому ж меню натискаємо цифру 3 («Return»), потім номер фільму.


Створення бази відеофільмів

Малюнок 3.8 Успішне повернення касети


Буде видана помилка, якщо ви хочете повернути касету, яка в даний момент є в наявності, тобто знаходиться не на руках.


Створення бази відеофільмів

Малюнок 3.9 Помилка при поверненні касети

При успішному поверненні касети в полі «Given» навпроти фільму висвітиться «No», що означає наявність касети у відеотеці і можливість її замовлення.

За допомогою натиснення клавіші «2» в головному меню можна додавати фільми у відеотеку, слідуючи простим навігаціям програми.


Створення бази відеофільмів

Малюнок 3.10 Меню додавання фільмів до відеотеки


ВИСНОВОК


У ході виконання даного курсового проекту була розроблена програма мовою високого рівня у середовищі Builder C++, а також вивчені можливості даної мови.

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

Отримано практичні навички роботи в середовищі Builder C++.

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

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

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


СПИСОК ЛІТЕРАТУРИ


http:www.intuit

Перколаб Ю.В., Браткевич В.В. Объектно-ориентированное программирование. Конспект лекций. – Харьков: Изд. ХГЭУ, 2003. – 168с.

Гиковатый В.М. Основы алгоритмизации на базе ООП. Учебное пособие. Харьков: Изд. ХНЭУ, 2006. – 92 с.

Грэхели Иан Объектно-ориентированные методы. Принципы и практика. 3-е издание: Пер. с англ. – М.: Изд. дом «Вильямс», 2004. – 880с.

Кузин А.В., Левонисова С.В. Базы данных. Учебное пособие для студентов высших учебных заведений. – СПб.: Academia, 2005. – 320 с.

Грабер М. SQL для простых смертных. – М.: Изд. Лори, 2008. – 375 с.

Альфред Ахо, Джеффри Д.Ульман. Структуры данных и алгоритмы. 2003. - 367с.


ДОДАТОК А


Текст програмного коду


#include <vcl.h>

#include <iostream.h>

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

struct videoteka

{

char name[21];

char studio[16];

char genre[16];

char year[5];

char producer[16];

char actors[101];

char about[201];

char bal[3];

char FIO[51];

};

void showlist(FILE* f1)

{

clrscr();

fseek(f1,0,SEEK_SET);

cout<<"No| Name | Studio | Ganre |Year|Estimation|Given|n";

cout<<"==============================================================================n";

int i=0;

videoteka ex;

while (fread(&ex, sizeof(ex), 1, f1))

{

printf ("%2i|",i);

printf ("%-20s|",ex.name);

printf ("%-15s|",ex.studio);

printf ("%-15s|",ex.genre);

printf ("%4s|",ex.year);

printf ("%10s|",ex.bal);

if (ex.FIO[0]==0)printf ("No |");

else

printf("Yes |");

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

i++;

} cout<<"==============================================================================n";

}

void recive(FILE* f1,char line[255])

{

videoteka ex;

int count=0;

fseek(f1,0,SEEK_SET); //првернення до початку потоку

while (count<=StrToInt(line))

{

if(!(fread(&ex, sizeof(ex), 1, f1)))

{

cout<<("Out of Range");

getchar();

return;

}

count++;

}

if (ex.FIO[0]==0)

{

cout<<"You can not give current movie back, because it is not given out";

getchar();

return;

}

for (int i=0;i<51;i++) ex.FIO[i]=0;

fseek(f1,-51,SEEK_CUR);

fputs(ex.FIO,f1);fputc(0,f1);

cout<<"Completed okey!";

getchar();

}

void delivery(FILE* f1,char line[255])

{

videoteka ex;

int count=0;

fseek(f1,0,SEEK_SET);

while (count<=StrToInt(line))

{

if(!(fread(&ex, sizeof(ex), 1, f1)))

{

cout<<("Out of Range");//номер не відповідає жодному з фільмів

getchar();

return;

}

count++;

}

if (ex.FIO[0]!=0)

{

cout<<"You can not receive current movie, because it is in "<<ex.FIO;

getchar();

return;

}

cout<<"Enter Last Name:"; cin.getline(line,255);

if (line[0]==0)

{

cout<<"Canceled operation, because Last Name is empty";//ви не ввели прізвище замовника

getchar();

return;

}

for (int i=0;i<50;i++) ex.FIO[i]=line[i];

ex.FIO[50]=0;

fseek(f1,-51,SEEK_CUR);

fputs(ex.FIO,f1);fputc(0,f1);

cout<<"Completed okey!";

getchar();

}

void showfull(FILE* f1, char line[255])

{

clrscr();

fseek(f1,0,SEEK_SET);

videoteka ex;

int count=0;

while (count<=StrToInt(line))

{

if(!(fread(&ex, sizeof(ex), 1, f1)))

{

cout<<("Out of Range");

getchar();

return;

}

count++;

}

cout<<"Name:"<<ex.name<<"n";

cout<<"Studio:"<<ex.studio<<"n";

cout<<"Genre:"<<ex.genre<<"n";

cout<<"Year:"<<ex.year<<"n";

cout<<"Producer:"<<ex.producer<<"n";

cout<<"Actors:"<<ex.actors<<"n";

cout<<"About:"<<ex.about<<"n";

cout<<"Estimation:"<<ex.bal<<"n";

cout<<"Last Name:"<<ex.FIO<<"n";

cout<<"Press enter to continuen"; cin.getline(line,255);

}

void list()

{

FILE* f1;

if (!(f1=fopen("lyb.txt","r+")))//відкриття файлу за допомогою режима «r+», який означає зчитування та запис інформації

{

perror("Error in open file!!!");// помилка у відкритті файла

getchar();

exit(0);

}

showlist(f1);

char line[255];

cout<<"Press enter to continuen"; cin.getline(line,255);

cout<<"1-View full information about movien";

cout<<"2-Distribute movien"; //видача касети

cout<<"3-Return movien"; //повернення касети

cout<<"Enter:"; cin.getline(line,255);

if (line[0]=='1')

{

cout<<"Enter No of movie:"; cin.getline(line,255);

showfull(f1,line);

line[0]=0;

}

if (line[0]=='2')

{

cout<<"Enter No of movie:"; cin.getline(line,255);

delivery(f1,line);

line[0]=0;

}

if (line[0]=='3')

{

cout<<"Enter No of movie:"; cin.getline(line,255);

recive(f1,line);

line[0]=0;

}

fclose(f1);

}

void library()

{

clrscr();

FILE* f1;

if (!(f1=fopen("lyb.txt","a+")))//відкриття файлу за домогою режима «а+», що означає зчитування та додавання інформації

{

perror("Error in open file!!!");

getchar();

exit(0);

}

do

{

clrscr();

cout<<"Press Enter for exitn";

videoteka ex1;

char line[255];

for (int i=0;i<255;i++)line[i]=0;

cout<<"Enter name of movie:"; cin.getline(line,255);

if (line[0]=='')

{

fclose(f1);

return;

}

for (int i=0;i<20;i++) ex1.name[i]=line[i];

cout<<"Enter studio of movie:"; cin.getline(line,255);

for (int i=0;i<15;i++) ex1.studio[i]=line[i];

cout<<"Enter genre of movie:"; cin.getline(line,255);

for (int i=0;i<15;i++) ex1.genre[i]=line[i];

cout<<"Enter year of movie:"; cin.getline(line,255);

for (int i=0;i<4;i++) ex1.year[i]=line[i];

cout<<"Enter producer of movie:"; cin.getline(line,255);

for (int i=0;i<15;i++) ex1.producer[i]=line[i];

cout<<"Enter actors of movie:"; cin.getline(line,255);

for (int i=0;i<100;i++) ex1.actors[i]=line[i];

cout<<"Enter about movie:"; cin.getline(line,255);

for (int i=0;i<200;i++) ex1.about[i]=line[i];

cout<<"Enter estimation of a film:"; cin.getline(line,255);

for (int i=0;i<2;i++) ex1.bal[i]=line[i];

ex1.FIO[0]='';

ex1.name[20]=0;

ex1.studio[15]=0;

ex1.genre[15]=0;

ex1.year[4]=0;

ex1.producer[15]=0;

ex1.actors[100]=0;

ex1.about[200]=0;

ex1.bal[2]=0;

ex1.FIO[50]=0;

fwrite(&ex1,sizeof(ex1),1,f1);//запис даних про тільки-но введені фільми до файлу

}

while (1==1);

}

void menu()

{

char i[255];

do

{

clrscr();

cout<<" Menun";

cout<<"1 - List previewn";

cout<<"2 - Add to the libraryn";

cout<<"0 - exitn";

cout<<"nEnter:";

cin.getline(i,255);

if (i[0]=='1') list();

if (i[0]=='2') library();

}

while (i[0]!='0');

}

void main()

{

menu(); }


ДОДАТОК Б


Перелік фільмів в відеотеці


Створення бази відеофільмів

Размещено на

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: