Контрольный пример и описание результатов




 

Запустим приложение, содержащее изначальные тестовые данные.

Рис.5. Запуск приложения с начальными данными

 

Добавление нового банка

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

 

Удаление добавленного банка

ВАЖНО! Удаление записей производится выделением удаляемой строки и нажатием кнопки Deleteна клавиатуре.

Рис.7. Удаление нового банка

 

Авторизация пользователя

Рис. 8. Авторизация

Выводы

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

 

Заключение

В ходе программирования были разработаны стандартные методы работы с XML базой данных и реализованы в виде оболочки обычного Windows-приложения

 

Приложение 1 – UMLдиаграммы

 

 

Приложение 2 – Исходный код

 

Program.cs

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

 

namespaceКурсовая_Баранов_

{

staticclassProgram

{

///<summary>

/// The main entry point for the application.

///</summary>

[STAThread]

staticvoid Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(newForm1());

}

}

}

 

 

Form1.cs

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespaceНосова_курсовая

{

publicpartialclassForm1: Form

{

publicbool b = false;

publicНабор_данныхНД;

DataGridViewCellCancelEventArgs row;

 

public Form1()

{

InitializeComponent();

НД = newНабор_данных(dataSet1);

НД.ПостроитьДеревоУзлов(treeView1);

банкиBindingSource.DataSource = НД.ДатьТаблицуБанков();

состоянияBindingSource.DataSource = НД.ДатьТаблицуСостояний();

DataTable table = НД.ДатьТаблицу();

банкоматыBindingSource.DataSource = table;

}

 

privatevoid button1_Click(object sender, EventArgs e)

{

Close();

}

 

privatevoid treeView1_AfterSelect(object sender, TreeViewEventArgs e)

{

DataTable table;

if (e.Node == treeView1.Nodes[0]) //режимредактированияидобавления

{

table = НД.ДатьТаблицу();

 

dataGridView1.ReadOnly = false;

dataGridView1.AllowUserToAddRows = true; //разрешитьдобавлениестрок

 

// Показатьсписок (редактироватьможно)

idбанкаDataGridViewTextBoxColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;

idсостоянияDataGridViewTextBoxColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;

}

else

{ // Толькочтение

table = НД.ДатьОтобранныеБанкоматы(e.Node.Tag.ToString());

dataGridView1.ReadOnly = true;

dataGridView1.AllowUserToAddRows = false;

 

// Убратьсписок (редактироватьнельзя)

idбанкаDataGridViewTextBoxColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;

idсостоянияDataGridViewTextBoxColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;

}

банкоматыBindingSource.DataSource = table;

 

}

 

privatevoid dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)

{

 

DataGridView view = (DataGridView)sender;

view.Rows[e.RowIndex].ErrorText = "Неверноуказаныданныевстолбце:" + view.Columns[e.ColumnIndex].HeaderText;

e.ThrowException = false;

}

 

privatevoid dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

{

row = e;

}

 

privatevoid dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)

{

DataGridView view = (DataGridView)sender;

view.Rows[e.RowIndex].ErrorText = "";

view.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "";

}

 

privatevoid toolStripButton2_Click(object sender, EventArgs e)

{

Close();

}

 

privatevoid toolStripButton1_Click(object sender, EventArgs e)

{

Form2 f2 = newForm2(this);

f2.ShowDialog();

 

if (b == true)

{label1.Text = "ДоброПожаловать!";}

}

 

privatevoid treeView1_MouseClick(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Right)

{

Form3 f3 = newForm3(НД);

f3.ShowDialog();

f3.Close();

НД.ПостроитьДеревоУзлов(treeView1);

}

}

 

 

}

}

 

Form2.cs

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespaceНосова_курсовая

{

publicpartialclassForm2: Form

{

Form1 f1;

publicНабор_данныхНД;

public Form2(Form1 f1)

{

НД = f1.НД;

this.f1 = f1;

InitializeComponent();

}

 

privatevoid button2_Click(object sender, EventArgs e)

{

this.Close();

}

 

privatevoid button1_Click(object sender, EventArgs e)

{

for (int i = 0; i < НД.Узнать_длину_пользователей(); i++)

{

if ((textBox1.Text == НД.Узнать_логин_пользователя(i)) && (textBox2.Text == НД.Узнать_пароль_пользователя(i))) { f1.b = true; this.Close();return; }

else { f1.b = false;}

}

 

}

}

}

 

 

Form3.cs

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespaceНосова_курсовая

{

publicpartialclassForm3: Form

{

Набор_данных НД;

public Form3(Набор_данных НД)

{

InitializeComponent();

this.НД = НД;

 

банкиBindingSource.DataSource = НД.ДатьТаблицуБанков();

состоянияBindingSource.DataSource = НД.ДатьТаблицуСостояний();

}

 

privatevoid button1_Click(object sender, EventArgs e)

{

this.Close();

}

}

}

 

 

НаборДанных.cs

 

using System;

using System.IO;

using System.Data;

using System.Windows.Forms;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespaceНосова_курсовая

{

publicclassНабор_данных

{

 

privatereadonlystring fileName = Application.StartupPath + "\\Банкоматы.xml";

privateDataSet1 ds;

 

// Конструктор

publicНабор_данных(DataSet1 DataSet1)

{

ds = DataSet1;

 

///если файл был сохранен раньше читаем его

if (File.Exists(fileName))

{

//читаем

ds.ReadXml(fileName);

}

else

{

//или создаем новое хранилище

ds = НачЗапDS();

}

}

 

/// Инициализируем набор данных начальными значениями

publicDataSet1 НачЗапDS()

{

// Банки

ds.Банки.AddБанкиRow("Мастербанк");

ds.Банки.AddБанкиRow("Сбербанк");

ds.Банки.AddБанкиRow("Юникредитбанк");

ds.Банки.AddБанкиRow("Ситибанк");

ds.Банки.AddБанкиRow("Альфабанк");

 

// Пользователи

 

ds.Пользователи.AddПользователиRow("admin", "admin", "Администратор");

ds.Пользователи.AddПользователиRow("user", "user", "Пользователь");

 

// Состояния

 

ds.Состояния.AddСостоянияRow("Отключен");

ds.Состояния.AddСостоянияRow("Включен");

ds.Состояния.AddСостоянияRow("Сломан");

 

//Банкоматы

 

ds.Банкоматы.AddБанкоматыRow(ds.Банки[0], ds.Состояния[0], 5000, "Тьмутаракань, д.9", "Рубли", true);

ds.Банкоматы.AddБанкоматыRow(ds.Банки[1], ds.Состояния[1], 35000, "Тимирязевская, д.5", "Доллары", true);

ds.Банкоматы.AddБанкоматыRow(ds.Банки[2], ds.Состояния[2], 0, "Дмитровское шоссе, д.1", "Евро", true);

ds.Банкоматы.AddБанкоматыRow(ds.Банки[3], ds.Состояния[1], 35000, "Простоквашино, д.8", "Фунты", true);

ds.Банкоматы.AddБанкоматыRow(ds.Банки[4], ds.Состояния[0], 5000, "Деревня Гадюкино, д.5", "Гривны", true);

 

return ds;

}

 

// Получить навигационные узлы

publicvoid ПостроитьДеревоУзлов(TreeView treeView)

{

treeView.Nodes.Clear();

 

// Создать корневой узел

TreeNode node = newTreeNode("Все Банкоматы"); // узел.Text="Все банкоматы"

node.Tag = ""; //Будет использовано в качестве фильтра для отбора строк

treeView.Nodes.Add(node);

 

// Создать подчиненные узлы

string iD_Банки = ds.Банки.Id_банкаColumn.ColumnName; //имя поля

string iD_Состояния = ds.Состояния.Id_состоянияColumn.ColumnName; //имя поля

 

foreach (DataSet1.БанкиRow rowБанки in ds.Банки.Rows) // Перебираем назначения

{

node = newTreeNode(rowБанки.Название_банка);

 

 

node.Tag = String.Format("{0} = '{1}'", iD_Банки, rowБанки.Название_банка);

 

foreach (DataSet1.СостоянияRow rowсост in ds.Состояния.Rows) // Перебираем состояния

{

TreeNode дочернийУзел = newTreeNode(rowсост.Состояние.ToString());

дочернийУзел.Tag = String.Format("{0} = '{1}' AND {2} = '{3}'",

iD_Банки, rowБанки.Название_банка,

iD_Состояния, rowсост.Состояние);

 

node.Nodes.Add(дочернийУзел); // Добавить в узел Назначение дочерний узел ФормаВыпуска

}

treeView.Nodes.Add(node); // Добавить в список узел вместе с дочерними

}

 

treeView.SelectedNode = treeView.Nodes[0]; // Первыйвыделяем

}

 

/// Вернуть табличку с банками

publicDataTable ДатьТаблицуБанков()

{

return ds.Банки;

}

 

/// Вернуть табличку с пользователями

publicDataTable ДатьТаблицуПользователей()

{

return ds.Пользователи;

}

 

/// Вернуть табличку с состояниями

publicDataTable ДатьТаблицуСостояний()

{

return ds.Состояния;

}

 

publicint УзнатьID_банка(int bank) //поиск ID определенного банка

{

 

for (int i = 0; i < ds.Банкоматы.Rows.Count; i++)

{

if (ds.Банкоматы[i].Id_банка == bank)

{

return ds.Банкоматы[i].Id_банка;

}

}

return -1;}

 

publicint УзнатьID_состояния(int sost) //поиск ID определенного состояния

{

 

for (int i = 0; i < ds.Банкоматы.Rows.Count; i++)

{

if (ds.Банкоматы[i].Id_состояния == sost)

{

return ds.Банкоматы[i].Id_состояния;

}

}

return -1;

}

publicstring Узнать_логин_пользователя(int p) //поиск ID определенного предмета

{

return ds.Пользователи[p].Логин_пользователя;

}

publicstring Узнать_пароль_пользователя(int p) //поиск ID определенного предмета

{

return ds.Пользователи[p].Пароль_пользователя;

}

publicint Узнать_длину_пользователей()

{

return ds.Пользователи.Rows.Count;

}

// Вернуть Отфильтрованную табличку с банкоматами

// режим - только чтение

publicDataTableДатьОтобранныеБанкоматы(string filterExpression)

{

DataSet1.БанкоматыDataTable table = newDataSet1.БанкоматыDataTable();

DataRow[] row = ds.Банкоматы.Select(filterExpression); //Отобратьстрокипофильтру

 

foreach (DataRow selectrow in row)

table.Rows.Add(selectrow.ItemArray);

return table;

}

// Вернуть всю таблицу

// режим изменения данных

publicDataTableДатьТаблицу()

{

return ds.Банкоматы;

}

 

// Сохраняем наш набор данных (схема не нужна, так как она есть в.XSD)

publicvoidСохранитьDS()

{

ds.WriteXml(fileName);

}

 

}

}

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: