Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РОЗДІЛИ_PLEVAN.docx
Скачиваний:
19
Добавлен:
09.02.2016
Размер:
2.59 Mб
Скачать

2.3.2 Підготовка до роботи

Для роботи програмної системи необхідно встановити Microsoft .Net Framework версії 3.5 або вище.

2.3.3 Опис операцій

Організація інтерфейсу з користувачем відбувається наступним чином.

Рисунок 2.3.1- головне вікно програми

На даному рисунку зображено головне вікно програми, на якому розміщено дві кнопки: «Зняття образу» та «Розпаковка».

При натисканні на кнопку «Зняття образу» відкриється вікно зняття образу з певними необхідними параметрами (рисунок 2.2).

При натисканні на кнопку «розпаковка» відкриється вікно розпаковки образу зі своїми параметрами (рисунок 2.3).

Рисунок 2.3.2 – Вікно зняття образу

У даному вікні розміщено всі необхідні елементи для успішного здійснення зняття образу, а саме:

  • Кнопка «Каталог» - призначена для вибору папки з майбутнім вмістом образу;

  • Кнопка «Файл» - призначена для вибору окремих файлів з каталогу для майбутнього образу;

  • Кнопка «Зняти образ» - призначена безпосередньо для зняття образу з вказаними параметрами;

  • Поле для введення інформації «Пароль» - призначене для введення паролю від образу;

  • Чекбокс «Без стиснення» - призначений для того, щоб майбутній образ було створено без стиснення;

  • Чекбокс «Видаляти джерело» - призначений для того, щоб після створення образу, видалявся каталог чи файл який послужив джерелом для образу;

  • Поле для виводу вибраного шляху до майбутнього вмісту образу (каталогу чи файлу).

Рисунок 2.3.3 – Вікно розпаковки образу

У даному вікні розміщено всі необхідні елементи для успішної розпаковки образу, а саме:

  • Кнопка «Образ» - призначена для вибору образу, який розпаковуватиметься;

  • Кнопка «Розпакувати» - призначена безпосередньо для розпакування образу;

  • Поле для введення інформації «Пароль» - призначене для введення паролю від образу.

2.4 Uml діаграма класів

Діаграма класів - статичне представлення структури моделі. Відображає статичні (декларативні) елементи, такі як: класи, типи даних, їх зміст та відношення. Діаграма класів, також, може містити позначення для пакетів та може містити позначення для вкладених пакетів. Також, діаграма класів може містити позначення деяких елементів поведінки, однак їх динаміка розкривається в інших типах діаграм. Діаграма класів (class diagram) служить для представлення статичної структури моделі системи в термінології класів об'єктно-орієнтованого програмування. На цій діаграмі показують класи, інтерфейси, об'єкти й кооперації, а також їхні відносини.

Рисунок 2.4 – UML діаграма класів

2.5 Алгоритм роботи

  1. Визначення типу архіва/образа(стиснутий, зашифрований)

  2. Читання списку об’єктів архівації

  3. Формування на основі прочитаного списку і списку виключень повного списку об’єктів які архівуються

  4. Створення заголовка архіва (в об’єктному вигляді)

  5. Перебір повного списку об’єктів які лежать у заголовку

  6. Обробка об’єкта, оновлення даних про його розмір після обробки у заголовку, запис у тимчасовий файл обробленого вмісту.

  7. Збереження заголовка в файл

  8. Обробка заголовка(стиснення, шифрування)

  9. Збірка кінцевого файлу архіва

2.6 Прототипи (форми в vs)

Технології та бібліотеки

  • Бібліотека zlib.net.dll

  • Середовище розробки Visual Studio 2010

  • Мова C#

  • Framework 3.5

Технічне завдання. Архіватор повинен вміти:

  • стискати файли і каталоги

  • збирати образ без стиснення

  • шифрувати дані (зі стисканням та без)

  • виключати вказані шляхи

  • видаляти файли після їх стискання

  • розпаковувати образ

Створюємо головну форму програми на якій буде розміщено дві кнопки «Зняти образ» і «Розпаковка»:

namespace std

{

public partial class MainForm : Form

{

public MainForm()

{

InitializeComponent();

}

private void bCompress_Click(object sender, EventArgs e)

{

new CompressForm().ShowDialog();

}

private void bDecompress_Click(object sender, EventArgs e)

{

new DecompressForm().ShowDialog();

}

private void MainForm_Load(object sender, EventArgs e)

{

}

}

}

Рисунок 2.6.1 – Головна форма

Далі створимо форму на якій розмістимо кнопки («Каталог», «Файл», «Зняти Образ») 2 елемента check («Без стиснення» та «Видалити джерело») та поле для редагування тексту для пароля.

namespace std

{

public partial class CompressForm : Form

{

ArchiveProvider compressor = new ArchiveProvider();

public CompressForm()

{

InitializeComponent();

compressor.ProcessMessages += compressor_ProcessMessages;

compressor.ErrorProcessing += ProcessingFileError;

}

void compressor_ProcessMessages(string message)

{

lbLog.Items.Add(message);

}

OperationErrorAction ProcessingFileError(string caption, string message)

{

using (AscActionByError form = new AscActionByError(caption, message))

{

form.ShowDialog();

return form.Result;

}

}

private void button1_Click(object sender, EventArgs e)

{

using (FolderBrowserDialog fbd = new FolderBrowserDialog())

{

if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

label1.Text = fbd.SelectedPath;

}

}

}

private void bCompress_Click(object sender, EventArgs e)

{

using (SaveFileDialog sfd = new SaveFileDialog())

{

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

CompressorOption option = new CompressorOption()

{

Password = tbPassword.Text,

WithoutCompress = cbNoCompression.Checked,

RemoveSource = cbRemoveSource.Checked,

Output = sfd.FileName

};

foreach (string line in lbIncludes.Items)

option.IncludePath.Add(line);

foreach (string line in lbExclude.Items)

option.ExcludePath.Add(line);

compressor.Compress(option);

}

}

}

private void bInclude_Click(object sender, EventArgs e)

{

using (FolderBrowserDialog fbd = new FolderBrowserDialog())

{

if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

lbIncludes.Items.Add(fbd.SelectedPath);

}

}

private void bExcludeFolder_Click(object sender, EventArgs e)

{

using (FolderBrowserDialog fbd = new FolderBrowserDialog())

{

if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

lbExclude.Items.Add(fbd.SelectedPath);

}

}

private void bIncludeFile_Click(object sender, EventArgs e)

{

using (OpenFileDialog ofd = new OpenFileDialog())

{

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

lbIncludes.Items.Add(ofd.FileName);

}

}

}

private void bExcludeFile_Click(object sender, EventArgs e)

{

using (OpenFileDialog ofd = new OpenFileDialog())

{

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

lbExclude.Items.Add(ofd.FileName);

}

}

}

}

}

Рисунок 2.6.2 – Форма зняття образів

Наступним кроком є створення форми для розпакування образів у вказану папку. На формі розміщуємо такі компоненти як: два поля для введення тексту (TextEdit1 і TextEdit2), дві кнопки (Button1 i Button2) та Label1 з назвою Пароль.

namespace std

{

public partial class DecompressForm : Form

{

ArchiveProvider decompressor = new ArchiveProvider();

public DecompressForm()

{

InitializeComponent();

}

private void bArcView_Click(object sender, EventArgs e)

{

using (OpenFileDialog ofd = new OpenFileDialog())

{

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

tbArchive.Text = ofd.FileName;

}

}

}

private void bDecompress_Click(object sender, EventArgs e)

{

using (FolderBrowserDialog fbd = new FolderBrowserDialog())

{

if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

decompressor.Decompress(tbArchive.Text, fbd.SelectedPath, tbPassword.Text);

}

}

}

private void DecompressForm_Load(object sender, EventArgs e)

{

}

}

}

Рисунок 2.6.3 – Форма для розпаковки образів у вказану папку

І на останок створимо форму на випадок виникнення помилок. Розмістимо на ній 4 кнопки (Button1, Button2, Button3, Button4) «Пропустити все», «Пропустити», «Перерваги», «Повторити». Розмістимо TextBox для виведення помилок.

namespace std

{

public partial class AscActionByError : Form

{

public OperationErrorAction Result = 0;

public AscActionByError(string caption, string text)

{

InitializeComponent();

lText.Text = caption;

tbMsg.Text = text;

}

private void button1_Click(object sender, EventArgs e)

{

Result = OperationErrorAction.Abort;

Close();

}

private void button2_Click(object sender, EventArgs e)

{

Result = OperationErrorAction.Ignore;

Close();

}

private void button3_Click(object sender, EventArgs e)

{

Result = OperationErrorAction.Replay;

Close();

}

private void bIgnoreAll_Click(object sender, EventArgs e)

{

Result = OperationErrorAction.IgnoreAll;

Close();

}

}

}

Рисунок 2.6.4 – Форма звіту про помилки

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]