Помощь в написании студенческих работ
Антистрессовый сервис

Моделирование файловой системы. 
Непрерывное размещение файлов

Курсовая Купить готовую Узнать стоимостьмоей работы

Заключение. Особенности организации файловых систем1. 1. Понятие файла. Методы организации файлов. Описание программы2. 1. Выбор технологии программирования. Литература. Приложения. Исходный код программы. Порядок использования программы. Введение. Основные классы программы. Общая характеристика файловых систем. Читать ещё >

Моделирование файловой системы. Непрерывное размещение файлов (реферат, курсовая, диплом, контрольная)

Содержание

  • Введение
  • 1. Особенности организации файловых систем
    • 1. 1. Понятие файла. Методы организации файлов
    • 1. 2. Общая характеристика файловых систем
  • 2. Описание программы
    • 2. 1. Выбор технологии программирования
    • 2. 2. Основные классы программы
    • 2. 3. Порядок использования программы
  • Заключение
  • Литература
  • Приложения
  • Исходный код программы

Проведенное моделирование при наличии разнотипных исходных данных показало, что распределение адресов в файловой системе зависит от размера размещаемых файлов, размера кластера-экстенты в системе и адреса начала первого файла.

Литература

.

Кэрриэ Б. Криминалистический анализ файловых систем. — СПб.: Питер, 2007. — 480 с.

2.Иванова Г. С. Технология программирования: Учебник для вузов. — 2-е изд., стереотип. — М.: Изд-во МГТУ им. Н. Э. Баумана, 2003.

— 320 с: ил. (Сер. Информатика в техническом университете.).

3. В. Н. Петров «Информационные системы» — 688л. Изд. Питер, 2002 г.

4.Липаев В. В. Системное проектирование сложных программных средств для информационных систем. — М.: Синтег, 1999.

6.Мартынов Н. Н. С# для начинающих. М.: КУДИЦ-ПРЕСС, 2007 г. — 272 с. 7. Фленов М.

Библия C#. БХВ-Петербург, 2011 г. — 560 с. 8. Таненбаум Э., Остин Т. Архитектура компьютера. Питер, 2013 г. Приложение.

Исходный код программыForm1. csusing System;using System.Collections.Generic;using System. Data;using System. Text;using System.Windows.Forms;using System. IO;using System.Windows.Forms.DataVisualization.Charting;using System. Drawing;namespace FileProject{public partial class MainForm: Form {//Класс отрисовщика схемы кластеровDataImageDImage;CommonSettings form_set; //Список файловstring[] FileNames;//ПараметрынастройкиpublicInt64 InitAdress = 0; //Начальный адрес блока в модели по умолчанию //Размер блока-экстента, на который разбивается файл, по умолчаниюpublic Int64 BlockSize = 10*1024; //10 Кбbool Opened = false; //Признак для открытия файловpublic MainForm () {InitializeComponent (); DataGridViewCell cell = new DataGridViewTextBoxCell (); //Определение объектов столбцов таблицы DataGridViewColumn columnID_ = new DataGridViewColumn (); columnID_.CellTemplate = cell; columnID_.Name = «ID»; columnID_.Width = 40; DataGridViewColumn columnColor = new DataGridViewColumn (); columnColor. CellTemplate= cell; columnColor.Name = «Цвет»; columnColor. Width = 40; DataGridViewColumn columnName = new DataGridViewColumn (); columnName. CellTemplate = cell; columnName.Name = «Имя файла»; DataGridViewColumn columnSize = new DataGridViewColumn (); columnSize. CellTemplate = cell; columnSize.Name = «Размер файла»; columnSize. Width = 50; DataGridViewColumn columnBeginAdress = new DataGridViewColumn (); columnBeginAdress. CellTemplate = cell; columnBeginAdress.Name = «Адрес начала блока»; DataGridViewColumn columnEndAdress = new DataGridViewColumn (); columnEndAdress. CellTemplate = cell; columnEndAdress.Name = «Адрес конца блока» ;dataGridView1.Columns.Add (columnID_);dataGridView1.Columns.Add (columnColor);dataGridView1.Columns.Add (columnName);dataGridView1.Columns.Add (columnSize);dataGridView1.Columns.Add (columnBeginAdress);dataGridView1.Columns.Add (columnEndAdress); DImage = new DataImage (this.pictureBox1);} //Перевод величины в килобайты и мегабайты и наоборотstring ConvertBytesToUnits (long val) {string result; //Переводим байты в килобайтыdouble val_ = (double)val / (1024);if (val_>=1000){val_ = (double)val_ / (1024); //Округляем до сотых и переводим результат в строкуresult = Math. Round (val_, 2).ToString ()+" «+» Мб" ;}else { //Округляем до сотых и переводим результат в строкуresult = Math. Round (val_, 2).ToString () + «» + «Кб»; }return result; } //Отрисовка квадратиковprivate void Draw (){ //Получаем образ изображения с квадратикамиBitmapbm=DImage.Draw ();pictureBox1.Image = bm;}private void FillData (string[] data){ try { //Сброс параметров для отрисовки графиковif (!Opened) {DImage.Colors.Clear (); }DImage.CountBlocks.Clear (); //ОчисткаданныхтаблицыdataGridView1.Rows.Clear (); //Список всех доступных цветовstring[] colorNames = Enum. GetNames (typeof (KnownColor)); //Заданиепалитрыкакобращенияцетов List<string> colorNames_ = new List<string>(colorNames); colorNames_.Reverse ();for (int j = 0; j < colorNames_.Count; j++)colorNames[j] = colorNames_[j]; Int64 AddrBegin = InitAdress; //НачальноезначениеадресаначалафайлаInt64 AddrEnd = 0; //Начальное значение адреса конца файлаint i = 0;int Length = colorNames. Length;foreach (string obj in data) { //Получаеминформациюофайле FileInfo F_info = new FileInfo (obj); //Имяфайлаstring ID = (i + 1).ToString ();string Name = F_info.Name; //Размерфайлавбайтахlong size = F_info.Length;//Перевод в строковое килоили мегабайтовое представление string Size = ConvertBytesToUnits (size); //Если размер файла меньше размера блока if (size < BlockSize) //Под него резервируется целый блок size = BlockSize; else //Иначе { Int32 Size_Temp = 0; //Начальная переменная размер в файловой системе do { Size_Temp += (Int32)BlockSize; //Итеративно суммируем блоки } while ((long)Size_Temp < size); //Пока сумма меньше исходного размера size = Size_Temp; //Итоговый размер в файловой системе } //Вычисляем число кластеров long Count_ = size / BlockSize; //Добавляем информацию о числе кластеров в объект отрисовкиDImage.CountBlocks.Add (Convert.ToInt32(Count_));//Вычисляем адреса начала и конца блока if (i == 0) //Если файл первый по счету в контейнере, его адрес — InitAdress { AddrEnd = AddrBegin + 8 * size; //Адрес конца за счет добавления размера файла } else //Если он следующий после первого или в середине { AddrBegin = (Convert.ToInt64(AddrEnd) + 1); //Адрес начинается с первого бита за последним байтом предыдущего файла AddrEnd = AddrBegin + 8 * size; //Адрес конца за счет добавления размера файла } //Перевод адреса начала в 16-ричный формат в строкуstring HexBeginAddr = Convert. ToString (AddrBegin, 16);//Перевод адреса конца в 16-ричный формат в строкуstring HexEndAddr = Convert. ToString (AddrEnd, 16);//Формируем запись таблице по рассчитанным данным DataGridViewRow row = new DataGridViewRow (); //Создаем объекты ячеек DataGridViewTextBoxCell ID_ = new DataGridViewTextBoxCell (); //Вписываемданные ID_.Value = ID; DataGridViewTextBoxCell Name_ = new DataGridViewTextBoxCell ();Name_.Value = Name; //Заполнениеполяцвета DataGridViewTextBoxCell color_ = new DataGridViewTextBoxCell (); //Получаемцветизтекущегоспискаизадаемегодляячейкицветакакфоновый.//Если файлов окажется больше, чем доступных цветов, они будут повторяться if (!Opened) //Если файл открывается {//Беремцветаизсписка color_.Style.BackColor = Color. FromName (colorNames[i % Length]);//Добавляем их в очищенный список класса отрисовщикаDImage.Colors.Add (color_.Style.BackColor);} else //Иначе меняем фиксированный цвет в отрисовщике для клеткиcolor_.Style.BackColor = DImage. Colors[i]; //Полеразмерафайла DataGridViewTextBoxCell Size_ = new DataGridViewTextBoxCell ();Size_.Value = Size; //ПолесадресомначалафайлаDataGridViewTextBoxCell HexBeginAddr_ = new DataGridViewTextBoxCell (); HexBeginAddr_.Value = HexBeginAddr;//Поле с адресом конца файлаDataGridViewTextBoxCell HexEndAddr_ = new DataGridViewTextBoxCell (); HexEndAddr_.Value = HexEndAddr;//Создаем запись таблицы по считанным даннымrow.Cells.AddRange (ID_, color_, Name_, Size_, HexBeginAddr_, HexEndAddr_); //Добавляемстрокувтаблицуthis.dataGridView1.Rows.Add (row);i++; //Наращиваем счетчик } } //Обработка исключения в случае пустого списка файловcatch (NullReferenceException ex) {MessageBox.Show («Файлынезагружены!»);} } //Загрузка списка файловprivate void button1_Click (object sender, EventArgs e) { //Создание диалога открытия файла LoadDialog = new OpenFileDialog (); //Открываем файлы всех типов LoadDialog. Filter="Всефайлы — *.*"; //МножественныйвыборфайловLoadDialog.Multiselect = true;//Задаем текущую директорию для открытия по умолчаниюLoadDialog. RestoreDirectory = false; LoadDialog. InitialDirectory = AppDomain.CurrentDomain.BaseDirectory; ;//Если завершение открытия файлов завершилось корректноif (LoadDialog.ShowDialog ()==DialogResult.OK){ //Диалог открытия сработалOpened = false;//Список файлов FileNames = LoadDialog. FileNames; //Заполняем таблицуFillData (FileNames); //Отрисовка схемыDraw (); } //Признак того, что файлы загружены, состояние не меняетсяOpened = true; } //Кнопка вызова общих настроекprivate void button2_Click (object sender, EventArgs e){ //Формаобщихнастроекform_set = newCommonSettings ();//Обьявляем форму настроек дочерней по отношению к исходнойform_set.Owner = this; //Показываем ее form_set.ShowDialog (); }private void button3_Click (object sender, EventArgs e) { //Заполняем таблицу Opened = true;FillData (FileNames);//ОтрисовкаDraw (); } //Запрет на выделение ячейкиprivate void dataGridView1_SelectionChanged (object sender, EventArgs e) { //Если есть выделенные ячейкиif (dataGridView1.SelectedCells.Count ≠ 0) //Мы сбрасываем выделениеdataGridView1. SelectedCells[0]. Selected = false;}//Выбор цвета для закрашивания ячейки с цветомprivate void dataGridView1_CellDoubleClick (object sender, DataGridViewCellEventArgs e){ //Если щелкнули по ячейке с цветомif (e.ColumnIndex==1) { //Вызываем меню выбора цветаColorDialog cdl_ = new ColorDialog ();if (cdl_.ShowDialog ()==DialogResult.OK) { //Меняем цвет ячейки в таблицеdataGridView1. Rows[e.RowIndex]. Cells[e.ColumnIndex].Style.BackColor = cdl_.Color; //Меняем цвет для класса отрисовщикаDImage. Colors[e.RowIndex] = cdl_.Color; //Перерисовываем схемуDraw (); } } } }}Form2.csusing 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;namespace FileProject{public partial class CommonSettings: Form {public CommonSettings () {InitializeComponent (); }private void Form2_Load (object sender, EventArgs e){comboBox1.SelectedIndex= 0; //Значение комбобокса по умолчанию в килобайтах}private void button1_Click (object sender, EventArgs e) {try {long BlockSize = Convert. ToInt64(textBox2.Text);//Если некорректный ввод размера блокаif (BlockSize<=0) {MessageBox.Show («Размер блока должен быть ненулевым и неотрицательным»);return; //Выход из функции } //Если в списке выбраны килобайтыif (comboBox1.SelectedIndex == 0) {BlockSize = BlockSize * 1024; //Пересчитываемвкилобайты } //Есливспискевыбранымегабайтыelseif (comboBox1.SelectedIndex == 1) {BlockSize = BlockSize * 1024 * 1024; //Пересчитываемвмегабайты }//Задаем параметры настройки в главной форме ((MainForm)this.Owner).BlockSize = BlockSize; //Получаем адрес из поля Int64 val_ = Convert. ToInt64(textBox1.Text);//Если некорректный ввод размера адресаif (val_ < 0) {MessageBox.Show («Начальный адрес быть неотрицательным»);return; //Выход из функции }else ((MainForm)this.Owner).InitAdress = Convert. ToInt64(textBox1.Text); }catch (FormatException ex) {MessageBox.Show («Должнобытьвведеноцелоечисло!»);}catch (OverflowException ex) {MessageBox.Show («Вводнедопустимомалогоилибольшогозначения»);} } }}DataImage.csusing System;using System.Collections.Generic;using System. Linq;using System. Text;using System.Threading.Tasks;using System. Drawing;using System.Windows.Forms;namespace FileProject{classDataImage { //Отступы от контента в квадратике const int size_x=5; //По горизонталиconst int size_y = 5; //По вертикалиint area_height;int area_width; Graphics gr_; //Конструкторpublic DataImage (PictureBox box) {//Ширинаивысотаэкранногохолстаarea_width = box.Size.Width;area_height = box.Size.Height; //Сам холст gr_ = box. CreateGraphics ();}//Массив количеств блоков i-го типа public List<int> CountBlocks = new List<int>();//Массив цветов блоков i-го типаpublic List<Color> Colors = new List<Color>();//Метод отрисовки. Возвращает образ с отрисованными квадратикамиpublicBitmapDraw () { //Размеры квадратика, моделирующего кластерint size_width = 0;int size_height = 0; //Шрифт текста цифр в квадратиках Font TextFont = new Font («Arial», 10);// РазмерстрокиSizeFstringSize = newSizeF ();//Вычисление размера строки с максимальным ID с учетом шрифтаstringSize = gr_.MeasureString ((CountBlocks.Count + 1).ToString (), TextFont);//Вычисление размеров квадратика с учетом внутренних отступов size_width = Convert. ToInt32(stringSize.Width) + 2 * size_x; //Ширина size_height = Convert. ToInt32(stringSize.Height) + 2 * size_y; //Высота //Координаты левой верхней вершины Int32 x=0;Int32 y=0;intRow_Num = 0; //Координатная переменная //Моделируем цикл перемещения по картинке для выяснения ее размера for (int i = 0; i < CountBlocks. Count; i++){ //Цикл по числу кластеров с ID=i, т. е. i-го типаfor (int j = 0; j < CountBlocks[i]; j++){ //Если левый верхний край по горизонтали не помещается в область отображенияif (x + size_width >= area_width){x = 0; //Ставим прямоугольник в началоRow_Num++; //Спускаемся вниз по оси Oyy = Row_Num * size_height; }x += size_width;//Смещаемся на шаг } } //Если размер по высоте больше исходногоif (y>area_height) { //Делаем пару отступов внизarea_height = y + 2 * size_height; } //Создаем образ картинки в памятиBitmapbm=newBitmap (area_width, area_height);//Образ холста в памяти. Рисовать будем на bmGraphics gr=Graphics.FromImage (bm);//Очистка и заливка серым цветомgr. Clear (Color.Gray); //Координаты левой верхней вершины x=0;y=0;Row_Num = 0; //Координатная переменная //Цикл по общему числу кластеровfor (int i=0;i<CountBlocks.Count;i++){ //Цикл по числу кластеров с ID=i, т. е. i-го типаfor (int j=0;j<CountBlocks[i]; j++){ //Если левый верхний край по горизонтали не помещается в область отображенияif (x+size_width>=area_width){x = 0; //Ставим прямоугольник в началоRow_Num++; //Спускаемся вниз по оси Oyy = Row_Num * size_height;} //Рисуем прямоугольник с заливкой //Задаем кисть заливки SolidBrush Brush_ = new SolidBrush (Colors[i]);//Задаем перо, толщина линии 2, цвет всегда черныйPen pen_ = new Pen (Color.Black, 2); //Задаем прямоугольник Rectangle r = new Rectangle (x, y, size_width, size_height);//Рисуемконтурперомgr.DrawRectangle (pen_, r);//Закрашиваем егоgr. FillRectangle (Brush_, r); //Координаты строки с номером IDint string_x = r. Left;int string_y = r. Top; //Вписываем строку с номером IDgr. DrawString ((i+1).ToString (), TextFont, new SolidBrush (Color.Gray), new PointF (string_x, string_y)); x += size_width; //Смещаемся к следующему кластеру-квадратику} } //Возвращаем картинкуreturn bm; } }}.

Показать весь текст

Список литературы

  1. . Криминалистический анализ файловых систем. — СПб.: Питер, 2007. — 480 с.
  2. Г. С. Технология программирования: Учебник для вузов. — 2-е изд., стереотип. — М.: Изд-во МГТУ им. Н. Э. Баумана, 2003. — 320 с: ил. (Сер. Информатика в техническом университете.)
  3. В.Н. Петров «Информационные системы» — 688л. Изд. Питер, 2002 г.
  4. В.В. Системное проектирование сложных программных средств для информационных систем. — М.: Синтег, 1999.
  5. Н.Н. С# для начинающих. М.: КУДИЦ-ПРЕСС, 2007 г. — 272 с.
  6. М. Библия C#. БХВ-Петербург, 2011 г. — 560 с.
  7. Э., Остин Т. Архитектура компьютера. Питер, 2013 г.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ