Материал: Методические указания по выполнению лабораторных работ на языке программирования С# по дисциплине «Системное программное обеспечение». Кремер О.Б

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Ход выполнения работы

1) Создать консольное приложение

2) В редакторе кода добавить пространство имен

using System.IO;

3) В методе Main() добавить стандартный метод для определения всех дисков на данном компьютере:

DriveInfo[] allDrives = DriveInfo.GetDrives();

4) Организовать цикл, который позволяет пройти все значения заданного множества:

foreach (DriveInfo d in allDrives)

{

}

5) В цикл добавить выдачу на экран информации об имени диска и его типе:

Console.WriteLine("Диск {0}", d.Name);

Console.WriteLine(" Тип: {0}", d.DriveType);

6) В цикле добавить проверку возможности чтения информации с диска:

if (d.IsReady == true)

{

}

7) В том случае если условие выполняется, выдать на экран информацию о файловой системе, свободном пространстве для данного пользователя, свободном пространстве на диске и размере диска:

Console.WriteLine(" Файловая система: {0}", d.DriveFormat);

Console.WriteLine(" Свободное пространство для данного пользователя:{0, 5} bytes", d.AvailableFreeSpace);

Console.WriteLine(" Свободное пространство на диске: {0, 5} bytes", d.TotalFreeSpace);

Console.WriteLine(" Размер диска: {0, 5} bytes ", d.TotalSize);

8) Запустить приложение на выполнение, отладить. Пример работы программы представлен на рис. 12.

Рис. 12. Результат работы консольного приложения

Задание 2. Разработать Windows приложение, позволяющее пользователю определять размер диска и его свободное пространство в гигабайтах или мегабайтах.

- просматривать папки выбранного диска;

- просматривать список файлов выбранной папки.

Ход выполнения работы

1) Запустить Visual Studio, создать оконное приложение (рис. 13).

Рис. 13. Создание оконного приложения

2) На форме установить следующие компоненты:

- comboBox1, где будет представлен перечень дисков данного компьютера;

- listBox1, где будет выдаваться информация о размере диска;

- listBox2, где будет представлен перечень папок выбранного диска;

- listBox3, где будет представлен список файлов выбранной папки;

- label1, label2, label3, label4 для пояснительных надписей.

3) В текст программы добавить:

using System.IO;

4) После объявления формы

public Form1()

{

InitializeComponent();

}

добавить объявление:

DriveInfo[] allDrives;

5) Создать событие при загрузке формы Form1_Load для чего выполнить следующие действия:

- в конструкторе форм сделать активным объект Form1;

- в окне События найти Load, создать процедуру, щелкнув двойным щелчком на пустое поле рядом с названием события;

6) В редакторе кода в теле процедуры обработки события ввести следующий код:

allDrives = DriveInfo.GetDrives();

foreach (DriveInfo d in allDrives)

{

comboBox1.Items.Add(d.Name);

}

comboBox1.SelectedIndex = -1;

Данный фрагмент позволяет при загрузке формы в ОП в allDrives считать все диски данного компьютера, затем в цикле ввести перечень дисков в компонент comboBox1, далее устанавливается начальное значение открывающегося списка в нулевое значение.

7) Написать метод info(DriveInfo D), который для выбранного диска будет выдавать информацию об объеме диска и его свободном пространстве.

void info(DriveInfo D)

{

if (D.IsReady) // Если диск доступен:

{

String v;

long a = (1024 * 1024 * 1024); // Размер гигабайта

if (D.TotalSize <= 10 * a) // Если объём диска меньше гигабайта

v = Convert.ToString(D.TotalSize / (1024 * 1024)) + " Мб";

// Выводить память в мегабайтах

// Иначе выводить память в гигабайтах:

else v = Convert.ToString(D.TotalSize / a) + " Гб";

listBox1.Items.Add("Объём диска: " + v);

v = "";

if (D.TotalFreeSpace <= 10 * a) // Если свободное пространство меньше гигабайта

v = Convert.ToString(D.TotalFreeSpace / (1024 * 1024)) + " Мб";

// Выводить память в мегабайтах

// Иначе выводить память в гигабайтах:

else v = Convert.ToString(D.TotalFreeSpace / a) + " Гб";

listBox1.Items.Add("Объём свободного пространства: " + v);

}

else // Если диск недоступен - вывести сообщение:

{

listBox1.Items.Add(" Невозможно отобразить информацию");

}

}

8) Создать событие, которое при выборе диска в открывающемся списке всех дисков выдаст информацию о памяти диска с помощью метода info.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

comboBox1.Text = comboBox1.SelectedText;

info(allDrives[comboBox1.SelectedIndex]);

}

Пример работы программы приведен на рис. 14.

Рис. 14. Выдача информации о памяти дисков компьютера

Задание 3. Разработать Windows приложение, позволяющее пользователю просматривать папки выбранного диска и список файлов выбранной папки, а также атрибуты выбранного файла.

Выполнение задания:

1) Разберите листинг программы, найдите интерфейсные компоненты языка C#, которые надо установить на форму.

2) Создайте Windows приложение и установите компоненты на форму.

3) Разберите в листинге методы и события, добавьте события к нужным объектам, введите код в программу.

Листинг программы:

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;

using System.IO;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

//*** заполнение дерева каталогов ***

public void DriveTreeInit()

{

string[] drivesArray = Directory.GetLogicalDrives();

treeView1.BeginUpdate(); // отключение экрана

treeView1.Nodes.Clear();

foreach (string s in drivesArray)

{

TreeNode drive = new TreeNode(s, 0, 0);

treeView1.Nodes.Add(drive);

GetDirs(drive);

}

treeView1.EndUpdate(); //включение экрана

}

//============================

//*** Заполнение корневых каталогов ***

public void GetDirs(TreeNode node)

{

DirectoryInfo[] diArray;

node.Nodes.Clear();

string fullPath = node.FullPath;

DirectoryInfo di = new DirectoryInfo(fullPath);

try

{

diArray = di.GetDirectories();

}

catch

{

return;

}

foreach (DirectoryInfo dirinfo in diArray)

{

TreeNode dir = new TreeNode(dirinfo.Name, 0, 0);

node.Nodes.Add(dir);

}

}

//============================

private void Form1_Load(object sender, EventArgs e)

{

DriveTreeInit();

}

//заполнение вложенных каталогов

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)

{

treeView1.BeginUpdate();

foreach (TreeNode node in e.Node.Nodes)

{

GetDirs(node);

}

treeView1.EndUpdate();

}

//отображение файлов содержащихся в каталоге

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)

{

treeView2.Nodes.Clear();

if (treeView1.SelectedNode != null && treeView1.SelectedNode.FullPath.Length > 4)

{

DirectoryInfo di = new DirectoryInfo(treeView1.SelectedNode.FullPath.Remove(2, 1));

try

{

FileInfo[] fi = di.GetFiles();

foreach (FileInfo f in fi)

{

treeView2.Nodes.Add(f.Name);

}

}

catch

{

return;

}

}

}

private void treeView2_AfterSelect(object sender, TreeViewEventArgs e)

{

if (treeView2.SelectedNode != null)

{

DirectoryInfo di = new DirectoryInfo(treeView1.SelectedNode.FullPath.Remove(2, 1));

FileInfo[] fi = di.GetFiles();

foreach (FileInfo f in fi)

{

if (f.Name == treeView2.SelectedNode.FullPath)

{

listBox1.Items.Clear();

foreach (var item in f.Attributes.ToString().Split(' '))

{

listBox1.Items.Add(item.TrimEnd(','));

}

}

}

}

}

}

}

Пример формы и работы приложения представлен на рис. 15.

Рис. 15. Пример экранной формы приложения

Вопросы по теме:

  1. Какова организация работы пользователя с устройством хранения информации?

  2. Что включает файловая система, как часть операционной системы?

  3. Какая информация описывает свойства файла? Приведите примеры атрибутов файла.

Библиографический список

  1. Гордеев А.В. Операционные системы: учебник для вузов. 2-е изд. / А.В. Гордеев. СПб.: Питер, 2009. - 416 с.

  2. Молчанов А.Ю. Системное программное обеспечение: учебник для вузов / А.Ю. Молчанов. СПб.: Питер, 2006. -396 с.

  3. Танненбаум Э. Современные операционные системы / Э. Танненбаум. – 2-е изд. СПб.: Питер, 2007. - 1038 с.

  4. Столингс В. Операционные системы / В. Столингс.– 4-е изд. М.: Вильямс, 2002. - 848 с.

Содержание Лабораторная работа № 1. Информационная структура процессов и потоков в операционной системе……………………….1

Лабораторная работа № 2. Дисковая память и файловая система операционной системы………………………………….…16

Библиографический список……………………………………32

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по выполнению лабораторных работ

на языке программирования С#

по дисциплине

«Системное программное обеспечение»

для студентов направления

230100.62 «Информатика и вычислительная техника»,

профиля «Вычислительные машины, комплексы,

системы и сети»

заочной формы обучения

Составитель Кремер Ольга Борисовна

Компьютерный набор О.Б. Кремер

В авторской редакции

Подписано к изданию 28.11.2012.

Уч.-изд. л. 1,9.

ФГБОУ ВПО «Воронежский государственный технический

университет»

3 94026 Воронеж, Московский просп., 14

Источник: https://studfile.net/preview/16569123/