Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
П32 Железняк ДВ Информационная система Ретро ав...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.17 Mб
Скачать
    1. Реализации функциональных частей

В данном подпункте представлены результаты разработки основных функциональных частей, которые входят в состав информационной системы «Ретро автомобили».

Добавление файлов осуществлено алгоритмом, представленным в листинге 3.1.

Листинг 3.1 – Процедура добавления файла в программу

private void button1_Click(object sender, EventArgs e)

{

//Ввод название файла

string value = "новая запись";

if (InputBox("Введите имя", "Имя новой записи:", ref value) == DialogResult.OK)

{

if(openFileDialog1.ShowDialog()== DialogResult.OK)

{

//Создание пути, куда будет сохранен файл

string path = "./Ретро автомобили/" + folder + "/" + value + ".mht";

System.IO.File.Copy(openFileDialog1.FileName, path, true);

List<string> data = new List<string>();

if (treeView1.SelectedNode != null)

{

if((treeView1.SelectedNode.Parent != null))

{

data.Add((treeView1.SelectedNode.Parent.Index + 1).ToString());

}

else

{

data.Add((treeView1.SelectedNode.Index + 1).ToString());

}

}

else

{

MessageBox.Show("Ошибка! Не выбрана категория для размещения файла! ");

return;

}

data.Add(value);

data.Add(path);

if (AddRecord(data, this.path))

{

DataClass = new Class_prasm(this.path);

NBR_Load(this, null);

}

}

}

}

private bool AddRecord(List<string> newData, string path)

{

string[] tagName =

new string[] { "Doch", "Title", "Patch" };

XmlDocument xmlDoc;

FileStream fStream = null;

try

{

//создание потока filestream (fs)

using (fStream = new FileStream(path, FileMode.Open,

FileAccess.Read, FileShare.ReadWrite))

{

//создание xml документа

xmlDoc = new XmlDocument();

//загрузка xml документа

xmlDoc.Load(fStream);

//Закрытие потока fs filestream

fStream.Close();

}

}

catch

{

MessageBox.Show("Ошибка!Файл не добавлен!");

return false;

}

finally

{

if (fStream != null)

{

fStream.Close();

}

}

try

{

XmlElement newOUTERitem =

xmlDoc.CreateElement("Uroki");

for (int i = 0; i < tagName.Length; i++)

{

XmlElement newitem;

// создание нового элемента (узла)

newitem = xmlDoc.CreateElement(tagName[i]);

// Помещение значения (внутренний текст) в узел

newitem.InnerText = newData[i];

//Закрытие узла

newOUTERitem.AppendChild(newitem);

}

// Закрытие внешнего узла

xmlDoc.DocumentElement.InsertAfter(newOUTERitem, xmlDoc.DocumentElement.FirstChild);

//Сохранение XML файла

FileStream WRITER = new FileStream(path,

FileMode.Truncate, FileAccess.Write,

FileShare.ReadWrite);

xmlDoc.Save(WRITER);

//Закрытие потока filestream

WRITER.Close();

}

catch

{

MessageBox.Show("0шибка! Не выбрана категория для размещения файла!");

return false;

}

return true;

}

Процедура для удаления файла из программы представлена в листинге 3.2.

Листинг 3.2 – Процедура удаления файла

private void button2_Click(object sender, EventArgs e)

{

if (treeView1.SelectedNode != null)

{

if (treeView1.SelectedNode.Parent != null)

{

XmlDocument doc = new XmlDocument();

doc.Load(path);

string doch = (treeView1.SelectedNode.Parent.Index + 1).ToString();

string title = treeView1.SelectedNode.Text;

XmlNode root = doc.DocumentElement;

XmlNode node = root.SelectSingleNode(

String.Format("Uroki[Doch='{0}' and Title='{1}']",

doch, title));

File.Delete(node.LastChild.InnerText);

XmlNode outer = node.ParentNode;

outer.RemoveChild(node);

doc.Save(path);

DataClass = new Class_prasm(this.path);

NBR_Load(this, null);

}

else

{

}

}

else

{ }

}

}

}