Моделирование файловой системы 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 Мб (Скачать)

        private void Ld(object sender, EventArgs e)

        {

            BADFill.Enabled = false;

            Highlighter.Enabled = false;

           

            FSClose.Enabled = false;

          

            FileSystem.FileName = new string[100];

            FileSystem.Date = new string[100];

            FileSystem.FileSize = new int[100];

            FileSystem.StartCluster = new int[100];

            FileSystem.EndCluster = new int[100];

            FileSystem.ClustOnFile = new int[100];

            FileSystem.pointer = 1;

            FileSystem.Cnt=0;

            FileSystem.IsDeleted = new byte[100];

        } 

        private void FileCreate_Click(object sender, EventArgs e)

        {

            BADFill.Enabled = false;

            FileSystem.NumberOfFiles++;

            FileSystem.Cnt++;

            // принимаем параметры

            FParam.ShowDialog();

            // Переписываем свободное место

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

            // добавляем новый файл в список

            FileView.Items.Add(FileSystem.FileName[FileSystem.Cnt].ToString()); // имя файла

            ListViewItem.ListViewSubItemCollection column = new ListViewItem.ListViewSubItemCollection(FileView.Items[FileSystem.Cnt-1]);

            column.Add(FileSystem.Date[FileSystem.Cnt].ToString()); // дата

            column.Add(FileSystem.FileSize[FileSystem.Cnt].ToString() + " байт"); // размер

            // вычисляем количество кластеров необходимое для записи файла

            FileSystem.ClustOnFile[FileSystem.Cnt] = FileSystem.FileSize[FileSystem.Cnt] / FileSystem.ClusterSize ;

            FileSystem.IsDeleted[FileSystem.Cnt] = 0;

            // Запускаем цикл for на количество кластеров

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

            {

              

                //пытаемся установить i-ый кластер в ячейку, если она пуста - устанавливаем, если нет - ищем следующую возможную для установки

                bool flag = false; //флаг полной записи одного кластера

                do

                {

                    if (FileSystem.BinaryMap[FileSystem.pointer] == '0') //если кластер свободен

                    {

                        //закрываем его от записи

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

                        //Если это первый кластер , записываем его в таблицу

                        if (i == 0)

                        {

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

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

                        }

                        // ищем следующий свободный

                        bool next = false;

                        int j = 1;

                        do

                        {

                            FileSystem.pointer++;

                            if (FileSystem.BinaryMap[FileSystem.pointer] == '0') //если найден следующий свободный

                            {

                                //добавляем его в "карту следования"

                                FileSystem.DecimalMap[FileSystem.pointer - j] = FileSystem.pointer;

                                //и закрываем от записи

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

                                //отображаем ссылку на него в предыдущем кластере

                                //и закрашиваем его

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

                                int tmpypos = (int)((FileSystem.pointer - j) / 60);

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

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

                                {

                                    tmpxpos = 59;

                                    tmpypos -= 1;

                                }

                                Gr.FillRectangle(Brushes.Aqua, 40 + 20 * tmpxpos, 40 + 20 * tmpypos, 20, 20);//заливка

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

                                Gr.DrawString(FileSystem.pointer.ToString(), fnt, Brushes.Black, 41 + 20 * tmpxpos, 41 + 20 * tmpypos);

                              

                                Gr.Dispose();

                               

                                next = true; //следующий свободный найден

                                //pointer остался равным следующему свободному

                            }

                            else //если следующий занят

                            {

                                j++;

                            }

                        }

                        while (next == false);

                        flag = true; //Переходим к следующему кластеру!

                    }

                    else //Если кластер занят

                    {

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