РефератыИнформатика, программированиеБаБаза данных DVD–фильмов

База данных DVD–фильмов

Введение


Дорогой Александр Григорьевич если вы читаете это введение, значит я наконец – то закончил свой курсовой проект. Он называется «База данных DVD – фильмов». Скорее всего, он ни кому, ни будет, нужен и денег я на нем не заработаю. Это очень печально. Хотя если взглянуть на это с другой стороны, то почти у каждого человека в этом мире есть своя коллекция DVD - фильмов и мысль, что эта программа может им пригодиться, меня очень радует. Как говорится, нет худа, без добра. Программа очень проста в использовании и ест очень мало ресурсов. Работает почти на любой операционной системе и на любом компьютере. Теперь поговорим о самой программе. Она многофункциональна. Занесенную информацию о DVD – фильмах можно изменять, удалять и редактировать. Информация о дисках записывается в базу данных по пяти полям: название диска, цена, год выпуска, фамилия режиссера, кинокомпания, которая создавала фильм. Также можно сортировать диски по этим же полям. В общем, она настолько проста, что даже ребенок может в ней разобраться. А самое главное, что программа написана на русском языке да еще русским студентом третьего курса, АФРГСУ который учится на факультете ИТиР. Как это расшифровывается, я до сих пор не могу запомнить!!!


1.
Общая часть


1.1 Краткое описание работы


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


1. Кнопка вывода информации.


Вся информация, находящаяся в файле и выводится в данную таблицу.


2. Кнопка поиска информации.


При нажатии кнопки поиск отображается окно поиска. Поиск происходит по пяти параметрам. Выбираем один из параметров, вводим данные и начинается поиск, найденные данные выводятся в этом же окне в таблице.


3. Кнопка удаления.


Удаление происходит следующим образам: выбираем курсором, какой DVD – фильм вы хотите удалить и следовательно нажимаем кнопку удаление.


4. Область редактирования.


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


5. Кнопка добавления информации.


Отображается окно добавления информации. Информация также добавляется по пяти полям. Добавленная информация мгновенно выводится в главном окне.


1.2 Выбор языка и среды программирования


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


Краткость языка, легкость программирования на нем, мобильность написанных программ, возможность эффективной реализации и пригодность с точки зрения формальных методов отладки программ обеспечили языку Object Pascal и конкретно среде Delphi успех в тех делах, для которых он предназначался.


2.
Основная часть


2.1
Структура
данных


type disk=record


name:string[50];


reg: string[30];


cincom: string[30];


stoim:integer;


year:integer;


end;


Тип записи disk является представлением информации: stoim - стоимость DVD - фильма, name -название DVD – фильма, reg – фамилия режиссера, cincom – название кинокомпании, year – год выхода фильма на DVD.


tdvd=array[1..300] of disk


Тип tdvd является одномерным массивом, содержащим 300 элементов типа disk , т.е. этот массив содержит информацию о 300ах
DVD - фильмах, полученную в результате заполнения файла с информацией.


recordfile=file of disk


Типизированный файл «recordfile» содержит записи типа disk , т.е. содержит исходную информацию о каждом DVD - фильме .


Описание файлов


При работе программа использует постоянный файл с информацией


‘db_ disk.db’ – файл с исходной информацией;


2.2 Структурные элементы программы


Описание глобальных переменных используемых в модуле kursovik.pas приведено в таблице 1.


Таблица 1. Глобальные переменные.














































Идентификатор


Тип


Назначение


n


integer


Переменная – счётчик


m


integer


Переменная – счётчик


dvdfile


string


Название файла


f


recordfile


Файл с записями


g


recordfile


Файл с записями


Form1


Tform1


Идентификатор формы


but


integer


Определяет нажатую кнопку при появлении сообщения


h


HWND


Дескриптор окна


horizon


integer


Номер строки в таблице


k


integer


Проверка существования телефона



Таблица 2. Константа.










Идентификатор


Значение


Назначение


detect


‘savedvd’


Путь к файлам необходимым для работы программы



Таблица 3. Глобальные переменные модуля Unit2.рas.










Идентификатор


Тип


Назначение


Form2


Tform2


Идентификатор формы



Таблица 3. Глобальные переменные модуля unit search.pas


























Идентификатор


Тип


Назначение


Form4


Tform4


Идентификатор формы


dvdfile


string


Название файла


n


integer


Переменная – счётчик


f


recordfile


Файл с записями


g


recordfile


Файл с записями



Таблица 4. Глобальные переменные модуля unit Input.pas






























Идентификатор


Тип


Назначение


Form3


Tform3


Идентификатор формы


dvdfile


string


Название файла


n


integer


Переменная – счётчик


k


integer


Переменная – счётчик


f


recordfile


Файл с записями


g


recordfile


Файл с записями



Описание
процедур


Модуль kursovik.pas


procedure tform1.clearlist;


Данная процедура очищает таблицу вывода информации.


procedure tform1.vivod (dvdfile:string);


Данная процедура осуществляет вывод данных записанных в файл. Параметр dvdfile – директория файла.


Алгоритм:


1. Привязываем к файловой переменной “f” переменную dvdfile и открываем на чтение.


2. Если файл обнаружен, то в цикле, до тех пор, пока не достигнут конец файла, запускаем счётчик и выводим в ячейки таблицы данные из файла. Если счётчик равен нулю, следовательно, файл пустой, запускается процедура clearlist.


3. В случае не обнаружения файла, он создаётся в необходимой директории.


Таблица 5. Локальные переменные.


















Идентификатор


Тип


Назначение


s


disk


Запись


f1


recordfile


Файл с записями


count


integer


Номер по списку



procedure tform1.deletef (horizon:integer);


Данная процедура осуществляет удаление записи из фала.


Алгоритм.


1. В параметр d передаётся введённая модель телефона.


2. Открываем на чтение основной файл “db_disk.db” на чтение и создаём временный “new.db”. Перезаписываем его.


3. До тех пор, пока не достигнут конец файла, читаем записи и если поле записи обозначающей имя не равно переменной “d”, пишем во временный файл все наши записи. Удаляем основной файл и переприсваиваем его директорию временному файлу.


Таблица 5. Локальные переменные.














Идентификатор


Тип


Назначение


el


tdvd


Запись


f1


recordfile


Файл с записями



procedure tform1.sort_1(dvdfile: string);


procedure tform1.sort_2(dvdfile: string);


procedure tform1.sort_3(dvdfile: string);


procedure tform1.sort_4(dvdfile: string);


procedure tform1.sort_5(dvdfile: string);


Процедуры, перечисленные выше почти одинаковы различны только по полям сортировки Во всех процедурах используется алгоритм сортировки методом вставки. Параметр dvdfile – директория файла.


Таблица 6. Локальные переменные.


































Идентификатор


Тип


Назначение


f


file of disk


Типизированный файл с записями


q


file of disk


Типизированный файл с записями


c


integer


Счётчик записей


i


integer


Элемент массива


n


integer


Элемент массива


buf


disk


Запись


el


tdvd


Массив с записями



procedure Tform1.editzap;


Данная процедура осуществляет редактирование данных записанных в файл.


Алгоритм.


1. Открываем на чтение основной файл с информацией и в переменную name заносим название dvd, один из параметров которого нам необходимо заменить.


2. Пока нет конца файла, запускаем счётчик n. Сравниваем введённое название, с имеющимися в dvd. При совпадении присваиваем переменной m значение счётчика. Переменная m будет отвечать за позицию записи в фале. Далее переменной new присваиваем данные, которые надо записать в вместо исходных.


3. Переходим с помощью функции seek на позицию m-1, то есть над необходимой записью. Читаем из файла запись.


4. Затем в case comboBox3.ItemIndex выбираем поле которое необходимо заменить и присваиваем ему значение переменной new. Если параметр не символьный переводим переменную new в цифровой формат при помощи функции.


5. Перезаписываем запись в файле. Закрываем его и выводим на экран при помощи процедуры vivod.


Таблица 7. Локальные переменные.


























Идентификатор


Тип


Назначение


f1


recordfile


Временный файл с записями


q


disk


Запись


s


disk


Запись


new


string


Новые введённые данные


name


string


Введённое название dvd



procedure TForm1.FormCreate(Sender: TObject);


Данная процедура вызывается при создании окна и запускает процедуру nanol. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.ComboBox2Change(Sender: TObject);


В данной процедуре осуществляется выбор и запуск необходимой процедуры сортировки, путём нажатия одного из пунктов выпадающего списка ComboBox. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N8Click(Sender: TObject);


Данная процедура завершает работу программы из меню в случае положительного ответа на появляющееся сообщение. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N7Click(Sender: TObject);


Данная процедура выводит информацию из файла при помощи при помощи процедуры vivod из меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N14Click(Sender: TObject);


procedure TForm1.N15Click(Sender: TObject);


procedure TForm1.N16Click(Sender: TObject);


procedure TForm1.N17Click(Sender: TObject);


procedure TForm1.N18Click(Sender: TObject);


Процедуры приведённые выше отвечают за запуск процедур сортировки sort_1(derect+'db_disk.db'),sort_2(derect+'db_disk.db'), sort_3(derect+'db_disk.db')sort_4(derect+'db_disk.db'), sort_5(derect+'db_disk.db'), из меню, соответственно. Процедуры содержат входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N5Click(Sender: TObject);


Данная процедура отвечает за запуск процедуры удаления deletef и вывод обновлённой информации с помощью процедуры vivod из меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N4Click(Sender: TObject);


Данная процедура отвечает за добавление информации в файл с помощью процедуры input из меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N2Click(Sender: TObject);


Данная процедура запускает процедуру вывода vivod, путём нажатия на необходимый пункт во всплывающем меню над областью таблицы. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N10Click(Sender: TObject);


procedure TForm1.N11Click(Sender: TObject);


procedure TForm1.N12Click(Sender: TObject);


procedure TForm1.freg1Click(Sender: TObject);


procedure TForm1.fcincom1Click(Sender: TObject);


Процедуры, приведенные выше, сходны по своему принципу. Каждая из них вызывает конкретную процедуру сортировки (sort_1, sort_2, sort_3, sort_4, sort_5), путём нажатия на пункт, всплывающего меню над областью таблицы. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N9Click(Sender: TObject);


Данная процедура запускает процедуру очистки списка clearlist, путём нажатия на необходимый пункт во всплывающем меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N23Click(Sender: TObject);


Данная процедура запускает процедуру очистки списка clearlist, путём нажатия на необходимый пункт в меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N6Click(Sender: TObject);


Данная процедура запускает процедуру редактирования redactor из меню. Процедура содержит входную переменную Sender - тип tobject, этот параметр определяет, какой объект программы вызывает данную процедуру.


procedure TForm1.N21Click(Sender: TObject);


Данная процедура отображает окно с информацией о программе.


procedure tform3.input(var f:recordfile; var dvdfile:string);


Данная процедура осуществляет запись данных в файл.


Параметр “f” – типизированный файл типа recordfile. Dvdfile – деректория файла.


Алгоритм:


1. Привязываем к файловой переменной “g” временный файл derect+'buffer.db' и перезаписываем его. Привязываем к файловой переменной “f” переменную dvdfile и открываем на чтение.


2. Если в файле находится что-либо, копируем содержимое “f” в “g” и закрываем “f”, если нет, перезаписываем и закрываем “f”.


3. Присваиваем переменным записей введенные поля.


4. Проверяем наличие введённого dvd в файле, путем сравнения названия введённой диска с уже находящимися в файле в цикле достижения конца файла. Если поля равны, присваиваем переменной k значение 1, если нет, то оставляем по умолчанию равной нулю.


5. Далее проверяем значение переменой k. Если k=1, то выводится сообщение о том что данный диск существует и запись не осуществляется, если иначе, то происходит запись в файл.


6. В конце закрываем “g” и удаляем “f”. Переприсваиваем директорию dvdfile переменной “g”. И выводим обновлённый список с помощью процедуры vivod.


Таблица 8. Локальные переменные.














Идентификатор


Тип


Назначение


s


disk


Запись


q


disk


Запись



procedure tform1.search_1(dvdfile:string; var g:recordfile);


procedure tform1.search_2(dvdfile :string; var g:recordfile);


procedure tform1.search_3(dvdfile:string; var g:recordfile);


procedure tform1.search_4(dvdfile:string; var g:recordfile);


procedure tform1.search_5(dvdfile:string; var g:recordfile);


Процедуры, приведены выше, почти одинаковы и различается лишь поле, по которому происходит поиск. Во всех процедурах, кроме второй, на экран выводится только те записи, поля которых полностью совпадают, с введёнными нами данными. В третьей, четвёртой и пятой процедурах список выводится отсортированным по названию модели. Параметр “g” – типизированный файл типа recordfile. Параметр dvdfile – директория файла.


procedure TForm1.Button4Click(Sender: TObject);


Данная процедура отвечает за функцию изменения информации. При нажатии на кнопку курсором вызывается процедура editzap.


procedure TForm1.Button7Click(Sender: TObject);


Данная процедура закрывает полностью программу. При нажатии на кнопку отображается окно подтверждения


2.3 Расчёт объёма оперативной памяти


Как я уже говорил раньше, эта программа почти ни чего не ест, т. е. занимает очень мало места. Для определения потребляемой памяти, я использовал стандартный диспетчер задач Windows. Исходя из данных показанных в нём, в процессе работы программа максимально потребляет 5000 кб.


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


При запуске программы появляется окно, с дружественным интерфейсом рис. 1. Все операции выполняются в данном окне. При вызове информации о программе в пункте меню появляется окно, содержащее необходимую информацию рис. 2. Функция добавления изображена на рис. 3. Функция поиска изображена на рис. 4.



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



Рисунок 2.. Информация о программе.



Рисунок 3. Окно добавления новой информации.



Рисунок 4. Окно поиска информации


3. Проверка работоспособности


3.1 Комплект поставки программы


1. dvdproekt.exe - исполняемый файл программы


2. Savedvd - папка с файлом db_disk.db, содержащим базу данных. Также папка используется для хранения временных файлов, создаваемых во время работы программы.


3.2 Описание результатов проверки программы


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


Таблица 10. Описание результатов проверки программы.
















































Компоненты ЭВМ, программное обеспечение


Конфигурация ЭВМ



Микропроцессор, тактовая частота


Объем оперативной памяти


Тип видеоадаптера, объем видеопамяти


Объем дискового пространства


Операционная система


1


Intel (R) Celeron, 1.7 GHz


128 Mb


Intel (R) 828456 Graphics controller, 32 Mb


10 Gb


MS Windows 2000


2


AMD Turion 64x2 Mobile Technology TL-60 2.0 GHz


3 Gb


NVIDIA GeForce 8600 GS, 512 Mb


320 Gb


MS Windows Vista


3


AMD Sempron (tm) 2200+, 1.5 GHz


768 Mb


ATI Radeon 9600 series, 128Mb


80 Gb


MS Windows XP Professional


Конфигурация ЭВМ


4


Pentium (R) D, 2x2.8 Mhz


1.5 Gb


NVIDIA GeForce 8500 GT, 256 Mb


80 Gb


MS Windows XP Professional


5


Pentium 4, 3.01Ghz


512 Mb


ATI Radeon X1600, 256Mb


20 Gb


MS Windows XP Professional



3.3 Минимальные системные требования


1.Процессор: 170 MHz;


2. Оперативная память: 5000kb;


3. Физическая память на жестком диске: 1400MB свободного места;


4. Видеокарта с поддержкой VGA;


5. Устройства ввода/вывода данных: клавиатура, монитор, мышь.


Заключение


Вот и все! Мой проект закончен. Есть две причины, для чего я делал это. Первая, что бы сдать его Вам Александр Григорьевич! Вторая, для получения знаний по операционным системам и самому программированию в целом и что бы, не было скучно. Ну а теперь о главном. Я думаю, цель, поставленная передо мной, выполнена. Я немного стал разбираться в Delphi. Научился работать с процедурами, с записями и с циклами. Также создал простую, а главное удобную программу, которая может пригодиться любому коллекционеру фильмов на DVD дисках. Очень простой интерфейс позволяет работать в программе даже ребенку, и старшему поколению, которому очень трудно обращаться с новыми технологиями, в том числе и компьютерами. А в завершении хотелось бы сказать большое спасибо разработчикам Delphi. Ведь без этой среды разработки у меня ни чего бы, не вышло. Всем спасибо за помощь. До свидания!!!


Список литературы


1. Михаил Фленов, «Библия Delphi», Санкт Петербург «БХВ- Петербург» 2004 год, 882 стр.


2. Владимир Гофман, Анатолий Хамоненко, «Delphi быстрый старт», Санкт Петербург «БХВ-Петербург» 2003 год, 280 стр.


3. Евгений Марков, Петр Дарахвелидзе, «Программирование в Delphi 7», Санкт Петербург «БХВ-Петербург» 2003 год, 780 стр.


4. Поган А.М., Царенко Ю.А., “Программирование в Delphi”, Москва «ЭКСМО» 2006 год, 309 стр.


5. Бобровский А. , “Delphi 5. Учебный курс.” , Санкт – Петербург, Москва, Харьков, Минск, «ЗАО Питербук» , 2004 год, 639 стр.


Приложение 1


Листинг программы и её модулей


program Kursovik;


uses


Forms,


kurs in 'kurs.pas' {Form1},


Unit2 in 'Unit2.pas' {Form2},


Input in 'Input.pas' {Form3},


search in 'search.pas' {Form4};


{$R *.res}


begin


Application.Initialize;


Application.CreateForm(TForm1, Form1);


Application.CreateForm(TForm2, Form2);


Application.CreateForm(TForm3, Form3);


Application.CreateForm(TForm4, Form4);


Application.Run;


end.


Модуль kurs.pas


unit kursovik;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, Menus, jpeg, ExtCtrls, Grids, DBGrids, ShellAPI, XPMan;


const


derect='savedvd';


type disk=record


name:string[50];


stoim:integer;


year:integer;


reg:string[30];


cincom:string[30];


end;


tdvd=array[1..300] of disk;


recordfile=file of disk;


TForm1 = class(TForm)


MainMenu1: TMainMenu;


N1: TMenuItem;


N3: TMenuItem;


N4: TMenuItem;


N5: TMenuItem;


N6: TMenuItem;


N7: TMenuItem;


N8: TMenuItem;


N14: TMenuItem;


N15: TMenuItem;


N16: TMenuItem;


N17: TMenuItem;


N18: TMenuItem;


N19: TMenuItem;


N21: TMenuItem;


StringGrid1: TStringGrid;


ComboBox3: TComboBox;


Edit9: TEdit;


PopupMenu1: TPopupMenu;


N2: TMenuItem;


N9: TMenuItem;


N10: TMenuItem;


N11: TMenuItem;


N12: TMenuItem;


reg1: TMenuItem;


cincom1: TMenuItem;


N13: TMenuItem;


N22: TMenuItem;


N23: TMenuItem;


N24: TMenuItem;


XPManifest1: TXPManifest;


N26: TMenuItem;


Label8: TLabel;


Button1: TButton;


Button2: TButton;


Button3: TButton;


Button4: TButton;


Button5: TButton;


Button6: TButton;


Button7: TButton;


N25: TMenuItem;


procedure N8Click(Sender: TObject);


procedure FormCreate(Sender: TObject);


Procedure deletef(horizon:integer);


procedure editzap;


procedure clearlist;


procedure vivod (dvdfile:string);


procedure sort_1(dvdfile:string);


procedure sort_2(dvdfile: string);


procedure sort_3(dvdfile: string);


procedure sort_4(dvdfile: string);


procedure sort_5(dvdfile: string);


procedure N7Click(Sender: TObject);


procedure N14Click(Sender: TObject);


procedure N15Click(Sender: TObject);


procedure N16Click(Sender: TObject);


procedure N17Click(Sender: TObject);


procedure N18Click(Sender: TObject);


procedure N5Click(Sender: TObject);


procedure N2Click(Sender: TObject);


procedure N10Click(Sender: TObject);


procedure N11Click(Sender: TObject);


procedure N12Click(Sender: TObject);


procedure reg1Click(Sender: TObject);


pr

ocedure cincom1Click(Sender: TObject);


procedure N9Click(Sender: TObject);


procedure N6Click(Sender: TObject);


procedure N21Click(Sender: TObject);


procedure N23Click(Sender: TObject);


procedure N4Click(Sender: TObject);


procedure StringGrid1SelectCell(Sender: TObject; ACol,


ARow: Integer; var CanSelect: Boolean);


procedure N26Click(Sender: TObject);


procedure Edit9Click(Sender: TObject);


procedure Button7Click(Sender: TObject);


procedure Button5Click(Sender: TObject);


procedure Button6Click(Sender: TObject);


procedure Button1Click(Sender: TObject);


procedure Button2Click(Sender: TObject);


procedure Button3Click(Sender: TObject);


procedure N25Click(Sender: TObject);


procedure Button4Click(Sender: TObject);


private


public


n,m,k:integer;


f,g:recordfile;


but:integer;


h:HWND;


horizon : integer;


end;


var


Form1: TForm1;


implementation


uses unit2, Input, search;


{$R *.dfm}


procedure tform1.clearlist;


begin


n:=0;


while n<stringgrid1.rowcount do


begin


StringGrid1.Cells[0,n+1]:='';


StringGrid1.Cells[1,n+1]:='';


StringGrid1.Cells[2,n+1]:='';


StringGrid1.Cells[3,n+1]:='';


StringGrid1.Cells[4,n+1]:='';


StringGrid1.Cells[5,n+1]:='';


n:=n+1;


end;


stringgrid1.RowCount:=2;


end;


procedure tform1.vivod (dvdfile:string);


var s:disk;


count:integer;


f1:recordfile;


begin


assignfile(f,dvdfile);{$I-}


reset(f); {$I+}


N:=0;


count:=0;


If IOResult=0 then


begin


while not eof(f) do


begin


count:=count+1;


read(f,s);


StringGrid1.cols[0][N+1]:=inttostr(count);


StringGrid1.Cells[1,N+1]:=s.name;


StringGrid1.Cells[2,N+1]:=inttostr(s.stoim)+' руб.';


StringGrid1.Cells[3,N+1]:=intToStr(s.year)+' год';


StringGrid1.Cells[4,N+1]:=s.reg;


StringGrid1.Cells[5,N+1]:=s.cincom;


N:=N+1;


end;


seek(f,0);


closefile(f);


if count=0 then


clearlist


else


stringgrid1.rowcount:=N+1;


end


else


begin


createdir('savedvd');


assignfile(f1,derect+'db_ disk.db');


rewrite(f1);


closefile(f1);


end;


end;


procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,


ARow: Integer; var CanSelect: Boolean);


begin


horizon:=ARow;


end;


{Удаление записи}


Procedure tform1.deletef(horizon:integer);


var


f1:recordfile;


el:tdvd;


begin


but:=MessageBox(0,'Удалить данные?','Внимание!',MB_YESNO or MB_ICONquestion);


if but=IDYES then


begin


assignfile(f1,derect+'new.db');


rewrite(f1);


assignfile(f,derect+'db_ disk.db');


reset(f);


n:=1;


while not eof(f) do


begin


read(f,el[n]);


if n <> horizon then


write(f1,el[n]);


n:=n+1;


end;


closefile(f);


closefile(f1);


erase(f);


rename(f1,derect+'db_ disk.db');


vivod(derect+'db_disk.db');


end;


end;


procedure tform1.sort_1(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].name<el[i].name then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


procedure tform1.sort_2(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].stoim<el[i].stoim then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


procedure tform1.sort_3(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].year<el[i].year then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


procedure tform1.sort_4(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].reg<el[i].reg then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


procedure tform1.sort_5(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].cincom<el[i].cincom then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


{Редактирование}


procedure Tform1.editzap;


var


q:disk;


new:string;


begin


n:=0;


assignfile(f,derect+'db_ disk.db');


reset(f);


try


new:=Edit9.text;


seek(f,horizon-1);


read(f,q);


case comboBox3.ItemIndex of


0:q.name:=new;


1:try q.stoim:=strtoint(new);


except


MessageBox(0,'Цена указывается в цифрах!','',MB_OK or MB_ICONWARNING)


end;


2:try q.year:=strtoint(new);


except


MessageBox(0,'Год выпуска указывается в цифрах!','',MB_OK or MB_ICONWARNING)


end;


3:q.reg:=new;


4:q.cincom:=new;


end;


begin


seek(f,horizon-1);


write(f,q);


closefile(f);


end;


except


MessageBox(0,'Выбирите строку из списка.','',MB_OK or MB_ICONWARNING)


end;


edit9.clear;


vivod(derect+'db_ disk.db');


end;


procedure TForm1.FormCreate(Sender: TObject);


begin


StringGrid1.Rows[0][0]:='Номер';


StringGrid1.Rows[0][1]:='Название фильма';


StringGrid1.Rows[0][2]:='Цена DVD-диска';


StringGrid1.Rows[0][3]:='Год выпуска';


StringGrid1.Rows[0][4]:='Режиссёр';


StringGrid1.Rows[0][5]:='Кинокомпания';


vivod (derect+'db_sot.db')


end;


procedure TForm1.N8Click(Sender: TObject);


begin


but:=MessageBox(0,'Закрыть программу?','Внимание!',MB_YESNO or MB_ICONINFORMATION);


if but=IDYES then


Close;


end;


procedure TForm1.N7Click(Sender: TObject);


begin


vivod (derect+'db_ disk.db');


end;


procedure TForm1.N14Click(Sender: TObject);


begin


sort_1(derect+'db_ disk.db');


end;


procedure TForm1.N15Click(Sender: TObject);


begin


sort_2(derect+'db_ disk.db');


end;


procedure TForm1.N16Click(Sender: TObject);


begin


sort_3(derect+'db_ disk.db');


end;


procedure TForm1.N17Click(Sender: TObject);


begin


sort_4(derect+'db_ disk.db');


end;


procedure TForm1.N18Click(Sender: TObject);


begin


sort_5(derect+'db_sot.db');


end;


{Добавление}


procedure TForm1.N4Click(Sender: TObject);


begin


Form3.ShowModal;


vivod(derect+'db_ disk.db');


end;


{Вывод во всплывающем меню}


procedure TForm1.N2Click(Sender: TObject);


begin


vivod(derect+'db_ disk.db');


end;


{Сортировка во всплывающем меню}


procedure TForm1.N10Click(Sender: TObject);


begin


sort_1(derect+'db_ disk.db');


end;


procedure TForm1.N11Click(Sender: TObject);


begin


sort_2(derect+'db_sot.db');


end;


procedure TForm1.N12Click(Sender: TObject);


begin


sort_3(derect+'db_ disk.db');


end;


procedure TForm1.reg1Click(Sender: TObject);


begin


sort_4(derect+'db_ disk.db');


end;


procedure TForm1.cincom1Click(Sender: TObject);


begin


sort_5(derect+'db_ disk.db');


end;


{Очистка всплывающее}


procedure TForm1.N9Click(Sender: TObject);


begin


clearlist;


end;


{Очистка в меню}


procedure TForm1.N23Click(Sender: TObject);


begin


clearlist


end;


{Редактирование в меню}


procedure TForm1.N6Click(Sender: TObject);


begin


if (edit9.text='') or (edit9.text='Введите новые данные...') then


MessageBox(0,'Введите новые данные.','Внимание!',MB_ok or MB_ICONINFORMATION)


else


editzap;


end;


//на кнопку


procedure TForm1.Button2Click(Sender: TObject);


begin


deletef(horizon);


end;


//удаление во всплывающем


procedure TForm1.N26Click(Sender: TObject);


begin


deletef(horizon);


end;


//Удаление из меню


procedure TForm1.N5Click(Sender: TObject);


begin


deletef(horizon);


end;


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


{Окно "О программе"}


procedure TForm1.N21Click(Sender: TObject);


begin


Form2.ShowModal;


end;


procedure TForm1.Edit9Click(Sender: TObject);


begin


edit9.clear;


end;


procedure TForm1.Button7Click(Sender: TObject);


begin


but:=MessageBox(0,'Закрыть программу?','Внимание!',MB_YESNO or MB_ICONINFORMATION);


if but=IDYES then


Close;


end;


procedure TForm1.Button5Click(Sender: TObject);


begin


clearlist;


end;


procedure TForm1.Button6Click(Sender: TObject);


begin


vivod(derect+'db_sot.db');


end;


procedure TForm1.Button1Click(Sender: TObject);


begin


Form3.ShowModal;


vivod(derect+'db_sot.db');


end;


procedure TForm1.Button3Click(Sender: TObject);


begin


Form4.ShowModal;


end;


procedure TForm1.N25Click(Sender: TObject);


begin


Form4.ShowModal;


end;


procedure TForm1.Button4Click(Sender: TObject);


begin


if (edit9.text='') or (edit9.text='Новые данные...') then


MessageBox(0,'Введите новые данные для изменения.','Внимание!',MB_ok or MB_ICONINFORMATION)


else


editzap;


end;


end.


Модуль Unit2.pas;


unit Unit2;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, ExtCtrls, jpeg;


type


TForm2 = class(TForm)


Label2: TLabel;


Label6: TLabel;


Bevel1: TBevel;


Bevel2: TBevel;


Bevel3: TBevel;


Label9: TLabel;


Label10: TLabel;


Label11: TLabel;


Label12: TLabel;


Button1: TButton;


Label1: TLabel;


Label3: TLabel;


Label4: TLabel;


Label5: TLabel;


Label7: TLabel;


procedure Button1Click(Sender: TObject);


private


{ Private declarations }


public


{ Public declarations }


end;


var


Form2: TForm2;


implementation


{$R *.dfm}


procedure TForm2.Button1Click(Sender: TObject);


begin


Close;


end;


end.


Модуль search.pas;


unit search;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, StdCtrls, jpeg, ExtCtrls, Grids;


const


derect='savedvd';


type


disk=record


name:string[50];


stoim:integer;


year:integer;


reg:string[30];


cincom:string[30];


end;


tdvd=array[1..300] of disk;


recordfile=file of disk;


TForm4 = class(TForm)


Label3: TLabel;


Label4: TLabel;


Edit7: TEdit;


ComboBox1: TComboBox;


Button1: TButton;


StringGrid1: TStringGrid;


Button2: TButton;


procedure Button1Click(Sender: TObject);


procedure search_1(dvdfile:string; var g:recordfile);


procedure search_2(dvdfile:string; var g:recordfile);


procedure search_3(dvdfile:string; var g:recordfile);


procedure search_4(dvdfile:string; var g:recordfile);


procedure search_5(dvdfile:string; var g:recordfile);


procedure sort_1(dvdfile:string);


procedure sort_2(dvdfile: string);


procedure vivod (dvdfile:string);


procedure Edit7Click(Sender: TObject);


procedure FormCreate(Sender: TObject);


procedure Button2Click(Sender: TObject);


private


public


f,g:recordfile;


n:integer;


dvdfile:string;


end;


var


Form4: TForm4;


implementation


{$R *.dfm}


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


{Вывод списка}


procedure tform4.vivod (dvdfile:string);


var s:disk;


count:integer;


f1:recordfile;


begin


assignfile(f,dvdfile);{$I-}


reset(f); {$I+}


N:=0;


count:=0;


If IOResult=0 then


begin


while not eof(f) do


begin


count:=count+1;


read(f,s);


StringGrid1.cols[0][N+1]:=inttostr(count);


StringGrid1.Cells[1,N+1]:=s.name;


StringGrid1.Cells[2,N+1]:=inttostr(s.stoim)+' руб.';


StringGrid1.Cells[3,N+1]:=intToStr(s.year)+' год';


StringGrid1.Cells[4,N+1]:=s.reg;


StringGrid1.Cells[5,N+1]:=s.cincom;


N:=N+1;


end;


seek(f,0);


closefile(f);


if count=0 then


else


stringgrid1.rowcount:=N+1;


end


else


begin


createdir('Database');


assignfile(f1,derect+'db_ disk.db');


rewrite(f1);


closefile(f1);


end;


end;


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


procedure tform4.sort_1(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].name<el[i].name then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


procedure tform4.sort_2(dvdfile: string);


var


f,q:file of disk;


c,i,n:integer;


buf:disk;


el:tdvd;


begin


assignfile(q,derect+'db.db');


rewrite(q);


assignfile(f,dvdfile);


reset(f);


c:=0;


while not eof(f)do


begin


c:=c+1;


read(f,el[c]);


end;


for i:=1 to c do


for n:=i+1 to c do


if el[n].stoim<el[i].stoim then


begin


buf:=el[n];


el[n]:=el[i];


el[i]:=buf;


end;


for i:=1 to c do


begin


write(q,el[i]);


end;


closefile(f);


closefile(q);


vivod(derect+'db.db');


erase(q);


end;


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


procedure tform4.search_1(dvdfile:string; var g:recordfile);


var g1:recordfile;


s:disk;


nameof:string;


begin


n:=0;


nameof:=Edit7.text;


assignfile(g1,derect+'result.db');


rewrite(g1);


assignfile(g,derect+'db_ disk.db'); {$I-}


reset(g); {$I+}


if IOResult = 0 then


begin


while not eof(g) do


begin


read(g,s);


if s.name=nameof then


write(g1,s)


end;


end


else


showMessage ('Ошибка');


seek(g1,0);


while not eof(g1) do


begin


read(g1,s);


inc(n);


end;


closefile(g);


closefile(g1);


Edit7.Clear;


if n=0 then


begin


MessageBox(0,'Нет такого фильма. Введите другие данные','Внимание!',MB_OK or MB_ICONINFORMATION);


end


else


vivod(derect+'result.db');


erase(g1)


end;


procedure tform4.search_2(dvdfile:string; var g:recordfile);


var g1:recordfile;


s:disk;


stoimof:integer;


begin


n:=0;


try


stoimof:=StrToInt(Edit7.text);


assignfile(g1,derect+'result.db');


rewrite(g1);


assignfile(g,derect+'db_ disk.db'); {$I-}


reset(g); {$I+}


if IOResult = 0 then


begin


while not eof(g) do


begin


read(g,s);


if s.stoim <= stoimof then


write(g1,s)


end;


end


else


showMessage ('Ошибка');


seek(g1,0);


while not eof(g1) do


begin


read(g1,s);


inc(n);


end;


closefile(g);


closefile(g1);


Edit7.Clear;


if n=0 then


begin


MessageBox(0,'Дисков со стоимостью, ниже заданной, нет.','Внимание!',MB_OK or MB_ICONINFORMATION);


end


else


sort_2(derect+'result.db');


erase(g1)


except


MessageBox(0,'Цена указывается цифрами.','Внимание!',MB_OK or MB_ICONWARNING);


Edit7.Clear;


end;


end;


procedure tform4.search_3(dvdfile:string; var g:recordfile);


var g1:recordfile;


s:disk;


yearof:real;


begin


n:=0;


try


yearof:=StrToFloat(Edit7.text);


assignfile(g1,derect+'result.db');


rewrite(g1);


assignfile(g,derect+'db_sot.db'); {$I-}


reset(g); {$I+}


if IOResult = 0 then


begin


while not eof(g) do


begin


read(g,s);


if s.year = yearof then


write(g1,s)


end;


end


else


showMessage ('Ошибка');


seek(g1,0);


while not eof(g1) do


begin


read(g1,s);


inc(n);


end;


closefile(g);


closefile(g1);


Edit7.Clear;


if n=0 then


begin


MessageBox(0,'Фильмов данного года выпуска нет.','Внимание!',MB_OK or MB_ICONINFORMATION);


end


else


sort_1(derect+'result.db');


erase(g1)


except


MessageBox(0,'Год выпуска указывается в цифрах.','Внимание!',MB_OK or MB_ICONWARNING);


Edit7.Clear;


end;


end;


procedure tform4.search_4(dvdfile:string; var g:recordfile);


var g1:recordfile;


s:disk;


regof:string;


begin


n:=0;


regof:=Edit7.text;


assignfile(g1,derect+'result.db');


rewrite(g1);


assignfile(g,derect+'db_ disk.db'); {$I-}


reset(g); {$I+}


if IOResult = 0 then


begin


while not eof(g) do


begin


read(g,s);


if s.reg=regof then


write(g1,s)


end;


end


else


showMessage ('Ошибка.');


seek(g1,0);


while not eof(g1) do


begin


read(g1,s);


inc(n);


end;


closefile(g);


closefile(g1);


Edit7.Clear;


if n=0 then


begin


MessageBox(0,'Данного режиссёра нет','Внимание!',MB_OK or MB_ICONINFORMATION);


end


else


sort_1(derect+'result.db');


erase(g1)


end;


procedure tform4.search_5(dvdfile:string; var g:recordfile);


var g1:recordfile;


s:disk;


cincomof:string;


begin


n:=0;


cincomof:=Edit7.text;


assignfile(g1,derect+'result.db');


rewrite(g1);


assignfile(g,derect+'db_ disk.db'); {$I-}


reset(g); {$I+}


if IOResult = 0 then


begin


while not eof(g) do


begin


read(g,s);


if s.cincom=cincomof then


write(g1,s)


end;


end


else


showMessage ('Ошибка');


seek(g1,0);


while not eof(g1) do


begin


read(g1,s);


inc(n);


end;


closefile(g);


closefile(g1);


Edit7.Clear;


if n=0 then


begin


MessageBox(0,'Данной кинокомпаниии нет.','Внимание!',MB_OK or MB_ICONINFORMATION);


end


else


sort_1(derect+'result.db');


erase(g1)


end;


procedure TForm4.Button1Click(Sender: TObject);


begin


if (edit7.Text='') or (edit7.Text='Введите данные...') then


MessageBox(0,'Введите данные для поиска.','Внимание!',MB_ok or MB_ICONINFORMATION)


else


case combobox1.ItemIndex of


0:search_1(dvdfile,f);


1:search_2(dvdfile,f);


2:search_3(dvdfile,f);


3:search_4(dvdfile,f);


4:search_5(dvdfile,f);


end;


end;


procedure TForm4.Edit7Click(Sender: TObject);


begin


edit7.Clear;


end;


procedure TForm4.FormCreate(Sender: TObject);


begin


StringGrid1.Rows[0][0]:='Номер';


StringGrid1.Rows[0][1]:='Название фильма';


StringGrid1.Rows[0][2]:='Цена DVD-диска';


StringGrid1.Rows[0][3]:='Год выпуска';


StringGrid1.Rows[0][4]:='Режиссёр';


StringGrid1.Rows[0][5]:='Кинокомпания';


end;


procedure TForm4.Button2Click(Sender: TObject);


begin


Form4.Close;


end;


end.


Модуль Input.pas;


unit Input;


interface


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, jpeg, ExtCtrls, StdCtrls;


const


derect='savedvd';


type disk=record


name:string[50];


stoim:integer;


year:integer;


reg:string[30];


cincom:string[30];


end;


recordfile=file of disk;


TForm3 = class(TForm)


Edit1: TEdit;


Edit2: TEdit;


Edit3: TEdit;


Edit4: TEdit;


Edit5: TEdit;


Label1: TLabel;


Label2: TLabel;


Label3: TLabel;


Label4: TLabel;


Label5: TLabel;


Button1: TButton;


Button2: TButton;


procedure input(var f:recordfile; var dvdfile:string);


procedure Button1Click(Sender: TObject);


procedure Button2Click(Sender: TObject);


private


{ Private declarations }


public


n,k:integer;


f,g:recordfile;


dvdfile:string;


end;


var


Form3: TForm3;


implementation


uses kursovik;


{$R *.dfm}


procedure tform3.input(var f:recordfile; var dvdfile:string);


var


s,q:disk;


begin


n:=1;


k:=0;


assignfile(g,derect+'buffer.db');


rewrite(g);


assignfile(f,derect+'db_ disk.db');{$I-}


reset(f); {$I+}


If IOResult=0 then


begin


while not eof(f) do


begin


inc(n);


read(f,s);


write(g,s);


end;


closefile(f);


end


else


begin


rewrite(f);


closefile(f);


end;


try


q.name:=Edit1.text;


q.stoim:=StrtoInt(Edit2.Text);


q.year:=Strtoint(Edit3.Text);


q.reg:=Edit4.Text;


q.cincom:=Edit5.Text;


seek(g,0);


while not eof(g) do


begin


read(g,s);


if s.name=q.name then


k:=1;


end;


if k=1 then


MessageBox(0,'Данный фильм существует.','',MB_ok or MB_ICONINFORMATION)


else


begin


write(g,q);


MessageBox(0,'Данные добавлены в файл.','',MB_ok or MB_ICONINFORMATION);


end;


Edit1.Clear;


Edit2.Clear;


Edit3.Clear;


Edit4.Clear;


Edit5.Clear;


except


MessageBox(0,'Цена и год выпуска указывается в цифрах!','',MB_OK or MB_ICONWARNING);


Edit2.Clear;


Edit3.Clear;


end;


closefile(g);


erase(f);


rename(g,derect+'db_ disk.db');


end;


procedure TForm3.Button1Click(Sender: TObject);


begin


close;


end;


procedure TForm3.Button2Click(Sender: TObject);


begin


if (edit1.Text='') or (edit2.text='') or (edit3.Text='')


or (edit4.Text='') or (edit5.Text='') then


MessageBox(0,'Одно или несколько полей пусты, проверьте правильность заполнения.','Внимание!',MB_ok or MB_ICONINFORMATION)


else


input(f,dvdfile);


end;


end.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: База данных DVD–фильмов

Слов:5086
Символов:64131
Размер:125.26 Кб.