Задание
Создать программу для создания карты локальной сети и примерный расчет стоимости элементов созданной локальной сети..
Функционал программы
Например:
- Создание карты
- Редактирование элементов
- Редактирование доступного оборудования для расчетов
- Расчет стоимостикарты (дезучета расходных материалов)
- Хранилище данных - MSSQL сервер
Фрагмент программного кода
using System; using System.ComponentModel; using System.Drawing; using System.Runtime.CompilerServices; using NetworkMap.Annotations; using NetworkMap.Properties; namespace NetworkMap { /// <summary> Элемент сетевой инфраструктуры </summary> public class Element : INotifyPropertyChanged { private bool _selected; /// <summary> Уникальный идентификатор </summary> public Guid Id { get; set; } public string Name { get; set; } /// <summary> Координаты расположения на карте </summary> public Point Location { get; set; } public Size Size { get; private set; } = Size.Empty; /// <summary> Тип элемента </summary> public ETypeElement Type { get => _type; set { if (value == _type) return; _type = value; OnPropertyChanged(); OnPropertyChanged(nameof(Image)); bmp = (Bitmap)Resources.ResourceManager.GetObject(Type.ToString()); Size = bmp.Size; } } private ETypeElement _type; /// <summary> Изображение элемента </summary> public Bitmap Image { get { if (bmp != null) return bmp; bmp = (Bitmap)Resources.ResourceManager.GetObject(Type.ToString()); if (bmp != null) Size = bmp.Size; return bmp; } } private Bitmap bmp = null; /// <summary> Признак выделения на карте элемента </summary> public bool Selected { get => _selected; set { if (value == _selected) return; _selected = value; OnPropertyChanged(); } } public Point Center => new Point(Location.X+(bmp.Width>>1),Location.Y+(bmp.Height>>1)); public Element() { if(Id==Guid.Empty) Id = Guid.NewGuid(); } public bool AnyPoint(Point p) { return (p.X >= Location.X && p.X < Location.X + Size.Width) && (p.Y >= Location.Y && p.Y < Location.Y + Size.Height); } /// <summary> Отрисовка элемента </summary> public void Draw(Graphics g) { g.DrawImage(Image,Location); if (!string.IsNullOrEmpty(Name)) { var r = new Rectangle(Location.X,Location.Y+Size.Height-12,Size.Width,12); g.FillRectangle(Brushes.DarkGray,r); g.DrawString(Name,new Font("Consolas",8),Brushes.Black,r, new StringFormat{LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center} ); } if (Selected) { g.DrawRectangle(Pens.Blue, Location.X+1,Location.Y+1,Size.Width-2,Size.Height-2); } } #region event public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } }
Скриншот архива с проектом
Пояснения по запуску программы
C# NET.Framework 4.5 Совместима с windows 7 и выше
В архиве после покупки доступен полный исходный код приложения со всеми ресурсами (можно изменить, дополнить самостоятельно) а также билд для запуска и проверки в папке bin\Release
Kap