Разработка на основе объектной модели программы обработки списка книг - Студенческий научный форум

XIV Международная студенческая научная конференция Студенческий научный форум - 2022

Разработка на основе объектной модели программы обработки списка книг

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

Расширяемый язык разметки (XML) изначально был задуман как язык для описания новых форматов документов World Wide Web. XML происходит от Стандартного обобщенного языка разметки (Standard Generalized Markup Language — SGML) и может считаться метаязыком: языком для определения языков разметки. SGML и XML — это ориентированные на текст форматы, которые обеспечивают механизмы описания структур документов с помощью тэгов разметки (слов, взятых в угловые скобки ‘<‘ и ‘>’). Web-разработчики могут заметить некоторую схожесть между HTML и XML, обусловленную тем фактом, что они оба происходят от SGML.

Поскольку применение XML возросло, сейчас общепринято считать, что XML полезен не только при описании новых форматов документов для Web, но также подходит для описания структурированных данных. Примеры структурированных данных включают информацию, которая обычно содержится в крупноформатных таблицах, файлах конфигурации программы и сетевых протоколах.

Основная часть

В программе можно проводить поиск по автору и названию книги, добавлять новые данные по книгам в имеющуюся базу данных. Алгоритм функционирования представлен на рис. 1.

Рис 1. – Функционирование алгоритма

Создаем XML файл через Microsoft Visual Studio. В верхней панели управления нажимаем Файл> Создать> Файл. Далее выбираем XML-файл и создаем его. Устанавливаем имя и создаем структуру полей.

XML-файл имеет следующие поля:

name – название книги

avtor – автор

janr – жанр

vozrOgr – возрастное ограничение

stranici – страницы

Заполняем поля необходимыми данными и получаем результат, представленный на рис. 2.

Рис. 2. XML-файл

Интерфейс должен выполнять функции поиска по названию и автору книги, добавление новых книг и отображать все книги. Иметь область для клиента и администратора.

Для построения интерфейса используем tabControl, с двумя вкладками. «Клиент» с клиентским интерфейсом и «Админ» с интерфейсом для администратора.

Вкладка «Клиент» представлена на рис. 3.

Вкладка «Админ» представлена на рис. 4.

Для того, чтобы tabControl был растянул по размеру окна формы, в свойствах в вкладке Dock, укажем границы элемента управления, которые привязаны к контейнеру. Нужно поставить Fill, для заполнения по форме.

Вкладка «Клиент»:

label – с указанием «Поиск»

textbox1 – для ввода текста, по которому будет происходить поиск

button5 – поиск по названию книги

button1 – поиск по автору книги

button7 – покажет все имеющиеся книги

Результат поиска будет реализован в dataGridView1.

Вкладка «Админ».

Здесь находятся 5 label с подписями текст боксов и соответственно 5 текст боксов, в которые можно ввести данные по книге. Нажав на кнопку «Добавить книгу», эти данные добавятся в созданный ранее XML-файл и после успешного добавления новой книги откроется вкладка «Клиент». Если какое-либо одно или несколько полей не будут заполнены, пользователю откроется окно с информацией о том, что «Не все поля заполнены».

Кнопка отобразить все книги, выведет в dataGridView все данные по всем книгам.

Рис. 3. Вкладка «Клиент»

Рис. 4. Вкладка «Админ»

Для реализации программы программный код должен выполнять основные задачи: поиск по названию и автору книги, добавление новых данных и отображение всех книг.

Для начала создадим новый класс «Описание» с переменными:

public class Description

{

public static string name;

public static string avtor;

public static string janr;

public static int vozrOgr;

public static int stranici;

}

Создаем новый класс «книги», в котором создаем метод «создание элемента»

public partial class books

{

public static void elementCreation()

{

XmlDocument xmlDocument = new XmlDocument();

xmlDocument.Load(@"C:\Users\1\Desktop\КурсоваяООП\WindowsFormsApp1\WindowsFormsApp1\XMLFile1.xml");

XmlElement xRoot = xmlDocument.DocumentElement;

XmlElement bookElem = xmlDocument.CreateElement("book");

XmlAttribute nameAttr = xmlDocument.CreateAttribute("name");

XmlElement avtorElem = xmlDocument.CreateElement("avtor");

XmlElement janrElem = xmlDocument.CreateElement("janr");

XmlElement vozrOgrElem = xmlDocument.CreateElement("vozrOgr");

XmlElement straniciElem = xmlDocument.CreateElement("stranici");

string Name = Convert.ToString(Description.name);

string Avtor = Convert.ToString(Description.avtor);

string Janr = Convert.ToString(Description.janr);

string VozrOgr = Convert.ToString(Description.vozrOgr);

string Stranici = Convert.ToString(Description.stranici);

XmlText nameText = xmlDocument.CreateTextNode(Name);

XmlText avtorText = xmlDocument.CreateTextNode(Avtor);

XmlText janrText = xmlDocument.CreateTextNode(Janr);

XmlText vozrOgrText = xmlDocument.CreateTextNode(VozrOgr);

XmlText straniciText = xmlDocument.CreateTextNode(Stranici);

nameAttr.AppendChild(nameText);

avtorElem.AppendChild(avtorText);

janrElem.AppendChild(janrText);

vozrOgrElem.AppendChild(vozrOgrText);

straniciElem.AppendChild(straniciText);

bookElem.Attributes.Append(nameAttr);

bookElem.AppendChild(avtorElem);

bookElem.AppendChild(janrElem);

bookElem.AppendChild(vozrOgrElem);

bookElem.AppendChild(straniciElem);

xRoot.AppendChild(bookElem);

xmlDocument.Save(@"C:\Users\1\Desktop\КурсоваяООП\WindowsFormsApp1\WindowsFormsApp1\XMLFile1.xml");

}

Создаемтаблицу:

public static DataTable CreateTable()

{

DataTable dt = new DataTable("Books");

DataColumn colName = new DataColumn("Name", typeof(String));

DataColumn colAvtor = new DataColumn("Avtor", typeof(String));

DataColumn colJanr = new DataColumn("Janr", typeof(String));

DataColumn colVozrOgr = new DataColumn("VozrOgr", typeof(Int32));

DataColumn colStranici = new DataColumn("Stranici", typeof(Int32));

dt.Columns.Add(colName);

dt.Columns.Add(colAvtor);

dt.Columns.Add(colJanr);

dt.Columns.Add(colVozrOgr);

dt.Columns.Add(colStranici);

return dt;

Добавляем метод чтения xml-файла:

public static DataTable readXml()

{

DataTable dt = null;

try

{

dt = CreateTable();

DataRow newRow = null;

foreach (XElement elm in xDoc.Descendants("book"))

{

newRow = dt.NewRow();

if (elm.HasAttributes)

{

if (elm.Attribute("name") != null)

{

newRow["name"] = elm.Attribute("name").Value;

}

}

bookElem.AppendChild(avtorElem);

bookElem.AppendChild(janrElem);

bookElem.AppendChild(vozrOgrElem);

bookElem.AppendChild(straniciElem);

xRoot.AppendChild(bookElem);

Создаемтаблицу:

public static DataTable CreateTable()

{

DataTable dt = new DataTable("Books");

DataColumn colName = new DataColumn("Name", typeof(String));

DataColumn colAvtor = new DataColumn("Avtor", typeof(String));

DataColumn colJanr = new DataColumn("Janr", typeof(String));

DataColumn colVozrOgr = new DataColumn("VozrOgr", typeof(Int32));

DataColumn colStranici = new DataColumn("Stranici", typeof(Int32));

dt.Columns.Add(colName);

dt.Columns.Add(colAvtor);

dt.Columns.Add(colJanr);

dt.Columns.Add(colVozrOgr);

dt.Columns.Add(colStranici);

return dt;

Поискпоназванию:

public static DataTable searchByName(string qwe)

{

Form1 form1 = new Form1();

DataTable dt = null;

try

{

dt = CreateTable();

DataRow newRow = null;

foreach (XElement elm in xDoc.Descendants("book"))

{

newRow = dt.NewRow();

if (elm.HasAttributes)

{

string was = Convert.ToString(elm.Attribute("name"));

if (elm.Attribute("name").Value == qwe)

{

newRow["name"] = elm.Attribute("name").Value;

if (elm.Element("avtor") != null)

{

newRow["avtor"] = elm.Element("avtor").Value;

}

if (elm.Element("janr") != null)

{

newRow["janr"] = elm.Element("janr").Value;

}

if (elm.Element("vozrOgr") != null)

{

newRow["vozrOgr"] = elm.Element("vozrOgr").Value;

}

if (elm.Element("stranici") != null)

{

newRow["stranici"] = elm.Element("stranici").Value;

}

dt.Rows.Add(newRow);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

return dt;

}

Реализация кода кнопки поиска по названию:

private void Button5_Click(object sender, EventArgs e)

{

string qwe = textBox1.Text;

dataGridView1.DataSource = books.searchByName(qwe);

Реализация кода кнопки поиска по автору:

private void Button1_Click_1(object sender, EventArgs e)

{

string filtr = textBox1.Text;

dataGridView1.DataSource = books.searchByAVTOR(filtr)

Реализация кнопки добавить книгу во вкладке «админ»:

private void Button3_Click(object sender, EventArgs e)

{

if (textBox2.Text == "Название" || textBox3.Text == "Автор" || textBox4.Text == "Жанр" || textBox5.Text == "Возрастноеограничение" || textBox6.Text == "Страницы")

{

MessageBox.Show("Не все поля заполнены. \nОперация не выполнена");

return;

}

try

{

Description.name = Convert.ToString(textBox2.Text);

Description.avtor = Convert.ToString(textBox3.Text);

Description.janr = Convert.ToString(textBox4.Text);

Description.vozrOgr = Convert.ToInt32(textBox5.Text);

Description.stranici = Convert.ToInt32(textBox6.Text);

books.elementCreation();

XmlDocument xml = new XmlDocument();

xml.Load(@"C:\Users\1\Desktop\КурсоваяООП\WindowsFormsApp1\WindowsFormsApp1\XMLFile1.xml");

XmlElement element = xml.DocumentElement;

foreach (XmlNode i in element)

{

if (i.Attributes.Count > 0)

{

XmlNode attr = i.Attributes.GetNamedItem("name");

if (attr != null)

{

string aTTr = Convert.ToString(attr.Value);

if (aTTr == textBox2.Text)

{

MessageBox.Show("Книгадобавлена");

this.Hide();

Form1 form1 = new Form1();

form1.Show();

return;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

После реализации программного кода необходимо произвести отладку и полное тестирование программы.

Проверяем работу поиска по названию рис. 5.

Рис. 5. Поиск по названию

Проверяем работу кнопки поиск по автору рис. 6.

Рис. 6. Поиск по автору

Кнопка «Отобразить все книги» рис. 7.

Рис. 7. Отобразить все книги

Кнопка «Добавить книгу» во вкладке «админ» рис. 8.

Рис. 8. Добавление от админа

Сообщение о успешном добавлении книги рис. 9.

Рис. 9. Сообщение

Результат добавления новой книги рис. 10.

Рис. 10. Добавление книги

ЗАКЛЮЧЕНИЕ

В проделанной работе мы сделали приложение для обработки списка книг, выполняющее функциипоиска, отображения всех данных и добавления. Для выполнения работы был создан XML-файл, реализован интерфейс, программный код и проведено тестирование функций программы.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Бишоп, Дж. С# в кратком изложении / Дж. Бишоп. - М.: Бином. Лаборатория знаний, 2017. - 299 c. (дата обращения: 21.11.2021).

Чедвик, Джесс ASP.NET MVC 4. Разработка реальных веб-приложений с помощью ASP.NET MVC / Джесс Чедвик , Тодд Снайдер , Хришикеш Панда. - М.: Вильямс, 2017. - 432 c.

(дата обращения: 21.11.2021).

Подбельский, В. В. Язык C#. Решение задач / В.В. Подбельский. - М.: Финансы и статистика, 2014. - 296 c. (дата обращения: 21.11.2021).

Просмотров работы: 3