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

Использование бинарных деревьев для поиска данных. Схемы алгоритмов работы с бинарным деревом. Проектирование алгоритмов и программ. Структура программного комплекса. Язык С# как средство для разработки автоматизированной информационной системы "Адрес".

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

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

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

{

Stack<Node> stack = new Stack<Node>();

do

{

if (string.Compare(r.Get_J.equipment.ToString(), equipment) == 0) return r;

if (r.Left != null) stack.Push(r.Left);

if (r.Right != null) stack.Push(r.Right);

r = stack.Pop();

} while (stack.Count > 0);

return null;

}

private Node MostRightNode(Node uz)

{

if (uz.Right != null)

return MostRightNode(uz.Right);

else return uz;

}

private Node MostLeftNode(Node uz)

{

if (uz.Left != null)

return MostLeftNode(uz.Left);

else return uz;

}

public void ChangeData(Node uz, Guide_of_Equipment j, bool remove, bool search_for_delete)

{

if (uz != Root && remove == true)

{

Remove(uz);

Adding(new Node(j));

}

else

{

uz.Get_J.country = j.country;

uz.Get_J.Cost = j.Cost;

uz.Get_J.equipment = j.equipment;

uz.Get_J.year = j.year;

}

}

public Node Search(string equipment, bool remove, bool search_for_delete) //метод для поиска элемента, если установлен флаг удаления, то удаляет

{

Node Rezult_Uzel;

bool flag = true;

Node C_Uzel = Root;

Node ret = null;

while (flag)

{

if (String.Compare(equipment, C_Uzel.Get_J.equipment.ToString()) == 0) //выходим если нашли

{

flag = false;

ret = C_Uzel;

if (ret == root) search_for_delete = false;

}

else if (String.Compare(equipment, C_Uzel.Get_J.equipment.ToString()) < 0) //меньше, следовательно идем налево

{

if (C_Uzel.Left != null) C_Uzel = C_Uzel.Left;

else { flag = false; }

}

else //иначе направо

{

if (C_Uzel.Right != null) C_Uzel = C_Uzel.Right;

else { flag = false; }

}

}

Find w = new Find(); //обьект формы поиска для обращения к вспомогательному узлу для запоминания узла находящегося вверху над найденным

Rezult_Uzel = ret; //найденный узел

C_Uzel = C_Uzel.Top; //текущим будет тот узел, который расположен над найденным

if (search_for_delete)

{

return Remove(ret);

}

return ret; //возвращаем найденный узел

}

private Node Remove(Node ret)

{

if (ret == null)

{

return null;

}

if (ret.Right == null && ret.Left == null)

{

if (ret == ret.Top.Left) ret.Top.Left = null;

else ret.Top.Right = null;

}

else

{

if (ret == ret.Top.Left)

{

ret.Top.Left = ret.Right;

if (ret.Left == null)

{

ret.Top.Left = ret.Right;

}

else

{

Node rightBranch = MostRightNode(ret.Top);

rightBranch.Right = ret.Right;

}

}

else

{

ret.Top.Right = ret.Right;

if (ret.Right == null)

{

ret.Top.Right = ret.Left;

}

else

{

Node leftBranch = MostLeftNode(ret.Top);

leftBranch.Left = ret.Left;

}

}

}

return null;

}

}

}

Приложение В

(обзяательное)

Текст класса Node.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WindowsFormsApplication1

{

public class Node

{

Guide_of_Equipment guide;

Node left, right, top;

public Node(Guide_of_Equipment guide) //конструктор

{ this.guide = guide; }

public Node Left // свойство для доступа к узлу

{

get { return left; }

set { left = value; }

}

public Node Right //Правее

{ get { return right; } set { right = value; } }

public Node Top

{ get { return top; } set { top = value; } }

public Guide_of_Equipment Get_J //Возвращает сведения о наименовании оборудования, соответствующему данному узлу

{

get { return guide; }

}

}

}

Приложение Г

(обязательное)

Текст класса About.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 WindowsFormsApplication1

{

public partial class About : Form

{

public About()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Close();

}

private void About_Load(object sender, EventArgs e)

{

}

}

}

Приложение Д

(обязательное)

Текст класса Change.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.Collections;

namespace WindowsFormsApplication1

{

public partial class Change : Form

{

Guide_of_Equipment j;

Node u = null;

bool nonNumberEntered = false;

public Change()

{

InitializeComponent();

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

Main window = (Main)this.Owner;

if (e.KeyChar == (char)Keys.Enter)

{

if (textBox1.Text == window.Tree_Obj.Root.Get_J.equipment.ToString())

{

MessageBox.Show("Это корневой узел, вы можете изменять сведения, но не номер");

textBox2.Enabled = false;

}

groupBox1.Enabled = true;

button1.Enabled = true;

foreach (Guide_of_Equipment obj in window.Obj_mas)

{

if (textBox1.Text == obj.equipment.ToString())

{

j = obj;

ArrayList str = new ArrayList();

str = obj.Out();

textBox2.Text = str[0].ToString();

textBox3.Text = str[2].ToString();

textBox4.Text = str[1].ToString();

textBox5.Text = str[3].ToString();

}

}

if (j == null)

{ MessageBox.Show("Такого оборудования нет.\n Повторите!", "Ошибка!"); groupBox1.Enabled = false; }

}

}

private void button1_Click(object sender, EventArgs e)

{

Main window = (Main)this.Owner;

try

{

u = window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root);

if (u == null) throw new NullReferenceException();

j = new Guide_of_Equipment();

j.equipment = textBox2.Text;

j.Cost = int.Parse(textBox3.Text);

j.year = Convert.ToDateTime(textBox4.Text);

j.country = (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), textBox5.Text);

Close();

}

catch(NullReferenceException) { MessageBox.Show("Такое оборудование не найдено!", "Ошибка!"); return; }

catch(Exception f) { MessageBox.Show("Тип, что вы ввели не соответствует требуемому типу, пожалуйста повторите.\n" + f.Message + " ","Ошибка!"); return; }

window.Tree_Obj.ChangeData(u, j, true, true);

for (int p = 0; p < window.Obj_mas.Count; p++) if (u.Get_J.equipment == window.Obj_mas[p].equipment) window.Obj_mas[p] = j;

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private void textBox3_KeyDown(object sender, KeyEventArgs e)

{

nonNumberEntered = false;

if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)

{

if (e.KeyCode != Keys.Back)

{

nonNumberEntered = true;

}

}

}

private void textBox3_KeyPress(object sender, KeyPressEventArgs e)

{

if (nonNumberEntered == true)

{

e.Handled = true;

}

}

private void textBox3_TextChanged(object sender, EventArgs e)

{

}

private void groupBox1_Enter(object sender, EventArgs e)

{

}

}

}

Приложение Е

(обязательное)

Текст класса Delete.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 WindowsFormsApplication1

{

public partial class Delete : Form

{

public Delete()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Вы действительно хотите удалить данный элемент элемент?","Внимание!",

MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Cancel)

return;

bool k = true;

Main window = (Main)this.Owner;

try

{

if (String.Compare(textBox1.Text, window.Tree_Obj.Root.Get_J.equipment.ToString()) == 0)

MessageBox.Show("Нельзя удалять это наименование оборудования (Корневой узел)!", "Ошибка!");

else

{

Node Rem_Uzel = window.Tree_Obj.Search(textBox1.Text, false, false);

if (Rem_Uzel == window.Tree_Obj.Root)

{ window.Tree_Obj.Root = null; k = false; }

if (k)

{

if (Rem_Uzel.Right == null && Rem_Uzel.Left == null && Rem_Uzel != window.Tree_Obj.Root)

{

if (Rem_Uzel.Top.Left == Rem_Uzel)

{ Rem_Uzel.Top.Left = null; }

else if (Rem_Uzel.Top.Right == Rem_Uzel)

{ Rem_Uzel.Top.Right = null; }

}

else if (Rem_Uzel.Right != null)

{ window.Tree_Obj.Search(Rem_Uzel.Right.Get_J.equipment.ToString(), true, true); }

else if (Rem_Uzel.Left != null)

{ window.Tree_Obj.Search(Rem_Uzel.Left.Get_J.equipment.ToString(), true, true); }

}

window.Obj_mas.Remove(Rem_Uzel.Get_J);

}

Close();

}

catch (Exception) { MessageBox.Show("Такое наименование оборудования не найден, пожалуйста повторите.", "Ошибка!"); }

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private void Delete_Load(object sender, EventArgs e)

{

}

}

}

Приложение Ж

(обязательное)

Текст класса Find.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.Collections;

namespace WindowsFormsApplication1

{

public partial class Find : Form

{

public Node vspom;

public Find()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

dataGridView1.RowCount = 1;

Main window = (Main)this.Owner;

Guide_of_Equipment ar = new Guide_of_Equipment();

vspom = new Node(ar);

try

{

Node Rez = window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root);

ArrayList lal = Rez.Get_J.Out();

dataGridView1[0, 0].Value = lal[0];

dataGridView1[1, 0].Value = lal[1];

dataGridView1[2, 0].Value = lal[2];

dataGridView1[3, 0].Value = lal[3];

}

catch (NullReferenceException)

{

MessageBox.Show("Такое наименование оборудования не найдено!", "Ошибка!");

}

catch (FormatException)

{

MessageBox.Show("Цена должна представлять из себя число!", "Ошибка!");

}

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void label1_Click(object sender, EventArgs e)

{

}

}

}

Приложение З

(обязательное)

Текст класса Information.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 WindowsFormsApplication1

{

public partial class Information : Form

{

public Information()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Close();

}

private void richTextBox1_TextChanged(object sender, EventArgs e)

{

}

}

}

Приложение И

(обязательное)

Текст класса Insert.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 WindowsFormsApplication1

{

public partial class Insert : Form

{

public Insert()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

try

{

Main window = (Main)this.Owner;

if (window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root) != null)

{ MessageBox.Show("Такое наименование оборудования уже существует!"); return; }

Guide_of_Equipment j = new Guide_of_Equipment(textBox1.Text, Convert.ToDateTime(textBox2.Text), Convert.ToInt32(textBox3.Text), (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), textBox4.Text));

window.Obj_mas.Add(j);

Node Adding_Uzel = new Node(j);

window.Tree_Obj.Adding(Adding_Uzel);

Close();

}

catch (Exception f) { MessageBox.Show("Тип, что вы ввели не соответствует требуемому типу, пожалуйста повторите.\n" + f.Message + "Ошибка!"); }

}

private void button2_Click(object sender, EventArgs e)

{

Close();

}

private void groupBox1_Enter(object sender, EventArgs e)

{

button1.Enabled = true;

}

}

}

Приложение К

(обязательное)

Текст класса Main.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.Collections;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Main : Form

{

public Tree Tree_Obj = new Tree();

public List<Guide_of_Equipment> Obj_mas = new List<Guide_of_Equipment>();

public Main()

{

InitializeComponent();

dataGridView1.AllowUserToAddRows = false;

}

private void поискToolStripMenuItem_Click(object sender, EventArgs e)

{

Find window = new Find();

window.Owner = this;

treeView1.Nodes.Clear();

window.ShowDialog();

vivod();

}

private void визуализацияБинарногоДереваToolStripMenuItem_Click(object sender, EventArgs e)

{

treeView1.Nodes.Clear();

treeView1.Visible = true;

treeView1.Nodes.Add(Tree_Obj.Root.Get_J.equipment);

if (Tree_Obj.Root.Left != null)

{

TreeNode uz = new TreeNode(Tree_Obj.Root.Left.Get_J.equipment.ToString());

treeView1.Nodes[0].Nodes.Add(uz);

BuildTreeView(Tree_Obj.Root.Left, uz);

}

if (Tree_Obj.Root.Right != null)

{

TreeNode uz = new TreeNode(Tree_Obj.Root.Right.Get_J.equipment.ToString());

treeView1.Nodes[0].Nodes.Add(uz);

BuildTreeView(Tree_Obj.Root.Right, uz);

}

treeView1.ExpandAll();

}

private void BuildTreeView(Node uzel, TreeNode Parent)

{

if (uzel.Left != null)

{

TreeNode currentNode = new TreeNode(uzel.Left.Get_J.equipment.ToString());

Parent.Nodes.Add(currentNode);

BuildTreeView(uzel.Left, currentNode);

}

if (uzel.Right != null)

{

TreeNode currentNode = new TreeNode(uzel.Right.Get_J.equipment.ToString());

Parent.Nodes.Add(currentNode);

BuildTreeView(uzel.Right, currentNode);

}

}

private void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

try

{

string[] Lines = File.ReadAllLines(openFileDialog1.FileName, Encoding.Default);

int i = 0;

bool f = true;

foreach (string Line in Lines)

{

try

{

string[] vrem = Line.Split(';');

DateTime year = DateTime.Parse(vrem[0]);

Obj_mas.Add(new Guide_of_Equipment(vrem[3], year, Convert.ToInt32(vrem[2]), (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), vrem[1])));

Tree_Obj.Adding(new Node(Obj_mas[i]));

i++;

}

catch (Exception ex) { f = false; }

}

if (!f) MessageBox.Show("Некоторые данные являются некоректными, поэтому они не будут включены в общий поток данн.", "Ошибка!");

if (Lines.Length == 0) throw new Exception();

if (Obj_mas.Count != 0) MessageBox.Show("Файл считан успешно");

сохранитьToolStripMenuItem.Enabled = true;

вставкаToolStripMenuItem.Enabled = true;

удалениеToolStripMenuItem.Enabled = true;

заменаToolStripMenuItem.Enabled = true;

поискToolStripMenuItem.Enabled = true;

визуализацияБинарногоДереваToolStripMenuItem.Enabled = true;

перегрузкаБинарныхОператоровToolStripMenuItem.Enabled = true;

перегрузкаИнкрементаStripMenuItem.Enabled = true;

перегрузкаОператоровОтношенияToolStripMenuItem.Enabled = true;

vivod();

}

catch (Exception) { MessageBox.Show("Файл содержит некоректную информацию либо не содержит информацию вообще!","Ошибка!"); }

}

}

private void vivod()

{

dataGridView1.Visible = true;

dataGridView1.RowCount = Obj_mas.Count;

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

{

//dataGridView1.Rows.Add();

ArrayList lal = Obj_mas[i].Out();

dataGridView1[0, i].Value = lal[3];

dataGridView1[1, i].Value = lal[1];

dataGridView1[2, i].Value = lal[2];

dataGridView1[3, i].Value = lal[0];

}

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

StreamWriter sr = new StreamWriter(saveFileDialog1.FileName);

for (int i = 0; i < dataGridView1.RowCount; i++)

{

sr.WriteLine(dataGridView1[0, i].Value + " ; " + dataGridView1[1, i].Value + " ; " + dataGridView1[2, i].Value + " ; " + dataGridView1[3, i].Value + " . ");

}

sr.Close();

}

}

private void вставкаToolStripMenuItem_Click(object sender, EventArgs e)

{

Insert lal = new Insert();

lal.Owner = this;

treeView1.Nodes.Clear();

lal.ShowDialog();

vivod();

}

private void удалениеToolStripMenuItem_Click(object sender, EventArgs e)

{

Delete window = new Delete();

window.Owner = this;

treeView1.Nodes.Clear();

window.ShowDialog();

vivod();

}

private void заменаToolStripMenuItem_Click(object sender, EventArgs e)

{

Change window = new Change();

window.Owner = this;

treeView1.Nodes.Clear();

window.ShowDialog();

vivod();

}

private void обАвтореToolStripMenuItem_Click(object sender, EventArgs e)

{

About A = new About();

A.ShowDialog();

}

private void информацияОПроектеToolStripMenuItem_Click(object sender, EventArgs e)

{

Information I = new Information();

I.ShowDialog();

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

private void перегрузкаБинарныхОператоровToolStripMenuItem_Click(object sender, EventArgs e)

{

Overload o = new Overload();

o.label1.Text = "Введите наименования первого оборудования";

o.label1.Show();

o.textBox1.Show();

o.label2.Text = "Введите наименования второго оборудования";

o.label2.Show();

o.textBox2.Show();

o.button1.Show();

o.ShowDialog(this);

}

private void перегрузкаОператоровОтношенияToolStripMenuItem_Click(object sender, EventArgs e)

{

Overload o = new Overload();

o.label1.Text = "Введите наименования первого оборудования";

o.label1.Show();

o.textBox1.Show();

o.label2.Text = "Введите наименования второго оборудования";

o.label2.Show();

o.textBox2.Show();

o.button3.Show();

o.ShowDialog(this);

}

private void перегрузкаИнкрементаToolStripMenuItem_Click(object sender, EventArgs e)

{

Overload o = new Overload();

o.label1.Text = "Введите наименование оборудования:";

o.label1.Show();

o.textBox1.Show();

o.button2.Show();

o.ShowDialog(this);

}

}

}

Приложение Л

(обязательное)

Текст класса Overload.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 WindowsFormsApplication1

{

public partial class Overload : Form

{

public Overload()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

string find1, find2;

try

{

find1 = textBox1.Text; find2 = textBox2.Text;

Main m1 = (Main)this.Owner;

Node j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);

Node j2 = m1.Tree_Obj.search(find2, m1.Tree_Obj.Root);

MessageBox.Show((j1.Get_J + j2.Get_J).ToString());

Close();

}

catch { MessageBox.Show("Таких наименований оборудования нет.", "Ошибка"); }

}

private void button4_Click(object sender, EventArgs e)

{

Close();

}

private void button3_Click(object sender, EventArgs e)

{

string find1, find2, b;

try

{

find1 = textBox1.Text; find2 = textBox2.Text;

Main m1 = (Main)this.Owner;

Node j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);

Node j2 = m1.Tree_Obj.search(find2, m1.Tree_Obj.Root);

if (j1.Get_J > j2.Get_J) b = ">";

else b = "<";

MessageBox.Show(j1.Get_J.equipment + " " + b + " " + j2.Get_J.equipment);

Close();

}

catch { MessageBox.Show("Таких наименований оборудования нет.", "Ошибка"); }

}

private void button2_Click(object sender, EventArgs e)

{

string find1;

try

{

find1 = textBox1.Text;

Main m1 = (Main)this.Owner;

Node j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);

Guide_of_Equipment a = new Guide_of_Equipment(j1.Get_J.Country, j1.Get_J.year, j1.Get_J.cost, j1.Get_J.country);

MessageBox.Show(a++.cost.ToString());

Close();

}

catch { MessageBox.Show("Такого наименования оборудования нет."); }

}

}

}

Приложение М

Текст исходного файла для тестирования:

13.02.2010;Россия;1000;Д-12

11.02.2009;Бельгия;1500;У-11

15.02.2011;Голландия;1000;ДВ-1

17.03.2010;Украина;2000;Л-4

03.04.2011;Беларусь;1500;ИЛ-2

02.02.2010;Россия;1000;Е-12

04.02.2009;Бельгия;1500;У-12

05.02.2011;Голландия;1000;ДК-1

20.03.2010;Украина;2000;ЛВ-4

21.04.2011;Беларусь;1500;Л-2

13.10.2010;Россия;1000;ЗЩ-12

11.11.2009;Бельгия;1500;ВА-11

15.12.2011;Голландия;1000;ВО-1

17.09.2010;Украина;2000;ЛФ-4

03.08.2011;Беларусь;1500;ЗД-2

02.07.2010;Россия;1000;ЕЛ-12

04.06.2009;Бельгия;1500;УП-12

21.02.2011;Голландия;1000;ЖК-1

23.08.2010;Украина;2000;МВ-4

24.04.2011;Беларусь;1500;ДЛ-23

15.11.2010;Россия;1000;ХБ-1

06.11.2009;Бельгия;1500;ВТ-21

17.12.2011;Голландия;1000;АО-12

14.09.2010;Украина;2000;ЛП-44

09.08.2011;Беларусь;1500;УД-23

07.07.2010;Россия;1000;ПЛ-02

04.06.2009;Бельгия;1500;УЛ-920

04.05.2011;Беларусь;1500;ИК-2

03.03.2010;Россия;1000;К-12

05.03.2009;Бельгия;1500;С-12

06.03.2011;Голландия;1000;СК-1

21.04.2010;Украина;2000;ПВ-4

22.05.2011;Беларусь;1500;ЕЛ-2

14.11.2010;Россия;1000;ИЩ-12

12.12.2009;Бельгия;1500;ФА-11

16.11.2011;Голландия;1000;РО-1

18.10.2010;Украина;2000;ЦФ-4

04.09.2011;Беларусь;1500;ГД-2

03.08.2010;Россия;1000;СЛ-12

05.07.2009;Бельгия;1500;ОП-12

22.03.2011;Голландия;1000;ОК-1

24.09.2010;Украина;2000;ПВ-5

25.05.2011;Беларусь;1500;НЛ-3

16.12.2010;Россия;1000;ХА-65

07.12.2009;Бельгия;1500;ЦТ-51

18.11.2011;Голландия;1000;ПО-22

15.10.2010;Украина;2000;ЛО-54

10.09.2011;Беларусь;1500;ИД-73

08.08.2010;Россия;1000;ЛВ-52

05.08.2009;Бельгия;1500;ЩЛ-02

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


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

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