Разработка информационной системы "Библиотека"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 19.05.2014
Размер файла 1,5 M

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

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

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

45

Реферат

Объектом проектирования служит программное обеспечение.

Цель проекта - разработка оптимальной программы для работы с базой данных. Программа должна выполнять следующие функции:

1. Вести базу данных книг;

2. Предоставлять возможность работать с данными базы данных;

3. Предоставлять справку об использовании какой-либо функции для пользователя программы не имеющего никаких навыков работы с ней.

Для реализации данных функций необходимо использовать язык программирования C++, с помощью которого можно реализовать широкий спектр практических заданий. Так же мы будем использовать такие программы как Microsoft Access, с помощью которой создаем базу данных, т. е наш исходный источник данных.

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

Содержание

  • Реферат
  • 1. Введение
  • 2. Постановка задачи
  • 3. Разработка программы
  • 3.1 Системный анализ предметной области
  • 3.2 Структура хранимой информации
  • 3.3 Подключение к информации и ее отображение
  • 4. Описание пользовательского интерфейса
  • 5. Вывод
  • 6. Список используемой литературы
  • Приложение А

1. Введение

C++ (Си++) - компилируемый статически типизированный язык программирования общего назначения. Язык возник в начале 1980-х годов, когда сотрудник фирмы Bell Laboratories Бьёрн Страуструп придумал ряд усовершенствований к языку Си под собственные нужды. До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. В 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882: 1998 "Standard for the C++ Programming Language"; после принятия технических исправлений к стандарту в 2003 году - нынешняя версия этого стандарта - ISO/IEC 14882: 2003. В настоящее время все большее значение получает автоматизация процессов, связанных с бытовыми услугами для удобства и уменьшения затрат на обслуживание. Вследствие этого появляется необходимость в разработке универсальных систем, позволяющих довольно легко обрабатывать информацию, а также генерировать необходимые отчеты.

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

В качестве среды разработки базы данных была выбрана СУБД MSSQL Server. Эта СУБД была выбрана в качестве инструмента потому, что она способна работать на серверной основе, и имеет большие функциональные возможности. В качестве языка программирования был выбран язык С++. Данная среда позволяет легко работать с базой данных, созданной в MSSQL Server, редактировать и дополнять ее.

Язык SQL (Structured Query Language) в настоящее время стал фактически стандартным языком доступа к реляционным базам данных. Целью стандартизации является переносимость приложений между различными СУБД.

Реализация в SQL концепции операции, ориентированных на табличное представление данных, позволило создать компактный язык с небольшим (менее 30) набором предложений. SQL может использоваться как интерактивный (для выполнения запросов) и как встроенный (для построения прикладных программ). В нем существует:

предложение определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов);

предложение на выбор данных;

предложение управления данными (предоставление и отмена привилегии на доступ данным и др.);

предложение на модификацию данных (добавление, удаление, изменение данных).

Кроме того, предоставляет возможность выполнять в этих предложениях:

арифметические вычисления, обработку текстовых строк;

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

запоминание выводимого по запросу содержимого таблицы;

создание представлений (виртуальных таблиц);

агрегирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов.

К инструментальным средствам, позволяющим обеспечить простое и эффективное использование MSSQL Server можно отнести:

Enterprise Manager;

Service Manager;

Query Analyzer.

интерфейс база пользовательский программа

База данных SQL Server - это контейнер объектов, предназначенных для хранения, записи и извлечения данных в безопасном режиме - содержит следующие компоненты:

Таблицы;

Хранимые процедуры;

Индексы;

Представления.

2. Постановка задачи

Задачей данного курсового проекта является разработка системы "Библиотека", которая содержит текущую информацию о книгах в библиотеке.

Сведения о книгах содержат:

? номер УДК;

? фамилию и инициалы автора;

? название;

? год издания;

? количество экземпляров данной книги в библиотеке.

При работе с системой пользователь должен иметь возможность решать следующие задачи:

? начальное формирование данных о всех книгах в библиотеке в виде списка;

? добавление данных о книгах, вновь поступающих в библиотеку;

? удаление данных о списываемых книгах;

? по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

3. Разработка программы

3.1 Системный анализ предметной области

Программа выполнена в среде Borland C++Builder 6 на языке программирования C++ с использованием визуальных средств. Программа имитирует Справочник филателиста.

Необходимо разработать программу для учета марок и коллекционеров.

Данная программа состоит из базы данных включающей в себя одну таблицу:

Книги:

Ш номер УДК

Ш фамилию и инициалы автора

Ш название

Ш год издания

Ш количество экземпляров данной книги в библиотеке

Данная программа предназначена для:

Всех категорий пользователей, которые хотят ознакомиться со справочником филателиста.

Во время работы с программой пользователь должен иметь возможность решать следующие задачи:

1. При необходимости просматривать базу данных.

2. Редактировать ранее внесенные данные базы данных.

3. Удалять и добавлять записи, в зависимости от цели пользования данной программой.

4. Осуществлять поиск как по одному из параметров так и по всем параметрам одновременно.

3.2 Структура хранимой информации

Для реализации всех выше поставленных задач, для начала нам необходимо создать БД и внести в нее необходимую информацию. Для заполнения БД используем интернет-сайты на заданую тему.

Создаем нашу БД под названием "books" с помощью программы Microsoft Access, которая входит в пакет Microsoft Office. Наша БД состоит из одной таблицы "Books" - содержая информацию о книгах.

Таблица "Books" включает в себя:

ь num - содержит порядковый номер

ь num_udk - содержит номер УДК

ь autor - содержит фамилию и инициалы автора

ь title - содержит название

ь count_in_library - содержит год издания

ь year_print - содержит количество экземпляров данной книги в библиотеке

После создания и заполнения таблиц мы получаем наши исходные данные.

3.3 Подключение к информации и ее отображение

Для подключения и отображения информации в проекте используются следующие компоненты:

DBGrid

ADOConnection

DataSource

ADOQuery

ADOCommand

Описание компонентов:

Компонент DBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов ADOTable или ADOQuery. Приложение может использовать DBGrid для отображения, вставки, уничтожения, редактирования данных БД.

Компонент ADOConnection предназначен для управления соединением с объектами хранилища данных ADO. Он обеспечивает доступ к хранилищу данных компонентам ADO, инкапсулирующим набор данных (см. ниже).

Применение этого компонента дает разработчику ряд преимуществ:

все компоненты доступа к данным ADO обращаются к хранилищу данных через одно соединение;

возможность напрямую задать объект провайдера соединения;

доступ к объекту соединения ADO;

возможность выполнять команды ADO;

выполнение транзакций;

расширенное управление соединением при помощи методов-обработчиков событий.

Компонент DataSource действует как посредник между компонентами TDataSet (TTable, TQuery, TStoredProc) и компонентами Data Controls - элементами управления, обеспечивающими представление данных на форме. Компоненты TDataSet управляют связями с библиотекой Borland Database Engine (BDE), а компонент DataSource управляет связями с данными в компонентах Data Controls.

Компонент TADOQuery предназначен для выполнения SQL-запросов в хранилище данных ADO (ADO data store).

Компонент выполняет запросы SELECT, INSERT, DELETE, UPDATE, ALTER TABLE и CREATE TABLE. Также исполняет хранимые процедуры.

Объект ADOCommand представляет команду (запрос или выражение), которая может быть обработана источником данных. Команды могут быть выполнены методом Execute, используемым в ADOCommand. TADOCommand чаще всего используется для исполнения команд языка определения данных (DDL) SQL.

4. Описание пользовательского интерфейса

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

Интерфейс программы после запуска:

Рисунок 1 - Окно программы

Основные меню программы:

Меню "Выход"

Рисунок 2 - Выход

Меню "Правка"

Рисунок 3 - Правка

Меню "Справка"

Рисунок 4 - Справка

О программе - содержит информацию о программе, а именно: название продукта, описание, авторские права и название организации.

Рисунок 5 - О программе

Работа с данными:

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

Программа производит начальное формирование данных о всех книгах в библиотеке в виде списка.

Для добавления данных необходимо открыть форму добавления данных.

Это можно сделать выбрав в меню "Правка" пункт "Добавить книгу" или выбрать этот же пункт из контекстного меню таблицы.

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

В поля "год издания" и "количество в библиотеке" допускается вводить только числа.

Рисунок 6 - Добавление книги

Для изменения данным необходимо в меню Правка выбрать пункт "Редактировать книгу". После чего откроется аналогичное окно.

Рисунок 7 - Редактирование книги

Для удаления данных необходимо из меню Правка выбрать пункт "Удалить выделенную книгу".

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

Для осуществления поиска выберите пункт "Поиск." в меню Правка или из контекстного меню таблицы.

Поиск может осуществляться как по любому из параметров так и по всем параметрам одновременно.

В поля "Год издания" и "Количество в библиотеке" допускается вводить только целые числа.

Рисунок 8 - Поиск

5. Вывод

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

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

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

6. Список используемой литературы

1. Wikipedia.org/

2. books.net-soft.ru/

3. board.com/

4. sqlforum.ru/

5. Бьерн Страуструп "Язык программирования C++"

Приложение А

Исходный код программы

frmMain (Unit1. cpp)

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit1. h" // frmMain

#include "Unit2. h" // frmSearch

#include "Unit3. h" // frmEdit

#include "Unit4. h" // frmAbout

#include "UserFunctions_unit. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TfrmMain *frmMain;

int frmEditState; // Объявление переменной, указывающей на тип формы frmEdit (добавление данных или редактирование)

bool sortedbooks = false; // переменная, указывающая были ли отсортированы книги

MyFunctions func; // объявление объекта типа MyFunctions

//

// ---------------------------------------------------------------------------

__fastcall TfrmMain:: TfrmMain (TComponent* Owner)

: TForm (Owner)

{

// Задаем начальную надпись в панели статуса

StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке";

try // Перехватываем возможные ошибки во время выполнения блока программного кода

{

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

}

catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

{

Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

}

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

}

// ---------------------------------------------------------------------------

// Функция завершения работы приложения

void __fastcall TfrmMain:: mnuExitClick (TObject *Sender)

{

this->Close (); // Закрыть приложение

}

// ---------------------------------------------------------------------------

// Функция вызова формы поиска

void __fastcall TfrmMain:: mnuSearchClick (TObject *Sender)

{

frmSearch->Show (); // Открытие формы поиска

}

// ---------------------------------------------------------------------------

// Функция вызова формы поиска

void __fastcall TfrmMain:: popmnuSearchClick (TObject *Sender)

{

frmSearch->Show (); // Открытие формы поиска

}

// ---------------------------------------------------------------------------

// Функция вызова формы добавления книги

void __fastcall TfrmMain:: mnuAddClick (TObject *Sender)

{

if (! frmEdit->Showing) // если форма еще не открыта

{

frmEditState = 0; // устанавливаем состояние формы, указывающее на функции добавления книги

frmEdit->Show (); // Открытие формы добавления книги

}

}

// ---------------------------------------------------------------------------

// Функция вызова формы редактирования книги

void __fastcall TfrmMain:: mnuEditBookClick (TObject *Sender)

{

if (! frmEdit->Showing) // если форма еще не открыта

{

frmEditState = 1; // устанавливаем состояние формы, указывающее на функции редактирования книги

frmEdit->Show (); // Открытие формы добавления книги

}

}

// ---------------------------------------------------------------------------

// Функция вызова формы добавления книги

void __fastcall TfrmMain:: popmnuAddClick (TObject *Sender)

{

if (! frmEdit->Showing) // если форма еще не открыта

{

frmEditState = 0; // устанавливаем состояние формы, указывающее на функции добавления книги

frmEdit->Show (); // Открытие формы добавления книги

}

}

// ---------------------------------------------------------------------------

// Функция вызова формы редактирования книги

void __fastcall TfrmMain:: popmnuEditBookClick (TObject *Sender)

{

if (! frmEdit->Showing) // если форма еще не открыта

{

frmEditState = 1; // устанавливаем состояние формы, указывающее на функции редактирования книги

frmEdit->Show (); // Открытие формы добавления книги

}

}

// ---------------------------------------------------------------------------

// Функция вызова метода удаления книги

void __fastcall TfrmMain:: mnuDeleteClick (TObject *Sender)

{

frmMain->DeleteBook (); // вызов функции удаления книги

}

// ---------------------------------------------------------------------------

// Функция удаления книги

void __fastcall TfrmMain:: DeleteBook ()

{

if (Application->MessageBox ("Вы действительно жедаете удалить книгу?", "Удаление записи о книге", MB_OKCANCEL + MB_ICONWARNING) == IDOK) // Вызываем MessageBox. Если пользователь нажмет на кнопку OK

{

// формирование SQL запроса // то продолжаем выполнять действия

String QueryDelete = "DELETE FROM Books" \

" WHERE num_udk='"+DBGrid1->Fields [0] - >AsString+"' and autor='"+DBGrid1->Fields [1] - >AsString+"'and title='"+DBGrid1->Fields [2] - >AsString+"'and year_print="+DBGrid1->Fields [3] - >AsString+" and count_in_library="+DBGrid1->Fields [4] - >AsString; // Строковая переменная, содержащая SQL запрос к базе данных

try // Перехватываем возможные ошибки во время выполнения блока программного кода

{

ADOCommand1->CommandText = QueryDelete; // Устанавливаем значение SQL-запроса в объект ADOCommand1

ADOCommand1->Execute (); // выполнение SQL-запрос

// Обновление списка книг в таюлице DBGrid1

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

}

catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

{

Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

}

}

}

// ---------------------------------------------------------------------------

// Функция вызова метода удаления книги

void __fastcall TfrmMain:: popmnuDeleteClick (TObject *Sender)

{

frmMain->DeleteBook (); // вызов функции удаления книги

}

// ---------------------------------------------------------------------------

// Функция вызова формы frmAbout

void __fastcall TfrmMain:: mnuAboutClick (TObject *Sender)

{

frmAbout->Show (); // Открытие формы frmAbout

}

// ---------------------------------------------------------------------------

// Функция выводит список всех книг в библиотеке

void __fastcall TfrmMain:: mnuShowAllClick (TObject *Sender)

{

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

frmMain->mnuShowAll->Visible = false; // скрываем пункты меню

frmMain->popmnuShowAll->Visible = false; // так как при выведенном полном списке книг они не востребованы

StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке"; // Изменяем текст на панели статуса

}

// ---------------------------------------------------------------------------

// Функция выводит список всех книг в библиотеке

void __fastcall TfrmMain:: popmnuShowAllClick (TObject *Sender)

{

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

frmMain->mnuShowAll->Visible = false; // скрываем пункты меню

frmMain->popmnuShowAll->Visible = false; // так как при выведенном полном списке книг они не востребованы

StatusBar1->Panels->Items [0] - >Text = " Просмотр списка всех книг в библиотеке"; // Изменяем текст на панели статуса

}

// ---------------------------------------------------------------------------

// Функция открытия файла справки help. chm

void __fastcall TfrmMain:: mnuHelpContentClick (TObject *Sender)

{

AnsiString FILE_HELP_NAME_STR = "help. chm"; // Задаем имя файла справки

if (FileExists (FILE_HELP_NAME_STR)) // Если файл help. chm присутствует в каталоге программы

{

ShellExecute (Handle, "open", "help. chm", 0, 0, SW_SHOWNORMAL); // запускаем на выполнение

return;

}

else

{

ShowMessage ("Файл справки \"help. chm\" в папке с исполняемым файлом не найден. Для исправления данной ситуации можно либо переустановить программу, либо искать файл самостоятельно. ");

return;

}

}

// ---------------------------------------------------------------------------

// Функция вызова метода сортировки книг

void __fastcall TfrmMain:: mnuSortByYearClick (TObject *Sender)

{

SortBook (); // вызов функции сортировки книг

}

// ---------------------------------------------------------------------------

// Функция сортировки книг

void __fastcall TfrmMain:: SortBook ()

{

if (! sortedbooks) // Если книги не отсортированны, то проводим сортировку

{

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books ORDER BY year_print DESC"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

mnuSortByYear->Caption = "Отменить сортировку по годам"; // Изменяем названия

popSortByYear->Caption = "Отменить сортировку по годам"; // пунктов меню

sortedbooks = true; // и значение переменной на обратные

}

else // Если книги отсортированны, то отменяем сортировку

{

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

ADOQuery1->SQL->Clear (); // очистить SQL-запрос

ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

ADOQuery1->Open (); // активировать SQL-запрос

func. ChangeCollName (DBGrid1); // Изменение названий столбцов

mnuSortByYear->Caption = "Упорялочить по годам"; // Изменяем названия

popSortByYear->Caption = "Упорялочить по годам"; // пунктов меню

sortedbooks = false; // и значение переменной на обратные

}

}

// ---------------------------------------------------------------------------

// Функция вызова метода сортировки книг

void __fastcall TfrmMain:: popSortByYearClick (TObject *Sender)

{

SortBook (); // вызов функции сортировки книг

}

// ---------------------------------------------------------------------------

frmMain (Unit1. h)

// ---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

// ---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

#include <ADODB. hpp>

#include <DB. hpp>

#include <DBGrids. hpp>

#include <Grids. hpp>

#include <ComCtrls. hpp>

#include <Menus. hpp>

// ---------------------------------------------------------------------------

class TfrmMain: public TForm

{

__published: // IDE-managed Components

TADOConnection *ADOConnection1;

TADOQuery *ADOQuery1;

TDBGrid *DBGrid1;

TDataSource *DataSource1;

TStatusBar *StatusBar1;

TMainMenu *MainMenu1;

TMenuItem *mnuFile;

TMenuItem *mnuExit;

TMenuItem *mnuEdit;

TMenuItem *mnuAdd;

TMenuItem *mnuDelete;

TMenuItem *mnuSearch;

TMenuItem *N3;

TMenuItem *mnuHelp;

TMenuItem *mnuHelpContent;

TMenuItem *N1;

TMenuItem *mnuAbout;

TPopupMenu *PopupMenu1;

TMenuItem *popmnuAdd;

TMenuItem *popmnuDelete;

TMenuItem *N2;

TMenuItem *popmnuSearch;

TMenuItem *popmnuEditBook;

TMenuItem *mnuEditBook;

TADOCommand *ADOCommand1;

TADODataSet *ADODataSet1;

TMenuItem *mnuShowAll;

TMenuItem *popmnuShowAll;

TMenuItem *N4;

TMenuItem *mnuSortByYear;

TMenuItem *N5;

TMenuItem *popSortByYear;

void __fastcall mnuExitClick (TObject *Sender);

void __fastcall mnuSearchClick (TObject *Sender);

void __fastcall popmnuSearchClick (TObject *Sender);

void __fastcall mnuAddClick (TObject *Sender);

void __fastcall mnuEditBookClick (TObject *Sender);

void __fastcall popmnuAddClick (TObject *Sender);

void __fastcall popmnuEditBookClick (TObject *Sender);

void __fastcall mnuDeleteClick (TObject *Sender);

void __fastcall DeleteBook ();

void __fastcall popmnuDeleteClick (TObject *Sender);

void __fastcall mnuAboutClick (TObject *Sender);

void __fastcall mnuShowAllClick (TObject *Sender);

void __fastcall popmnuShowAllClick (TObject *Sender);

void __fastcall mnuHelpContentClick (TObject *Sender);

void __fastcall mnuSortByYearClick (TObject *Sender); // Функция удаления выделенной книги

void __fastcall SortBook ();

void __fastcall popSortByYearClick (TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TfrmMain (TComponent* Owner);

};

// ---------------------------------------------------------------------------

extern PACKAGE TfrmMain *frmMain;

// ---------------------------------------------------------------------------

#endif

frmSearch (Unit2. cpp)

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit1. h"

#include "Unit2. h"

#include "UserFunctions_unit. h" // подключение пользовательской функции

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TfrmSearch *frmSearch;

extern bool sortedbooks; // Объявляем общую переменную для форм frmMain, frmEdit и frmSearch

MyFunctions func2; // объявление объекта типа MyFunctions

// ---------------------------------------------------------------------------

__fastcall TfrmSearch:: TfrmSearch (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

// Функция обработки нажатия кнопки btnSearch

void __fastcall TfrmSearch:: btnSearchClick (TObject *Sender)

{

bool searchOK = false; // переменная, указывающая заполнено ли хоть одно поле для поиска

String QuerySearch = "SELECT num_udk, autor, title, year_print, count_in_library from Books WHERE "; // Строковая переменная, содержащая SQL запрос к базе данных

if (txtUdk->Text! = "") // Если txtUdk содержит текст

{

searchOK = true; // переменной присваиваем true

QuerySearch = QuerySearch + "num_udk = '" + txtUdk->Text + "' "; // добкавляем текст поиска к SQL запросу

}

if (txtAuthor->Text! = "") // Если txtAuthor содержит текст

{

if (searchOK) QuerySearch = QuerySearch + " and "; // если это не первое заполненное поле

QuerySearch = QuerySearch + "autor like '%" + txtAuthor->Text + "%' "; // добкавляем текст поиска к SQL запросу

searchOK = true; // переменной присваиваем true

}

if (txtTitle->Text! = "")

{

if (searchOK) QuerySearch = QuerySearch + " and ";

QuerySearch = QuerySearch + "title like '%" + txtTitle->Text + "%' ";

searchOK = true;

}

if (txtYear->Text! = "")

{

if (searchOK) QuerySearch = QuerySearch + " and ";

QuerySearch = QuerySearch + "year_print = " + txtYear->Text + " ";

searchOK = true;

}

if (txtNum_in_lib->Text! = "")

{

if (searchOK) QuerySearch = QuerySearch + " and ";

QuerySearch = QuerySearch + "count_in_library = " + txtNum_in_lib->Text + " ";

searchOK = true;

}

// Если хотябы одно текстовое поле заполнено выполняем поиск

if (txtAuthor->Text! ="" || txtNum_in_lib->Text! ="" || txtTitle->Text! ="" || txtUdk->Text! ="" || txtYear->Text! ="")

{

try // Перехватываем возможные ошибки во время выполнения блока программного кода

{

frmMain->ADOQuery1->SQL->Clear (); // очистить SQL-запрос

frmMain->ADOQuery1->SQL->Add (QuerySearch); // Устанавливаем значение SQL-запроса в объект ADOQuery1

frmMain->ADOQuery1->Open (); // активировать SQL-запрос

}

catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

{

Application->MessageBox ("Ошибка при выполнении поиска", "Поиск", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

}

frmMain->mnuShowAll->Visible = true; // Показываем пункты меню "Отобразить все книги"

frmMain->popmnuShowAll->Visible = true; // Показываем пункты меню "Отобразить все книги"

frmSearch->Close (); // Закрываем форму поиска

frmMain->StatusBar1->Panels->Items [0] - >Text = " Результат поиска"; // Изменяем текст в панели статусак

frmMain->mnuSortByYear->Caption = "Упорялочить по годам"; // Изменяем название пункта сортировки

frmMain->popSortByYear->Caption = "Упорялочить по годам"; // Изменяем название пункта сортировки

sortedbooks = false; // значение переменной - сортировка не проводилась

func2. ChangeCollName (frmMain->DBGrid1); // Изменение названий столбцов

}

else ShowMessage ("Не заданы параметры поиска"); // Если не заполнено поле поиска выводим сообщение

}

// ---------------------------------------------------------------------------

void __fastcall TfrmSearch:: btnCleartextClick (TObject *Sender) // Очищаем текстовые поля

{

txtAuthor->Text = ""; // Присваиваем текстовым полям пустое значение

txtNum_in_lib->Text = "";

txtTitle->Text = "";

txtUdk->Text = "";

txtYear->Text = "";

}

// ---------------------------------------------------------------------------

// Функция обработки ввода текста в поле txtYear

void __fastcall TfrmSearch:: txtYearKeyPress (TObject *Sender, char &Key)

{

// разрешаем вводить только цифры

if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

}

// ---------------------------------------------------------------------------

// ---------------------------------------------------------------------------

// Функция обработки ввода текста в поле txtNum

void __fastcall TfrmSearch:: txtNum_in_libKeyPress (TObject *Sender,

char &Key)

{

// разрешаем вводить только цифры

if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

}

// ---------------------------------------------------------------------------

frmSearch (Unit2. h)

// ---------------------------------------------------------------------------

#ifndef Unit2H

#define Unit2H

// ---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

// ---------------------------------------------------------------------------

class TfrmSearch: public TForm

{

__published: // IDE-managed Components

TEdit *txtUdk;

TEdit *txtTitle;

TEdit *txtAuthor;

TEdit *txtYear;

TEdit *txtNum_in_lib;

TButton *btnSearch;

TLabel *lblUDK;

TLabel *lblTitle;

TLabel *lblAuthor;

TLabel *lblNum_in_lib;

TLabel *lblyear;

TButton *btnCleartext;

void __fastcall btnSearchClick (TObject *Sender);

void __fastcall btnCleartextClick (TObject *Sender);

void __fastcall txtYearKeyPress (TObject *Sender, char &Key);

void __fastcall txtNum_in_libKeyPress (TObject *Sender, char &Key);

private: // User declarations

public: // User declarations

__fastcall TfrmSearch (TComponent* Owner);

};

// ---------------------------------------------------------------------------

extern PACKAGE TfrmSearch *frmSearch;

// ---------------------------------------------------------------------------

#endif

frmEdit (Unit3. cpp)

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit3. h"

#include "Unit1. h"

#include "UserFunctions_unit. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TfrmEdit *frmEdit;

extern int frmEditState; // Объявляем общую переменную для форм frmMain, frmEdit

extern bool sortedbooks; // Объявляем общую переменную для форм frmMain, frmEdit и frmSearch

MyFunctions func3; // объявление объекта типа MyFunctions

// ---------------------------------------------------------------------------

__fastcall TfrmEdit:: TfrmEdit (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TfrmEdit:: FormShow (TObject *Sender)

{

if (frmEditState == 0) // Если frmEditState равняется 0

{

frmEdit->Caption = "Добавление книги"; // Изменяем заголовок формы

}

else

{

frmEdit->Caption = "Редактирование книги"; // Изменяем заголовок формы

btnOK->Caption = "Сохранить изменения"; // Изменяем заголовок кнопки

txtUdk->Text=frmMain->DBGrid1->Fields [0] - >AsString; // заполняем текстовые

txtAuthor->Text=frmMain->DBGrid1->Fields [1] - >AsString; // поля значениями из DBGrid1

txtTitle->Text=frmMain->DBGrid1->Fields [2] - >AsString;

txtNum_in_lib->Text=frmMain->DBGrid1->Fields [4] - >AsString;

txtYear->Text=frmMain->DBGrid1->Fields [3] - >AsString;

}

}

// ---------------------------------------------------------------------------

// Функция обработки нажатия кнопки

void __fastcall TfrmEdit:: btnOKClick (TObject *Sender)

{

if (frmEditState == 0) // Если frmEditState равняется 0

{ // Если заполнены все поля

if (txtAuthor->Text! ="" && txtNum_in_lib->Text! ="" && txtTitle->Text! ="" && txtUdk->Text! ="" && txtYear->Text! ="")

{ // Формируем SQL запрос на добавление записи

String QueryAdd = "INSERT INTO Books (num_udk, autor, title, year_print, count_in_library) VALUES ('" \

+txtUdk->Text+"', '"+txtAuthor->Text+"', '"+txtTitle->Text+"', "+txtYear->Text+", "+txtNum_in_lib->Text+"); "; // Строковая переменная, содержащая SQL запрос к базе данных

try // Перехватываем возможные ошибки во время выполнения блока программного кода

{

frmMain->ADOCommand1->CommandText = QueryAdd; // Устанавливаем значение SQL-запроса в объект ADOCommand1

frmMain->ADOCommand1->Execute (); // активировать SQL-запрос

// Обновляем список книг в DBGrid1

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

frmMain->ADOQuery1->SQL->Clear (); // очистить SQL-запрос

frmMain->ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

frmMain->ADOQuery1->Open (); // активировать SQL-запрос

}

catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

{

Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

}

frmMain->mnuSortByYear->Caption = "Упорялочить по годам"; // Устанавливаем новые

frmMain->popSortByYear->Caption = "Упорялочить по годам"; // заголовки для пунктов меню

sortedbooks = false; // значение переменной - сортировка не проводилась

func3. ChangeCollName (frmMain->DBGrid1); // Изменение названий столбцов

frmEdit->Close (); // Закрываем форму

}

else ShowMessage ("Заполнены не все поля!"); // Если заполнены не все поля выводим сообщение

}

else if (frmEditState == 1) // Если frmEditState равняется 0

{ // Формируем SQL запрос на обновление записи

String QueryUpdate = "UPDATE Books SET num_udk='"+txtUdk->Text+"', autor='"+txtAuthor->Text+"', title='"+txtTitle->Text+"', year_print="+txtYear->Text+", count_in_library="+txtNum_in_lib->Text+ \

" WHERE num_udk='"+frmMain->DBGrid1->Fields [0] - >AsString+"' and autor='"+frmMain->DBGrid1->Fields [1] - >AsString+"'and title='"+frmMain->DBGrid1->Fields [2] - >AsString+"'and year_print="+frmMain->DBGrid1->Fields [3] - >AsString+" and count_in_library="+frmMain->DBGrid1->Fields [4] - >AsString; // Строковая переменная, содержащая SQL запрос к базе данных

try // Перехватываем возможные ошибки во время выполнения блока программного кода

{

frmMain->ADOCommand1->CommandText = QueryUpdate; // Устанавливаем значение SQL-запроса в объект ADOCommand1

frmMain->ADOCommand1->Execute (); // активировать SQL-запрос

// Обновляем список книг в DBGrid1

String TTQuery1 = "select num_udk, autor, title, year_print, count_in_library from Books"; // Строковая переменная, содержащая SQL запрос к базе данных

frmMain->ADOQuery1->SQL->Clear (); // очистить SQL-запрос

frmMain->ADOQuery1->SQL->Add (TTQuery1); // Устанавливаем значение SQL-запроса в объект ADOQuery1

frmMain->ADOQuery1->Open (); // активировать SQL-запрос

}

catch (EDatabaseError&) // Обрабатываем возможное исключение (ошибку)

{

Application->MessageBox ("Ошибка при работе с базой данных", "Вывод записей", MB_OK + MB_ICONINFORMATION); // Выводим сообщение

}

frmMain->mnuSortByYear->Caption = "Упорялочить по годам"; // Устанавливаем новые

frmMain->popSortByYear->Caption = "Упорялочить по годам"; // заголовки для пунктов меню

sortedbooks = false; // значение переменной - сортировка не проводилась

func3. ChangeCollName (frmMain->DBGrid1); // Изменение названий столбцов

frmEdit->Close (); // Закрываем форму

}

}

// ---------------------------------------------------------------------------

// Функция обработки ввода текста в поле txtYear

void __fastcall TfrmEdit:: txtYearKeyPress (TObject *Sender, char &Key)

{

// разрешаем вводить только цифры

if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

}

// ---------------------------------------------------------------------------

// Функция обработки ввода текста в поле txtNum

void __fastcall TfrmEdit:: txtNum_in_libKeyPress (TObject *Sender, char &Key)

{

// разрешаем вводить только цифры

if (! ( (Key >= '0' && Key <= '9') || Key == VK_BACK)) Key = 0x00;

}

// ---------------------------------------------------------------------------

frmEdit (Unit3. h)

// ---------------------------------------------------------------------------

#ifndef Unit3H

#define Unit3H

// ---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

// ---------------------------------------------------------------------------

class TfrmEdit: public TForm

{

__published: // IDE-managed Components

TEdit *txtUdk;

TEdit *txtTitle;

TEdit *txtAuthor;

TEdit *txtYear;

TEdit *txtNum_in_lib;

TButton *btnOK;

TLabel *lblUDK;

TLabel *lblTitle;

TLabel *lblAuthor;

TLabel *lblNum_in_lib;

TLabel *lblyear;

void __fastcall FormShow (TObject *Sender);

void __fastcall btnOKClick (TObject *Sender);

void __fastcall txtYearKeyPress (TObject *Sender, char &Key);

void __fastcall txtNum_in_libKeyPress (TObject *Sender, char &Key);

private: // User declarations

public: // User declarations

__fastcall TfrmEdit (TComponent* Owner);

};

// ---------------------------------------------------------------------------

extern PACKAGE TfrmEdit *frmEdit;

// ---------------------------------------------------------------------------

#endif

frmAbout (Unit4. cpp)

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit4. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TfrmAbout *frmAbout;

// ---------------------------------------------------------------------------

__fastcall TfrmAbout:: TfrmAbout (TComponent* Owner)

: TForm (Owner)

{

Label6->Caption = "Программа осуществляет отображение\nи редактирование списка литературы \nсодержащейся в библиотеке";

}

// ---------------------------------------------------------------------------

void __fastcall TfrmAbout:: FormCreate (TObject *Sender)

{

}

// ---------------------------------------------------------------------------

frmAbout (Unit4. cpp)

// ---------------------------------------------------------------------------

#ifndef Unit4H

#define Unit4H

// ---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

// ---------------------------------------------------------------------------

class TfrmAbout: public TForm

{

__published: // IDE-managed Components

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

TLabel *Label7;

private: // User declarations

public: // User declarations

__fastcall TfrmAbout (TComponent* Owner);

};

// ---------------------------------------------------------------------------

extern PACKAGE TfrmAbout *frmAbout;

// ---------------------------------------------------------------------------

#endif

UserFunctions_unit. cpp

// ---------------------------------------------------------------------------

#pragma hdrstop

#include "UserFunctions_unit. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

// Функция изменения названий столбцов

void MyFunctions:: ChangeCollName (TDBGrid *DBGrid)

{

AnsiString colname; // строка имени колонки

AnsiString collable; // строка присвоения lable колонки на русском

int width = 0;

for (int i = 0; i < (DBGrid->FieldCount); i++) // Осуществляем перебор всех столбцов в DBGrid1

{

colname = DBGrid->Fields [i] - >FullName; // получаем имя колонки и присваиваем его переменной

if (colname == "num_udk") // В слечае совпадения имени колонки в DBGrid и заданной строки

{ // меняем lable колонки на русские названия

collable = "Номер УДК"; // Устанавливаем название колонки

width=90; // Устанавливаем ширину колонки

}

else if (colname == "autor") // В слечае совпадения имени колонки в DBGrid и заданной строки

{ // меняем lable колонки на русские названия

collable = "Автор";

width=220;

}

else if (colname == "title") // В слечае совпадения имени колонки в DBGrid и заданной строки

{ // меняем lable колонки на русские названия

collable = "Название";

width=270;

}

else if (colname == "year_print") // В слечае совпадения имени колонки в DBGrid и заданной строки

{ // меняем lable колонки на русские названия

collable = "Год издания";

width=90;

}

else if (colname == "count_in_library") // В слечае совпадения имени колонки в DBGrid и заданной строки

{ // меняем lable колонки на русские названия

collable = "Количество";

width=90;

}

DBGrid->Fields [i] - >DisplayLabel = collable; // Меняем название столбца в DBGrid на установленное

DBGrid->Columns->Items [i] - >Width = width; // Меняем ширину столбца в DBGrid на установленное

DBGrid->Columns->Items [i] - >Alignment = taLeftJustify; // Меняем выравнивание в столбце DBGrid на выравнивание по левому краю

}

}

UserFunctions_unit. h

// ---------------------------------------------------------------------------

#include <DBGrids. hpp>

#ifndef UserFunctions_unitH

#define UserFunctions_unitH

class MyFunctions

{

public: // User declarations

void ChangeCollName (TDBGrid*);

private:

};

// ---------------------------------------------------------------------------

#endif

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


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

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

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

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

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

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

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

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

    дипломная работа [1,5 M], добавлен 13.10.2015

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

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

  • Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.

    курсовая работа [597,4 K], добавлен 31.01.2016

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

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

  • Разработка модуля регистрации абонентов для информационной системы предприятия "Библиотека". Структура базы данных. Взаимодействие клиентов с БД и клиентов друг с другом. Форма регистрации, сохранение данных. Основные сущности данного приложения.

    курсовая работа [991,4 K], добавлен 18.06.2015

  • Реализация программного кода "Organizer 1.0". Разработка приложений баз данных с помощью Borland C++ Builder 6. Компоненты системы программирования для работы по технологии InterBase. Программный код и интерфейс "Organizer 1.0", структура приложения.

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

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

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

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