diff --git a/Lab1_OAP/Lab1_OAP.sln b/Lab1_OAP/Lab1_OAP.sln
deleted file mode 100644
index 92627e6..0000000
--- a/Lab1_OAP/Lab1_OAP.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.8.34525.116
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Lab1_OAP", "Lab1_OAP\Lab1_OAP.vcxproj", "{39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x64.ActiveCfg = Debug|x64
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x64.Build.0 = Debug|x64
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x86.ActiveCfg = Debug|Win32
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Debug|x86.Build.0 = Debug|Win32
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x64.ActiveCfg = Release|x64
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x64.Build.0 = Release|x64
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x86.ActiveCfg = Release|Win32
- {39E703FF-4168-4ACA-84CA-CDD94BFE3FD3}.Release|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {AD8890FA-E7D7-4EB8-996C-597872ABE83B}
- EndGlobalSection
-EndGlobal
diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp b/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp
deleted file mode 100644
index 5f28270..0000000
--- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.cpp
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj b/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj
deleted file mode 100644
index 7b4bd6f..0000000
--- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
-
- 17.0
- Win32Proj
- {39e703ff-4168-4aca-84ca-cdd94bfe3fd3}
- Lab1OAP
- 10.0
-
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Level3
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
- Level3
- true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters b/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters
deleted file mode 100644
index 0805cb7..0000000
--- a/Lab1_OAP/Lab1_OAP/Lab1_OAP.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
-
-
- Исходные файлы
-
-
-
\ No newline at end of file
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs
index 6eb2517..dbb2052 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/AbstractCompany.cs
@@ -38,7 +38,7 @@ public abstract class AbstractCompany
///
/// Вычисление максимального количества элементов, который можно разместить в окне
///
- private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
+ private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight)-6;
///
/// Конструктор
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs
index 86a38e5..8de8d91 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/ListGenericObjects.cs
@@ -1,4 +1,5 @@
-using System;
+using ProjectGasolineTanker.Exceptions;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -21,16 +22,6 @@ public class ListGenericObjects : ICollectionGenericObjects
public int Count => _collection.Count;
- ///
- /// Конструктор
- ///
- public ListGenericObjects()
- {
- _collection = new();
- }
-
- public CollectionType GetCollectionType => CollectionType.List;
-
public int MaxCount
{
get
@@ -47,10 +38,20 @@ public class ListGenericObjects : ICollectionGenericObjects
}
}
+ public CollectionType GetCollectionType => CollectionType.List;
+
+ ///
+ /// Конструктор
+ ///
+ public ListGenericObjects()
+ {
+ _collection = new();
+ }
+
public T? Get(int position)
{
if (position >= Count || position < 0)
- return null;
+ throw new PositionOutOfCollectionException(position);
return _collection[position];
}
@@ -58,7 +59,8 @@ public class ListGenericObjects : ICollectionGenericObjects
public int Insert(T obj)
{
if (Count + 1 > _maxCount)
- return -1;
+ throw new CollectionOverflowException(Count);
+
_collection.Add(obj);
return Count;
}
@@ -66,9 +68,11 @@ public class ListGenericObjects : ICollectionGenericObjects
public int Insert(T obj, int position)
{
if (Count + 1 > _maxCount)
- return -1;
+ throw new CollectionOverflowException(Count);
+
if (position < 0 || position > Count)
- return -1;
+ throw new PositionOutOfCollectionException(position);
+
_collection.Insert(position, obj);
return 1;
}
@@ -76,7 +80,7 @@ public class ListGenericObjects : ICollectionGenericObjects
public T? Remove(int position)
{
if (position < 0 || position > Count)
- return null;
+ throw new PositionOutOfCollectionException(position);
T? temp = _collection[position];
_collection.RemoveAt(position);
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs
index c019d95..aebffc2 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/MassiveGenericObjects.cs
@@ -1,4 +1,5 @@
-using System;
+using ProjectGasolineTanker.Exceptions;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -52,12 +53,16 @@ public class MassiveGenericObjects : ICollectionGenericObjects
public T? Get(int position)
{
if (position < 0 || position >= Count)
- return null;
+ throw new PositionOutOfCollectionException(position);
+
+ if (position >= _collection.Length && _collection[position] == null)
+ throw new ObjectNotFoundException(position);
+
return _collection[position];
}
public int Insert(T obj)
- {
+ {
for (int i = 0; i < Count; i++)
{
if (_collection[i] == null)
@@ -66,13 +71,13 @@ public class MassiveGenericObjects : ICollectionGenericObjects
return i;
}
}
- return -1;
+ throw new CollectionOverflowException(Count);
}
public int Insert(T obj, int position)
{
if (position < 0 || position >= Count)
- return -1;
+ throw new PositionOutOfCollectionException(position);
if (_collection[position] == null)
{
@@ -101,19 +106,16 @@ public class MassiveGenericObjects : ICollectionGenericObjects
}
temp--;
}
-
- return -1;
+ throw new CollectionOverflowException(Count);
}
public T? Remove(int position)
{
if (position < 0 || position >= Count)
- return null;
+ throw new PositionOutOfCollectionException(position);
if (_collection[position] == null)
- {
- return null;
- }
+ throw new ObjectNotFoundException(position);
T? temp = _collection[position];
_collection[position] = null;
@@ -128,3 +130,4 @@ public class MassiveGenericObjects : ICollectionGenericObjects
}
}
}
+
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs
index b3abe18..1c90976 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/CollectionGenericObjects/StorageCollection.cs
@@ -1,4 +1,5 @@
using ProjectGasolineTanker.Drawings;
+using ProjectGasolineTanker.Exceptions;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -92,10 +93,10 @@ public class StorageCollection
}
}
- public bool SaveData(string filename)
+ public void SaveData(string filename)
{
if (_storages.Count == 0)
- return false;
+ throw new InvalidDataException("В хранилище отсутсвуют коллекции для сохранения");
if (File.Exists(filename))
File.Delete(filename);
@@ -130,14 +131,13 @@ public class StorageCollection
sw.Write(_separatorItems);
}
}
- return true;
}
- public bool LoadData(string filename)
+ public void LoadData(string filename)
{
if (!File.Exists(filename))
{
- return false;
+ throw new FileNotFoundException("Файл не существует");
}
using (FileStream fs = new(filename, FileMode.Open))
@@ -147,12 +147,12 @@ public class StorageCollection
string str = sr.ReadLine();
if (str == null || str.Length == 0)
{
- return false;
+ throw new InvalidDataException("В файле нет данных");
}
if (!str.Equals(_collectionKey))
{
- return false;
+ throw new InvalidOperationException("В файле неверные данные");
}
_storages.Clear();
@@ -168,7 +168,7 @@ public class StorageCollection
ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType);
if (collection == null)
{
- return false;
+ throw new InvalidOperationException("Не удалось создать коллекцию");
}
collection.MaxCount = Convert.ToInt32(record[2]);
@@ -176,16 +176,24 @@ public class StorageCollection
string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
foreach (string elem in set)
{
- if (elem?.CreateDrawingTanker() is T airplane)
+ if (elem?.CreateDrawingTanker() is T tanker)
{
- if (collection.Insert(airplane) == -1)
- return false;
+ try
+ {
+ if (collection.Insert(tanker) == -1)
+ {
+ throw new InvalidOperationException("Объект не удалось добавить в коллекцию: " + record[3]);
+ }
+ }
+ catch (CollectionOverflowException ex)
+ {
+ throw new ArgumentOutOfRangeException("Коллекция переполнена", ex);
+ }
}
}
_storages.Add(record[0], collection);
}
}
- return true;
}
private static ICollectionGenericObjects? CreateCollection(CollectionType collectionType)
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs
new file mode 100644
index 0000000..047cd31
--- /dev/null
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/CollectionOverflowException.cs
@@ -0,0 +1,17 @@
+using System.Runtime.Serialization;
+
+namespace ProjectGasolineTanker.Exceptions;
+
+[Serializable]
+internal class CollectionOverflowException : ApplicationException
+{
+ public CollectionOverflowException(int count) : base("В коллекции превышено допустимое количество: " + count) { }
+
+ public CollectionOverflowException() : base() { }
+
+ public CollectionOverflowException(string message) : base(message) { }
+
+ public CollectionOverflowException(string message, Exception exception) : base(message, exception) { }
+
+ protected CollectionOverflowException(SerializationInfo info, StreamingContext contex) : base(info, contex) { }
+}
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs
new file mode 100644
index 0000000..9cc8bbf
--- /dev/null
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/ObjectNotFoundException.cs
@@ -0,0 +1,17 @@
+using System.Runtime.Serialization;
+
+namespace ProjectGasolineTanker.Exceptions;
+
+[Serializable]
+internal class ObjectNotFoundException : ApplicationException
+{
+ public ObjectNotFoundException(int i) : base("Не найден объект по позиции " + i) { }
+
+ public ObjectNotFoundException() : base() { }
+
+ public ObjectNotFoundException(string message) : base(message) { }
+
+ public ObjectNotFoundException(string message, Exception exception) : base(message, exception) { }
+
+ protected ObjectNotFoundException(SerializationInfo info, StreamingContext contex) : base(info, contex) { }
+}
\ No newline at end of file
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs
new file mode 100644
index 0000000..ca0ef90
--- /dev/null
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/Exceptions/PositionOutOfCollectionException.cs
@@ -0,0 +1,17 @@
+using System.Runtime.Serialization;
+
+namespace ProjectGasolineTanker.Exceptions;
+
+[Serializable]
+internal class PositionOutOfCollectionException : ApplicationException
+{
+ public PositionOutOfCollectionException(int i) : base("Выход за границы коллекции. Позиция " + i) { }
+
+ public PositionOutOfCollectionException() : base() { }
+
+ public PositionOutOfCollectionException(string message) : base(message) { }
+
+ public PositionOutOfCollectionException(string message, Exception exception) : base(message, exception) { }
+
+ protected PositionOutOfCollectionException(SerializationInfo info, StreamingContext contex) : base(info, contex) { }
+}
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs b/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs
index 8f697ef..4652365 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/FormTankerCollection.cs
@@ -9,6 +9,8 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ProjectGasolineTanker.Drawings;
+using Microsoft.Extensions.Logging;
+using ProjectGasolineTanker.Exceptions;
namespace ProjectGasolineTanker;
@@ -20,13 +22,17 @@ public partial class FormTankerCollection : Form
///
private AbstractCompany? _company = null;
+ private readonly ILogger _logger;
+
///
/// Конструктор
///
- public FormTankerCollection()
+ public FormTankerCollection(ILogger logger)
{
InitializeComponent();
_storageCollection = new();
+ _logger = logger;
+ _logger.LogInformation("Форма загрузилась");
}
///
@@ -49,18 +55,26 @@ public partial class FormTankerCollection : Form
private void SetTanker(DrawingTanker tanker)
{
if (_company == null || tanker == null)
- {
return;
- }
- if (_company + tanker != -1)
+ try
{
- MessageBox.Show("Объект добавлен");
- pictureBox.Image = _company.Show();
+ if (_company + tanker != -1)
+ {
+ MessageBox.Show("Объект добавлен");
+ pictureBox.Image = _company.Show();
+ _logger.LogInformation("Добавлен объект: " + tanker.GetDataForSave());
+ }
}
- else
+ catch (CollectionOverflowException ex)
{
- MessageBox.Show("Не удалось добавить объект");
+ MessageBox.Show(ex.Message);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ MessageBox.Show(ex.Message);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
}
}
@@ -82,14 +96,25 @@ public partial class FormTankerCollection : Form
}
int pos = Convert.ToInt32(maskedTextBox1.Text);
- if (_company - pos != null)
+
+ try
{
- MessageBox.Show("Объект удален");
- pictureBox.Image = _company.Show();
+ if (_company - pos != null)
+ {
+ MessageBox.Show("Объект удален");
+ pictureBox.Image = _company.Show();
+ _logger.LogInformation("Удален объект по позиции " + pos);
+ }
}
- else
+ catch (PositionOutOfCollectionException ex)
{
- MessageBox.Show("Не удалось удалить объект");
+ MessageBox.Show(ex.Message);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ MessageBox.Show(ex.Message);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
}
}
@@ -109,11 +134,22 @@ public partial class FormTankerCollection : Form
int counter = 100;
while (tanker == null)
{
- tanker = _company.GetRandomObject();
- counter--;
- if (counter <= 0)
+ try
{
- break;
+ tanker = _company.GetRandomObject();
+ counter--;
+ if (counter <= 0)
+ {
+ break;
+ }
+ }
+ catch (PositionOutOfCollectionException ex)
+ {
+ MessageBox.Show(ex.Message);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ MessageBox.Show(ex.Message);
}
}
@@ -152,14 +188,34 @@ public partial class FormTankerCollection : Form
return;
}
- CollectionType collectionType = CollectionType.None;
- if (radioButtonMassive.Checked)
- collectionType = CollectionType.Massive;
- else if (radioButtonList.Checked)
- collectionType = CollectionType.List;
+ //CollectionType collectionType = CollectionType.None;
+ //if (radioButtonMassive.Checked)
+ // collectionType = CollectionType.Massive;
+ //else if (radioButtonList.Checked)
+ // collectionType = CollectionType.List;
- _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
- RefreshListBoxItems();
+ //_storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
+ //RefreshListBoxItems();
+
+ try
+ {
+ CollectionType collectionType = CollectionType.None;
+ if (radioButtonMassive.Checked)
+ {
+ collectionType = CollectionType.Massive;
+ }
+ else if (radioButtonList.Checked)
+ {
+ collectionType = CollectionType.List;
+ }
+ _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
+ RefreshListBoxItems();
+ _logger.LogInformation("Коллекция добавлена " + textBoxCollectionName.Text);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError("Ошибка: {Message}", ex.Message);
+ }
}
private void RefreshListBoxItems()
@@ -169,9 +225,7 @@ public partial class FormTankerCollection : Form
{
string? colName = _storageCollection.Keys?[i];
if (!string.IsNullOrEmpty(colName))
- {
listBoxCollection.Items.Add(colName);
- }
}
}
@@ -221,13 +275,16 @@ public partial class FormTankerCollection : Form
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
- if (_storageCollection.SaveData(saveFileDialog.FileName))
+ try
{
+ _storageCollection.SaveData(saveFileDialog.FileName);
MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ _logger.LogInformation("Сохранение в файл: {filename}", saveFileDialog.FileName);
}
- else
+ catch (Exception ex)
{
- MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
}
}
}
@@ -236,14 +293,17 @@ public partial class FormTankerCollection : Form
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
- if (_storageCollection.LoadData(openFileDialog.FileName))
+ try
{
+ _storageCollection.LoadData(openFileDialog.FileName);
MessageBox.Show("Загрузка прошла успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
RefreshListBoxItems();
+ _logger.LogInformation("Загрузка из файла: {filename}", openFileDialog.FileName);
}
- else
+ catch (Exception ex)
{
- MessageBox.Show("Не сохранилось", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show(ex.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ _logger.LogError("Ошибка: {Message}", ex.Message);
}
}
}
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs b/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs
index 913060e..d3731fc 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/Program.cs
@@ -1,3 +1,8 @@
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Serilog;
+
namespace ProjectGasolineTanker
{
internal static class Program
@@ -11,7 +16,27 @@ namespace ProjectGasolineTanker
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
- Application.Run(new FormTankerCollection());
+ ServiceCollection services = new();
+ ConfigureServices(services);
+ using ServiceProvider serviceProvider = services.BuildServiceProvider();
+ Application.Run(serviceProvider.GetRequiredService());
+ }
+
+ private static void ConfigureServices(ServiceCollection services)
+ {
+ string[] path = Directory.GetCurrentDirectory().Split('\\');
+ string pathNeed = "";
+ for (int i = 0; i < path.Length - 3; i++)
+ {
+ pathNeed += path[i] + "\\";
+ }
+ services.AddSingleton()
+ .AddLogging(option =>
+ {
+ option.SetMinimumLevel(LogLevel.Information);
+ option.AddSerilog(new LoggerConfiguration()
+ .ReadFrom.Configuration(new ConfigurationBuilder().AddJsonFile($"{pathNeed}serilog.json").Build()).CreateLogger());
+ });
}
}
}
\ No newline at end of file
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj b/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj
index af03d74..08ed916 100644
--- a/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/ProjectGasolineTanker.csproj
@@ -8,6 +8,20 @@
enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
True
@@ -23,4 +37,10 @@
+
+
+ Always
+
+
+
\ No newline at end of file
diff --git a/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json b/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json
new file mode 100644
index 0000000..fa91ef7
--- /dev/null
+++ b/ProjectGasolineTanker/ProjectGasolineTanker/serilog.json
@@ -0,0 +1,15 @@
+{
+ "Serilog": {
+ "Using": [ "Serilog.Sinks.File" ],
+ "MinimumLevel": "Debug",
+ "WriteTo": [
+ {
+ "Name": "File",
+ "Args": { "path": "log.log" }
+ }
+ ],
+ "Properties": {
+ "Application": "Sample"
+ }
+ }
+}
\ No newline at end of file
diff --git a/laboap1/laboap1.sln b/laboap1/laboap1.sln
deleted file mode 100644
index 9f5ffa8..0000000
--- a/laboap1/laboap1.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.8.34525.116
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "laboap1", "laboap1\laboap1.vcxproj", "{1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x64.ActiveCfg = Debug|x64
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x64.Build.0 = Debug|x64
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x86.ActiveCfg = Debug|Win32
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Debug|x86.Build.0 = Debug|Win32
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x64.ActiveCfg = Release|x64
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x64.Build.0 = Release|x64
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x86.ActiveCfg = Release|Win32
- {1F4724C2-6BC1-42C2-ACC1-93AAA85BA624}.Release|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {898933DD-7FA8-4FA7-872F-63991ACB024A}
- EndGlobalSection
-EndGlobal
diff --git a/laboap1/laboap1/laboap1.cpp b/laboap1/laboap1/laboap1.cpp
deleted file mode 100644
index 0329b66..0000000
--- a/laboap1/laboap1/laboap1.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-#include
-#include
-#include
-
-void printArray(int arr[], int size) {
- for (int i = 0; i < size; i++) {
- printf("%d ", arr[i]);
- }
- printf("\n");
-}
-
-void insertionSort(int arr[], int size) {
- int i, key, j;
- for (i = 1; i < size; i++) {
- key = arr[i];
- j = i - 1;
-
- while (j >= 0 && arr[j] > key) {
- arr[j + 1] = arr[j];
- j = j - 1;
- }
- arr[j + 1] = key;
- }
-}
-
-void merge(int arr[], int left, int mid, int right) {
- int i, j, k;
- int n1 = mid - left + 1;
- int n2 = right - mid;
-
- int L[n1], R[n2];
-
- for (i = 0; i < n1; i++)
- L[i] = arr[left + i];
- for (j = 0; j < n2; j++)
- R[j] = arr[mid + 1 + j];
-
- i = 0;
- j = 0;
- k = left;
- while (i < n1 && j < n2) {
- if (L[i] <= R[j]) {
- arr[k] = L[i];
- i++;
- }
- else {
- arr[k] = R[j];
- j++;
- }
- k++;
- }
-
- while (i < n1) {
- arr[k] = L[i];
- i++;
- k++;
- }
-
- while (j < n2) {
- arr[k] = R[j];
- j++;
- k++;
- }
-}
-
-void mergeSort(int arr[], int left, int right) {
- if (left < right) {
- int mid = left + (right - left) / 2;
-
- mergeSort(arr, left, mid);
- mergeSort(arr, mid + 1, right);
-
- merge(arr, left, mid, right);
- }
-}
-
-int main() {
- srand(time(0));
-
- int size;
- printf("Enter the size of the array: ");
- scanf("%d", &size);
-
- int arr[size];
- for (int i = 0; i < size; i++) {
- arr[i] = rand() % 100;
- }
-
- printf("Randomly generated array: ");
- printArray(arr, size);
-
- int choice;
- printf("Enter 1 to delete an element, 2 to insert a new element: ");
- scanf("%d", &choice);
-
- if (choice == 1) {
- int index;
- printf("Enter the index of the element you want to delete: ");
- scanf("%d", &index);
-
- for (int i = index; i < size - 1; i++) {
- arr[i] = arr[i + 1];
- }
- size--;
- }
- else if (choice == 2) {
- int index, element;
- printf("Enter the index at which you want to insert the new element: ");
- scanf("%d", &index);
- printf("Enter the new element: ");
- scanf("%d", &element);
-
- for (int i = size; i > index; i--) {
- arr[i] = arr[i - 1];
- }
- arr[index] = element;
- size++;
- }
- else {
- printf("Invalid choice");
- return 0;
- }
-
- printf("Modified array: ");
- printArray(arr, size);
-
- int arr_copy[size];
- for (int i = 0; i < size; i++) {
- arr_copy[i] = arr[i];
- }
-
- clock_t start_time = clock();
- insertionSort(arr, size);
- clock_t end_time = clock();
- double insertion_time = ((double)(end_time - start_time)) / CLOCKS_PER_SEC;
-
- printf("Array sorted using Insertion Sort: ");
- printArray(arr, size);
- printf("Time taken by Insertion Sort: %f seconds\n", insertion_time);
-
- start_time = clock();
- mergeSort(arr_copy, 0, size - 1);
- end_time = clock();
- double merge_time = ((double)(end_time - start_time)) / CLOCKS_PER_SEC;
-
- printf("Array sorted using Merge Sort: ");
- printArray(arr_copy, size);
- printf("Time taken by Merge Sort: %f seconds\n", merge_time);
-
- return 0;
-}
\ No newline at end of file
diff --git a/laboap1/laboap1/laboap1.vcxproj b/laboap1/laboap1/laboap1.vcxproj
deleted file mode 100644
index 085cb5f..0000000
--- a/laboap1/laboap1/laboap1.vcxproj
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
-
- 17.0
- Win32Proj
- {1f4724c2-6bc1-42c2-acc1-93aaa85ba624}
- laboap1
- 10.0
-
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- Application
- true
- v143
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Level3
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
- Level3
- true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- Default
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/laboap1/laboap1/laboap1.vcxproj.filters b/laboap1/laboap1/laboap1.vcxproj.filters
deleted file mode 100644
index 2bff827..0000000
--- a/laboap1/laboap1/laboap1.vcxproj.filters
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
-
-
- Исходные файлы
-
-
-
\ No newline at end of file