Автор: Пользователь скрыл имя, 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
{
Parameters ParametersForm = new Parameters();
Cluster ClusterForm = new Cluster();
FileParameters FParam = new FileParameters();
DeleteForm Del = new DeleteForm();
public Mainform()
{
InitializeComponent();
}
private void ExitButton_Click(object sender, EventArgs e)
{
if
(MessageBox.Show("Вы
действительно хотите выйти?", "Выход
из программы", MessageBoxButtons.YesNo,Messag
{
Application.Exit();
}
}
private void FSCreate_Click(object sender, EventArgs e)
{
BADFill.Enabled = true;
FileOperations.Visible = true;
FSCreate.Enabled = false;
Highlighter.Enabled = true;
FSClose.Enabled = true;
// Принимаем параметры
ParametersForm.ShowDialog();
// Выводим статус
//Корректируем размер раздела
FileSystem.PartitionSize = FileSystem.PartitionSize - (FileSystem.PartitionSize % FileSystem.ClusterSize);
FileSystem.FreeSpace = FileSystem.PartitionSize;
PartitionLabel.Text += FileSystem.PartitionSize.
ClusterLabel.Text += FileSystem.ClusterSize.
FreeSpaceLabel.Text += FileSystem.FreeSpace.ToString(
Status.Visible = true;
// Подсчитываем количество кластеров..
FileSystem.NumberOfClusters = (int)(FileSystem.PartitionSize / FileSystem.ClusterSize);
FileSystem.BinaryMap
= new char[FileSystem.
FileSystem.DecimalMap
= new int[FileSystem.
//... и рисуем их
FileSystem.Map = new Bitmap(1270, 5000);
Graphics
Gr = Graphics.FromImage(FileSystem.
int tmpX = 40;
int tmpY = 40;
int stop = 1240;
Pen tmpPen = new Pen(Color.Black, 1);
int j = 0;
Font
fnt = new Font(FontFamily.
for (int i = 42; i < 1240; i += 20) //Рисуем текст по Х
{
j++;
Gr.DrawString(j.ToString(), fnt, Brushes.Black, i, 15);
}
//Рисуем текст по Y
j = 0;
for (int i = 42; i < 5000; i += 20)
{
Gr.DrawString(j.ToString(), fnt, Brushes.Black, 5, i);
j++;
}
for (int i = 0; i < FileSystem.NumberOfClusters; i++)
{
FileSystem.BinaryMap[i] = '0';
Rectangle tmpRec = new Rectangle(tmpX, tmpY, 20, 20);
Gr.DrawRectangle(tmpPen, tmpRec);
tmpX += 20;
if (tmpX == (int)(stop)) // Проверяем не достигнута ли правая граница карты
{
tmpX = 40;
tmpY += 20;
}
}
FileMap.Image = FileSystem.Map;
FileMap.Invalidate();
Gr.Dispose();
}
private void FSClose_Click(object sender, EventArgs e)
{
BADFill.Enabled = false;
FileOperations.Visible = false;
FSCreate.Enabled = true;
Highlighter.Enabled = false;
FSClose.Enabled = false;
FileSystem.ClusterSize = 0;
FileSystem.PartitionSize = 0;
Status.Visible = false;
PartitionLabel.Text = "Размер раздела: ";
ClusterLabel.Text = "Размер кластера: ";
FreeSpaceLabel.Text = "Свободного места: ";
Graphics
Gr = Graphics.FromImage(FileSystem.
Gr.FillRectangle(Brushes.
Gr.Dispose();
FileMap.Invalidate();
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;
}
private void Highlighter_Click(object sender, EventArgs e)
{
ClusterForm.ShowDialog();
FileMap.Invalidate();
}