diagram.cpp

来自「1.通过鼠标拖拽和弹出对话框完成实体、属性、联系的绘制以及各参数设定 2.对绘」· C++ 代码 · 共 107 行

CPP
107
字号
#include "StdAfx.h"
#include "Diagram.h"
Diagram::Diagram()
{
	count=0;
	this->firstElement=NULL;
	this->selected=NULL;
}
void Diagram::removeElement(Element *a)
{
	count--;
	Element* first=this->firstElement;
	if(first==a)
	{
		firstElement=first->nextelement;
		return;
	}
	while(first->nextelement!=NULL)
	{
		if(first->nextelement==a)
		{
			first->nextelement=a->nextelement;
			return;
		}
		first=first->nextelement;
	}
}
void Diagram::addElement(Element* a)
{
	count++;
	Element* first=this->firstElement;
	if(first==NULL)
	{
		firstElement=a;
		return;
	}
	while(first->nextelement!=NULL)
	{
		first=first->nextelement;
	}
    first->nextelement=a;
}
void Diagram::paint(CDC& g)
{
	Element *first=this->firstElement;
	while(first!=NULL)
	{
		first->paint(g);
		first=first->nextelement;
	}
}
int Diagram::have(CString name)
{
   int x=0;
   Element *first=this->firstElement;
   while(first!=NULL)
   {
	   if(first->name==name)
	   {
		   x=1;
		   break;
	   }
	   first=first->nextelement;
   }
   return x;
}
Element* Diagram::father(CString name,int x)
{
    Element* father=NULL;
	Element *first=this->firstElement;
	while(first!=NULL)
	{
		if(x==1)
		{
			if(first->name==name&&(first->type==1||first->type==2))
			{
		    	father=first;
		    	break;
			}
		}
		else if(x==2)
		{
	    	if(first->name==name&&(first->type==1))
			{
		    	father=first;
		    	break;
			}
		}
        first=first->nextelement;
	}
	return father;	
}
void Diagram::Delete()
{
	Element *first=this->firstElement;
	if(first==NULL)
	{
		return;
	}
	while(first->nextelement!=NULL)
	{
		 Element* e=first->nextelement;
         this->removeElement(e);
		 delete(e);
	}
	firstElement=NULL;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?