This commit is contained in:
ivans 2024-05-22 11:19:12 +04:00
parent d052f9a608
commit 760763c667
27 changed files with 105 additions and 46 deletions

Binary file not shown.

View File

@ -1,7 +1,9 @@
{
"ExpandedNodes": [
""
"",
"\\KursiveWork",
"\\KursiveWork\\KursiveWork"
],
"SelectedNode": "\\C:\\Users\\ivans\\Source\\Repos\\KurseWork",
"SelectedNode": "\\KursiveWork\\KursiveWork\\infoform.cs",
"PreviewInSolutionExplorer": false
}

Binary file not shown.

Binary file not shown.

View File

@ -58,12 +58,13 @@ public class LinkedList
{
return new LinkedListState(this);
}
// Метод для возврата в определенное состояние
public void RestoreState(LinkedListState state)
{
head = state.Head;
}
public void RestoreState(LinkedListState state)
{
head = state.Head;
}
// Метод для выполнения шага операции
public void PerformStep(LinkedListParameters parameters)

View File

@ -57,20 +57,57 @@ public class LinkedListStorage
}
// Метод возврата в начальное состояние
public void Reset()
public LinkedListState Reset()
{
currentIndex = -1;
currentIndex = 0;
// Проверка, не пуст ли список состояний
if (states.Count > 0)
{
return states[currentIndex]; // Возвращаем первое состояние
}
else
{
return null; // Возвращаем null, если список пуст
}
}
// Метод сохранения состояний в файл
// Вспомогательный метод для сохранения узла
private void SaveNode(BinaryWriter writer, Node node)
{
if (node != null)
{
writer.Write(node.Data); // Записываем данные узла в двоичном формате
SaveNode(writer, node.Next);
}
else
{
writer.Write(-1); // Используем -1 как маркер конца списка
}
}
public void Save(string filename)
{
using (BinaryWriter writer = new BinaryWriter(File.Open(filename, FileMode.Create)))
{
writer.Write(states.Count); // Записываем количество состояний в двоичном формате
foreach (LinkedListState state in states)
{
SaveNode(writer, state.Head);
}
}
}
public List<LinkedListState> Load(string filename)
{
states.Clear();
currentIndex = -1;
currentIndex = 0;
using (StreamReader reader = new StreamReader(filename))
using (BinaryReader reader = new BinaryReader(File.Open(filename, FileMode.Open)))
{
int count = int.Parse(reader.ReadLine()); // Читаем количество состояний
int count = reader.ReadInt32(); // Читаем количество состояний
for (int i = 0; i < count; i++)
{
states.Add(new LinkedListState(LoadNode(reader)));
@ -80,24 +117,9 @@ public class LinkedListStorage
return states;
}
// Вспомогательный метод для сохранения узла
private void SaveNode(StreamWriter writer, Node node)
private Node LoadNode(BinaryReader reader)
{
if (node != null)
{
writer.WriteLine(node.Data); // Записываем данные узла в отдельной строке
SaveNode(writer, node.Next);
}
else
{
writer.WriteLine(-1); // Используем -1 как маркер конца списка
}
}
// Вспомогательный метод для загрузки узла
private Node LoadNode(StreamReader reader)
{
int data = int.Parse(reader.ReadLine()); // Читаем данные узла из строки
int data = reader.ReadInt32(); // Читаем данные узла
if (data == -1)
{
return null;
@ -108,18 +130,7 @@ public class LinkedListStorage
}
}
// Метод сохранения состояний в файл
public void Save(string filename)
{
using (StreamWriter writer = new StreamWriter(filename))
{
writer.WriteLine(states.Count); // Записываем количество состояний
foreach (LinkedListState state in states)
{
SaveNode(writer, state.Head);
}
}
}
}

View File

@ -39,6 +39,7 @@
LoadToolStripMenuItem = new ToolStripMenuItem();
InfoToolStripMenuItem = new ToolStripMenuItem();
toolTip1 = new ToolTip(components);
buttonReset = new Button();
((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
menuSaveLoad.SuspendLayout();
SuspendLayout();
@ -73,7 +74,7 @@
//
// buttonNextStep
//
buttonNextStep.Location = new Point(553, 368);
buttonNextStep.Location = new Point(553, 342);
buttonNextStep.Name = "buttonNextStep";
buttonNextStep.Size = new Size(85, 23);
buttonNextStep.TabIndex = 5;
@ -123,11 +124,22 @@
InfoToolStripMenuItem.ToolTipText = "Настоятельно рекомендуется к прочтению";
InfoToolStripMenuItem.Click += InfoToolStripMenuItem_Click;
//
// buttonReset
//
buttonReset.Location = new Point(553, 369);
buttonReset.Name = "buttonReset";
buttonReset.Size = new Size(85, 23);
buttonReset.TabIndex = 8;
buttonReset.Text = "Начало";
buttonReset.UseVisualStyleBackColor = true;
buttonReset.Click += buttonReset_Click;
//
// MainForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450);
Controls.Add(buttonReset);
Controls.Add(buttonPreviousStep);
Controls.Add(buttonNextStep);
Controls.Add(ButtonSearch);
@ -156,5 +168,6 @@
private ToolStripMenuItem LoadToolStripMenuItem;
private ToolStripMenuItem InfoToolStripMenuItem;
private ToolTip toolTip1;
private Button buttonReset;
}
}

View File

@ -18,7 +18,7 @@ namespace KursiveWork
private LinkedList list;
private LinkedListVisualizer visualizer;
private LinkedListManager manager;
private LinkedListParameters parameters;
@ -27,7 +27,8 @@ namespace KursiveWork
InitializeComponent();
list = new LinkedList();
visualizer = new LinkedListVisualizer();
MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
//MessageBox.Show("Настоятельно рекомендуется ознакомиться с информацией с помощью меню сверху");
manager = new LinkedListManager(parameters);
Controls.Add(pictureBox);
pictureBox.Image = visualizer.Visualize(list.CreateState());
@ -115,7 +116,7 @@ namespace KursiveWork
private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
saveFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
saveFileDialog.Title = "Сохранить состояния";
saveFileDialog.ShowDialog();
@ -128,7 +129,7 @@ namespace KursiveWork
private void LoadToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Файл состояний (*.txt)|*.txt"; // Изменяем фильтр на *.txt
openFileDialog.Filter = "Файл состояний (*.dat)|*.dat"; // Изменяем фильтр на *.txt
openFileDialog.Title = "Загрузить состояния";
openFileDialog.ShowDialog();
@ -142,6 +143,10 @@ namespace KursiveWork
// Восстанавливаем первое состояние в списке list
list.RestoreState(firstState);
manager.storage.currentIndex = 0;
for (int i = 0; i < loadedStates.Count; i++)
{
}
pictureBox.Image = visualizer.Visualize(firstState);
}
}
@ -151,5 +156,14 @@ namespace KursiveWork
infoform infoform = new infoform();
infoform.ShowDialog();
}
private void buttonReset_Click(object sender, EventArgs e)
{
manager.storage.currentIndex = 1;
list.RestoreState(manager.storage.GetPreviousState());
manager.storage.currentIndex = 1;
LinkedListState state = manager.storage.GetPreviousState();
pictureBox.Image = visualizer.Visualize(state);
}
}
}

View File

@ -16,3 +16,21 @@ C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\ref
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.MainForm.resources
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.infoform.resources
C:\Users\ivans\source\repos\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.Inputform.resources
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.exe
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.deps.json
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.runtimeconfig.json
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.dll
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\bin\Debug\net7.0-windows\KursiveWork.pdb
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.infoform.resources
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.Inputform.resources
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.MainForm.resources
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.csproj.GenerateResource.cache
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.AssemblyInfoInputs.cache
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.AssemblyInfo.cs
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.csproj.CoreCompileInputs.cache
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.dll
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\refint\KursiveWork.dll
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.pdb
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\KursiveWork.genruntimeconfig.cache
C:\Users\ivans\Source\Repos\KurseWork\KursiveWork\KursiveWork\obj\Debug\net7.0-windows\ref\KursiveWork.dll

View File

@ -1 +1 @@
bd82fc72bf5bf9486a74f04096b102bf02a148cd
d6f8afed7b6068eca92bf941c29c08f3033fcca7