Содержание
Введение................................................................................................................................4
1 Выполненные задания......................................................................................................5
1.1 Задание 1 - Проектирование Файлового менеджера..............................................5
1.2 Задание 2 - Разработка графического интерфейса..................................................6
1.3 Задание 3 - Разработка ПО........................................................................................6
1.4 Задание 4 - Обеспечение минимального функционала........................................10
1.5 Задание 5. Добавление основного функционала...................................................13
1.6 Задание 6 - Тестирование разработанного ПО......................................................15
2 Пример работы разработанного приложения...............................................................17
Список используемых источников...................................................................................20
Приложение A....................................................................................................................21
Листинг Form1.cs:..........................................................................................................21
Листинг Form2.cs:..........................................................................................................24
Приложение B.....................................................................................................................28
Функциональная блок-схема.........................................................................................28
2
Введение
3
1 Выполненные задания
1.1 Задание 1 - Проектирование Файлового менеджера. Выбор
средств разработки и среды разработки
Используется язык программирования: C#
Мной был выбран данный язык, т.к. в сравнении с другими языками
программирования (Java, C++) разработка программы пойдёт гораздо
сложнее. В частности, разработка GUI на Java была бы более трудоемка.
Например, если использовать Swing или JavaFX, то это отнимет много
времени в первом случае и много ресурсов компьютера (память, нагрузка
процессора) во втором, а синтаксис языка С# более понятен для меня, чем С+
+.
Используемая среда разработки: Microsoft Visual Studio
Мной была выбрана эта среда разработки, так как на данный момент
времени она является наиболее подходящей платформой за счёт того, что в
нём удобно сочетаются все необходимые функции, необходимые для работы
над курсовой работой, а именно: редактор исходного кода, который включает
множество дополнительных функций, как автодополнение IntelliSense,
рефракторинг кода и т. д.; отладчик кода; редактор форм, предназначенный
для упрощённого конструирования графических интерфейсов; Среда
разработки позволяет быстро коддить. Многие из функциональных
возможностей Visual Studio направлены на то, чтобы помогать разработчику
делать свою работу как можно быстрее. В сравнении с JetBrains,
использовать WFM и встроенные библиотеки Visual Studio продуктивнее
банально из-за того, что, опять же, Intellij Idea отнимает много ресурсов.
4
Используемые фреймворки: .Net Framework 4.5.2
С помощью этого фреймворка я получу доступ к файловой системе
компьютера, а также к методам и свойствам, которые позволят производить
манипуляции с файлами и каталогами: создавать, удалять, копировать,
открывать.
5
Были созданы каталоги System и User, в которых находятся,
соответственно, файлы приложения и пользовательские файлы.
Для того, чтобы перейти в нужную директорию, можно
воспользоваться двумя путями:
1. В строке ввода пути (рис. 2) ввести адрес и нажать клавишу Enter.
6
7
Рис. 4 - Обзор папок
Для того, чтобы вернуться на уровень выше, необходимо нажать
кнопку «Назад» (рис. 5).
8
ShowDialog() вернет нам “OK” из перечисления DialogResult, то мы
вызываем метод ShowDialog(); (открыть контекстное меню).
Далее, если необходимо запустить командную строку, нужно
воспользоваться в том же пункте меню кнопкой Run.
Ниже представлен фрагмент листинга кнопки «Run» (рис. 9).
9
Далее представлен фрагмент листинга кнопок «Copy», «Paste», «Select
all» (рис. 11).
10
Имеется пункт “Function” в контекстном меню “Main” (рис. 12).
11
класса Process с параметром «msconfig.exe» (предварительно в переменную
startInfo класса ProcessStartInfo мы помещаем путь до msconfig.exe).
После чего мы присваиваем глобальной переменной currentProcess это
же значение. Данная переменная отвечает за то, какая утилита сейчас
открыта. Затем присваиваем полю Enabled у timer1 значение true (запускаем
таймер) и передаем в глобальную переменную date сегодняшнее время (для
подсчёта времени выполнения утилиты).
Далее представлен листинг метода timer1_Tick (рис. 15).
12
процессов в текстовом виде). Затем поверяем, есть ли thisProcess (наша
утилита) в этом списке.
Если да, то срабатывает код для подсчёта времени выполнения. Если
нет, значит утилита закрылась и мы сохраняем информацию в файл log.txt с
помощью класса StreamWritter, а также обнуляем значение таймера и делаем
его отключенным (timer1.Enabled = false).
На скриншоте (рис. 2) представлены следующие системные утилиты:
1) Msconfig – конфигурация системы;
2) Msinfo – Сведения о системе;
3) Taskschd – Планировщик заданий;
4) Resource – Мониторинг ресурсов.
13
В этом фрагменте мы получаем текущее время компьютера и
помещаем в переменную str. После чего присваиваем текстовому полю
labelTime значение str.
Мы получаем массив процессов с именем разрабатываемого
приложения (рис. 18). Затем, используя класс PerformanceCounter и его
конструктор в который передаём имя процесса, мы получаем значение
загрузки процессора данным приложением с помощью метода NextValue();
14
1.6 Задание 6 - Тестирование разработанного ПО
Тестовые примеры для требования
15
7 Вставить с Файлы должны Если буфер -
помощью вставиться в обмена
Pasted данную непустой и
директорию фокус на
директории –
результат
оправдает
ожидания.
8 Открыть файл с Сперва Результат -
помощью Main- откроется оправдал
Open file диалоговое ожидание
окно, в котором
затем
выбирается
файл для
открытия
9 Открыть Откроется Результат -
консоль с консоль оправдал
помощью Run ожидание
10 В новом окне Ничего не Результат Необходимо
«Управление» произойдёт оправдал указать имя.
открыть ожидание
службу, не
указав имени
для лог-файла
11 Попытаться Новая служба Результат Таймер ведёт
открыть не откроется, оправдал подсчёт
несколько пока не будет ожидание времени
служб завершена исключительно
одновременно предыдущая по одной
службе.
12 По очереди В лог-файле Msconfig В лог-файл
открывать должна быть 00:00:02 записывается
службы записана название
Msinfo 00:00:04
msconfig и информация о служба – время
msinfo, после всех работы.
чего проверить запущенных
лог-файл службах во
время работы
программы
16
Рис. 20 – Контекстное меню «Обзор папок»
17
2) открываем окно основного функционала с помощью кнопки Main
-> Function (рис. 12);
3) вводим имя лог-файла и нажимаем Msconfig (рис. 21);
18
Рис. 23 – Лог-файл
19
Список используемых источников
20
Приложение A
Листинг 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.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Collections.Specialized;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
21
}
22
private void runToolStripMenuItem_Click(object sender, EventArgs e)
{
Process.Start("cmd.exe");
}
23
Листинг Form2.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Timers;
using System.Threading.Tasks;
namespace WindowsFormsApp1
{
public partial class Form2 : Form, IDisposable
{
DateTime date = new DateTime();
string currentProcess;
public Form2()
{
InitializeComponent();
}
24
{
Process[] procList = Process.GetProcesses();
string s = "";
foreach (Process p in procList)
{
s += p.ToString();
s += " ";
}
string thisProcess = "System.Diagnostics.Process (" + currentProcess +
")";
string text = "";
string path = textBox1.Text + ".txt";
if (s.IndexOf(thisProcess) > -1)
{
TimeSpan elapsed = DateTime.Now - date;
text +=
elapsed.Hours.ToString("00") + ":" +
elapsed.Minutes.ToString("00") + ":" +
elapsed.Seconds.ToString("00");
label4.Text = currentProcess + " " + text;
}
else
{
using (StreamWriter sw = new StreamWriter(path, true))
{
sw.WriteLine(label4.Text);
}
label4.Text = "00:00:00";
currentProcess = null;
timer1.Enabled = false;
}
}
25
labelTime.Text = str;
26
private void perfmon_Click(object sender, EventArgs e)
{
if (textBox1.Text != "" && currentProcess == null)
{
Process cmd = new Process();
cmd.StartInfo = new ProcessStartInfo(@"cmd.exe");
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("perfmon /res");
currentProcess = "perfmon";
Thread.Sleep(3000);
timer1.Enabled = true;
date = DateTime.Now;
}
}
}
}
27
Приложение B
Функциональная блок-схема
28
29