Моделирование файловой системы FAT16

Автор: Пользователь скрыл имя, 12 Апреля 2011 в 13:33, курсовая работа

Описание работы

Целью данного проекта является наглядное моделирование работы файловой системы FAT16, которая использовалась в MS-DOS 3.31.

Содержание

ВВЕДЕНИЕ 3
1 ПОСТАНОВКА ЗАДАЧИ 4
1.1 ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ 4
1.2 ПОСТАНОВКА ЗАДАЧИ 7
2 ПРОЕКТИРОВАНИЕ 8
2.1 ВЫБОР ОПЕРАЦИОННОЙ СИСТЕМЫ 8
2.2 ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ 8
2.3 ВЫБОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРОМЕЖУТОЧНОГО УРОВНЯ 8
2.4 ВЫБОР ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ 8
3 РАЗРАБОТКА 9
3.1 ВЫБОР АРХИТЕКТУРЫ СИСТЕМЫ 9
3.2 ПОСТРОЕНИЕ ДИАГРАММ ПРЕЦЕДЕНТОВ И ПОСЛЕДОВАТЕЛЬНОСТИ 9
3.3 РАЗРАБОТКА ВАРИАНТОВ ИСПОЛЬЗОВАНИЯ 11
3.4 РАЗРАБОТКА ГРАФИЧЕСКОГО ИНТЕРФЕЙСА 13
3.5 РАЗРАБОТКА АРХИТЕКТУРЫ ПРИЛОЖЕНИЯ 14
3.6 РАЗРАБОТКА АЛГОРИТМОВ РАБОТЫ ПРОГРАММЫ 16
3.6.1 Метод FileCreate_Click класса Mainform. 17
3.6.2 Метод FileDelete_Click класса Mainform. 18
4 ТЕСТИРОВАНИЕ ПРОГРАММЫ 19
4.1 ТЕСТИРУЕМЫЕ ФУНКЦИИ 19
4.2 ТЕСТИРОВАНИЕ 19
5 РУКОВОДСТВО ОПЕРАТОРА 21
5.1 НАЗНАЧЕНИЕ ПРОГРАММЫ 21
5.2 ТЕХНИЧЕСКИЕ СРЕДСТВА ДЛЯ ЗАПУСКА ПРОГРАММЫ 21
5.3 РАБОТА С ПРОГРАММОЙ 21
ВЫВОДЫ 25
ПЕРЕЧЕНЬ ССЫЛОК 26
ПРИЛОЖЕНИЕ А 27
ПРИЛОЖЕНИЕ Б 31

Работа содержит 1 файл

ПЗ.doc

— 1.29 Мб (Скачать)

                        FileSystem.pointer++;

                    }

                }

                while (flag == false);

            

            }

            //Здесь записываем конечный кластер!

            FileSystem.EndCluster[FileSystem.Cnt] = FileSystem.pointer;

            column.Add(FileSystem.EndCluster[FileSystem.Cnt].ToString()); // конечный кластер

            column.Add(FileSystem.Cnt.ToString());//номер

            //Рисуем конец файла и переводим pointer на свободную позицию

            FileSystem.BinaryMap[FileSystem.pointer] = '1';

            Graphics Gr2 = Graphics.FromImage(FileSystem.Map);

            int tmpypos2 = (int)((FileSystem.pointer ) / 60);

            int tmpxpos2 = (int)((FileSystem.pointer ) % 60) - 1;

            if ((FileSystem.pointer) % 60 == 0)

            {

                tmpxpos2 = 59;

                tmpypos2 -= 1;

            }

            Gr2.FillRectangle(Brushes.Aqua, 40 + 20 * tmpxpos2, 40 + 20 * tmpypos2, 20, 20);//заливка

            Font fnt2 = new Font(FontFamily.GenericSansSerif, 6); //текст

            Gr2.DrawString("0xfff", fnt2, Brushes.Black, 41 + 20 * tmpxpos2, 41 + 20 * tmpypos2);

         

            Gr2.Dispose();

            FileSystem.pointer++;

            this.Refresh();

        }

        private void BADFill_Click(object sender, EventArgs e)

        {

            Random rnd = new Random();

            for (int i = 0; i < FileSystem.NumberOfClusters / 20; i++)

            {

                int rndtmp = rnd.Next(1, FileSystem.NumberOfClusters - 1);

                Graphics Gr2 = Graphics.FromImage(FileSystem.Map);

                int tmpypos2 = (int)(rndtmp / 60);

                int tmpxpos2 = (int)(rndtmp % 60) - 1;

                if (rndtmp % 60 == 0)

                {

                    tmpxpos2 = 59;

                    tmpypos2 -= 1;

                }

                Gr2.FillRectangle(Brushes.Red, 40 + 20 * tmpxpos2, 40 + 20 * tmpypos2, 20, 20);//заливка

           

                FileSystem.BinaryMap[rndtmp] = '2';

            }

            this.Refresh();

            FileSystem.FreeSpace -= FileSystem.NumberOfClusters / 10 * FileSystem.ClusterSize;

            FreeSpaceLabel.Text = "Свободного места: " + (FileSystem.FreeSpace - FileSystem.NumberOfClusters / 10 * FileSystem.ClusterSize).ToString() + " байт + " + (FileSystem.NumberOfClusters / 10 * FileSystem.ClusterSize).ToString() + " байт в BAD-кластерах.";

        }

        private void FileDelete_Click(object sender, EventArgs e)

        {

           

            Del.ShowDialog();

            if (FileSystem.IsDeleted[FileSystem.ToDelete] == 0)

            {

                FileSystem.pointer = FileSystem.StartCluster[FileSystem.ToDelete];

                FileSystem.IsDeleted[FileSystem.ToDelete] = 1;

                int firsttodel = FileSystem.StartCluster[FileSystem.ToDelete];

                FileSystem.BinaryMap[firsttodel] = '0';

                Graphics Gr2 = Graphics.FromImage(FileSystem.Map);

                Pen tmpPen = new Pen(Brushes.Black, 1);

                int tmpypos2 = (int)((firsttodel) / 60);

                int tmpxpos2 = (int)((firsttodel) % 60) - 1;

                if ((firsttodel) % 60 == 0)

                {

                    tmpxpos2 = 59;

                    tmpypos2 -= 1;

                }

                Gr2.FillRectangle(Brushes.White, 40 + 20 * tmpxpos2, 40 + 20 * tmpypos2, 20, 20);

                Gr2.DrawRectangle(tmpPen, 40 + 20 * tmpxpos2, 40 + 20 * tmpypos2, 20, 20);

                int j = FileSystem.StartCluster[FileSystem.ToDelete];

                for (int i = 0; i < FileSystem.ClustOnFile[FileSystem.ToDelete] + 1; i++)

                { 

                    FileSystem.BinaryMap[j] = '0';

                    int tmpypos = (int)((FileSystem.DecimalMap[j]) / 60);

                    int tmpxpos = (int)((FileSystem.DecimalMap[j]) % 60) - 1;

                    if ((FileSystem.DecimalMap[j]) % 60 == 0)

                    {

                        tmpxpos = 59;

                        tmpypos -= 1;

                    }

                    Gr2.FillRectangle(Brushes.White, 40 + 20 * tmpxpos, 40 + 20 * tmpypos, 20, 20);

                    Gr2.DrawRectangle(tmpPen, 40 + 20 * tmpxpos, 40 + 20 * tmpypos, 20, 20);

                    j = FileSystem.DecimalMap[j];

                } 

                Gr2.Dispose();

                this.Refresh();

                FileSystem.FreeSpace = FileSystem.FreeSpace + FileSystem.FileSize[FileSystem.ToDelete];

                FreeSpaceLabel.Text = "Свободного места: " + FileSystem.FreeSpace.ToString() + " байт";

                FileView.Items[FileSystem.ToDelete - 1].BackColor = Color.Red;

            }

            else MessageBox.Show("Файл уже был удален!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

        }

    }

} 

      Текст файла Parameters.cs: 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

Информация о работе Моделирование файловой системы FAT16