Автор: Пользователь скрыл имя, 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
FileSystem.pointer++;
}
}
while (flag == false);
}
//Здесь записываем конечный кластер!
FileSystem.EndCluster[FileSyst
column.Add(FileSystem.
column.Add(FileSystem.Cnt.
//Рисуем конец файла и переводим pointer на свободную позицию
FileSystem.BinaryMap[FileSyste
Graphics
Gr2 = Graphics.FromImage(FileSystem.
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.
Font
fnt2 = new Font(FontFamily.
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.
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).
}
private void FileDelete_Click(object sender, EventArgs e)
{
Del.ShowDialog();
if
(FileSystem.IsDeleted[FileSyst
{
FileSystem.pointer
= FileSystem.StartCluster[FileSy
FileSystem.IsDeleted[FileSyste
int
firsttodel = FileSystem.StartCluster[FileSy
FileSystem.BinaryMap[
Graphics
Gr2 = Graphics.FromImage(FileSystem.
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.
Gr2.DrawRectangle(tmpPen, 40 + 20 * tmpxpos2, 40 + 20 * tmpypos2, 20, 20);
int
j = FileSystem.StartCluster[FileSy
for
(int i = 0; i < FileSystem.ClustOnFile[FileSys
{
FileSystem.BinaryMap[j] = '0';
int
tmpypos = (int)((FileSystem.DecimalMap[
int
tmpxpos = (int)((FileSystem.DecimalMap[
if ((FileSystem.DecimalMap[j]) % 60 == 0)
{
tmpxpos = 59;
tmpypos -= 1;
}
Gr2.FillRectangle(Brushes.
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
FreeSpaceLabel.Text = "Свободного
места: " + FileSystem.FreeSpace.ToString(
FileView.Items[FileSystem.
}
else MessageBox.Show("Файл уже был удален!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Текст
файла Parameters.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;