![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
{
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!