Разработка системы управления работой компании

Автор работы: Пользователь скрыл имя, 07 Мая 2011 в 11:32, курсовая работа

Описание

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

Содержание

Введение 3
Постановка задачи 4
Перечень решаемых задач 5
Проектирование баз данных 6
Общие сведения о таблицах 8
Запросы и их применение 14
Общие сведения о формах 21
Общие сведения об отчетах 28
Разработка программных расширений для БД: макросы и модули 30
Разработка системы защиты данных, прав и ограничений по доступу 34
Заключение 35
Список использованной литературы 36

Работа состоит из  1 файл

КУРСАЧ.doc

— 801.00 Кб (Скачать документ)

   В связи  с поставленной задачей в базе данных созданы следующие таблицы:

    • Банки
    • Дети
    • Договор
    • Заказчик
    • Заказы
    • Накладные
    • Отделы
    • Поставщик
    • Приказы
    • Приход
    • Склад
    • Сотрудники
    • СП
    • Товар
    • Фирма
 
 
 

    Таблица «Банки»  создана для автоматического  ввода в отчеты «Товарная накладная» и «Счет-фактура» названий и адресов  банков, через которые производятся финансовые операции между фирмой, заказчиками и поставщиками. 

     

    В таблице  «Дети» хранится необходимая информация о детях сотрудников.

    В таблицах установлены  маски ввода на номера телефонов  и факсов

     

    Таблица «Договор»  содержит информацию о договорах на покупку автомобилей, в состав которой входит номер счет-фактуры (после заключения договора отсылается в банк заказчика на оплату)

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

 

Компания работает как с физическими, так и с  юридическими  лицами, потому в таблицу «Поставщик» введены реквизиты и фирмы-заказчика (УНН, ФИО бухгалтера, ФИО директора, ОКЮЛП), и отдельного покупателя (расчетный счет), которые являются необязательными для заполнения 

 

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

 

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

 

 

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

 

Поле «ПроцЗп» введено в таблицу «Сотрудники», так как предприятие работает по сдельной системе оплаты. Каждому работнику определен процент оплаты от объема реализованной продукции.

 

 

Таблица «Фирма»  содержит всю информацию компании, для которой разрабатывается приложение

 

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

 

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

  
Запросы и их применение

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

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

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

   В представленной базе данных использовано 47 запросов. Ниже приведен список самых основных запросов

   1) q_ЗП_с_учетом_приказа

   SELECT [ЗП_месяц_%].КдСтр, [ЗП_месяц_%].ФИО, [ЗП_месяц_%]!Зарплата+q_сумма_док_ЗП!Сальдо AS ЗП

   FROM ([ЗП_месяц_%] INNER JOIN Сотрудники ON [ЗП_месяц_%].КдСтр  = Сотрудники.КдСтр) INNER JOIN q_сумма_док_ЗП ON (Сотрудники.КдСтр = q_сумма_док_ЗП.КдСтр) AND ([ЗП_месяц_%].Месяц = q_сумма_док_ЗП.Месяц)

   GROUP BY [ЗП_месяц_%].КдСтр, [ЗП_месяц_%].ФИО, [ЗП_месяц_%]!Зарплата+q_сумма_док_ЗП!Сальдо; 

   2) q_окончательная_ЗП_%

   SELECT [ЗП_месяц_%].КдСтр, [ЗП_месяц_%].ФИО, [ЗП_месяц_%].Зарплата, q_ЗП_с_учетом_приказа.ЗП AS [ЗП с учетом приказов], [ЗП_месяц_%].Месяц

   FROM q_ЗП_с_учетом_приказа  RIGHT JOIN [ЗП_месяц_%] ON q_ЗП_с_учетом_приказа.КдСтр  = [ЗП_месяц_%].КдСтр; 

   3) q_связь_ЗП

   SELECT [ЗП_месяц_%].КдСтр, [ЗП_месяц_%].ФИО, [ЗП_месяц_%].Зарплата, q_ЗП_с_учетом_приказа.ЗП AS [ЗП с учетом приказов], [ЗП_месяц_%].Месяц

   FROM q_ЗП_с_учетом_приказа  RIGHT JOIN [ЗП_месяц_%] ON q_ЗП_с_учетом_приказа.КдСтр  = [ЗП_месяц_%].КдСтр; 

   5) В_наличии

   SELECT Сумма_приход_в_наличии.КдТов,  Сумма_приход_в_наличии.Наименование, Сумма_приход_в_наличии.СтранаИзг, Сумма_приход_в_наличии.Производитель, Сумма_приход_в_наличии![Sum-Кол]-Сумма_заказов_в_наличии![Sum-Кол] AS Количество, Сумма_приход_в_наличии.Примечание

   FROM Сумма_заказов_в_наличии  INNER JOIN Сумма_приход_в_наличии ON Сумма_заказов_в_наличии.КдТов = Сумма_приход_в_наличии.КдТов

   GROUP BY Сумма_приход_в_наличии.КдТов, Сумма_приход_в_наличии.Наименование, Сумма_приход_в_наличии.СтранаИзг, Сумма_приход_в_наличии.Производитель,  Сумма_приход_в_наличии![Sum-Кол]-Сумма_заказов_в_наличии![Sum-Кол], Сумма_приход_в_наличии.Примечание

   ORDER BY Сумма_приход_в_наличии.КдТов;

   6)В_наличии_для_заказа

   SELECT Приход.КдПрх,  Сумма_приход_в_наличии.Наименование AS [Наименование товара], Сумма_приход_в_наличии.СтранаИзг  AS [Страна-изготовитель], Сумма_приход_в_наличии.Производитель, Сумма_приход_в_наличии![Sum-Кол]-Сумма_заказов_в_наличии![Sum-Кол] AS Количество, Сумма_приход_в_наличии.Примечание

   FROM (Сумма_заказов_в_наличии  INNER JOIN Сумма_приход_в_наличии ON Сумма_заказов_в_наличии.КдТов  = Сумма_приход_в_наличии.КдТов) INNER JOIN Приход ON Сумма_заказов_в_наличии.КдТов = Приход.КдТов

   GROUP BY Приход.КдПрх, Сумма_приход_в_наличии.Наименование, Сумма_приход_в_наличии.СтранаИзг, Сумма_приход_в_наличии.Производитель,  Сумма_приход_в_наличии![Sum-Кол]-Сумма_заказов_в_наличии![Sum-Кол], Сумма_приход_в_наличии.Примечание; 

   7) Дни_рождения_сотрудников

   SELECT Month([Дата_рождения]) AS М, Day([Дата_рождения]) AS Д, Year([Дата_рождения]) AS Г, Year(Now())-Year([Дата_рождения]) AS Лет, CDate(Format([Дата_рождения],"dd\/mm") & "/" & Format(Date(),"yy")) AS Текущая_дата, Сотрудники.Ф, Сотрудники.И, Сотрудники.О

   FROM Сотрудники LEFT JOIN уволенные_сотрудники ON Сотрудники.КдСтр  = уволенные_сотрудники.КдСтр

   WHERE (((уволенные_сотрудники.Дата) Is Null))

   ORDER BY Month([Дата_рождения]), Day([Дата_рождения]), Сотрудники.Ф, Сотрудники.И, Сотрудники.О; 

   8)Обработка_приказов

   SELECT Приказы.Наименование, Сотрудники.Ф, Сотрудники.И, Сотрудники.О,  Сотрудники.Должность, Сотрудники.УНН

   FROM Сотрудники INNER JOIN (Приказы INNER JOIN СП ON Приказы.КдДок = СП.КдДок) ON Сотрудники.КдСтр = СП.КодСтр

   WHERE (((Приказы.Номер)=[Введите  номер приказа])); 

   9) Обшие_сведения_клиенты

   SELECT Заказчик.Заказчик, Заказчик.ФИО_директора, Заказчик.Город,  Заказчик.УНН, Заказчик.Тел

   FROM Заказчик

   ORDER BY Заказчик.КдЗак; 

   10) Прибыль

   SELECT Прибыль_Доход!Выражение1-Прибыль_ЗП!Зарплата-Прибыль_Расходы!Выражение1 AS Выражение3, Прибыль_ЗП.Выражение1

   FROM (Прибыль_Расходы  INNER JOIN Прибыль_ЗП ON Прибыль_Расходы.Выражение2 = Прибыль_ЗП.Выражение1) INNER JOIN Прибыль_Доход ON Прибыль_ЗП.Выражение1 = Прибыль_Доход.Expr1001; 

   11)Прибыль_Доход

   SELECT Sum(Заказы!Кол*Заказы!Цена-Заказы!Скидка*Заказы!Кол*Заказы!Цена/100) AS Выражение1, Format(Заказы!Дата,"mmmm\/yyyy") AS Выражение2

   FROM Товар  INNER JOIN (Приход INNER JOIN Заказы ON Приход.КдПрх = Заказы.КдПрх) ON Товар.КдТов = Приход.КдТов

   GROUP BY Format(Заказы!Дата,"mmmm\/yyyy")

   HAVING (((Format([Заказы]![Дата],"mmmm\/yyyy")) Between [Введите начальную дату (Январь/2006)] And [Введите конечную дату])); 

   12) Прибыль_Расходы

   SELECT Sum(Приход!Кол*Приход!Цена) AS Выражение1, Format([Дата],"mmmm\/yyyy") AS Выражение2

   FROM Приход

   GROUP BY Format([Дата],"mmmm\/yyyy")

   HAVING (((Format([Дата],"mmmm\/yyyy")) Between [Введите начальную дату (Январь/2006)] And [Введите конечную дату])); 

   13) Приказ

   SELECT Сотрудники!Ф  & " " & Left(Сотрудники!И,1) & "." & Left(Сотрудники!О,1) & "." AS ФИО,  Приказы.Номер, Приказы.Дата, Приказы.Наименование, Фирма.Наименование, Фирма.Директор, Отделы.Наименование, Format([Дата],"mmmm\/yyyy") AS Выражение1, Приказы.Сумма

   FROM Фирма, (Отделы INNER JOIN Сотрудники ON Отделы.КдОтд  = Сотрудники.КдОтд) INNER JOIN (Приказы INNER JOIN СП ON Приказы.КдДок = СП.КдДок) ON Сотрудники.КдСтр  = СП.КодСтр

   WHERE (((Приказы.Номер)=[Введите  номер приказа])); 

   14)произв_реал_отд

   SELECT Сотрудники.КдОтд,  Сотрудники.КдСтр, Sum(Заказы!Кол*Заказы!Цена-Заказы!Скидка*Заказы!Кол*Заказы!Цена/100) AS Реализовано

   FROM Сотрудники INNER JOIN Заказы ON Сотрудники.КдСтр = Заказы.КдСтр

   GROUP BY Сотрудники.КдОтд, Сотрудники.КдСтр, Format(Заказы!Дата,"mmmm\/yyyy")

   HAVING (((Сотрудники.КдОтд)=[Введите  код отдела]) AND ((Format([Заказы]![Дата],"mmmm\/yyyy"))=[Введите  месяц(Январь/2006)]));

   15) произв_реализ_отд_сумма

SELECT Sum([Реализовано]) AS [Реализовано отделом]

FROM произ_реал_отд;

       16) Самые_сотрудник

SELECT TOP 3 Сотрудники.КдСтр,  Сотрудники!Ф & " " & Left(Сотрудники!И,1) & "." & Left(Сотрудники!О,1) & "." AS ФИО, Сотрудники.КдОтд, Sum(Заказы!Кол) AS Количество, Format([Заказы!Дата],"mmmm\/yyyy") AS Месяц

FROM Сотрудники INNER JOIN Заказы ON Сотрудники.КдСтр = Заказы.КдСтр

GROUP BY Сотрудники.КдСтр,  Сотрудники!Ф & " " & Left(Сотрудники!И,1) & "." & Left(Сотрудники!О,1) & ".", Сотрудники.КдОтд, Format([Заказы!Дата],"mmmm\/yyyy")

HAVING (((Format([Заказы!Дата],"mmmm\/yyyy"))=[Введите месяц(Январь/2006)]))

ORDER BY Sum(Заказы!Кол) DESC;

   17) Сотрудник_приказ

SELECT Сотрудники.КдСтр,  Приказы.КдДок, Приказы.Наименование, Приказы.Номер, Приказы.Дата, Сотрудники.Ф,  Сотрудники.О, Сотрудники.И, Сотрудники.КдОтд, Сотрудники.Должность

FROM Сотрудники INNER JOIN (Приказы INNER JOIN СП ON Приказы.КдДок  = СП.КдДок) ON Сотрудники.КдСтр = СП.КодСтр

GROUP BY Сотрудники.КдСтр,  Приказы.КдДок, Приказы.Наименование, Приказы.Номер, Приказы.Дата, Сотрудники.Ф,  Сотрудники.О, Сотрудники.И, Сотрудники.КдОтд, Сотрудники.Должность

ORDER BY Сотрудники.КдСтр,  Приказы.КдДок; 

      18) Сотрудники_анализ Запрос

TRANSFORM Sum(Сотрудники_анализ.ЗП) AS [Sum-ЗП]

SELECT Сотрудники_анализ.Ф,  Сотрудники_анализ.Наименование

FROM Сотрудники_анализ

GROUP BY Сотрудники_анализ.Ф, Сотрудники_анализ.Наименование

PIVOT Сотрудники_анализ.Месяц; 

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