Курсовые работы по информатике
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Курсовой проект «Разработка модуля САПР СВТ. Конструкторское проектирование» по дисциплине «Основы автоматизации проектирования средств вычислительной техники»

 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ. 3

1 ПОСТАНОВКА ЗАДАЧИ.. 4

2 ОПИСАНИЕ МЕТОДА РЕЩЕНИЯ.. 5

3 ОПИСАНИЕ СТРУКТУР ДАННЫХ.. 7

4 ОПИСАНИЕ АЛГОРИТМА.. 10

5 ОПИСАНИЕ ПРОЦЕДУР И ФУНКЦИЙ. 11

6 ИНТЕРФЕЙС ПРОГРАММЫ. 13

7 ТЕКСТ ПРОГРАММЫ. 22

8 МЕТОДИКА ИСПЫТАНИЯ ПРОГРАММЫ. 41

9 ТРЕБОВАНИЯ К ПРОГРАММНОМУ И ТЕХНИЧЕСКОМУ ОБЕСПЕЧЕНИЮ 42

10 ЗАКЛЮЧЕНИЕ. 43

БИБЛИОГРАФИЯ.. 44

ВВЕДЕНИЕ

Данный курсовой проект охватывает цели:

- научиться разрабатывать программный продукт группой программистов;

- научиться разрабатывать оптимальные структуры данных;

- изучить основных положений по разработке элементов систем автоматизированного проектирования СВТ.

Для главного программиста, второй пункт является наиболее важным, так как от разработки структур данных зависит качество решения задачи конструирования. А от успешного решения задач конструирования зависят такие характеристики ЭВМ, как быстродействие, надежность, объем, масса, технологичность, удобство эксплуатации. Расширение масштабов применения современных ЭВМ и систем, повышение требований к их надежности и производительности, рост степени интеграции элементной базы больших интегральных схем и связанные с этим особенности приводят к значительному увеличению трудоемкости процесса проектирования. Вместе с тем быстрые темпы развития вычислительной техники диктуют необходимость сокращения сроков выполнения проектных работ. В этих условиях большое значение приобретает автоматизация проектирования.

Основными задачами автоматизации проектирования являются:

- сокращение сроков проектирования сложных объектов;

повышение качества проектирования и технической подготовки производства;

- снижение стоимости проектирования.

1 ПОСТАНОВКА ЗАДАЧИ

В ходе выполнения курсового проекта необходимо разработать:

- общий интерфейс системы, реализующей задачу конструкторского проектирования;

- структуры данных для всей системы;

- схему передачи данных между отдельными модулями;

- алгоритм взаимодействия между модулями.

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

- предоставить пользователю выбор конкретного блока операций (Например: ввод исходных данных и модели дискретного устройства.);

- предоставить возможность визуального отображения составных элементов

для каждого модуля.

- отобразить выходные данные и статистику моделирования дискретного устройства в доступной для пользователя форме.

При разработке структур данных необходимо учесть возможные программные ограничения, вводимые для упрощения проектирования системы.

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

2 ОПИСАНИЕ МЕТОДА РЕЩЕНИЯ

Схема, представленная на рисунке 2.1отображает связи всех модулей и промежуточные структуры межмодульных взаимодействий.

Рисунок 2.1 – Схема взаимодействия модулей

Данная схема является наиболее рациональной с точки зрения разделения области данных, и программных процедур и функций.

Каждый модуль реализован посредством DLL или исполняемого файла(Dynamic Load Library или EXE), что позволяет разработчикам не привязываться к определённому языку программирования. Разделение кода с помощью динамически подгружаемых DLL особенно целесообразно при ограниченном объеме оперативной памяти, а, как уже было сказано во введение, одной из самой важной характеристикой являются ресурсы для решения задачи.

Ниже приведены аргументы в пользу использования DLL:

- Во-первых, это повторное использование кода. Функции, хранящиеся в библиотеке, могут быть вызваны на выполнение из приложений, разработанных не на Object Pascal, а, например, с использованием C++Builder, Visual Basic, Visual C++ и т. д.

- Во-вторых, использование DLL предоставляет возможность использования один загруженного в оперативную память кода несколькими приложениями. К примеру, если вы разрабатываете программное обеспечение для большого предприятия, то вполне возможно, что в различных созданных вами приложениях будут использоваться одни и те же функции, процедуры, формы и другие ресурсы. Естественно, что при выделении общих для нескольких приложений данных в DLL может привести к экономии как дискового пространства, так и оперативной памяти, иногда очень даже существенному.

Это лишь некоторые из аргументов в пользу использования динамически подключаемых библиотек при разработке приложений.

3 ОПИСАНИЕ СТРУКТУР ДАННЫХ

Так как постановкой задачи является разработка главного интерфейса для системы автоматизированного проектирования, то основной упор ставится на создание модуля, максимально удобного для работы пользователя, по этому используются в основном структуры данных предлагаемые разработчиками пакета Borland C++ Builder, а именно компоненты, описанные в стандартных библиотеках данного программного продукта(Borland C++ Builder).

Структуры данных:

StringGrid1 – динамически выделяемый массив для хранения модели ДУ.

StringGrid2 – динамически выделяемый массив, предназначенный для хранения матрицы соединений.

StringGrid3 – динамически выделяемый массив, предназначенный для хранения списка дуг.

StringGrid4 – динамически выделяемый массив, предназначенный для хранения моделей элементов И-НЕ.

StringGrid5 – динамически выделяемый массив, предназначенный для хранения моделей элементов ИЛИ-НЕ.

StringGrid6 – динамически выделяемый массив, предназначенный для хранения моделей элементов МУЛЬТИПЛЕКСОР.

StringGrid7 – динамически выделяемый массив для хранения модели ДУ не посредственно в модуле моделирования ДУ.

StringGrid8 – динамически выделяемый массив, предназначенный для хранения таблицы цепей.

StringGrid9 – динамически выделяемый массив, предназначенный для хранения таблицы событий.

ListBox1 – однонаправленный список, предназначенный для хранения списка активных элементов.

StringGrid10 – динамически выделяемый массив, предназначенный для хранения состояния контактов списка элементов И-НЕ.

StringGrid11 – динамически выделяемый массив, предназначенный для хранения состояния контактов списка элементов ИЛИ-НЕ.

StringGrid12 – динамически выделяемый массив, предназначенный для хранения состояния контактов списка элементов МУЛЬТИПЛЕКСОР.

Memo1 – структура, типа TStrings, для хранения информации анализа.

ListBox2 – однонаправленный список, предназначенный для хранения списка элементов И-НЕ.

ListBox3 – однонаправленный список, предназначенный для хранения списка элементов ИЛИ-НЕ.

ListBox4 – однонаправленный список, предназначенный для хранения списка элементов МУЛЬТИПЛЕКСОР.

ComboBox1 - однонаправленный список, предназначенный для хранения списка ЛЭ и выбора активного ЛЭ для отображения на графике временных диаграмм.

ComboBox2 - однонаправленный список, предназначенный для хранения списка цепей и выбора активной цепи для отображения на графике временных диаграмм.

RadioButton1 – флаг переключения в режим полного моделирования.

RadioButton2 – флаг переключения в режим пошагового моделирования.

CheckBox1 – флаг включения режима полной статистики.

CheckBox2 – флаг включения режима вывода временных диаграмм.

CheckBox3 – флаг включения режима статистики ошибок.

StatusBar1->Panels[1] – флаг идентификатора статуса моделирования.

StatusBar1->Panels[3] – флаг идентификатора ошибки.

StatusBar1->Panels[5] – флаг готовности модуля “Модель ДУ”.

StatusBar1->Panels[6] – флаг готовности модуля “Модель ЛЭ”.

StatusBar1->Panels[7] – флаг готовности модуля “Моделирование ДУ”.

StatusBar1->Panels[8] – флаг готовности модуля “Моделирование ЛЭ”.

StatusBar1->Panels[9] – флаг готовности модуля “Анализатор”.

StatusBar1->Panels[10] – флаг готовности модуля “Временные диаграммы”.

StatusBar1->Panels[12] – флаг идентификатора формирования статистики..

i, j – внутренние счетчики циклов.

k[80] – строка имени файла.

O_file[255] – загружаемый файл.

F – дескриптор загружаемого файла.

OpenDialog1 – диалог открытия файла.

SaveDialog1 – диалог записи в файл.

4 ОПИСАНИЕ АЛГОРИТМА

Алгоритм представлен в виде списка пунктов.

1.  Загрузка главного интерфейса.

1.1 проверка наличия всех модулей.

2.  Ввод исходных данных.

2.1 модель ДУ.

2.2 тестовый набор.

3. Вызов модуля “моделирование ДУ”.

3.1 Вызов модуля “создание модели ДУ”.

4. Вызов модуля “ моделирование ЛЭ”.

4.1 Вызов модуля “создание модели ЛЭ”.

5. Формирование выходных структур.

6. Анализ выходных данных.

7. Вывод временных диаграмм.

5 ОПИСАНИЕ ПРОЦЕДУР И ФУНКЦИЙ.

void __fastcall TForm1::Button1Click(TObject *Sender) – отображение клиентского окна “Ввод исходных данных”.

void __fastcall TForm1::Button2Click(TObject *Sender) – выполнение моделирования.

void __fastcall TForm1::Button3Click(TObject *Sender) – формирование статистики.

void __fastcall TForm1::Button6Click(TObject *Sender) – загрузка из файла модели и тестового набора.

void __fastcall TForm1::Button5Click(TObject *Sender) – сохранение в файл модели и тестового набора.

void __fastcall TForm1::Button4Click(TObject *Sender) – выход из программы.

void __fastcall TForm2::RadioButton1Click(TObject *Sender) – включение окна для ввода тестового набора.

void __fastcall TForm2::RadioButton2Click(TObject *Sender) – выключение

окна для ввода тестового набора

void __fastcall TForm2::Button1Click(TObject *Sender) – загрузка тестового набора из файла.

void __fastcall TForm2::Button2Click(TObject *Sender) – ввод модели ДУ(из файла или в ручную).

void __fastcall TForm2::Button5Click(TObject *Sender) – очистка окон “модель ДУ” и “Тестовый набор”.

void __fastcall TForm2::Button4Click(TObject *Sender) – применить данные для моделирования.

void __fastcall TForm2::Button3Click(TObject *Sender) – выход из окна “Ввод исходных данных”.

void __fastcall TForm3::Button2Click(TObject *Sender) – добавление элемента И-НЕ(с его параметрами) в модель ДУ.

void __fastcall TForm3::Button2Click(TObject *Sender) – добавление элемента ИЛИ-НЕ(с его параметрами) в модель ДУ.

void __fastcall TForm3::Button2Click(TObject *Sender) – добавление элемента МУЛЬТИПЛЕКСОР(с его параметрами) в модель ДУ.

void __fastcall TForm3::Button1Click(TObject *Sender) – выход из окна “Ввод модели ДУ”.

6 ИНТЕРФЕЙС ПРОГРАММЫ.

Главное окно программы представлено на рисунке 6.1.

Рисунок 6.1.

Окно ввода исходных данных представлено на рисунке 6.2.

Рисунок 6.2.

Окно ввода модели ДУ представлено на рисунке 6.3.

Рисунок 6.3.

Обзор параметров каждого из модулей производится при помощи манипуляции страниц(закладок) диалогового окна главного интерфейса.

Отображение всех страниц(закладок) представлено на рисунках 6.4.1-.6.4.6.

Рисунок 6.4.1

Рисунок 6.4.2.

Рисунок 6.4.3.

Рисунок 6.4.4

Рисунок 6.4.5.

Рисунок 6.4.

7 ТЕКСТ ПРОГРАММЫ.

Main. cpp:

#include <vcl. h>

#pragma hdrstop

#include "InUnit. h"

#include "Main. h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)

{

exit(0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Form2->Visible=true;

Form1->Enabled=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

exit(0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->Cells[0][0]=" №";

StringGrid1->Cells[1][0]=" Тип МС";

StringGrid1->Cells[2][0]="Вход 1";

StringGrid1->Cells[3][0]="Вход 2";

StringGrid1->Cells[4][0]="Вход 3";

StringGrid1->Cells[5][0]="Вход 4";

StringGrid1->Cells[6][0]="Выход";

StringGrid1->Cells[7][0]="Инв.";

StringGrid4->Cells[0][0]=" №";

StringGrid4->Cells[1][0]=" Тип МС";

StringGrid4->Cells[2][0]="Вход 1";

StringGrid4->Cells[3][0]="Вход 2";

StringGrid4->Cells[4][0]="Вход 3";

StringGrid4->Cells[5][0]="Вход 4";

StringGrid4->Cells[6][0]="Выход";

StringGrid4->Cells[7][0]="Инв.";

StringGrid5->Cells[0][0]=" №";

StringGrid5->Cells[1][0]=" Тип МС";

StringGrid5->Cells[2][0]="Вход 1";

StringGrid5->Cells[3][0]="Вход 2";

StringGrid5->Cells[4][0]="Вход 3";

StringGrid5->Cells[5][0]="Вход 4";

StringGrid5->Cells[6][0]="Выход";

StringGrid5->Cells[7][0]="Инв.";

StringGrid7->Cells[0][0]=" №";

StringGrid7->Cells[1][0]=" Тип МС";

StringGrid7->Cells[2][0]="Вход 1";

StringGrid7->Cells[3][0]="Вход 2";

StringGrid7->Cells[4][0]="Вход 3";

StringGrid7->Cells[5][0]="Вход 4";

StringGrid7->Cells[6][0]="Выход";

StringGrid7->Cells[7][0]="Инв.";

StringGrid8->Cells[0][0]="№ Цепи";

StringGrid8->Cells[1][0]="Цепь";

StringGrid9->Cells[0][0]="Ист-к";

StringGrid9->Cells[1][0]="Прием";

StringGrid10->Cells[0][0]=" №";

StringGrid10->Cells[1][0]=" Тип МС";

StringGrid10->Cells[2][0]="Вход 1";

StringGrid10->Cells[3][0]="Вход 2";

StringGrid10->Cells[4][0]="Вход 3";

StringGrid10->Cells[5][0]="Вход 4";

StringGrid10->Cells[6][0]="Выход";

StringGrid10->Cells[7][0]="Инв.";

StringGrid11->Cells[0][0]=" №";

StringGrid11->Cells[1][0]=" Тип МС";

StringGrid11->Cells[2][0]="Вход 1";

StringGrid11->Cells[3][0]="Вход 2";

StringGrid11->Cells[4][0]="Вход 3";

StringGrid11->Cells[5][0]="Вход 4";

StringGrid11->Cells[6][0]="Выход";

StringGrid11->Cells[7][0]="Инв.";

StringGrid12->Cells[0][0]=" №";

StringGrid12->Cells[1][0]=" Тип МС";

StringGrid12->Cells[2][0]="Вход 1";

StringGrid12->Cells[3][0]="Вход 2";

StringGrid12->Cells[4][0]="Вход 3";

StringGrid12->Cells[5][0]="Вход 4";

StringGrid12->Cells[6][0]="Выход";

StringGrid12->Cells[7][0]="Инв.";

}

//---------------------------------------------------------------------------

InUnit. cpp:

#include <vcl. h>

#include <stdio. h>

#include <conio. h>

#pragma hdrstop

#include "Main. h"

#include "InUnit. h"

#include "InMod. h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

int i, j;

char k[80],O_file[255];

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button3Click(TObject *Sender)

{

Form2->Visible = false;

Form1->Enabled = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button2Click(TObject *Sender)

{

if (RadioButton3->Checked)

{

Form3->Visible = true;

Form2->Enabled = false;

}

else

{

if(OpenDialog1->Execute())

{

strcpy(O_file, OpenDialog1->FileName. c_str());

FILE *f=fopen(O_file,"r");

//fscanf(f,"%i ",i);

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::RadioButton1Click(TObject *Sender)

{

Memo1->Enabled = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

{

if (RadioButton2->Checked)

{

if(OpenDialog1->Execute())

{

strcpy(O_file, OpenDialog1->FileName. c_str());

FILE *f=fopen(O_file,"r");

//fscanf(f,"%i ",i);

}

}

}

//---------------------------------------------------------------------------

void __fastcall TForm2::RadioButton2Click(TObject *Sender)

{

Memo1->Enabled = false;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::FormCreate(TObject *Sender)

{

StringGrid1->Cells[0][0]=" №";

StringGrid1->Cells[1][0]=" Тип МС";

StringGrid1->Cells[2][0]="Вход 1";

StringGrid1->Cells[3][0]="Вход 2";

StringGrid1->Cells[4][0]="Вход 3";

StringGrid1->Cells[5][0]="Вход 4";

StringGrid1->Cells[6][0]="Выход";

StringGrid1->Cells[7][0]="Инв.";

}

//---------------------------------------------------------------------------

InMod. cpp:

#include <vcl. h>

#pragma hdrstop

#include "InMod. h"

#include "InUnit. h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

extern int i=1;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button1Click(TObject *Sender)

{

Form3->Visible = false;

Form2->Visible = true;

Form2->Enabled = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox1Click(TObject *Sender)

{

Edit1->Enabled = ! Edit1->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox2Click(TObject *Sender)

{

Edit2->Enabled = ! Edit2->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox3Click(TObject *Sender)

{

Edit3->Enabled = ! Edit3->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox4Click(TObject *Sender)

{

Edit4->Enabled = ! Edit4->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox6Click(TObject *Sender)

{

Edit6->Enabled = ! Edit6->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox7Click(TObject *Sender)

{

Edit7->Enabled = ! Edit7->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox8Click(TObject *Sender)

{

Edit8->Enabled = ! Edit8->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox9Click(TObject *Sender)

{

Edit9->Enabled = ! Edit9->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox11Click(TObject *Sender)

{

Edit11->Enabled = ! Edit11->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox12Click(TObject *Sender)

{

Edit12->Enabled = ! Edit12->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox13Click(TObject *Sender)

{

Edit13->Enabled = ! Edit13->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::CheckBox14Click(TObject *Sender)

{

Edit14->Enabled = ! Edit14->Enabled;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)

{

Form2->StringGrid1->Cells[0][i]=i;

Form2->StringGrid1->Cells[1][i]="И-НЕ";

Form2->StringGrid1->Cells[2][i]=Edit1->Text;

Form2->StringGrid1->Cells[3][i]=Edit2->Text;

Form2->StringGrid1->Cells[4][i]=Edit3->Text;

Form2->StringGrid1->Cells[5][i]=Edit4->Text;

Form2->StringGrid1->Cells[6][i]=Edit5->Text;

if (CheckBox5->Checked)

{

Form2->StringGrid1->Cells[7][i]="да";

}

else

{

Form2->StringGrid1->Cells[7][i]="нет";

}

Form2->StringGrid1->RowCount++;

i++;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button3Click(TObject *Sender)

{

Form2->StringGrid1->Cells[0][i]=i;

Form2->StringGrid1->Cells[1][i]="ИЛИ-НЕ";

Form2->StringGrid1->Cells[2][i]=Edit6->Text;

Form2->StringGrid1->Cells[3][i]=Edit7->Text;

Form2->StringGrid1->Cells[4][i]=Edit8->Text;

Form2->StringGrid1->Cells[5][i]=Edit9->Text;

Form2->StringGrid1->Cells[6][i]=Edit10->Text;

if (CheckBox10->Checked)

{

Form2->StringGrid1->Cells[7][i]="да";

}

else

{

Form2->StringGrid1->Cells[7][i]="нет";

}

Form2->StringGrid1->RowCount++;

i++;

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button4Click(TObject *Sender)

{

Form2->StringGrid1->Cells[0][i]=i;

Form2->StringGrid1->Cells[1][i]="MX";

Form2->StringGrid1->Cells[2][i]=Edit11->Text;

Form2->StringGrid1->Cells[3][i]=Edit12->Text;

Form2->StringGrid1->Cells[4][i]=Edit13->Text;

Form2->StringGrid1->Cells[5][i]=Edit14->Text;

Form2->StringGrid1->Cells[6][i]=Edit15->Text;

if (CheckBox15->Checked)

{

Form2->StringGrid1->Cells[7][i]="да";

}

else

{

Form2->StringGrid1->Cells[7][i]="нет";

}

Form2->StringGrid1->RowCount++;

i++;

}

//---------------------------------------------------------------------------

Main. h:

#ifndef MainH

#define MainH

//---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

#include <Menus. hpp>

#include <ComCtrls. hpp>

#include <Dialogs. hpp>

#include <ExtCtrls. hpp>

#include <Grids. hpp>

#include <Chart. hpp>

#include <TeEngine. hpp>

#include <TeeProcs. hpp>

#include <Series. hpp>

#include <TeeFunci. hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N4;

TMenuItem *N5;

TMenuItem *N6;

TMenuItem *N7;

TMenuItem *N8;

TMenuItem *N9;

TMenuItem *N16;

TStatusBar *StatusBar1;

TGroupBox *GroupBox1;

TPageControl *PageControl1;

TTabSheet *TabSheet1;

TTabSheet *TabSheet2;

TTabSheet *TabSheet3;

TTabSheet *TabSheet4;

TTabSheet *TabSheet5;

TTabSheet *TabSheet6;

TOpenDialog *OpenDialog1;

TSaveDialog *SaveDialog1;

TGroupBox *GroupBox2;

TButton *Button1;

TButton *Button2;

TButton *Button3;

TGroupBox *GroupBox3;

TLabel *Label1;

TBevel *Bevel1;

TBevel *Bevel2;

TCheckBox *CheckBox1;

TCheckBox *CheckBox2;

TCheckBox *CheckBox3;

TLabel *Label2;

TBevel *Bevel3;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

TGroupBox *GroupBox4;

TButton *Button4;

TButton *Button5;

TButton *Button6;

TMenuItem *N3;

TMenuItem *N10;

TGroupBox *GroupBox5;

TStringGrid *StringGrid1;

TGroupBox *GroupBox6;

TStringGrid *StringGrid2;

TGroupBox *GroupBox7;

TStringGrid *StringGrid3;

TGroupBox *GroupBox8;

TGroupBox *GroupBox9;

TGroupBox *GroupBox10;

TStringGrid *StringGrid4;

TStringGrid *StringGrid5;

TStringGrid *StringGrid6;

TGroupBox *GroupBox11;

TStringGrid *StringGrid7;

TGroupBox *GroupBox12;

TGroupBox *GroupBox13;

TStringGrid *StringGrid8;

TListBox *ListBox1;

TGroupBox *GroupBox14;

TStringGrid *StringGrid9;

TGroupBox *GroupBox15;

TMemo *Memo1;

TChart *Chart1;

TGroupBox *GroupBox16;

TComboBox *ComboBox1;

TGroupBox *GroupBox17;

TComboBox *ComboBox2;

TLineSeries *Series1;

TAddTeeFunction *TeeFunction1;

TGroupBox *GroupBox18;

TStringGrid *StringGrid10;

TGroupBox *GroupBox19;

TStringGrid *StringGrid11;

TGroupBox *GroupBox20;

TStringGrid *StringGrid12;

TListBox *ListBox2;

TListBox *ListBox3;

TListBox *ListBox4;

TPanel *Panel1;

TPanel *Panel2;

void __fastcall N12Click(TObject *Sender);

void __fastcall N7Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

InUnit. h:

#ifndef InUnitH

#define InUnitH

//---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

#include <Dialogs. hpp>

#include <ExtCtrls. hpp>

#include <Grids. hpp>

#include <ComCtrls. hpp>

//---------------------------------------------------------------------------

class TForm2 : public TForm

{

__published: // IDE-managed Components

TOpenDialog *OpenDialog1;

TGroupBox *GroupBox1;

TLabel *Label1;

TGroupBox *GroupBox2;

TBevel *Bevel1;

TRadioButton *RadioButton1;

TRadioButton *RadioButton2;

TGroupBox *GroupBox3;

TBevel *Bevel2;

TRadioButton *RadioButton3;

TRadioButton *RadioButton4;

TButton *Button3;

TGroupBox *GroupBox4;

TGroupBox *GroupBox5;

TStringGrid *StringGrid1;

TGroupBox *GroupBox6;

TMemo *Memo1;

TButton *Button1;

TButton *Button2;

TButton *Button4;

TButton *Button5;

TStatusBar *StatusBar1;

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall RadioButton1Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall RadioButton2Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm2(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm2 *Form2;

//---------------------------------------------------------------------------

#endif

InMod. h:

#ifndef InModH

#define InModH

//---------------------------------------------------------------------------

#include <Classes. hpp>

#include <Controls. hpp>

#include <StdCtrls. hpp>

#include <Forms. hpp>

#include <ExtCtrls. hpp>

//---------------------------------------------------------------------------

class TForm3 : public TForm

{

__published: // IDE-managed Components

TGroupBox *GroupBox1;

TGroupBox *GroupBox2;

TPanel *Panel1;

TCheckBox *CheckBox1;

TCheckBox *CheckBox2;

TCheckBox *CheckBox3;

TCheckBox *CheckBox4;

TCheckBox *CheckBox5;

TLabel *Label5;

TStaticText *StaticText1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label6;

TGroupBox *GroupBox3;

TLabel *Label7;

TLabel *Label8;

TLabel *Label9;

TLabel *Label10;

TLabel *Label11;

TLabel *Label12;

TPanel *Panel2;

TCheckBox *CheckBox6;

TCheckBox *CheckBox7;

TCheckBox *CheckBox8;

TCheckBox *CheckBox9;

TCheckBox *CheckBox10;

TStaticText *StaticText2;

TGroupBox *GroupBox4;

TLabel *Label13;

TLabel *Label14;

TLabel *Label15;

TLabel *Label16;

TLabel *Label17;

TLabel *Label18;

TPanel *Panel3;

TCheckBox *CheckBox11;

TCheckBox *CheckBox12;

TCheckBox *CheckBox13;

TCheckBox *CheckBox14;

TCheckBox *CheckBox15;

TStaticText *StaticText3;

TButton *Button1;

TShape *Shape1;

TShape *Shape2;

TShape *Shape3;

TEdit *Edit1;

TEdit *Edit2;

TEdit *Edit3;

TEdit *Edit4;

TEdit *Edit5;

TLabel *Label19;

TLabel *Label20;

TLabel *Label21;

TLabel *Label22;

TLabel *Label23;

TEdit *Edit6;

TEdit *Edit7;

TEdit *Edit8;

TEdit *Edit9;

TLabel *Label25;

TLabel *Label26;

TLabel *Label27;

TLabel *Label28;

TEdit *Edit11;

TEdit *Edit12;

TEdit *Edit13;

TLabel *Label30;

TLabel *Label31;

TLabel *Label32;

TLabel *Label33;

TLabel *Label34;

TEdit *Edit15;

TStaticText *StaticText5;

TStaticText *StaticText4;

TStaticText *StaticText6;

TGroupBox *GroupBox5;

TButton *Button2;

TGroupBox *GroupBox6;

TButton *Button3;

TGroupBox *GroupBox7;

TButton *Button4;

TEdit *Edit10;

TEdit *Edit14;

TLabel *Label24;

TLabel *Label29;

TLabel *Label35;

TLabel *Label36;

void __fastcall Button1Click(TObject *Sender);

void __fastcall CheckBox1Click(TObject *Sender);

void __fastcall CheckBox2Click(TObject *Sender);

void __fastcall CheckBox3Click(TObject *Sender);

void __fastcall CheckBox4Click(TObject *Sender);

void __fastcall CheckBox6Click(TObject *Sender);

void __fastcall CheckBox7Click(TObject *Sender);

void __fastcall CheckBox8Click(TObject *Sender);

void __fastcall CheckBox9Click(TObject *Sender);

void __fastcall CheckBox11Click(TObject *Sender);

void __fastcall CheckBox12Click(TObject *Sender);

void __fastcall CheckBox13Click(TObject *Sender);

void __fastcall CheckBox14Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm3(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm3 *Form3;

//---------------------------------------------------------------------------

#endif

8 МЕТОДИКА ИСПЫТАНИЯ ПРОГРАММЫ.

В качестве методики будет предложен следующий порядок манипуляций в диалоговом окне главного интерфейса:

1.  Запуск программы.

1.1 убедится в работоспособности всех модулей.

2. Ввод исходных данных.

2.1 ввод данных вручную.

2.1.1 ввод модели ДУ.

2.1.2 ввод тестового набора.

2.2 ввод данных из файла.

3. Применить введенные значения(модель ДУ, тестовый набор).

4. Выбрать режим моделирования.

4.1 пошаговый режим.

4.2 полный режим.

5. Указать(при надобности) необходимые настройки.

5.1 Общая статистика

5.2 Временные диаграммы.

5.3 Статистика ошибок.

6. Произвести моделирование.

7. Просмотреть статистику.

8. Сохранить результаты.

9 ТРЕБОВАНИЯ К ПРОГРАММНОМУ И ТЕХНИЧЕСКОМУ ОБЕСПЕЧЕНИЮ

Данный программный продукт разработан для выполнения под руководством операционной системы Windows, то есть разработанная программа является Windows – приложением. Минимальными требованиями к программному и техническому обеспечению для корректной работы программы являются:

-  ОС Windows 95 или позже;

-  8 MB RAM;

-  IBM PC 486 или выше;

-  2 Мb свободного места на HDD;

-  клавиатура, мышь;

10 ЗАКЛЮЧЕНИЕ

В данном курсовом проекте была разработана программа, выполняющая роль САПР. Данная программа была разработана на Borland C++Builder 5.0 и является Windows – приложением.

В разработанной программе были реализованы следующие методы и функции:

- загрузка модели ДУ и тестового набора;

- организация межмодульного взаимодействия;

- необходимые структуры данных;

- главный интерфейс САПР СВТ;

- вывод данных моделирования ДУ в доступной для пользователя форме.

Данный проект является учебным и не может быть использован для моделирования дискретных устройств использующихся в настоящее время.

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

Программный код был исполнен в соответствии с постановкой задачи и может быть дополнен новыми процедурами и функциями если возникнет необходимость расширения возможностей САПР.

БИБЛИОГРАФИЯ

1 Автоматизация проектирования цифровых схем / С. И.Баранов, С. А.Майоров, Ю. П.Сахаров, В. А.Селютин. - Л.: Судостроение, 1979.- 264с.

2 Методические указания к лабораторной работе "Исследование последовательного алгоритма размещения" по курсу Автоматизированное проектирование ЦВМ" для студентов специальности 0608. - Севастополь: КМУ, 1988.

3 Методические указания к выполнению курсовой работы «Разработка модуля САПР СВТ» по дисциплине «Основы автоматизации проектирования средств вычислительной техники» для студентов специальности 7.091501 дневной и заочной форм обучения. - Севастополь: Издательство СевГТУ,2002.- 20с.

4 Харви Дейтел, Пол Дейтел Как программировать на С++: Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 1999 г. – 1024 с.: ил.

5 Рихтер Дж. Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows/ пер. с англ. – 4-е изд. – СПб: Питер; М.: Издательство – торговый дом «Русская редакция», 2001. – 752 с.: ил.

6 Круглински Д., Уинглоу С., Шеферд Дж. Программирование на Visual C++ 6.0 для профессионалов/Пер. с англ. – СПб: Питер; М.: Издательство-торговый дом «Русская редакция», 2000. – 864 с.: ил.

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство