Создание программы-редактора схем

Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 10:11, курсовая работа

Описание работы

Различные схемы являются неотъемлемой частью любой информационной системы или программного продукта. Существует множество схем создающийся по различным стандартам, в частности стандарт ГОСТ 19.701 различает следующие схемы:
1. Схема данных.
2. Схема программы.
3. Схема работы системы.
4. Схема взаимодействия программ.
5. Схема ресурсов системы.

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

ВВЕДЕНИЕ 3
1. Аналитический обзор существующих программ-редакторов схем 4
1.1 Microsoft Offise Visio 2007 4
1.2 Редактор блок-схем 5
1.3 FCEditor 6
1.4 Вывод по аналитическому обзору 6
2. Выбор технических средств 8
3. Диграммы 9
3.1 Функциональная модель 9
3.2 Функционально-стоимостной анализ IDEF0-схемы 14
3.3 Диаграмма потоков данных 15
3.4 Диаграмма прецендентов 16
3.5 Диаграмма последовательностей 17
3.6 Диаграмма классов 18
4. Описание системы…………………......……………………………………………….....…23
ЗАКЛЮЧЕНИЕ 26
ПРИЛОЖЕНИЕ А(справочное)Исходный текст пограммы…..……………….…………….27
СПИСОК ЛИТЕРАТУРЫ

Файлы: 1 файл

МИМИУС fin.doc

— 1.35 Мб (Скачать файл)

       public abstract class BlockTemplate

       {

               public int cx;

               public int cy;

               public int w;

               public int h;

               public bool isSelected = false;

               public string info = "Some Text";

               public int thickness = 1;

               public ArrowTemplate[] connectedArrows;

               public int[] connectedArrowsNodes;

               public Point[] connectionPoints;

               public Pen blockPen;

               public Pen selectedBlockPen;

               protected static StringFormat strFormat;

               public BlockTemplate(int x, int y)

               public void move(int dx, int dy)

               public void changeLineThickness(int thickness)

               public abstract void draw(Graphics g, Font drawFont);

               public bool pointInside(int x, int y)

               public bool blockInsideRect(int x, int y, int width, int height)

           }

       Для отображения элементов схемы на экране используется библиотека GDI, типа и функции из пространства имен System.Drawing и System.Drawing.Drawing2d.

       В программе используются стандартные  типы GDI такие как Pen, Font, Brush, Point. Для рисования графических примитивов используются функции GDI такие как DrawLine, DrawCurve и т.п.

     Более подробно рассмотреть классы системы  можно в Приложении А. 
 
 
 
 
 
 
 
 
 

       4. Описание системы

       Нами  было создано приложение программа-редактор схем. С помощью этой программы можно создавать, сохранять, редактировать схему, а также выполнять проверку схемы. Главная форма приложения показана на рис. 4.1.

       Рисунок 4.1 – Внешний вид главной формы приложения 

       На  главной форме приложения расположены  следующие компоненты, определяющие функциональность программы:

  1. всплывающее меню «Файл» позволяет сохранять схему в формат .XML для последующего редактирование, сохранять схему в формат .JPG для экспорта схемы, а также открывать уже созданную схему для доработки;
  2. всплывающее меню «Шрифт» позволяет изменять шрифт надписи в блоке;
  3. всплывающее меню «Размер» позволяет изменять размер надписи на блоке, программа сама подберёт оптимальное количество строк в надписи после изменения размера шрифта;
  4. кнопка «Сетка» позволяет включить сетку, для того, чтобы более точно расположить стрелки и блоки в схеме;
  5. кнопка «Выравнивание» позволяет выравнивать схему;
  6. кнопка «Наконечники» позволяет скрыть\отобразить наконечники у выделенных стрелок;
  7. меню «Размер сетки» позволяет устанавливать размер сетки, для более точного расположения блоков и связей в схеме;
  8. меню «Толщина линий» позволяет установить толщину линий у стрелок;
  9. кнопка «Проверить схему» позволяет проверить схему на соответствие ГОСТ 19.701, найденные программой ошибки будут отображены в виде списка на панели внизу главной формы приложения;
  10. всплывающее меню «Тип схемы» позволяет выбрать тип схемы из предложенного списка (данные, программа, работа системы, взаимодействие, ресурсы);
  11. панель «Блоки» позволяет выбрать нужный блок из предложенных блоков, для его выбора и перемещения его в рабочую область приложения;
  12. панель «Связи» позволяет выбрать нужную связь из предложенных (вертикальная стрелка, горизонтальная стрелка, вертикальная стрелка с изломом, горизонтальная стрелка с изломом) для её перемещения в рабочую область приложения;
  13. панель в нижней части главной формы приложения отображает список ошибок в схеме, которые нашла программа;

       Если  щёлкнуть два раза правой кнопкой  мыши на блоке или на стрелке, то откроется дочерняя форма «Свойства  элемента» (рис. 4.2):

       Рисунок 4.2 – Внешний вид дочерних форм

       На  этой форме есть панель изменения  текста для блока, всплывающее меню изменения толщины линий для  блока, кнопки постановки наконечников стрелок в начале и\или в конце  стрелки, кнопка пунктира для стрелок, а также кнопки удаления блока или стрелки.

       Главным достоинством созданной нами программы  являются простота создания схем, не нужно  открывать множество окон и всплывающих  меню, для того, чтобы создать  схему откройте программу, выберите нужный тип схемы, далее поместите  нужные блоки и связи в рабочую область и правильно скомпонуйте их (рис. 4.3):

       Рисунок 4.3 – Созданная программа 

       Схема создана, теперь можете нажать кнопку «проверить схему», чтобы проверить  правильность построения схемы. После  этого вы можете экспортировать созданную схему в какую-либо программу, чтобы интегрировать схему, куда вам нужно. 

             
     

 

           ЗАКЛЮЧЕНИЕ

       В ходе данной курсовой работы были выявлены важные функции программ-редакторов схем, такие как:

       1. Возможность экспорта созданной схемы в различные форматы.

             2. Обладание автоматической «подгонкой» блоков и стрелок.

             3. Возможность создания схем разного типа.

       Некоторые из этих функций были успешно реализованы в программе.

       В ходе разработки курсовой работы были использованы различные виды схем, например IDEF0 или UML, были изучены различные программы, позволяющие строить эти схемы, такие как BPWin и Wicrosoft Offise Visio 2007.

       Созданная нами программ может применяться в качестве учебной при создании схем по ГОСТ 19.701. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Приложение А

(справочное)

Исходный  текст программы

1) mainForm.cs – главная форма программы

using System;

using System.Collections.Generic;

using System.Drawing;

using System.IO;

using System.Windows.Forms;

using System.Xml.Serialization; 

namespace FCEditor

{

    public partial class MainForm : Form

    {

        WorkAreaForm workAreaForm; 
 

        Configuration config = new Configuration(); 
 

        int fontSize = 12; 

        public MainForm()

        {

            InitializeComponent(); 

            workAreaForm = new WorkAreaForm();

            workAreaForm.MdiParent = this; 

            workAreaForm.drawFont = new Font("Arial", 12);

            workAreaForm.Show(); 

            toolStripComboBox1.ComboBox.DataSource = FontFamily.Families;

            toolStripComboBox1.ComboBox.ValueMember = "Name"; 

            toolStripComboBox1.SelectedIndex = 2; 

            toolStripComboBox2.SelectedIndex = 4; 

            toolStripTextBox1.LostFocus += new EventHandler(toolStripTextBox1_LostFocus);

            lineThicknesstoolStripTextBox.LostFocus += new EventHandler(lineThicknesstoolStripTextBox_LostFocus);

            toolStripTextBox1.Text = Convert.ToString(workAreaForm.gridBlockSize); 

            comboBox1.SelectedIndex = 0;

        } 
 

        private void initBlockPut(int num)

        {

            if (workAreaForm.putBlock || workAreaForm.putArrow)

            {

                return;

            }

            else

            {

                workAreaForm.putBlock = true;

                workAreaForm.blockType = num;

                workAreaForm.Cursor = Cursors.Cross;

            }

        } 

        private void initArrowPut(int num)

        {

            if (workAreaForm.putBlock || workAreaForm.putArrow)

            {

                return;

            }

            else

            {

                workAreaForm.putArrow = true;   //нужно нарисовать фигуру

                workAreaForm.arrowType = num;

                workAreaForm.Cursor = Cursors.Cross;

            }

        } 
 

        private void button1_Click(object sender, EventArgs e) { initBlockPut(1); }

        private void DataBlockButton_Click(object sender, EventArgs e) { initBlockPut(2); }

        private void DecisionBlockButton_Click(object sender, EventArgs e) { initBlockPut(3); }

        private void RamBlockButton_Click(object sender, EventArgs e) { initBlockPut(4); }

        private void SerialAcessMemoryBlockButton_Click(object sender, EventArgs e) { initBlockPut(5); }

        private void ManualInputButton_Click(object sender, EventArgs e) { initBlockPut(6); }

        private void PredefinedProcessButton_Click(object sender, EventArgs e) { initBlockPut(7); }

        private void ManualOperationButton_Click(object sender, EventArgs e) { initBlockPut(8); }

        private void PreparationButton_Click(object sender, EventArgs e) { initBlockPut(9); }

        private void button10_Click(object sender, EventArgs e) { initBlockPut(10); }

        private void button11_Click(object sender, EventArgs e) { initBlockPut(11); }

        private void button12_Click(object sender, EventArgs e) { initBlockPut(12); }

        private void button13_Click(object sender, EventArgs e) { initBlockPut(13); }

        private void button14_Click(object sender, EventArgs e) { initBlockPut(14); }

        private void button15_Click(object sender, EventArgs e) { initBlockPut(15); }

        private void button16_Click(object sender, EventArgs e) { initBlockPut(16); }

        private void button17_Click(object sender, EventArgs e) { initBlockPut(17); }

        private void button18_Click(object sender, EventArgs e) { initBlockPut(18); } 
 

        private void button2_Click(object sender, EventArgs e) { initArrowPut(1); }

        private void button3_Click(object sender, EventArgs e) { initArrowPut(2); }

        private void horizontalArrowButton_Click(object sender, EventArgs e) { initArrowPut(3); }

        private void verticalArrowButton_Click(object sender, EventArgs e) { initArrowPut(4); } 
 
 
 

        static private Font ChangeFontSize(Font font, float fontSize)

        {

            if (font != null)

            {

                float currentSize = font.Size;

                if (currentSize != fontSize)

                {

                    font = new Font(font.Name, fontSize, font.Style, font.Unit, font.GdiCharSet, font.GdiVerticalFont);

                }

            }

            return font;

        } 
 
 

        #region work with font changing comboboxes 

        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

            if (this.workAreaForm == null)

                return; 

            Font fnt = null;

Информация о работе Создание программы-редактора схем