Информационная система оптимизации работы сотрудников по прокату кино и видео фильмов

Аннотация



В пояснительной записке описан процесс проектирования, разработки и создания многопользовательской информационной системы. База данных для информационной системы создана под управлением сервера баз данных InterBase 6.0, а интерфейс спроектирован и разработан в среде визуального программирования Borland Delphi 7.0.

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

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

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

		разработка структуры корпоративной информационной системы;

		изучение функций менеджера;

		проектирование БД CASE-средствами;

		создание БД под управлением сервера баз данных InterBase 6.0;

		разработка пользовательского интерфейса для рабочего места менеджера средствами Borland Delphi.




Содержание



		1.Назначение и область применения информационной системы.

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

	3. Структура информационной системы.

	4. База данных рабочего места. 

	4.1. Проектирование. 

	4.3.Структура базы данных. 

	5.Создание таблиц. 

	6.Создание триггеров. 

	7.Операции на рабочем месте (интерфейс пользователя). Операторы SQL и окна, обеспечивающие пользовательский интерфейс по вводу, выводу и обновлению данных

	7.1.Выпадающее меню Ввод и редактирование данных. 

	7.2Выпадающее меню Запросы. 

	7.3Выпадающее меню Диаграммы. 

	7.4Выпадающее меню Отчёты. 

	Заключение. 

		

	
1. Назначение и область применения информационной системы



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

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


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



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

1. Клиентская программа должна осуществлять следующее:

	Ввод и редактирование данных;

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

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

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

	Представление в графическом виде следующей информации:

	суммарный совокупный доход от аренды кинофильмов в разрезе кинотеатров за определённый временной период;

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

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

	список фильмов, которые в определённый момент демонстрируются в кинотеатрах города;

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

Информационная система должна быть реализована средствами Borland Delphi 7.0.


3. Структура информационной системы



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

	Представим информационную систему фотоателье на рисунке 1:

	

	

АРМ отделов сбыта и поставок

АРМ бухгалтерии



	

	

поставки

продажи

заказы

	

Сервер СУБД

	

	

АРМ менеджера



	

Хранилище данных о товарах на складе, услугах, заказах, поставах….

	

товары

поставщики

услуги

клиенты

сотрудники

	

	

	

	

	

Рисунок 1


4. База данных рабочего места



4.1. Проектирование



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

1. Водители: номер водителя, фамилия, имя, отчество.

Первичный ключ: NOMER_V

2.Автобусы: номер автобуса, название модели, номер водителя, дата введения в эксплуатацию

Первичный ключ: NOMER_A

Внешний ключ: NOMER_V.

3.Контролеры: номер контролера, фамилия, имя, отчество.

Первичный ключ: NOMER_K

4.Маршрут: номер маршрута, название, протяженность, среднее время.

Первичный ключ: NOMER_M

5.Раписание рейсов: номер рейса, дата отправления, номер маршрута, намер контролера, номер автобуса.

Первичный ключ: NOMER_R

Внешние ключи: NOMER_M, NOMER_A, NOMER_K



6.Заказ: номер заказа, дата приема заказа, дата выполнения заказа, номер клиента.

Первичный ключ: N_ZAKAZA

Внешние ключи: NOMER_V, NOMER_A,



4.2.Нормализация

Обоснование состояния 3-ей нормальной формы



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

Во всех таблицах данной БД каждый не ключевой атрибут полностью функционально зависит от соответствующего первичного ключа. Например, каждому значению первичного ключа в таблице «Изделие» в любой момент времени соответствует только одно значение номер изделия, наименование. Аналогично и для других не ключевых атрибутов во всех таблицах существует полная функциональная зависимость от первичного ключа, и поэтому таблицы находятся во 2-ой нормальной форме.

Во всех таблицах все не ключевые атрибуты взаимно независимы. Например, не ключевые атрибуты таблицы «Клиент» функционально не зависят друг от друга (фамилия и имя не зависят от адреса и т.д.. Аналогично доказывается взаимная независимость не ключевых атрибутов всех остальных таблиц данной БД, поэтому они находятся в 3-ей нормальной форме, а, следовательно, свободны от избыточности и связанными с ней аномалиями обновления.






5.Создание таблиц



1) Таблица “автобусы”

CREATE TABLE A (

NOMER_A INTEGER NOT NULL,

MODEL VARCHAR(20),

NOMER_V INTEGER,

DATAV TIMESTAMP

)

2)Таблица “контролеры”

CREATE TABLE K (

NOMER_K INTEGER NOT NULL,

FAMILIA VARCHAR(20),

NAME VARCHAR(20),

OTCH VARCHAR(20)

)

3) Таблица “маршруты”

CREATE TABLE M (

NOMER_M INTEGER NOT NULL,

NAZVAN VARCHAR(20),

PROT INTEGER,

SRTIME INTEGER

)

4)Таблица “рейсы”

CREATE TABLE R (

NOMER_R INTEGER NOT NULL,

DATAOTPR TIMESTAMP,

NOMER_M INTEGER,

NOMER_K INTEGER,

NOMER_A INTEGER

)

5) Таблица “технический осмотр”

CREATE TABLE TECH_OSMOTR (

NOMER_TO INTEGER NOT NULL,

DATETO TIMESTAMP NOT NULL,

REZULT VARCHAR(50),

NOMER_V INTEGER,

NOMER_A INTEGER

)

6) Таблица “водители ”

CREATE TABLE V (

NOMER_V INTEGER NOT NULL,

FAMILIA VARCHAR(20),

NAME VARCHAR(20),

OTCH VARCHAR(20)

)


6.Создание триггеров



Создание триггера для заполнения номера компонента в таблице «Автобус»:

CREATE TRIGGER INS_A FOR A BEFORE INSERT POSITION 0 as declare variable cn integer;

begin

select max(nomer_a) from a into :cn;

if (cn is null) then new.nomer_a=1;

else

new.nomer_a=cn+1;

end



Создание триггера для заполнения номера компонента в таблице «Контролер»:

CREATE TRIGGER INS_K FOR K BEFORE INSERT POSITION 0 as declare variable cn integer;

begin

select max(nomer_k) from k into :cn;

if (cn is null) then new.nomer_k=1;

else

new.nomer_k=cn+1;

end



Создание триггера для заполнения номера компонента в таблице «маршрут»:

CREATE TRIGGER INS_M FOR M BEFORE INSERT POSITION 0 as declare variable cn integer;

begin

select max(nomer_m) from m into :cn;

if (cn is null) then new.nomer_m=1;

else

new.nomer_m=cn+1;

end



Создание триггера для заполнения номера компонента в таблице «Технический осмотр»:

CREATE TRIGGER INS_TO FOR TECH_OSMOTR BEFORE INSERT POSITION 0 as declare variable cn integer;

begin

select max(nomer_to) from tech_osmotr into :cn;

if (cn is null) then new.nomer_to=1;

else

new.nomer_to=cn+1;

end

Создание триггера для заполнения номера компонента в таблице «Заказ»:

CREATE TRIGGER INS_V FOR V BEFORE INSERT POSITION 0 as declare variable cn integer;

begin

select max(nomer_v) from v into :cn;

if (cn is null) then new.nomer_v=1;

else

new.nomer_v=cn+1;

end


7.Операции на рабочем месте (интерфейс пользователя). Операторы SQL и окна, обеспечивающие пользовательский интерфейс по вводу, выводу и обновлению данных



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



7.1.Выпадающее меню Ввод и редактирование данных



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






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

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

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

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

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

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



7.2Выпадающее меню Запросы



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

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

SQL для этого запроса выглядит следующим образом:

Select M.NAZVAN, R.DATAOTPR from M,R

SQL для кнопки «просмотр» выглядит следующим образом:

Select M.NAZVAN, R.DATAOTPR from M,R' );

where M.NOMER_M=R.NOMER_M and R.DATAOTPR>='+''''+edit1.Text+''''+'

and R.DATAOTPR<='+''''+edit2.text+''''



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

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



SQL для этого запроса выглядит следующим образом:

Select a.model, nazvan ,prot

from A,V,m,R

where a.NOMER_V=V.NOMER_V and M.NOMER_M=R.NOMER_M and a.NOMER_a=R.NOMER_a



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

QUERY1.CLOSE;

QUERY1.SQL.CLEAR;

QUERY1.SQL.ADD('Select a.model,nazvan ,prot from A,V,m,R' );

QUERY1.SQL.ADD('where a.NOMER_V=V.NOMER_V and M.NOMER_M=R.NOMER_M and a.NOMER_a=R.NOMER_a and model='+''''+edit1.Text+'''') ;

QUERY1.open;



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






SQL для этого запроса выглядит следующим образом:

Select distinct a.model,sum(PROT) from A,V,m,R

where a.NOMER_V=V.NOMER_V and M.NOMER_M=R.NOMER_M and a.NOMER_a=R.NOMER_a group by model



Выбрав запрос "маршруты определенного водителя или контролера" появляется соответствующая форма. Этот запрос осуществляет выборку сведений о маршрутах, осущественных определенным водителем или контролером. Необходимо ввести фамилии и нажать на кнопку «Просмотр».



SQL для этого запроса выглядит следующим образом:

Select M.NAZVAN, R.DATAOTPR, K.FAMILIA , v.familia from M,R,K, v,a

where M.NOMER_M=R.NOMER_M and

K.nomer_k=R.NOMER_K and a.nomer_a=r.NOMER_a and a.nomer_v=a.NOMER_a

and v.familia like :fv and k.familia like :fk



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

procedure TForm12.Button1Click(Sender: TObject);

begin

QUERY1.CLOSE;

QUERY1.ParamByName('fk').value:=Edit1.Text+'%';

QUERY1.ParamByName('fv').value:=Edit2.Text+'%';

QUERY1.open;

end;



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

procedure TForm12.FormActivate(Sender: TObject);

begin

QUERY1.CLOSE;

QUERY1.ParamByName('fk').value:='%';

QUERY1.ParamByName('fv').value:='%';

QUERY1.open;

end;



Выбрав запрос "прохождение ТО определенным автобусом" появляется соответствующая форма. Этот запрос осуществляет выборку сведений об автобусе, введенном с клавиатуры. Необходимо ввести модель автобуса и нажать на кнопку «Просмотр».

Результат запроса выглядит следующим образом

SQL для этого запроса выглядит следующим образом:

Select a.model, TECH_OSMOTR.dateto, TECH_OSMOTR.rezult, v.familia from TECH_OSMOTR, v,a

where

TECH_OSMOTR.nomer_v=v.Nomer_v and TECH_OSMOTR.nomer_a=a.nomer_a and a.model like :m


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

procedure TForm18.Button1Click(Sender: TObject);

begin

form18.query1.close;

form18.QUERY1.ParamByName('m').value:=Edit1.Text+'%';

form18.query1.open;

end;

Select a.model, TECH_OSMOTR.dateto, TECH_OSMOTR.rezult, v.familia from TECH_OSMOTR, v,a

where

TECH_OSMOTR.nomer_v=v.Nomer_v and TECH_OSMOTR.nomer_a=a.nomer_a and v.familia like :f


procedure TForm20.Button1Click(Sender: TObject);

begin

form20.query1.close;



form20.QUERY1.ParamByName('f').value:=Edit1.Text+'%';

form20.query1.open;

end;



Выбрав запрос «Сведения о количестве», можно посмотреть сведения о количестве ТО, проведенных каждым сотрудником.

Запрос выглядит следующим образом:

Select v.familia, count(v.familia) from TECH_OSMOTR, v,a

where TECH_OSMOTR.nomer_v=v.Nomer_v and TECH_OSMOTR.nomer_a=a.nomer_a

group by v.familia



7.3Выпадающее меню Диаграммы



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

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

Необходимо ввести фамилию мастера и выбрать период. Нажать на кнопку «Просмотр».







Запрос выглядит следующим образом:



Select familia, count(familia) from M,R,K, v,a

where M.NOMER_M=R.NOMER_M and

K.nomer_k=R.NOMER_K and a.nomer_a=r.NOMER_a and v.nomer_v=a.NOMER_v and

dataotpr>=:d1 and dataotpr<=:d2



group by v.familia


Select model, count(model) from M,R,K, v,a

where M.NOMER_M=R.NOMER_M and

K.nomer_k=R.NOMER_K and a.nomer_a=r.NOMER_a and v.nomer_v=a.NOMER_v and

dataotpr>=:d1 and dataotpr<=:d2



group by a.model



gr1.query1.close;

gr1.QUERY1.ParamByName('d1').asDate:=DateTimePicker1.Date;

gr1.QUERY1.ParamByName('d2').asDate:=DateTimePicker2.Date;

gr1.query1.open;

gr1.query3.close;

gr1.QUERY3.ParamByName('d1').asDate:=DateTimePicker1.Date;

gr1.QUERY3.ParamByName('d2').asDate:=DateTimePicker2.Date;

gr1.query3.open;



7.4Выпадающее меню Отчёты.



При нажатии на этот пункт меню «Отчеты» появится пункт «Списочный состав автопарка и персонала предприятия».

Выбрав его, появляется соответствующий отчет.

SQL для оттого отчёта выглядит следующим образом:

select v.familia, k.familia from k, v,a,r

where

K.nomer_k=R.NOMER_K and a.nomer_a=r.NOMER_a and a.nomer_v=v.NOMER_v

group by v.familia, k.familia



Отчет о маршрутах можно сформировать. Нажав на кнопку «Просмотр» на форме «расписание маршрутов за определенный период»



Запрос выглядит следующим образом:



Select M.NAZVAN, R.DATAOTPR from M,R



where M.NOMER_M=R.NOMER_M and

dataotpr>=:d1 and dataotpr<=:d2



form17.query1.close;

form17.QUERY1.ParamByName('d1').asDate:=DateTimePicker1.Date;

form17.QUERY1.ParamByName('d2').asDate:=DateTimePicker2.Date;

form17.query1.open;

form16.query1.close;

form16.QUERY1.ParamByName('d1').asDate:=DateTimePicker1.Date;

form16.QUERY1.ParamByName('d2').asDate:=DateTimePicker2.Date;

form16.query1.open;

form16.quickrep1.preview;




Заключение



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

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

После выполнения курсового проекта, я освоила работу в среде Borland Delphi 7.0 в связи с СУДБ Inter Base 6.0 и приобрела навыки работы с SQL Explorer, а также получила практический опыт написания запросов на языке SQL, практические и теоретические навыки работы в структуре корпоративных информационных систем.





3