Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Искаков Данил Курсовая работа №1 Группа 417.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
456.42 Кб
Скачать

Глава 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.