Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Int масш_x, int масш_y, Pen pg)



{

int dy = размер.Height + (min_y-3)*масш_y,

dx = -(min_x-3) * масш_x;

int x1, x2, y1, y2;

SolidBrush br = new SolidBrush(pg.Color);

Font ft = new Font("Batang", 12);

x1 = dx+(точки_x[0])*масш_x;

y1 = dy - (точки_y[0])*масш_y;

полотно.FillEllipse(br, x1 - 5, y1 - 5, 10, 10);

полотно.DrawString(точки_x[0].ToString() + "; " + точки_y[0].ToString(), ft,

Brushes.Black, x1 + 3, y1);

for (int i = 1; i < точки_x.Length; i++)

{

x2 = dx+ (точки_x[i]) * масш_x;

y2 = dy - (точки_y[i]) * масш_y;

полотно.DrawLine(pg, x1, y1, x2, y2);

полотно.FillEllipse(br, x2 - 5, y2 - 5, 10, 10);

полотно.DrawString(точки_x[i].ToString() + "; " + точки_y[i].ToString(), ft,

Brushes.Black, x2 + 1, y2);

x1 = x2;

y1 = y2;

}

}

}

}

using System;

using System.Collections.Generic;

using System.Text;

using System.Collections;

Класс, представляющий стационарные радиостанции

namespace ПроектРадиостанции

{

/// <summary>

/// Класс, представляющий стационарные радиостанции

/// </summary>

[Serializable]

public class Стационарная: Радиостанция

{

private string насел_пункт;

/// <summary>

/// Конструктор класса "Стационарная"

/// </summary>

/// <param name="позывной">Позывной радиостанции</param>

/// <param name="дальность">дальность связи</param>

/// <param name="x">Координата x</param>

/// <param name="y">Координата y</param>

/// <param name="насел_пункт">Насел пункт, в котором расположена радиостанция</param>

public Стационарная(string позывной, int дальность, int x, int y, string насел_пункт)

: base(позывной, дальность, x, y)

{

this.насел_пункт = насел_пункт;

}

/// <summary>

/// Свойство, выдающее значение населенного пункта

/// </summary>

/// <return> Населенный пункт радиостанции</return>

public string Насел_пункт

{get {return насел_пункт;}

}

}

}

Форма Form1.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Collections;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

namespace ПроектРадиостанции

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

}

ArrayList база;

ArrayList промежуточные_точки_x;

ArrayList промежуточные_точки_y;

Стационарная сс;

Подвижная пс;

Form2 Радиостанции_И;

Form3 Графики;

string имяЗапись;

string имяЧтение;

FileStream поток;

int k = 1;

private void Form1_Load(object sender, EventArgs e)

{

база = new ArrayList();

dataGridView1.Columns.Add("", "Тип радиостанции");

dataGridView1.Columns.Add("", "Позывной");

dataGridView1.Columns.Add("", "Дальность связи");

dataGridView1.Columns.Add("", "Расположение");

dataGridView1.Columns.Add("", "Населенный пункт");

промежуточные_точки_x = new ArrayList();

промежуточные_точки_y = new ArrayList();

}

/// <summary>

/// Предлагает пользователю сохранить базу данных в файл

/// </summary>

public void save()

{

if (имяЧтение!= "") { saveFileDialog1.FileName = имяЧтение; }

DialogResult ответ;

ответ = saveFileDialog1.ShowDialog();

if (ответ == DialogResult.OK)

{

имяЗапись = saveFileDialog1.FileName;

поток = new FileStream(имяЗапись, FileMode.Create);

BinaryFormatter форм = new BinaryFormatter();

форм.Serialize(поток, база);

поток.Close();

Text = имяЗапись + " - Радиостанции";

}

}

/// <summary>

/// Предлагает пользователю сохранить данные перед выходом

/// </summary>

public void exit()

{

DialogResult ответ;

ответ = MessageBox.Show("Сохранить изменения в базе данных?", "ВЫХОД",

MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

if (ответ == DialogResult.Yes) { save(); }

if (ответ == DialogResult.No) { Close(); }

if (ответ == DialogResult.Cancel) { return; }

}

/// <summary>

/// Добавляет в базу данных стационарную радиостанцию

/// </summary>

private void button2_Click(object sender, EventArgs e)

{

try

{

база.Add(new Стационарная(textBox1.Text, (int)numericUpDown1.Value,

int.Parse(textBox2.Text), int.Parse(textBox3.Text), textBox4.Text));

}

catch

{

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

return;

}

сс = (Стационарная)база[база.Count - 1];

dataGridView1.Rows.Insert(0, 1);

dataGridView1[0, 0].Value = сс.GetType().Name;

dataGridView1[1, 0].Value = textBox1.Text;

dataGridView1[2, 0].Value = (int)numericUpDown1.Value;

dataGridView1[3, 0].Value = (textBox2.Text + "; " + textBox3.Text);

dataGridView1[4, 0].Value = textBox4.Text;

textBox1.Clear();

numericUpDown1.Value = 1;

textBox2.Clear();

textBox3.Clear();

textBox4.Clear();

}

/// <summary>

/// Добавляет в базу данных подвижную радиостанцию

/// </summary>

private void button4_Click(object sender, EventArgs e)

{

try

{

база.Add(new Подвижная(textBox1.Text, (int)numericUpDown1.Value, (int)промежуточные_точки_x[промежуточные_точки_y.Count - 1], (int)промежуточные_точки_y[промежуточные_точки_x.Count - 1], промежуточные_точки_x, промежуточные_точки_y));

}

catch

{

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

return;

}

пс = (Подвижная)база[база.Count - 1];

dataGridView1.Rows.Insert(0, 1);

dataGridView1[0, 0].Value = пс.GetType().Name;

dataGridView1[1, 0].Value = textBox1.Text;

dataGridView1[2, 0].Value = (int)numericUpDown1.Value;

dataGridView1[3, 0].Value = пс.X + "; " + пс.Y;

dataGridView1[4, 0].Value = "";

промежуточные_точки_x.Clear();

промежуточные_точки_y.Clear();

textBox1.Clear();

numericUpDown1.Value = 1;

}

/// <summary>

/// Добавляет координаты новой точки в массив промежуточных точек

/// </summary>

private void button3_Click(object sender, EventArgs e)

{

try

{

промежуточные_точки_x.Add(int.Parse(textBox5.Text));

промежуточные_точки_y.Add(int.Parse(textBox6.Text));

}

catch

{

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

return;

}

textBox5.Clear();

textBox6.Clear();

}

/// <summary>

/// Открывает новую форму со схемами движения всех подвижных радиостанций, перебирая базу данных и выделяя из нее подвижные радиостанции

/// </summary>

private void button5_Click(object sender, EventArgs e)

{

Подвижная.Max_x = 0;

Подвижная.Max_y = 0;

Подвижная.Min_x = int.MaxValue;

Подвижная.Min_y = int.MaxValue;

Подвижная подв;

for (int i = 0; i < база.Count; i++)

{

if (база[i].GetType().Name == "Подвижная")

{

подв = (Подвижная)база[i];

for (int j = 0; j < подв.Точки_x.Length; j++)

{

if (подв.Точки_x[j] < Подвижная.Min_x) { Подвижная.Min_x = подв.Точки_x[j]; }

if (подв.Точки_x[j] > Подвижная.Max_x) { Подвижная.Max_x = подв.Точки_x[j]; }

}

for (int j = 0; j < подв.Точки_y.Length; j++)

{

if (подв.Точки_y[j] < Подвижная.Min_y) { Подвижная.Min_y = подв.Точки_y[j]; }

if (подв.Точки_y[j] > Подвижная.Max_y) { Подвижная.Max_y = подв.Точки_y[j]; }

}

}

}

Графики = new Form3();

Графики.База = база;

Графики.ShowDialog();

}

/// <summary>

/// Открывает новую форму с перечислением стационарных радиостанций, расположенных в населенных пунктах, название которых начинается с буквы "И"

/// </summary>





Дата публикования: 2015-04-10; Прочитано: 148 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.105 с)...