База данных «Сериалы»
Интерфейс пользователя программы должен создаваться стандартными средствами визуальных объектных библиотек. Структура интерфейса включает: главное меню, панель инструментов, средства ввода и отображения информации, управляющие элементы и (возможно) строку статуса. Количество форм: три и более. Справочная система может опираться на пояснительную записку. Программа должна быть защищена… Читать ещё >
База данных «Сериалы» (реферат, курсовая, диплом, контрольная)
Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Уральский федеральный университет имени первого Президента России Б. Н. Ельцина».
Курсовая работа
«База данных «Сериалы»
Руководитель: Неудачин И.Г.
Студент: Горбич Д.Л.
Группа: ФТ-210 802
Екатеринбург — 2012
- 1. Аннотация
- 2. Техническое задание
- 3. Спецификация
- 4. Структура проекта
- 5. Структура интерфейса пользователя
- 6. Описание работы программы
- 7. Программа и методика испытаний
- 8. Руководство пользователя
- Заключение
- Библиографический список
- Приложения
- 1. Аннотация
Наименование Базы данных: TVShows.
Разработка ведется по заказу кафедры ВТ УГТУ — УПИ им. С. М. Кирова.
Программа направлена на создание Фильмотеки. Она позволяет в режиме меню или в программном режиме вводить и запрашивать данные о Фильмах, сортировать по любому из шести полей базы данных. Не выходя из программы, можно создать новую таблицу, стереть её.
Технические характеристики:
В программе используются объекты библиотеки визуальных компонентов: MainMenu, DBGrid, DBEdit, Memo, PopupMenu…
Программа не предусматривает взаимодействие с другими программными продуктами.
Хранение информации о Фильмах происходит в виде таблицы формата Paradox 7 (Top10, I: ПНЯВУКурсовая3).
Программа проектировалась в среде визуального программирования Delphi 7.
Операционная система Windows 98/NT/XP/7.
Структура базы данных.
База данных состоит из одной таблицы.
Таблица состоит из записей, содержащих информацию о сериалах, описанную в спецификации (см. раздел 3).
Требования к вычислительной системе. Процессор не ниже
Intel Pentium IV Оперативная память 512 Мб Объем файла TVShows. exe = 1,26 MB Пароль доступа к редактированию таблицы 321.
2. Техническое задание
Прикладная система управления базой данных (курсовая работа для специальности 230 101).
Задание:
Создать специализированную систему управления базой данных (Спец СУБД) для обработки информации из выбранной прикладной области знаний.
Требования к СУБД: СУБД создается для IBM-совместимых компьютеров для работы в операционной системы Windows 98/NT/XP. Она должна включать в себя следующие функции:
а) Создание, удаление, загрузка, запись в базу данных (БД) информации из выбранной прикладной области знаний.
1) Добавление, удаление, редактирование записей в БД.
2) Сортировка БД по различным полям.
3) Доступ к нужной информации.
4) Работа через меню.
5) Быстрые и короткие клавиши.
6) Поиск нужных данных (удовлетворение запросов пользователя);
7) Специальный для этой БД пункт меню. Например: диалог выбора, рекомендации, специфические вычисления, статистическая обработка, и т. д.
8) Выход из СУБД.
Требования к интерфейсу пользователя:
Интерфейс пользователя программы должен создаваться стандартными средствами визуальных объектных библиотек. Структура интерфейса включает: главное меню, панель инструментов, средства ввода и отображения информации, управляющие элементы и (возможно) строку статуса. Количество форм: три и более. Справочная система может опираться на пояснительную записку. Программа должна быть защищена от несанкционированного доступа невидимым паролем.
СУБД предоставляет дополнительную информацию о ней, а также о содержащихся в ней данных в справочных файлах, окне «О программе», всплывающих оперативных подсказках, звуковых сигналах (или файлах) и т. д.
Разработка БД должна осуществляться в соответствии со сроками, указанными в «Задании по курсовому проектированию».
3. Спецификация
Структура таблицы «films.db», рабочий каталог
№ | Имя поля | Тип поля | Ширина поля | ||
Название | Name | string[25] | |||
Оригинальное название | NameOrig | string[25] | |||
Страна | Country | string[20] | |||
Автор идеи | CreatedBy | string[20] | |||
Телеканал | Chanel | string[20] | |||
Количество сезонов | SezNum | integer | |||
Количество серий | SerNum | integer | |||
Продолжительность серии | SerTime | Integer | |||
Статус | Status | string[10] | |||
Пример
Название | Оригинальное название | Страна | Автор идеи | Телеканал | Количество сезонов | Количество серий | Продолжительность серии | Статус | |
Доктор Хаус | House M. D | США | Дэвид Шор | FOX | Завершён | ||||
Теория большого взрыва | Big Bang Theory | США | Чак Лорри | CBS | Снимается | ||||
Обмани меня | Lie to Me | США | Сэмюэл Баум | FOX | Завершён | ||||
Шерлок | Sherlock | Великобритания | Стивен Моффат | BBC One | Снимается | ||||
Сверхъестественное | Supernatural | США | Эрик Крипке | The CW | Снимается | ||||
Декстер | Dexter | США | Джеймс Манос | Showtime | Снимается | ||||
Как я встретил вашу маму | How I Met Your Mother | США | Картер Бейз | CBS | |||||
Отбросы | Misfits | Великобритания | Говард Оверман | E4 | |||||
Остаться в живых | Lost | США | Дж. Дж. Абрамс | ABC | Завершён | ||||
Блудливая калифорния | Californication | США | Том Капинос | Showtime | Снимается | ||||
4. Структура проекта
Список элементов проекта и их функций: файлы, формы, модули.
Текст проекта находится в приложении A. Файл называется TVShows. dpr
Файл Top10. db содержит таблицу БД с описанной в спецификации структурой.
Файл Unit1.Pas содержит модуль 1 проекта. Он вызывается из I: ПНЯВУКурсовая3Unit1.pas.Модуль содержит коды обработчиков событий для главной формы.
Файл Unit2.Pas содержит модуль 1 проекта. Он вызывается из I: ПНЯВУКурсовая3Unit2.pas. Модуль содержит коды обработчиков событий для второй формы.
Файл Unit3.Pas содержит модуль 1 проекта. Он вызывается из I: ПНЯВУКурсовая3Unit3.pas.Модуль содержит коды обработчиков событий для третьей формы.
Файл Unit4.Pas содержит модуль 1 проекта. Он вызывается из I: ПНЯВУКурсовая3Unit4.pas.Модуль содержит коды обработчиков событий для четвертой формы.
Тексты модулей приведены в приложении B.
Спецификации форм
Основная форма (Form1). Объекты, расположенные на форме: их свойства, функции, обработчики событий. Рекомендую для оформления вызвать контекстное меню формы и выбрать команду View as Text. Но не следует приводить полный текст формы. Коды обработки событий, назначенные программистом соответствующим объектам, приведены в тексте модуля (Приложение B.1.).
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
Help2: TMenuItem;
About1: TMenuItem;
CreateTab1: TMenuItem;
EditTab1: TMenuItem;
QueryTab1: TMenuItem;
Timer1: TTimer;
Panel1: TPanel;
OpenDialog1: TOpenDialog;
N1: TMenuItem;
DataSource1: TDataSource;
strngfldMyTabstrngfldMyTabName: TStringField;
Panel2: TPanel;
Edit2: TEdit;
Label1: TLabel;
Timer2: TTimer;
BitBtn1: TBitBtn;
Image1: TImage;
Image2: TImage;
atncfldMyTabID: TAutoIncField;
TableMy: TTable;
SaveDialog1: TSaveDialog;
BitBtnOpen: TBitBtn;
BitBtnCreate: TBitBtn;
TableMyPicture: TGraphicField;
TableMyMemo: TMemoField;
intgrfldTableMySezNum: TIntegerField;
intgrfldTableMySerNum: TIntegerField;
intgrfldTableMySerTime: TIntegerField;
strngfldTableMyStatus: TStringField;
procedure Exit1Click (Sender: TObject);
procedure About1Click (Sender: TObject);
procedure NewTable;
procedure CreateTab1Click (Sender: TObject);
procedure EditTab1Click (Sender: TObject);
procedure QueryTab1Click (Sender: TObject);
procedure Timer1Timer (Sender: TObject);
procedure N1Click (Sender: TObject);
procedure Timer2Timer (Sender: TObject);
procedure BitBtn1Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure BitBtnOpenClick (Sender: TObject);
procedure Edit2Enter (Sender: TObject);
procedure BitBtnCreateClick (Sender: TObject);
procedure Button1Click (Sender: TObject);
Вторая форма проекта (Form2). Объекты, расположенные на форме: их свойства, функции, обработчики событий. Коды обработки событий, назначенные программистом соответствующим объектам, приведены в тексте модуля (Приложение B.2.).
DBGrid1: TDBGrid;
BitBtnMenu: TBitBtn;
dbnvgr1: TDBNavigator;
BitBtnExit: TBitBtn;
Label1: TLabel;
BitBtnUnsort: TBitBtn;
procedure BitBtnMenuClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure DBGrid1TitleClick (Column: TColumn);
procedure BitBtnUnsortClick (Sender: TObject);
procedure FillingColums (GridName:TDBGrid);
Третья форма проекта (Form3). Объекты, расположенные на форме: их свойства, функции, обработчики событий. Коды обработки событий, назначенные программистом соответствующим объектам, приведены в тексте модуля (Приложение B.3.).
BitBtn3: TBitBtn;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Label2: TLabel;
Query1: TQuery;
Edit1: TEdit;
Label1: TLabel;
BitBtn1: TBitBtn;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
shp1: TShape;
shp2: TShape;
procedure BitBtn3Click (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure DBGrid1TitleClick (Column: TColumn);
procedure FormCreate (Sender: TObject);
procedure ExecuteSQL;
procedure Edit1KeyUp (Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure CheckBox1Click (Sender: TObject);
procedure CheckBox2Click (Sender: TObject);
procedure CheckBox3Click (Sender: TObject);
procedure CheckBox4Click (Sender: TObject);
procedure CheckBox5Click (Sender: TObject);
Четвертая форма (Form5). Объекты, расположенные на форме: свойства, функции, обработчики событий. Коды обработки событий, назначенные программистом соответствующим объектам, приведены в тексте модуля (Приложение B.4.).
DBImagePicture: TDBImage;
OpenPictureDialog1: TOpenPictureDialog;
DBNavigator1: TDBNavigator;
DBTextName: TDBText;
Label1: TLabel;
DBRichEditMemo: TDBRichEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
FontDialog1: TFontDialog;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEditSezNum: TDBEdit;
DBEditSerNum: TDBEdit;
DBEditSerTime: TDBEdit;
DBEditStatus: TDBEdit;
Label6: TLabel;
BitBtn3: TBitBtn;
Label7: TLabel;
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click (Sender: TObject);
procedure BitBtn2Click (Sender: TObject);
procedure BitBtn3Click (Sender: TObject);
5. Структура интерфейса пользователя
Реальные Разделы и подразделы главного меню приложения:
Файл Правка Просмотр Справка
Создать Подробно
Выход О программе
Быстрый доступ по комбинациям клавиш Alt + подчеркнутая буква.
Меню находится на главной форме приложения Form1. Пункт меню «Правка» вызывает форму Form2.
Описание панели инструментов.
В данном приложении использовались компоненты таких форм как:
— Standard
— Additional
— Win32
— System
— Data Controls
— Data Access
— Dialogs
— BDE
Структура интерфейса формы Form1
Структура интерфейса формы Form2
Структура интерфейса формы Form3
Структура интерфейса формы Form4
6. Описание работы программы
интерфейс управление база пользователь
До тех пор, пока пользователь не введёт верный пароль (321), программа работает в режиме ограниченной функциональности.
Диалог через меню программы.
Диалог через меню программы заключается в выборе нужной функции, указанной в меню. Меню имеет иерархию, поэтому интересующая Вас функция не обязательно находится на первом ее уровне.
Основное меню содержит такие функции:
1) Создание таблицы;
2) Правка;
3) Просмотр;
4) Справка;
5) Выход из приложения;
Установка на интересующую Вас функцию производится указателем мыши. Активизация выбранной функции производится щелчком левой кнопки мыши.
Если Вы выбрали функцию: «Создать», то Вы сможете создать новую таблицу.
Если Вы выбрали функцию: «Правка», то Вы сможете редактировать основные поля текущей таблицы.
Если Вы выбрали функцию: «Подробно», то Вы сможете получить справку об интересующем Вас сериале:
1) Количество сезонов
2) Количество серий
3) Средняя продолжительность серии
4) Статус (завершён/снимается)
5) Постер
6) Краткое описание сериала Если Вы выбрали функцию: «Правка», то вы сможете выполнить следующие функции:
1) просмотреть записи;
2) редактировать записи.
Если Вы выбрали пункт 1, то вы можете просмотреть имеющиеся записи. Здесь управление происходит клавишами курсора.
Если Вы выбрали пункт 2, то вы можете редактировать имеющиеся записи или добавлять новые. Редактирование происходит наведением клавишами курсора на нужное место и нажатием клавиши «ENTER». Затем стандартным путем производится редактирование содержимого выбранной ячейки.
Если Вы хотите убрать уже имеющуюся запись вам необходимо поставить указатель на эту запись и нажать на соответствующую кнопку навигатора.
Если Вы выбрали функцию: «Просмотр», то вы сможете вывести любые поля удовлетворяющие любому сочетанию :
1) Оригинальное название
2) Страна
3) Автор идеи
4) Телеканал Если Вы выбрали функцию: «Поиск», то Вы можете найти интересующий Вас сериал.
Сортировка реализована по клику на заголовок столбца.
Функция «выход из базы данных» отдает управление ОС.
7. Программа и методика испытаний
Для тестирования программы был применён поочерёдный вызов всех процедур, а также вызов Sql запросов из разных разделов меню. Была проверена возможность выбора функций с помощью символов в разном регистре. Длительным испытаниям подверглась возможность хранения и изменения списка существующих файлов баз данных, был устранён ряд ошибок в этой области.
8. Руководство пользователя
Пояснительная записка может рассматриваться как вариант руководства пользователя программы.
Заключение
Требования, указанные в техническом задании реализованы с перекрытием, добавлена возможность удалять, изменять и сортировать записи во время их просмотра, эта возможность обеспечивает простоту в использовании данной СУБД. Главной особенностью программы является то, что она рассчитана на работу с несколькими, независимыми друг от друга, базами данных. Каждая база данных хранится в отдельной таблице, имя которого задаётся пользователем. Кроме того, даже неподготовленный пользователь сможет работать в этой программе.
Библиографический список
1. Таблицы Delphi для управления базами данных: Методические указания к курсовой и лабораторным работам по 2 части дисциплины «Программирование на языке высокого уровня» для студента специальности 230 100 — Информатика и вычислительная техника / И. Г. Неудачин. Екатеринбург: УрФУ, 2010. 75с.
2. Delphi 7 / Под общей редакцией А. Д. Хомоненко. — СПб.: БХВ-Петербург, 2008. — 1216 с.: ил.
3. Delphi. Программирование на языке высокого уровня: Учебник для вузов / В. В. Фаронов. — СПб.: Лидер, 2010. — 640 с.: ил.
4.
Введение
в реляционные базы данных / В. В. Кириллов, Г. Ю. Громов. — СПб.: БХВ-Петербург, 2009. — 464 с.: ил.
Приложения
Приложение A
program Films;
program TVShows;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form5};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm (TForm1, Form1);
Application.CreateForm (TForm2, Form2);
Application.CreateForm (TForm3, Form3);
Application.CreateForm (TForm5, Form5);
Application.Run;
end.
Приложение B
(Исходные тексты модулей)
B.1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, DB, DBTables, StdCtrls, Buttons, ComCtrls, ExtCtrls,
Grids, DateUtils, jpeg;
type
TForm1 = class (TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
Help2: TMenuItem;
About1: TMenuItem;
CreateTab1: TMenuItem;
EditTab1: TMenuItem;
QueryTab1: TMenuItem;
Timer1: TTimer;
Panel1: TPanel;
OpenDialog1: TOpenDialog;
N1: TMenuItem;
DataSource1: TDataSource;
strngfldMyTabstrngfldMyTabName: TStringField;
Panel2: TPanel;
Edit2: TEdit;
Label1: TLabel;
Timer2: TTimer;
BitBtn1: TBitBtn;
Image1: TImage;
Image2: TImage;
atncfldMyTabID: TAutoIncField;
TableMy: TTable;
SaveDialog1: TSaveDialog;
BitBtnOpen: TBitBtn;
BitBtnCreate: TBitBtn;
TableMyPicture: TGraphicField;
TableMyMemo: TMemoField;
intgrfldTableMySezNum: TIntegerField;
intgrfldTableMySerNum: TIntegerField;
intgrfldTableMySerTime: TIntegerField;
strngfldTableMyStatus: TStringField;
procedure Exit1Click (Sender: TObject);
procedure About1Click (Sender: TObject);
procedure NewTable;
procedure CreateTab1Click (Sender: TObject);
procedure EditTab1Click (Sender: TObject);
procedure QueryTab1Click (Sender: TObject);
procedure Timer1Timer (Sender: TObject);
procedure N1Click (Sender: TObject);
procedure Timer2Timer (Sender: TObject);
procedure BitBtn1Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure BitBtnOpenClick (Sender: TObject);
procedure Edit2Enter (Sender: TObject);
procedure BitBtnCreateClick (Sender: TObject);
procedure Button1Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Pass: Boolean;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1. Exit1Click (Sender: TObject);
begin
Close;
end;
procedure TForm1. About1Click (Sender: TObject);
begin
ShowMessage ('Курсовой проект по теме «Сериалы» создан 23.10.12. '+#13+
'Автор: Горбич Дмитрий');
end;
procedure TForm1. NewTable; //Создать новую таблицу
begin
SaveDialog1.FileName := '*.db'; //Маска поиска по умолчанию
if SaveDialog1. Execute then
begin
with TableMy do
begin
Active:=False;
//Определение основных свойств таблицы
DatabaseName:=ExtractFilePath (SaveDialog1.FileName);
TableName:=ExtractFileName (SaveDialog1.FileName);
TableType:=ttParadox;
//Определение полей
FieldDefs.Clear;
FieldDefs.Add ('ID', ftAutoInc, 0, True);
FieldDefs.Add ('Name', ftString, 25, False);
FieldDefs.Add ('NameOrig', ftString, 25, False);
FieldDefs.Add ('Country', ftString, 20, False);
FieldDefs.Add ('CreatedBy', ftString, 20, False);
FieldDefs.Add ('Chanel', ftString, 20, False);
FieldDefs.Add ('SezNum', ftInteger, 0, False);
FieldDefs.Add ('SerNum', ftInteger, 0, False);
FieldDefs.Add ('SerTime', ftInteger, 0, False);
FieldDefs.Add ('Status', ftString, 10, False);
FieldDefs.Add ('Memo', ftMemo, 20, False);
FieldDefs.Add ('Picture', ftGraphic, 20, False);
//Определение индексов
IndexDefs.Clear;
IndexDefs.Add ('','ID',[ixPrimary, ixUnique]);
IndexDefs.Add ('indName','Name',[ixCaseInsensitive]);
IndexDefs.Add ('indNameOrig','NameOrig',[ixCaseInsensitive]);
IndexDefs.Add ('indCountry','Country',[ixCaseInsensitive]);
IndexDefs.Add ('indCreatedBy','CreatedBy',[ixCaseInsensitive]);
IndexDefs.Add ('indChanel','Chanel',[ixCaseInsensitive]);
//Определение обратных индексов
IndexDefs.Add ('rindName','Name',[ixCaseInsensitive, ixDescending]);
IndexDefs.Add ('rindNameOrig','NameOrig',[ixCaseInsensitive, ixDescending]);
IndexDefs.Add ('rindCountry','Country',[ixCaseInsensitive, ixDescending]);
IndexDefs.Add ('rindCreatedBy','CreatedBy',[ixCaseInsensitive, ixDescending]);
IndexDefs.Add ('rindChanel','Chanel',[ixCaseInsensitive, ixDescending]);
CreateTable;
Active:=True;
Form2.DBGrid1.Columns.Items[0]. Visible:=False;
Form2.DBGrid1.Columns.Items[6].Visible:=False;
Form2.DBGrid1.Columns.Items[7].Visible:=False;
Form2.DBGrid1.Columns.Items[8].Visible:=False;
Form2.DBGrid1.Columns.Items[9].Visible:=False;
Form2.DBGrid1.Columns.Items[10].Visible:=False;
Form2.DBGrid1.Columns.Items[11].Visible:=False;
Form1.Caption:='Сериалы '+SaveDialog1.FileName;
end;
end
end;
procedure TForm1. CreateTab1Click (Sender: TObject);
begin
NewTable;
end;
procedure TForm1. BitBtn1Click (Sender: TObject);
begin
if Edit2. Text = '321' then
begin
Pass:=True;
end
end;
procedure TForm1. EditTab1Click (Sender: TObject);
begin
Form1.Hide;
Form2.Show;
Form2.DBGrid1.Enabled:=True;
end;
procedure TForm1. QueryTab1Click (Sender: TObject);
begin
Form1.Hide;
Form3.Show;
end;
procedure TForm1. Timer1Timer (Sender: TObject);
var
y, u: Word;
x, v: string;
begin
y := MonthOfTheYear (Date);
Case y of
1: x:='января';
2: x:='февраля';
3: x:='марта';
4: x:='апреля';
5: x:='мая';
6: x:='июня';
7: x:='июля';
8: x:='августа';
9: x:='сентября';
10: x:='октября';
11: x:='ноября';
12: x:='декабря';
end;
u:= DayOfWeek (Date);
Case u of
1: v:='воскресенье';
2: v:='понедельник';
3: v:='вторник';
4: v:='среда';
5: v:='четверг';
6: v:='пятница';
7: v:='суббота';
end;
Panel1.Caption := TimeToStr (Time);
Panel2.Caption := IntToStr (DayOfTheMonth (Date))+
' '+x+' '+IntToStr (YearOf (Date));
Panel2.Hint := 'Сегодня '+v;
end;
procedure TForm1. N1Click (Sender: TObject);
begin
Form1.Hide;
Form5.Show;
end;
procedure TForm1. Timer2Timer (Sender: TObject);
begin
if Pass then
begin
Form1.Caption:='Сериалы';
CreateTab1.Enabled:=True;
EditTab1.Enabled:=True;
QueryTab1.Enabled:=True;
N1.Enabled:=True;
Label1.Visible:=False;
Edit2.Visible:=False;
BitBtn1.Visible:=False;
Image2.Visible:=False;
Image1.Visible:=True;
BitBtnOpen.Visible:=True;
BitBtnCreate.Visible:=True;
Timer2.Enabled:=False;
end;
end;
procedure TForm1. FormCreate (Sender: TObject);
begin
CreateTab1.Enabled:=False;
EditTab1.Enabled:=False;
QueryTab1.Enabled:=False;
N1.Enabled:=False;
end;
procedure TForm1. BitBtnOpenClick (Sender: TObject);
begin
OpenDialog1.FileName := '*.db'; {Маска поиска по умолчанию}
if OpenDialog1. Execute then
begin
Form1.TableMy.Active:=False;
TableMy.TableName := ExtractFileName (OpenDialog1.FileName);
Form1.Caption:='Таблица свойств сериалов '+OpenDialog1.FileName;
Form1.TableMy.Active:=True;
Form2.DBGrid1.Columns.Items[0]. Visible:=False;
Form2.DBGrid1.Columns.Items[6].Visible:=False;
Form2.DBGrid1.Columns.Items[7].Visible:=False;
Form2.DBGrid1.Columns.Items[8].Visible:=False;
Form2.DBGrid1.Columns.Items[9].Visible:=False;
Form2.DBGrid1.Columns.Items[10].Visible:=False;
Form2.DBGrid1.Columns.Items[11].Visible:=False;
end
end;
procedure TForm1. Edit2Enter (Sender: TObject);
begin
if Edit2. Text = '321' then
begin
Pass:=True;
end
end;
procedure TForm1. BitBtnCreateClick (Sender: TObject);
begin
NewTable;
end;
procedure TForm1. Button1Click (Sender: TObject);
begin
Form1.Hide;
Form5.Show;
end;
end.
B.2.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, DBTables, ExtCtrls,
DBCtrls;
type
TForm2 = class (TForm)
DBGrid1: TDBGrid;
BitBtnMenu: TBitBtn;
dbnvgr1: TDBNavigator;
BitBtnExit: TBitBtn;
Label1: TLabel;
BitBtnUnsort: TBitBtn;
procedure BitBtnMenuClick (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure DBGrid1TitleClick (Column: TColumn);
procedure BitBtnUnsortClick (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure FillingColums (GridName:TDBGrid);
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2. BitBtnMenuClick (Sender: TObject);
begin
Form2.Hide;
Form2.Close;
end;
procedure TForm2. FormClose (Sender: TObject; var Action: TCloseAction);
begin
Form2.Hide;
Form1.Show;
end;
procedure TForm2. FillingColums (GridName:TDBGrid); //заполнение названий колонок
var
i: Integer;
FieldName, Caption: string;
begin
for i:=0 to GridName.Columns.Count-1 do
begin
FieldName:=GridName.Columns[i]. FieldName;
if FieldName='Name' then
Caption:='Название'
else if FieldName='NameOrig' then
Caption:='Оригинальное название'
else if FieldName='Country' then
Caption:='Страна'
else if FieldName='CreatedBy' then
Caption:='Автор идеи'
else if FieldName='Chanel' then
Caption:='Телеканал';
GridName.Columns[i]. Title. Caption:=Caption;
end;
end;
procedure TForm2. DBGrid1TitleClick (Column: TColumn);
var FieldName, IndexName: string;
begin
FillingColums (Form2.DBGrid1);
//Сортировка
FieldName:=Column.FieldName;
IndexName:=Form1.TableMy.IndexName;
if IndexName='rind'+FieldName then
begin
Form1.TableMy.IndexName:='ind'+FieldName;
Column.Title.Caption:=Column.Title.Caption+' /';
Exit;
end;
if IndexName='ind'+FieldName then
begin
Form1.TableMy.IndexName:='rind'+FieldName;
Column.Title.Caption:=Column.Title.Caption+' /';
Exit;
end;
Form1.TableMy.IndexName:='ind'+FieldName;
Column.Title.Caption:=Column.Title.Caption+' /';
end;
procedure TForm2. BitBtnUnsortClick (Sender: TObject);
begin
Form1.TableMy.IndexName:='';
FillingColums (Form2.DBGrid1);
end;
end.
B.3.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBTables, StdCtrls, Buttons, ExtCtrls;
type
TForm3 = class (TForm)
BitBtn3: TBitBtn;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Label2: TLabel;
Query1: TQuery;
Edit1: TEdit;
Label1: TLabel;
BitBtn1: TBitBtn;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
shp1: TShape;
shp2: TShape;
procedure BitBtn3Click (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure DBGrid1TitleClick (Column: TColumn);
procedure FormCreate (Sender: TObject);
procedure ExecuteSQL;
procedure Edit1KeyUp (Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn1Click (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure CheckBox1Click (Sender: TObject);
procedure CheckBox2Click (Sender: TObject);
procedure CheckBox3Click (Sender: TObject);
procedure CheckBox4Click (Sender: TObject);
procedure CheckBox5Click (Sender: TObject);
private
{ Private declarations }
FieldName: string;
SortedAsc: Integer;
CheckString: string;
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm3. BitBtn3Click (Sender: TObject);
begin
Form3.Hide;
Form3.Close;
Form1.Show;
end;
procedure TForm3. FormClose (Sender: TObject; var Action: TCloseAction);
begin
Form3.Hide;
Form1.Show;
end;
procedure TForm3. DBGrid1TitleClick (Column: TColumn);
begin
if FieldName=Column.FieldName then
begin
if (SortedAsc=0) or (SortedAsc=2) then
SortedAsc:=1
else
SortedAsc:=2;
end else SortedAsc:=1;
FieldName:=Column.FieldName;
ExecuteSQL;
end;
//——————————————————————————————;
//Процедура выполняет SQL запрос к базе
//——————————————————————————————;
procedure TForm3. ExecuteSQL;
var
i: integer;
begin
Query1.Close;
Query1.SQL.Clear;
// Выбор полей
CheckString:='Name';
if CheckBox5. Checked=true then
begin
CheckString:=(CheckString
+', NameOrig, Country, CreatedBy, Chanel ');
end else begin
if CheckBox1. Checked=true then CheckString:=(CheckString+', NameOrig');
if CheckBox2. Checked=true then CheckString:=(CheckString+', Country');
if CheckBox3. Checked=true then CheckString:=(CheckString+', CreatedBy');
if CheckBox4. Checked=true then CheckString:=(CheckString+', Chanel');
end;
Query1.SQL.Add (' SELECT '+CheckString+' from '
+'" '+Form1.TableMy.TableName+'" ');
// Поиск
if not (Edit1.Text='') then
begin
Query1.SQL.Add (' WHERE Name like «%'+Edit1.Text+'%» ');
Query1.SQL.Add (' OR NameOrig like «%'+Edit1.Text+'%» ');
Query1.SQL.Add (' OR Country like «%'+Edit1.Text+'%» ');
Query1.SQL.Add (' OR CreatedBy like «%'+Edit1.Text+'%» ');
Query1.SQL.Add (' OR Chanel like «%'+Edit1.Text+'%» ');
end;
// Сортировка
if not (FieldName='') and (Pos (FieldName, CheckString)>0) then
begin
Query1.SQL.Add (' ORDER BY '+FieldName);
if (SortedAsc=1) then Query1.SQL.Add (' ASC ')
else if (SortedAsc=2) then Query1.SQL.Add (' DESC ');
end;
Query1.Prepare;
Query1.Open;
Form2.FillingColums (Form3.DBGrid1);
for i:=0 to DBGrid1.Columns.Count-1 do
begin
if FieldName=DBGrid1.Columns[i]. FieldName then
begin
if SortedAsc=1 then
DBGrid1.Columns[i]. Title. Caption:=DBGrid1.Columns[i].Title.Caption+' /';
if SortedAsc=2 then
DBGrid1.Columns[i]. Title. Caption:=DBGrid1.Columns[i].Title.Caption+' /';
end;
end;
end;
procedure TForm3. FormCreate (Sender: TObject);
begin
SortedAsc:=0;
FieldName:='';
// ExecuteSQL;
end;
procedure TForm3. Edit1KeyUp (Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ExecuteSQL;
end;
procedure TForm3. BitBtn1Click (Sender: TObject);
begin
FieldName:='';
SortedAsc:=0;
ExecuteSQL;
end;
procedure TForm3. FormShow (Sender: TObject);
begin
Form1.TableMy.Active:=False;
Form1.TableMy.Active:=True;
ExecuteSQL;
end;
procedure TForm3. Button1Click (Sender: TObject);
begin
CheckBox1.Checked:=true;
CheckBox2.Checked:=true;
CheckBox3.Checked:=true;
CheckBox4.Checked:=true;
ExecuteSQL;
end;
procedure TForm3. CheckBox1Click (Sender: TObject);
begin
ExecuteSQL;
end;
procedure TForm3. CheckBox2Click (Sender: TObject);
begin
ExecuteSQL;
end;
procedure TForm3. CheckBox3Click (Sender: TObject);
begin
ExecuteSQL;
end;
procedure TForm3. CheckBox4Click (Sender: TObject);
begin
ExecuteSQL;
end;
procedure TForm3. CheckBox5Click (Sender: TObject);
begin
CheckBox1.Enabled:=not CheckBox5. Checked;
CheckBox2.Enabled:=not CheckBox5. Checked;
CheckBox3.Enabled:=not CheckBox5. Checked;
CheckBox4.Enabled:=not CheckBox5. Checked;
ExecuteSQL;
end;
end.
В.4.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, MPlayer, StdCtrls, DBCtrls, ExtDlgs, ComCtrls, Buttons,
Mask;
type
TForm5 = class (TForm)
DBImagePicture: TDBImage;
OpenPictureDialog1: TOpenPictureDialog;
DBNavigator1: TDBNavigator;
DBTextName: TDBText;
Label1: TLabel;
DBRichEditMemo: TDBRichEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
FontDialog1: TFontDialog;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
DBEditSezNum: TDBEdit;
DBEditSerNum: TDBEdit;
DBEditSerTime: TDBEdit;
DBEditStatus: TDBEdit;
Label6: TLabel;
BitBtn3: TBitBtn;
Label7: TLabel;
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click (Sender: TObject);
procedure BitBtn2Click (Sender: TObject);
procedure BitBtn3Click (Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm5. FormClose (Sender: TObject; var Action: TCloseAction);
begin
Form5.Hide;
Form1.Show;
end;
procedure TForm5. BitBtn1Click (Sender: TObject);
begin
if OpenPictureDialog1. Execute then
begin
Form1.TableMy.Edit;
DBImagePicture.Picture.LoadFromFile (OpenPictureDialog1.FileName);
Form1.TableMy.Post;
end;
end;
procedure TForm5. BitBtn2Click (Sender: TObject);
begin
if FontDialog1. Execute then
DBRichEditMemo.SelAttributes.Assign (FontDialog1.Font);
DBRichEditMemo.SetFocus;
end;
procedure TForm5. BitBtn3Click (Sender: TObject);
begin
Form5.Hide;
Form1.Show;
end;
end.