Разработка информационной системы для ООО "ОйлТрейдГрупп"

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

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

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

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

Если учитывать выбранные ранее средства разработки, рассмотри физическую реализацию структуры данных для СУБД SQLite.

Таблица 2.1. Структура таблицы "Товар на складе" (TovarNaSklade)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

id_t

Артикул

Text

Вторичный ключ

Current

Кол-во имеющегося товара

Integer

Required

Кол-во необходимого товара

Integer

CREATE TABLE `TovarNaSklade` (

`id` INTEGER PRIMARY KEY AUTOINCREMENT,

`Id_t` TEXT NOT NULL,

`Current` INTEGER NOT NULL,

`Required` INTEGER NOT NULL,

FOREIGN KEY (`Id_t`) REFERENCES `Tovar` (`id`)

);

Таблица 2.2. Структура таблицы "Изготовитель" (Manufacturer)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

name_m

Название фирмы изготовителя

Text

CREATE TABLE `Manufacturer` (

`id` INTEGER PRIMARY KEY AUTOINCREMENT,

`name_m` TEXT NOT NULL

);

Таблица 2.3. Структура таблицы "Тип" (ProductType)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

type_tov

Тип товара

Text

CREATE TABLE `ProductType` (

`id` INTEGER PRIMARY KEY AUTOINCREMENT,

`type_tov` TEXT NOT NULL

);

Таблица 2.4. Структура таблицы "Накладная" (Nakladnaya)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

type_n

Тип накладной

Integer

file

Файл в котором хранится накладная

Text

date

Дата

Text

CREATE TABLE `Nakladnaya` (

`id` INTEGER PRIMARY KEY AUTOINCREMENT,

`type_n` INTEGER NOT NULL,

`file` TEXT NOT NULL,

`date` TEXT NOT NULL

);

Таблица 2.5. Структура таблицы "Товар накладной" (TovarNakladn)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

id_n

Номер накладной

Integer

Вторичный ключ

id_t

Артикул

Text

Вторичный ключ

kolvo

Количество товара в накладной

Text

CREATE TABLE `TovarNakladn` (

`id` INTEGER PRIMARY KEY AUTOINCREMENT,

`id_n` INTEGER NOT NULL,

`id_t` TEXT NOT NULL,

`kolvo` INTEGER NOT NULL,

FOREIGN KEY (`id_n`) REFERENCES `Nakladnaya` (`id`),

FOREIGN KEY (`id_t`) REFERENCES `Tovar` (`id`)

);

Таблица 2.6. Структура таблицы "Товар" (Tovar)

Название поля

Описание

Тип поля

Дополнительно

id

Уникальный идентификатор

Integer

Автоинкремент, первичный ключ

name

Название товара

Text

id_type

Номер типа

Integer

Вторичный ключ

id_m

Номер изготовителя

Integer

Вторичный ключ

price

Цена

Integer

unit

Единицы измерения

Integer

CREATE TABLE `Tovar` (

`id` TEXT NOT NULL,

`name` TEXT NOT NULL,

`id_type` INTEGER NOT NULL,

`id_m` INTEGER NOT NULL,

`price` INTEGER NOT NULL,

`unit` INTEGER NOT NULL,

PRIMARY KEY (`id`),

FOREIGN KEY (`id_type`) REFERENCES `ProductType` (`id`),

FOREIGN KEY (`id_m`) REFERENCES `Manufacturer` (`id`)

);

Представленная на (Рис.2.2) физическая модель базы данных построена на основе логической модели базы данных.

Рис.2.2 - Физическая модель базы данных

3. Разработка клиентского приложения

3.1 Выбор языка программирования

Для реализации системы был выбран язык Python и интегрированная среда разработки Geany. Среда разработки имеет множество достоинств:

– Текстовый редактор Geany обладает большой производительность, быстро открывая большие текстовые файлы.

– Реализована подсветка синтаксиса, которая непременно будет полезна разного рода программистам и вебмастерам.

– Базовый функционал программы можно расширить большим количеством модулей

– Geany можно установить на большинство всех популярных ОС: Linux, Windows, MacOS.

В качестве языка программирования был выбран язык Python. Язык программирования - формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно - ЭВМ) под её управлением. Python - это язык программирования общего назначения, распространяемый с открытыми исходными текстами (open source). Он оптимизирован для создания качественного программного обеспечения, высокой производительности труда разработчиков, переносимости программ и интеграции компонентов.

Преимущества Python:

– открытая разработка;

– довольно прост в изучении, особенно на начальном этапе;

– особенности синтаксиса стимулируют программиста писать хорошо читаемый код;

– предоставляет средства быстрого прототипирования и динамической семантики;

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

– механизмы модульности хорошо продуманы и могут быть легко использованы;

3.2 История языка Python

Создание Python было начато Гвидо ван Россумом (Guido van Rossum) в 1991 году, когда он работал над распределенной ОС Амеба. Ему требовался расширяемый язык, который бы обеспечил поддержку системных вызовов. За основу были взяты ABC и Модула-3. В качестве названия он выбрал Python в честь комедийных серий BBC "Летающий цирк Монти-Питона", а вовсе не по названию змеи. С тех пор Python развивался при поддержке тех организаций, в которых Гвидо работал. Особенно активно язык совершенствуется в настоящее время, когда над ним работает не только команда создателей, но и целое сообщество программистов со всего мира. И все-таки последнее слово о направлении развития языка остается за Гвидо ван Россумом.

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

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

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

При создании проекта был использован язык программирования Python и IDE Geany.

Файл main. py:

Подключение библиотек (библиотека виджетов qt, библиотеки SQL qt, системные библиотеки):

from PyQt5. QtWidgets import *

from prihodRashod import *

from product import *

from PyQt5. QtSql import *

import sys

class Main (QMainWindow):

def __init__ (self):

super (Main, self). __init__ ()

self. init ()

Класс QMainWindow служит для создания главного окна приложения. Он позволяет создавать скелет классического приложения с меню и панелями. Здесь происходит инициализация Main.

def init (self):

db = QSqlDatabase. addDatabase ('QSQLITE')

db. setDatabaseName ('BD1. db')

Подключение базы данных:

def init (self):

db = QSqlDatabase. addDatabase ('QSQLITE')

db. setDatabaseName ('BD1. db')

Добавление вкладок "Товар", "Приход/Расход":

tab = QTabWidget ()

Обновление таблицы при переключении вкладок "Товар", "Приход/Расход":

def updateTab (self):

self. productW. updateTable ()

self. prihodRashodW. updateTable ()

if __name__ == '__main__':

app = QApplication (sys. argv)

ex = Main ()

sys. exit (app. exec_ ())

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

class ProductWidget (QWidget):

def __init__ (self, db):

super (ProductWidget, self). __init__ ()

self. db_ = db

self. init ()

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

Файл product. py:

Подключаем библиотеки (библотека виджетов qt, библиотека SQL qt, библиотека для работы с принтером, библиотека для взаимодействий с виджетами пользовательского интерфейса, системные библиотеки)

from PyQt5. QtWidgets import *

from PyQt5. QtSql import *

from PyQt5. QtPrintSupport import *

from PyQt5. QtGui import *

from PyQt5. Qt import *

import sys

Инициализация таблицы и включение сортировки:

def init (self):

self. table = QTableWidget ()

self. table. setSortingEnabled (True)

Создание кнопок "Печать" и "Заявка":

self. lineEdit = QLineEdit ()

self. lineEdit. textEdited. connect (self. shear)

buttonPrint = QPushButton ('Печать')

buttonPrint. clicked. connect (self. printed)

buttonZ = QPushButton ('Заявка')

buttonZ. clicked. connect (self. application)

Размещение виджетов по горизонтали и вертикали:

hbox = QHBoxLayout ()

hbox. addWidget (self. lineEdit)

hbox. addWidget (buttonPrint)

hbox. addWidget (buttonZ)

vbox = QVBoxLayout ()

vbox. addWidget (self. table)

vbox. addLayout (hbox)

Обновление таблицы:

def updateTable (self):

self. db_. open ()

self. table. clear ()

Запрос класса QSqlQuery. Класс имеет функциональные возможности для выполнения и манипулирования командами SQL. Оба DDL и DML типы SQL запросов могут быть выполнены.

query = QSqlQuery (self. db_)

Метод в классе exec_ (), которая принимает в качестве аргумента строку, содержащую инструкцию SQL для выполнения.

j = 0

query. exec ('SELECT id '

'FROM TovarNaSklade')

while query. next ():

j += 1

self. table. setColumnCount (8)

self. table. setRowCount (j)

self. table. setHorizontalHeaderLabels (

['ID', 'Название', 'Тип товара', 'Изготовитель', 'Цена', 'За ед. измерения', 'В наличии', 'Необходимо'])

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

query. exec (

'SELECT TovarNaSklade. id, Tovar. name, ProductType. type_tov, Manufacturer. name_m, Tovar. price, Tovar. unit, TovarNaSklade. Current, TovarNaSklade. Required '

'FROM TovarNaSklade '

'INNER JOIN Tovar On Tovar. id = TovarNaSklade. Id_t '

'INNER JOIN ProductType ON ProductType. id = Tovar. id_type'

'INNER JOIN Manufacturer ON Manufacturer. id = Tovar. id_m')

Создание поиска:

def shear (self):

В этом методе добавляем функцию печати таблицы:

def printed (self):

Добавляем возможность создания заявок:

def application (self):

Файл prihodRashod. py:

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

from PyQt5. QtWidgets import *

from naklad import *

from PyQt5. QtPrintSupport import *

from PyQt5. QtGui import *

Инициализация PrihodRashod:

class PrihodRashod (QWidget):

def __init__ (self, db):

super (PrihodRashod, self). __init__ ()

self. db_ = db

self. init ()

Подключаем БД с накладными:

self. naklad = Naklad (self. db_)

Обновление таблицы при добавлении накладной:

def add (self):

self. naklad. exec ()

self. updateTable ()

Очищаем таблицу:

def updateTable (self):

self. db_. open ()

self. tableRashod. clear ()

self. tablePrihod. clear ()

Класс QPrinter предоставляет установленный в системе принтер. Создание экземпляра класса и диалогового окна:

def printed (self):

Файл naklad. py:

Подключаем библиотеки (библиотека виджетов qt, библиотека SQL qt, библиотека даты и времени)

from PyQt5. QtWidgets import *

from PyQt5. QtSql import *

from datetime import *

QGridLayout объект класса GridLayout представляет с сеткой ячеек, расположенных в строках и столбцах. Любой виджет может быть добавлен путем указания количества строк и столбцов ячейки. QComboBox предоставляет выпадающий список элементов, чтобы выбрать из. Размещаем элементы в ячейки:

def init (self):

gridBox = QGridLayout ()

self. copy = []

self.comboBox = QComboBox ()

self.comboBox. addItems (['Приход', 'Расход'])

label = QLabel ('Файл')

labelType = QLabel ('Тип накладной')

Выбираем и добавляем файл накладной:

def openFile (self):

self. listTovar. clear ()

fileName = QFileDialog. getOpenFileName (self,

'Открыть накладную',

filter='*. txt') [0]

self. lineEdit. setText (fileName)

file = open (fileName, 'r')

for l in file:

self. copy. append (l. strip ())

self. listTovar. addItem (l. strip ())

file. close ()

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

Интерфейс вкладки "Товар" представлен ниже (Рис.3.1).

Рис.3.1 - Вкладка со списком товаров на скдаде

В данной вкладке отображается весь товар, имеющийся на складе, и информация о нем. Также здесь присутствует строка поиска, кнопки "Печать" (Рис.3.2) и "Заявка". "Печать" позволяет нам распечатать таблицу имеющегося товара, "Заявка" создает файл со списком товара, которого не хватает на складе. Вкладка "Приход/Расход" реализует переход в другой раздел.

Рис.3.2 - Всплывающее окно для работы с печатью

Раздел "Приход/Расход" (Рис.3.3) выводит список всех оформленных накладных. Вкладка также включает в себя кнопки "Добавить" и "Распечатать".

Рис.3.3 - Вкладка со списками накладных

"Добавить" (Рис.3.4) позволяет нам добавить новую накладную, кнопка "Распечатать" дает нам возможность распечатать выбранную накладную.

Рис.3.4 - Всплывающее окно добавление накладной

В разделе Приход/Расход (Рис.3.5) также можно распечатать выбранную накладную.

Рис.3.5 - Всплывающее окно для работы с печатью

Заключение

В данной бакалаврской работе осуществлено проектирование и разработка информационной системы автоматизации складского учета на предприятии ООО "ОйлТрейд Групп". Необходимостью её разработки послужила работа с большим объемом бумаг на складе. Были достигнуты поставленные цели, и данная система отвечает заявленным требованиям.

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

Разработанная система имеет следующие возможности:

– Поиск по категориям "ID", "Название", "Тип товара", "Изготовитель", "Цена", "За ед. измерения" и сортировка.

– Пользователь может добавлять, удалять и редактировать информацию о товаре.

– Отображение данных организованно в виде списка, что удобно для работы с данными.

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

...

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

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