Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 13:26, лабораторная работа
Для корректной работы программного средства необходимо выполнить ряд требований:
а) исходный код программы должен соответствовать правилам написания программ на языке программирования PHP 5.
б) исходный код программы должен содержаться в одном файле.
в) на компьютере должно быть установлено приложение GraphViz, оно необходимо для отображения граф-схемы алгоритма. Приложение устанавливается автоматически.
Цели и задачи
3
Руководство пользователя. Главное меню программы
4
Вкладка “Файл”
4
Вкладка “Обработка”
5
Вкладка “Справка”
5
Панель быстрого доступа
6
Краткие сведения о метрике Мак-Кейба
7
Результаты выполнения программы
8
Список литературы
else
{
Block NewBlock = new Block(IsLinear, Node, "node" + NumberOfBlocks.ToString());
curBlock.NextBlocks.Add(
curBlock = NewBlock;
NumberOfBlocks++;
}
}
private void DelCon(Block cur)
{
cur.IsPassed = true;
for (int i = 0; i < cur.NextBlocks.Count; i++ )
{
while
(cur.NextBlocks[i].NodeStyle.
{
cur.NextBlocks[i] = cur.NextBlocks[i].NextBlocks[
NumberOfBlocks--;
}
if (!cur.NextBlocks[i].IsPassed)
DelCon(cur.NextBlocks[i]);
}
}
public void Refresh(Block cur)
{
cur.IsPassed = false;
for (int i = 0; i < cur.NextBlocks.Count; i++)
{
if (cur.NextBlocks[i].IsPassed)
Refresh(cur.NextBlocks[i]);
}
}
private void AddEnd(Block cur, Block End)
{
cur.IsPassed = true;
bool IsPreEnd = true;
for (int i = 0; i < cur.NextBlocks.Count; i++)
{
if (!cur.NextBlocks[i].IsPassed)
{
IsPreEnd = false;
AddEnd(cur.NextBlocks[i], End);
}
}
if (IsPreEnd)
cur.NextBlocks.Add(End);
}
public void ModToView()
{
Block T = new Block(true, "", "Begin");
T.NextBlocks.Add(Root);
Root = T;
Block End = new Block(true, "", "End");
curBlock.NextBlocks.Add(End);
//End.IsPassed = true;
//AddEnd(Root, End);
//Refresh(Root);
//while (T.NextBlocks.Count != 0)
// T = T.NextBlocks[0];
//Block End = new Block(true, "0", "End", 0, 0);
//T.NextBlocks.Add(End);
DelCon(Root);
Refresh(Root);
}
public string GetNodes(Block cur, string Nodes)
{
cur.IsPassed = true;
Nodes += cur.NodeStyle + "\n";
for (int i = 0; i < cur.NextBlocks.Count; i++)
{
if (!cur.NextBlocks[i].IsPassed)
Nodes += GetNodes(cur.NextBlocks[i], Nodes);
}
return Nodes;
}
public string GraphBypass(Block ForPassage, string Link)
{
if (!ForPassage.IsPassed)
{
ForPassage.IsPassed = true;
if (ForPassage.NextBlocks.Count != 0)
{
foreach (Block i in ForPassage.NextBlocks)
Link = Link + GraphBypass(i, ForPassage.NodeName + "->");
}
else
{
Link = Link + ForPassage.NodeName + '\n';
}
}
else
Link = Link + ForPassage.NodeName + '\n';
return Link;
}
}
}
Листинг файла Block.cs
using System;
using System.Collections.Generic;
using System.Linq;
using
System.Text;
namespace MSSVIR
{
class Block
{
public string NodeStyle;
public string NodeName;
public bool IsLinear;
public List<Block> NextBlocks = new List<Block>();
public bool
IsPassed;
public Block(bool IsLinear_, string Node_, string Label_)
{
NodeStyle = Node_;
IsLinear = IsLinear_;
NodeName = Label_;
IsPassed = false;
}
}
}
Информация о работе Анализ программного средства по метрике Мак-Кейба