Введення
Дорогий Олександр Григорович якщо ви читаєте це введення, значить я нарешті - то закінчив свій курсовий проект. Він називається «База даних DVD - фільмів». Швидше за все, він ні кому, ні буде, потрібен і грошей я на ньому не зароблю. Це дуже сумно. Хоча якщо поглянути на це з іншого боку, то майже у кожної людини в цьому світі є своя колекція DVD - фільмів і думка, що ця програма може стати їм у нагоді, мене дуже радує. Як кажуть, немає лиха, без добра. Програма дуже проста у використанні і їсть дуже мало ресурсів. Працює майже на будь-якій операційній системі і на будь-якому комп'ютері. Тепер поговоримо про саму програму. Вона багатофункціональна. Занесену інформацію про DVD - фільмах можна змінювати, видаляти і редагувати. Інформація про диски записується в базу даних по п'яти полях: назва диску, ціна, рік випуску, прізвище режисера, кінокомпанія, яка створювала фільм. Також можна сортувати диски з цих же полях. Загалом, вона настільки проста, що навіть дитина може в ній розібратися. А найголовніше, що програма написана російською мовою та ще російським студентом третього курсу, АФРГСУ який навчається на факультеті Ітіро. Як це розшифровується, я до сих пір не можу запам'ятати!
Загальна частина
1.1 Короткий опис роботи
При запуску програми відображається головне вікно, в якому є чотири кнопки і область обробки інформації, керовані кнопками.
Кнопка виведення інформації.
Вся інформація, що знаходиться у файлі і виводиться в цю таблицю.
Кнопка пошуку інформації.
При натисканні кнопки пошук відображається вікно пошуку. Пошук відбувається за п'ятьма параметрами. Вибираємо один з параметрів, вводимо дані і починається пошук, знайдені дані виводяться в цьому ж вікні в таблиці.
Кнопка видалення.
Видалення відбувається наступним образам: вибираємо курсором, який DVD - фільм ви хочете видалити і отже натискаємо кнопку видалення.
Область редагування.
Для редагування одного з полів, необхідно ввести в перше поле його назву зі списку, вибрати з випадаючого списку параметр для зміни і в друге поле ввести нову інформацію. Оновлена інформація з'являється миттєво в таблиці.
Кнопка додавання інформації.
Відображається вікно додавання інформації. Інформація також додається по п'яти полях. Додана інформація миттєво виводиться в головному вікні.
1.2 Вибір мови та середовища програмування
Дана програма розроблялася в середовищі програмування Delphi. Вона містить багатий набір різних типів даних і компонентів, що полегшують створення програмного продукту під MS Windows.
Стислість мови, легкість програмування на ньому, мобільність написаних програм, можливість ефективної реалізації та придатність з точки зору формальних методів налагодження програм забезпечили мови Object Pascal і конкретно середовищі Delphi успіх у тих справах, для яких він призначався.
Основна частина
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. Глобальні змінні модуля Unit 2.р as.
Ідентифікатор | Тип | Призначення |
Form 2 | Tform 2 | Ідентифікатор форми |
Таблиця 3. Глобальні змінні модуля unit search. Pas
Ідентифікатор | Тип | Призначення |
Form4 | Tform4 | Ідентифікатор форми |
dvdfile | string | Назва файлу |
n | integer | Змінна - лічильник |
f | recordfile | Файл з записами |
g | recordfile | Файл з записами |
Таблиця 4. Глобальні змінні модуля unit Input. Pas
Ідентифікатор | Тип | Призначення |
Form 3 | Tform 3 | Ідентифікатор форми |
dvdfile | string | Назва файлу |
n | integer | Змінна - лічильник |
k | integer | Змінна - лічильник |
f | recordfile | Файл з записами |
g | recordfile | Файл з записами |
Опис процедур
Модуль kursovik.pas
procedure tform1.clearlist;
Дана процедура очищає таблицю виведення інформації.
procedure tform1.vivod (dvdfile: string);
Дана процедура здійснює виведення даних записаних у файл. Параметр dvdfile - директорія файлу.
Алгоритм:
Прив'язуємо до файлової змінної "f" змінну dvdfile і відкриваємо для читання.
Якщо файл виявлений, то в циклі, до тих пір, поки не досягнуть кінець файлу, запускаємо лічильник і виводимо в елементи таблиці дані з файлу. Якщо лічильник дорівнює нулю, отже, файл порожній, запускається процедура clearlist.
У разі не виявлення файлу, він створюється в необхідній директорії.
Таблиця 5. Локальні змінні.
Ідентифікатор | Тип | Призначення |
s | disk | Запис |
f 1 | recordfile | Файл з записами |
count | integer | Номер за списком |
procedure tform1.deletef (horizon: integer);
Дана процедура здійснює видалення запису з фала.
Алгоритм.
У параметр d передається введена модель телефону.
Відкриваємо на читання основний файл "db _ disk. Db" на читання і створюємо тимчасовий "new. Db". Перезаписує його.
До тих пір, поки не досягнуть кінець файлу, читаємо запису і якщо поле запису позначає ім'я не одно змінної "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 Tform 1. editzap;
Дана процедура здійснює редагування даних записаних у файл.
Алгоритм.
Відкриваємо на читання основний файл з інформацією і в змінну name заносимо назва dvd, один з параметрів якого нам необхідно замінити.
Поки немає кінця файлу, запускаємо лічильник n. Порівнюємо введене назва, з наявними в dvd. При збігу присвоюємо змінної m значення лічильника. Змінна m буде відповідати за позицію записи в фалі. Далі змінної new присвоюємо дані, які треба записати в замість вихідних.
Переходимо за допомогою функції seek на позицію m -1, то є над необхідної записом. Читаємо з файлу запис.
Потім у case comboBox3.ItemIndex вибираємо поле, яке необхідно замінити і присвоюємо йому значення змінної new. Якщо параметр не символьний переводимо змінну new в цифровий формат за допомогою функції.
Перезаписує запис у файлі. Закриваємо його і виводимо на екран за допомогою процедури vivod.
Таблиця 7. Локальні змінні.
Ідентифікатор | Тип | Призначення |
f 1 | 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 - деректор файлу.
Алгоритм:
Прив'язуємо до файлової змінної "g" тимчасовий файл derect + 'buffer. Db' і перезаписує його. Прив'язуємо до файлової змінної "f" змінну dvdfile і відкриваємо для читання.
Якщо у файлі знаходиться що-небудь, копіюємо вміст "f" у "g" і закриваємо "f", якщо ні, перезаписуваними і закриваємо "f".
Надаємо змінним записів введені поля.
Перевіряємо наявність введеного dvd у файлі, шляхом порівняння назви введеної диска з уже знаходяться у файлі в циклі досягнення кінця файлу. Якщо поля рівні, присвоюємо змінної k значення 1, якщо ні, то залишаємо за замовчуванням рівної нулю.
Далі перевіряємо значення зміною k. Якщо k = 1, то виводиться повідомлення про те що даний диск існує і запис не здійснюється, якщо інакше, то відбувається запис в файл.
В кінці закриваємо "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 Комплект постачання програми
dvdproekt. exe - виконуваний файл програми
Savedvd - папка з файлом db _ disk. Db, що містить базу даних. Також папка використовується для зберігання тимчасових файлів, створюваних під час роботи програми.
3.2 Опис результатів перевірки програми
Технічні засоби, що використовуються для написання роботи, наведені в таблиці 10. Для перевірки працездатності програми я використовував комп'ютери з різною конфігурацією. Їх конфігурації наведені в таблиці 10
Таблиця 10. Опис результатів перевірки програми.
Компоненти ЕОМ, програмне забезпечення |
Конфігурація ЕОМ | № | Мікропроцесор, тактова частота | Об'єм оперативної пам'яті | Тип відеоадаптера, обсяг відеопам'яті | Обсяг дискового простору | Операційна система |
1 | Intel (R) Celeron, 1. 7 GHz | 128 M b | Intel (R) 828456 Graphics controller, 32 Mb | 1 0 G b | MS Windows 2000 | |
2 | AMD Turion 64x2 Mobile Technology TL-60 2.0 GHz | 3 G b | NVIDIA GeForce 8600 GS, 512 Mb | 320 G b | MS Windows Vista | |
3 | AMD Sempron (tm) 2200 +, 1.5 GHz | 768 M b | ATI Radeon 9600 series, 128 Mb | 8 0 G b | MS Windows XP Professional |
Конфігурація ЕОМ | 4 | Pentium (R) D, 2x2.8 Mhz | 1. 5 G b | NVIDIA GeForce 8500 GT, 256 Mb | 8 0 G b | MS Windows XP Professional |
5 | Pentium 4, 3.01 Ghz | 512 M b | ATI Radeon X1600, 256 Mb | 2 0 G b | MS Windows XP Professional |
3.3 Мінімальні системні вимоги
1.Процессор: 170 MHz;
2. Оперативна пам'ять: 5000k b;
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);
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 <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.