В моїй програмі використовуються різноманітні функції, які відповідають за:
1. Функція showlist() записує дані про фільм і зчитує їх при необхідності.
2. Функція recive() дозволяє користувачу повернути касету. Функція також має перевірку на наявність помилок. Якщо касета знаходиться в відеотеці, про що свідчить надпис «No» в полі «Taken», то програма видасть повідомлення про неможливість сдачі касети в відеотеку: «You can not give current movie back, because it is not given out».
3. Функція delivery() містить інформацію про видачу касети. Якщо касета знаходиться на руках, то функція видає повідомлення про неможливість видачі касети «You can not receive current movie, because it is in».
4. Функція showfull() показує повну інформацію про фільм.
5. Функція list() організовує меню:
«1-View full information about movie
2-Distribute movie
3-Return movie», за допомогою якого стає можливим проглянути всю інформацію про фільм, одержати фільм і повернути його у відеотеку відповідно, що значно спрощує роботу з програмою.
6. Функція library() містить всі фільми, які присутні в відеотеці, а також всю інформацію про ці фільми. За допомогою цієї функції також можна додавати фільми до складу відеотеки.
7. Функція 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++.
В даній курсовій роботі була розроблена система, яка дозволяє зберігати інформацію та використовувати її в праці для рішення конкретних задач. Ця система має назву проблемно-орієнтовані бази даних.
За допомогою розробленої бази відеофільмів можна переглядати інформацію про наявні фільми, а також замовляти або повертати касети, що значно полегшує роботу продавця або виключає його посередність взагалі.
На даний момент можна констатувати значну роль баз даних в дослідженні будь-якого фахівця, що використовує в своїй роботі комп'ютер.
СПИСОК ЛІТЕРАТУРИ
1. http:www.intuit.ru
2. Перколаб Ю.В., Браткевич В.В. Объектно-ориентированное программирование. Конспект лекций. – Харьков: Изд. ХГЭУ, 2003. – 168с.
3. Гиковатый В.М. Основы алгоритмизации на базе ООП. Учебное пособие. Харьков: Изд. ХНЭУ, 2006. – 92 с.
4. Грэхели Иан Объектно-ориентированные методы. Принципы и практика. 3-е издание: Пер. с англ. – М.: Изд. дом «Вильямс», 2004. – 880с.
5. Кузин А.В., Левонисова С.В. Базы данных. Учебное пособие для студентов высших учебных заведений. – СПб.: Academia, 2005. – 320 с.
6. Грабер М. SQL для простых смертных. – М.: Изд. Лори, 2008. – 375 с.
7. Альфред Ахо, Джеффри Д.Ульман. Структуры данных и алгоритмы. 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 continue\n"; 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 continue\n"; cin.getline(line,255);
cout<<"1-View full information about movie\n";
cout<<"2-Distribute movie\n"; //видача касети
cout<<"3-Return movie\n"; //повернення касети
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);