📄 change.cpp
字号:
#include "StdAfx.h"
#include "change.h"
char a=13;
char b=10;
Change::Change(Diagram* diagram)
{
myresult="";
temp="";
foreign=0;
this->diagram=diagram;
}
CString Change::change()
{
int count=0;
int count1=0;
int count2=0;
Element* first=diagram->firstElement;
while(first!=NULL)
{
myresult="";
foreign=0;
if(first->type==1)
{
MyEntity* my=(MyEntity* )first;
myresult=myresult+"create table "+first->name+a+b+"("+a+b;
Attribute* afirst=my->firstAttribute;
if(afirst==NULL)
{
return "entity must have attribute";
}
while(afirst!=NULL)
{
count++;
if(afirst->flag==1)
{
myresult=myresult+afirst->name+" "+afirst->nametype+" ";
if(afirst->canempty==2)
{
myresult=myresult+"not null"+" ";
}
myresult=myresult+","+a+b;
}
afirst=afirst->next;
}
// return myresult;
Redata* rfirst=my->firstRelation;
if(rfirst==NULL)
{
return myresult+"null";
}
while(rfirst!=NULL)
{
count1++;
if((rfirst->data->flag==1&&rfirst->data->entity2==my)||
(rfirst->data->flag==2&&rfirst->data->entity2==my)||
(rfirst->data->flag==3&&rfirst->data->entity1==my)||
(rfirst->data->flag==5&&rfirst->data->entity2==my)
)
{
// return myresult+"null555";
Attribute* firstmain;
if(rfirst->data->entity1==my)
{
rfirst->data->entity2->emptymain();
firstmain=rfirst->data->entity2->mainkey();
}
else
{
rfirst->data->entity1->emptymain();
firstmain=rfirst->data->entity1->mainkey();
}
while(firstmain!=NULL)
{
CString str=firstmain->name;
if(rfirst->data->entity1==rfirst->data->entity2)
{
str=my->name+"_"+firstmain->name;
}
myresult=myresult+str+" "+firstmain->nametype+" ";
if(firstmain->canempty==2)
{
myresult=myresult+"not null"+" ";
}
myresult=myresult+","+a+b;
firstmain=firstmain->nextmain;
}
Attribute* rattribute=rfirst->data->firstAttribute;
if(rattribute!=NULL)
{
while(rattribute!=NULL)
{
if(rattribute->flag==1)
{
myresult=myresult+rattribute->name+" "+rattribute->nametype+" ";
if(rattribute->canempty==2)
{
myresult=myresult+"not null"+" ";
}
myresult=myresult+","+a+b;
}
rattribute=rattribute->next;
}
}
}
rfirst=rfirst->next;
}
// return myresult+"null44";
my->emptymain();
Attribute* firstmain=my->mainkey();
if(firstmain==NULL)
{
return "entity must have mainkey";
// return myresult+"null44";
}
myresult=myresult+"primary key(";
// return myresult+"null";
while(firstmain!=NULL)
{
myresult=myresult+firstmain->name+",";
firstmain=firstmain->nextmain;
}
if(my->flag==2)
{
MyEntity* oe=my->firstRelation->data->entity1;
oe->emptymain();
Attribute* omain=oe->mainkey();
while(omain!=NULL)
{
myresult=myresult+omain->name+",";
omain=omain->nextmain;
}
}
myresult.SetAt(myresult.GetLength()-1,')');
myresult=myresult+","+a+b;
// return myresult;
rfirst=my->firstRelation;
while(rfirst!=NULL)
{
if((rfirst->data->flag==1&&rfirst->data->entity2==my)||
(rfirst->data->flag==2&&rfirst->data->entity2==my)||
(rfirst->data->flag==3&&rfirst->data->entity1==my)||
(rfirst->data->flag==5&&rfirst->data->entity2==my)
)
{
MyEntity* en;
if(rfirst->data->entity1==my)
{
rfirst->data->entity2->emptymain();
firstmain=rfirst->data->entity2->mainkey();
en=rfirst->data->entity2;
}
else
{
rfirst->data->entity1->emptymain();
firstmain=rfirst->data->entity1->mainkey();
en=rfirst->data->entity1;
}
while(firstmain!=NULL)
{
foreign=1;
CString str=firstmain->name;
if(rfirst->data->entity2==rfirst->data->entity1)
{
str=my->name+"_"+firstmain->name;
}
myresult=myresult+"foreign key ("+str+")"
+" REFERENCES "+en->name+"("+firstmain->name+"),"+a+b;
firstmain=firstmain->nextmain;
}
}
rfirst=rfirst->next;
}
// return myresult;
myresult.SetAt(myresult.GetLength()-3,')');
myresult.SetAt(myresult.GetLength()-2,' ');
myresult.SetAt(myresult.GetLength()-1,' ');
myresult=myresult+";"+a+b;
// return myresult;
}
else if(first->type==2)
{
Relation *relation=(Relation*)first;
if(relation->flag==4)
{
myresult=myresult+"create table "+first->name+a+b+"("+a+b;
Attribute* afirst=relation->firstAttribute;
if(afirst!=NULL)
{
while(afirst!=NULL)
{
if(afirst->flag==1)
{
myresult=myresult+afirst->name+" "+afirst->nametype+" ";
if(afirst->canempty==2)
{
myresult=myresult+"not null ";
}
myresult=myresult+","+a+b;
}
afirst=afirst->next;
}
}
relation->entity1->emptymain();
afirst=relation->entity1->mainkey();
{
while(afirst!=NULL)
{
myresult=myresult+afirst->name+" "+afirst->nametype+" ";
if(afirst->canempty==2)
{
myresult=myresult+"not null ";
}
myresult=myresult+","+a+b;
afirst=afirst->nextmain;
}
}
relation->entity2->emptymain();
afirst=relation->entity2->mainkey();
{
while(afirst!=NULL)
{
CString str=afirst->name;
if(relation->entity2==relation->entity1)
{
str=relation->entity1->name+"_"+str;
}
myresult=myresult+str+" "+afirst->nametype+" ";
if(afirst->canempty==2)
{
myresult=myresult+"not null ";
}
myresult=myresult+","+a+b;
afirst=afirst->nextmain;
}
}
relation->entity1->emptymain();
afirst=relation->entity1->mainkey();
while(afirst!=NULL)
{
foreign=1;
myresult=myresult+"foreign key ("+afirst->name+")"
+" REFERENCES "+relation->entity1->name+"("+afirst->name+"),"+a+b;
afirst=afirst->nextmain;
}
relation->entity2->emptymain();
afirst=relation->entity2->mainkey();
while(afirst!=NULL)
{
CString str=afirst->name;
if(relation->entity2==relation->entity1)
{
str=relation->entity1->name+"_"+str;
}
foreign=1;
myresult=myresult+"foreign key ("+str+")"
+" REFERENCES "+relation->entity2->name+"("+afirst->name+"),"+a+b;
afirst=afirst->nextmain;
}
myresult.SetAt(myresult.GetLength()-3,')');
myresult.SetAt(myresult.GetLength()-2,' ');
myresult.SetAt(myresult.GetLength()-1,' ');
myresult=myresult+";"+a+b;
}
}
else if(first->type==3)
{
Attribute* attr=(Attribute* )first;
if(attr->flag==2)
{
myresult=myresult+"create table "+first->name+a+b+"("+a+b;
myresult=myresult+attr->name+" "+attr->nametype+" ";
if(attr->canempty==2)
{
myresult=myresult+"not null ";
}
myresult=myresult+","+a+b;
MyEntity* mye=(MyEntity* ) attr->father;
mye->emptymain();
Attribute* mymain=mye->mainkey();
while(mymain!=NULL)
{
myresult=myresult+mymain->name+" "+mymain->nametype+" ";
if(mymain->canempty==2)
{
myresult=myresult+"not null ";
}
myresult=myresult+","+a+b;
mymain=mymain->nextmain;
}
myresult.SetAt(myresult.GetLength()-3,')');
myresult.SetAt(myresult.GetLength()-2,' ');
myresult.SetAt(myresult.GetLength()-1,' ');
myresult=myresult+";"+a+b;
}
}
if(foreign==0)
{
temp=myresult+temp;
}
else
{
temp=temp+myresult;
}
first=first->nextelement;
}
return temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -