Разработка модуля визуализации компьютерных структур с WEB-интерфейсом
Создание приложения, которое на вход получает компьютерную структуру, обрабатывает ее и выводит на экран. Краткое описание используемых пространств имен и классов. Файлы программного модуля Beta. Пример его работы, порядок подключения к Веб-странице.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 06.07.2015 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
q->graph=G;
Vxq=(struct descIn*)malloc(sizeof(struct descIn));
Viq=(struct descOut*)malloc(sizeof(struct descOut));
Viq->name=stringcopy(q->name,0,strlen(q->name));
Vxq->name=stringcopy(q->name,0,strlen(q->name));
Vxq->vert=q;
Vxq->next=NULL;
Vxq->prev=NULL;
Viq->next=NULL;
Viq->prev=NULL;
Viq->vert=q;
Viq->LArc=NULL;
Vxq->LArc=NULL;
Vx->next=Vxq;
Vxq->prev=Vx;
Vx=Vxq;
Vi->next=Viq;
Viq->prev=Vi;
Vi=Viq;
q->LIn=Vx;
q->LOut=Vi;
p->next=q;
q->prev=p;
p=q;
p->next=NULL;
}
}
d=(struct descAr*) malloc(sizeof(struct descAr));
d->next=NULL;
d->prev=NULL;
dl=d;
G->LArch=NULL;
printf(" Struct name : %s \n",G->name);
if (f==1) Odin(G,d);
else Dva(G,d);
printf(" \n \n First look : \n");
return G;
}
#endif //GRAPH_H
Файл “main.cpp”.
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.StartDraw();
w.show();
w.Grab();
// w.Close();
return a.exec();
}
Файл “MainWindow.h”.
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void Grab();
void keyPressEvent(QKeyEvent *e);
void StartDraw();
void Close();
private:
Ui::MainWindow *ui;
protected:
void paintEvent(QPaintEvent *);
void moveLeft(int k);
void moveRight(int k);
void moveUp(int k);
void moveDown(int k);
void zoomIn(int k);
void zoomOut(int k);
struct VertCoor *VCoor;
struct VertCoor* VCoorL;
struct descG* g1;
struct descG* g2;
bool f;
};
#endif // MAINWINDOW_H
Файл “MainWindow.cpp”.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QtCore>
#include <QtGui>
#include "graph.h"
#include <QTextCodec>
#include <QString>
#include <fstream>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <iostream>
#include <time.h>
#include <QDebug>
#include <QObject>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *)
{
setFocusPolicy(Qt::StrongFocus);
this->setFocus();
resize(800,600);
move(0,0);
setWindowTitle("Vizualisation of Graph");
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing, true);
p.setRenderHint(QPainter::TextAntialiasing, true);
QPen penB(Qt::white);
penB.setWidth(1);
QPen penR(Qt::black);
penR.setWidth(1);
p.setPen(penR);
p.setBrush(QBrush(Qt::darkCyan,Qt::SolidPattern));
p.fillRect(0,0,width(),height(),Qt::white);
QLinearGradient lg = QLinearGradient(QPointF(0,0),QPointF(0,1));
lg.setCoordinateMode(QGradient::ObjectBoundingMode );
lg.setSpread(QGradient::PadSpread);
lg.setColorAt(0.0,Qt::green);
lg.setColorAt(1.0,Qt::red);
QBrush brush = QBrush(lg);
QPainter painter(this);
painter.setBrush(brush);
QPen p2;
p2.setBrush(brush);
p2.setWidth(2);
int n=0;
struct descV* NumV=g1->LVert;
while (NumV->next!=NULL)
{ n++;
NumV=NumV->next;
}
struct descV* VList;
VList=g1->LVert;
for (int i=0;i!=n;i++)
{
VList->sign=i;
VList=VList->next;
}
while (VList->prev!=NULL)
{
VList=VList->prev;
}
g1->LVert=VList;
if (f)
{
int aK=0;
int x=this->width()/2;
int y=this->height()/2;
double pi=3.14;
struct VertCoor* VCoor3;
VCoor=(struct VertCoor*)malloc(sizeof(struct VertCoor));
VCoor->X=(int)(x+120*cos(aK*pi/180));
VCoor->Y=(int)(y-120*sin(aK*pi/180));
VCoor->sign=VList->sign;
VCoor->type=VList->name;
VCoorL=VCoor;
aK=aK+360/(n+1);
VList=VList->next;
for (int i=0;i!=n;i++)
{
VCoor3=(struct VertCoor*)malloc(sizeof(struct VertCoor));
VCoor3->sign=VList->sign;
VCoor3->type=VList->name;
VCoor3->X=(int)(x+120*cos(aK*pi/180));
VCoor3->Y=(int)(y-120*sin(aK*pi/180));
VCoor->next=VCoor3;
VCoor=VCoor3;
VList=VList->next;
aK=aK+360/(n+1);
}
VCoor->next=NULL;
}
VCoor=VCoorL;
struct descV* vert;
vert=g1->LVert;
int x1,y1,x2,y2,n1,n2;
int sign1;
painter.setPen(p2);
struct descV* vert2;
vert2=g1->LVert;
while (vert2!=NULL)
{
struct SupportInOutArc* ALIST2 = vert2->LOut->LArc;
while (ALIST2!=NULL)
{
sign1=ALIST2->arch->LOut->Out->vert->sign;
VCoor=VCoorL;
while (VCoor!=NULL)
{
if (VCoor->sign == sign1 )
{
x1=VCoor->X;
y1=VCoor->Y;
n1=sign1;
}
VCoor=VCoor->next;
}
sign1=ALIST2->arch->LIn->In->vert->sign;
VCoor=VCoorL;
while (VCoor!=NULL)
{
if (VCoor->sign==sign1 )
{
x2=VCoor->X;
y2=VCoor->Y;
n2=sign1;
}
VCoor=VCoor->next;
}
painter.drawLine(x1,y1,x2,y2);
ALIST2 = ALIST2->next;
}
vert2 = vert2->next;
}
QPainter p3(this);
QBrush brush1 = QBrush(Qt::darkCyan,Qt::SolidPattern);
p3.setBrush(brush1);
VCoor=VCoorL;
while (VCoor!=NULL)
{
p3.drawRect(VCoor->X-15,VCoor->Y-15,30,30);
VCoor=VCoor->next;
}
QPainter p4(this);
QPen penB2(Qt::white);
p4.setPen(penB2);
p4.setFont(QFont("Times", 14));
VCoor=VCoorL;
while (VCoor!=NULL)
{
QString text=(QString)VCoor->type;
p4.drawText(VCoor->X-8,VCoor->Y+8,text);
VCoor=VCoor->next;
}
}
void MainWindow::StartDraw()
{
f=true;
struct list* names1;
struct list* names2;
g1=(struct descG*)malloc(sizeof(struct descG));
g1->next=NULL;
g1->prev=NULL;
g1->sign=0;
g2=(struct descG*)malloc(sizeof(struct descG));
g2->next=NULL;
g2->prev=NULL;
g2->sign=0;
names1=InNames1();
names2=InNames2();
g1=Graph(g1,names1,4,2,1);
g2=Graph(g2,names2,6,4,2);
g1->next=NULL;
g2->next=NULL;
}
void MainWindow::Grab()
{
QPixmap okno = QPixmap::grabWidget(this,0,0,800,600);
okno.save("/var/www/screen.jpg","JPG",100);
}
void MainWindow::keyPressEvent(QKeyEvent *e)
{
switch(e->key())
{
case Qt::Key_W: zoomIn(2); break;
case Qt::Key_S: zoomOut(2); break;
case Qt::Key_Up: moveUp(10);break;
case Qt::Key_Down: moveDown(10);break;
case Qt::Key_Right: moveRight(10); break;
case Qt::Key_Left: moveLeft(10); break;
case Qt::Key_Escape: Close(); break;
}
}
void MainWindow::moveLeft(int k)
{
f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->X-=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::moveRight(int k)
{f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->X+=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::moveUp(int k)
{f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->Y-=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::moveDown(int k)
{f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->Y+=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::zoomIn(int k)
{f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->X*=k;
VCoor->Y*=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::zoomOut(int k)
{f=false;
VCoor=VCoorL;
while (VCoor!=NULL)
{
VCoor->X/=k;
VCoor->Y/=k;
VCoor=VCoor->next;
}
this->repaint();
}
void MainWindow::Close()
{
this->~MainWindow();
}
Размещено на Allbest.ru
Подобные документы
Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.
курсовая работа [215,3 K], добавлен 01.09.2010Анализ предметной области, формулировка общих и специальных требований к информационной системе с адаптивным интерфейсом. Разработка структур данных, программного обеспечения, модуля бизнес-логики, клиентского приложения; администрирование сервера.
дипломная работа [2,5 M], добавлен 20.07.2014Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.
реферат [2,2 M], добавлен 07.03.2012Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Структурная диаграмма программного модуля. Нахождение суммы элементов, находящихся над главной диагональю. Реализация программного модуля: код программы; описание использованных операторов и функций. Особенности тестирования программного модуля.
курсовая работа [146,6 K], добавлен 01.09.2010Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.
курсовая работа [874,7 K], добавлен 27.02.2013Разработка структурной диаграммы программного модуля. Представление схемы для основных расчетов выбранного приложения для создания прямоугольной матрицы. Особенности создания пользовательского интерфейса. Тестирование и отладка спроектированного модуля.
курсовая работа [648,4 K], добавлен 27.05.2015Описание разрабатываемой программы с точки зрения пользователя и программиста. Поэтапная разработка программной системы. Создание базы данных в Access. Разработка структуры классов. Создание структуры для хранения данных. Проектирование интерфейса.
курсовая работа [1,4 M], добавлен 07.08.2013Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.
дипломная работа [3,2 M], добавлен 27.10.2017