Проектирование информационной системы для хранения, накопления и выборки данных

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

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

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

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

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

Оглавление

  • 1. Разработка технического задания. Формулировка концепции системы
  • 2. Формирование исходных отношений
    • 2.1 Выявление информационных объектов БД и определение требований целостности к данным
    • 2.2 Выявление множеств сущностей и их атрибутов и требований целостности данных
    • 2.3 Выявление связей множеств сущностей и их характеристик
    • 2.4 Построение результирующей ER диаграммы
    • 2.5 Формирование отношений на основе ER моделирования и их нормализация
    • 2.6 Даталогическое проектирование
    • 2.7 Разработка сценариев работы информационной системы
    • 2.8 Определение архитектуры системы
    • 2.9 Уточнение состава и содержания сценариев
    • 2.10 Разработка механизмов реализации сценариев серверной компоненты
  • 3. Разработка клиентских компонент
    • 3.1 Выбор средства реализации клиентского приложения
    • 3.2 Определение состава формы
    • 3.3 Организационное проектирование
  • Список используемой литературы

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

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

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

Функционирование системы предполагает использование компьютера выступающего в роли сервера, под управлением операционной системы Windows Server 2008 R2 , а так же иных клиентских машин предприятия.

Аппаратное обеспечение:

· Сервер (ЦП - AMD Athlon™ II X4, 3.3ГГц, ОЗУ - 4 Гб);

· Клиентские машины (AMD Athlon X2 Dual-Core, 2.6ГГц, ОЗУ - 4Гб).

Все компьютеры объединены в локальную сеть с пропускной способностью 1Гбит/с.

Функциональные требования:

· на основании введенного номера договора необходимо получить подробную информацию о содержании договора и о заказчике;

· на основании введённого номер путевого листа получить подробную информацию о дате выполнения заказа а также о сотруднике и транспортном средстве для выполнения заказа;

· вывести названия всех заказов и сотрудников;

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

· система должна выполнять хранение следующей информации: номера договоров, номера заявок, номера путевых листов, сумме договора, сроке выполнения договора, ассортименте предприятия, транспортных средствах и их номерных знаков, фамилии и имя воителей, их контактные телефоны, информации о контрагентах, названии организации, адреса, контактного телефона;

· ввод соответствующей информации может осуществляться вручную или с помощью запросов администратором БД;

Нефункциональные требования:

· объем информации - система должна хранить информацию о 30-50 заявках, больше не требуется, так как после 3х месяцев со дня выполнения заявки она удаляется, а сам проект по этой заявке заносится в архив головного офиса; а также система должна хранить информацию о 100 -150 сотрудниках предприятия;

· производительность системы - обеспечить достаточно быстрый поиск и вывод нужной информации для удобства использования;

· скорость ввода или изменения уже существующих данных должна составлять не более 5 минут;

· время отклика системы на запрос должно составлять примерно 2-3 с.

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

Необходимотакже обеспечить возможность вывода той или иной информации непосредственно в MicrosoftWord.

Требования информационной безопасности - при входе в систему необходимо пройти процедуру авторизации для получения возможности чтения или изменения данных.

Архитектура разрабатываемой информационной системы - архитектура клиент-сервера. Данную архитектуру осуществляет СУБД MSSQLServer 2008. Использование данной СУБД обеспечит следующие функции:

џ обеспечивает целостность БД;

џ обеспечивает быстрое восстановление после различных сбоев (аппаратных и программных);

џ обеспечивает резервное копирование;

џ обеспечивает высокую надежность работы;

џ обеспечивает высокую производительность.

2. Формирование исходных отношений

2.1 Выявление информационных объектов БД и определение требований целостности к данным

В процессе разработки БД были выделены следующие информационные объекты из предметной области:

· договор;

· данные о заказчике;

· даныне о заявке;

· путевые листы;

Требования целостности:

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

· к путевому листу относятся - даныые о транспотных средствах, даныне о водителях.

· к заказу оттносятся - данные о заказе.

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

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

Данные о заказчике - информация о контрагентах работающих с фирмой. Характеризуется: номером (обязательный численный атрибут), полным названием организации (символьный атрибут), Ф.И.О главы организации (символьный атрибут), контактным телефоном (численный атрибут, адресом (символьный атрибут)

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

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

Путевка - путевой лист, указывает машину и водителя доставляющего заказ. Характеризуется: номером путёвки (обязательный численный тип), номером водителя (численный тип), номером транспортного средства (численный тип). Машины - транспортные средства которыми располагает предприятие. Характеризуется: номер транспортного средства (обязательный численный тип), госномер машины (численный тип), вместимость машины (численный тип). Водители - водители работающие на предприятии. Характеризуется: именем (символьный тип), фамилией (символьный тип), номером водителя (обязательный численный тип), контактными телефоном (численный тип).

· с объектомдоговор может быть связан один и более данные о заказчике;

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

· с объектом путёвка должна быть связана один и более водителейи машин;

2.3 Выявление связей множеств сущностей и их характеристик.

Договор - данные о заказчике- связь "многие к одному". Одна организация может прислать несколько заявок на выполнение.

Связь договор - заявка - связь "один к одному". По одной заявке заключается один договор.

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

Связь водитель - путёвка - связь "многие к одному". Один водитель может выполнять несколько заказов.

Связь машина - путёвка - связь "многие к одному". Одна машина может выполнять несколько заказов.

2.4 Построение результирующей ER диаграммы

2.5 Формирование отношений на основе ER моделирования и их нормализация

Отношения, которые отражает ER диаграмма, отвечают требованиям нормализации трех основных форм, а именно:

· нет неключевых атрибутов, зависящих от части сложного ключа;

· нет зависимостей неключевых атрибутов от других неключевых атрибутов.

2.6 Даталогическое проектирование.

Таблица заявок (dogovor)

Атрибуты [id_dogovora], [id_zakazchika], [id_pytevki] -численный тип.

Таблица организаций-заявителей (dan_o_zakazchike)

информационный датологический клиентский приложение

Атрибут [id_zakazchika]- численный тип, является первичным ключом. Атрибуты [ima_org], [glava_org], [asress] - строковый тип. [telefon] - численный тип.

Таблица отделов (dan_o_zayavke)

Атрибут [id_dogovora]- целочисленный тип, является первичным ключом. Атрибуты [tip_prodykta]-строковый тип. Атрибуты [kolichstvo], [symma_za_raboty] -численный тип. Атрибут [srok_vipoln] - тип дата.

Таблица данных о заявке (assortiment)

Атрибут [tip_prodykta]- обязательный строковый тип, является первичным ключом. Атрибуты [standart], [naiminovanie]-строковый тип.Атрибут [zhirnost] - численный тип.

Таблица проектов (pytevka)

Атрибут [id_pytevki] - обязательный численный атрибут, является первичным ключом. Атрибуты [id_voditela], [id_trsr] - численный тип.

Таблица сотрудников (sotrudniki)

Атрибут [id_trsr]- строковый тип, является первичным ключом. Атрибут[nomer] - строковый тип. Атрибут [vmestimost] - целочисленный тип.

Таблица типов работ (tip_rabot)

Атрибут [id_voditela] -численный тип, является первичным ключом. Атрибуты [ima], [fam] - строковый тип. Атрибут [kont_telefon] - численный тип.

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

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

ь Сценарий поиска информации заявке и её содержании:

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

ь Сценарий поиска подробной информации о договорах:

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

ь Сценарий поиска информации о путевом листе:

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

ь Сценарий вывода списка всех организаций и заявок, поданных этими организациями:

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

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

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

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

при удалении заявки из таблицы "dogovor" система произведёт поиск связанных с нейданныхв таблицах "pytevka" и "dan_o_zayavke", после чего выполнит их удаление.

ь Сценарий, ограничивающий длину номера от 5 до 12 цифр:

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

ь Процедура добавления данных о путевом листе в отдельном диалоговом окне:

при заполнении базы, пользователь может заполнить таблицу о путевых листах в специальной форме и тут же просмотреть добавленные данные.

2.8 Определение архитектуры системы

В составе разрабатываемой системы выделяются:клиентская и серверная компонента.

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

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

2.9 Уточнение состава и содержания сценариев

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

ь Сценарий поиска информации заявке и её содержании:

Для функционирования данного сценария необходимо при вызове процедуры ввести номер заявки(в качестве параметра процедуры), для которого необходимо вывести имеющаюся информацию. Номер будет помещено в переменную, которая сравнивается со значением столбца [id_dogovora] таблицы dan_o_zayavke. При совпадении значений будет произведен запрос к таблицам dan_o_zayavke, assortiment объединенным с помощью join, и будут выбраны значения, которые связаны с этим названием. Информациябудетвыведенаввидетаблицы.

џ необходимые исходные данные: номер заявки;

џ не возвращает значений; выводит на экран интересующую информацию (информацию о заявке, и выбранном в ней продукте);

џ выполняет выборку из таблиц "dan_o_zayavke", "assortiment"интересующих данных.

ь Сценарий поиска подробной информации о договорах::

Для функционирования данного сценария не нужны начальные параметры, система на основе столбца id_dogovoraтаблицы dogovor формирует набор информации о данном договоре включающий в себя информацию о заявке, информацию о путевом листе, транспорте и водителе выполняющем данный заказ и заказчике. Таблица dan_o_zakazchikeобъединяется с поомщью leftjoin, остальные таблицы соединяются с помощью обычного join.

џ необходимые исходные данные: отсутствуют;

џ не возвращает значений; выводит на экран интересующую информацию (всю информацию о договоре);

џ выполняет выборку из таблиц "dogovor", "dan_o_zakazchike", "dan_o_zayavke", "assortiment", "pytevka", "mashini", "voditeli".

ь Сценарий вывода списка всех отделов и сотрудников этих отделов:

Для функционирования данного сценария не нужно каких-либо начальных данных, так как эта процедура реализована в виде курсора. При выполнении курсора система методом перебора выбирает каждого заказчика, и находит все договоры связанные с ним. Как только договоры, относящиеся к текущему заказчику, выбраны, система берет следующегоконтрагента и производит точно такие же операции. Причем контрагенты отдела определяются по таблицеdan_o_zakazchike,связанной с таблицей id_dogovoracпомощью joinпо атрибуту [id_zakazchka]. В итоге вся выбранная информация будет выведена в виде списка.

џ необходимые исходные данные: отсутствуют;

џ не возвращает значений; выводит на экран помимо текста названия заказчиков и их договоров;

џ выполняет выборку из таблиц "dan_o_zakazchike", "id_dogovora"

ь Сценарий поиска подробной информации о заявке:

Для функционирования данного сценария необходимо при вызове процедуры ввести номер заявки(будет выступать в качестве параметра процедуры), для которого необходимо вывести всю информацию. Номер заявки будет помещен в переменную. При помощи join будут объединены таблицы zayavki, dannie_o_zayavke, proekti,tip_rabot. После чего происходит сравнение значений столбца [Номер_заявки] таблицы zayavki и значения переменной. При совпадении значений будет выбрана информация находящаяся в объединённых таблицах и связанная с совпавшим номером заявки(значением переменной). Информация будет выведена в виде таблицы.

џ необходимые исходные данные: номер заявки;

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

џ выполняет выборку из таблиц "zayavky", "dannie_o_zayavke", "proekti", "tip_rabot"интересующих данных.

ь Сценарий поиска информации о путевом листе

Для функционирования данного сценария необходимо при вызове процедуры ввести номер путевого листа(выступает в качестве параметра процедуры), по которому необходимо интересующую информацию . Номер путевого листа будет помещено в переменную. При помощи join будут объединены таблицы mashini. После чего происходит сравнение значений столбца [id_trsr] таблицы mashini и значения переменной.При помощи join будут объединены таблицы voditeli. После чего происходит сравнение значений столбца [id_voditela] таблицы voditeli и значения переменной При совпадении значений будет выбрана информация находящаяся в объединённых таблицах и связанная с совпавшимпутевым листом(значением переменной). Информация будет выведена в виде таблицы.

· необходимые исходные данные: номер путевого листа;

· не возвращает значений; выводит на экран интересующую информацию (номер путевого листа, и подробную информацию о транспортном средстве и водителе работающем по этому путевому листу);

· выполняет выборку из таблиц "pytevka", "mashini", "voditeli"интересующих данных.

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

Данный сценарий реализуем в виде тригера, который будет срабатывать в том случае, если мы попытаемся сохранить в качестве значения суммы за выполнение работы отрицательное число. То есть, когда мы записываем сумму за работу в столбец [symma_za_raboty] таблицы dan_o_zayavke, он подставляется в переменную ограничевающего триггера и проверяется на корректность. Если введенная сумма положительная, то она сохраняется, в противном случае срабатывает триггер и выводится окно ошибки, содержащие описание причины её возникновения.

ь Сценарий на каскадное удаление таблиц реализуется в виде триггера.

При удалении какой либо строки из таблицы dogovorтриггер проводит удаление строк из других таблиц. Данные из таблицы dan_o_zayavkeудаляются на основе соответствия колонки id_dogovora. Данные из таблицы pytevkaудаляются на основе соответствия значений колонок id_pytevki.

ь Сценарий, ограничивающий длину номера от 5 до 12 цифр:

Данный сценарий реализуем в виде тригера, который будет срабатывать в том случае, если мы попытаемся сохранить в качестве значения номера телефона некорректный номер. То есть, когда мы записываем номер телефона в столбецtelefon таблицы dan_o_zakazchiken (аналогично для столбца kont_telefon таблицы) он подставляется в переменную ограничевающего триггера и проверяется на корректность. Если в номере от 5 до 12 цифр номер сохраняется, в противном случае срабатывает тригер и выводится окно ошибки, содержащие описание причины её возникновения.

ь Сценарий, производящий заполнение таблицы pytevka:

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

џ необходимые исходные данные: номер путевого лист, номер машины, номер водителя;

џ выполняет вставку значений в таблицу "pytevka".

2.10 Разработка механизмов реализации сценариев серверной компоненты

ь Создадим хранимую процедуру, которая будет производить поиск информации о заявке:

USE [KURSOV]

GO

/****** Object: StoredProcedure [dbo].[vibor_zakaza] Script Date: 01/14/2012 22:33:07 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERprocedure [dbo].[vibor_zakaza] @id_dog int

as

select dan_o_zayavke.*, assortiment.naiminovanie from

dan_o_zayavke join assortiment on dan_o_zayavke.tip_prodykta = assortiment.tip_prodykta

where @id_dog = dan_o_zayavke.id_dogovora

Пример выполнения процедуры:

execotdel1

Результат:

ь Создадим хранимую процедуру, которая будет выводить всю информацию о договоре.

USE [KURSOV]

GO

/****** Object: StoredProcedure [dbo].[viborALL] Script Date: 01/14/2012 22:34:53 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERprocedure [dbo].[viborALL]

as

select dogovor.id_dogovora, dan_o_zakazchike.*, dan_o_zayavke.*,

assortiment.*, mashini.*, voditeli.*

from

dogovor leftjoin dan_o_zakazchike on dogovor.id_zakazchika = dan_o_zakazchike.id_zakazchika

innerjoin dan_o_zayavke on dan_o_zayavke.id_dogovora = dogovor.id_dogovora

join assortiment on assortiment.tip_prodykta = dan_o_zayavke.tip_prodykta

join pytevka on pytevka.id_pytevki = dogovor.id_pytevki

join mashini on mashini.id_trsr = pytevka.id_trsr

join voditeli on voditeli.id_voditela = pytevka.id_voditela

Результат:

ь Создадим курсор, который будет выводить контрагентов и все сделанные им заявки

declare @zay nvarchar(50), @zay1 nvarchar(50), @ima nvarchar(50), @ima1 nvarchar(50)

declare cur cursorforselect dan_o_zakazchike.ima_org, dogovor.id_dogovora

from dan_o_zakazchike join dogovor on dogovor.id_zakazchika = dan_o_zakazchike.id_zakazchika

orderby ima_org

open cur

fetch cur into @ima, @zay

set @ima1 = @ima

set @zay1 = @zay

while@@FETCH_STATUS= 0

begin

fetch cur into @ima, @zay

if @ima1 = @ima

begin

set @zay1 = @zay1 +','+ @zay

end

else

begin

print'организация '+@ima1+' подала заявки '+ @zay1

set @ima1=@ima

set @zay1=@zay

end

end

print'организация '+@ima1+' подала заявки '+ @zay1

CLOSE cur

DEALLOCATE cur

Результат:

ь Создадим курсор, который будет выводить информацию о путёвке:

USE [KURSOV]

GO

/****** Object: StoredProcedure [dbo].[vibor_voditela] Script Date: 01/14/2012 22:39:58 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERprocedure [dbo].[vibor_voditela] @id_pyt int

as

select pytevka.id_pytevki, mashini.*, voditeli.*

from

pytevka fulljoin mashini on pytevka.id_trsr = mashini.id_trsr

fulljoin voditeli on pytevka.id_voditela = voditeli.id_voditela

where @id_pyt = pytevka.id_pytevki

Пример выполнения

exec vibor_voditela14

Результат:

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

USE [KURSOV]

GO

/****** Object: StoredProcedure [dbo].[dobav2] Script Date: 01/14/2012 22:43:10 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERprocedure [dbo].[dobav2] @id_pytevki int,@id_voditela int, @id_trsr int

as

insertinto pytevka(id_pytevki ,id_voditela , id_trsr)

values (@id_pytevki ,@id_voditela , @id_trsr)

select*from pytevka wherepytevka.id_pytevki=@id_pytevki

Пример выполнения:

exec dobav219,4,6

Результат:

ь Триггер, препятствующий вводу отрицательной суммы.

USE [KURSOV]

GO

/****** Object: Trigger [dbo].[o_dengax] Script Date: 01/14/2012 22:44:58 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERtrigger [dbo].[o_dengax]

on [dbo].[dan_o_zayavke] FORINSERT

AS

IF@@ROWCOUNT=1

BEGIN

Declare @summ real

Select @summ=symma_za_raboty from inserted

if @summ<0

begin

rollback tran

print`Введеное число должно быть положительнмым'

END

END

Результат при некорректном вводе суммы:

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

USE [KURSOV]

GO

/****** Object: Trigger [dbo].[ydal] Script Date: 01/14/2012 22:46:34 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERtrigger [dbo].[ydal]

on [dbo].[dogovor]

INSTEADOFDELETE

AS

BEGIN

SETNOCOUNTON;

deletefrom dogovor

where id_dogovora in(select id_dogovora from deleted)

deletefrom dan_o_zayavke

where id_dogovora in(select id_dogovora from deleted)

deletefrom pytevka

where id_pytevki in(select id_pytevki from deleted)

end

ь Триггер, ограничивающий ввод номеров телефонов.

USE [KURSOV]

GO

/****** Object: Trigger [dbo].[nomera_org] Script Date: 01/14/2012 22:51:13 ******/

SETANSI_NULLSON

GO

SETQUOTED_IDENTIFIERON

GO

ALTERtrigger [dbo].[nomera_org]

on [dbo].[dan_o_zakazchike] forinsert

as

if@@ROWCOUNT=1

begin

declare @Telefon int

select @Telefon=telefon from inserted

if @Telefon<5 or @Telefon>12

begin

rollbacktran

if @Telefon<500

print'Диапазон номера телефона от 5 до 12'

if @Telefon>600

print'Диапазон номера телефона от 5 до 12'

end

end

3. Разработка клиентских компонент

3.1 Выбор средства реализации клиентского приложения

В качестве языка программирования клиентского интерфейса выбран объектно-ориентированный язык C# (в качестве IDE использовалась MicrosoftVisualStudio 2010). Для доступа к данным использовалась технология ADO.Net.

3.2 Определение состава формы

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

1. Диаграмма состава форм.

Основное окно клиентского приложения приведено на рисунке 2. Оно позволяет перейти по вкладкам на закладку с интересующей таблицей, поиск данных или отчет с последующим выводом в Word. Внизу формы расположены два элемента fillToolStrip для быстрого поиска информации. Вверху расположена панель элементов TopToolStripPanel, при помощи которой можно производить операции по вставке, обновлению и удалению строк в БД.

Рисунок 2. Окно клиентского приложения.

При запуске клиентского приложения, в первую очередь, загружается первая форма (Рис.2). Данные из таблиц БД загружаются в DataGridView - представляющий собой элемент данных в виде таблицы. Загрузка данных в таблицы осуществляется посредством специального объекта ADO.Net - Тable Adapter. Исходный код для загрузки формы представлен ниже:

privatevoidForm1_Load(objectsender, EventArgse)

{

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.viborALL". При необходимости она может быть перемещена или удалена.

this.viborALLTableAdapter.Fill(this.kURSOVDataSet.viborALL);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.dan_o_zakazchike". При необходимости она может быть перемещена или удалена.

this.dan_o_zakazchikeTableAdapter.Fill(this.kURSOVDataSet.dan_o_zakazchike);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.voditeli". При необходимости она может быть перемещена или удалена.

this.voditeliTableAdapter.Fill(this.kURSOVDataSet.voditeli);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.mashini". При необходимости она может быть перемещена или удалена.

this.mashiniTableAdapter.Fill(this.kURSOVDataSet.mashini);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.assortiment". При необходимости она может быть перемещена или удалена.

this.assortimentTableAdapter.Fill(this.kURSOVDataSet.assortiment);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.pytevka". При необходимости она может быть перемещена или удалена.

this.pytevkaTableAdapter.Fill(this.kURSOVDataSet.pytevka);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.dan_o_zayavke". При необходимости она может быть перемещена или удалена.

this.dan_o_zayavkeTableAdapter.Fill(this.kURSOVDataSet.dan_o_zayavke);

// TODO: данная строка кода позволяет загрузить данные в таблицу "kURSOVDataSet.dogovor". При необходимости она может быть перемещена или удалена.

this.dogovorTableAdapter.Fill(this.kURSOVDataSet.dogovor);

}

Вот как выглядит одна из форм, при запуске проекта содержащая данные по одной из таблиц базы данных (это форма содержащая данные из таблицы proekti):

Рисунок 3.Пример формы, содержащей таблицу базы данных

Пояснение рисунка:

1) Форма клиентского приложения (Dobavlenie.cs);

2) Элементы панели TopToolStripPanel, служащие для добавления, удаления и сохранения данных в таблице базы данных;

3) DataGridView- объект для отображения данных базы на форме;

4) DataSet-источник данных на стороне клиента;

5) BindingSource-объект, обеспечивающий связь источника данных с отображаемым элементом;

6) TableAdapter- элемент, выполняющий связь данных на стороне клиента с данными в базе данных;

7) AdapterManager- элемент, позволяющий осуществлять иерархическое обновление;

8) BindingNavigator - класс, представляет пользовательский интерфейс для перехода и обработки для элементов управления на форме, которые привязываются к данным.

9) fillToolStrip - Элемент управления реализует использование запросов пользователем.

10) Интерфейс элемента fillToolStrip

При запуске клиентского приложения, а затем выбора вкладки ТабКонтроле загружается вкладка, ссылка на которую прописана на форме. Данные из таблиц БД загружаются в DataGridView, представляющий собой элемент данных в виде таблицы. Загрузка данных в таблицу осуществляется посредством специального объекта ADO.Net - SqlDataAdapter.В качестве источника данных таблицы DataGridView, где будут отображаться данные, указывается элемент BindingSource. Таким способом реализуется начальная загрузка данных в таблицу клиентского приложения. Вставка, удаление и сохранение данных в таблице реализованы с помощью панели TopToolStripPanel, на которой расположены кнопки с этими функциями.

Выбор данных для поиска осуществляется с помощью следующих элементов управления: textbox, combobox, а их поиск происходит при нажатии кнопки Button или ToolStripButton. Результаты поиска выводятся в dataGridView, предназначенный для их отображения. Элемент TextBox служит для ввода информации в поле. Элемент ComboBox служит для выбора элемента базы данных, о котором необходимо найти информацию, что упрощает поиск, так как не нужно искать и вспоминать, как именно пишется элемент, по которому ищется информация, а просто нужно его выбрать:

Для вывода информации из таблицы dogovor используется специальная кнопка выгрузки данных. Для этого используется специальная библиотека Microsoft.Office.Interop.Word. Ниже представлен пример метода для вывода информации в Word, с возможностью сохранения информации в формате *.docx, c предварительным открытием документа. (Код обращения к сценарию вывода отчётности по сотрудникам предприятия, используемый на вкладке "Отчеты в Word"->Вывод сотрудников):

privatevoid button2_Click(object sender, EventArgs e)

{

word w = newword();

w.Print(this.kURSOVDataSet.dogovor);

}

Как видно из кода, информация для вывода в Word берется из хранимой таблицы dogovor, которая выводит все составленные договоры

А сам метод wordописан в файле word.cs:

classword

{

publicvoid Print(DataTable source)

{

//открыть новоеword-приложение

var application = newApplication { Visible = false };

object missing = Type.Missing;

//создать новый документ word

Documentdocument = application. Documents.Add (ref missing, ref missing, ref missing, ref missing);

Rangerange = document.Range(ref missing, ref missing);

//создать таблицу

Tabletable = range.Tables.Add (range, source.Rows.Count, source.Columns.Count, ref missing, ref missing);// в качестве параметров таблицы указать место куда необходимо поместить таблицу, а также количество столбцов и строк

table.Borders.Enable = 1;

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

for (intir = 1; ir<source.Rows.Count + 1; ++ir)

{

Rowrow = table.Rows[ir];

for (intic = 1; ic<source.Columns.Count + 1; ++ic)

{

Cellcell = row.Cells[ic];

cell.Range.Text = source.Rows[ir - 1].ItemArray[ic - 1].ToString();

}

}

application.Visible = true;

}

}

Пример вывода в Microsoft Word данных о сотрудниках:

Рисунок 6. Вывод в Word отчета по сотрудникам

3.3 Организационное проектирование

Аппаратное оснащение системы:

Сервер:

- Процессор не ниже 2.5 ГГц;

- Оперативная память минимум 3 Гб;

- Сетевая карта;

- Операционная система WindowsServer;

Рабочие станции:

- Процессор не ниже 2.0 ГГц;

- Оперативная память минимум 2 Гб;

- Сетевая карта;

- Операционная система WindowsXP, Windows 7.

Передача данных (сеть):

- Скорость не ниже 20 Мб/с;

- Топология любая, поддерживающая протоколы TCP/IP;

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


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

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