Информационная справочная система "Библиотека"

Сортировка информации о книгах по названию, имени автору, изданию. Разработка автоматизированной информационной справочной системы "Библиотека" на языке программирования Borland Delphi 7. Электронные формы для ввода и редактирования данных в таблицах.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.05.2015
Размер файла 569,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ОБСЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

2. ОСНОВНАЯ ЧАСТЬ

2.1 Исходные данные

2.2 Расчетные данные

2.3 Диаграмма объектов

2.4 Алгоритм расчета

2.5 Исходный код

2.6 Инструкция пользователю

2.7 Контрольный пример расчета

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ВВЕДЕНИЕ

С развитием информационных технологий всё более широкое распространение получают электронные книги -- электронные версии печатных книг, которые можно читать на компьютерах или специальных устройствах. Но сами печатные книги, находясь на полках магазинов и библиотек, требуют точной сортировки, а библиотекарь - ориентации в этих тоннах бумаги.

Для точной сортировки и запоминания, книги подвергаются нумерованию, и каждую пронумерованную книгу в библиотеке записывают опять же на бумагу, что вызывает не много меньшего объема «работы с бумагами».

Информационно-справочная система «Библиотека» создана для правильной сортировки и нумерации книг, их записи в базы, содержащиеся на электронных хранителях информации. Вследствие чего - электронные базы книг являются более мобильными и надёжными, носителями, легко могут быть скопированы и подвергнуты редактированию.

Большая надежность в работе достигается путём её распространения по различным накопителям и в сетевые облака, при чуть более специализированном библиотекаре и наличии минимального железа.

Электронные базы книг имеют очень сжатый объем и могут быть подвергнуты редактированию даже без наличия какого-либо стороннего софта, причина сему - простейшее расширение баз «.txt». Но в информационно-справочной системе «Библиотека», редактировать эти базы книг гораздо удобнее из-за наличия в ней таблицы и простого интерфейса, позволяющего добавлять, удалять и изменять записи в несколько кликов.

1. ОБСЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

Программа "Библиотека" предназначена для вывода информации о книгах: название, имя автора, издание и год издания. Всё эти данные выводятся в таблицу на экране. Текущая информация может быть отсортирована или отфильтрована по определённому критерию. Пользователь также имеет возможность изменить или удалить любую запись о книге.

2. ОСНОВНАЯ ЧАСТЬ

2.1 Исходные данные

Исходные данные можно выводить из текстового файла или ввести вручную.

2.2 Расчетные данные

Для хранения данных используется тип - массив записей и переменная данного типа.

type

tYear=1900..2009;

tBook=record // тип "Запись о книге"

Name: string [30]; // поле "название"

Author: string [27]; // поле "автор"

Issue: string [12]; // поле "издательство"

Year: tYear; // поле "год издания"

Code: Integer; // поле-"Код книги"

Remote: Boolean; // поле-признак удаления

Visible: Boolean; // поле-признак видимости

end;

var

Book: array [0..300] of tBook; // массив записей об одной книге

Num: Integer; // количество записей в массиве записей

Поля Name, Author, Isue, Year служат для хранения данных о книге. Поле Name представляет собой строку с названием книги, Author - строку с именем автора, Issue - строку с названием издательства и, наконец, Year - число с годом издания книги. Остальные поля Code, Remote, Visible предназначены для осуществления операций с данными. Поле Code служит для поиска товаров в базе данных, оно является уникальным кодом для каждой книги. Поле Remote предназначено для удаления выбранной записи. И, наконец, поле Visible определяет "видимость" текущей записи о книге. Если запись "не видима", то книга не выводится в таблицу данных.

delphi библиотека автоматизированный сортировка

2.3 Диаграмма объектов

Размещено на http://www.allbest.ru/

Рисунок 1 Структура программы-приложения

Главная форма

Главная форма fmMain отображает всю информацию о книгах. С помощью неё пользователь может выбрать конкретное действие.

Рисунок 2 Вид главной формы

Таблица 1 Основные свойства

Свойство

Значение

Name

fmMain

Caption

Библиотека

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Компоненты главной формы.

В центре формы расположена таблица sgBooks. Она отображает всю информацию о книгах.

Таблица 2 Cвойства компонента sgBooks

Свойство

Значение

ColCount

6

Name

sgBooks

FixedCols

1

FixedRows

1

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 12; цвет - черный

Hint

Информация о книгах

RowCount

2

ShowHint

True

ScrollBars

ssVertical

Вначале таблица содержит две строки, однако по ходу работы их количество меняется в зависимости от количества книг.

Сверху, снизу, а также справа от таблицы находятся кнопки bbtLoad, bbtAdd, bbtChange, bbtSave, bbtDel, bbtChoice, bbtSorting, bbtSaveReport, bbtClose (tBitBtn) - "Загрузить", "Добавить", "Изменить", "Сохранить", "Удалить", "Выбрать", "Сортировать", "Сохранить отчёт", "Закрыть". Они позволяют пользователю реализовывать различные действия над информацией о книгах. Основные свойства кнопок TBitBtn:

Таблица 3 Cвойства компонента кнопки загрузки

Свойство

Значение

Name

bbtLoad

Caption

Загрузить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Загрузка данных

ShowHint

True

Таблица 4 Cвойства компонента кнопки добавления

Свойство

Значение

Name

bbtAdd

Caption

Добавить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Добавление новой записи

ShowHint

True

Таблица 5 Cвойства компонента кнопки изменения

Name

bbtChange

Caption

Изменить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Измнение существующей записи

ShowHint

True

Таблица 6 Cвойства компонента кнопки сохранения

Name

bbtSave

Caption

Сохранить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Сохранение данных

ShowHint

True

Таблица 7 Cвойства компонента кнопки удаления

Name

bbtDel

Caption

Удалить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный;размер - 14; цвет - черный

Hint

Удаление выбранной записи

ShowHint

True

Таблица 8 Cвойства компонента кнопки сохранения отчёта

Name

bbtSaveReport

Caption

Сохранить отчет

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Сохранение отчета

ShowHint

True

Таблица 9 Cвойства компонента кнопки сортировки

Name

bbSorting

Caption

Загрузить

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Сортировать по одному из выбранных способов

ShowHint

True

Таблица 10 Cвойства компонента кнопки выборки

Name

bbtChoice

Caption

Выбрать

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Выбрать книгу по определенному критерию

ShowHint

True

Таблица 11 Cвойства компонента кнопки закрытия программы

Name

bbtClose

Caption

Закрыть

Enabled

True

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 14; цвет - черный

Hint

Завершение работы программы

ShowHint

True

Также на форме присутствует компонент MainMenu, местоположение которого не имеет значения. Конструктор данного меню следующий

Таблица 12 Схема компонента MainMenu

Файл

Редактирование

Сервис

Справка

Загрузить

F3

Добавить

Ctrl+Ins

Выбрать

F5

О программе

F1

Сохранить

F2

Изменить

Shift+Ins

Сортировать

F6

Сохранить отчет

Ctrl+F2

Удалить

Ctrl+Del

Выход

F10

Для загрузки новых данных и сохранения существующих данных используются компоненты

OpenDialog и SaveDialog соответственно.

Таблица 13 Описание свойств окон сохранения и загрузки

FileName

Выбранное пользователем имя файла вместе с полным путем поиска

Filter

Набор масок, в соответствии с которыми отбираются имена файлов для отображения в диалоговом окне. Каждая маска состоит из двух частей: названия и шаблона, - разделенных символом. Одному названию могут соответствовать несколько шаблонов. Маски отделяются друг от друга символом.

FilterIndex

Номер текущей маски. Нумерация начинается с 1.

InitialDir

Текущий каталог, содержимое которого отображается при первом открытии диалогового окна.

Title

Заголовок диалогового окна

Свойства класса SaveDialog аналогичны вышеприведённым свойствам.

На форме fmMain расположены две метки lbNum и lbSorting. lbNum отражает количество книг в таблице, эта метка всегда видима. lbSorting по умолчанию является невидимой. Она появляется только после реализации действий по выбору книг на основе определённого критерия (изданных после введенного года) и отображает данный признак.

Внизу формы присутствует компонент StatusBar, отображающий подсказки, а также текущие дату и время. Подсказки выводятся в 0-ю панель компонента, дата в 1-ю, а время - во 2-ю.

Для того, чтобы определить дату и время, на форме расположен компонент Timer.

Таблица 14 Cвойства компонента таймер

Enabled

True

Interval

1000

Name

Timer

Последний компонент, расположенный на главной форме XPManifes (XPMan). Он служит для отображения кнопок на форме в стиле Windows XP.

Форма редактирования, её свойства и компоненты

Форма редактирования fmEdit предназначена для редактирования таблицы sgBooks. Она позволяет добавить новую запись в таблицу или изменить существующую.

Рисунок 3 Вид формы редактирования

Таблица 15 Cвойства формы редактирования

Name

fmEdit

Caption

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 10; цвет - черный

Свойство Caption будет принимать значения в зависимости от назначения формы редактирования - Добавления или Изменения.

На форме расположены 4 метки lbNameOfBook, lbAuthor, lbIssue, lbYear, имеющие заголовки "Название", "Автор", "Издание" и "Год издания" соответственно. Для ввода информации о книге используются однострочные редакторы edNameOfBook, edAuthor, edIsuue и edYear. В процессе работы программы пользователь может вводить в них название книги, имя автора, издание и год издания соответственно.

Таблица 16 Cвойства однострочных редакторов

Hint

Введите название книги (имя автора, издание, год издания)

ReadOnly

False

ShowHint

True

Text

Visible

True

Для добавления или изменения записи используются кнопки типа TBitBtn: bbtEditOK и bbtEditCancel.

Таблица 17 Cвойства кнопки OK

Caption

Добавить

Kind

bkOK

Name

bbtEditOK

Таблица 18 Cвойства кнопки отмены

Caption

Отмена

Kind

bkCancel

Name

bbtEditCancel

Свойство Hint определяется в соответствии с назначением формы редактирования.

Форма пароля, её свойства и компоненты

Если происходит загрузка данных из файла SpecialBooks.txt, то осуществляется работа с конфиденциальными данными, поэтому при загрузке происходит запрос пароля. При этом появляется форма пароля fmKey.

Таблица 19 Cвойства формы пароля

Caption

Пароль

Name

fmKey

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 12; цвет - черный

Рисунок 4 Вид формы пароля

На форме расположены две метки lbKey1 и lbKey2. Они определяют название заголовка формы. Посередине формы расположен однострочный редактор edKey, куда непосредственно вводится пароль.

Для подтверждения пароля необходимо нажать кнопку bbtKeyOK (TBitBtn).

Таблица 20 Cвойства кнопки OK

Caption

OK

Enabled

True

Kind

bkOK

ModalResult

mrOK

Name

bbtEditOK

Visible

True

Форма выбора, её свойства и компоненты

Рисунок 5 Вид формы выбора

Форма выбора fmChoice позволяет выводить не все данные, а только информацию удовлетворяющую введённому критерию. В нашем случае этот критерий состоит в введении года, после которого должны быть изданы книги.

Таблица 21 Cвойства формы выбора

Caption

Выборка данных

Name

fmChoice

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 8; цвет - черный

Форма содержит метку lbChoice, которая определяет заголовок формы. Посередине формы располагается однострочный редактор tdChoice, куда вводится интересующий нас год. Чтобы осуществить выборку, необходимо нажать на кнопку bbtChoiceOK (TBitBtn), для отмены - кнопку bbtChoiceCancel (TBitBtn). Их свойства аналогичны свойствам кнопок bbtEditOK и bbtEditCance формы редактирования, за исключением свойства Hint (для первой кнопки - "Подтвердить", для второй - "Отказаться"). Форма сортировки, её свойства и компоненты. Форма fmSorting позволяет отсортировать информацию о книгах по одному из выбранных критериев. Она имеет следующий внешний вид

Таблица 22 Cвойства формы сортировки

Caption

Сортировка данных

Name

fmSorting

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 8; цвет - черный

На форме расположена метка lbSorting, имеющая постоянное свойство Caption "Выберите метод сортировки". Для выбора способа сортировки на форме присутствуют три радио кнопки rbNameOfBook, rbAuthor и rbYear.

Таблица 23 Cвойства флажка выбора по имени автора

Checked

True

Caption

по имени автора

Hint

Сортировать по имени автора

ShowHint

True

Name

rbNameOfBook

Visible

True

Таблица 24 Cвойства флажка выбора по названию книги

Checked

True

Caption

по названию книги

Hint

Сортировать по названию книги

ShowHint

True

Name

rbNameOfBook

Visible

True

Таблица 25 Cвойства флажка выбора по году издания

Checked

True

Caption

по году издания

Hint

Сортировать по году издания

ShowHint

True

Name

rbNameOfBook

Visible

True

По умолчанию выбрана сортировка по названию книги.

Также на форме присутствует компонент Bevel для отделения группы радио кнопок от остальных компонентов.

Чтобы осуществить сортировку необходимо нажать кнопку bbtSortingOK, для отмены действий - кнопку bbtSortingCancel. Свойства данных кнопок совпадают со свойствами кнопок bbtEditOK и bbtEditCancel соответственно, за исключением свойства Hint (для кнопки bbtSortingOK - "Подтвердить сортировку", для кнопки bbtSortingCancel - "Отказаться от сортировки").

Форма отчёта, её свойства и компоненты

Форма fmReporting позволяет сохранить отчёт в виде таблицы в текстовый файл. Она имеет следующий внешний вид:

Рисунок 6 Вид формы отчета

Таблица 26 Cвойства формы отчета

Caption

Отчет

Name

fmReporting

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 10; цвет - черный

На форме расположена метка lbReporting, имеющая свойство Caption - "Отчёт".

В центре формы расположен многострочный редактор mmReporting, куда в виде таблицы поступают данные о книгах.

Таблица 27 Cвойства многосточного редактора

Name

mmReporting

Font

Шрифт - Courier New; начертание - обычный; размер - 10; цвет - черный

ScrollBars

ssVertical

Чтобы сохранить отчёт в текстовый файл, необходимо нажать кнопку bbtReportingOK (TBitBtn), для отмены действия - кнопку bbtReportingCancel. Их свойства аналогичны свойствам кнопок bbtEditOK и bbtEditCancel формы редактирования, за исключением свойства Hint. Для кнопки bbtReportingOK - "Сохранить", для кнопки bbtReportingCancel - "Отказаться".

Форма Справки, её свойства и компоненты

Для просмотра информации о программе Внешний вид формы таков: используется форма AboutBoxHelp, реализованная на основе шаблона AboutBox.

Таблица 28 Cвойства формы справки

Caption

О программе

Name

AboutBoxHelp

Font

Шрифт - MS Sans Serif; начертание - обычный; размер - 8; цвет - черный

На форме располагаются следующие стандартные компоненты - OKButton, ProductName, Version, Copyright, Panel, Comments. Их соответствующие свойства Caption таковы "OK", "Программа "Библиотека"", "Версия 1.1", "Создатель, студент гр ", "Программа предназначена для хранения данных о книгах".

Описание внутренних функций приложения

Чтобы отобразить информацию о книгах в таблице sgBooks, необходима процедура TfmMain. Output.

Она позволяет вывести из массива записей в таблицу, расположенную на главной форме, те элементы, которые должны быть видимы пользователю на данном этапе.

Для этого необходимо проверить поля каждой записи массива с названиями Remote и Visible. При выводе каждой новой записи о книге данной процедурой добавляется новая строка в таблице, а после вывода метке, расположенной внизу таблицы и предназначенной для отображения числа записей в таблице, присваивается соответствующее значение. Если число записей равно 0, то закрывается доступ к кнопкам "Сохранить", "Изменить", "Удалить", "Выбрать" и "Сортировать". В противном же случае доступ к ним открывается (Сортировать можно более одной записи).

2.4 Алгоритм расчета

procedure TFmMain. Output;

// вывод элементов из массива записей в таблицу sgBooks

var

Number, i: Integer; // номер записи в таблице

begin

for i:=0 to 5 do

sgBooks. Cols [i]. Clear; // очистка столбцов таблицы

Number:=0;

sgBooks. RowCount:=2; // число строк таблицы равно 2

for i:=0 to Num-1 do begin

// если данная запись не удалена и видима

if not Book [i]. Remote and Book [i]. Visible then begin

Number:=Number+1; // номер увеличивается

if Number>1 then // если в таблице больше одной записи

// увеличиваем число строк

sgBooks. RowCount:=sgBooks. RowCount+1;

// заполняем добавленную строку данными о книге из массива записей

with sgBooks do begin

Cells [0,Number]:=IntToStr (Number);

Cells [1,Number]:=Book [i]. Name;

Cells [2,Number]:=Book [i]. Author;

Cells [3,Number]:=Book [i]. Issue;

Cells [4,Number]:=IntToStr (Book [i]. Year);

Cells [5,Number]:=IntTostr (Book [i]. Code);

end; // окончание оператора with

end; // окончание оператора if

end; // окончание цикла for

// заполняем нулевую строку таблицы

with sgBooks do begin

cells [0,0]:='Номер';

cells [1,0]:=' Наименование';

cells [2,0]:=' Автор';

cells [3,0]:=' Издание';

cells [4,0]:='Год издания';

end; // окончание оператора with

// строка с информацией о количестве записей в таблице

lbNum. Caption:='Количество книг: '+IntToStr (Number);

// если количество записей не равно нулю то открываем доступ к кнопкам

// Изменить, Удалить, Сохранить, Выбрать, Сортировать

if Number>0

then begin

bbtChange. Enabled:=True; miChange. Enabled:=True;

bbtDel. Enabled:=True; miDel. Enabled:=True;

bbtSave. Enabled:=True; miSave. Enabled:=True;

bbtChoice. Enabled:=True; miChoice. Enabled:=True;

bbtSaveReport. Enabled:=true; miSaveReport. Enabled:=True;

end // окончание оператора if

else begin // иначе - закрыть доступ

bbtChange. Enabled:=False; miChange. Enabled:=False;

bbtDel. Enabled:=False; miDel. Enabled:=False;

bbtSave. Enabled:=False; miSave. Enabled:=False;

bbtChoice. Enabled:=False; miChoice. Enabled:=False;

bbtSorting. Enabled:=False; miSorting. Enabled:=False;

bbtSaveReport. Enabled:=false; miSaveReport. Enabled:=false;

end; // окончание оператора else

if Number>1 // если в таблице больше одной записи

then begin

bbtSorting. Enabled:=True; // открываем доступ к кнопке Сортировать

miSorting. Enabled:=True;

end

else begin // иначе - закрываем

bbtSorting. Enabled:=False;

miSorting. Enabled:=False;

end;

end; // окончание процедуры.

function TFmMain. CodeOfBook (Code: Integer): Integer;

// определение индекса в массиве записей по его полю записи-"код"

var

i: Integer; // индекс книги в массиве записей

begin

Result:=-1;

for i:=0 to Num-1 do

// если поле "код" данного элемента совпадает с искомым, то

if Book [i]. Code=Code then

Result:=i; // индекс этого элемента в массиве равен i

end; // окончание функции CodeOfBook

procedure TFmMain. SortingOfName;

// сортировка по алфавиту

var

i,j: Integer; // переменные для реализации циклов

buf: tBook; // буфер обмена

begin

repeat

j:=0;

for i:=0 to Num-2 do

if Book [i]. Name>Book [i+1]. Name

then begin

buf:=Book [i];

Book [i]:=Book [i+1];

Book [i+1]:=buf;

j:=j+1;

end; // окончание оператора if

until j=0;

end; // окончание процедуры.

procedure TFmMain. SortingOfAuthor;

// сортировка по имени автора

var

i,j: Integer;

buf: tBook;

begin

repeat

j:=0;

for i:=0 to Num-2 do

if Book [i]. Author>Book [i+1]. Author

then begin

buf:=Book [i];

Book [i]:=Book [i+1];

Book [i+1]:=buf;

j:=j+1;

end; // окончание оператора if

until j=0;

end; // окончание процедуры.

procedure TFmMain. SortingOfYear;

// сортировка по году издания

var

i,j: Integer; // перемнные для реализации цикла

buf: tBook; // буфер обмена

begin

repeat

j:=0;

for i:=0 to Num-2 do

if Book [i]. Year>Book [i+1]. Year

then begin

buf:=Book [i];

Book [i]:=Book [i+1];

Book [i+1]:=buf;

j:=j+1;

end; // окончание оператора if

until j=0;

end; // окончание процедуры.

procedure TFmMain. Choice (Y: tYear; var Exist: Boolean);

// выбор книг, изданных после введенного года

var

i: Integer; // номер записи в массив записей

begin

Exist:=false;

for i:=0 to Num-1 do begin

if Book [i]. Year>Y // если книга издана после введённого года

then begin

Book [i]. Visible:=true; // запись о книге становится видимой

Exist:=true; // существует хотя бы одна книга, подходящая по параметру

DataChange:=true; // произошло изменение

end // then

else begin

Book [i]. Visible:=false; // запись о книге невидима

DataChange:=true; // произошло изменение

end; // окончание оператора else

end; // окончание цикла for i

end; // окончание процедуры.

2.5 Исходный код

Описание и реализация событий главной формы и ее компонентов

procedure TfmMain. FormCreate (Sender: TObject);

// создание главной формы

begin

// закрываем доступы к кнопкам Изменить Удалить Сохранить

// Выбрать Сортировать

bbtChange. Enabled:=False; miChange. Enabled:=False;

bbtDel. Enabled:=False; miDel. Enabled:=False;

bbtSave. Enabled:=False; miSave. Enabled:=False;

bbtSaveReport. Enabled:=False; miSaveReport. Enabled:=False;

bbtSorting. Enabled:=False; miSorting. Enabled:=False;

bbtChoice. Enabled:=False; miChoice. Enabled:=False;

Application. Title:='Библиотека';

Application. OnHint:=MenuHint;

// заполнение нулевой строки таблицы sgBooks

with sgBooks do begin

cells [0,0]:='Номер';

cells [1,0]:=' Наименование';

cells [2,0]:=' Автор';

cells [3,0]:=' Издание';

cells [4,0]:='Год издания';

end; // окончание оператора with

Num:=0; // число записей равно 0

DataChange:=false; // изменений нет

end; // окончание процедуры.

procedure TfmMain. MenuHint (Sender: TObject);

// Обработчик события вывода краткой справки

begin

StatusBar. Panels [0]. Text:=Application. Hint;

end; // окончание процедуры.

procedure TFmMain. TimerTimer (Sender: TObject);

// Обработчик события вывода даты и времени

begin

StatusBar. Panels [1]. Text:=DateToStr (Date);

StatusBar. Panels [2]. Text:=TimeToStr (Time);

end; // окончание процедуры.

procedure TfmMain. bbtLoadClick (Sender: TObject);

// загрузка данных из текстового файла

var

i,Number: Integer;

Acess: Boolean; // доступ к файлу

begin

try

Acess:=True; // доступ к файлу открыт

// выбираем текстовый файл для загрузки

OpenDialog. Filter:='Все файлы (*. *) |*. * |Текстовые файлы (*.txt) |*.txt';

OpenDialog. Title:='Открытие файла;

OpenDialog. FilterIndex:=2;

if OpenDialog. Execute then

// если выбранный файл 'Special Books.txt'

if ExtractFileName (OpenDialog. FileName) ='Special Books.txt'

then begin

Acess:=False; // закрываем доступ к файлу

fmKey. ShowModal; // форма fmKey становится модальной

if fmKey. ModalResult=mrOk // если нажата кнопка OK

then begin

// пароль верный, открываем доступ

if fmKey. edKey. Text='778'

then Acess:=True

else ShowMessage ('Пароль не верный! ');

end; // окончание оператора if с условием, проверяющим правильность пароля

end; // окончание оператора if с условием, что имя вызываемого файла = `Special Books.txt'

if Acess // если доступ открыт

then begin

ListOfStr:=TStringList. Create;

ListOfStr. LoadFromFile (OpenDialog. FileName);

Number:=0;

i:=0;

while i<ListOfStr. Count-1 do begin

with Book [Number] do begin

Code:=Number+1;

Name:=ListOfStr [i];

Author:=ListOfStr. Strings [i+1];

Issue:=ListOfStr. Strings [i+2];

Year:=StrToInt (ListOfStr. Strings [i+3]);

Inc (i,4);

Visible:=true;

Remote:=false;

end; // окончание оператора with

Number:=Number+1;

end; // окончание оператора while

ListOfStr. Clear; ListOfStr. Destroy;

Num:=Number+1;

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

end // if Acess

else if ListOfStr. Count-1 mod 4 <>0 then begin

raise Exception. Create ('Недопустимая структура файла);

end; // окончание оператора if

except // исключительная ситуация

on EConvertError do ShowMessage (' Данный файл#10#13'не может быть открыт! ');

on E: Exception do ShowMessage ('Недопустимая структура файла);

end; // окончание оператора try

end; // окончание процедуры.

procedure TfmMain. bbtSaveClick (Sender: TObject);

// Сохранение существующих данных

var

f: Textfile;

i: Integer;

begin

// выбираем текстовый файл для загрузки

SaveDialog. Filter:='Все файлы (*. *) |*. * |Текстовые файлы (*.txt) |*.txt';

SaveDialog. Title:='Сохранение файла';

SaveDialog. FilterIndex:=2;

if SaveDialog. Execute=true // если нажата кнопка Сохранить, тогда

then begin

i:=Pos ('.txt',SaveDialog. FileName);

// если у файла есть расширение.txt

if i>0

then AssignFile (f,SaveDialog. FileName)

else AssignFile (f,SaveDialog. FileName+'.txt');

Rewrite (f); // открываем файл для записи

for i:=0 to Num-1 do begin

// если данная запись не удалена и видима

if (Book [i]. Remote=false) and (Book [i]. Visible=true)

then begin

// записываем данную запись в текстовый файл

Writeln (f,Book [i]. Name);

Writeln (f,Book [i]. Author);

Writeln (f,Book [i]. Issue);

Writeln (f, IntToStr (Book [i]. Year));

end; // окончание оператора if, проверяющего видимость записи

end; // окончание цикла for

CloseFile (f); // закрываем файл

end; // окончание оператора if, проверяющего расширение файла

DataChange:=false; // все изменения сохранены

end; // окончание процедуры.

procedure TfmMain. bbtAddClick (Sender: TObject);

// Добавление новой записи

begin

with fmEdit do begin

Caption:='Добавление новой записи;

bbtEditOK. Caption:='Добавить';

bbtEditOK. Hint:='Добавить новую запись;

edNameOfBook. Text:='';

edAuthor. Text:='';

edIssue. Text:='';

edYear. Text:='';

ShowModal;

if Result then begin // если нажата кнопка «Добавить»

Num:=Num+1; // число записей возрастает

// добавление в массив записей нового элемента

Book [Num-1]. Code:=Num;

Book [Num-1]. Name:=edNameOfBook. Text;

Book [Num-1]. Author:=edAuthor. Text;

Book [Num-1]. Issue:=edIssue. Text;

Book [Num-1]. Year:=StrToInt (edYear. Text);

Book [Num-1]. Remote:=false;

Book [Num-1]. Visible:=true;

// количество книг увеличивается

lbNum. Caption:='Количество книг: '+IntToStr (Num);

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

DataChange:=true; // произошло изменение

end; // окончание процедуры if, проверяющей нажатие кнопки «Добавить»

end; // окончание оператора with

end; // окончание процедуры.

procedure TfmMain. bbtChangeClick (Sender: TObject);

// Изменение существующей записи

var

Number: Integer;

begin

with fmEdit do begin

Caption:='Изменение существующей записи;

bbtEditOK. Caption:='Изменить';

bbtEditOK. Hint:='Изменить существующую запись;

Number:=CodeOfBook (StrToInt (sgBooks. Cells [5,sgBooks. Row]));

with Book [Number] do begin

edNameOfBook. Text:=Name;

edAuthor. Text:=Author;

edIssue. Text:=Issue;

edYear. Text:=IntToStr (Year);

end; // окончание оператора with

ShowModal; // форма становится модальной

if Result then begin // если нажата кнопка Изменить

// изменяем запись в массиве записей

Book [Number]. Name:=edNameOfBook. Text;

Book [Number]. Author:=edAuthor. Text;

Book [Number]. Issue:=edIssue. Text;

Book [Number]. Year:=StrToInt (edYear. Text);

Book [Number]. Remote:=false;

Book [Number]. Visible:=true;

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

DataChange:=true; // произошло изменение

end; // окончание оператора if, проверяющего нажатие кнопки Изменить

end; // окончание оператора with

end; // окончание процедуры.

procedure TfmMain. bbtDelClick (Sender: TObject);

// Удаление выбранной записи

var

Number: Integer;

begin

if MessageDlg ('Удалить данную запись? ',mtWarning, mbYesNoCancel,0) =mrYes

then begin

Number:=CodeOfBook (StrToInt (sgBooks. Cells [5,sgBooks. Row]));

Book [Number]. Remote:=true;

Book [Number]. Visible:=true;

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

DataChange:=true; // произошло изменение

end;

end; // окончание процедуры.

procedure TfmMain. bbtChoiceClick (Sender: TObject);

// выборка данных

var

Exist: Boolean;

begin

with fmChoice do begin

edChoice. Text:='1900';

ShowModal; // форма становится модальной

// если нажата кнопка OK

if ChoiceResult=true then begin

// обращаемся к процедуре Choice

Choice (StrToInt (edChoice. Text),Exist);

if Exist=false // если книг с данным параметром нет

then begin

ShowMessage ('Таких книг нет! ');

Choice (1900,Exist); // выбираем все книги

end // then

else begin

lbSorting. Visible:=True;

// метка lbSorting видима

lbSorting. Caption:='Книги, изданные после '+ fmChoice. edChoice. Text+ ' года'; end; // else

end; // окончание оператора with

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

end; // окончание оператора if, проверяющего наличие книг с заданным параметром поиска

end; // окончание процедуры.

procedure TfmMain. bbtSortingClick (Sender: TObject);

// Сортировка по выбранному параметру

begin

// если нажата кнопка OK

if fmSorting. ShowModal=mrOK then begin

// если выбрана кнопка Сортировать по названию книги

if fmSorting. rbNameOfBook. Checked

then SortingOfName;

// если выбрана кнопка Сортировать по названию автора

if fmSorting. rbAuthor. Checked

then SortingOfAuthor;

if fmSorting.rbYear.Checked // если выбрано сортирование по году издания

then SortingOfYear;

fmMain.Activate; // имитация события, вызывающего процедуру, выводящую элементы из массива в таблицу

DataChange:=true; // произошло изменение

end; // окончание оператора if, проверяющего сортировку по году издания

end; // окончание процедуры.

Нажатие кнопки "Сохранить отчёт" запускает процедуру TfmMain. bbtSaveReportClick, которая позволяет сохранить отчёт в текстовый файл в виде таблицы.

procedure TfmMain. bbtSaveReportClick (Sender: TObject);

// Сохранение отчёта

var

i,j,Number: Integer;

s: String; // строка для выдачи отчёта

begin

with fmReporting do begin

mmReporting. Clear; // очистка поля mmReporting

// добавляем новую строку с заголовком

mmReporting. Lines. Add (' Библиотека');

if lbSorting. Visible=true then mmReporting. Lines. Add (lbSorting. Caption);

// выводим в поле многострочного редактора mmReporting заголовки таблицы

mmReporting. Lines. Add (Lin1);

mmReporting. Lines. Add (Lin2);

mmReporting. Lines. Add (Lin3);

// для всех элементов массива

Number:=0;

s:='';

for i:=0 to Num-1 do begin

// если запись не удалена и видима

if (Book [i]. Remote=false) and (Book [i]. Visible=true) then begin

Number:=Number+1;

// формируем таблицу

s:='|'+IntToStr (Number);

for j:=1 to w1-Length (IntToStr (Number)) do s:=s+' ';

s:=s+'|';

with Book [i] do begin

s:=s+Name;

for j:=1 to w2-Length (Name) do s:=s+' ';

s:=s+'|'+Author;

for j:=1 to w3-Length (Author) do s:=s+' ';

s:=s+'|'+Issue;

for j:=1 to w4-Length (Issue) do s:=s+' ';

s:=s+'|'+IntToStr (Year);

for j:=1 to w5-Length (IntToStr (Year)) do s:=s+' ';

s:=s+'|';

end; // окончание оператора with Book

mmReporting. Lines. Add (s);

end; // окончание оператора if, проверяющего видимость записи в таблице

end; // окончание цикла for

mmReporting. Lines. Add (Lin3);

mmReporting. Lines. Add (' '+lbNum. Caption); // выводим строку с числом книг

ShowModal;

if ModalResult=mrOK then begin

SaveDialog. Filter:='Все файлы (*. *) |*. * |Текстовые файлы (*.txt) |*.txt';

SaveDialog. Title:='Сохранение файла'; // заголовок окна SaveDialog

SaveDialog. FilterIndex:=2;

If SaveDialog. Execute then begin // если нажата кнопка OK

i:=Pos ('.txt',SaveDialog. FileName); // проверяем, есть ли в имени файла '.txt'

if i>0 then mmReporting. Lines. SaveToFile (SaveDialog. FileName)

// иначе - связываем файловую переменную с файлом + расширение

else mmReporting. Lines. SaveToFile (SaveDialog. FileName+'.txt');

ShowMessage ('Отчёт сохранён! ');

end; // окончание оператора if, проверка расширения файла

end; // окончание оператора if, проверяющего нажатие кнопки ОК

end; // окончание оператора with

end; // окончание процедуры.

procedure TfmMain. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

var

res: Integer; // переменная для результата диалога

begin

if DataChange=true then begin

res:=MessageDlg ('Сохранит изменения? ',mtWarning, mbYesNoCancel,0);

case res of

mrYes: fmMain. bbtSaveClick (fmMain);

mrCancel: begin CanClose:=False; end;

end; // case

end; // окончание оператора if, проверяющего изменение данных

end; // окончание процедуры. TfmMain. FormCloseQuery

Непосредственное закрытие формы осуществляется процедурой TFmMain. bbtCloseClick.

procedure TfmMain. bbtCloseClick (Sender: TObject); // Закрытие формы

begin

Close;

end;

procedure TfmMain. miAboutClick (Sender: TObject);

begin // вывод справки

AboutBoxHelp.ShowModal; // форма становится модальной

end;

procedure TfmMain.miloadClick (Sender: TObject);

begin // кнопка загрузки файла

bbtLoadClick (Sender);

end;

procedure TfmMain. miSaveClick (Sender: TObject);

begin // кнопка сохранения файла

bbtSaveClick (Sender);

end;

procedure TfmMain. miAddClick (Sender: TObject);

begin // кнопка добавления записи

bbtAddClick (Sender);

end;

procedure TfmMain. miChangeClick (Sender: TObject);

begin // кнопка изменения записи

bbtChangeClick (Sender);

end;

procedure TfmMain. miDelClick (Sender: TObject);

begin //кнопка удаления записи

bbtDelClick (Sender);

end;

procedure TfmMain. miSaveReportClick (Sender: TObject);

begin // кнопка сохранения отчёта

bbtSaveReportClick (Sender);

end;

procedure TfmMain. miSortingClick (Sender: TObject);

begin // кнопка сортировки

bbtSortingClick (Sender);

end;

procedure TfmMain. miChoiceClick (Sender: TObject);

begin // кнопка выборки

bbtChoiceClick (Sender);

end;

procedure TfmMain. miCloseClick (Sender: TObject);

// кнопка закрытия

begin

Close;

end;

Реализация событий формы редактирования

procedure TfmEdit. FormShow (Sender: TObject); // отображение формы

begin

edNameOfBook. SetFocus;

end;

Для добавления (изменения) информации необходимо нажать кнопку OK. Обработчик события - нажатие на данную кнопку TfmEdit. bbtEditOKClick предусматривает обработку всевозможных исключительных ситуаций.

procedure TfmEdit. bbtEditOKClick (Sender: TObject);

// обработчик нажатия на кнопку OK

begin

try

Result:=false;

if edNameOfBook. Text=''

then raise Exception. Create ('Отсутствует наименование книги! ');

if edAuthor. Text=''

then raise Exception. Create ('Отсутствует имя автора! ');

if edIssue. Text=''

then raise Exception. Create ('Год введён с ошибкой! ');

if (StrToInt (fmEdit. edYear. Text) <1900) or (StrToInt (fmEdit. edYear. Text) >2009)

then raise Exception. Create ('Год введён с ошибкой! ');

Result:=true;

except // обработка исключительных ситуаций

on E: EConvertError do begin

ShowMessage ('Год не введён! ');

fmEdit. edYear. SetFocus;

fmEdit. Close;

end;

on E: Exception do begin ShowMessage (E. Message);

edNameOfBook. SetFocus;

end; // try

end;

end; // окончание процедуры. TfmEdit. bbtEditOKClick

Реализация событий формы пароля

procedure TfmKey. FormShow (Sender: TObject);

// Отображение формы

begin

edKey. Text:='';

edKey. SetFocus;

end; // окончание процедуры. TfmKey. FormShow;

Реализация событий формы выборки

procedure TfmChoice. bbtChoiceOKClick (Sender: TObject);

// Обработчик нажатия на кнопку OK

begin

try

ChoiceResult:=False;

if (StrToInt (fmChoice. edChoice. Text) <1900) or (StrToInt (fmChoice. edChoice. Text) >2009)

then raise Exception. Create ('Год введён с ошибкой! ');

ChoiceResult:=true;

except // обработка исключительных ситуаций

on E: EConvertError do begin

ShowMessage ('Год не введён! ');

fmChoice. edChoice. SetFocus;

fmChoice. Close;

end;

on E: Exception do begin

ShowMessage (E. Message);

fmChoice. edChoice. SetFocus;

end;

end; // try

end; // окончание процедуры.

procedure TfmChoice. bbtChoiceCancelClick (Sender: TObject);

// Обработчик нажатия на кнопку Cancel

begin

ChoiceResult:=false;

fmChoice. Close;

end;

2.6 Инструкция пользователю

Чтобы загрузить данные из текстового файла, необходимо нажать кнопку «Загрузить» на главной форме или выбрать соответствующую кнопку в главном меню. Информация в текстовом файле должна быть записана построчно, количество строк в текстовом файле кратно 4. Структура текстового файла построчно должна быть следующей: название книги, имя автора, издание, год издания. Если файл не соответствует данным критериям, то выводится соответствующее сообщение об ошибке. При загрузке файла с конфиденциальными данными программа запрашивает пароль.

Файл с исходными данными - Books.txt

Файл с конфиденциальными исходными данными - Special Books.txt

Ниже подробнее описываются вышеперечисленные возможности.

Дополнение

Для дополнения списка книг, нажмите кнопку «Добавить» на главной форме. Откроется окно, в котором необходимо записать название книги, имя автора, название издательства и год издания. После заполнения необходимых строк, нажмите кнопку «Добавить» в окне «Добавление новой записи», которая пополнит список книг только что введённой вами, или «Отмена», которая отменит добавление и закроет окно.

Изменение

Для изменения данных выбранной в таблице книги, нажмите кнопку «Изменить» на главной форме. Откроется окно, в котором записаны: название книги, имя автора, название издательства и год издания. Произведите необходимые изменения и нажмите кнопку «Изменить» в окне «Добавление новой записи», которая изменит выбранную книгу в списке, или «Отмена», которая отменит изменение и закроет окно. Вы также можете нажать кнопку «Удалить», из-за чего после подтверждения во всплывающем окне, программа удалит выбранную вами запись.

Выборка

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

Сортирование

В данной версии программы доступна сортировка по названию книги, имени автора и году издательства. Что бы сортировать список книг в таблице, нажмите кнопку «Сортировать» на главной форме программы. В открывшемся окне выберите интересующий вас метод сортировки и нажмите кнопку «Сортировать» в окне «Сортировка данных» или «Отмена» соответственно.

Файл с конфиденциальными исходными данными

При загрузке файла под названием «Special Books», откроется окно, в которое необходимо будет ввести пароль, заданный в коде программы, иначе вы увидите соответствующее сообщение об ошибке.

Сохранение файла с исходными данными

Для сохранения таблицы в исходный файл, нажмите кнопку «Сохранить» на главной форме. Будьте внимательны, при сохранении файла под названием «Special Books», для его последующей загрузки вам необходимо будет ввести пароль.

Сохранение отчета

Для сохранения таблицы, как файл с отчетом, нажмите кнопку «Сохранить отчет» на главной форме. Откроется окно с многострочным редактором и подготовленным в нём отчетом в виде таблицы. Если он вас устраивает, нажмите кнопку «Сохранить».

2.7 Контрольный пример расчета

Рисунок 7 Таблица в главном меню

Рисунок 8 Форма отчета с выведенной таблицей книг

Рисунок 9 Форма изменения записи

Рисунок 10 Форма сортировки

Рисунок 11 Форма выборки

ЗАКЛЮЧЕНИЕ

Цель и задачи поставленные в работе выполнены. В частности:

Обследование возможность взаимоотношения базы данных и клиентского приложения.

Разработано программное обеспечение автоматизированной информационной системы «Библиотека». База данных содержит сведения о книгах - имя автора, название, название издательства, год издания и инвентарный номер (запоминается положение книги в списке). Созданы электронные формы для ввода и редактирования данных в таблицах.

В заключении можно вывести, что программное обеспечение автоматизированной информационной системы «Библиотека» является клиентским приложением, позволяющим редактировать базы данных книг, не несущие в себе никаких внутренних таблиц, и являющихся простым списком с перечислением данных о книгах, кратным 4 строкам. В итоге получаем очень малообъемные текстовые файлы, которые в клиентском приложении превращаются в таблицы.

Язык программирования: Borland Delphi 7.

Заметки: К «.exe» - файлу прилагается архив с проектом Delphi 7 и два файла с исходными данными «Books.txt» и конфиденциальный «Special Books.txt». В данной версии программы пароль доступа к конфиденциальным данным - «778».

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Технология разработки программных продуктов (практикум): учеб. Пособие для студ. Сред. Проф. Образования / А.В. Рудаков, Г.Н.Федорова. - М.: Издательский центр «Академия», 2010. - 192 с.

2. Фаронов В.В. / Delphi. Программирование на языке высокого уровня: Учебник. - СПб.: Питер 2007. - 640с.: ил.

3. Глушаков С.В., Клевцов А.Л., Теребилов С.А. / Программирование на Delphi 5.0 / Худож.-оформитель А.С. Юхтман.- Харьков: Фолио, 2002.-518 с.

4. Культин Н.Б. Delphi 6. Программирование на Object Pascal.- СПб.: БХВ- Петербург, 2007.- 528 с.

5. Delphi 7. Учебный курс/С.И. Бобровский. - СПб.: Питер, 2009.

Размещено на Allbest.ru


Подобные документы

  • Разработка программы для работы с базой данных "Библиотека" в среде Borland C++Builder 6 на языке программирования C++ с использованием визуальных средств. Структура информации, подключение к ней и ее отображение. Описание пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 19.05.2014

  • Разработка автоматизированной информационной системы для эффективного и быстрого обслуживания пользователей библиотеки ВУЗа. Среда разработки: MS Access. Язык программирования - VBA. Расчет технико-экономической выгоды внедрения данной технологии.

    дипломная работа [304,7 K], добавлен 19.03.2010

  • Анализ предметной области разрабатываемой информационной системы "Библиотека". Проектирование базы данных в среде MS Access. Физическая реализация данной информационной системы средствами Delphi 7 и MS Access 2003. Области применения технологии BDE.

    курсовая работа [2,4 M], добавлен 12.01.2016

  • Рассмотрение теоретических аспектов создания баз данных с применением системы объектно-ориентированного программирования Delphi. Ознакомление с компонентами доступа. Разработка базы данных "Библиотека". Описание основ интерфейса созданной программы.

    курсовая работа [1004,9 K], добавлен 26.10.2014

  • Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.

    курсовая работа [788,1 K], добавлен 22.06.2011

  • Особенности создания автоматизированной информационной системы для системного администратора библиотеки. Функции ввода и обновления данных и печати документов. Технологическая последовательность выполнения процедур системы, инструкция пользователя.

    курсовая работа [430,0 K], добавлен 12.03.2013

  • Разработка базы данных для информационной системы "Библиотека". Системный анализ, инфологическое, даталогическое и физическое проектирование. Программирование бизнес-логики, разработка клиентского приложения. Создание web-приложения, web-доступ.

    курсовая работа [3,3 M], добавлен 15.09.2014

  • Разработка информационной системы "Библиотека Дорам" в архитектуре клиент - сервер; управление реляционными базами данных (СУБД) Microsoft SQL Server. Визуальная среда программирования и технические средства. Разработка структурированного приложения.

    курсовая работа [3,2 M], добавлен 12.01.2010

  • Особенности создания базы данных. Характеристика программного и технического обеспечений. Анализ создания информационной системы по оплате студентов за обучение. Состав Borland Delphi 7: компилятор, генератор отчетов, библиотека визуальных компонент.

    курсовая работа [641,2 K], добавлен 29.02.2012

  • Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.

    контрольная работа [3,6 M], добавлен 18.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.