Реферат по предмету "Информатика, программирование"


База данных 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

procedureTForm1.FormCreate(Sender: TObject);
Данная процедуравызывается при создании окна и запускает процедуру nanol. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.ComboBox2Change(Sender: TObject);
В данной процедуреосуществляется выбор и запуск необходимой процедуры сортировки, путём нажатияодного из пунктов выпадающего списка ComboBox. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N8Click(Sender: TObject);
Данная процедуразавершает работу программы из меню в случае положительного ответа напоявляющееся сообщение. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N7Click(Sender: TObject);
Данная процедура выводитинформацию из файла при помощи при помощи процедуры vivod из меню. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N14Click(Sender: TObject);
procedureTForm1.N15Click(Sender: TObject);
procedureTForm1.N16Click(Sender: TObject);
procedureTForm1.N17Click(Sender: TObject);
procedureTForm1.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, этот параметр определяет, какой объектпрограммы вызывает данную процедуру.
procedureTForm1.N5Click(Sender: TObject);
Данная процедура отвечаетза запуск процедуры удаления deletefи вывод обновлённой информации с помощью процедуры vivod из меню. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N4Click(Sender: TObject);
Данная процедура отвечаетза добавление информации в файл с помощью процедуры input из меню. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N2Click(Sender: TObject);
Данная процедуразапускает процедуру вывода vivod,путём нажатия на необходимый пункт во всплывающем меню над областью таблицы.Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какойобъект программы вызывает данную процедуру.
procedureTForm1.N10Click(Sender: TObject);
procedureTForm1.N11Click(Sender: TObject);
procedureTForm1.N12Click(Sender: TObject);
procedureTForm1.freg1Click(Sender: TObject);
procedureTForm1.fcincom1Click(Sender: TObject);
Процедуры, приведенныевыше, сходны по своему принципу. Каждая из них вызывает конкретную процедурусортировки (sort_1, sort_2, sort_3, sort_4, sort_5), путём нажатия на пункт, всплывающего меню над областью таблицы.Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какойобъект программы вызывает данную процедуру.
procedureTForm1.N9Click(Sender: TObject);
Данная процедуразапускает процедуру очистки списка clearlist, путём нажатия на необходимый пункт во всплывающем меню.Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какойобъект программы вызывает данную процедуру.
procedureTForm1.N23Click(Sender: TObject);
Данная процедуразапускает процедуру очистки списка clearlist, путём нажатия на необходимый пункт в меню. Процедурасодержит входную переменную Sender- тип tobject, этот параметр определяет, какойобъект программы вызывает данную процедуру.
procedureTForm1.N6Click(Sender: TObject);
Данная процедуразапускает процедуру редактирования redactor из меню. Процедура содержит входную переменную Sender — тип tobject, этот параметр определяет, какой объект программывызывает данную процедуру.
procedureTForm1.N21Click(Sender: TObject);
Данная процедураотображает окно с информацией о программе.
procedure tform3.input(var f:recordfile; vardvdfile: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; varg:recordfile);
procedure tform1.search_2(dvdfile :string; varg:recordfile);
procedure tform1.search_3(dvdfile:string; varg:recordfile);
procedure tform1.search_4(dvdfile:string; varg:recordfile);
procedure tform1.search_5(dvdfile:string; varg: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
 
Листинг программы и еёмодулей
programKursovik;
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);
procedure 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
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
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
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
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
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
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_OKor 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_OKor 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_okor 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_okor 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; varg:recordfile);
procedure search_2(dvdfile:string; varg:recordfile);
procedure search_3(dvdfile:string; varg:recordfile);
procedure search_4(dvdfile:string; varg:recordfile);
procedure search_5(dvdfile:string; varg: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
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
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; varg: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_OKor MB_ICONINFORMATION);
end
else
vivod(derect+'result.db');
erase(g1)
end;
procedure tform4.search_2(dvdfile:string; varg: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
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_OKor 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; varg: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; varg: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; varg: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; vardvdfile: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; vardvdfile: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_okor MB_ICONINFORMATION)
else
begin
write(g,q);
MessageBox(0,'Данныедобавленывфайл.','',MB_okor 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.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.