Проектирование автоматизированной информационной системы книжного склада

Среда разработки Delphi. Обзор современной автоматизированной информационной системы "Книжный склад". Структурированное добавление новых данных. Автоматизация учета и отчетности товарооборота фирм. Дублирование ввода информации. Деление книг по тематикам.

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

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

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ГЛАВА 1.ТЕОРИТИЧЕСКАЯ ЧАСТЬ.СРЕДА РАЗРАБОТКИ И ИСТОРИЯ ЯЗЫКА DELPHI.

1.1 Среда разработки Delphi

1.2История языка

1.3 Обзор современной АИС «Книжный склад»

ГЛАВА 2.ПРАКТИЧЕСКАЯ ЧАСТЬ.ПРОЕКТИРОВАНИЕ АИС КНИЖНЫЙ СКЛАД

2.1Анализ предметной области

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

2.3ER-диаграмма Книжного склада

2.4Алгоритм программы

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

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А

ВВЕДЕНИЕ

Актуальность проектирования АИС «Книжный склад» обусловлено тем, что в данный момент на книжных складах используется не систематизированные учеты хранения книг и неструктурированные отчеты по закупкам и продажам.

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

Для того что бы спроектировать конкурентоспособную АИС «книжный склад» необходимо выполнить следующие задачи: рассмотреть современные АИС «книжный склад», выбрать язык программирования и среду разработки.

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

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

- приложение «Книжный склад» представляет собой программу для управления базой данных;

- программа полностью автоматизирует труд оператора ПЭВМ: автоматически заносит вводимые пользователем данные в таблицы базы данных, изменяет структуру таблиц (добавление/удаление записей).

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

ГЛАВА 1.ТЕОРИТИЧЕСКАЯ ЧАСТЬ. СРЕДА РАЗРАБОТКИ И ИСТОРИЯ ЯЗЫКА DELPHI

1.1 Среда разработки Delphi

ImageDelphi -- интегрированная среда разработки программного обеспечения корпорации Borland. Delphi является средой RAD (от англ. rapidapplicationdevelopment -- быстрая разработка приложений). По сути является наследником языка Pascal с объектно-ориентированными расширениями. Изначально язык был предназначен исключительно для разработки приложений MicrosoftWindows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET. Реализация языка Delphi проектом FreePascal позволяет использовать его для создания приложений для таких платформ, как Mac OS, Windows[1].

1.2 История языка

Delphi -- результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль начиная с версии 5.5 добавил в Паскаль объектно-ориентированные свойства, а Delphi -- объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, и воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию. Также отличительным свойством Дельфи от С++ является отсутствие возможности располагать объекты в стеке (объекты, унаследованные из Турбо Паскаля, располагаться в стеке могут) -- все объекты попадают в динамически выделяемую область (кучу). Де-факто ObjectPascal, а затем и язык Delphi являются функциональными наращиваниями TurboPascal. Об этом говорят обозначения версий компилятора. Так, в Delphi 7 компилятор имеет номер версии 15.0 (Последняя версия BorlandPascal / TurboPascal обозначалась 7.0, в Delphi 1 компилятор имеет версию 8.0, в Delphi 2 -- 9.0, и т. д. Номер версии 11.0 носит компилятор Pascal, входивший в состав среды C++Builder). Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании BorlandLtd. в MicrosoftCorp[2].

Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16;

Версии со второй компилируют программы под 32-х разрядную платформу Win32;

Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux;

Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);

Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET;

Delphifor .NET -- среда разработки Delphi, а так же язык Delphi (ObjectPascal), ориентированные на разработку приложений для .NET. Первая версия полноценной среды разработки Delphi для .NET -- Delphi 8. Она позволяла писать приложения только для .NET. В настоящее время, в Delphi 2006, можно писать приложения для .NET используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет писать .NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием билиотек VCL и CLX. Delphi 2006 поддерживает технологию MDA с помощью ECO (EnterpriseCoreObjects) версии 3.0. В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++Builder по причине убыточности этого направления. Планируется продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор[1].

Однако в ноябре того же года было принято решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания -- CodeGear, которая будет финансово полностью подконтрольна Borland. Borland продолжил развитие IDE систем под именем Turbo: TurboDelphi, TurboDelphifor .NET, Turbo C#, Turbo C++ А в марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP[3].

1.3 Обзор современной АИС "Книжный склад"

Программа "Книжный склад" предназначенная для автоматизации учета и отчетности товарооборота фирм, торгующих печатной продукцией и выпусками периодических изданий. Программа позволяет вести полноценный количественный и суммовой складской учет. Интерфейс программы эргономичен и интуитивно понятен пользователю. Ввод информации осуществляется через форму, имитирующую вид накладной, т.е. привычный для сотрудников фирмы, работающих с материальными ценностями, документ. Дублирование ввода информации исключается наличием всех необходимых справочников, предусмотрена сквозная автоматическая нумерация первичных документов с возможностью ручной коррекции. Программа позволяет обрабатывать и выводить на печать основные первичные документы - накладные, счета, счета фактуры, платежки, приходные и расходные ордера, формировать книгу покупок и продаж. При выписке документов можно использовать различные виды скидок (суммовая, процентная), при необходимости сам пользователь может добавить новые виды скидок. Непосредственно после выписки накладной на отпуск книг оператор может получить складскую справку по месту хранения книг.

Рис.1.1 Программа "КС:Книжный склад"

Разработан специальный справочник для учета книжной продукции - "Картотека книг", где учтены все выходные данные книги: издательство, тираж, стандарт, год выпуска и т. д. Для удобства работы с большой номенклатурой печатной продукции предусмотрена возможность деления всех книг по тематикам. Для работы с различными категориями партнеров введен многоколоночный прайс-лист. Написан уникальный многострочный прайс-лист (есть вариант для рассылки по факсу), прайс-лист поступивших новинок. В программу введены такие часто используемые в работе книжных предприятий операции как, например, книгообмен; можно сформировать и распечатать специфичный для этой операции документ "Договор мены".

Рис.1.2 Прайс-лист

книга автоматизированный информационный учет

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

Большое внимание в программе уделено работе с поставщиками и реализаторами. Книжную продукцию можно брать и выдавать на реализацию, делать возврат с реализации, частичную оплату за наличный или безналичный расчет, бартер, обмен, пересчет задолженности и другие формы взаиморасчетов. При оформлении операции выдачи или взятия на реализацию, можно указывать срок оплаты, то есть дату, по истечении которой накладная должна быть оплачена. Программа позволяет проводить операции по изменению долга, например, списали с реализатора весь или часть долга, увеличили его задолженность из-за просрочек с оплатой и т.п. Если Вы берете товары на реализацию и должны рассчитаться за них до определенного срока, то Вам помогут отчеты по просроченным документам. Если Вы берете товары на консигнацию и должны расплачиваться с поставщиком по мере их продажи, то Вам поможет отчет "Реализация товаров по поставщикам", в котором Вы можете увидеть, сколько и каких товаров по каждому поставщику продано за указанный период. Таким образом, оформляя в программе различные операции с контрагентами, Вы можете увидеть, какую выручку и какой доход принес каждый из них и какова рентабельность работы с ним.

Рис.1.3 Реализация товаров

В базовую поставку программы "КС:Книжный склад" включен модуль "Управление закупками/продажами". Он дает пользователям возможность оформлять в программе различные виды Договоров, в т.ч. Договора купли-продажи. В любой момент времени Вам будет доступна информация о том, какие товары/услуги, в каком количестве и на какую сумму Вам осталось получить или поставить по каждому Договору. Полноценное ведение Договоров позволит предприятию планировать исполнение своих обязательств таким образом, чтобы свести к минимуму различные издержки (например, расходы по хранению товара), составить план закупок в соответствии с заключенными Договорами.

Руководящему звену фирмы будет интересен модуль "Управленческий анализ". Цель этого модуля - дать пользователю возможность на основе анализа происшедших явлений выработать для себя рекомендации на будущее. Вы сможете проследить по дням, начиная с сегодня, какими темпами будете получать деньги с должников и как должны расплачиваться сами (с балансом на каждый день). Пользователю будут интересны отчеты по товарным запасам в днях, динамике изменения товарного запаса, динамике движения товара за период в суммовом выражении (с учетом, сколько денег приносит товар в единицу времени, и какова от него прибыль). Использование в программе информации по затратам, включаемым в себестоимость товара, поможет пользователю оценить рентабельность получения одного и того же товара от различных поставщиков, соотношение между выручкой от реализации товара, затратами и прибылью. Отчет по планируемым прибылям даст пользователю оперативную информацию о том, сколько ему должны отдать денег по отгруженным товарам, на какую сумму фирма выставила счета за предыдущий период, по которым еще ничего не отгружено и которые пока не оплачены и многое другое. Информацию можно просмотреть в виде графиков и диаграмм. Многие фирмы для реализации своих товаров используют услуги менеджеров. По результатам работы менеджеров фирма определяет оплату их труда. Программа позволяет автоматизировать и этот участок работы, причем не только в плане учета сдельной части оплаты менеджеров, но и для общего контроля над их работой, например, насколько интенсивно менеджер работает с потенциальными клиентами, выписавшими счет на оплату. Мощная система разграничения уровня доступа пользователей поможет руководству фирмы исключить случаи недобросовестной работы персонала.

Программа позволяет сформировать бухгалтерские проводки и построить все основные бухгалтерские отчеты. Можно перенести всю информацию (проводки и аналитические признаки) в специализированные бухгалтерские программы, например, "КС:Предприятие", "1С:Бухгалтерию", "Инфо-Бухгалтер", "Турбо Бухгалтер", "Парус", "Бэст", "Инфин" и другие.

ГЛАВА 2.ПРАКТИЧЕСКАЯ ЧАСТЬ. ПРОЕКТИРОВАНИЕ АИС КНИЖНЫЙ СКЛАД

2.1 Анализ предметной области

База данных - поименная совокупность структурированных данных, относящихся к определенной предметной области. Под предметной областью принято понимать часть реального мира, подлежащую изучению для организации управления и автоматизации (предприятия, организации). Анализ предметной области позволяет определить, какие данные содержатся в БД. Пользователями БД могут быть различные прикладные программы, программы-комплексы, а также специалисты предметной области, которые называются конечными пользователями.

Модель предметной области. Модель предметной области - это наши знания о предметной области. Знания могут быть как в виде неформальных знаний в мозгу эксперта, так и выражены формально при помощи каких-либо средств. В качестве таких средств могут выступать текстовые описания предметной области, наборы должностных инструкций, правила ведения дел в компании и т.п. Опыт показывает, что текстовый способ представления модели предметной области крайне неэффективен. Гораздо более информативными и полезными при разработке баз данных являются описания предметной области, выполненные при помощи специализированных графических нотаций. Имеется большое количество методик описания предметной области. Из наиболее известных можно назвать методику структурного анализа SADT и основанную на нем IDEF0, диаграммы потоков данных Гейна-Сарсона, методику объектно-ориентированного анализа UML, и др. Модель предметной области описывает скорее процессы, происходящие в предметной области и данные, используемые этими процессами. От того, насколько правильно смоделирована предметная область, зависит успех дальнейшей разработки приложений.

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

Каждая книга, хранящаяся в книжном складу имеет следующие параметры: название, автор, издание, год издания.

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

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

Разработать структуру базы данных для книжного склада. Эта база данных должна содержать следующую информацию:

1. данные о складах

· название склада

· адрес

· телефон

· ФИО директора

2. данные о книгах

· название книги

· автор

· издательство

· год выпуска

· тираж

· область знаний

· цена издательства

3. наличие на складе

· количество упаковок

· количество экземпляров в упаковке

4. информация о продажах

· дата продажи

· название книги

· автор

· отпускная цена за экземпляр

· количество экземпляров

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

· какие книги по конкретной тематике имеются на складе

· подготовить бланк заказа на приобретение конкретной книги

· сравнить отпускные цены по конкретной книге на различных складах

· какие книги конкретного автора имеются на складе

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

2.3ER-диаграмма

Рис.2.1ER-диаграмма книжного склада

2.4 Алгоритм программы

Алгоритм - заранее определенное, точное предписание, которое задает дискретный (пошаговый) процесс, начинающийся определенным образом и приводящий к результату за конечное число шагов. Каждый алгоритм должен обладать следующими свойствами:

- дискретность - каждый алгоритм должен быть разбит на конечное число законченных действий;

- результативность - каждый алгоритм направлен на решение конкретной задачи, а следовательно, на получение определенного результата;

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

Способы записи алгоритма:

1. Формальный - запись алгоритма словесно, на естественном языке.

2. Графический - изображение алгоритма в виде блок-схемы.

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

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

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

Главная форма программы. Содержит четыре вкладки меню: «Файл», «Таблицы», «Запросы», «Ввод данных».

Рис.2.2«Главная форма»

Вкладка «Файл» содержит только функцию «Выход».

Рис.2.3 Вкладка «Таблицы»

Вкладка «Таблицы» содержит пункты меню : «Склады», «Наличие», «Книги», «Продажи».

Меню «Склады» содержит таблицу складов организации и Содержит такие данные как: идентификатор, название склада,адрес склада,телефон склада и контактное лицо.

Рис.2.4 Меню «Склады»

Меню «Наличие» содержит таблицу, в которой записываются идентификаторы книг, их кол-во, наличие на складе.

Рис.2.5 Меню «Наличие»

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

Рис.2.6 Меню «Книги»

Меню «Продажи» содержит таблицу, в которой записываются дата продажи книги, цена, идентификатор и количество.

Рис.2.7 Меню «Продажи»

Вкладка «Запросы» содержит 5 подменю: « SQL», «Книги по тематике», «Отпускные цены», «Книги по автору» и «Выручка».

Рис.2.8 Вкладка «Запросы»

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

Рис.2.9 Меню «Запрос»

Меню «Отпускные цены» формирует отчет по ценам на книги.

Рис.2.10 Меню «Отпускные цены»

Форма «Книжные склады» служит для добавления новых складов организации.

Рис.2.11 Форма «Книжные склады»

Форма «Результаты» из меню «Наличие» служит для добавления новых книг на склады компании.

Рис.2.12 Форма «Результаты»

Форма «Книги» служит для добавления новых книг в каталог.

Рис.2.13 Форма «Книги»

Форма «Продажи» служит для добавления проданных книг со складов организации.

Рис.2.14 Форма «Продажи»

ЗАКЛЮЧЕНИЕ

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

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

ПРИЛОЖЕНИЕА

unit Main;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Menus, ExtCtrls, StdCtrls;

type

TForm_Main = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

SQL1: TMenuItem;

Button_Close: TButton;

Bevel1: TBevel;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

Label1: TLabel;

procedure N2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure SQL1Click(Sender: TObject);

procedureButton_CloseClick(Sender: TObject);

procedure N14Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure N17Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_Main: TForm_Main;

implementation

usesWarhouses, Presences, Books, Sales, In_Warhouse, In_Book, In_Presence,

In_Sale, SQL_Query, QKnowledge, QSale_Cost, QAuthor, QGain;

{$R *.DFM}

procedure TForm_Main.N2Click(Sender: TObject);

begin

Close;

end;

procedure TForm_Main.N4Click(Sender: TObject);

begin

Form_Warhouses.Show;

end;

procedure TForm_Main.N5Click(Sender: TObject);

begin

Form_Presences.Show;

end;

procedure TForm_Main.N6Click(Sender: TObject);

begin

Form_Books.Show;

end;

procedure TForm_Main.N7Click(Sender: TObject);

begin

Form_Sales.Show;

end;

procedure TForm_Main.N9Click(Sender: TObject);

begin

Form_In_Warhouse.Show;

end;

procedure TForm_Main.N11Click(Sender: TObject);

begin

Form_In_Book.Show;

end;

procedure TForm_Main.N10Click(Sender: TObject);

begin

Form_In_Presence.Show;

end;

procedure TForm_Main.N12Click(Sender: TObject);

begin

Form_In_Sale.Show;

end;

procedure TForm_Main.SQL1Click(Sender: TObject);

begin

Form_SQL_Query.Show;

end;

procedureTForm_Main.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedure TForm_Main.N14Click(Sender: TObject);

begin

Form_QKnowledge.Show;

end;

procedure TForm_Main.N15Click(Sender: TObject);

begin

Form_QSale_Cost.Show;

end;

procedure TForm_Main.N16Click(Sender: TObject);

begin

Form_QAuthor.Show;

end;

procedure TForm_Main.N17Click(Sender: TObject);

begin

Form_QGain.Show;

end;

end.

unit Presences;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;

type

TForm_Presences = class(TForm)

Table_Presences: TTable;

DataSource_Presences: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Button_Close: TButton;

procedureButton_CloseClick(Sender: TObject);

procedureTable_PresencesBeforeDelete(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_Presences: TForm_Presences;

implementation

{$R *.DFM}

procedureTForm_Presences.Button_CloseClick(Sender: TObject);

begin

Close;

end;

procedureTForm_Presences.Table_PresencesBeforeDelete(DataSet: TDataSet);

begin

ifMessageDlg('Текущая запись и все связанные с ней записи будут удалены.'

+#13+'Продолжить?',

mtConfirmation,[mbOK,mbCancel],0)=mrCancel then begin

Abort;

end;

end;

end.

unitQGain;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, DBGrids, Db, DBTables, DBCtrls, ComCtrls;

type

TForm_QGain = class(TForm)

Query1: TQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Button_Close: TButton;

Button_Execute: TButton;

DateTimePicker_Start: TDateTimePicker;

DateTimePicker_Last: TDateTimePicker;

Label1: TLabel;

Label2: TLabel;

procedureButton_CloseClick(Sender: TObject);

procedureButton_ExecuteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_QGain: TForm_QGain;

implementation

{$R *.DFM}

procedureTForm_QGain.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_QGain.Button_ExecuteClick(Sender: TObject);

begin

try

Query1.Active:=false;

Query1.ParamByName('first_date').AsDate:=DateTimePicker_Start.Date;

Query1.ParamByName('last_date').AsDate:=DateTimePicker_Last.Date;

Query1.Active:=true;

except

on error: EDatabaseError do begin

MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+

error.Message ,mtError,[mbOK],0);

end;

end;

end;

end.

unitQAuthor;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, DBGrids, Db, DBTables, DBCtrls;

type

TForm_QAuthor = class(TForm)

Query1: TQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Button_Close: TButton;

Button_Execute: TButton;

DBLookupComboBox1: TDBLookupComboBox;

Table_Books1: TTable;

DataSource_Books1: TDataSource;

Label1: TLabel;

procedureButton_CloseClick(Sender: TObject);

procedureButton_ExecuteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_QAuthor: TForm_QAuthor;

implementation

{$R *.DFM}

procedureTForm_QAuthor.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_QAuthor.Button_ExecuteClick(Sender: TObject);

begin

try

Query1.Active:=false;

Query1.ParamByName('author').AsString:=DBLookUpComboBox1.Text;

Query1.Active:=true;

except

on error: EDatabaseError do begin

MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+

error.Message ,mtError,[mbOK],0);

end;

end;

end;

end.

unitQKnowledge;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, DBGrids, Db, DBTables, DBCtrls;

type

TForm_QKnowledge = class(TForm)

Query1: TQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Button_Close: TButton;

Button_Execute: TButton;

DBLookupComboBox1: TDBLookupComboBox;

Table_Books1: TTable;

DataSource_Books1: TDataSource;

Label1: TLabel;

procedureButton_CloseClick(Sender: TObject);

procedureButton_ExecuteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_QKnowledge: TForm_QKnowledge;

implementation

{$R *.DFM}

procedureTForm_QKnowledge.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_QKnowledge.Button_ExecuteClick(Sender: TObject);

begin

try

//закрываетсязапрос

Query1.Active:=false;

//устанавливаетсяпараметр "Областьзнаний"

Query1.ParamByName('know').AsString:=DBLookUpComboBox1.Text;

//открывается запрос

Query1.Active:=true;

except

//в случае ошибки базы данных выводится сообщение об ошибке

on error: EDatabaseError do begin

MessageDlg('Привыполнениизапросапроизошлаошибка:'+#13+#13+

error.Message ,mtError,[mbOK],0);

end;

end;

end;

end

unitQSale_Cost;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, DBCtrls, DBTables, Db, Grids, DBGrids;

type

TForm_QSale_Cost = class(TForm)

DBGrid1: TDBGrid;

Query1: TQuery;

DataSource1: TDataSource;

Table_Books1: TTable;

DataSource_Books1: TDataSource;

DBLookupComboBox1: TDBLookupComboBox;

Button_Execute: TButton;

Button_Close: TButton;

Label1: TLabel;

procedureButton_CloseClick(Sender: TObject);

procedureButton_ExecuteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_QSale_Cost: TForm_QSale_Cost;

implementation

{$R *.DFM}

procedureTForm_QSale_Cost.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_QSale_Cost.Button_ExecuteClick(Sender: TObject);

begin

try

Query1.Active:=false;

Query1.Params[0].Value:=DBLookUpComboBox1.KeyValue;

Query1.Active:=true;

except

on error: EDatabaseError do begin

MessageDlg('При выполнении запроса произошла ошибка:'+#13+#13+

error.Message ,mtError,[mbOK],0);

end;

end;

end;

end.

unit Sales;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;

type

TForm_Sales = class(TForm)

Table_Sales: TTable;

DataSource_Sales: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Button_Close: TButton;

procedureButton_CloseClick(Sender: TObject);

procedureTable_SalesBeforeDelete(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_Sales: TForm_Sales;

implementation

{$R *.DFM}

procedureTForm_Sales.Button_CloseClick(Sender: TObject);

begin

Close;

end;

procedureTForm_Sales.Table_SalesBeforeDelete(DataSet: TDataSet);

begin

ifMessageDlg('Текущая запись и все связанные с ней записи будут удалены.'

+#13+'Продолжить?',

mtConfirmation,[mbOK,mbCancel],0)=mrCancel then begin

Abort;

end;

end;

end.

unitSQL_Query;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids, DBGrids, Db, DBTables;

type

TForm_SQL_Query = class(TForm)

Query1: TQuery;

DataSource1: TDataSource;

Button_Execute: TButton;

Button_Clear: TButton;

Button_Close: TButton;

GroupBox1: TGroupBox;

Memo1: TMemo;

GroupBox2: TGroupBox;

DBGrid1: TDBGrid;

Button_Save: TButton;

Button_Load: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

procedureButton_ExecuteClick(Sender: TObject);

procedureButton_ClearClick(Sender: TObject);

procedureButton_CloseClick(Sender: TObject);

procedureButton_LoadClick(Sender: TObject);

procedureButton_SaveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_SQL_Query: TForm_SQL_Query;

implementation

{$R *.DFM}

procedureTForm_SQL_Query.Button_ExecuteClick(Sender: TObject);

begin

//присваиваетсятекст SQL-запроса

Form_SQL_Query.Query1.SQL:=Form_SQL_Query.Memo1.Lines;

try

//закрываетсязапрос

Form_SQL_Query.Query1.Active:=false;

//открываетсязапрос

Form_SQL_Query.Query1.Active:=true;

except

//в случае ошибки базы данных выводится сообщение об ошибке

on error: EDatabaseError do begin

MessageDlg('Привыполнениизапросапроизошлаошибка:'+#13+#13+

error.Message ,mtError,[mbOK],0);

end;

end;

end;

procedureTForm_SQL_Query.Button_ClearClick(Sender: TObject);

begin

Form_SQL_Query.Memo1.Lines.Clear;

end;

procedureTForm_SQL_Query.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_SQL_Query.Button_LoadClick(Sender: TObject);

begin

if OpenDialog1.Execute then begin

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

end;

procedureTForm_SQL_Query.Button_SaveClick(Sender: TObject);

begin

if SaveDialog1.Execute then begin

Memo1.Lines.SaveToFile(ChangeFileExt(SaveDialog1.FileName,'.sql'));

end;

end;

end.

unitWarhouses;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;

type

TForm_Warhouses = class(TForm)

Table_Warhouses: TTable;

DataSource_Warhouses: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Button_Close: TButton;

Query_Delete: TQuery;

procedureButton_CloseClick(Sender: TObject);

procedureTable_WarhousesBeforeDelete(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_Warhouses: TForm_Warhouses;

implementation

uses Presences, Sales;

{$R *.DFM}

procedureTForm_Warhouses.Button_CloseClick(Sender: TObject);

begin

Close;

end;

procedureTForm_Warhouses.Table_WarhousesBeforeDelete(DataSet: TDataSet);

var

id: string;

begin

//подтверждение удаления записи

ifMessageDlg('Текущая запись и все связанные с ней записи будут удалены.'

+#13+'Продолжить?',

mtConfirmation,[mbOK,mbCancel],0)=mrCancel then begin

Abort;

end;

//закрытие запроса на удаление

Query_Delete.Close;

//получение ключа удаляемой записи

id:=Table_Warhouses.FieldByName('id').AsString;

//очищение SQL-запроса

Query_Delete.SQL.Clear;

//добавлениетекста SQL-запроса

Query_Delete.SQL.Add('DELETE FROM presences');

Query_Delete.SQL.Add('WHERE presences.id_warhouse='+id);

//выполнение запроса

Query_Delete.ExecSQL;

Query_Delete.SQL.Clear;

Query_Delete.SQL.Add('DELETE FROM sales');

Query_Delete.SQL.Add('WHERE sales.id_warhouse='+id);

Query_Delete.ExecSQL;

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

Form_Presences.Table_Presences.Close;

Form_Presences.Table_Presences.Open;

Form_Sales.Table_Sales.Close;

Form_Sales.Table_Sales.Open;

end;

end.

unit Books;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Db, DBTables;

type

TForm_Books = class(TForm)

Table_Books: TTable;

DataSource_Books: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Button_Close: TButton;

Query_Delete: TQuery;

procedureButton_CloseClick(Sender: TObject);

procedureTable_BooksBeforeDelete(DataSet: TDataSet);

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_Books: TForm_Books;

implementation

uses Presences, Sales;

{$R *.DFM}

procedureTForm_Books.Button_CloseClick(Sender: TObject);

begin

Close;

end;

procedureTForm_Books.Table_BooksBeforeDelete(DataSet: TDataSet);

var

id: string;

begin

ifMessageDlg('Текущая запись и все связанные с ней записи будут удалены.'

+#13+'Продолжить?',

mtConfirmation,[mbOK,mbCancel],0)=mrCancel then begin

Abort;

end;

Query_Delete.Close;

id:=Table_Books.FieldByName('id').AsString;

Query_Delete.SQL.Clear;

Query_Delete.SQL.Add('DELETE FROM presences');

Query_Delete.SQL.Add('WHERE presences.id_book='+id);

Query_Delete.ExecSQL;

Query_Delete.SQL.Clear;

Query_Delete.SQL.Add('DELETE FROM sales');

Query_Delete.SQL.Add('WHERE sales.id_book='+id);

Query_Delete.ExecSQL;

Form_Presences.Table_Presences.Close;

Form_Presences.Table_Presences.Open;

Form_Sales.Table_Sales.Close;

Form_Sales.Table_Sales.Open;

end;

procedureTForm_Books.FormCreate(Sender: TObject);

begin

end;

end.

unitIn_Book;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Db, DBTables, DBCtrls, ExtCtrls, ComCtrls;

type

TForm_In_Book = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button_Add: TButton;

Button_Close: TButton;

Label6: TLabel;

Label4: TLabel;

Bevel1: TBevel;

Edit_Author: TEdit;

Edit_Circuation: TEdit;

Edit_Year: TEdit;

Edit_Publisher: TEdit;

Edit_Name: TEdit;

Label5: TLabel;

Label7: TLabel;

Edit_Knowledge: TEdit;

Edit_Cost: TEdit;

procedureButton_CloseClick(Sender: TObject);

procedureButton_AddClick(Sender: TObject);

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_In_Book: TForm_In_Book;

implementation

uses Books;

{$R *.DFM}

procedurefill_result_data;

begin

withForm_In_Book do begin

Edit_Name.Text:='Name';

Edit_Author.Text:='Author';

Edit_Publisher.Text:='Publisher';

Edit_Year.Text:='1900';

Edit_Circuation.Text:='0';

Edit_Knowledge.Text:='Knowledge';

Edit_Cost.Text:='0';

end;

end;

procedureTForm_In_Book.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_In_Book.Button_AddClick(Sender: TObject);

begin

Form_Books.Table_Books.Last;

ry

Form_Books.Table_Books.AppendRecord([

Form_Books.Table_Books.FieldByName('id').AsInteger+1,

Edit_Name.Text,

Edit_Author.Text,

Edit_Publisher.Text,

StrToInt(Edit_Year.Text),

StrToInt(Edit_Circuation.Text),

Edit_Knowledge.Text,

StrToInt(Edit_Cost.Text)]);

except

MessageDlg('Вполяформывведенынедопустимыеданные',

mtError,[mbOK],0);

Exit;

end;

fill_result_data;

end;

procedureTForm_In_Book.FormCreate(Sender: TObject);

begin

fill_result_data;

end;

end.

unitIn_Presence;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Db, DBTables, DBCtrls, ExtCtrls, ComCtrls;

type

TForm_In_Presence = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button_Add: TButton;

Button_Close: TButton;

DBLookupComboBox_Warhouse: TDBLookupComboBox;

Label6: TLabel;

Table_Warhouses1: TTable;

DataSource_Warhouses1: TDataSource;

Table_Warhouses2: TTable;

DataSource_Warhouses2: TDataSource;

Label4: TLabel;

DBLookupComboBox_Book: TDBLookupComboBox;

Table_Books1: TTable;

DataSource_Books1: TDataSource;

Table_Books2: TTable;

DataSource_Books2: TDataSource;

Bevel1: TBevel;

Edit_Item_Amount: TEdit;

Edit_Pack_Amount: TEdit;

procedureButton_CloseClick(Sender: TObject);

procedureButton_AddClick(Sender: TObject);

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_In_Presence: TForm_In_Presence;

implementation

uses Presences;

{$R *.DFM}

procedurefill_result_data;

begin

withForm_In_Presence do begin

Edit_Pack_Amount.Text:='0';

Edit_Item_Amount.Text:='0';

end;

end;

procedureTForm_In_Presence.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_In_Presence.Button_AddClick(Sender: TObject);

begin

Form_Presences.Table_Presences.Last;

try

Form_Presences.Table_Presences.AppendRecord([

Form_Presences.Table_Presences.FieldByName('id').AsInteger+1,

Edit_Pack_Amount.Text,

Edit_Item_Amount.Text,

DBLookUpComboBox_Warhouse.Field.Value,

DBLookUpComboBox_Book.Field.Value]);

except

MessageDlg('В поля формы введены недопустимые данные',

mtError,[mbOK],0);

Exit;

end;

fill_result_data;

end;

procedureTForm_In_Presence.FormCreate(Sender: TObject);

begin

fill_result_data;

end;

end.

unitIn_Sale;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Db, DBTables, DBCtrls, ExtCtrls, ComCtrls;

type

TForm_In_Sale = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button_Add: TButton;

Button_Close: TButton;

DBLookupComboBox_Warhouse: TDBLookupComboBox;

Label6: TLabel;

Table_Warhouse1: TTable;

DataSource_Warhouse1: TDataSource;

Table_Warhouse2: TTable;

DataSource_Warhouse2: TDataSource;

Label4: TLabel;

DBLookupComboBox_Book: TDBLookupComboBox;

Table_Book1: TTable;

DataSource_Book1: TDataSource;

Table_Book2: TTable;

DataSource_Book2: TDataSource;

Bevel1: TBevel;

Edit_Cost: TEdit;

Edit_Amount: TEdit;

Edit_Date: TEdit;

procedureButton_CloseClick(Sender: TObject);

procedureButton_AddClick(Sender: TObject);

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_In_Sale: TForm_In_Sale;

implementation

uses Sales;

{$R *.DFM}

procedurefill_result_data;

begin

withForm_In_Sale do begin

Edit_Date.Text:='01.01.01';

Edit_Cost.Text:='0';

Edit_Amount.Text:='0';

end;

end;

procedureTForm_In_Sale.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_In_Sale.Button_AddClick(Sender: TObject);

begin

Form_Sales.Table_Sales.Last;

try

Form_Sales.Table_Sales.AppendRecord([

Form_Sales.Table_Sales.FieldByName('id').AsInteger+1,

StrToDate(Edit_Date.Text),

StrToInt(Edit_Cost.Text),

StrToInt(Edit_Amount.Text),

DBLookUpComboBox_Warhouse.Field.Value,

DBLookUpComboBox_Book.Field.Value]);

except

MessageDlg('Вполяформывведенынедопустимыеданные',

mtError,[mbOK],0);

Exit;

end;

fill_result_data;

end;

procedureTForm_In_Sale.FormCreate(Sender: TObject);

begin

fill_result_data;

end;

end.

unitIn_Warhouse;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Db, DBTables, DBCtrls, ExtCtrls, ComCtrls;

type

TForm_In_Warhouse = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button_Add: TButton;

Button_Close: TButton;

Label6: TLabel;

Bevel1: TBevel;

Edit_Address: TEdit;

Edit_Name: TEdit;

Edit_Phone: TEdit;

Edit_Manager: TEdit;

procedureButton_CloseClick(Sender: TObject);

procedureButton_AddClick(Sender: TObject);

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form_In_Warhouse: TForm_In_Warhouse;

implementation

usesWarhouses;

{$R *.DFM}

procedurefill_result_data;

begin

withForm_In_Warhouse do begin

Edit_Name.Text:='Name';

Edit_Address.Text:='Address';

Edit_Phone.Text:='000-00-00';

Edit_Manager.Text:='Manager';

end;

end;

procedureTForm_In_Warhouse.Button_CloseClick(Sender: TObject);

begin

close;

end;

procedureTForm_In_Warhouse.Button_AddClick(Sender: TObject);

begin

Form_Warhouses.Table_Warhouses.Last;

try

Form_Warhouses.Table_Warhouses.AppendRecord([

Form_Warhouses.Table_Warhouses.FieldByName('id').AsInteger+1,

Edit_Name.Text,

Edit_Address.Text,

Edit_Phone.Text,

Edit_Manager.Text]);

except

MessageDlg('В поля формы введены недопустимые данные',

mtError,[mbOK],0);

Exit;

end;

fill_result_data;

end;

procedureTForm_In_Warhouse.FormCreate(Sender: TObject);

begin

fill_result_data;

end;

end.

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


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

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