Пример оформления программного кода приложения.
Не менее одного класса должно быть самодокументировано с помощью XML-комментариев.
Абстрактный класс, являющийся предком 2х видов радиостанций
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ПроектРадиостанции
{
//Каждый класс должен иметь XML-комментарий
/// <summary>
/// Абстрактный класс, являющийся предком 2х видов радиостанций
/// </summary>
[Serializable]
Public abstract class Радиостанция
{
protected string позывной; // комментарий
protected int дальность; // комментарий
protected int x; // комментарий
protected int y; // комментарий
//Каждый метод класса должен должен иметь XML-комментарий
//с указанием назначения, входных и выходных параметров и возвращаемого значения.
/// <summary>
/// Конструктор класса "Радиостанция"
/// </summary>
/// <param name="позывной">Позывной радиостанции</param>
/// <param name="дальность">дальность связи</param>
/// <param name="x">Координата x</param>
/// <param name="y">Координата y</param>
public Радиостанция(string позывной, int дальность, int x, int y)
{
this.позывной = позывной;
this.дальность = дальность;
this.x = x;
this.y = y;
}
/// <summary>
/// Свойство, принимающее значение дальности связи радиостанции
/// </summary>
public int Дальность
{ get {return дальность;}
}
|
|
/// <summary>
/// Свойство, принимающее значение позывного
/// </summary>
public string Позывной
{ get{ return позывной;}
}
/// <summary>
/// Свойство, принимающее значение координаты x
/// </summary>
public int X
{get {return x;}
}
/// <summary>
/// Свойство, принимающее значение координаты y
/// </summary>
public int Y
{get { return y;}
}
}
}
Класс, представляющий подвижные радиостанции
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows.Forms;
using System.Drawing;
namespace ПроектРадиостанции
{
[Serializable]
public class Подвижная : Радиостанция // комментарий
{
private int[] точки_x; // комментарий
private int[] точки_y; // комментарий
private static int min_x = int.MaxValue, // комментарий
min_y = int.MaxValue,
max_x = 0,
max_y = 0;
// комментарий
Public Подвижная(string позывной, int дальность, int x, int y, ArrayList массив_точек_x,
ArrayList массив_точек_y)
: base(позывной, дальность, x, y)
{
точки_x = new int[массив_точек_x.Count];
точки_y = new int[массив_точек_y.Count];
for (int i = 0; i < массив_точек_x.Count; i++)
{
точки_x[i] = (int)массив_точек_x[i];
точки_y[i] = (int)массив_точек_y[i];
}
}
|
|
// комментарий
static public int Max_x
{
get { return max_x; }
set
{ max_x = value; }}
// комментарий
static public int Min_x
{get { return min_x; }
set { min_x = value; } }
// комментарий
static public int Max_y
{get { return max_y; }
set { max_y = value; }}
// комментарий
Static public int Min_y
{ get { return min_y; }
set { min_y = value;} }
// комментарий
public int[] Точки_x
{
set { точки_x = value; }
get{ return точки_x;} }
// комментарий
public int[] Точки_y
{
set { точки_y = value; }
get { return точки_y;} }
// комментарий
Public void Рисовать(Graphics полотно, Size размер, int шир_x, int выс_y,
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>
Дата добавления: 2018-05-12; просмотров: 208; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!