Базы данных

 

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА

СМОЛЕНСКИЙ ФИЛИАЛ

ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ»








Базы данных

КУРСОВАЯ РАБОТА













г.


Введение


В современном мире деятельность организации не представляется без использования баз данных.

Любые данные, хранящиеся в запоминающих устройствах, структурированные таким образом, чтобы их могли использовать различные программы, получили название база данных. Средства создания и управления этими данными получили название систем управления базами данных (СУБД).

Данными в базе данных могут быть числовые величины, строки.

Мы рассмотрим использование базы данных в колледже при проведении инвентаризации оборудования. Предполагается, что приход каждого оборудования фиксируется документально. После оприходования оборудование нужно передать в определённый кабинет колледжа. Каждый кабинет имеет своё ответственное лицо. Оборудование так же можно списывать по мере необходимости. При проведении инвентаризации фиксируется фактическое количество оборудования (которое, не списано).

АРМ Инвентаризация должно позволять фиксировать приход оборудования, перемещение оборудования, списание и подсчитывать остатки фактические и плановые на заданную дату актуальности.

1.Теоретические основы систем баз данных


.1 Основные определения теории БД


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

иерархическая,

сетевая,

реляционная,

объектно-ориентированная,

объектно-реляционная.

Объекно-ориентированную и объектно-реляционную модели часто называют постреляционными моделями данных.

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

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

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

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

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

Самое широкое применение нашли реляционные модели данных.

В реляционной модели рассматриваются три аспекта данных - структура данных, целостность данных и обработка данных.

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

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

Каждый столбец таблицы имеет имя, которое обычно записывается в верхней части таблицы. Оно должно быть уникальным в таблице, однако различные таблицы могут иметь столбцы с одинаковыми именами. Любая таблица должна иметь, по крайней мере, один столбец. Порядок следования столбцов в таблице определяется порядком следования их имен при ее создании. В отличие от столбцов, строки не имеют имен; порядок их следования в таблице не определен, а количество логически не ограничено.

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

Существует три разновидности связей между таблицами базы данных:

? «один-ко-многим»,

? «один-к-одному»,

? «многие-ко-многим».

Отношение «один-ко-многим» имеет место, когда одной записи родительской таблицы может соответствовать несколько записей в дочерней таблице.

Связь "один-ко-многим" является самой распространенной для реляционных баз данных.

Отношение «один-к-одному» имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.

Отношение «многие-ко-многим» имеет место, когда:

а) записи в родительской таблице может соответствовать больше одной записи в дочерней таблице;

б) записи в дочерней таблице может соответствовать больше одной записи в родительской таблице.


1.2Основные определения теории БД


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

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

Логическая организация представляет собой модель структуры всей совокупности данных (ориентирована на человека). По сути, это способ объединения данных в записи, это «взгляд» на данные с точки зрения их использования в прикладных программах. Логическая организация БД - это представление пользователя о той предметной области, информация о которой должна хранится в базе данных. Результатом логического проектирования является концептуальная схема БД (это логическая модель предметной области). Эта модель отражает три вида информации: сведения об объектах предметной области, сведения о свойствах объектов, сведения об отношениях между объектами. Такая модель не зависит от: физической среды (типа ЭВМ), операционной системы, СУБД.

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


1.3Распределённые БД


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

) простота использования системы;

) возможности автономного функционирования при нарушениях связности сети или при административных потребностях;

) высокая степень эффективности.

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

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

Подобная архитектура использовалась в первых версиях СУБД DB2, Oracle, Ingres.

Использование архитектуры «клиент-сервер» предполагает наличие некоторого количества компьютеров, объединенных в сеть, один из которых выполняет особые управляющие функции (является сервером сети). Так, архитектура «клиент-сервер» разделяет функции приложения пользователя (называемого клиентом) и сервера. Приложение-клиент формирует запрос к серверу, на котором расположена БД, на структурном языке запросов SQL (Structured Query Languague), являющемся промышленным стандартом в мире реляционных БД. Удаленный сервер принимает запрос и переадресует его SQL-серверу БД. В результате работа построена следующим образом: база данных в виде набора файлов находится на жестком диске специально выделенного компьютера (сервера сети), СУБД располагается также на сервере сети, существует локальная сеть, состоящая из клиентских компьютеров, на каждом из которых установлено клиентское приложение для работы с БД. На каждом из клиентских компьютеров пользователи имеют возможность запустить приложение. Используя предоставляемый приложением пользовательский интерфейс, он инициирует обращение к СУБД, расположенной на сервере, для запроса к информации. Для общения используется специальный язык запросов SQL, т.е. по сети от клиента к серверу передается лишь текст запроса.

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

Приложение, используя пользовательский интерфейс, отображает результат выполнения запросов.

В архитектуре «клиент-сервер» используются так называемые «удаленные» СУБД.

К разряду промышленных СУБД принадлежат Oracle, Gupta, Informix, Sybase, MS SQL Server, DB2, InterBase и ряд других

По сравнению с архитектурой «файл-сервер» можно выделить следующие преимущества:

существенное уменьшение сетевого трафика;

уменьшение сложности клиентских приложений (большая часть нагрузки ложится на серверную часть);

повышение целостности и безопасности БД.

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


.4 Современные Базы данных


Современные СУБД можно разделить на следующие группы:

-Устаревшие: Paradox, Clarion.

-dBase-подобные: dBase, FoxBASE, Fox-plus, Clipper

-Локальные: Access

-SQL серверы: Ms SQL Server, Oracle, InterBase/Firebird/Yaffil, IBM DB2, MySQL, также Informix, Btrieve, Sybase

Группа реляционных СУБД представлена на рынке программных продуктов очень широко. Это, например, такие системы, как Paradox, R:base, Clarion, однако доминирующее положение занимает семейство так называемых dBASE-подобных СУБД, родоначальником которого является СУБД dBASEII, предложенная фирмой Ashton-Tate в начале 80-ых годов. В настоящее время широко распространено новое поколение популярных пакетов: dBASEIV, FoxPro и Clipper-5.

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

В настоящее время скорость работы таких программ не уступает скорости программ, сгенерированных компилятором. Бесспорным преимуществом интерпретаторов для программиста является удобство в разработке и отладке программных продуктов, а также при освоении языка. Из вышеперечисленных СУБД dBASE и FoxProявляются интерпретаторами, а Clipper - компилятором.

СУБД FoxPro(фирмы Fox Software)обладает исключительно высокими скоростными характеристиками и в этом отношении заметно выделяется среди других интерпретирующих систем. Сравнительно с dBASEIY ее скорость в несколько раз выше и не уступает скорости систем-компиляторов. Практически по всем показателям Fox-программыработают значительно быстрее Clipper-программ.

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

СУБД Access использует процессор БД, объекты доступа к данным и конструктор форм (средства быстрого построения интерфейса). Чтобы быстро получать распечатки, используются конструкторы отчетов. Когда не хватает визуальных средств можно создавать процедуры и функции.

В Access присутствует язык VisualBasic, позволяющий создавать массивы, свои типы данных. С помощью оле-технологий позволяет контролировать работу приложений. Работа с базой в Access осуществляется через окно контейнера БД. Также встроен язык SQL.

В Access поддерживается два способа создания БД (БД - совокупность взаимосвязанных таблиц):

имеется возможность создать пустую БД, а потом добавить в нее формы, отчеты и др.объекты (такой способ наиболее гибкий, требует отдельного определения каждогоэлемента БД);

имеется возможность сразу создать БД определенного типа с помощью мастера сразу со всеми таблицами, формами.

SQL Server 2000 -семейство продуктов, разработанных для хранения данных в больших системах, осуществляющих обработку информации, и обслуживания коммерческих Web-узлов. SQLServer 2000 прост и удобен в использовании, он широко применяется как в сложных системах, с которыми работают сотни пользователей, так и в малом бизнесе. Он популярен также у отдельных пользователей, которым нужен надежный и удобный сервер БД. В состав SQL Server2000 входят две основные службы, предназначенные для новой платформы Microsoft .NET и систем с традиционной двухуровневой клиент-серверной архитектурой. Первая служба, SQL Server- это высокопроизводительное реляционное ядро БД, обеспечивающее прекрасную масштабируемость систем, созданных на его основе. Вторая -SQL Server 2000 Analysis Services - предоставляет множество средств анализа данных, которые размещаются в специальных хранилищах и киосках данных и используются системами принятия решений.

Сервер Oracle позволяет хранить очень большие объемы информации и предоставляет пользователямбыстрый доступ к этим данным.отличается от SQLсервер тем, что поддерживает продвинутые аппаратные конфигурации (1000 процессоров). SQL сервер не поддерживает сложныеконфигурации.

Помимо ОС пользователи могут поставить отдельные программы дополнительно: средства работы с видео данными, WWW-сервер, средства поддержки систем масштаба предприятия, средства обработки пространственных данных, имеет систему контекст, средства оперативно-аналитической обработки данных (DLAP).

Сервер БД Oracle часто называют ядром БД Oracle. Процедурные компоненты сервера обеспечивают обработку запросов на языке PL/SQL и поддерживают хранимые процедуры, триггеры БД, пакеты хранимых процедур и функций. Средства распределенной обработки (дают возможность пользователю работать с информацией, находящейся в удаленных базах);

Средства параллельной обработки запросов(позволяют выполнять один запрос между несколько одновременно работающими серверными процессами);

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



.5 Элементы приложения информационных систем


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


Рис. 1.1. Многозвенная архитектура приложений БД


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

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

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

Сервер БД выполняет полученные запросы и отправляет результаты серверу приложений, который адресует данные клиентам.

Таким образом, многозвенное приложение БД состоит из (рис. 1.1):

·"тонких" клиентских приложений, обеспечивающих лишь передачу, представление, редактирование и простейшую обработку данных;

·одного или нескольких звеньев ПО промежуточного слоя (сервер приложений), которые могут функционировать как на одном компьютере, так и распределенно - в локальной сети;

·сервера БД (Oralce, Sybase, MS SQL, InterBase и т. д.), поддерживающего функционирование базы данных и обрабатывающего запросы.

Более простая трехзвенная модель содержит следующие элементы:

·"тонкие" клиенты;

·сервер приложений;

·сервер БД.

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

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

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


2.Практическая часть


2.1Информационно-логическая модель

база данные запрос информационный

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

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

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

И из описания предметной области можно выделим следующие объекты:

-Тип оборудования

-Оборудование

-Подразделение

-Приход оборудования

-Перемещение оборудования

-Списание оборудования

-Инвентаризация

Определим связи между сущностями:

Установим связи между объектами и определим структуру данных.

Структура БД

Определим таблицы нашей базы данных:

Теблица S_ type - хранит данные о типах оборудования;

Таблица s_oborud - хранит данные об оборудовании;

Таблица prihod - хранит данные о поступлениях оборудования;

Таблица rashod- хранит данные о перемещения оборудования;

Таблица spisanie - хранит данные о списании оборудования;

Таблица invent - хранит данные о проводимых инвентаризациях;

Таблица users - хранит данные о пользователях;

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

Используя клиент PL/SQl developer с помощью следующего скрипта создадим перечисленные таблицы:

spool rz.logCreating table S_TYPE=====================table INVENT.S_TYPE

(_TYPE NUMBER not null,

NAME_TYPE VARCHAR2(40)

)USERS101255

(64K1M1unlimited

);table INVENT.S_TYPEconstraint S_TYPE_PK1 primary key (ID_TYPE)index USERS102255

(64K1M1unlimited

);Creating table S_OBORUD=======================table INVENT.S_OBORUD

(_OBORUD NUMBER not null,VARCHAR2(40),_TYPE NUMBER

)USERS101255

(64K1M1unlimited

);table INVENT.S_OBORUDconstraint S_OBORUD_PK1 primary key (ID_OBORUD)index USERS102255

(64K1M1unlimited

);table INVENT.S_OBORUDconstraint S_OBORUD_FK1 foreign key (ID_TYPE)INVENT.S_TYPE (ID_TYPE);Creating table INVENT=====================table INVENT.INVENT

(_INVENT NUMBER not null,_INVENT DATE,_OBORUD NUMBER,_F NUMBER,VARCHAR2(40)

)USERS101255

(64K1M1unlimited

);table INVENT.INVENTconstraint INVENT_PK1 primary key (ID_INVENT)index USERS102255

(64K1M1unlimited

);table INVENT.INVENTconstraint INVENT_FK1 foreign key (ID_OBORUD)INVENT.S_OBORUD (ID_OBORUD);Creating table PRIHOD=====================table INVENT.PRIHOD

(_PRIHOD NUMBER not null,_P DATE,_NAKL NUMBER,NUMBER,_OBORUD NUMBER

)USERS101255

(64K1M1unlimited

);table INVENT.PRIHODconstraint PRIHOD_PK1 primary key (ID_PRIHOD)index USERS102255

(64K1M1unlimited

);table INVENT.PRIHODconstraint PRIHOD_FK1 foreign key (ID_OBORUD)INVENT.S_OBORUD (ID_OBORUD);Creating table S_KABINET========================table INVENT.S_KABINET

(_KABINET NUMBER not null,VARCHAR2(40),VARCHAR2(40)

)USERS101255

(64K1M1unlimited

);table INVENT.S_KABINETconstraint S_KABINET_PK1 primary key (ID_KABINET)index USERS102255

(64K1M1unlimited

);Creating table RASHOD=====================table INVENT.RASHOD

(_RASHOD NUMBER not null,_PRIHOD NUMBER,_R DATE,_KABINET NUMBER

)USERS101255

(64K1M1unlimited

);table INVENT.RASHODconstraint RASHOD_PK1 primary key (ID_RASHOD)index USERS102255

(64K1M1unlimited

);table INVENT.RASHODconstraint RASHOD_FK1 foreign key (ID_PRIHOD)INVENT.PRIHOD (ID_PRIHOD);table INVENT.RASHODconstraint RASHOD_FK2 foreign key (ID_KABINET)INVENT.S_KABINET (ID_KABINET);Creating table SPISANIE=======================table INVENT.SPISANIE

(_SPISANIE NUMBER not null,_PRIHOD NUMBER,_SP DATE,VARCHAR2(40)

)USERS101255

(64K1M1unlimited

);table INVENT.SPISANIEconstraint SPISANIE_PK1 primary key (ID_SPISANIE)index USERS102255

(64K1M1unlimited

);table INVENT.SPISANIEconstraint SPISANIE_FK1 foreign key (ID_PRIHOD)INVENT.PRIHOD (ID_PRIHOD);Creating table USERS====================table INVENT.USERS

(_USER NUMBER not null,VARCHAR2(10),VARCHAR2(40),VARCHAR2(10)

)USERS101255

(64K1M1unlimited

);table INVENT.USERSconstraint USERS_PK1 primary key (ID_USER)index USERS102255

(64K1M1unlimited

);Creating table USERS_LEVEL==========================table INVENT.USERS_LEVEL

(_USER NUMBER,NUMBER(1),NUMBER(1)

)USERS101255

(64K1M1unlimited

);table INVENT.USERS_LEVELconstraint USERS_LEVEL_PK1 foreign key (ID_USER)INVENT.USERS (ID_USER); off

Заполним таблицв данными, используя следующий скрипт:

prompt Loading S_TYPE...into S_TYPE (ID_TYPE, NAME_TYPE)(1, 'компьютеры');into S_TYPE (ID_TYPE, NAME_TYPE)(2, 'ноутбуки');into S_TYPE (ID_TYPE, NAME_TYPE)(3, 'оргтехника');;3 records loadedLoading S_OBORUD...into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(1, 'Компьютер с монитором', 1);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(2, 'НОутбук Acer', 2);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(3, 'Принтер Laser Jet', 3);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(4, 'Компьютер Lenova', 1);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(5, 'Ноутбук HP Laser Jet', 2);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(6, 'Компьютер ASUS', 1);into S_OBORUD (ID_OBORUD, OBORUD, ID_TYPE)(7, 'Компьютер ', 1);;7 records loadedLoading INVENT...into INVENT (ID_INVENT, DATE_INVENT, ID_OBORUD, KOL_F, FIO)(1, to_date('11-02-2015', 'dd-mm-yyyy'), 2, 12, 'Иванова');;1 records loadedLoading PRIHOD...into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(1, to_date('05-02-2015', 'dd-mm-yyyy'), 125, 15000, 1);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(2, to_date('05-02-2015', 'dd-mm-yyyy'), 456, 25000, 2);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(3, to_date('05-02-2015', 'dd-mm-yyyy'), 48731, 15000, 3);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(4, to_date('05-02-2015', 'dd-mm-yyyy'), 1121, 18000, 4);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(5, to_date('05-02-2015', 'dd-mm-yyyy'), 233, 15000, 5);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(6, to_date('05-02-2015', 'dd-mm-yyyy'), 125, 15000, 6);into PRIHOD (ID_PRIHOD, DATE_P, NOM_NAKL, PRICE, ID_OBORUD)(7, to_date('05-02-2015', 'dd-mm-yyyy'), 125, 15000, 7);;7 records loadedLoading S_KABINET...into S_KABINET (ID_KABINET, KABINET, MOL)(1, 'Кабинет информатики', 'Иванова Анна');into S_KABINET (ID_KABINET, KABINET, MOL)(2, 'Учебный класс 1', 'Петров А.В.');into S_KABINET (ID_KABINET, KABINET, MOL)(3, 'Учебный класс 2', 'Шульгин Ш.А.');into S_KABINET (ID_KABINET, KABINET, MOL) (4, 'Склад', 'Сидоров А.П,');

commit;4 records loadedLoading RASHOD...into RASHOD (ID_RASHOD, ID_PRIHOD, DATE_R, ID_KABINET)(3, 4, to_date('18-02-2015', 'dd-mm-yyyy'), 3);into RASHOD (ID_RASHOD, ID_PRIHOD, DATE_R, ID_KABINET)(1, 2, to_date('01-02-2015', 'dd-mm-yyyy'), 1);into RASHOD (ID_RASHOD, ID_PRIHOD, DATE_R, ID_KABINET)(2, 3, to_date('19-02-2015', 'dd-mm-yyyy'), 4);into RASHOD (ID_RASHOD, ID_PRIHOD, DATE_R, ID_KABINET)(5, null, null, null);into RASHOD (ID_RASHOD, ID_PRIHOD, DATE_R, ID_KABINET)(4, 7, to_date('04-02-2015', 'dd-mm-yyyy'), 1);;5 records loadedLoading SPISANIE...into SPISANIE (ID_SPISANIE, ID_PRIHOD, DATE_SP, PRIM)(0, 5, to_date('20-02-2015', 'dd-mm-yyyy'), null);into SPISANIE (ID_SPISANIE, ID_PRIHOD, DATE_SP, PRIM)(1, 4, to_date('20-02-2015', 'dd-mm-yyyy'), null);into SPISANIE (ID_SPISANIE, ID_PRIHOD, DATE_SP, PRIM)(2, null, null, null);into SPISANIE (ID_SPISANIE, ID_PRIHOD, DATE_SP, PRIM)(3, null, null, null);;4 records loadedLoading USERS...into USERS (ID_USER, LOGIN, FIO, PASS)(1, 'admin', 'Администратор', '0');into USERS (ID_USER, LOGIN, FIO, PASS)(2, 'master', 'Мастер', '1');into USERS (ID_USER, LOGIN, FIO, PASS)(3, 'nach', 'Начальник', '2');;3 records loadedLoading USERS_LEVEL...into USERS_LEVEL (ID_USER, SPRAV, REP)(1, 1, 1);into USERS_LEVEL (ID_USER, SPRAV, REP)(2, 1, null);into USERS_LEVEL (ID_USER, SPRAV, REP)(3, 1, 1);;3 records loadedEnabling foreign key constraints for S_OBORUD...table S_OBORUD enable constraint S_OBORUD_FK1;Enabling foreign key constraints for INVENT...table INVENT enable constraint INVENT_FK1;Enabling foreign key constraints for PRIHOD...table PRIHOD enable constraint PRIHOD_FK1;Enabling foreign key constraints for RASHOD...table RASHOD enable constraint RASHOD_FK1;table RASHOD enable constraint RASHOD_FK2;Enabling foreign key constraints for SPISANIE...table SPISANIE enable constraint SPISANIE_FK1;Enabling foreign key constraints for USERS_LEVEL...table USERS_LEVEL enable constraint USERS_LEVEL_PK1;feedback ondefine onDone.


2.2 Интерфейс


Представим элементы интерфейса нашего приложения.

Структура меню определяется удобством работы с огромным объёмом информации. Поэтому мы сгруппируем меню следующем образом:

-Справочники

- списки типов оборудования;

- списки оборудования;

- кабинеты;

-Документы

- Приход

Расход

Списание

Инвентаризация;

Отчёты

остатки на складе

Остатки по подразделениям

итоги инвентаризации

Управление

Пользователь

Доступ

Управление

Выход

Программа имеет интуитивно-понятный интерфейс, элементы которого представлены ниже.


Рис. 2.2. Окно авторизации



Рис. 2.3. Главная форма


Рис. 2.4. Справочники


Рис. 2.5. Приход


Рис. 2.6. Перемещение


Рис. 2.7. Списание


Рис. 2.8. Инвентаризация


Рис. 2.9. Отчёты


Рис. 2.9. Модуль управления (Пользователи)



Рис. 2.10. Модуль управления (Доступ)


Рис. 2.11. Списание оборудования



Рис. 2.12. Перемещение оборудования


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

)Остатки на складе* from invent.prihod t where id_prihod not in (select id_prihod from invent.rashod where date_r<=:d) and t.date_p<=:d and id_prihod not in (select id_prihod from invent.spisanie where date_sp<=:d)

2)Остатки по подразделениям* from invent.rashod t where t.date_r<=:d and id_prihod not in (select id_prihod from invent.spisanie where date_sp<=:d)

3)Итоги инвентаризации

select plan.oborud, nvl(kol_p,0) as kol_p, nvl(kol_f, 0) as kol_f, nvl(kol_p,0)-nvl(kol_f,0) as it from (select oborud, count(*) as kol_p from invent.prihod t left join invent.s_oborud f on f.id_oborud=t.id_oborud where.date_p<=:d and id_prihod not in (select id_prihod from invent.spisanie where date_sp<=:d) group by oborud

) plan left join (select oborud, kol_f from invent.invent t left join invent.s_oborud f on f.id_oborud=t.id_oborud where t.date_invent=:d

) fact on fact.oborud=plan.oborud

Листинг программы представлен в приложении 1.


Заключение


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

. Экономит время;

. Проста при эксплуатации;

. Уменьшает физическую нагрузку.

Формы позволяют пользователям вводить данные в таблицы базы данных без непосредственного доступа к самим таблицам. Позволяют выводить результаты работы запросов не в виде скупых результирующих таблиц, а в виде красиво оформленных форм. В окне базы данных можно работать со всеми её объектами. Для просмотра объектов определённого типа следует выбрать соответствующую вкладку. С помощью кнопок можно открывать и изменять существующие объекты и создавать новые.

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



Приложение 1


Листинг программыfrm_main;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Menus;= class(TForm): TMainMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;FormShow(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);Cghfdjxybrb1Click(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender: TObject);N5Click(Sender: TObject);N4Click(Sender: TObject);FormCreate(Sender: TObject);N7Click(Sender: TObject);N6Click(Sender: TObject);N8Click(Sender: TObject);

{ Private declarations }

{ Public declarations }, host, comp:string;;: Tfrmmain;frmlogin, dmora, Unit5, Unit4, frmsprav, Unit2, Unit3, frm_rep, Unit6,;

{$R *.dfm}Tfrmmain.FormShow(Sender: TObject);_login.Showmodal;.Caption:= frmmain.Caption+' ';dm.quserid_user.Value=3 then.Visible:=True;;;Tfrmmain.FormClose(Sender: TObject; var Action: TCloseAction);MessageDlg('Çàêðûòü ïðèëîæåíèå ?', mtConfirmation,

[mbYes, mbNo], 0) = mrYes then.Free;:= caFree:= caNone;;Tfrmmain.Cghfdjxybrb1Click(Sender: TObject);not assigned (frm_sprav) then_sprav:=tfrm_sprav.Create(application)frm_sprav.Show;;Tfrmmain.N2Click(Sender: TObject);not assigned (prihod) then:=tprihod.Create(application)prihod.Show;;Tfrmmain.N3Click(Sender: TObject);not assigned (rashod) then:=trashod.Create(application)rashod.Show;;Tfrmmain.N5Click(Sender: TObject);not assigned (spis) then:=tspis.Create(application)spis.Show;;Tfrmmain.N4Click(Sender: TObject);not assigned (inv) then:=tinv.Create(application)inv.Show;;Tfrmmain.FormCreate(Sender: TObject);f1:textfile;, idcomp:integer;:= wsMaximized;(F1, ExtractFilePath(Application.ExeName)+'\host.txt');(F1);i:=0 to 0 do(F1, ip);i:=2 to 2 do(F1, comp);.WindowState := wsMaximized;

// dm := dm.Create(Application);dm do.ConnectString := ip;.Options.Net := true;.Connect;.Users.Active:=true;.qUser.Active:=true;.s_type.Active:=true;.s_kabinet.Active:=true;.prihod.Active:=true;.rashod.Active:=true;.spis.Active:=True;.Qprihod_for_spis.Active:=True;.qprihod.Active:=true;.invent.Active:=True;;;Tfrmmain.N7Click(Sender: TObject);not assigned (form8) then:=tform8.Create(application)form8.Show;;Tfrmmain.N6Click(Sender: TObject);not assigned (zapr) then:=tzapr.Create(application)zapr.Show;;Tfrmmain.N8Click(Sender: TObject);;;.Unit8;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, cxStyles, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinCaramel,, dxSkinDarkSide, dxSkinGlassOceans, dxSkiniMaginary,, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,, dxSkinOffice2007Black, dxSkinOffice2007Blue,Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver,, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,, dxSkinsDefaultPainters, dxSkinValentine,Blue, dxSkinscxPCPainter, cxCustomData, cxGraphics,, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxMaskEdit,, cxGridLevel, cxGridCustomTableView, cxGridTableView,, cxClasses, cxControls, cxGridCustomView, cxGrid,;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TcxGrid;: TcxGridDBTableView;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridLevel;: TcxGrid;: TcxGridDBTableView;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridLevel;

{ Private declarations }

{ Public declarations };: TForm8;

{$R *.dfm}.Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, cxGraphics, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinCaramel,, dxSkinDarkSide, dxSkinGlassOceans, dxSkiniMaginary,, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,, dxSkinOffice2007Black, dxSkinOffice2007Blue,Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver,, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,, dxSkinsDefaultPainters, dxSkinValentine,Blue, cxDBEdit, cxLabel, cxDropDownEdit, cxCalendar,, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxLookupEdit,, cxDBLookupComboBox, Menus, cxLookAndFeelPainters,, cxButtons;= class(TForm): TcxDBLookupComboBox;: TcxDBDateEdit;: TcxDBLookupComboBox;: TcxLabel;: TcxLabel;: TcxLabel;: TcxDBTextEdit;: TcxLabel;: TcxButton;: TcxButton;cxButton1Click(Sender: TObject);cxButton2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tins;dmora;

{$R *.dfm}Tins.cxButton1Click(Sender: TObject);.rashod.cancel;;;Tins.cxButton2Click(Sender: TObject);.rashod.post;;;.frmlogin;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, sButton, sEdit, DBCtrls, sDBLookupComboBox;_login = class(TForm): TsDBLookupComboBox;: TLabel;: TLabel;: TsEdit;: TsButton;: TsButton;sButton1Click(Sender: TObject);sButton2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };_login: Tfrm_login;dmora;

{$R *.dfm}Tfrm_login.sButton1Click(Sender: TObject);.QUser.Active:=false;.QUser.Params.parambyname('us').value:=edit1.Text;.QUser.Active:=true;(dm.QUser.RecordCount>0) and (edit2.Text=dm.QUserpass.Value) then_login.Close.Text:='';

showmessage('Íåâåðíî ââåëè ëîãèí/ïàðîëü!');

end;;Tfrm_login.sButton2Click(Sender: TObject);.Terminate;;.Unit6;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, cxStyles, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinCaramel,, dxSkinDarkSide, dxSkinGlassOceans, dxSkiniMaginary,, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,, dxSkinOffice2007Black, dxSkinOffice2007Blue,Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver,, dxSkinSilver, dxSkinSpringTime, dxSkinStardust,, dxSkinsDefaultPainters, dxSkinValentine,Blue, dxSkinscxPCPainter, cxCustomData, cxGraphics,, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxMaskEdit, Menus,, StdCtrls, cxButtons, cxLabel, cxContainer,, cxDropDownEdit, cxCalendar, cxGridLevel,, cxGridTableView, cxGridDBTableView, cxClasses,, cxGridCustomView, cxGrid, ComCtrls, ExtCtrls;= class(TForm): TPanel;: TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TcxDateEdit;: TcxLabel;: TcxButton;: TcxGrid;: TcxGridDBTableView;: TcxGridDBColumn;: TcxGridDBColumn;Column1: TcxGridDBColumn;Column2: TcxGridDBColumn;Column3: TcxGridDBColumn;Column4: TcxGridDBColumn;Column5: TcxGridDBColumn;: TcxGridLevel;: TcxGrid;: TcxGridDBTableView;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridLevel;: TcxGrid;: TcxGridDBTableView;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridDBColumn;: TcxGridLevel;Column1: TcxGridDBColumn;cxButton1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tzapr;dmora;

{$R *.dfm}Tzapr.cxButton1Click(Sender: TObject);.q1.params.parambyname('d').value:=cxDateEdit1.Date;.q1.active:=false;.q1.active:=true;.q2.params.parambyname('d').value:=cxDateEdit1.Date;.q2.active:=false;.q2.active:=true;.q3.params.parambyname('d').value:=cxDateEdit1.Date;.q3.active:=false;.q3.active:=true;;.dmora;, Classes, DB, Ora, DBAccess, MemDS, OraSmart, sSkinManager,, cxStyles, cxExtEditRepositoryItems, cxEdit, cxDBEditRepository,, cxGridPopupMenu;= class(TDataModule): TOraSession;: TcxEditRepository;_users: TcxEditRepositoryLookupComboBoxItem;: TcxStyleRepository;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TcxStyle;: TOraTable;: TOraDataSource;: TOraQuery;: TOraDataSource;_USER: TFloatField;: TStringField;: TStringField;: TStringField;_type: TOraQuery;_type: TOraDataSource;_kabinet: TOraQuery;_kabinet: TOraDataSource;: TOraQuery;: TOraDataSource;: TOraQuery;: TOraDataSource;_typeID_TYPE: TFloatField;_typeNAME_TYPE: TStringField;: TOraQuery;: TOraDataSource;: TOraQuery;: TOraDataSource;_type: TcxEditRepositoryLookupComboBoxItem;_prihod: TcxEditRepositoryLookupComboBoxItem;_kabinet: TcxEditRepositoryLookupComboBoxItem;: TOraQuery;: TOraDataSource;_Qprihod: TcxEditRepositoryLookupComboBoxItem;_m: TOraQuery;_m: TOraDataSource;_m: TOraQuery;_m: TOraDataSource;_mM: TFloatField;_mM: TFloatField;_m: TOraQuery;_m: TOraDataSource;_mM: TFloatField;: TOraQuery;: TOraDataSource;_for_spis: TOraQuery;_for_spis: TOraDataSource;_prihod_for_spis: TcxEditRepositoryLookupComboBoxItem;: TOraQuery;: TOraDataSource;_oborud: TOraQuery;_oborud: TOraDataSource;_oborud: TcxEditRepositoryLookupComboBoxItem;: TOraQuery;: TOraDataSource;_level: TOraQuery;_level: TOraDataSource;rashodAfterPost(DataSet: TDataSet);prihodAfterInsert(DataSet: TDataSet);rashodAfterInsert(DataSet: TDataSet);spisAfterInsert(DataSet: TDataSet);DataModuleCreate(Sender: TObject);

{ Private declarations }

{ Public declarations };: Tdm;

{$R *.dfm}Tdm.rashodAfterPost(DataSet: TDataSet);.Qprihod.Active:=false;.Qprihod.Active:=true;.Qprihod_for_spis.Active:=false;.Qprihod_for_spis.Active:=true;;Tdm.prihodAfterInsert(DataSet: TDataSet);.prihod_m.active:=false;.prihod_m.active:=true;.prihod.FieldByName('id_prihod').asfloat:=(dm.prihod_Mm.Value);;Tdm.rashodAfterInsert(DataSet: TDataSet);.rashod_m.active:=false;.rashod_m.active:=true;.rashod.FieldByName('id_rashod').asfloat:=dm.rashod_mM.Value;;Tdm.spisAfterInsert(DataSet: TDataSet);.spis_m.active:=false;.spis_m.active:=true;.spis.FieldByName('id_spisanie').asfloat:=(dm.spis_mm.Value);;Tdm.DataModuleCreate(Sender: TObject);;.Project1;,_main in 'frm_main.pas' {frmmain},in 'frmlogin.pas' {frm_login},in 'Unit2.pas' {prihod},in 'frmsprav.pas' {frm_sprav},in 'Unit3.pas' {rashod},in 'Unit4.pas' {inv},in 'Unit5.pas' {spis},in 'Unit6.pas' {zapr},_rep in 'frm_rep.pas' {rep},in 'dmora.pas' {dm: TDataModule},in 'Unit1.pas' {ins},in 'Unit7.pas' {ins_spips},in 'Unit8.pas' {Form8};

{$R *.res}.Initialize;.CreateForm(Tdm, dm);.CreateForm(Tfrmmain, frmmain);.CreateForm(Tfrm_login, frm_login);

Application.Run;.


ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА СМОЛЕНСКИЙ ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕС

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ