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

Автор работы: Пользователь скрыл имя, 30 Апреля 2013 в 16:49, курсовая работа

Краткое описание

Цель работы проектирование базы данных для информационной системы учёта на оптовом складе. В процессе работы изучена предметная область и получены практические навыки в работе с СУБД MS SQL Server 2000, разработаны структуры таблиц, проведена нормализация отношений до 2-й формы включительно. В результате работы созданы база данных warehouse и таблиц, произведено заполнение таблиц, разработано строк кода SQL.

Содержание

Реферат
1. Описание предметной области
2. Обзор аналогов
3. Техническое задание
4. Проектирование базы данных
4.1. Нормализация отношений
4.1.1. Ненормализованная форма
4.1.2. Вторая нормальная форма
4.2. Структура таблиц
4.3. Диаграмма сущность связь (ER диаграмма)
4.4. Создание БД и таблиц
4.5. Заполнение таблиц
4.6. Тексты запросов SQL
5. Клиентская часть
5.1. Общие сведения о работе системы
5.2. Функциональное назначение
5.3. Инсталляция и выполнение программного продукта
5.4. Руководство пользователя
6. Заключение

Прикрепленные файлы: 1 файл

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

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

price MONEY

);

CREATE TABLE delivered_goods

(

ID INTEGER PRIMARY KEY IDENTITY(1,1),

goods_id INTEGER,

party_id INTEGER,

quantity INTEGER,

price MONEY

);

CREATE TABLE warehouse_data

(

name VARCHAR(100),

address VARCHAR(255),

inn    INTEGER,

kpp   INTEGER,

phone         VARCHAR(20),

account VARCHAR(25),

bank  VARCHAR(255),

address_bank VARCHAR(255),

bik    INTEGER,

okpo           INTEGER,

cor_account VARCHAR(25),

director VARCHAR(255),

Chief_accountant VARCHAR(255)

);

4.5 Заполнение таблиц

INSERT INTO supplier VALUES

(

‘Поставщик  №1’,

‘г. Астрахань, ул Третья, д 47’,

‘45654233334789d48’,

‘456789123’,

‘159987456’,

‘(8512) 12-58-95’,

‘Первый строительный’,

‘г Астрахань, ул Бабушкина, д 57’,

‘465466545’,

‘45965456854sd987g89’,

‘15987456’,

‘Романов Н.Г.’,

‘Рыбнкова Г.П’

);

INSERT INTO customer VALUES

(

‘Покупатель № 1’,

‘г. Нижневартовск, ул Седьмая, д 14’,

‘45654233334789d48’,

‘456789123’,

‘159987456’,

‘(8512) 12-58-95’,

‘Банк Москвы’,

‘г Москва, ул Степашина, д 57’,

‘465466545’,

‘45965456854sd987g89’,

‘15987456’,

‘Смирнов К.С.’,

‘Иванова Г.П’

);

INSERT INTO goods VALUES

(

‘Товар 1’,

‘521.50’,

‘Производитель 1’,

‘5000’,

‘ящик’,

’20’

);

INSERT INTO party_delivered VALUES

(

’13.03.2009 15:35:01’,

‘1’,

‘456.25’

);

INSERT INTO party_delivered VALUES

(

’14.03.2009 12:00:41’,

‘1’,

‘456.25’

);

INSERT INTO sent_goods VALUES

(

‘1’,

‘4’,

‘998’,

‘500’

);

INSERT INTO delivered_goods VALUES

(

‘1’,

‘4’,

‘365’,

‘456.25’

);

INSERT INTO warehouse_data VALUES

(

‘Центральный  Астраханский склад торговой сети «Мастер+»’,

‘г. Астрахань, ул Перевозная, строение 77’,

‘15123456798’,

‘123456789’,

‘8512 65-98-41’,

‘d4fgd6g4fs5g65456’,

‘Первый строительный банк’,

‘г Астрахань, ул Лесная, Д 45’,

‘546542364556’,

‘12345678’,

‘fds4f56df4s5gf646’,

‘Степанов Н. К’,

‘Гиреева С.Т.’

);

 

4.6 Тексты  запросов SQL

SQL запросы используемые  при оформлении приходной накладной:

/*Получение реквизитов склада */

SELECT * FROM warehouse_data;

/*Выборка данных  о товарах, прибывших в составе  партии товара*/

SELECT goods.goods_name, goods.unit, delivered_goods.price, delivered_goods.quantity, (delivered_goods.quantity*delivered_goods.price) FROM goods, delivered_goods WHERE (delivered_goods.party_id=' 1') AND (delivered_goods.goods_id = goods.goods_id);

В запросе происходит выборка количества и стоимости  товаров, из таблицы «закупленные товары» (delivered_goods) для всех записей, где поле party_id равно идентификатору пришедшей  партии (в примере номер партии товара равен 1); к тому же для каждой записи происходит выборка наименований товаров и единицы их измерения из таблицы «товары» (goods). Выражение (delivered_goods.quantity * delivered_goods.price) вычисляет сумму для каждого товара.

SQL запросы используемые  при оформлении товарно-транспортной накладной:

/*Получение реквизитов склада */

SELECT * FROM warehouse_data;

/*Выборка данных  о товарах, вошедших в состав  проданной партии товара*/

SELECT goods.goods_name, goods.unit, sent_goods.price, sent_goods.quantity, (sent_goods.quantity*sent_goods.price) FROM goods, sent_goods WHERE (sent_goods.party_id=' 1') AND (sent_goods.goods_id = goods.goods_id);

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

/*Получение реквизитов покупателя*/

SELECT customer.customer_name, customer.customer_address, customer.customer_account, customer.customer_INN, customer.customer_kpp, customer.customer_phone, customer.customer_bank, customer.customer_address_bank, customer.customer_bik, customer.cor_account, customer.okpo, customer.mainbuh, customer.director, party_sold.customer_id FROM customer, party_sold WHERE (party_sold.customer_id = customer.customer_id) AND (party_sold.party_id =126);

Здесь происходит выборка реквизитов покупателя партии товара.

/*Получение  количества и стоимости товара  с идентификатором 3, прибывшего  на склад после 22.03.2009 (подобные  запросы используются при построении  отчёта)*/

SELECT sum(delivered_goods.quantity * delivered_goods.price) ,sum(delivered_goods.quantity)FROM delivered_goods, party_delivered WHERE(delivered_goods.party_id =party_delivered.party_id)AND(datepart(day,party_delivered._date) > 22 ) AND(datepart(month, party_delivered._date)>= 3 ) AND(datepart(year, party_delivered._date) = 2009 ) AND (delivered_goods.goods_id = 3);

 

5. Клиентская  часть

5.1 Общие  сведения о работе системы

Клиентская  часть программы разработана  посредством QT 4.3.3 для Windows XP и выше. Запускающим модулем является Client.exe.

Для организации доступа к базе данных используется драйвер ODBC для SQL-сервера Microsoft, версия 03.81.9030.

5.2 Функциональное  назначение

Программный продукт  «Автоматизированная система учёта  товаров на оптовом складе (клиент)»  предназначен для доступа к базе данных, хранящей сведения о поступлении и продаже товаров на складе, а также для оформления и печати складских документов: приходных и товарно-транспортных накладных, отчетов по поступившим и проданным товарам. Поддерживается целостность данных, определяемая типом, размером и диапазоном допустимых значений данных. Получить исходные тексты проекта Вы можете, связавшись с автором по адресу strangera@mail.ru

5.3 Инсталляция  и выполнение программного продукта

Перед началом  эксплуатации программного продукта «Автоматизированная система учёта товаров на оптовом складе» необходимо добавить базу данных warehouse на сервер и проверить подключение рабочих станций к серверу.

Далее необходимо с помощью утилиты Windows «Источники данных ODBC» создать пользовательский источник данных warehouse

Затем следует  запустить файл «Установка программы (клиент).exe» и следовать инструкциям  программы – инсталлятора.

5.4 Руководство  пользователя

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

Переход от одного объекта формы к другому осуществляется при нажатии клавиши Tab или щелчком  мыши по соответствующему объекту.

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

5.4.1 Описание  главного окна программы

Рис 6.1 Главное  окно приложения

Главное окно программы  содержит меню для открытия диалоговых окон приложения.

Меню «Операции» содержит команды:

-Добавить партию

-Отправить партию

-Редактировать  список товаров

-Редактировать  список поставщиков

-Редактировать  список покупателей

Меню «Отчёты» содержит команду:

-           Отчёт о поступлении товаров за период

Меню «Настройки»  содержит команды:

-                                   Данные фирмы

-                                   Соединение с базой

Меню «Справка»  предназначено для вызова руководства  пользователя.

5.4.2 Форма  оформления добавления партии  товара

Рис 6.2 Форма  для оформления добавления партии товара

На форме  находятся элементы ввода для  выбора поставщика, товара, его стоимости  и количества. Если усановленя опция  «Распечатать отчёт», то после нажатия  кнопки «Сохранить» открывается  форма предварительного просмотра  и приходной накладной, с возможностью последующей печати. В группах «Поставщики» и «Товары» присутствуют кнопки «Новый» при нажатии на которые открываются диалоги для добавления новых поставщиков.

5.4.3 Форма  оформления отправки партии товара

Рис 6.3 Форма  для оформления продажи партии товара

На форме  находятся элементы ввода для  выбора покупателя товара, количества товара, его стоимости. Если установлена  опция «Распечатать отчёт», то после  нажатия кнопки «Сохранить» открывается  форма предварительного просмотра товарно-транспортной накладной, с возможностью последующей печати. В группе «Покупатель» присутствует кнопка «Новый» при нажатии на которую открывается диалог для добавления новых покупателей. Значения счётчиков «Количество» и «Цена единицы товара» устанавливаются автоматически в максимальное значение для выбранного выбранного товара. Также есть возможность указать наценку в процентах и складские или транспортные расходы. При выборе опции «Распечатать отчёт» открывается диалоговое окно для предварительного просмотра товарно-транспортной накладной с возможностью последующей распечатки. Имеется возможность сохранить товарно-транспортную накладную в формате .pdf.

5.4.4 Форма  для предварительного просмотра  товарно транспортной накладной

Рис 6.4 Форма  для предварительного просмотра товарно — транспортной накладной

Товарно транспортная накладная печатается на бланке типовой  межотраслевой формы №1-Т, утвержденной постановлением Госкомстата России от 28.11.97 №78. Кнопка «Печатать» служит для распечатки накладной, кнопка «PDF» служит для экспорта в формат pdf.

5.4.5 Форма  ввода параметров отчёта

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

 

6. Заключение

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

В ходе выполнения курсовой работы были получены навыки составления SQL запросов, изучены основные приёмы работы с средством проектирования баз данных MS SQL Server Enterprise Manager.

Получить исходные тексты проекта Вы можете, связавшись с автором по адресу strangera@mail.ru.

 

Приложение 1

Текст команд на языке SQL.

/*Создание базы  данных и таблиц*/

CREATE DATABASE warehouse;

USE warehouse;

CREATE TABLE supplier

(

supplier_id INTEGER PRIMARY KEY NOT NULL IDENTITY(1,1),

supplier_name VARCHAR(100),

supplier_address VARCHAR(255),

supplier_account VARCHAR(25),

supplier_inn INTEGER,

suppier_kpp INTEGER,

supplier_phone VARCHAR (20),

supplier_bank VARCHAR (255),

address_bank VARCHAR(255),

supplier_bik INTEGER,

cor_account VARCHAR(25),

okpo INTEGER,

director VARCHAR(255),

chief_accountant VARCHAR(255)

);

CREATE TABLE customer

(

customer_id INTEGER PRIMARY KEY NOT NULL IDENTITY(1,1),

customer_name VARCHAR(100),

customer_address VARCHAR(255),

customer_account VARCHAR(25),

customer_inn INTEGER,

suppier_kpp INTEGER,

customer_phone VARCHAR (20),

customer_bank VARCHAR (255),

address_bank VARCHAR (255),

customer_bik INTEGER,

cor_account VARCHAR(25),

okpo INTEGER,

director VARCHAR(255),

chief_accountant VARCHAR(255)

);

CREATE TABLE goods

(

goods_id INTEGER PRIMARY KEY IDENTITY(1,1),

goods_name VARCHAR(100),

price MONEY,

manufacturer VARCHAR(300),

quantity INTEGER,

unit VARCHAR (50),

massa INTEGER

);

CREATE TABLE party_delivered

(

party_id INTEGER PRIMARY KEY IDENTITY(1,1),

_date DATETIME,

supplier_id INTEGER,

price MONEY

);

CREATE TABLE party_sold

(

party_id INTEGER PRIMARY KEY IDENTITY(1,1),

_date DATETIME,

customer_id INTEGER,

price MONEY,

seria VARCHAR(10)

);

CREATE TABLE sent_goods

(

ID INTEGER PRIMARY KEY IDENTITY(1,1),

goods_id INTEGER,

party_id INTEGER,

quantity INTEGER,

price MONEY

);

CREATE TABLE delivered_goods

(

ID INTEGER PRIMARY KEY IDENTITY(1,1),

goods_id INTEGER,

party_id INTEGER,

quantity INTEGER,

price MONEY

);

CREATE TABLE warehouse_data

(

name VARCHAR(100),

address VARCHAR(255),

inn    INTEGER,

kpp   INTEGER,

phone         VARCHAR(20),

account VARCHAR(25),

bank  VARCHAR(255),

address_bank VARCHAR(255),

bik    INTEGER,

okpo           INTEGER,

cor_account VARCHAR(25),

director VARCHAR(255),

Chief_accountant VARCHAR(255)

);

/*Заполнение таблиц*/

INSERT INTO supplier VALUES

(

‘Поставщик  №1’,

‘г. Астрахань, ул Третья, д 47’,

‘45654233334789d48’,

‘456789123’,

‘159987456’,

‘(8512) 12-58-95’,

‘Первый строительный’,

‘г Астрахань, ул Бабушкина, д 57’,

‘465466545’,

‘45965456854sd987g89’,

‘15987456’,

‘Романов Н.Г.’,

‘Рыбнкова Г.П’

);

INSERT INTO customer VALUES

(

‘Покупатель № 1’,

‘г. Нижневартовск, ул Седьмая, д 14’,

‘45654233334789d48’,

‘456789123’,

‘159987456’,

‘(8512) 12-58-95’,

‘Банк Москвы’,

‘г Москва, ул Степашина, д 57’,

‘465466545’,

‘45965456854sd987g89’,

‘15987456’,

‘Смирнов К.С.’,

‘Иванова Г.П’

);

INSERT INTO goods VALUES

(

‘Товар 1’,

‘521.50’,

‘Производитель 1’,

‘5000’,

‘ящик’,

’20’

);

INSERT INTO party_delivered VALUES

(

’13.03.2009 15:35:01’,

‘1’,

‘456.25’

);

INSERT INTO party_delivered VALUES

(

’14.03.2009 12:00:41’,

‘1’,

‘456.25’

);

INSERT INTO sent_goods VALUES

(

‘1’,

‘4’,

‘998’,

‘500’

);

INSERT INTO delivered_goods VALUES

(

‘1’,

‘4’,

‘365’,

‘456.25’

);

INSERT INTO warehouse_data VALUES

(

‘Центральный  Астраханский склад торговой сети «Мастер+»’,

‘г. Астрахань, ул Перевозная, строение 77’,

‘15123456798’,

‘123456789’,

‘8512 65-98-41’,

‘d4fgd6g4fs5g65456’,

‘Первый строительный банк’,

‘г Астрахань, ул Лесная, Д 45’,

‘546542364556’,

‘12345678’,

‘fds4f56df4s5gf646’,

‘Степанов Н. К’,

‘Гиреева С.Т.’

);

/*Запросы на  выборку данных*/

SQL запросы используемые  при оформлении приходной накладной:

/*Получение реквизитов склада */

SELECT * FROM warehouse_data;

/*Выборка данных  о товарах, прибывших в составе партии товара*/

SELECT goods.goods_name, goods.unit, delivered_goods.price, delivered_goods.quantity, (delivered_goods.quantity*delivered_goods.price) FROM goods, delivered_goods WHERE (delivered_goods.party_id='1') AND (delivered_goods.goods_id = goods.goods_id);

В запросе происходит выборка количества и стоимости  товаров, из таблицы «закупленные товары» (delivered_goods) для всех записей, где поле party_id равно идентификатору пришедшей  партии (в примере номер партии товара равен 1); к тому же для каждой записи происходит выборка наименований товаров и единицы их измерения из таблицы «товары» (goods). Выражение (delivered_goods.quantity * delivered_goods.price) вычисляет сумму для каждого товара.

SQL запросы используемые  при оформлении товарно-транспортной накладной:

/*Получение реквизитов склада */

SELECT * FROM warehouse_data;

/*Выборка данных  о товарах, вошедших в состав  проданной партии товара*/

SELECT goods.goods_name, goods.unit, sent_goods.price, sent_goods.quantity, (sent_goods.quantity*sent_goods.price) FROM goods, sent_goods WHERE (sent_goods.party_id= '1') AND (sent_goods.goods_id = goods.goods_id);

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

/*Получение реквизитов покупателя*/

SELECT customer.customer_name, customer.customer_address, customer.customer_account, customer.customer_INN, customer.customer_kpp, customer.customer_phone, customer.customer_bank, customer.address_bank, customer.customer_bik, customer.cor_account, customer.okpo, customer.chief_accountant, customer.director, party_sold.customer_id FROM customer, party_sold WHERE (party_sold.customer_id = customer.customer_id) AND (party_sold.party_id =126);

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