Курсовая работа: Разработка программы "Формирование и проверка контрольной суммы кластеров"
- кнопку для анализа (Анализ);
- кнопку запуска и проверки алгоритмов (Проверить алгоритм);
- стандартные элементы управления окном в ОС семейств Windows.
Рисунок 3.2 – Внешний вид главного окна приложения
Конструктор, обработчики событий и члены класса Form1
Инициализация объектов-членов класса Form1 осуществляется в конструкторе класса. Ниже приведен код конструктора с комментариями:
public Form1() {
//инициализация компонента – необходима для создания окна
InitializeComponent();
}
Также несколько методов класса Form1, код которого приведен в приложении являются обработчиками событий: нажатие кнопки, работа с информацией.
Программная реализация функции private void AddHDDItemToListview()
Данная функция добавляет в список подключенные запоминающие устройства. Ниже приведен код функции.
private void AddHDDItemToListview()
{
//Makes the Search group:::......
ListViewGroup HDDGroup = new ListViewGroup();
HDDGroup.Header = "HardDrive(s) :";
HDDGroup.HeaderAlignment = HorizontalAlignment.Left;
HDDGroup.Name = "HardDrive(s)";
//Adds the search group...
listView1.Groups.Add(HDDGroup);
int i = 0;
foreach (HardDrive x in hdCollection)
{ AddItemToListview(HDDGroup, i, x.Model.ToString(), 0, "1");
i++; }
HDDGroup = null; }
Программная реализация функции private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)
Данная функция добавляет информацию в структуру HardDrive. Ниже приведен код функции.
private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)
{ ListViewItem NewItem = new ListViewItem();
ListViewItem.ListViewSubItem NewSubItem = new ListViewItem.ListViewSubItem();
NewSubItem.Text = IndexNumber.ToString();
NewSubItem.Name = "Subitem1";
NewItem.SubItems.Add(NewSubItem);
NewItem.SubItems.Add(NewSubItem);
NewItem.Name = ItemName;
NewItem.Text = ItemName;
NewItem.Group = GroupName;
NewItem.ImageIndex = ImageIndex;
NewItem.Tag = ItemTAG;
listView1.Items.Add(NewItem);
NewItem = null;
NewSubItem = null;
// Group = null; }
Программная реализация функции private void private void listView1_SelectedIndexChanged(object sender, EventArgs e)
Данная функция определяет какое устройство пользователь выбрал в списке. Ниже приведен код функции.
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{ int selected_index;
try {
//MessageBox.Show(listView1.SelectedItems[0].Tag.ToString());
selected_index = listView1.SelectedItems[0].Index;
switch (listView1.SelectedItems[0].Tag.ToString())
{ case "1":
WriteHDDText();
break; } }
catch (Exception)
{ //Do nothing } }
2.5 Программная реализация класса Form2
программа контрольная сумма кластер
Класс Form2 описывает поведение дополнительного окна приложения, внешний вид которого представлен на рисунке 3.3.
Рисунок 3.3 – Внешний вид дополнительного окна приложения
Как видно на рисунке 3.3, дополнителное окно разработанного приложения Контрольная сумма включает в себя следующие элементы:
- четыре текстовых поля для ввода и вывода информации проверки алгоритмов формирования контрольной суммы кластеров, реализованные объектами textBox1, textBox2, textBox3, textBox4 ;
- кнопку для запуска проверки алгоритма CRC32(проверить CRC32);
- кнопку для запуска проверки алгоритма MD5 (проверить MD5);
- стандартные элементы управления окном в ОС семейств Windows.
Конструктор, обработчики событий и члены класса Form2
Инициализация объектов-членов класса Form2 осуществляется в конструкторе класса. Ниже приведен код конструктора с комментариями:
public Form2() {
//инициализация компонента – необходима для создания окна
InitializeComponent();
}
Также несколько методов класса Form2, код которого приведен в приложении являются обработчиками событий: нажатие кнопки, работа с информацией.
Программная реализация обработчика сообщений private void button1_Click(object sender, EventArgs e)
Определяет действие при нажатии кнопки «CRC32». Код обработчика приведен ниже.
private void button1_Click(object sender, EventArgs e)
{ // Читаем
System.IO.FileStream stream1 = System.IO.File.OpenRead(textBox1.Text.ToString());
textBox3.Text=(string.Format("{0:X}", CalculateCRC(stream1))).ToString();}
Программная реализация функции public static uint CalculateCRC(System.IO.Stream stream)
Данная функция реализует алгоритм формирования контрольной суммы CRC32. Код функции приведен ниже с комментариями.
public static uint CalculateCRC(System.IO.Stream stream)
{ const int buffer_size = 1024;
const uint POLYNOMIAL = 0xEDB88320;
uint result = 0xFFFFFFFF;
uint Crc32;
byte[] buffer = new byte[buffer_size];
uint[] table_CRC32 = new uint[256];
unchecked
{ // Инициалиазация таблицы
for (int i = 0; i < 256; i++)
{ Crc32 = (uint)i;
for (int j = 8; j > 0; j--)
{ if ((Crc32 & 1)==1)
Crc32 = (Crc32 >> 1) ^ POLYNOMIAL;
else
Crc32 >>= 1; }
table_CRC32[i] = Crc32; }
// Чтение из буфера
int count = stream.Read(buffer, 0, buffer_size);
// Вычисление CRC
while (count > 0)
{ for (int i = 0; i < count; i++)
{ result = ((result) >> 8)
^ table_CRC32[(buffer[i])
^ ((result) & 0x000000FF)]; }
count = stream.Read(buffer, 0, buffer_size); } }
return ~result; }
Программная реализация обработчика сообщений private void button2_Click(object sender, EventArgs e)
Определяет действие при нажатии кнопки «проверка MD5». Также мостит в себе алгоритм формирования контрольной суммы MD5 и все прилагающие функции. Код из-за большого объема не описывается, его можно просмотреть в общем коде программы в Приложении Б.
3. ТЕСТИРОВАНИЕ ПРОГРАММЫ И РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
3.1 Тестирование программы
В ходе выполнения задания курсового проектирования было проведено тестирование результирующего программного продукта.
В результате тестирования программы были установлены как недостатки разработанных алгоритмов, так и несовершенство их программной реализации, как-то:
- зависимость от прав администратора;
- невозможность изменения кластера с помощью прямого доступа, а сложности при проверке;
- проблемы с прямым доступом, связанные с новыми введенными ограничениями в ОС Windows 7.
Обнаруженные недостатки были исправлены как на уровне алгоритма (если требовалось), так и на уровне программной реализации.
Также во время тестирования программы были определены минимальные требования к оборудованию и программному обеспечению для использования данного продукта:
ОС Windows XP, процессор Pentium IV 1 ГГц, ОЗУ 128 Мб, 100 KB свободного места на жестком диске, библиотека .NET Framework 4.0 и выше.
3.2 Руководство пользователя
После запуска программы на экране отображается окно со следующими элементами:
- список подключенных устройств хранения данных. С помощью списка производится выбор устройства, для которого пользователь хочет применить нужные операции;
- текстовое поле отображения информации об устройстве и контрольная сумма кластеров;
- текстовое поле отображения информации для проверки и сравнения;
- кнопка для анализа (Анализ), активирует второе текстовое поле;
- кнопка запуска и проверки алгоритмов (Проверить алгоритм);
- четыре текстовых поля для ввода и вывода информации проверки алгоритмов формирования контрольной суммы кластеров;
- кнопка для запуска проверки алгоритма CRC32(проверить CRC32);
- кнопка для запуска проверки алгоритма MD5 (проверить MD5);
ВЫВОДЫ
Во время выполнения задания были закреплены навыки использования функций библиотеки .NET Framework, углублены знания в языке C# и написании программ под ОС семейства Windows.