Разработка модуля визуализации компьютерных структур с 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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.