Разработка программного обеспечения поддержки процессов закупа и учёта

Автор работы: Пользователь скрыл имя, 07 Мая 2012 в 18:00, дипломная работа

Описание

Целью проектирования является разработка средства автоматизированной информационной поддержки работы логистика склада по поддержке процессов закупа и учёта хранения товаров на складе.
В соответствии с поставленной целью можно сформулировать следующие задачи разработки системы:
 системный анализ работы логистика;
 построение схемы информационного взаимодействия отдела логистики с другими подразделениями пред

Содержание

Введение................................................................................................................ 7
1 Описание предметной области………………………………………………. 9
1.1 Обзор систем организации управления предприятия ..……………….. 9
1.2 Характеристика объекта автоматизации ………………………………. 14
1.3 Описание и схема информационного взаимодействия элементов
Системы …..………………………………………………...……………… 16
2 Описание постановки комплекса задач системы …..………………………. 18
2.1 Общая характеристика задач системы …..….………………………… 18
2.2 Выходная информация ………...………………………………………. 28
2.3 Входная информация…………………………………………………… 29
2.4 Технологические процесс функционирования системы
в автоматизированном режиме……………………………………………. 30
2.5 Требования к программно-техническому обеспечению…………….... 32
2.5.1 Комплекс технических средств………………………………........ 32
2.5.2 Общесистемное программное обеспечение….…………….…….. 33
2.5.3 Выбор и обоснование инструментального средства……….……. 33
3 Разработка информационного обеспечения системы………………...……. 36
3.1 Состав и структура таблиц базы данных системы………………….. 37
3.2 Логическая модель взаимосвязи таблиц базы данных системы….... 44
3.3 Информационная модель системы..…..…………………………….... 45
3.4 Описание алгоритмов и программ…………….…

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

Бакалаврская работа.doc

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

      «Поступления»;

      «Продажи»;

      «Списания»;

      «Инвентаризация».

              Эти подразделы предназначены для ввода документов «Приходная накладная», «Расходная накладная», «Акт на списание» и «Инвентаризационная ведомость». Рассмотрим работу их на примере подпункта меню «Продажи». Окно работы программы разделено на 2 части (см. рисунок 5.8). Первая часть предназначена для добавления новых записей на основе документа расходная накладная. Она имеет три поля для выбора наименования товара, заказчика,  сотрудника, ответственного за отгрузку товара из справочников «Наименования товаров», «Сотрудники», «Клиенты». Так же эта часть окна предоставляет выбор даты продажи товара, ввод номера документа и количества проданного товара. На данной форме имеется две кнопки управления: «Очистить форму» и «Добавить запись». При нажатии кнопки «Очистить форму» в форме добавления записи очищаются все выбранные записи. При нажатии кнопки «Добавить строку» в базу данных добавляется новая строка и в нее записываются выбранные значения из бланка добавления записи. В другой части окна мы имеем возможность просмотра внесённых изменений в таблицу базы данных «Продажи».

 

              Б.3.3 Описание работы с пунктом меню «Справочники»

              Рассмотрим пункт меню «Справочники». В этом пункте меню предоставляется доступ к справочникам базы данных. Пункт меню «Справочники» разделен на следующие подпункты:

      «Товар»;

      «Наименования товаров»;

      «Группы товаров»;

      «Сотрудники»;

      «Должность»;

      «Клиенты»;

      «Поставщики»;

      «Банки»;

      «Причины списания».

Подпункты пункта меню «Справочники» предназначены для просмотра и редактирования справочников базы данных. Для этого предусмотрено два поля (см. рисунок 5.9): первое – добавление данных в справочник, второе – просмотр справочника системы. 

 

              Б.3.3 Описание работы с пунктом меню «Отчеты»

              В пункте меню «Отчеты» представлены все отчеты системы. К ним относят:

      «Бланк заказа»;

      «Объем продаж»;

      «Ведомость остатков»;

      «Списания».

При выборе пункта меню «Ведомость остатков» появляется окошко (см. рисунок 5.10), предлагающее выбрать группу товаров для вывода таблицы ведомости остатков. При нажатии кнопки «Отмена» управление программой переходит в главное меню. При нажатии кнопки «ОК» программа начинает формировать отчёт  «Ведомость остатков»   по введенным параметрам. Результаты формирования отчёта представлены на рисунке 5.11. На этой экранной форме имеется кнопка управления «Изменить параметры расчета». При нажатии этой кнопки программа открывает диалог задания параметров для формирования отчёта  «Ведомость остатков».

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

              Рассмотрим подпункт меню «Бланк заказа». При выборе этого подпункта меню организуется диалог с пользователем для задания параметров Бланка заказа (см. рисунок 5.12).  Пользователю предлагается ввести номер заказа и количество товаров в заказе,  а также  выбрать дату заказа, наименование товара, поставщика и сотрудника оформившего заказ для вывода таблицы заказы.

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

              Результаты формирования таблицы «Заказы» представлены на рисунке 5.12. На этой экранной форме имеется кнопка управления «Изменить параметры расчета». При нажатии этой кнопки программа открывает диалог задания параметров для формирования  «Бланка заказа».

 

 

             

 

 

 

 


Приложение В

 

Листинг программы

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

USEFORM("Unit2.cpp", Form2);

USEFORM("Unit3.cpp", Form3);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

        try

        {

                 Application->Initialize();

                 Application->CreateForm(__classid(TForm1), &Form1);

                 Application->CreateForm(__classid(TForm2), &Form2);

                 Application->CreateForm(__classid(TForm3), &Form3);

                 Application->Run();

        }

        catch (Exception &exception)

        {

                 Application->ShowException(&exception);

        }

        catch (...)

        {

                 try

                 {

                         throw Exception("");

                 }

                 catch (Exception &exception)

                 {

                         Application->ShowException(&exception);

                 }

        }

        return 0;

}

//---------------------------------------------------------------------------

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "date.h"

#include <systdate.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N6Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N8Click(TObject *Sender)

{

  this->GroupBox2->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  this->GroupBox1->Visible=true;

  UpdateComboBoxGoods();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N2Click(TObject *Sender)

{

  this->GroupBox1->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  this->GroupBox2->Visible=true;

  UpdateComboBoxSale();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N3Click(TObject *Sender)

{

  this->GroupBox1->Visible=false;

  this->GroupBox2->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  this->GroupBox3->Visible=true;

  UpdateComboBoxSupplies();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N4Click(TObject *Sender)

{

  this->GroupBox2->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox1->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  this->GroupBox4->Visible=true;

  UpdateComboBoxWrite_off();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N5Click(TObject *Sender)

{

  this->GroupBox2->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox1->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  this->GroupBox5->Visible=true;

  UpdateComboBoxInventory();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::N29Click(TObject *Sender)

{

  this->GroupBox2->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox1->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox7->Visible=false;

  this->GroupBox13->Visible=false;

  //  this->GroupBox6->Visible=true;

  Form1->Enabled=false;

  Form2->Show();

 

}

//---------------------------------------------------------------------------

void TForm1:: GZ()

{

TDataSet *ds1 = DataSource18->DataSet;

TDataSet *ds2 = DataSource20->DataSet;

TDataSet *ds3 = DataSource19->DataSet;

int S= 0;

int tpost

int zpost

int length = ds1->RecordCount;

AnsiString *str1 = new AnsiString[length];

int gr = (int)Form1->Table1->FieldValues["id_group"];

int dn = (int)Form1->Table1->FieldValues["dn"];

int dk = (int)Form1->Table1->FieldValues["dk"];

for (ds1->First(); !ds1->Eof; ds1->Next())

        {

        if(Form1->Table2->FieldValues["id_group"]==gr)

                        {

                  S = 0;

                  for (ds2->First(); !ds2->Eof; ds2->Next())

                    Form1->Button11->Caption = "Zapasi";

                        if(Form1->Table3->FieldValues["id_name"]==Form1->Table2->FieldValues["id_tov"])

                         if((int)Form1->Table3->FieldValues["date"]>=dn && (int)Form1->Table3->FieldValues["date"]<=dk && Form1->Table3->FieldValues["id_packing"]==pac)

                                 S=S+ Form1->Table3->FieldValues["amount"];

                  Form1->Table1->Append();

                  Form1->Table1->FieldValues["id_name"] = Form1->Table2->FieldValues["id_tov"];

                  Form1->Table1->FieldValues["Vsale"] = S;

                  Form1->Table1->Post();

                 }

        }

Vprod = 0;

for (ds3->First(), ds3->Next(); !ds3->Eof; ds3->Next())

        S = S + Form1->Table1->FieldValues["Vsale"];

for (ds3->First(), ds3->Next(); !ds3->Eof; ds3->Next())

        {

        Form1->Table1->Append();

        Form1->Table1->FieldValues["spare"] = Form1->Table1->FieldValues FGZ = (tpost + zpost) * P – P* tpost

        Form1->Table1->Post();

        Form1->Query6->Active=false;

        Form1->Query6->Active=true;

        }

                  Form1->Query6->Active=false;

                  Form1->Query6->Active=true;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::ORZClick(TObject *Sender)

{

  this->GroupBox2->Visible=false;

  this->GroupBox3->Visible=false;

  this->GroupBox1->Visible=false;

  this->GroupBox4->Visible=false;

  this->GroupBox5->Visible=false;

  this->GroupBox6->Visible=false;

  this->GroupBox13->Visible=false;

  //  this->GroupBox7->Visible=true;

  Form1->Enabled=false;

  Form3->Show();

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button11Click(TObject *Sender)

{

Form1->GroupBox6->Visible=false;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button12Click(TObject *Sender)

{

  Form1->Enabled=false;

  Form2->Show();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button13Click(TObject *Sender)

{

Form1->GroupBox7->Visible=false;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button14Click(TObject *Sender)

{

  Form1->Enabled=false;

  Form3->Show();

}

//---------------------------------------------------------------------------

 

void TForm1::UpdateComboBoxGoods()

{

ComboBox1->Clear();

ComboBox2->Clear();

ComboBox3->Clear();

ComboBox4->Clear();

ComboBox5->Clear();

Query8->Active = false;

Query8->Active = true;

TDataSet *ds = DataSource8->DataSet;

int length = ds->RecordCount;

AnsiString *str = new AnsiString[length];

int i = 0, j = 0;

for (ds->First(); !ds->Eof; ds->Next())

str[i++] = DataSource8->DataSet->FieldByName("Tov")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox1->Items->Add(str[j]);

        }

 

Query9->Active = false;

Query9->Active = true;

TDataSet *ds1 = DataSource9->DataSet;

length = ds1->RecordCount;

AnsiString *str1 = new AnsiString[length];

i = 0;

for (ds1->First(); !ds1->Eof; ds1->Next())

str1[i++] = DataSource9->DataSet->FieldByName("Group")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox2->Items->Add(str1[j]);

        }

 

Query10->Active = false;

Query10->Active = true;

TDataSet *ds2 = DataSource10->DataSet;

length = ds2->RecordCount;

AnsiString *str2 = new AnsiString[length];

i = 0;

for (ds2->First(); !ds2->Eof; ds2->Next())

str2[i++] = DataSource10->DataSet->FieldByName("Naimenovanie")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox3->Items->Add(str2[j]);

        }

 

Query11->Active = false;

Query11->Active = true;

TDataSet *ds3 = DataSource11->DataSet;

length = ds3->RecordCount;

AnsiString *str3 = new AnsiString[length];

i = 0;

for (ds3->First(); !ds3->Eof; ds3->Next())

str3[i++] = DataSource11->DataSet->FieldByName("Prodagi")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox4->Items->Add(str3[j]);

        }

 

Query12->Active = false;

Query12->Active = true;

TDataSet *ds4 = DataSource12->DataSet;

length = ds4->RecordCount;

AnsiString *str4 = new AnsiString[length];

i = 0;

for (ds4->First(); !ds4->Eof; ds4->Next())

str4[i++] = DataSource12->DataSet->FieldByName("Proizvoditel")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox5->Items->Add(str4[j]);

        }

}

 

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

  UpdateComboBoxGoods();

  Edit1->Text = "";

  Edit2->Text = "";

  Edit3->Text = "";

  Edit4->Text = "";

}

//---------------------------------------------------------------------------

void TForm1::UpdateComboBoxSale()

{

ComboBox6->Clear();

ComboBox7->Clear();

ComboBox10->Clear();

Query8->Active = false;

Query8->Active = true;

TDataSet *ds = DataSource8->DataSet;

int length = ds->RecordCount;

AnsiString *str = new AnsiString[length];

int i = 0, j = 0;

for (ds->First(); !ds->Eof; ds->Next())

str[i++] = DataSource8->DataSet->FieldByName("Tov")->AsString;

for (j = 0; j < length; j++)

        {

         ComboBox6->Items->Add(str[j]);

        }

 

Query9->Active = false;

Query9->Active = true;

TDataSet *ds1 = DataSource9->DataSet;

length = ds1->RecordCount;

AnsiString *str1 = new AnsiString[length];

i = 0;

for (ds1->First(); !ds1->Eof; ds1->Next())

Информация о работе Разработка программного обеспечения поддержки процессов закупа и учёта