Разработка программных средств базы данных видеодисков

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    323,45 Кб
  • Опубликовано:
    2013-06-04
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программных средств базы данных видеодисков

Министерство Образования Российской Федерации

Рязанский Государственный Радиотехнический Университет

Кафедра САПР ВС







Дисциплина: «Инженерная и компьютерная графика»

Пояснительная записка

к курсовой работе

по теме:

«Разработка программных средств БД видеодисков»

Выполнила:

ст. гр. 547

Хрусталёв К.Д.

Проверил:

Бакулев А.В.




Рязань

г.

Оглавление

1.       Введение

2.      Теоретический раздел

2.1     Модели баз данных

2.2    Архитектура СУБД

.3      Технология BDE для доступа к данным

.4      Драйверы баз данных

3.       Практический раздел

3.1.1 Проектирование БД

.1 Создание таблицы

.2 Интерфейс программы

.3 Дерево объектов

.4 Инсталлятор

.5 Справка

. Исходный текст программы

.1 Файл проекта

.2 Unit1

.3 Unit2

.4 Unit3

.5 Unit4

.6 Unit6

.7 hkdunit.pas

Список используемой литературы

1.     
Введение

База данных - это совокупность записей различного типа, содержащая перекрестные ссылки.

Записи одного типа внутри базы данных хранятся в таблицах.

Файл - это совокупность записей одного типа, в котором перекрестные ссылки отсутствуют.

Более того, в определении вообще нет упоминания о компьютерной архитектуре. Дело в том, что, хотя в большинстве случаев база данных действительно представляет собой один или (чаще) несколько файлов, физическая их организация существенно отличается от логической. Таблицы могут храниться как в отдельных файлах, так и все вместе. И наоборот, для хранения одной таблицы иногда используются несколько файлов. Для поддержки перекрестных ссылок и быстрого поиска обычно выделяются дополнительные специальные файлы.

В ряде случаев базы данных реализуются вообще без привлечения файловой системы. Это связано как с ее ограничениями (в ряде операционных систем размер файла не может превышать 2 Гбайта), так и с необходимостью обеспечить максимально быструю работу с жестким диском. Например, некоторые системы работают с носителями, подвергнутыми простейшему форматированию, несовместимому со стандартами DOS или Windows и предназначенному исключительно для упрощения процесса доступа к данным. Есть программы, обрабатывающие данные на специализированных дисковых носителях RAID и множестве других периферийных устройств, назначение которых только одно: повысить скорость доступа к большим объемам сведений.

Поэтому при работе с базами данных обычно применяются понятия более высокого логического уровня: запись и таблица, без углубления в подробности их физической структуры.

Таким образом, сама по себе база данных - это только набор таблиц с перекрестными ссылками. Чтобы универсальным способом извлекать из нее группы записей, обрабатывать их, изменять и удалять, требуются специальные программы, которые называются системами управления базами данных или сокращенно СУБД.

Функциональные возможности разных СУБД лежи в весьма широком диапазоне. В некоторые комплексы встроены специализированные языки программирования и даже целые системы визуальной разработки, генераторы сложных отчетов, аналитические модули. Они способны поддерживать одновременную работу с данными десятков тысяч пользователей. Другие СУБД обладают только базовым набором возможностей (хранение данных в таблицах и выполнение запросов). При их использовании разработчикам приходится самостоятельно программировать работу по созданию отчетов, удобному просмотру и редактированию содержимого базы данных и так далее. В зависимости от предоставляемых ими средств СУБД обычно сильно различаются по цене.

2. Теоретический раздел

.1 Модели баз данных

Таблицы, в которых хранятся данные, состоят из наборов записей одинаковой структуры. Можно сказать, что таблица - это двумерный массив, где строки образованы отдельными записями, а столбцы - полями этой записи. Более точно таблица представляется как одномерный массив переменной длины из записей конкретной структуры (тип record Паскаля).

Модель базы данных, состоящей из подобных таблиц, называется реляционной. Практически все ведущие производители СУБД поддерживают именно эту модель баз данных, и в книге в дальнейшем будет рассказываться именно о ней. Реляционная модель хороша тем, что проста в работе и реализации и позволяет создавать быстро работающие системы.

Имеется еще несколько моделей баз данных. Некоторые из них значительно эффективнее реляционной, но не получили широкого распространения из-за сложности создания подходящих СУБД.

О В иерархической модели данные организованы в виде деревьев.

О В сетевой модели каждый узел (набор) базы данных взаимодействует с другими узлами посредством сложной системы связей.

О В последнее время признание завоевывает объектная модель данных, когда в базе хранятся не только данные, но и методы их обработки в виде программного кода. Это перспективное направление, пока также не получившее активного распространения из-за сложности создания и применения подобных СУБД.

.2 Архитектура СУБД

Приложения, использующие базы данных, обычно принято относить к одной из программных архитектур, имеющих свои плюсы и минусы.

Локальная архитектура

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

Файл-серверная архитектура

База данных расположена на мощном выделенном компьютере (сервере), а персональные компьютеры подключены к нему по локальной сети. На этих компьютерах установлены клиентские программы, обращающиеся к базе данных по сети. Преимущество такой архитектуры заключается в возможности одновременной работы нескольких пользователей с одной базой данных.

Недостаток такого подхода - большие объемы информации, передаваемой по сети. Вся обработка выполняется на клиентских местах, где фактически формируется копия базы данных. Это приводит к ограничению максимально возможного числа пользователей и большим задержкам при работе с базой. Эти задержки вызываются тем, что на уровне конкретной таблицы одновременный доступ невозможен. Пока программа на одном из клиентских мест не закончит работу с таблицей (например, не выполнит модификацию записей), другие программы не могут обращаться к этой таблице. Это называется блокировкой на уровне таблицы и исключает возникновение путаницы в ее содержимом.

Клиент-серверная архитектура

В такой архитектуре на сервере не только хранится база данных, но и работает программа СУБД, обрабатывающая запросы пользователей и возвращающая им наборы записей. При этом программы пользователей уже не работают напрямую с базой данных как набором физических файлов, а обращаются к СУБД, которая выполняет операции. Нагрузка с клиентских мест при этом снимается, так как большая часть работы происходит на сервере. СУБД автоматически следит за целостностью и сохранностью базы данных, а также контролирует доступ к информации с помощью службы паролей. Клиент-серверные СУБД допускают блокировку на уровне записи и даже отдельного поля. Это означает, что с таблицей одновременно может работать любое число пользователей, но доступ к функции изменения конкретной записи или одного из ее полей обеспечен только одному из них.

Основной недостаток этой архитектуры - не очень высокая надежность. Если сервер выходит из строя, вся работа останавливается.

Распределенная архитектура

В сети работает несколько серверов, и таблицы баз данных распределены между ними для достижения повышенной эффективности. На каждом сервере функционирует своя копия СУБД. Кроме того, в подобной архитектуре обычно используются специальные программы, так называемые серверы приложений. Они позволяют оптимизировать обработку запросов большого числа пользователей и равномерно распределить нагрузку между компьютерами в сети. Если, помимо работы с данными, требуется выполнить интенсивные вычисления (например, анализ сложной информации), программы для выполнения этих задач (они обычно называются компонентами) могут автоматически запускаться на более мощных сетевых компьютерах. Это практически полностью снимает нагрузку с клиентских мест. Такая архитектура гакже называется компонентной.

Недостаток распределенной архитектуры заключается в довольно сложном и дорого

стоящем процессе ее создания и сопровождения (администрирования), а также в высоких требованиях к серверным компьютерам.

Интернет-архитектура

Благородя стандартизации всех протоколов и интерфейсов взаимодействия в Интернете такие системы легко создавать и внедрять. Например, можно не организовывать локальную сеть, а обращаться к серверу через Интернет или использовать протоколы Интернета в локальной сети (в таком случае говорят о технологиях интранет). В этом случае не требуется разрабатывать специальные клиентские программы или придумывать собственные спецификации обмена данными между сервером и клиентскими местами. Достаточно использовать готовые браузеры и программные решения.

В данной книге рассматриваются способы создания программ для всех описанных архитектур.

.3 Технология BDE для доступа к данным

При создании программ, работающих с базами данных, в системе Delphi традиционно используется механизм Borland Database Engine (BDE). В состав Delphi 7 входит версия BDE 5.2, которую, впрочем, можно бесплатно обновлять разными способами (например, обратившись к Web-узлу #"656651.files/image001.jpg">

Рис.1 Создание таблицы Films

Полю Name назначаем вторичный индекс NameID. Вторичный индекс нужен что бы была возможность произвести поиск и сортировку в поле Name.

Рис2. Назначение вторичного индекса

Сохраняем базу данных как Films.DB. В результате создаются 5 файлов. Из которых файл с расширением .MB - это поле типа Formatted Memo, .XGO, .YGO - в них индексируется поле Name, .DB - непосредственно сам файл таблицы.

3.2 Интерфейс программы

Рис.2.1 Главное окно

Рис3.

Фильтр - фильтрация фильмов по жанру. При нажатии “фильтр” появляется окно с выбором жанра фильма. Жанр можно выбрать из списка, либо ввести вручную. Фильтр чувствителен к регистру. Фильтрация организуется запросом.

Рис4. Окно фильтра

Сохранить описание - сохраняет описание фильма в текстовый файл. Название текстового файла будет совпадать с названием фильма, при желании можно изменить на дугое название. Организуется стандартным в Дельфи диалогом “Save dialog”

Рис5. Окно сохранения описания фильма

Редактирование записей - окно редактирования (удаления, добавления, изменения и т.д.) записей в таблице.

Рис6. Добавить запись

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

Выход - завершение работы с программой.

3.3 Дерево объектов

Рис.7 Дерево объектов

Окно1:

DBEdit1 - жанр

DBEdit2 - имя изображения/видео

DBGrid1 - название фильмов

DBMemo1 - описание фильмов1 - Поиск

Image1 - Отображение изображений

Imagelist1 - изображения для кнопок

MainMenu1

MediaPlayer1 - плеер

Panel1

ProgressBar1 - отображает статус фильтрации БД

SaveDialog1 - сохранение описания фильма в файл

StatusBar1

Окно2:- жанр2 - имя изображения/видео

DBGrid1 - название фильмов

DBMemo1 - описание фильмов

DBNavigator1 - Управление базой данных

Label1

Label2

Label3

Label4

OpenPictureDialog1 - окно загрузки изображения/видео

SpeedButton1 - вызов окна загрузки изображения/видео

Окно3:

ComboBox1 - выбор жанра

SpeedButton1 - фильтровать

SpeedButton2 - выход

Окно5:

Окно6:- рамка- закрыть окно

3.4 Инсталлятор

В качестве создания инсталлятора используем программу WinRAR 3.6x

Устанавливаем параметры сжатия:

Рис.8 Параметры сжатия

Устанавливаем каталог в который будет распакована программа:

Рис.9 Параметры SFX

Добавляем ярлыки на рабочий стол и в ПУСК -> Программы

база данные серверный программа

Рис.10 Параметры SFX. Ярлыки

Рис.11 SFX сценарий

.5 Справка

Справка сделана в виде HTM страниц, создавалась в редакторе Microsoft FrontPage (рис.13).

Справка вызывается при нажатии горячей клавиши [F1] либо при выборе из меню Помощь -> Справка (рис.12).

Рис.12 Вызов справки

Рис. 13 Справка

Исходный текст программы

Файл проекта:

program Project1;,in 'Unit1.pas' {Form1}, //основная форма2 in 'Unit2.pas' {Form2}, //форма добавления записи

Unit3 in 'Unit3.pas' {Form3}, //фильтрin 'Unit4.pas' {Form5}, //заставкаin 'Unit6.pas' {Form6}; //окно о программе

{$R *.res}.Initialize;:= TForm5.Create(Application);//форма заставки.Show;.Update;Form5.Timer1.Enabled do.ProcessMessages;.CreateForm(TForm1, Form1);.CreateForm(TForm2, Form2);.CreateForm(TForm3, Form3);.CreateForm(TForm6, Form6);.Hide;.Free;.Run;.:Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ComCtrls, Menus,, DB, DBTables, XPMan, ImgList, ExtCtrls, hkdunit1, MPlayer,;= class(TForm): TDBGrid;: TDBMemo;: TStatusBar;: TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TToolBar;: TToolButton;: TToolButton;: TToolButton;: TDataSource;: TTable;: TDatabase;: TProgressBar;: TXPManifest;: TMenuItem;: TMenuItem;: TImageList;: TImage;: TMenuItem;: TMenuItem;: TMenuItem;: TSaveDialog;: TEdit;: TMenuItem;: TDBEdit;: TPanel;: TDBEdit;: TMediaPlayer;: TMenuItem;: TToolButton;: TToolButton;N4Click(Sender: TObject);Creat_(Sender: TObject);N2Click(Sender: TObject);ChangeEdit(Sender: TObject);N10Click(Sender: TObject);ChangeIMG(Sender: TObject);N11Click(Sender: TObject);N6Click(Sender: TObject);N8Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;:integer;, bExclusive: Boolean;Unit2, Unit3, Unit4, Unit6;

{$R *.dfm}TForm1.N4Click(Sender: TObject);.Terminate;;TForm1.Creat_(Sender: TObject);.Show;

{-----инициализация бд----------}.DatabaseName:= 'MyNewAlias';.DriverName:= 'STANDARD';.Params.Clear;.Params.Add('PATH=.\base');//путь к базе данных.DatabaseName:= 'MyNewAlias';.TableName:= 'Films';//имя базы данных.Active:= True;.DataSet:= Table1;

{----конец инициализации бд---------}.DataSource:= DataSource1;.Datafield:='Ganre';.DataSource:= DataSource1;.Datafield:='Img';.DataSource:= DataSource1;.DataField:='Info';.DataSource:= DataSource1;.Columns.Add.FieldName:='Name';.Panels.Items[0].text :=' Всего записей: '+inttostr(Table1.RecordCount); //кол-во записей в бд:=Table1.RecordCount;.IndexName:='NameID';.First;

{-----------progressBar in Statusbar---------}ProgressBar1 do:= StatusBar1;:= 0;:= 2;:= 120;:= StatusBar1.Height - Top;:= 150//StatusBar1.Panels[0].Width - Left;;;TForm1.N2Click(Sender: TObject);//сохранение опиёсания игры в текстовый файлs:string;:=Table1.FieldByName('Name').DisplayText;1.Title:=' Сохранить описание фильма: '+s;

Savedialog1.FileName:=strtst(s,'\/:*?<>|',2); //удаление спец символовSavedialog1.Execute then.Lines.SaveToFile(Savedialog1.Filename);;;TForm1.ChangeEdit(Sender: TObject);// приблизительный поискs9, s7, s8 : string;Edit1.Text<>'' then:=Edit1.Text;:=Edit1.Text[1];(s7,s8);[1]:=s8[1];.FindNearest([s9]);;;TForm1.N10Click(Sender: TObject);.Show;;TForm1.ChangeIMG(Sender: TObject); // загрузка изображения и видио файлаCheckFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.bmp')=0 //проверка наличия файла.Picture.LoadFromFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.bmp'); //загрузкафайла изображенияImage1.Picture.Graphic := nil;//иначе удаляем изображениеCheckFile('.\base\img\'+table1.FieldByName('Img').DisplayText+'.avi')=0 then //проверка наличия файла

N11.Enabled:=true; //делаем кнопку проиграть видео доступной

ToolButton4.Enabled:=true;mediaPlayer1.Enabled then.Close;.Visible:=false;;.Enabled:=false;.Enabled:=false;;;TForm1.N11Click(Sender: TObject);//проиграть видеоMediaPlayer1 do:= '.\base\img\'+table1.FieldByName('Img').DisplayText+'.avi';;.Visible:=true;:= Panel1;:= Panel1.ClientRect;;;.Enabled:=false;.Enabled:=false;;TForm1.N6Click(Sender: TObject); //фильтрация базы данныхTable1.Filtered then.Filtered:=false.Show;;TForm1.N8Click(Sender: TObject);.Show;.Visible:=true;;.:Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, DBCtrls, Mask, Grids, DBGrids, ExtCtrls, ShellApi,, ExtDlgs,hkdunit1;= class(TForm): TDBGrid;: TDBEdit;: TDBMemo;: TDBEdit;: TLabel;: TLabel;: TLabel;: TLabel;: TDBNavigator;: TSpeedButton;: TOpenPictureDialog;Create_(Sender: TObject);SpeedButton1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm2;Unit1;

{$R *.dfm}

//функция копирования файлаWindowsCopyFile(FromFile, ToDir : string) : boolean;: TShFileOpStruct;.Wnd := 0; F.wFunc := FO_COPY;:=FromFile+#0; F.pFrom:=pchar(FromFile);:=ToDir+#0; F.pTo:=pchar(ToDir);.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;:=ShFileOperation(F) = 0;;

//функция переименования файлаRenameFiles( Handle : HWnd; Src : string; New : string;: Boolean ) : Integer;: TSHFileOpStruct;SHFileOpStruct do:= Handle;:= FO_RENAME;:= PChar( Src );:= PChar( New );:= 0;AutoRename then:= FOF_RENAMEONCOLLISION;:= False;:= nil;:= nil;;:= SHFileOperation( SHFileOpStruct );;TForm2.Create_(Sender: TObject);.DataSource:= Form1.DataSource1;.Datafield:='Ganre';.DataSource:= Form1.DataSource1;.Datafield:='Img';.DataSource:= Form1.DataSource1;.DataField:='Info';.DataSource:= Form1.DataSource1;.Columns.Add.FieldName:='Name';.DataSource:=Form1.DataSource1;;TForm2.SpeedButton1Click(Sender: TObject);DBEdit2.Text='' then('Error#02 Введите новое имя файла')//Ошибка - не введено новое имя файла

elseOpenPictureDialog1.Execute thenCheckFile('.\base\img\'+OpenPictureDialog1.FileName)<>0 //проверка наличия файлаnot WindowsCopyFile(OpenPictureDialog1.FileName, ApplicationPath+'\base\img\') then //копирование файла('Error#01 Copy Failed')(Handle,ApplicationPath+'\base\img\'+ //переименование файла с извлечением расширения(OpenPictureDialog1.FileName,true),ApplicationPath+'\base\img\'+DBEdit2.Text+'.bmp',false);('Error#03 Copy Failed');;;;.:Unit3;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons;= class(TForm): TComboBox;: TSpeedButton;: TSpeedButton;SpeedButton1Click(Sender: TObject);SpeedButton2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm3;Unit1;

{$R *.dfm}TForm3.SpeedButton1Click(Sender: TObject);i:integer;Combobox1.Text<>'Выберите жанр:' then.Table1.Filtered:=true;i:=0 to (Form1.progressbar1.max) do.progressbar1.Position:=i;.Table1.Filter:='Ganre = ' + QuotedStr(ComboBox1.Text); //SQL запрос;.progressbar1.Position:=0;;;;TForm3.SpeedButton2Click(Sender: TObject);;;.:Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls, jpeg, StdCtrls,unit1;= class(TForm): TImage;: TTimer;Timer1Timer(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm5;

{$R *.dfm}TForm5.Timer1Timer(Sender: TObject);.Enabled:=false;;.:Unit6;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Buttons, ExtCtrls, StdCtrls;= class(TForm): TLabel;: TLabel;: TMemo;: TBevel;: TSpeedButton;SpeedButton1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm6;

{$R *.dfm}TForm6.SpeedButton1Click(Sender: TObject);;;.

Модуль hkdunit1.pas:HKDUnit1;SysUtils,Messages,Windows,MMSystem,Classes,Variants,Dialogs,Graphics,Forms,,ShlOBJ,comctrls, WinInet, Masks, ExtCtrls, ShellAPI,StdCtrls, Menus,,RichEdit, inifiles, ImgList;

{--------------РАБОТА С ФАЙЛАМИ------------------------------------}

//Проверка файла: 1-нет файла;0-файл присутствует

function CheckFile(filename:string):integer;

{--------------ПРИЛОЖЕНИЕ----------------------------------}

//Возвращает путь запущенной программыApplicationPath: string;

{-------------РАБОТА СО СТРОКАМИ----------------------------}

//Удаление из строки ненужных символов

function strtst(var Input: string; EArray: string; Action: integer): string;

//Процедура приведения строки к верхниму регистру

procedure strtoBig(s_1 : string; var s_2: string);ExtractFileNameEx(FileName: string; ShowExtension: Boolean): string;

{--------------------END---------------------------------------------------------}

{------------------------------------------------------------------------------}ExtractFileNameEx(FileName: string; ShowExtension: Boolean): string;: Integer;, S1: string;:= Length(FileName);I <> 0 then(FileName[i] <> '\') and (i > 0) do:= i - 1;:= Copy(FileName, i + 1, Length(FileName) - i);:= Length(S);i = 0 then:= '';;;(S[i] <> '.') and (i > 0) do:= i - 1;:= Copy(S, 1, i - 1);s1 = '' then:= s;ShowExtension = TRUE then:= s:= s1;:= '';;strtoBig(s_1 : string; var s_2: string);s__,S__2: string;_,j_ : integer;__:='абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz';__2:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ';_2:=s_1;i_:=1 to Length(s_1) doj_:=1 to 59 dos_1[i_]=s__[j_] then_2[i_]:=s__2[j_];;;

{------------------------------------------------------------------------------}strtst(var Input: string; EArray: string; Action: integer): string;Action of

:length(Input) <> 0 dopos(Input[1], EArray) = 0 then(Input, 1, 1):= result + Input[1];(Input, 1, 1);;;;

:length(Input) <> 0 dopos(Input[1], EArray) <> 0 then(Input, 1, 1):= result + Input[1];(Input, 1, 1);;;;

messagebox(0, 'Не корректный вызов функции.', '', mb_ok);

end;;CheckFile(filename:string):integer;f : file;(f,filename);

{$I-}(f);(f);

{$I+}Ioresult <>0 then:=1:=0;

{------------------------------------------------------------------------------}ApplicationPath: string;:= ExtractFilePath(ParamStr(0));;

{------------------------------------------------------------------------------}.

Список используемой литературы

1.       Delphi7 учебный курс. С.Бобровский. Питер, 2004г. 735л.

2.      Архив статей DelphiWorld 6

Похожие работы на - Разработка программных средств базы данных видеодисков

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!