
- •Введение
- •1 Анализ предметной области и постановка задачи
- •Анализ предметной области
- •Постановка задачи проектирования
- •Обоснование выбора компонентов
- •1.3.1 Выбор языка программирования
- •1.3.2 Выбор средств разработки программы
- •Выводы по первой главе
- •2 Проектирование программного обеспечения
- •Разработка диаграммы вариантов использования
- •Проектирование функциональной структуры приложения
- •Проектирование структурной модели приложения
- •Проектирование пользовательского интерфейса
- •Выводы по второй главе
- •3 Реализация программного продукта
- •Реализация пользовательского интерфейса
- •Реализации функциональных частей
- •4 Тестирование программы
- •Заключение
- •Список использованных источников
- •Приложение а (обязательное) техническое задание
- •Приложение б (обязательное) диаграмма вариантов использования
- •Приложение ж
Реализации функциональных частей
В данном подпункте представлены результаты разработки основных функциональных частей, которые входят в состав информационной системы «Ретро автомобили».
Добавление файлов осуществлено алгоритмом, представленным в листинге 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
{ }
}
}
}