Анализ программного средства по метрике Мак-Кейба

Автор работы: Пользователь скрыл имя, 11 Декабря 2011 в 13:26, лабораторная работа

Краткое описание

Для корректной работы программного средства необходимо выполнить ряд требований:
а) исходный код программы должен соответствовать правилам написания программ на языке программирования PHP 5.
б) исходный код программы должен содержаться в одном файле.
в) на компьютере должно быть установлено приложение GraphViz, оно необходимо для отображения граф-схемы алгоритма. Приложение устанавливается автоматически.

Содержание работы

Цели и задачи
3
Руководство пользователя. Главное меню программы
4
Вкладка “Файл”
4
Вкладка “Обработка”
5
Вкладка “Справка”
5
Панель быстрого доступа
6
Краткие сведения о метрике Мак-Кейба
7
Результаты выполнения программы
8
Список литературы

Содержимое работы - 1 файл

Report1.docx

— 259.08 Кб (Скачать файл)

            else

            {

                Block NewBlock = new Block(IsLinear, Node, "node" + NumberOfBlocks.ToString());

                curBlock.NextBlocks.Add(NewBlock);

                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.Contains("connection"))

                {

                    cur.NextBlocks[i] = cur.NextBlocks[i].NextBlocks[0];

                    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;

        }

    }

} 
 

Информация о работе Анализ программного средства по метрике Мак-Кейба