
- •Глава 1. Руководство пользователю.
- •1.1. Операции с файлом.
- •1.2. Операции со списком.
- •1.3. Вывод по критериям.
- •Глава 2. Руководство программисту.
- •2.1. Описание структуры данных.
- •2.2. Описание интерфейса приложения.
- •2.3. Описание процедур.
- •Глава 3. Демонстрация работы приложения.
- •3.6. Демонстрация редактирования данных.
- •3.7. Демонстрация сохранения файла.
Глава 3. Демонстрация работы приложения.
3.1. Демонстрация ввода записей в базу данных.
Рис.3.1 «Добавление записей в базу данных»
Рис.3.2 «Добавление записей в базу данных »
В поля вводятся необходимые данные (см. рис.3.2), далее через кнопку «OK» данные добавляются в базу данных (см. рис.3.2).
3.2. Демонстрация удаления записи из базы данных.
Рис.3.3 «Удаление записи из списка»
Рис.3.4. «Удаление текущей записи»
Выберите запись, которую хотите удалить, затем нажмите кнопку «ButtonDel» или нажав клавишу «Delete» . (Рис 3.4. «Удаление текущей записи»).
3.3. Демонстрация перехода к первому элементу списка.
Рис.3.5. «Переход к первому элементу списка»
3.4. Демонстрация перехода к последнему элементу списка.
Рис.3.6. «Переход к последнему элементу списка»
3.5. Демонстрация перехода по СПИСКУ ДАННЫХ.
Рис.3.7. «Переход по списку данных»
Рис.3.8. «Переход по списку данных»
Находясь на любом элементе списка, можно перемещаться по данным с помощью стрелочек на клавиатуре, чтобы посмотреть нужные данные достаточно нажать на клавишу “пробел”.
3.6. Демонстрация редактирования данных.
Рис.3.9. «Редактирование данных»
Выбираем данные, которые нужно редактировать, нажимаем на кнопку «ButtonEdit», после этого можно будет исправить эти данные. Редактированные данные сохраняются после нажатия на клавишу «OK».
3.7. Демонстрация сохранения файла.
Рис.3.10. «Сохранение»
Рис.3.11.
«Сохранение»
Сохранить базу данных можно двумя способами: 1)Нажать на кнопку «File» и выбрать функцию «SaveAs…» 2)Нажать на клавишу быстрого пользования «ButtonSaveAs» После чего пишем название нашей базы данных и нажимаем кнопку «Сохранить».
3.8. Демонстрация открытия файла.
Рис.3.12. «Открытие»
Рис.3.13. «Открытие»
Выберите файл, который необходимо открыть, и нажмите кнопку «Открыть».
Рис.3.14. «Открытие»
3.9. Демонстрация отбора по критерию «Фамилия»
Рис.3.15. «Отбор по критерию «Фамилия»
Кликнув в “окошко” «Фамилия» можно осуществить поиск владельца собаки по его фамилии, даже набрав первую букву фамилии поиск станет значительно проще, потому что программа выдаст фамилии начинающиеся именно с этой буквы.
3.10. Демонстрация отбора по критерию «кличка»
Рис.3.16. «Отбор по критерию «Кличка»
Кликнув в “окошко” «Кличка» можно осуществить поиск собаки по кличке, даже набрав первую букву клички поиск станет значительно проще, потому что программа выдаст все клички собак начинающихся именно с этой буквы.
3.11. Демонстрация отбора по критерию «порода»
Рис.3.17. «Отбор по критерию «Порода»
Кликнув в “окошко” «Порода» можно осуществить поиск собаки по породе, даже набрав первую букву породы поиск станет значительно проще, потому что программа выдаст все породы собак начинающихся именно с этой буквы.
Заключение
Главной целью, преследуемой при выполнении данной работы, было научиться составлять программу, которая обеспечивает бесперебойную работу приложения по базе данных кинологов. Одним из главных критериев было хранение информации в структуре, представляющей собой двунаправленный список. Ввод информации осуществляется машинным способом, после того как база данных полностью введена, её можно загрузить в типизированный файл – либо новый, либо ранее имеющийся – и далее, если требуются какие-то либо изменения или считывания с данной базы, этот файл можно снова загружать в приложение и работать с уже сохраненной базой данной. Для облегчения работы с базой данных также были созданы отдельные поиски по критериям: определенные запросы, которые трудно искать вручную. Для того чтобы посмотреть всех собак определённой породы, имеется поиск по породе. То же самое осуществляется при помощи поисков по фамилии и по кличке.
В целом, данное приложение способно значительно облегчить работу с данными. Все поставленные цели достигнуты, задачи выполнены: приложение работает четко и без сбоев, полностью готово к использованию.
Список используемой литературы.
Архангельский А.Я. Программирование в Delphi: учебник по классическим версиям Delphi. – M. БИНОМ, 2008.
Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. – 2-е изд. – М.: Бином, 1998.
Епанешнипков А.М., Епанешников В.А. DELPHI. Базы данных. – СПб.: Диалог – МИФИ, 2000.
Карпов Б. Delphi: специальный справочник. – СПБ.: Питер, 2002.
Фаронов В.В. Delphi. Программирование на языке высокого уровня: учебник для вузов. – СПб.: Питер, 2003.
Федотова С.В. Создание Windows-приложений в среде Delphi. – М.: СОЛОН – Пресс, 2004.
Хомоненко А., Гофман В., Мещеряков Е. DELPHI 7 . – СПб.: БХВ-Петербург, 2010.
Фленов М. Библия Delphi. – СПб.: БХВ-Петербург, 2002.
Вирт Н. Алгоритмы и структуры данных / Пер. с англ. — М.: Мир, 1989.
Практическое руководство по программированию / Пер. с англ. Б. Мик, П. Хит, Н. Рашби и др.; под ред. Б. Мика, П. Хит, Н. Рашби. — М.: Радио и связь, 1986.
Приложение
Исходный код программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, CheckLst, Menus, ToolWin;
type
TForm1 = class(TForm)
ButtonAdd: TButton;
ButtonSaveAs: TButton;
SaveDialog1: TSaveDialog;
ButtonLoad: TButton;
OpenDialog1: TOpenDialog;
ButtonEdit: TButton;
StatusBar1: TStatusBar;
ButtonDel: TButton;
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
SaveAs1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Edit1: TMenuItem;
Add1: TMenuItem;
Edit2: TMenuItem;
Delete1: TMenuItem;
ListView1: TListView;
ToolBar1: TToolBar;
Panel1: TPanel;
ESurn: TLabeledEdit;
ENick: TLabeledEdit;
EBreed: TLabeledEdit;
procedure ButtonAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ButtonSaveAsClick(Sender: TObject);
procedure ButtonLoadClick(Sender: TObject);
procedure ButtonEditClick(Sender: TObject);
procedure ButtonDelClick(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure ListView1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ESurnChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
PKino = ^TKino;
TKino = record
prev: PKino;
next: PKino;
surname: string[100]; //фамилия владельца
name: string[100]; //имя владельца
nick: string[100]; //кличка собаки
breed: string[100]; //порода собаки
birth: TDateTime; //дата рождения собаки
end;
var
Form1: TForm1;
head: TKino;
implementation
uses UKino;
{$R *.dfm}
function FindLast: PKino;
begin
Result := @head;
while Result.next <> nil do Result := Result.next;
end;
procedure ClearList;
var kino: PKino;
begin
kino := FindLast;
while kino <> nil do begin
Dispose(kino.next);
kino := kino.prev;
end;
end;
function CheckStr(SubStr,S: String): boolean;
begin
if SubStr = '' then Result := true
else Result := Pos(AnsiUpperCase(SubStr), AnsiUpperCase(S)) > 0;
end;
function CheckFilter(kino: PKino): boolean;
begin
Result := CheckStr(Form1.ESurn.Text, kino.surname)
and CheckStr(Form1.ENick.Text, kino.nick)
and CheckStr(Form1.EBreed.Text, kino.breed);
end;
procedure PrintList;
var
kino: PKino;
Item: TListItem;
begin
Form1.ListView1.Clear;
kino := head.next;
while kino <> nil do begin
if CheckFilter(kino) then begin
Item := Form1.ListView1.Items.Add;
Item.Data := kino;
Item.Caption := kino.surname;
Item.SubItems.Add(kino.name);
Item.SubItems.Add(kino.nick);
Item.SubItems.Add(kino.breed);
Item.SubItems.Add(DateToStr(kino.birth));
end;
kino := kino.next;
end;
end;
procedure TForm1.ButtonAddClick(Sender: TObject);
var kino,last: PKino;
begin
FKino.DefaultVal;
if FKino.ShowModal <> mrOk then Exit;
New(kino);
last := FindLast;
last.next := kino;
kino.prev := last;
kino.next := nil;
FKino.FormToRec(kino);
PrintList;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.ButtonSaveAsClick(Sender: TObject);
var
kino: PKino;
f: file of TKino;
begin
if not SaveDialog1.Execute then Exit;
AssignFile(f,SaveDialog1.FileName);
Rewrite(f);
kino := head.next;
while kino <> nil do begin
Write(f,kino^);
kino := kino.next;
end;
CloseFile(f);
end;
procedure TForm1.ButtonLoadClick(Sender: TObject);
var
kino: PKino;
f: file of TKino;
begin
if not OpenDialog1.Execute then Exit;
AssignFile(f,OpenDialog1.FileName);
Reset(f);
ClearList;
kino := @head;
while not Eof(f) do begin
New(kino.next);
Read(f,kino.next^);
kino.next.prev := kino;
kino.next.next := nil;
kino := kino.next;
end;
CloseFile(f);
PrintList;
end;
procedure TForm1.ButtonEditClick(Sender: TObject);
var kino: PKino;
begin
if ListView1.ItemIndex < 0 then Exit;
kino := ListView1.Selected.Data;
FKino.RecToForm(kino);
if FKino.ShowModal <> mrOk then Exit;
FKino.FormToRec(kino);
PrintList;
end;
procedure TForm1.ButtonDelClick(Sender: TObject);
var kino: PKino;
begin
if ListView1.ItemIndex < 0 then Exit;
kino := ListView1.Selected.Data;
kino.prev.next := kino.next;
if kino.next <> nil then kino.next.prev := kino.prev;
Dispose(kino);
PrintList;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
ButtonEdit.Click;
end;
procedure TForm1.ListView1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_INSERT then ButtonAdd.Click;
if Key = VK_SPACE then ButtonEdit.Click;
if Key = VK_F2 then ButtonEdit.Click;
if Key = VK_DELETE then ButtonDel.Click;
end;
procedure TForm1.ESurnChange(Sender: TObject);
begin
PrintList;
end;
end.