Информационная справочная система "Библиотека"
Сортировка информации о книгах по названию, имени автору, изданию. Разработка автоматизированной информационной справочной системы "Библиотека" на языке программирования 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.2012Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012