Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diplomnaya_Ramil_posledny_variant (1) Бизнес-план.doc
Скачиваний:
63
Добавлен:
19.03.2016
Размер:
1.56 Mб
Скачать

Приложение

BussinesProcess.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing.Drawing2D;

using System.Drawing;

namespace Диплом

{

public struct Job

{

public String namePeople;

public String nameOffice;

public IList<String> funktion;

}

public class BussinesProcess

{

public String nameProcess;

public bool PrOrJob;

public Job funk;

public IList<BussinesProcess> neiboor;

public bool fun;

public BussinesProcess funktion;

public Point m;

}

}

Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

namespace Диплом

{

public partial class Form1 : Form

{

bool fl;/////////////////выбор диаграмм

Graphics graphics;

Bitmap B_map;

IList<String> именаБлоковБизнесФункций = new List<String>();

IList<String> именаОтделов = new List<String>();

Rectangle[] Отделы = new Rectangle[4];

public int kef = 10;

Rectangle[] бизнесФункции = new Rectangle[7];

Rectangle[] началоКонец = new Rectangle[2];

Rectangle[] бизнесФункции1 = new Rectangle[7];

public Form1()

{

InitializeComponent();

B_map = new Bitmap(900, 700);

graphics = Graphics.FromImage(B_map);

graphics.Clear(Color.White);

pictureBox1.Image = B_map;

именаБлоковБизнесФункций.Add("Принятие заявок");

именаБлоковБизнесФункций.Add("Формирование задания для отгрузки");

именаБлоковБизнесФункций.Add("Распределение транспортных средств");

именаБлоковБизнесФункций.Add("Отгрузка");

именаБлоковБизнесФункций.Add("Подготовка документов");

именаБлоковБизнесФункций.Add("Экспедирование");

именаБлоковБизнесФункций.Add("Контроль и анализ договоров");

именаОтделов.Add("Логистика");

именаОтделов.Add("Транспортная\nкомпания");

именаОтделов.Add("Отдел обра-\nботки доку-\nментов");

именаОтделов.Add("Склад");

richTextBox1.ReadOnly = true;

button2.Enabled = false;

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

{

Point P1;

if (i < 1)

{

P1 = new Point((900 / 2) + 30, 5);

началоКонец[i].Location = P1;

началоКонец[i].Width = 30;

началоКонец[i].Height = 30;

}

else

{

P1 = new Point((900 / 2) + (900 / 3) + 30, 640);

началоКонец[i].Location = P1;

началоКонец[i].Width = 30;

началоКонец[i].Height = 30;

}

}

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

{

Point P1 = new Point((900 / 2) + (900 / 4) - 30, i * 100 + 5);

бизнесФункции1[i].Location = P1;

бизнесФункции1[i].Width = 30;

бизнесФункции1[i].Height = 30;

}

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

{

Point P1 = new Point(900 / 4 - 30, i * 100 + 5);

бизнесФункции[i].Location = P1;

бизнесФункции[i].Width = 30;

бизнесФункции[i].Height = 30;

}

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

{

Point P1;

if (i < 2)

{

P1 = new Point(20, 250 + i * 250);

}

else

{

P1 = new Point((900 / 3) + 30, 250 + (i - 2) * 250);

}

Отделы[i].Location = P1;

Отделы[i].Width = 100;

Отделы[i].Height = 50;

}

}

public void RisArrow(Point X, Point Y)

{

Pen penLINE = new Pen(Color.Black, 2);

graphics.DrawLine(penLINE, X, Y);

double ugol = Math.Atan2(X.X - Y.X, X.Y - Y.Y);

graphics.DrawLine(penLINE, Y.X, Y.Y, Convert.ToInt32(Y.X + 15 * Math.Sin(0.3 + ugol)), Convert.ToInt32(Y.Y + 15 * Math.Cos(0.3 + ugol)));

graphics.DrawLine(penLINE, Y.X, Y.Y, Convert.ToInt32(Y.X + 15 * Math.Sin(ugol - 0.3)), Convert.ToInt32(Y.Y + 15 * Math.Cos(ugol - 0.3)));

pictureBox1.Image = B_map;

}

private void button1_Click(object sender, EventArgs e)

{

richTextBox1.Text = "";

for (int i = 0; i < именаБлоковБизнесФункций.Count; i++)

{

richTextBox1.Text += Convert.ToString(i + 1) + " - " + именаБлоковБизнесФункций[i] + "\n";

}

Pen pen = new Pen(Color.Black,2);

Point p1 = new Point(900/2,0);

Point p2 = new Point(900/2,700);

graphics.DrawLine(pen,p1,p2);

pen.Color = Color.Red;

pen.Width = 3;

graphics.DrawRectangles(pen, бизнесФункции);

graphics.DrawRectangles(pen, бизнесФункции1);

pen.Color = Color.Green;

pen.Width = 3;

graphics.DrawRectangles(pen, Отделы);

graphics.DrawRectangles(pen, началоКонец);

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

{

String Text = String.Format("{0}", Convert.ToString(i+1));

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, бизнесФункции[i].Location.X + kef, бизнесФункции[i].Location.Y + kef);

}

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

{

if (i < 1)

{

String Text = String.Format("{0}", "Nо");

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, началоКонец[i].Location.X + kef, началоКонец[i].Location.Y + kef);

}

else

{

String Text = String.Format("{0}", "Nф");

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, началоКонец[i].Location.X + kef, началоКонец[i].Location.Y + kef);

}

}

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

{

String Text = String.Format("{0}", Convert.ToString(i + 1));

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, бизнесФункции1[i].Location.X + kef, бизнесФункции1[i].Location.Y + kef);

}

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

{

String Text = String.Format("{0}", именаОтделов[i]);

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, Отделы[i].Location.X + kef, Отделы[i].Location.Y + kef);

}

///////////////////////////////////////////Стрелки для 2 диаграммы

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

{

Point X = new Point(бизнесФункции1[i].Location.X + 30 / 2, бизнесФункции1[i].Location.Y + 30);

Point Y = new Point(бизнесФункции1[i + 1].Location.X + 30 / 2, бизнесФункции1[i + 1].Location.Y);

RisArrow(X, Y);

}

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

{

Point X;

Point Y;

if (i < 1)

{

X = new Point(началоКонец[i].Location.X + 30, началоКонец[i].Location.Y + 30 / 2);

Y = new Point(бизнесФункции1[i].Location.X, бизнесФункции1[i].Location.Y + 30 / 2);

RisArrow(X, Y);

}

else

{

X = new Point(бизнесФункции1[бизнесФункции1.Length - 1].Location.X + 30, бизнесФункции1[бизнесФункции1.Length - 1].Location.Y + 30 / 2);

Y = new Point(началоКонец[i].Location.X, началоКонец[i].Location.Y + 30 / 2);

RisArrow(X, Y);

}

}

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

{

pen.Width = 2;

pen.Color = Color.Black;

Point X;

Point Y;

switch (i)

{

case 0: {

X = new Point(бизнесФункции1[1].Location.X, бизнесФункции1[1].Location.Y + 30 / 2);

Y = new Point(бизнесФункции1[1].Location.X - 60, бизнесФункции1[1].Location.Y + 30 / 2);

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[бизнесФункции1.Length - 1].Location.X - 60;

Y.Y = бизнесФункции1[бизнесФункции1.Length - 1].Location.Y + 30 / 2;

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[бизнесФункции1.Length - 1].Location.X;

RisArrow(X, Y);

break; }

case 1:

{

X = new Point(бизнесФункции1[2].Location.X + 30, бизнесФункции1[2].Location.Y + 30 / 2);

Y = new Point(бизнесФункции1[2].Location.X + 60, бизнесФункции1[2].Location.Y + 30 / 2);

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[1].Location.X + 60;

Y.Y = бизнесФункции1[1].Location.Y + 30 / 2;

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[1].Location.X + 30;

RisArrow(X, Y);

break;

}

case 2: {

X = new Point(бизнесФункции1[3].Location.X, бизнесФункции1[3].Location.Y + 30 / 2);

Y = new Point(бизнесФункции1[3].Location.X - 30, бизнесФункции1[3].Location.Y + 30 / 2);

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[2].Location.X - 30;

Y.Y = бизнесФункции1[2].Location.Y + 30 / 2;

graphics.DrawLine(pen, X, Y);

X = Y;

Y.X = бизнесФункции1[1].Location.X;

RisArrow(X, Y);

break;

}

}

}

///////////////////////////////////////////Стрелки для 1 диаграммы

Point X1 = new Point(бизнесФункции[0].Location.X,бизнесФункции[0].Location.Y + 30/2);

Point Y1 = new Point(Отделы[0].Location.X + 100 / 4, Отделы[0].Location.Y);

RisArrow(X1, Y1);

X1.X += 30;

Y1.X = Отделы[2].Location.X + 100 / 4;

Y1.Y = Отделы[2].Location.Y;

RisArrow(X1, Y1);

X1.X -= 30;

X1.Y = бизнесФункции[1].Location.Y + 30 / 2;

Y1.X = Отделы[0].Location.X + (100/4) * 3;

Y1.Y = Отделы[0].Location.Y;

RisArrow(X1, Y1);

X1.Y = бизнесФункции[2].Location.Y + 30 / 2;

Y1.X = Отделы[1].Location.X + 100 / 4;

Y1.Y = Отделы[1].Location.Y;

RisArrow(X1, Y1);

X1.Y = бизнесФункции[3].Location.Y + 30 / 2;

Y1.X = Отделы[1].Location.X + (100 / 4) * 3;

Y1.Y = Отделы[1].Location.Y;

RisArrow(X1, Y1);

X1.X += 30;

Y1.X = Отделы[3].Location.X + 100 / 4;

Y1.Y = Отделы[3].Location.Y;

RisArrow(X1, Y1);

X1.Y = бизнесФункции[4].Location.Y + 30 / 2;

Y1.X = Отделы[2].Location.X + (100 / 4) * 3;

Y1.Y = Отделы[2].Location.Y + 50;

RisArrow(X1, Y1);

X1.X -= 30;

X1.Y = бизнесФункции[5].Location.Y + 30 / 2;

Y1.X = Отделы[0].Location.X + (100 / 4) * 3;

Y1.Y = Отделы[0].Location.Y + 50;

RisArrow(X1, Y1);

Y1.X = Отделы[1].Location.X + 100;

Y1.Y = Отделы[1].Location.Y + 50 / 2;

RisArrow(X1, Y1);

X1.X += 30;

X1.Y = бизнесФункции[6].Location.Y + 30 / 2;

Y1.X = Отделы[2].Location.X + 100 / 4;

Y1.Y = Отделы[2].Location.Y + 50;

RisArrow(X1, Y1);

pictureBox1.Image = B_map;

fl = true;

button2.Enabled = true;

}

private void pictureBox1_Click(object sender, EventArgs e)

{

}

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)

{

if (fl == true)

{

int k = -1;

for (int i = 0; i < Отделы.Length; i++)

{

if (e.Location.X >= Отделы[i].Location.X && e.Location.X <= Отделы[i].Location.X + 100 && e.Location.Y >= Отделы[i].Location.Y && e.Location.Y <= Отделы[i].Location.Y + 50)

k = i;

}

switch (k)

{

case 0:

{

Form2 f2 = new Form2();

f2.ShowDialog();

break;

}

case 1:

{

MessageBox.Show("Форма ТК");

break;

}

case 2:

{

MessageBox.Show("Форма ООД");

break;

}

case 3:

{

MessageBox.Show("Форма Склад");

break;

}

default: break;

}

}

}

private void button2_Click(object sender, EventArgs e)

{

Form3 f = new Form3();

f.ShowDialog();

}

}

}

Form1.Designer.cs

namespace Диплом

{

partial class Form1

{

/// <summary>

/// Требуется переменная конструктора.

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Код, автоматически созданный конструктором форм Windows

/// <summary>

/// Обязательный метод для поддержки конструктора - не изменяйте

/// содержимое данного метода при помощи редактора кода.

/// </summary>

private void InitializeComponent()

{

this.pictureBox1 = new System.Windows.Forms.PictureBox();

this.richTextBox1 = new System.Windows.Forms.RichTextBox();

this.button1 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();

this.SuspendLayout();

//

// pictureBox1

//

this.pictureBox1.Location = new System.Drawing.Point(13, 13);

this.pictureBox1.Name = "pictureBox1";

this.pictureBox1.Size = new System.Drawing.Size(900, 700);

this.pictureBox1.TabIndex = 0;

this.pictureBox1.TabStop = false;

this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);

this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);

//

// richTextBox1

//

this.richTextBox1.Location = new System.Drawing.Point(919, 224);

this.richTextBox1.Name = "richTextBox1";

this.richTextBox1.Size = new System.Drawing.Size(419, 494);

this.richTextBox1.TabIndex = 1;

this.richTextBox1.Text = "";

//

// button1

//

this.button1.Location = new System.Drawing.Point(919, 179);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(116, 39);

this.button1.TabIndex = 2;

this.button1.Text = "Нарисовать диаграммы";

this.button1.UseVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// button2

//

this.button2.Location = new System.Drawing.Point(919, 12);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(116, 39);

this.button2.TabIndex = 3;

this.button2.Text = "Построить бизнес-процесс";

this.button2.UseVisualStyleBackColor = true;

this.button2.Click += new System.EventHandler(this.button2_Click);

//

// Form1

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(1350, 730);

this.Controls.Add(this.button2);

this.Controls.Add(this.button1);

this.Controls.Add(this.richTextBox1);

this.Controls.Add(this.pictureBox1);

this.Name = "Form1";

this.Text = "Диплом";

((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();

this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.PictureBox pictureBox1;

private System.Windows.Forms.RichTextBox richTextBox1;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Button button2;

}

}

Form2.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Диплом

{

public partial class Form2 : Form

{

BussinesProcess BP;

Graphics graphics;

Bitmap B_map;

public int kef = 10;

public int kefX = 50 + 90;

public int kefY = 50 + 40;

public int W = 90;

public int H = 40;

public Form2()

{

int K = 10;

BP = new BussinesProcess();

String NM;

InitializeComponent();

B_map = new Bitmap(900, 700);

graphics = Graphics.FromImage(B_map);

graphics.Clear(Color.White);

pictureBox1.Image = B_map;

BP.funk = new Job();

BP.neiboor = new List<BussinesProcess>();

BP.nameProcess = "Логистика";

BP.PrOrJob = false;

BP.fun = false;

/////////////////////////////////////////////////////////////////////

BussinesProcess b = new BussinesProcess();

b.PrOrJob = true;

b.fun = false;

b.funk = new Job();

b.funk.funktion = new List<String>();

b.neiboor = new List<BussinesProcess>();

b.nameProcess = "Начальник от-\nдела логистики";

//////////////////////////////////////////////////////////////////////

b.funk.namePeople = "Марья Ивановна";

b.funk.nameOffice = "Начальник отдела логистики";

NM = "Найм новых сотрудников";

b.funk.funktion.Add(NM);

NM = "Распределение ресурсов";

b.funk.funktion.Add(NM);

NM = "Контроль качества";

b.funk.funktion.Add(NM);

/////////////////////////////////////////////////////////////////////

BussinesProcess b1 = new BussinesProcess();

b1.PrOrJob = true;

b1.fun = false;

b1.funk = new Job();

b1.funk.funktion = new List<String>();

b1.nameProcess = "Логист";

/////////////////////////////////////////////////////////////////////

b1.funk.nameOffice = "Логист";

b1.funk.namePeople = "Сидоров Петя";

NM = "Выбор типа транспортного средства.";

b1.funk.funktion.Add(NM);

NM = "Выбор вида транспортного средства.";

b1.funk.funktion.Add(NM);

NM = "Совместное планирование транспортных процессов со складскими и производственными операциями.";

b1.funk.funktion.Add(NM);

NM = "Совместное планирование транспортных процессов на различных видах транспорта.";

b1.funk.funktion.Add(NM);

NM = "Обеспечение технологического единства транспортно-складского процесса.";

b1.funk.funktion.Add(NM);

NM = "Определение рациональных маршрутов поставки.";

b1.funk.funktion.Add(NM);

/////////////////////////////////////////////////////////////////////

b.neiboor.Add(b1);

/////////////////////////////////////////////////////////////////////

b1 = new BussinesProcess();

b1.PrOrJob = true;

b1.fun = false;

b1.funk = new Job();

b1.funk.funktion = new List<String>();

b1.nameProcess = "Отдел экспе-\nдирования";

/////////////////////////////////////////////////////////////////////

b1.funk.nameOffice = "Экспедитор";

b1.funk.namePeople = "Иванов Федька";

NM = "Доставка товара.";

b1.funk.funktion.Add(NM);

NM = "Получение денежных средств.";

b1.funk.funktion.Add(NM);

NM = "Доставка денежных средств на базу.";

b1.funk.funktion.Add(NM);

/////////////////////////////////////////////////////////////////////

b.neiboor.Add(b1);

BP.neiboor.Add(b);

}

public IList<Point> raspredY(int size, int Y)

{

IList<Point> arr = new List<Point>(size);

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

{

Point xy = new Point();

xy.Y = Y;

xy.X = kefX + (i+1) * 500 / (size + 1);

arr.Add(xy);

}

return arr;

}

public void RisArrow(Point X, Point Y)

{

Pen penLINE = new Pen(Color.Black, 2);

graphics.DrawLine(penLINE, X, Y);

double ugol = Math.Atan2(X.X - Y.X, X.Y - Y.Y);

graphics.DrawLine(penLINE, Y.X, Y.Y, Convert.ToInt32(Y.X + 15 * Math.Sin(0.3 + ugol)), Convert.ToInt32(Y.Y + 15 * Math.Cos(0.3 + ugol)));

graphics.DrawLine(penLINE, Y.X, Y.Y, Convert.ToInt32(Y.X + 15 * Math.Sin(ugol - 0.3)), Convert.ToInt32(Y.Y + 15 * Math.Cos(ugol - 0.3)));

pictureBox1.Image = B_map;

}

public void RisBlock(BussinesProcess a)

{

Pen pen = new Pen(Color.Red, 3);

graphics.DrawRectangle(pen, a.m.X, a.m.Y, W, H);

String Text = String.Format("{0}", a.nameProcess);

Brush Кисть = new SolidBrush(Color.Black);

graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;

graphics.DrawString(Text, new System.Drawing.Font("Times New Roman", 9, FontStyle.Bold), Кисть, a.m.X + kef, a.m.Y + kef);

pictureBox1.Image = B_map;

}

private void Form2_Load(object sender, EventArgs e)

{

BP.m.Y = 10;

int Y = kefY + BP.m.Y;

BP.m.X = kefX + 500 / (1 + 1);

IList<Point> arr = new List<Point>();

arr = raspredY(BP.neiboor.Count, Y);

for (int i = 0; i < BP.neiboor.Count; i++)

{

BP.neiboor[i].m = arr[i];

}

Y = Y + kefY;

RisBlock(BP);

for (int i = 0; i < BP.neiboor.Count; i++)

{

RisBlock(BP.neiboor[i]);

}

for (int i = 0; i < BP.neiboor.Count; i++)

{

arr = raspredY(BP.neiboor[i].neiboor.Count, Y);

for (int j = 0; j < BP.neiboor[i].neiboor.Count; j++)

{

BP.neiboor[i].neiboor[j].m = arr[j];

RisBlock(BP.neiboor[i].neiboor[j]);

}

}

Point XX = new Point();

XX.X = BP.m.X + W / 2;

XX.Y = BP.m.Y + H;

for (int i = 0; i < BP.neiboor.Count; i++)

{

Point YY = new Point();

YY.Y = BP.neiboor[i].m.Y;

YY.X = BP.neiboor[i].m.X + W / 2;

RisArrow(XX, YY);

Point XYY = new Point();

XYY.X = YY.X;

XYY.Y = YY.Y + H;

for (int j = 0; j < BP.neiboor[i].neiboor.Count; j++)

{

Point YYY = new Point();

YYY.Y = BP.neiboor[i].neiboor[j].m.Y;

YYY.X = BP.neiboor[i].neiboor[j].m.X + W / 2;

RisArrow(XYY, YYY);

}

}

}

private void pictureBox1_MouseClick(object sender, EventArgs e)

{

}

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)

{

for (int i = 0; i < BP.neiboor.Count; i++)

{

if (BP.neiboor[i].PrOrJob == true && BP.neiboor[i].m.X <= e.Location.X

&& BP.neiboor[i].m.X + W >= e.Location.X

&& BP.neiboor[i].m.Y <= e.Location.Y

&& BP.neiboor[i].m.Y + H >= e.Location.Y)

{

String Str = "";

Str = BP.neiboor[i].funk.nameOffice + "\n";

for (int j = 0; j < BP.neiboor[i].funk.funktion.Count; j++)

{

Str += Convert.ToString(j + 1) + " - " + BP.neiboor[i].funk.funktion[j] + "\n";

}

MessageBox.Show(Str);

}

else

{

for (int j = 0; j < BP.neiboor[i].neiboor.Count; j++)

{

if (BP.neiboor[i].neiboor[j].PrOrJob == true && BP.neiboor[i].neiboor[j].m.X <= e.Location.X

&& BP.neiboor[i].neiboor[j].m.X + W >= e.Location.X

&& BP.neiboor[i].neiboor[j].m.Y <= e.Location.Y

&& BP.neiboor[i].neiboor[j].m.Y + H >= e.Location.Y)

{

String Str = "";

Str = BP.neiboor[i].neiboor[j].funk.nameOffice + "\n";

for (int j1 = 0; j1 < BP.neiboor[i].neiboor[j].funk.funktion.Count; j1++)

{

Str += Convert.ToString(j1 + 1) + " - " + BP.neiboor[i].neiboor[j].funk.funktion[j1] + "\n";

}

MessageBox.Show(Str);

}

}

}

}

}

}

}

Form2.Designer.cs

namespace Диплом

{

partial class Form2

{

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Clean up any resources being used.

/// </summary>

/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.pictureBox1 = new System.Windows.Forms.PictureBox();

((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();

this.SuspendLayout();

//

// pictureBox1

//

this.pictureBox1.Location = new System.Drawing.Point(12, 12);

this.pictureBox1.Name = "pictureBox1";

this.pictureBox1.Size = new System.Drawing.Size(900, 700);

this.pictureBox1.TabIndex = 0;

this.pictureBox1.TabStop = false;

this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);

//

// Form2

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(924, 725);

this.Controls.Add(this.pictureBox1);

this.Name = "Form2";

this.Text = "Логистика";

this.Load += new System.EventHandler(this.Form2_Load);

((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();

this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.PictureBox pictureBox1;

}

}

Form3.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Диплом

{

public partial class Form3 : Form

{

public struct El

{

public int numBP;

public String nameBL;

public bool fl;

public bool Start;

public int t;

public int n;

public int s;

}

public struct StrGr

{

public El A;

public IList<El> B;

}

public struct Variant

{

public IList<El> var;

}

public struct Znach

{

public int t;

public int n;

public int s;

}

IList<Znach> znach = new List<Znach>();

IList<Variant> varianty = new List<Variant>();

IList<StrGr> grammatik= new List<StrGr>();

public Form3()

{

InitializeComponent();

richTextBox2.ReadOnly = true;

richTextBox1.ReadOnly = true;

El Start = new El();

Start.fl = false;

Start.Start = true;

Start.nameBL = "";

Start.numBP = -1;

Start.n = 0;

Start.s = Start.t = -1;

El Finish = new El();

Finish.fl = false;

Finish.Start = false;

Finish.nameBL = "";

Finish.numBP = -1;

Finish.n = 0;

Finish.s = Finish.t = -1;

El l1 = new El();

l1.fl = true;

l1.Start = true;

l1.numBP = 1;

l1.nameBL = "Логистика";

l1.n = 0;

l1.s = l1.t = -1;

El o1 = new El();

o1.fl = true;

o1.Start = true;

o1.numBP = 1;

o1.nameBL = "Отдел обработки документов";

o1.n = 0;

o1.s = o1.t = -1;

El l2 = new El();

l2.fl = true;

l2.Start = true;

l2.numBP = 2;

l2.nameBL = "Логистика";

l2.n = 0;

l2.s = l2.t = -1;

El t3 = new El();

t3.fl = true;

t3.Start = true;

t3.numBP = 3;

t3.nameBL = "Транспортная компания";

t3.n = 0;

t3.s = t3.t = -1;

El t4 = new El();

t4.fl = true;

t4.Start = true;

t4.numBP = 4;

t4.nameBL = "Транспортная компания";

t4.n = 0;

t4.s = t4.t = -1;

El s4 = new El();

s4.fl = true;

s4.Start = true;

s4.numBP = 4;

s4.nameBL = "Склад";

s4.n = 0;

s4.s = s4.t = -1;

El o5 = new El();

o5.fl = true;

o5.Start = true;

o5.numBP = 5;

o5.nameBL = "Отдел обработки документов";

o5.n = 0;

o5.s = o5.t = -1;

El t6 = new El();

t6.fl = true;

t6.Start = true;

t6.numBP = 6;

t6.nameBL = "Транспортная компания";

t6.n = 0;

t6.s = t6.t = -1;

El l6 = new El();

l6.fl = true;

l6.Start = true;

l6.numBP = 6;

l6.nameBL = "Логистика";

l6.n = 0;

l6.s = l6.t = -1;

El o7 = new El();

o7.fl = true;

o7.Start = true;

o7.numBP = 7;

o7.nameBL = "Отдел обработки документов";

o7.n = 0;

o7.s = o7.t = -1;

StrGr g1 = new StrGr();

g1.A = Start;

g1.B = new List<El>();

g1.B.Add(l1);

g1.B.Add(o1);

StrGr g2 = new StrGr();

g2.A = l1;

g2.B = new List<El>();

g2.B.Add(l2);

StrGr g3 = new StrGr();

g3.A = o1;

g3.B = new List<El>();

g3.B.Add(l2);

StrGr g4 = new StrGr();

g4.A = l2;

g4.B = new List<El>();

g4.B.Add(t3);

g4.B.Add(o7);

StrGr g5 = new StrGr();

g5.A = t3;

g5.B = new List<El>();

g5.B.Add(l2);

g5.B.Add(t4);

g5.B.Add(s4);

StrGr g6 = new StrGr();

g6.A = t4;

g6.B = new List<El>();

g6.B.Add(t3);

g6.B.Add(o5);

StrGr g7 = new StrGr();

g7.A = s4;

g7.B = new List<El>();

g7.B.Add(t3);

g7.B.Add(o5);

StrGr g8 = new StrGr();

g8.A = o5;

g8.B = new List<El>();

g8.B.Add(t6);

g8.B.Add(l6);

StrGr g9 = new StrGr();

g9.A = t6;

g9.B = new List<El>();

g9.B.Add(o7);

StrGr g10 = new StrGr();

g10.A = l6;

g10.B = new List<El>();

g10.B.Add(o7);

StrGr g11 = new StrGr();

g11.A = o7;

g11.B = new List<El>();

g11.B.Add(Finish);

grammatik.Add(g1);

grammatik.Add(g2);

grammatik.Add(g3);

grammatik.Add(g4);

grammatik.Add(g5);

grammatik.Add(g6);

grammatik.Add(g7);

grammatik.Add(g8);

grammatik.Add(g9);

grammatik.Add(g10);

grammatik.Add(g11);

}

private void Form3_Load(object sender, EventArgs e)

{

PrintGrammatik();

}

void PrintGrammatikResurs()

{

richTextBox1.Text = "";

for (int i = 0; i < grammatik.Count; i++)

{

if (!grammatik[i].A.fl)

{

if (grammatik[i].A.Start)

richTextBox1.Text += "No -> ";

else

richTextBox1.Text += "Nф -> ";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].A.numBP) + "{" + grammatik[i].A.nameBL[0] + "} -> ";

}

for (int j = 0; j < grammatik[i].B.Count - 1; j++)

{

if (!grammatik[i].B[j].fl)

{

if (grammatik[i].B[j].Start)

richTextBox1.Text += "No | ";

else

richTextBox1.Text += "Nф | ";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].B[j].numBP) + "{" + grammatik[i].B[j].nameBL[0] + "} t = " + grammatik[i].B[j].t + " n = " + grammatik[i].B[j].n + " s = " + grammatik[i].B[j].s + " | ";

}

}

if (!grammatik[i].B[grammatik[i].B.Count - 1].fl)

{

if (grammatik[i].B[grammatik[i].B.Count - 1].Start)

richTextBox1.Text += "No \n";

else

richTextBox1.Text += "Nф \n";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].B[grammatik[i].B.Count - 1].numBP) + "{" + grammatik[i].B[grammatik[i].B.Count - 1].nameBL[0] + "} t = " + grammatik[i].B[grammatik[i].B.Count - 1].t + " n = " + grammatik[i].B[grammatik[i].B.Count - 1].n + " s = " + grammatik[i].B[grammatik[i].B.Count - 1].s + "\n";

}

}

}

void PrintGrammatik()

{

richTextBox1.Text = "";

for (int i = 0; i < grammatik.Count; i++)

{

if (!grammatik[i].A.fl)

{

if (grammatik[i].A.Start)

richTextBox1.Text += "No -> ";

else

richTextBox1.Text += "Nф -> ";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].A.numBP) + "{" + grammatik[i].A.nameBL[0] + "} -> ";

}

for (int j = 0; j < grammatik[i].B.Count - 1; j++)

{

if (!grammatik[i].B[j].fl)

{

if (grammatik[i].B[j].Start)

richTextBox1.Text += "No | ";

else

richTextBox1.Text += "Nф | ";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].B[j].numBP) + "{" + grammatik[i].B[j].nameBL[0] + "} | ";

}

}

if (!grammatik[i].B[grammatik[i].B.Count - 1].fl)

{

if (grammatik[i].B[grammatik[i].B.Count - 1].Start)

richTextBox1.Text += "No \n";

else

richTextBox1.Text += "Nф \n";

}

else

{

richTextBox1.Text += Convert.ToString(grammatik[i].B[grammatik[i].B.Count - 1].numBP) + "{" + grammatik[i].B[grammatik[i].B.Count - 1].nameBL[0] + "} \n";

}

}

}

private void button2_Click(object sender, EventArgs e)

{

Random rnd = new Random();

if (textBox34.Text == "" || textBox34.Text == " " ||

textBox35.Text == "" || textBox35.Text == " " ||

textBox36.Text == "" || textBox36.Text == " ")

{

MessageBox.Show("Незаполнены диапазоны");

return;

}

int t = Convert.ToInt32(textBox34.Text);

int n = Convert.ToInt32(textBox35.Text);

int s = Convert.ToInt32(textBox36.Text);

for (int i = 0; i < grammatik.Count; i++)

{

switch (i)

{

case 0:

{

textBox1.Text = Convert.ToString(rnd.Next(1,t));

textBox11.Text = Convert.ToString(rnd.Next(1, n));

textBox21.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 1:

{

textBox2.Text = Convert.ToString(rnd.Next(1, t));

textBox12.Text = Convert.ToString(rnd.Next(1, n));

textBox22.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 2:

{

textBox3.Text = Convert.ToString(rnd.Next(1, t));

textBox13.Text = Convert.ToString(rnd.Next(1, n));

textBox23.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 3:

{

textBox4.Text = Convert.ToString(rnd.Next(1, t));

textBox14.Text = Convert.ToString(rnd.Next(1, n));

textBox24.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 4:

{

textBox5.Text = Convert.ToString(rnd.Next(1, t));

textBox15.Text = Convert.ToString(rnd.Next(1, n));

textBox25.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 5:

{

textBox6.Text = Convert.ToString(rnd.Next(1, t));

textBox16.Text = Convert.ToString(rnd.Next(1, n));

textBox26.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 6:

{

textBox7.Text = Convert.ToString(rnd.Next(1, t));

textBox17.Text = Convert.ToString(rnd.Next(1, n));

textBox27.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 7:

{

textBox8.Text = Convert.ToString(rnd.Next(1, t));

textBox18.Text = Convert.ToString(rnd.Next(1, n));

textBox28.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 8:

{

textBox9.Text = Convert.ToString(rnd.Next(1, t));

textBox19.Text = Convert.ToString(rnd.Next(1, n));

textBox29.Text = Convert.ToString(rnd.Next(1, s));

break;

}

case 9:

{

textBox10.Text = Convert.ToString(rnd.Next(1, t));

textBox20.Text = Convert.ToString(rnd.Next(1, n));

textBox30.Text = Convert.ToString(rnd.Next(1, s));

break;

}

}

}

}

private void button1_Click(object sender, EventArgs e)

{

int maxT;

int maxN;

int maxS;

if (textBox31.Text == "" || textBox31.Text == " " ||

textBox32.Text == "" || textBox32.Text == " " ||

textBox33.Text == "" || textBox33.Text == " ")

{

MessageBox.Show("Незаполнены предпочтения по ресурсам");

return;

}

maxT = Convert.ToInt32(textBox31.Text);

maxN = Convert.ToInt32(textBox32.Text);

maxS = Convert.ToInt32(textBox33.Text);

for (int i = 0; i < grammatik.Count; i++)

{

for (int j = 0; j < grammatik[i].B.Count; j++)

{

if(grammatik[i].B[j].fl)

{

switch (grammatik[i].B[j].numBP)

{

case 1:

{

switch(grammatik[i].B[j].nameBL[0])

{

case 'О':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox2.Text);

a.n = Convert.ToInt32(textBox12.Text);

a.s = Convert.ToInt32(textBox22.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

case 'Л':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox1.Text);

a.n = Convert.ToInt32(textBox11.Text);

a.s = Convert.ToInt32(textBox21.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 2:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'Л':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox3.Text);

a.n = Convert.ToInt32(textBox13.Text);

a.s = Convert.ToInt32(textBox23.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 3:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'Т':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox4.Text);

a.n = Convert.ToInt32(textBox14.Text);

a.s = Convert.ToInt32(textBox24.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 4:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'Т':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox5.Text);

a.n = Convert.ToInt32(textBox15.Text);

a.s = Convert.ToInt32(textBox25.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

case 'С':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox6.Text);

a.n = Convert.ToInt32(textBox16.Text);

a.s = Convert.ToInt32(textBox26.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 5:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'О':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox7.Text);

a.n = Convert.ToInt32(textBox17.Text);

a.s = Convert.ToInt32(textBox27.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 6:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'Т':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox8.Text);

a.n = Convert.ToInt32(textBox18.Text);

a.s = Convert.ToInt32(textBox28.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

case 'Л':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox9.Text);

a.n = Convert.ToInt32(textBox19.Text);

a.s = Convert.ToInt32(textBox29.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

case 7:

{

switch (grammatik[i].B[j].nameBL[0])

{

case 'О':

{

El a = new El();

a = grammatik[i].B[j];

a.t = Convert.ToInt32(textBox10.Text);

a.n = Convert.ToInt32(textBox20.Text);

a.s = Convert.ToInt32(textBox30.Text);

grammatik[i].B.RemoveAt(j);

grammatik[i].B.Insert(j, a);

break;

}

default:

{

MessageBox.Show("Что то пошло не так в заполнении");

return;

}

}

break;

}

}

}

}

}

// PrintGrammatikResurs();

Variant X = new Variant();

X.var = new List<El>();

richTextBox2.Text = "";

rekObchod(X);

for (int i = 0; i < varianty.Count; i++)

{

Znach A = new Znach();

A.n = 0;

A.s = 0;

A.t = 0;

for (int j = 0; j < varianty[i].var.Count; j++)

{

A.t += varianty[i].var[j].t;

A.n += varianty[i].var[j].n;

A.s += varianty[i].var[j].s * A.n;

}

znach.Add(A);

}

if (maxN == -1)

maxN = 99999999;

if (maxT == -1)

maxT = 99999999;

if (maxS == -1)

maxS = 99999999;

PrintVar(maxT,maxN,maxS);

}

void PrintVar(int t, int n, int s)

{

richTextBox2.Text = "Варианты которые вам подходят:\n";

for (int i = 0; i < varianty.Count; i++)

{

if (znach[i].t < t && znach[i].n < n && znach[i].s < s)

{

richTextBox2.Text += "No -> ";

for (int j = 0; j < varianty[i].var.Count; j++)

{

richTextBox2.Text += varianty[i].var[j].numBP + "{" + varianty[i].var[j].nameBL[0] + "} -> ";

}

richTextBox2.Text += " Nф: " + "t = " + znach[i].t + "; n = " + znach[i].n + "; s = " + znach[i].s + "\n";

}

}

}

void rekObchod(Variant a)

{

if (a.var.Count <= 0)

{

for (int i = 0; i < grammatik[0].B.Count; i++)

{

a.var.Add(grammatik[0].B[i]);

rekObchod(a);

a.var.RemoveAt(0);

}

}

else

{

for (int i = 0; i < grammatik.Count; i++)

{

if (grammatik[i].A.nameBL == a.var[a.var.Count - 1].nameBL && grammatik[i].A.numBP == a.var[a.var.Count - 1].numBP)

{

for (int j = 0; j < grammatik[i].B.Count; j++)

{

a.var.Add(grammatik[i].B[j]);

if (a.var[a.var.Count - 1].fl == false)

{

a.var.RemoveAt(a.var.Count - 1);

Variant b = new Variant();

b.var = new List<El>();

for (int k = 0; k < a.var.Count; k++)

b.var.Add(a.var[k]);

varianty.Add(b);

return;

}

else

if (a.var[a.var.Count - 1].numBP != grammatik[i].A.numBP + 1)

{

a.var.RemoveAt(a.var.Count - 1);

continue;

}

else

{

rekObchod(a);

a.var.RemoveAt(a.var.Count - 1);

}

}

}

}

}

}

}

}

Program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

namespace Диплом

{

static class Program

{

/// <summary>

/// Главная точка входа для приложения.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}

}

52