Реализация модели управления запасами

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.11.2016
Размер файла 219,7 K

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

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

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

ФГБОУ ВО «Тульский государственный университет»

Технический колледж имени С.И. Мосина

Курсовая работа

По дисциплине: «Математическое моделирование»

На тему: «Реализация модели управления запасами»

Автор работы, студент гр.3-230105 Давыдов А.И.

Руководитель, преподаватель Воронцова Н.В.

Тула 2016

Содержание

Введение

1. Теоретическая часть

1.1 Общая постановка задачи

1.2 Алгоритм решения задачи

2. Практическая часть

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

2.2 Аналитическое решение задачи

2.3 Решение задачи с применением средств вычислительной техники

2.4 Сравнение полученных результатов

Заключение

Список используемой литературы

Приложение

Введение

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

Цель: Изучить теорию моделей управления запасами, на основании полученных знаний решить задачу аналитически и при помощи средств вычислительной техники.

1. Теоретическая часть

1.1 Общая постановка задачи

Рассмотрим основные характеристики моделей управления запасами[3].

Спрос на запасаемый продукт может быть детерминированным (в простейшем случае - постоянным во времени) или случайным. Случайность спроса описывается либо случайным моментом спроса, либо случайным объемом спроса в детерминированные или случайные моменты времени.

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

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

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

Стоимость поставки. Как правило, предполагается, что стоимость каждой поставки слагается из двух компонентов: разовых затрат, не зависящих от объема заказываемой партии, и затрат, зависящих (чаще всего - линейно) от объема партии.

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

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

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

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

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

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

Пусть функции A(t), B(t) и R(t) выражают соответственно пополнение запасов, их расход и спрос на запасаемый продукт за промежуток времени [О, t]. В моделях управления запасами обычно используются производные этих функций по времени a(t), b(t), r(t), называемые соответственно интенсивностями пополнения, расхода и спроса. Если функции a(t), b(t), r(t) - не случайные величины, то модель управления запасами считается детерминированной, если хотя бы одна из них носит случайный характер - стохастической. Если все параметры модели не меняются во времени, она называется статической, в противном случае - динамической. Статические модели используются, когда принимается разовое решение об уровне запасов на определенный период, а динамические - в случае принятия последовательных решений об уровнях запаса или корректировке ранее принятых решении с учетом происходящих изменений.

Модель Уилсона является стохастический, динамический характер.

Рис. 1 Определение оптимального объема заказа [4].

1.2 Алгоритм решения задачи

Пусть общее потребление запасаемого продукта за рассматриваемый интервал времени q равно n, обозначим общее потребление “b”, то интенсивность потребления запаса можно вычислить из формулы: b =n/q

Вся партия будет израсходована за:

t = n/b

Где n - объем партии

Обозначим суммарные затраты через С, затраты на создание запаса - через С1, затраты на хранение запаса - через С2 и найдем эти величины за весь промежуток времени Т.

Пусть затраты на доставку одной партии продукта, не зависимые от объема партии, равны с1, а затраты на хранение одной единицы продукта в единицу времени - с2. Так как за время 0 необходимо запастись N единицами продукта, который доставляется партиями объема п, то число таких партий k равно:

k = N/n = q/T

Отсюда получаем:

С1 = С1*(N/n)

C2 = (C2*q*n)/2

C = C1 + C2

Формула Уилсона

n = n0 = v (2*C1*N / C2*q)

n0 = v (2*C1*b / C2) -

Минимальные суммарные затраты: C0 = 2*C1*N / n

Число оптимальных партий: k0 = N/n0

Время расхода оптимальной партии: T0 = n0 / b

Составим задачу и решим ее аналитически и при помощи ЭВМ.

Условное обозначение товара «R»

C - 256

Q - 128

S - 2048

F - 512

DQ - 64

T - 3

RQ - 86

Кол-во на складе: 56

Где: С - стоимость хранения единицы запаса в год

Q - объем заказа в единицах продукции

S - годовая потребность предприятия в рассматриваемом товаре

N - число заказов в год

F - стоимость оформления партии заказа

T - время поступления новой партии

DQ - ежедневный расход запаса

RQ - уровень страхового резерва

Подставляя исходные данные в выше указанные формулы [4] получим:

Общие годовые затраты на хранение - 16384

Затраты на приобретение партии заказа в год - 8192

Совокупные затраты - 24576

N - 16

Оптимальный размер партии заказа - 90.51

Точка возобновления заказа - 278

Т.к. кол-во товара на складе меньше точки возобновления заказа, то формируем новый заказ.

Новый заказ: Оптимальное кол-во товара в заказе*на кол-во штрафных дней = 90,51*3=271,53

Если штрафной день равен 0, то заказываем по оптимальному количеству.

Штрафной день: кол-во дней при котором склад теоретически будет пустовать. Данная формула исходит из того, что клиентам предлагается обождать 3 дня и забрать свой товар.

2. Практическая часть

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

Магазин бытовой химии имеет на складе мыло «Dave» в количестве 56 штук, стоимость хранения данного товара в год составляет 256 у.е., объем заказа составляет 128 штук, годовая потребность в мыле «Dave» составляет 2048 штук. Стоимость оформления партии заказа 512 у.е., примерный расход товара в день составляет 64 штуки, время поступления нового заказа 3 дня. Величина страхового резерва 86 штук. Определить, необходимо ли делать новый заказ сейчас, найти оптимальную партию заказа.

2.2 Аналитическое решение задачи

Вычислим общие годовые затраты:

Годовые затраты, связанные с хранением:

С*Q/2 = 256*128/2 = 128*128 = 16384

Годовые затраты, связанные с приобретением товара:

F*N = F*S/Q = 512*2058/128 = 8192

Общие годовые затраты: TCC + TOC = 16384 + 8192 = 24576

Вычислим оптимальный размер партии:

v (2*F*S / C) = v(2*512*2048/256) = 90.51

Вычислим точку возобновления заказа:

RQ + DQ * T = 86 + 64*3 = 278

Так как точка возобновления заказа больше количества на складе, то составляем размер партии на заказ для данного товара:

Размер оптимальной партии*V

Где V - количество дней, которое предприятие будет без товара

90.51*3 = 271.53

2.3 Решение задачи с применением средств вычислительной техники

Введем значения в программу: Возможности -> добавить -> товар

Рисунок 2.

Перейдем в модуль решения метода Уилсона:

Рисунок 3.

Как видим, товар скоро закончится, предложено оптимальное количество на дозаказ согласно формулировке, к задаче, решаемой аналитически. стохастический интерфейс программа

Рис. 4 Основное меню программы

2.4 Сравнение полученных результатов

Разница в результатах обосновывается более точным вычислением ЭВМ, тем не менее, разница крайне мала. Задачи решались значительно быстрее и проще при использовании ПО на ЭВМ.

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

ПО облегчает труд и снижает вероятность ошибки практически до 0(т.к. человек может ввести значения с ошибкой, то полностью ее исключить, к сожалению, нельзя).

Из всего вышесказанного очевиден вывод, что пакет программ в данном случае является помощником.

Заключение

Я изучил теоретическую часть методов управления запасами [3]. При помощи полученных знаний решил задачу аналитически и при помощи средств вычислительной техники.

Список используемой литературы

1. ГОСТ 2.105-95 ЕСКД. Общие требования к текстовым документам.

2. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных систем.

3. Исследование операций в экономике: Учебное пособие для вузов/ Н.Ш. Кремер, Б.А.Путко, И.М. Тришин, М.Н. Фридман; Под редакцией проф. Н.Ш. Кремера. - М.: ЮНИТИ, 2000. - 407 с.

Приложение

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

«Kursach_v4.h»

#ifndef KURSACH_H

#define KURSACH_H

#include <QMainWindow>

#include <fstream>

#include <QString>

#include <cmath>

#include <windows.h>

#include <string>

using namespace std;

namespace Ui {

class Kursach;

}

class Kursach : public QMainWindow {

Q_OBJECT

public:

Kursach(QWidget *parent = 0);

~Kursach();

void update();

protected:

void changeEvent(QEvent *e);

private:

Ui::Kursach *ui;

private slots:

void on_pushButton_10_clicked();

void on_pushButton_7_clicked();

void on_pushButton_6_clicked();

void on_pushButton_9_clicked();

void on_pushButton_8_clicked();

void on_pushButton_5_clicked();

void on_action_triggered();

void on_pushButton_4_clicked();

void on_pushButton_3_clicked();

void on_pushButton_2_clicked();

void on_pushButton_clicked();

};

#endif // KURSACH_H

«kursach.cpp»

#include "kursach.h"

#include "ui_kursach.h"

double kol = 0;

Kursach::Kursach(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::Kursach)

{

ui->setupUi(this);

ofstream out("logins.sklad", ios::app);

out.close();

update();

}

Kursach::~Kursach()

{

delete ui;

}

QString log_now;

void Kursach::changeEvent(QEvent *e)

{

QMainWindow::changeEvent(e);

switch (e->type()) {

case QEvent::LanguageChange:

ui->retranslateUi(this);

break;

default:

break;

}

}

bool validate(QString log)

{

string logins[100];

ifstream in("logins.sklad");

char buf;

int ch = 0;

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: logins[ch]+=buf; break;

}

}

in.close();

bool val = true;

for(int i = 0; i<ch; i++)

{if(logins[i]==log.toStdString()) val = false; }

return val;

}

void Kursach::update()

{

string logins[100];

ifstream in("logins.sklad");

char buf;

int ch = 0;

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: logins[ch]+=buf; break;

}

}

in.close();

QString view;

for(int i = 0; i<ch; i++)

{

view+=QString::number(i)+". "+logins[i].c_str()+"\n";

}

ui->label->setText(view);

}

void Kursach::on_pushButton_clicked()

{

QString login = ui->lineEdit->text();

if(validate(login) == false)

{ui->label_3->setText("Уже используется"); }

else

{

ofstream logout("logins.sklad", ios::app);

logout<<login.toStdString()<<"~";

logout.close();

QString name = "Name_"+login+".sklad";

ofstream create(name.toStdString().c_str());

create.close();

QString name2 = "Number_"+login+".sklad";

ofstream create2(name2.toStdString().c_str());

create2.close();

QString name3 = "RP_"+login+".sklad";

ofstream create3(name3.toStdString().c_str());

create3.close();

QString name4 = "Time_"+login+".sklad";

ofstream create4(name4.toStdString().c_str());

create4.close();

QString name5 = "EOQ_"+login+".sklad";

ofstream create5(name5.toStdString().c_str());

create5.close();

ui->label_3->setText("Создан");

}

update();

}

void Kursach::on_pushButton_2_clicked()

{

QString login = ui->lineEdit->text();

if(validate(login)==false)

{

log_now = login;

ui->label_3->setText("Ок");

ui->label_2->setText(login);

}

else

{

ui->label_3->setText("Ошибочный логин");

}

}

void Kursach::on_pushButton_3_clicked()

{

string l = ui->lineEdit->text().toStdString();

if(validate(l.c_str()) == false)

{

string name = "a1_"+log_now.toStdString()+".sklad";

remove(name.c_str());

string name1 = "a2_"+log_now.toStdString()+".sklad";

remove(name1.c_str());

string name2 = "a3_"+log_now.toStdString()+".sklad";

remove(name2.c_str());

string name3 = "a4_"+log_now.toStdString()+".sklad";

remove(name3.c_str());

string name4 = "a5_"+log_now.toStdString()+".sklad";

remove(name4.c_str());

string name5 = "a6_"+log_now.toStdString()+".sklad";

remove(name5.c_str());

string name6 = "a7_"+log_now.toStdString()+".sklad";

remove(name6.c_str());

string name7 = "a8_"+log_now.toStdString()+".sklad";

remove(name7.c_str());

string name8 = "a9_"+log_now.toStdString()+".sklad";

remove(name8.c_str());

string name9 = "EOQ_"+log_now.toStdString()+".sklad";

remove(name9.c_str());

string name10 = "Name_"+log_now.toStdString()+".sklad";

remove(name10.c_str());

string name11 = "Number_"+log_now.toStdString()+".sklad";

remove(name11.c_str());

string name12 = "RP_"+log_now.toStdString()+".sklad";

remove(name12.c_str());

string name13 = "Time_"+log_now.toStdString()+".sklad";

remove(name13.c_str());

string logins[100];

ifstream in("logins.sklad");

char buf;

int ch = 0;

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: logins[ch]+=buf; break;

}

}

in.close();

ofstream out("logins.sklad", ios::out);

for(int i = 0; i<ch; i++)

{

if(logins[i]!=l) out<<logins[i]<<"~";

}

out.close();

log_now="";

ui->label_2->setText(log_now);

update();

}

else

{

ui->label_3->setText("Уже используется");

}

}

void Kursach::on_pushButton_4_clicked()

{

string logins[100];

ifstream in("logins.sklad");

char buf;

int ch = 0;

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: logins[ch]+=buf; break;

}

}

in.close();

for(int i = 0; i<ch; i++)

{

string name = "a1_"+logins[i]+".sklad";

remove(name.c_str());

string name1 = "a2_"+logins[i]+".sklad";

remove(name1.c_str());

string name2 = "a3_"+logins[i]+".sklad";

remove(name2.c_str());

string name3 = "a4_"+logins[i]+".sklad";

remove(name3.c_str());

string name4 = "a5_"+logins[i]+".sklad";

remove(name4.c_str());

string name5 = "a6_"+logins[i]+".sklad";

remove(name5.c_str());

string name6 = "a7_"+logins[i]+".sklad";

remove(name6.c_str());

string name7 = "a8_"+logins[i]+".sklad";

remove(name7.c_str());

string name8 = "a9_"+logins[i]+".sklad";

remove(name8.c_str());

string name9 = "EOQ_"+logins[i]+".sklad";

remove(name9.c_str());

string name10 = "Name_"+logins[i]+".sklad";

remove(name10.c_str());

string name11 = "Number_"+logins[i]+".sklad";

remove(name11.c_str());

string name12 = "RP_"+logins[i]+".sklad";

remove(name12.c_str());

string name13 = "Time_"+logins[i]+".sklad";

remove(name13.c_str());

}

remove("logins.sklad");

qApp->exit();

}

void Kursach::on_action_triggered()

{

qApp->exit();

}

void Kursach::on_pushButton_5_clicked()

{

QString name = "Name_"+log_now+".sklad";

string name_pos = ui->lineEdit_9->text().toStdString();

double a1 = ui->lineEdit_2->text().toDouble(); //Стоимость хранения в год

double a2 = ui->lineEdit_3->text().toDouble(); //Объем заказа в единицах продукции

double a3 = ui->lineEdit_4->text().toDouble(); //Годовая потребность в данном товаре

double a4 = ui->lineEdit_5->text().toDouble(); //Стоимость оформления партии заказа

double a5 = ui->lineEdit_6->text().toDouble(); //Время получения товара

double a6 = ui->lineEdit_7->text().toDouble(); //Примерный расход в день

double a7 = ui->lineEdit_8->text().toDouble(); //Уровень резерва

double a8 = ui->lineEdit_10->text().toDouble(); //Количество на складе

if(a1 == 0) a1=1;

if(a2 == 0) a2=1;

double a9 = a1*a2/2.0; //затраты на хранение годовые

double a10 = a4*a3/a2; //Затраты на приобетение в год

double a11 = a9+a10; //совокупные

double a12 = a3/a2; //Годовое количество заказов

double a13 = sqrt(2*a4*a3/a1); //Оптимальный размер партии

double a14 = a7+a6*a5; //Точка возобновления заказа

QString view = "Годовые затраты на хранение: "+QString::number(a9)+"\nГодовые затраты на приобретение: "+QString::number(a10)+"\nСовокупные затраты: "+QString::number(a11);

view+="\nПримерное количесвто заказов в год: "+QString::number(a12)+"\nОптимальный размер партии заказа: "+QString::number(a13);

view+="\nТочка возобновления заказа: "+QString::number(a14);

ui->label_19->setText(view);

string logins[100];

ifstream in(name.toStdString().c_str());

char buf;

int ch = 0;

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: logins[ch]+=buf; break;

}

}

in.close();

bool val = true;

for(int i = 0; i<ch; i++)

{

if(logins[i] == name_pos) val = false;

}

QString name2 = "Number_"+log_now+".sklad";

QString name3 = "RP_"+log_now+".sklad";

QString name4 = "Time_"+log_now+".sklad";

QString name5 = "EOQ_"+log_now+".sklad";

if(val == true)

{

ofstream n1(name.toStdString().c_str(), ios::app);

n1<<name_pos<<"~";

n1.close();

ofstream n2(name2.toStdString().c_str(), ios::app);

n2<<a8<<"~";

n2.close();

ofstream n3(name3.toStdString().c_str(), ios::app);

n3<<a14<<"~";

n3.close();

ofstream n4(name4.toStdString().c_str(), ios::app);

n4<<a5<<"~";

n4.close();

ofstream n5(name5.toStdString().c_str(), ios::app);

n5<<a13<<"~";

n5.close();

string met1 = "a1_"+log_now.toStdString()+".sklad";

ofstream aa1(met1.c_str(),ios::app);

aa1<<a1<<"~";

aa1.close();

string met2 = "a2_"+log_now.toStdString()+".sklad";

ofstream aa2(met2.c_str(),ios::app);

aa2<<a2<<"~";

aa2.close();

string met3 = "a3_"+log_now.toStdString()+".sklad";

ofstream aa3(met3.c_str(),ios::app);

aa3<<a3<<"~";

aa3.close();

string met4 = "a4_"+log_now.toStdString()+".sklad";

ofstream aa4(met4.c_str(),ios::app);

aa4<<a4<<"~";

aa4.close();

string met5 = "a5_"+log_now.toStdString()+".sklad";

ofstream aa5(met5.c_str(),ios::app);

aa5<<a5<<"~";

aa5.close();

string met6 = "a6_"+log_now.toStdString()+".sklad";

ofstream aa6(met6.c_str(),ios::app);

aa6<<a6<<"~";

aa6.close();

string met7 = "a7_"+log_now.toStdString()+".sklad";

ofstream aa7(met7.c_str(),ios::app);

aa7<<a7<<"~";

aa7.close();

string met8 = "a8_"+log_now.toStdString()+".sklad";

ofstream aa8(met8.c_str(),ios::app);

aa8<<a8<<"~";

aa8.close();

string met9 = "a9_"+log_now.toStdString()+".sklad";

ofstream aa9(met9.c_str(),ios::app);

aa9<<name_pos<<"~";

aa9.close();

}

else

{

ui->label_19->setText("Уже используется это имя.");

}

}

void Kursach::on_pushButton_8_clicked()

{

string name_pos = ui->lineEdit_13->text().toStdString();

QString name[100];

double a1[100];

double a2[100];

double a3[100];

double a4[100];

double a5[100];

double a6[100];

double a7[100];

double a8[100];

for(int i = 0; i<100; i++)

{

a1[i] = 0;

a2[i] = 0;

a3[i] = 0;

a4[i] = 0;

a5[i] = 0;

a6[i] = 0;

a7[i] = 0;

a8[i] = 0;

}

string n1 = "a1_"+log_now.toStdString()+".sklad";

string n2 = "a2_"+log_now.toStdString()+".sklad";

string n3 = "a3_"+log_now.toStdString()+".sklad";

string n4 = "a4_"+log_now.toStdString()+".sklad";

string n5 = "a5_"+log_now.toStdString()+".sklad";

string n6 = "a6_"+log_now.toStdString()+".sklad";

string n7 = "a7_"+log_now.toStdString()+".sklad";

string n8 = "a8_"+log_now.toStdString()+".sklad";

string n9 = "a9_"+log_now.toStdString()+".sklad";

int ch = 0;

char buf;

int p = 0;

int g = 0;

ifstream in1(n1.c_str());

while(!in1.eof())

{

buf = in1.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a1[ch] = a1[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a1[ch] = a1[ch]*10 + 0; if(g==1) p++; break;

case'1': a1[ch] = a1[ch]*10 + 1; if(g==1) p++; break;

case'2': a1[ch] = a1[ch]*10 + 2; if(g==1) p++; break;

case'3': a1[ch] = a1[ch]*10 + 3; if(g==1) p++; break;

case'4': a1[ch] = a1[ch]*10 + 4; if(g==1) p++; break;

case'5': a1[ch] = a1[ch]*10 + 5; if(g==1) p++; break;

case'6': a1[ch] = a1[ch]*10 + 6; if(g==1) p++; break;

case'7': a1[ch] = a1[ch]*10 + 7; if(g==1) p++; break;

case'8': a1[ch] = a1[ch]*10 + 8; if(g==1) p++; break;

case'9': a1[ch] = a1[ch]*10 + 9; if(g==1) p++; break;

}

}

in1.close();

p = 0;

g = 0;

ch = 0;

ifstream in2(n2.c_str());

while(!in2.eof())

{

buf = in2.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a2[ch] = a2[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a2[ch] = a2[ch]*10 + 0; if(g==1) p++; break;

case'1': a2[ch] = a2[ch]*10 + 1; if(g==1) p++; break;

case'2': a2[ch] = a2[ch]*10 + 2; if(g==1) p++; break;

case'3': a2[ch] = a2[ch]*10 + 3; if(g==1) p++; break;

case'4': a2[ch] = a2[ch]*10 + 4; if(g==1) p++; break;

case'5': a2[ch] = a2[ch]*10 + 5; if(g==1) p++; break;

case'6': a2[ch] = a2[ch]*10 + 6; if(g==1) p++; break;

case'7': a2[ch] = a2[ch]*10 + 7; if(g==1) p++; break;

case'8': a2[ch] = a2[ch]*10 + 8; if(g==1) p++; break;

case'9': a2[ch] = a2[ch]*10 + 9; if(g==1) p++; break;

}

}

in2.close();

p = 0;

g = 0;

ch = 0;

ifstream in3(n3.c_str());

while(!in3.eof())

{

buf = in3.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a3[ch] = a3[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a3[ch] = a3[ch]*10 + 0; if(g==1) p++; break;

case'1': a3[ch] = a3[ch]*10 + 1; if(g==1) p++; break;

case'2': a3[ch] = a3[ch]*10 + 2; if(g==1) p++; break;

case'3': a3[ch] = a3[ch]*10 + 3; if(g==1) p++; break;

case'4': a3[ch] = a3[ch]*10 + 4; if(g==1) p++; break;

case'5': a3[ch] = a3[ch]*10 + 5; if(g==1) p++; break;

case'6': a3[ch] = a3[ch]*10 + 6; if(g==1) p++; break;

case'7': a3[ch] = a3[ch]*10 + 7; if(g==1) p++; break;

case'8': a3[ch] = a3[ch]*10 + 8; if(g==1) p++; break;

case'9': a3[ch] = a3[ch]*10 + 9; if(g==1) p++; break;

}

}

in3.close();

p = 0;

g = 0;

ch = 0;

ifstream in4(n4.c_str());

while(!in4.eof())

{

buf = in4.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a4[ch] = a4[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a4[ch] = a4[ch]*10 + 0; if(g==1) p++; break;

case'1': a4[ch] = a4[ch]*10 + 1; if(g==1) p++; break;

case'2': a4[ch] = a4[ch]*10 + 2; if(g==1) p++; break;

case'3': a4[ch] = a4[ch]*10 + 3; if(g==1) p++; break;

case'4': a4[ch] = a4[ch]*10 + 4; if(g==1) p++; break;

case'5': a4[ch] = a4[ch]*10 + 5; if(g==1) p++; break;

case'6': a4[ch] = a4[ch]*10 + 6; if(g==1) p++; break;

case'7': a4[ch] = a4[ch]*10 + 7; if(g==1) p++; break;

case'8': a4[ch] = a4[ch]*10 + 8; if(g==1) p++; break;

case'9': a4[ch] = a4[ch]*10 + 9; if(g==1) p++; break;

}

}

in4.close();

p = 0;

g = 0;

ch = 0;

ifstream in5(n5.c_str());

while(!in5.eof())

{

buf = in5.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a5[ch] = a5[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a5[ch] = a5[ch]*10 + 0; if(g==1) p++; break;

case'1': a5[ch] = a5[ch]*10 + 1; if(g==1) p++; break;

case'2': a5[ch] = a5[ch]*10 + 2; if(g==1) p++; break;

case'3': a5[ch] = a5[ch]*10 + 3; if(g==1) p++; break;

case'4': a5[ch] = a5[ch]*10 + 4; if(g==1) p++; break;

case'5': a5[ch] = a5[ch]*10 + 5; if(g==1) p++; break;

case'6': a5[ch] = a5[ch]*10 + 6; if(g==1) p++; break;

case'7': a5[ch] = a5[ch]*10 + 7; if(g==1) p++; break;

case'8': a5[ch] = a5[ch]*10 + 8; if(g==1) p++; break;

case'9': a5[ch] = a5[ch]*10 + 9; if(g==1) p++; break;

}

}

in5.close();

p = 0;

g = 0;

ch = 0;

ifstream in6(n6.c_str());

while(!in6.eof())

{

buf = in6.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a6[ch] = a6[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a6[ch] = a6[ch]*10 + 0; if(g==1) p++; break;

case'1': a6[ch] = a6[ch]*10 + 1; if(g==1) p++; break;

case'2': a6[ch] = a6[ch]*10 + 2; if(g==1) p++; break;

case'3': a6[ch] = a6[ch]*10 + 3; if(g==1) p++; break;

case'4': a6[ch] = a6[ch]*10 + 4; if(g==1) p++; break;

case'5': a6[ch] = a6[ch]*10 + 5; if(g==1) p++; break;

case'6': a6[ch] = a6[ch]*10 + 6; if(g==1) p++; break;

case'7': a6[ch] = a6[ch]*10 + 7; if(g==1) p++; break;

case'8': a6[ch] = a6[ch]*10 + 8; if(g==1) p++; break;

case'9': a6[ch] = a6[ch]*10 + 9; if(g==1) p++; break;

}

}

in6.close();

p = 0;

g = 0;

ch = 0;

ifstream in7(n7.c_str());

while(!in7.eof())

{

buf = in7.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a7[ch] = a7[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a7[ch] = a7[ch]*10 + 0; if(g==1) p++; break;

case'1': a7[ch] = a7[ch]*10 + 1; if(g==1) p++; break;

case'2': a7[ch] = a7[ch]*10 + 2; if(g==1) p++; break;

case'3': a7[ch] = a7[ch]*10 + 3; if(g==1) p++; break;

case'4': a7[ch] = a7[ch]*10 + 4; if(g==1) p++; break;

case'5': a7[ch] = a7[ch]*10 + 5; if(g==1) p++; break;

case'6': a7[ch] = a7[ch]*10 + 6; if(g==1) p++; break;

case'7': a7[ch] = a7[ch]*10 + 7; if(g==1) p++; break;

case'8': a7[ch] = a7[ch]*10 + 8; if(g==1) p++; break;

case'9': a7[ch] = a7[ch]*10 + 9; if(g==1) p++; break;

}

}

in7.close();

p = 0;

g = 0;

ch = 0;

ifstream in8(n8.c_str());

while(!in8.eof())

{

buf = in8.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a8[ch] = a8[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a8[ch] = a8[ch]*10 + 0; if(g==1) p++; break;

case'1': a8[ch] = a8[ch]*10 + 1; if(g==1) p++; break;

case'2': a8[ch] = a8[ch]*10 + 2; if(g==1) p++; break;

case'3': a8[ch] = a8[ch]*10 + 3; if(g==1) p++; break;

case'4': a8[ch] = a8[ch]*10 + 4; if(g==1) p++; break;

case'5': a8[ch] = a8[ch]*10 + 5; if(g==1) p++; break;

case'6': a8[ch] = a8[ch]*10 + 6; if(g==1) p++; break;

case'7': a8[ch] = a8[ch]*10 + 7; if(g==1) p++; break;

case'8': a8[ch] = a8[ch]*10 + 8; if(g==1) p++; break;

case'9': a8[ch] = a8[ch]*10 + 9; if(g==1) p++; break;

}

}

in8.close();

ch = 0;

ifstream in9(n9.c_str());

while(!in9.eof())

{

buf = in9.get();

switch(buf)

{

case'~': ch++; break;

default: name[ch]+=buf;

}

}

in9.close();

p = 0;

g = 0;

/* string name_pos = ui->lineEdit_9->text().toStdString();

double a1 = ui->lineEdit_2->text().toDouble(); //Стоимость хранения в год

double a2 = ui->lineEdit_3->text().toDouble(); //Объем заказа в единицах продукции

double a3 = ui->lineEdit_4->text().toDouble(); //Годовая потребность в данном товаре

double a4 = ui->lineEdit_5->text().toDouble(); //Стоимость оформления партии заказа

double a5 = ui->lineEdit_6->text().toDouble(); //Время получения товара

double a6 = ui->lineEdit_7->text().toDouble(); //Примерный расход в день

double a7 = ui->lineEdit_8->text().toDouble(); //Уровень резерва

double a8 = ui->lineEdit_10->text().toDouble(); //Количество на складе*/

for(int i = 0; i<ch; i++)

{

if(name_pos == name[i].toStdString())

{

a8[i] = a8[i]+kol;

ui->lineEdit_2->setText(QString::number(a1[i]));

ui->lineEdit_3->setText(QString::number(a2[i]));

ui->lineEdit_4->setText(QString::number(a3[i]));

ui->lineEdit_5->setText(QString::number(a4[i]));

ui->lineEdit_6->setText(QString::number(a5[i]));

ui->lineEdit_7->setText(QString::number(a6[i]));

ui->lineEdit_8->setText(QString::number(a7[i]));

ui->lineEdit_10->setText(QString::number(a8[i]));

ui->lineEdit_9->setText(name[i]);

}

}

}

void Kursach::on_pushButton_9_clicked()

{

string name_pos = ui->lineEdit_13->text().toStdString();

QString add2 = "Number_"+log_now+".sklad";

QString add3 = "RP_"+log_now+".sklad";

QString add4 = "Time_"+log_now+".sklad";

QString add5 = "EOQ_"+log_now+".sklad";

QString add6 = "Name_"+log_now+".sklad";

QString name[100];

QString name2[100];

double a1[100];

double a2[100];

double a3[100];

double a4[100];

double a5[100];

double a6[100];

double a7[100];

double a8[100];

double a9[100];

double a10[100];

double a11[100];

double a12[100];

double a13; //Оптимальный размер партии

double a14; //Точка возобновления заказа

for(int i = 0; i<100; i++)

{

a1[i] = 0;

a2[i] = 0;

a3[i] = 0;

a4[i] = 0;

a5[i] = 0;

a6[i] = 0;

a7[i] = 0;

a8[i] = 0;

a9[i] = 0;

a10[i] = 0;

a11[i] = 0;

a12[i] = 0;

a13 = 0;

a14 = 0;

}

string n1 = "a1_"+log_now.toStdString()+".sklad";

string n2 = "a2_"+log_now.toStdString()+".sklad";

string n3 = "a3_"+log_now.toStdString()+".sklad";

string n4 = "a4_"+log_now.toStdString()+".sklad";

string n5 = "a5_"+log_now.toStdString()+".sklad";

string n6 = "a6_"+log_now.toStdString()+".sklad";

string n7 = "a7_"+log_now.toStdString()+".sklad";

string n8 = "a8_"+log_now.toStdString()+".sklad";

string n9 = "a9_"+log_now.toStdString()+".sklad";

int ch = 0;

char buf;

int p = 0;

int g = 0;

ifstream in1(n1.c_str());

while(!in1.eof())

{

buf = in1.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a1[ch] = a1[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a1[ch] = a1[ch]*10 + 0; if(g==1) p++; break;

case'1': a1[ch] = a1[ch]*10 + 1; if(g==1) p++; break;

case'2': a1[ch] = a1[ch]*10 + 2; if(g==1) p++; break;

case'3': a1[ch] = a1[ch]*10 + 3; if(g==1) p++; break;

case'4': a1[ch] = a1[ch]*10 + 4; if(g==1) p++; break;

case'5': a1[ch] = a1[ch]*10 + 5; if(g==1) p++; break;

case'6': a1[ch] = a1[ch]*10 + 6; if(g==1) p++; break;

case'7': a1[ch] = a1[ch]*10 + 7; if(g==1) p++; break;

case'8': a1[ch] = a1[ch]*10 + 8; if(g==1) p++; break;

case'9': a1[ch] = a1[ch]*10 + 9; if(g==1) p++; break;

}

}

in1.close();

p = 0;

g = 0;

ch = 0;

ifstream in2(n2.c_str());

while(!in2.eof())

{

buf = in2.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a2[ch] = a2[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a2[ch] = a2[ch]*10 + 0; if(g==1) p++; break;

case'1': a2[ch] = a2[ch]*10 + 1; if(g==1) p++; break;

case'2': a2[ch] = a2[ch]*10 + 2; if(g==1) p++; break;

case'3': a2[ch] = a2[ch]*10 + 3; if(g==1) p++; break;

case'4': a2[ch] = a2[ch]*10 + 4; if(g==1) p++; break;

case'5': a2[ch] = a2[ch]*10 + 5; if(g==1) p++; break;

case'6': a2[ch] = a2[ch]*10 + 6; if(g==1) p++; break;

case'7': a2[ch] = a2[ch]*10 + 7; if(g==1) p++; break;

case'8': a2[ch] = a2[ch]*10 + 8; if(g==1) p++; break;

case'9': a2[ch] = a2[ch]*10 + 9; if(g==1) p++; break;

}

}

in2.close();

p = 0;

g = 0;

ch = 0;

ifstream in3(n3.c_str());

while(!in3.eof())

{

buf = in3.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a3[ch] = a3[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a3[ch] = a3[ch]*10 + 0; if(g==1) p++; break;

case'1': a3[ch] = a3[ch]*10 + 1; if(g==1) p++; break;

case'2': a3[ch] = a3[ch]*10 + 2; if(g==1) p++; break;

case'3': a3[ch] = a3[ch]*10 + 3; if(g==1) p++; break;

case'4': a3[ch] = a3[ch]*10 + 4; if(g==1) p++; break;

case'5': a3[ch] = a3[ch]*10 + 5; if(g==1) p++; break;

case'6': a3[ch] = a3[ch]*10 + 6; if(g==1) p++; break;

case'7': a3[ch] = a3[ch]*10 + 7; if(g==1) p++; break;

case'8': a3[ch] = a3[ch]*10 + 8; if(g==1) p++; break;

case'9': a3[ch] = a3[ch]*10 + 9; if(g==1) p++; break;

}

}

in3.close();

p = 0;

g = 0;

ch = 0;

ifstream in4(n4.c_str());

while(!in4.eof())

{

buf = in4.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a4[ch] = a4[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a4[ch] = a4[ch]*10 + 0; if(g==1) p++; break;

case'1': a4[ch] = a4[ch]*10 + 1; if(g==1) p++; break;

case'2': a4[ch] = a4[ch]*10 + 2; if(g==1) p++; break;

case'3': a4[ch] = a4[ch]*10 + 3; if(g==1) p++; break;

case'4': a4[ch] = a4[ch]*10 + 4; if(g==1) p++; break;

case'5': a4[ch] = a4[ch]*10 + 5; if(g==1) p++; break;

case'6': a4[ch] = a4[ch]*10 + 6; if(g==1) p++; break;

case'7': a4[ch] = a4[ch]*10 + 7; if(g==1) p++; break;

case'8': a4[ch] = a4[ch]*10 + 8; if(g==1) p++; break;

case'9': a4[ch] = a4[ch]*10 + 9; if(g==1) p++; break;

}

}

in4.close();

p = 0;

g = 0;

ch = 0;

ifstream in5(n5.c_str());

while(!in5.eof())

{

buf = in5.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a5[ch] = a5[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a5[ch] = a5[ch]*10 + 0; if(g==1) p++; break;

case'1': a5[ch] = a5[ch]*10 + 1; if(g==1) p++; break;

case'2': a5[ch] = a5[ch]*10 + 2; if(g==1) p++; break;

case'3': a5[ch] = a5[ch]*10 + 3; if(g==1) p++; break;

case'4': a5[ch] = a5[ch]*10 + 4; if(g==1) p++; break;

case'5': a5[ch] = a5[ch]*10 + 5; if(g==1) p++; break;

case'6': a5[ch] = a5[ch]*10 + 6; if(g==1) p++; break;

case'7': a5[ch] = a5[ch]*10 + 7; if(g==1) p++; break;

case'8': a5[ch] = a5[ch]*10 + 8; if(g==1) p++; break;

case'9': a5[ch] = a5[ch]*10 + 9; if(g==1) p++; break;

}

}

in5.close();

p = 0;

g = 0;

ch = 0;

ifstream in6(n6.c_str());

while(!in6.eof())

{

buf = in6.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a6[ch] = a6[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a6[ch] = a6[ch]*10 + 0; if(g==1) p++; break;

case'1': a6[ch] = a6[ch]*10 + 1; if(g==1) p++; break;

case'2': a6[ch] = a6[ch]*10 + 2; if(g==1) p++; break;

case'3': a6[ch] = a6[ch]*10 + 3; if(g==1) p++; break;

case'4': a6[ch] = a6[ch]*10 + 4; if(g==1) p++; break;

case'5': a6[ch] = a6[ch]*10 + 5; if(g==1) p++; break;

case'6': a6[ch] = a6[ch]*10 + 6; if(g==1) p++; break;

case'7': a6[ch] = a6[ch]*10 + 7; if(g==1) p++; break;

case'8': a6[ch] = a6[ch]*10 + 8; if(g==1) p++; break;

case'9': a6[ch] = a6[ch]*10 + 9; if(g==1) p++; break;

}

}

in6.close();

p = 0;

g = 0;

ch = 0;

ifstream in7(n7.c_str());

while(!in7.eof())

{

buf = in7.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a7[ch] = a7[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a7[ch] = a7[ch]*10 + 0; if(g==1) p++; break;

case'1': a7[ch] = a7[ch]*10 + 1; if(g==1) p++; break;

case'2': a7[ch] = a7[ch]*10 + 2; if(g==1) p++; break;

case'3': a7[ch] = a7[ch]*10 + 3; if(g==1) p++; break;

case'4': a7[ch] = a7[ch]*10 + 4; if(g==1) p++; break;

case'5': a7[ch] = a7[ch]*10 + 5; if(g==1) p++; break;

case'6': a7[ch] = a7[ch]*10 + 6; if(g==1) p++; break;

case'7': a7[ch] = a7[ch]*10 + 7; if(g==1) p++; break;

case'8': a7[ch] = a7[ch]*10 + 8; if(g==1) p++; break;

case'9': a7[ch] = a7[ch]*10 + 9; if(g==1) p++; break;

}

}

in7.close();

p = 0;

g = 0;

ch = 0;

ifstream in8(n8.c_str());

while(!in8.eof())

{

buf = in8.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a8[ch] = a8[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a8[ch] = a8[ch]*10 + 0; if(g==1) p++; break;

case'1': a8[ch] = a8[ch]*10 + 1; if(g==1) p++; break;

case'2': a8[ch] = a8[ch]*10 + 2; if(g==1) p++; break;

case'3': a8[ch] = a8[ch]*10 + 3; if(g==1) p++; break;

case'4': a8[ch] = a8[ch]*10 + 4; if(g==1) p++; break;

case'5': a8[ch] = a8[ch]*10 + 5; if(g==1) p++; break;

case'6': a8[ch] = a8[ch]*10 + 6; if(g==1) p++; break;

case'7': a8[ch] = a8[ch]*10 + 7; if(g==1) p++; break;

case'8': a8[ch] = a8[ch]*10 + 8; if(g==1) p++; break;

case'9': a8[ch] = a8[ch]*10 + 9; if(g==1) p++; break;

}

}

in8.close();

ch = 0;

p = 0;

g = 0;

ifstream in10(add2.toStdString().c_str());

while(!in10.eof())

{

buf = in10.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a9[ch] = a9[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a9[ch] = a9[ch]*10 + 0; if(g==1) p++; break;

case'1': a9[ch] = a9[ch]*10 + 1; if(g==1) p++; break;

case'2': a9[ch] = a9[ch]*10 + 2; if(g==1) p++; break;

case'3': a9[ch] = a9[ch]*10 + 3; if(g==1) p++; break;

case'4': a9[ch] = a9[ch]*10 + 4; if(g==1) p++; break;

case'5': a9[ch] = a9[ch]*10 + 5; if(g==1) p++; break;

case'6': a9[ch] = a9[ch]*10 + 6; if(g==1) p++; break;

case'7': a9[ch] = a9[ch]*10 + 7; if(g==1) p++; break;

case'8': a9[ch] = a9[ch]*10 + 8; if(g==1) p++; break;

case'9': a9[ch] = a9[ch]*10 + 9; if(g==1) p++; break;

}

}

in10.close();

ch = 0;

p = 0;

g = 0;

ifstream in11(add3.toStdString().c_str());

while(!in11.eof())

{

buf = in11.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a10[ch] = a10[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a10[ch] = a10[ch]*10 + 0; if(g==1) p++; break;

case'1': a10[ch] = a10[ch]*10 + 1; if(g==1) p++; break;

case'2': a10[ch] = a10[ch]*10 + 2; if(g==1) p++; break;

case'3': a10[ch] = a10[ch]*10 + 3; if(g==1) p++; break;

case'4': a10[ch] = a10[ch]*10 + 4; if(g==1) p++; break;

case'5': a10[ch] = a10[ch]*10 + 5; if(g==1) p++; break;

case'6': a10[ch] = a10[ch]*10 + 6; if(g==1) p++; break;

case'7': a10[ch] = a10[ch]*10 + 7; if(g==1) p++; break;

case'8': a10[ch] = a10[ch]*10 + 8; if(g==1) p++; break;

case'9': a10[ch] = a10[ch]*10 + 9; if(g==1) p++; break;

}

}

in11.close();

ch = 0;

p = 0;

g = 0;

ifstream in12(add4.toStdString().c_str());

while(!in12.eof())

{

buf = in12.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a11[ch] = a11[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a11[ch] = a11[ch]*10 + 0; if(g==1) p++; break;

case'1': a11[ch] = a11[ch]*10 + 1; if(g==1) p++; break;

case'2': a11[ch] = a11[ch]*10 + 2; if(g==1) p++; break;

case'3': a11[ch] = a11[ch]*10 + 3; if(g==1) p++; break;

case'4': a11[ch] = a11[ch]*10 + 4; if(g==1) p++; break;

case'5': a11[ch] = a11[ch]*10 + 5; if(g==1) p++; break;

case'6': a11[ch] = a11[ch]*10 + 6; if(g==1) p++; break;

case'7': a11[ch] = a11[ch]*10 + 7; if(g==1) p++; break;

case'8': a11[ch] = a11[ch]*10 + 8; if(g==1) p++; break;

case'9': a11[ch] = a11[ch]*10 + 9; if(g==1) p++; break;

}

}

in12.close();

ch = 0;

p = 0;

g = 0;

ifstream in13(add5.toStdString().c_str());

while(!in13.eof())

{

buf = in13.get();

switch(buf)

{

case'.': g = 1; break;

case'~': a12[ch] = a12[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': a12[ch] = a12[ch]*10 + 0; if(g==1) p++; break;

case'1': a12[ch] = a12[ch]*10 + 1; if(g==1) p++; break;

case'2': a12[ch] = a12[ch]*10 + 2; if(g==1) p++; break;

case'3': a12[ch] = a12[ch]*10 + 3; if(g==1) p++; break;

case'4': a12[ch] = a12[ch]*10 + 4; if(g==1) p++; break;

case'5': a12[ch] = a12[ch]*10 + 5; if(g==1) p++; break;

case'6': a12[ch] = a12[ch]*10 + 6; if(g==1) p++; break;

case'7': a12[ch] = a12[ch]*10 + 7; if(g==1) p++; break;

case'8': a12[ch] = a12[ch]*10 + 8; if(g==1) p++; break;

case'9': a12[ch] = a12[ch]*10 + 9; if(g==1) p++; break;

}

}

in13.close();

ch = 0;

p = 0;

g = 0;

ifstream in111(add6.toStdString().c_str());

while(!in111.eof())

{

buf = in111.get();

switch(buf)

{

case'~': ch++; break;

default: name2[ch]+=buf; break;

}

}

in111.close();

ch = 0;

ifstream in9(n9.c_str());

while(!in9.eof())

{

buf = in9.get();

switch(buf)

{

case'~': ch++; break;

default: name[ch]+=buf; break;

}

}

in9.close();

p = 0;

g = 0;

/* string name_pos = ui->lineEdit_9->text().toStdString();

double a1 = ui->lineEdit_2->text().toDouble(); //Стоимость хранения в год

double a2 = ui->lineEdit_3->text().toDouble(); //Объем заказа в единицах продукции

double a3 = ui->lineEdit_4->text().toDouble(); //Годовая потребность в данном товаре

double a4 = ui->lineEdit_5->text().toDouble(); //Стоимость оформления партии заказа

double a5 = ui->lineEdit_6->text().toDouble(); //Время получения товара

double a6 = ui->lineEdit_7->text().toDouble(); //Примерный расход в день

double a7 = ui->lineEdit_8->text().toDouble(); //Уровень резерва

double a8 = ui->lineEdit_10->text().toDouble(); //Количество на складе*/

ofstream f1(n1.c_str());

ofstream f2(n2.c_str());

ofstream f3(n3.c_str());

ofstream f4(n4.c_str());

ofstream f5(n5.c_str());

ofstream f6(n6.c_str());

ofstream f7(n7.c_str());

ofstream f8(n8.c_str());

ofstream f9(n9.c_str());

ofstream nn1(add2.toStdString().c_str()); //Number

ofstream nn2(add3.toStdString().c_str()); //RP

ofstream nn3(add4.toStdString().c_str()); //time

ofstream nn4(add5.toStdString().c_str()); //eoq

ofstream nn5(add6.toStdString().c_str());

for(int i = 0; i<ch; i++)

{

if(name_pos == name[i].toStdString())

{

name2[i] = ui->lineEdit_9->text();

name[i] = ui->lineEdit_9->text();

a1[i] = ui->lineEdit_2->text().toDouble(); //Стоимость хранения в год

a2[i] = ui->lineEdit_3->text().toDouble(); //Объем заказа в единицах продукции

a3[i] = ui->lineEdit_4->text().toDouble(); //Годовая потребность в данном товаре

a4[i] = ui->lineEdit_5->text().toDouble(); //Стоимость оформления партии заказа

a5[i] = ui->lineEdit_6->text().toDouble(); //Время получения товара

a6[i] = ui->lineEdit_7->text().toDouble(); //Примерный расход в день

a7[i] = ui->lineEdit_8->text().toDouble(); //Уровень резерва

a8[i] = ui->lineEdit_10->text().toDouble(); //Количество на складе

a9[i] = a1[i]*a2[i]/2.0; //затраты на хранение годовые

a10[i] = a4[i]*a3[i]/a2[i]; //Затраты на приобетение в год

a11[i] = a9[i]+a10[i]; //совокупные

a12[i] = a3[i]/a2[i]; //Годовое количество заказов

a13 = sqrt(2*a4[i]*a3[i]/a1[i]); //Оптимальный размер партии

a14 = a7[i]+a6[i]*a5[i]; //Точка возобновления заказа

QString view = "Годовые затраты на хранение: "+QString::number(a9[i])+"\nГодовые затраты на приобретение: "+QString::number(a10[i])+"\nСовокупные затраты: "+QString::number(a11[i]);

view+="\nПримерное количесвто заказов в год: "+QString::number(a12[i])+"\nОптимальный размер партии заказа: "+QString::number(a13);

view+="\nТочка возобновления заказа: "+QString::number(a14);

ui->label_19->setText(view);

ui->lineEdit_10->setText(QString::number(a8[i]));

}

nn5<<name2[i].toStdString()<<"~";

nn1<<a9[i]<<"~";

nn2<<a10[i]<<"~";

nn3<<a11[i]<<"~";

nn4<<a12[i]<<"~";

f1<<a1[i]<<"~";

f2<<a2[i]<<"~";

f3<<a3[i]<<"~";

f4<<a4[i]<<"~";

f5<<a5[i]<<"~";

f6<<a6[i]<<"~";

f7<<a7[i]<<"~";

f8<<a8[i]<<"~";

f9<<name[i].toStdString()<<"~";

}

nn5.close();

nn4.close();

nn3.close();

nn2.close();

nn1.close();

f1.close();

f2.close();

f3.close();

f4.close();

f5.close();

f6.close();

f7.close();

f8.close();

f9.close();

}

void Kursach::on_pushButton_6_clicked()

{

ui->lineEdit_13->setText(ui->lineEdit_11->text());

kol = ui->lineEdit_12->text().toDouble();

on_pushButton_8_clicked();

on_pushButton_9_clicked();

}

void Kursach::on_pushButton_7_clicked()

{

ui->lineEdit_13->setText(ui->lineEdit_11->text());

kol = ui->lineEdit_12->text().toDouble();

kol = -1*kol;

on_pushButton_8_clicked();

on_pushButton_9_clicked();

}

void Kursach::on_pushButton_10_clicked()

{

//Проверка на дефицит

string name[100];

double rp[100];

double eoq[100];

double time[100];

double number[100];

for(int i = 0; i<100; i++)

{

rp[i] = 0;

eoq[i] = 0;

time[i] = 0;

number[i] = 0;

}

char buf;

int ch = 0;

QString add1 = "Name_"+log_now+".sklad";

QString add2 = "RP_"+log_now+".sklad";

QString add3 = "Time_"+log_now+".sklad";

QString add4 = "EOQ_"+log_now+".sklad";

QString add5 = "Number_"+log_now+".sklad";

ifstream in(add1.toStdString().c_str());

while(!in.eof())

{

buf = in.get();

switch(buf)

{

case'~': ch++; break;

default: name[ch]+=buf; break;

}

}

in.close();

ch = 0;

int p = 0;

int g = 0;

ifstream in1(add2.toStdString().c_str());

while(!in1.eof())

{

buf = in1.get();

switch(buf)

{

case'.': g = 1; break;

case'~': rp[ch] = rp[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': rp[ch] = rp[ch]*10 + 0; if(g==1) p++; break;

case'1': rp[ch] = rp[ch]*10 + 1; if(g==1) p++; break;

case'2': rp[ch] = rp[ch]*10 + 2; if(g==1) p++; break;

case'3': rp[ch] = rp[ch]*10 + 3; if(g==1) p++; break;

case'4': rp[ch] = rp[ch]*10 + 4; if(g==1) p++; break;

case'5': rp[ch] = rp[ch]*10 + 5; if(g==1) p++; break;

case'6': rp[ch] = rp[ch]*10 + 6; if(g==1) p++; break;

case'7': rp[ch] = rp[ch]*10 + 7; if(g==1) p++; break;

case'8': rp[ch] = rp[ch]*10 + 8; if(g==1) p++; break;

case'9': rp[ch] = rp[ch]*10 + 9; if(g==1) p++; break;

}

}

in1.close();

ch = 0;

p = 0;

g = 0;

ifstream in2(add3.toStdString().c_str());

while(!in2.eof())

{

buf = in2.get();

switch(buf)

{

case'.': g = 1; break;

case'~': time[ch] = time[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': time[ch] = time[ch]*10 + 0; if(g==1) p++; break;

case'1': time[ch] = time[ch]*10 + 1; if(g==1) p++; break;

case'2': time[ch] = time[ch]*10 + 2; if(g==1) p++; break;

case'3': time[ch] = time[ch]*10 + 3; if(g==1) p++; break;

case'4': time[ch] = time[ch]*10 + 4; if(g==1) p++; break;

case'5': time[ch] = time[ch]*10 + 5; if(g==1) p++; break;

case'6': time[ch] = time[ch]*10 + 6; if(g==1) p++; break;

case'7': time[ch] = time[ch]*10 + 7; if(g==1) p++; break;

case'8': time[ch] = time[ch]*10 + 8; if(g==1) p++; break;

case'9': time[ch] = time[ch]*10 + 9; if(g==1) p++; break;

}

}

in2.close();

ch = 0;

p = 0;

g = 0;

ifstream in3(add4.toStdString().c_str());

while(!in3.eof())

{

buf = in3.get();

switch(buf)

{

case'.': g = 1; break;

case'~': eoq[ch] = eoq[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': eoq[ch] = eoq[ch]*10 + 0; if(g==1) p++; break;

case'1': eoq[ch] = eoq[ch]*10 + 1; if(g==1) p++; break;

case'2': eoq[ch] = eoq[ch]*10 + 2; if(g==1) p++; break;

case'3': eoq[ch] = eoq[ch]*10 + 3; if(g==1) p++; break;

case'4': eoq[ch] = eoq[ch]*10 + 4; if(g==1) p++; break;

case'5': eoq[ch] = eoq[ch]*10 + 5; if(g==1) p++; break;

case'6': eoq[ch] = eoq[ch]*10 + 6; if(g==1) p++; break;

case'7': eoq[ch] = eoq[ch]*10 + 7; if(g==1) p++; break;

case'8': eoq[ch] = eoq[ch]*10 + 8; if(g==1) p++; break;

case'9': eoq[ch] = eoq[ch]*10 + 9; if(g==1) p++; break;

}

}

in3.close();

ch = 0;

p = 0;

g = 0;

ifstream in4(add5.toStdString().c_str());

while(!in4.eof())

{

buf = in4.get();

switch(buf)

{

case'.': g = 1; break;

case'~': number[ch] = number[ch]/pow(10,p); ch++; p = 0; g = 0; break;

case'0': number[ch] = number[ch]*10 + 0; if(g==1) p++; break;

case'1': number[ch] = number[ch]*10 + 1; if(g==1) p++; break;

case'2': number[ch] = number[ch]*10 + 2; if(g==1) p++; break;

case'3': number[ch] = number[ch]*10 + 3; if(g==1) p++; break;

case'4': number[ch] = number[ch]*10 + 4; if(g==1) p++; break;

case'5': number[ch] = number[ch]*10 + 5; if(g==1) p++; break;

case'6': number[ch] = number[ch]*10 + 6; if(g==1) p++; break;

case'7': number[ch] = number[ch]*10 + 7; if(g==1) p++; break;

case'8': number[ch] = number[ch]*10 + 8; if(g==1) p++; break;

case'9': number[ch] = number[ch]*10 + 9; if(g==1) p++; break;

}

}

in4.close();

p = 0;

g = 0;

QString view;

for(int i = 0; i<ch; i++)

{

if(rp[i]<=number[i])

{

view+="|"+QString::number(i) +"|. Товар: "+name[i].c_str()+" <font color = 'green'>не требует<font color = 'black'> заказа новой партии. Сейчас на складе: <font color 'red'>"+QString::number(number[i])+"<font color = 'black'> у.е.<br>";

}

if(rp[i]>number[i])

{

double warning = 0;

if(eoq[i]*time[i]>=rp[i])

{

warning = eoq[i]*time[i];

}

if(eoq[i]*time[i]<rp[i])

{

double del = rp[i]-eoq[i]*time[i];

warning = eoq[i]*time[i] + del*time[i];

}

view+="|"+QString::number(i) +"|. Товар: "+name[i].c_str()+"<font color = 'red'> Требует <font color = 'black'> оформления новой партии<br>этого товара, во избежании отсутствия его на прилавке. <br>Количество товаров новой партии расчитывается из: количества дней доставки, оптимального количества товара на заказ, <br>а так же от нехватки товара по прибытии(для ликвидации нехватки товара уже по прибытию новой партии).<br>Количество нового товара на дозаказ: <font color = 'red'>"+QString::number(warning)+"<font color = 'black'> у.е. Сейчас на складе: <font color = 'red'>"+QString::number(number[i])+" <font color = 'black'>у.е. <br>";

}

ui->textBrowser->setText(view);

}

}

«main.cpp»

#include <QtGui/QApplication>

#include <QTextCodec> // подключение класса кодека текста

#include "kursach.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251")); //изменения

QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251")); //изменения

QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251")); //изменения

Kursach w;

w.show()

return a.exec();

}

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

...

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

  • Управление запасами: содержание, ключевые параметры. Моделирование системы управления запасами. Разработка проектной документации на создание информационной системы управления запасами склада, алгоритмическое обеспечение, детальное проектирование.

    дипломная работа [1,1 M], добавлен 14.11.2017

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

    курсовая работа [347,3 K], добавлен 21.01.2013

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

    курсовая работа [429,6 K], добавлен 22.06.2007

  • Общая характеристика и свойства системы Matlab - пакета прикладных программ для решения задач технических вычислений. Разработка математической модели в данной среде, программирование функций для задающего воздействия. Проектирование GUI-интерфейса.

    курсовая работа [1023,2 K], добавлен 23.05.2013

  • Анализ проблемы управления запасами; понятие зависимого и независимого спроса. Математическая и алгоритмическая модели динамического программирования для задачи управления запасами. Программный продукт Inventory Managment в среде Visual Studio 2010.

    курсовая работа [2,1 M], добавлен 10.11.2012

  • Практические навыки системного исследования реальной динамической сложной системы на основе построения ее имитационной модели. Автоматизация работы по расчету эффективности системы массового обслуживания с понятным интерфейсом. Выбор алгоритма решения.

    курсовая работа [1,0 M], добавлен 18.08.2009

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

    курсовая работа [495,8 K], добавлен 09.06.2013

  • Исследование системы автоматического управления при помощи программного обеспечения MATLAB и пакета Simulink. Изучение замкнутой системы согласно критериям устойчивости Гурвица, Михайлова и Найквиста. Реализация модели "жесткого" спутника Земли.

    методичка [911,6 K], добавлен 10.10.2010

  • Разработка математической модели системы. Моделирование работы конвейера сборочного цеха в течении 8 часов. Определение вероятности пропуска секции. Расчет количества скомплектованных изделий за 8 часов. Исследование системы на имитационной модели.

    контрольная работа [98,3 K], добавлен 24.09.2014

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

    дипломная работа [3,2 M], добавлен 18.05.2014

  • Понятие математической модели, свойства и классификация. Характеристика элементов системы Mathcad. Алгоритмический анализ задачи: описание математической модели, графическая схема алгоритма. Реализация базовой модели и описание исследований MathCAD.

    реферат [1,0 M], добавлен 20.03.2014

  • Присвоение значений параметров передаточных функций разомкнутой и замкнутой САР в виде полиномов и типовых динамических звеньев разомкнутой системы. Разработка математической модели электротехнической системы в символьном и символьно-цифровом виде.

    практическая работа [456,4 K], добавлен 05.12.2009

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

    курсовая работа [606,5 K], добавлен 20.04.2015

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

    курсовая работа [406,0 K], добавлен 24.12.2014

  • Применение, функции и элементы контроллеров. Функциональная структура системы управления движением поездов. Этапы проектирования контроллера для модели железной дороги на основе микропроцессора. Реализация машинной модели, блок-схема и листинг программы.

    курсовая работа [744,6 K], добавлен 08.11.2009

  • Расчет тепловой схемы с применением методов математического моделирования. Разработка алгоритма реализации модели. Составление программы для ПЭВМ, ее отладка и тестирование. Проведение численного исследования и параметрическая оптимизация системы.

    курсовая работа [2,8 M], добавлен 01.03.2013

  • Сравнительный анализ Matlab и Mathcad при моделировании динамических систем. Подсистема Simulink пакета MATLAB. Расчёт базовой модели и проведения исследований. Описание математической модели. Векторные и матричные операторы. Нижние и верхние индексы.

    курсовая работа [338,5 K], добавлен 06.02.2014

  • Исследование основных динамических характеристик предприятия по заданному каналу управления, результаты которого достаточны для синтеза управляющей системы (СУ). Построение математической модели объекта управления. Анализ частотных характеристик СУ.

    курсовая работа [2,1 M], добавлен 14.07.2012

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

    курсовая работа [1,2 M], добавлен 31.05.2013

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

    курсовая работа [630,5 K], добавлен 01.06.2015

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