⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbdb.cpp

📁 数据库模拟系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	//对tnew的初始化
	tnew.pro_num=t1->pro_num+t2->pro_num;
	tnew.key_no=0;
	tnew.re_num=0;
	strcpy(tnew.tname,"T");
		for(m=0;m<t1->pro_num;m++)
		strcpy(tnew.proname[m],t1->proname[m]);
	n=m;
	for(m=0;m<t2->pro_num;m++)
		strcpy(tnew.proname[m+n],t2->proname[m]);
//初始化完成
	for(i=0;i<MAX_PRONUM;i++)
		for(j=0;j<MAX_PROLEN;j++)
			prosame[i][j]='\0';		//初始化公共属性数组
	for(j=0;j<t2->pro_num;j++)		//t2 j    t1 i
		for(i=0;i<t1->pro_num;i++) 
			if(strcmp(t1->proname[i],t2->proname[j])==0)
				strcpy(prosame[pronum++],t1->proname[i]);
	//*****************************************
//	printf("******%s  %s******",prosame[0],prosame[1]);
//	getchar();
	//*****************************************运行到这里正确
	//公共属性集合已经确定,准备生成中间表(自然连接,但是有重复属性)
	for(j=0;j<t2->re_num;j++)
		for(i=0;i<t1->re_num;i++)
		{
			for(k=0;k<pronum;k++) 
			{
				if(strcmp(t1->record[i][prosubscript(t1,prosame[k])],
					t2->record[j][prosubscript(t2,prosame[k])])==0)
					continue;
	 			else
					break;
			}
			if(k==pronum)	//把符合自然连接条件的记录都写进来
			{
				for(m=0;m<t1->pro_num;m++)
					strcpy(tnew.record[tnew.re_num][m],t1->record[i][m]);
				n=m;
				printf("\n\nRUNS here\n");
				for(m=0;m<t2->pro_num;m++)
					strcpy(tnew.record[tnew.re_num][m+n],t2->record[i][m]);
				tnew.re_num++;
			}
		}
	//*****************************************建立了中间表,准备删除公共属性
	for(i=0;i<tnew.pro_num;i++)
	{
		for(j=0;j<i;j++)
		{
			if(strcmp(tnew.proname[i],tnew.proname[j])==0)	//删除i列的所有记录
			{
				for(m=i;m<tnew.pro_num-1;m++)
				{
					for(n=0;n<tnew.re_num;n++)
						strcpy(tnew.record[n][m],tnew.record[n][m+1]);
				}
				for(m=i;m<tnew.pro_num-1;m++)
					strcpy(tnew.proname[m],tnew.proname[m+1]);
				tnew.pro_num--;
			}
		}
	}
	return tnew;

}
void exit0()
{
	clrscr();		

        cout<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃                                ┃"<<endl;
	    cout<<"        ┃                                ┃"<<endl;
    	cout<<"        ┃            谢谢使用            ┃"<<endl;
		cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                       张  旭   ┃"<<endl;
		cout<<"        ┃                  06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
	exit(-1);
}
void menutable()
{
l:;
	clrscr();
	char chr;
        cout<<"                      表的操作               "<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单            ┃"<<endl;
	    cout<<"        ┃     1.表的建立    CREATE TABLE ┃"<<endl;
    	cout<<"        ┃     2.表的删除     DROP TABLE  ┃"<<endl;
		cout<<"        ┃     3.表项信息显示 SHOW TABLE  ┃"<<endl;
        cout<<"        ┃     4.保存表        SAVE       ┃"<<endl;
        cout<<"        ┃     5.读取表        LOAD       ┃"<<endl;
    	cout<<"        ┃     0.返回          RETURN     ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                       张  旭   ┃"<<endl;
		cout<<"        ┃                  06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
        cout<<"请选择:";
	cin>>chr;
	switch(chr)
	{
		case '1' :tablecreate();break;
		case '2' :tabledrop();break;
		case '3' :outputts();break;
		case '4' :filewrite();break;
        case '5' :fileread();break;
        case '0' :return;
		default:	
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
}
void menurec()
{
l:;
	clrscr();
	char chr;
        cout<<"                      记录操作               "<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单              ┃"<<endl;
	    cout<<"        ┃     1.记录插入     RECORD INSERT ┃"<<endl;
    	cout<<"        ┃     2.记录删除     RECORD DELETE ┃"<<endl;
		cout<<"        ┃     3.记录查询     RECORD QUERY  ┃"<<endl;
    	cout<<"        ┃     4.记录更改     RECORD UPDATE ┃"<<endl;
    	cout<<"        ┃     0.返回             RETURN    ┃"<<endl;
        cout<<"        ┃                                  ┃"<<endl;
        cout<<"        ┃                         张  旭   ┃"<<endl;
		cout<<"        ┃                    06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━━┛"<<endl;
        cout<<"请选择:";
	cin>>chr;
	switch(chr)
	{
		case '1' :recordinsert();break;
		case '2' :recorddel();break;
		case '3' :outputrec();break;
		case '4' :recordupdate();break;
		case '0' :return;
		default:	
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
}
void yonghulogin()
{
l:;
  clrscr();
char chr;
        cout<<"                      用户操作            "<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单            ┃"<<endl;
        cout<<"        ┃     1.读取数据库    LOAD       ┃"<<endl;
    	cout<<"        ┃     2.查询数据库  RECORD QUERY ┃"<<endl;
	    cout<<"        ┃     3.并操作         Union     ┃"<<endl;
    	cout<<"        ┃     4.交操作         Jiao      ┃"<<endl;
		cout<<"        ┃     5.差操作         DIFFERENCE┃"<<endl;
        cout<<"        ┃     6.投影操作        SHADOW   ┃"<<endl;
        cout<<"        ┃     7.选择操作θ单一   SELECT  ┃"<<endl;
        cout<<"        ┃     8.选择操作AND    SELECT AND┃"<<endl;
        cout<<"        ┃     9.选择操作OR      SELECT OR┃"<<endl;
        cout<<"        ┃    10.选择投影综合 SELECT WHERE┃"<<endl;
        cout<<"        ┃    11.自然/等值连接  NATR/EQUAL┃"<<endl;
    	cout<<"        ┃     0.返回         RETURN      ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                       张  旭   ┃"<<endl;
		cout<<"        ┃                  06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
	
        cout<<"请选择:";
	
	cin>>chr;
	switch(chr)
	{
        case '1' :fileread();break;
		case '2' :outputrec();break;
      	case '3' :relationunion();break;
		case '4' :relationjiao();break;
		case '5' :relationdiff();break;
		case '6' :relationshadow();break;
		case '7' :relationsel0();break;
		case '8' :relationseland();break;
		case '9' :relationselor();break;
		case '10' :relationselwhere();break;
		case '11' :relationconnect();break;
		case '0' :return;
		default:	
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
}
void glylogin()
{ 
    int a,count=0;
l:	cout<<"请输入管理员密码:"<<endl;
	cin>>a;
	if(a==4486)
    {
		system("color 5b");
     	mainmenu();
	}
	else
	{
	
		count+=1;
		
		if(count!=3)
		{ 
           cout<<"你输入的密码不正确...请重新输入..."<<endl;
			cout<<"你还有"<<3-count<<"次输入密码的机会..."<<endl;
         goto l;
		}
		else
		{
			cout<<"你已经3次未输入正确密码,系统自动请您退出...Bye-Bye..."<<endl;
		
		}
	exit(-1);
	}
}
void menurelation()
{
l:;
	clrscr();
	char chr;
        cout<<"                      关系代数            "<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单            ┃"<<endl;
	    cout<<"        ┃     1.并操作         Union     ┃"<<endl;
    	cout<<"        ┃     2.交操作         Jiao      ┃"<<endl;
		cout<<"        ┃     3.差操作         DIFFERENCE┃"<<endl;
        cout<<"        ┃     4.投影操作        SHADOW   ┃"<<endl;
        cout<<"        ┃     5.选择操作θ单一   SELECT  ┃"<<endl;
        cout<<"        ┃     6.选择操作AND    SELECT AND┃"<<endl;
        cout<<"        ┃     7.选择操作OR      SELECT OR┃"<<endl;
        cout<<"        ┃     8.选择投影综合 SELECT WHERE┃"<<endl;
        cout<<"        ┃     9.自然/等值连接  NATR/EQUAL┃"<<endl;
    	cout<<"        ┃     0.返回         RETURN      ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                       张  旭   ┃"<<endl;
		cout<<"        ┃                  06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
	
        cout<<"请选择:";
	
	cin>>chr;
	switch(chr)
	{
      	case '1' :relationunion();break;
		case '2' :relationjiao();break;
		case '3' :relationdiff();break;
		case '4' :relationshadow();break;
		case '5' :relationsel0();break;
		case '6' :relationseland();break;
		case '7' :relationselor();break;
		case '8' :relationselwhere();break;
		case '9' :relationconnect();break;
		case '0' :return;
		default:	
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
}
void mainmenu()
{
l:;
	clrscr();
	char chr;
        cout<<"                    管理员操作              "<<endl;
    	cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单            ┃"<<endl;
	    cout<<"        ┃        1.表的操作              ┃"<<endl;
        cout<<"        ┃        2.记录操作  (增,删,改)┃"<<endl; 
    	cout<<"        ┃        3.关系代数操作          ┃"<<endl;
    	cout<<"        ┃        0.退出                  ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
        cout<<"        ┃                       张  旭   ┃"<<endl;
		cout<<"        ┃                  06软件20064486┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
	
        cout<<"请选择:";
	cin>>chr;
	switch(chr)
	{
		case '1' :menutable();break;
        case '2' :menurec();break;
		case '3' :menurelation();break;
		case '0' :exit0();
		default:
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
}

void login()
{      
	  
		   int a,count=0;
l:	   cout<<"请输入本数据库系统的使用密码:"<<endl;
       cin>>a;
	   if(a==111)
	   {		    
       	clrscr();
       system("color 4e");

	   char chr;
        cout<<"        ┏━━━━━━━━━━━━━━━━┓"<<endl;
		cout<<"        ┃            功能菜单            ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
	    cout<<"        ┃        1.用户登陆              ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl; 
    	cout<<"        ┃        2.管理员登陆            ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
    	cout<<"        ┃        0.退出                  ┃"<<endl;
        cout<<"        ┃                                ┃"<<endl;
		cout<<"        ┗━━━━━━━━━━━━━━━━┛"<<endl;
	 cout<<"请选择:";
	cin>>chr;
	switch(chr)
	{
		case '1' :yonghulogin();break;
        case '2' :glylogin();break;
		case '0' :exit0();
		default:
					printf("输入有误,请重新输入!");
					getchar();
					goto l;
	}
	goto l;
	   }
	   else
{
	
		count+=1;
		
		if(count!=3)
		{ 
           cout<<"你输入的密码不正确...请重新输入..."<<endl;
			cout<<"你还有"<<3-count<<"次输入密码的机会..."<<endl;
         goto l;
		}
		else
		{
			cout<<"你已经3次未输入正确密码,系统自动请您退出...Bye-Bye..."<<endl;
		
		}
	exit(-1);
	}

}


	int main()
	{	
cout<<"^_^系统正在加载数据库及其相关组件.....请等待....."<<endl;
	int times;
	times=44;
    for(int abc=0;abc<times;abc++)
		 {
			 if(abc%2==0)
				 cout<<"\b\b\b\b\b\b"<<"      "<<"\b\b\b\b\b\b";
			  else
				  cout<<"********";
			  for(int j=0;j<50;j++)
				  for(int k=0;k<500;k++)
					  cout<<' '<<'\b';
		 }
     cout<<"数据库加载完成!!!"<<endl; 
		 cout<<"现在是否运行程序?(是-1,否-0)   ";
	 int abcd;
	 cin>>abcd;
	 if(abcd==0)
	 {
		 cout<<endl;
		 cout<<"============================================="<<endl;
         cout<<"期待你下次使用本数据库系统...                                    【张旭制作】"<<endl;
		 cout<<"============================================="<<endl;
		 cout<<endl;
		 cout<<endl;
		 exit(0);
	 }
     clrscr();
     cout<<"〓〓〓〓〓#〓§〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓§〓〓〓〓〓§〓#〓〓〓〓"<<endl;
	 cout<<"              ↓     ↓      ↓     ↓          ↓     "<<endl;
	 cout<<"            ☆★☆   ☆★☆    ☆★☆   ☆★☆      ☆★☆  "<<endl;
	 cout<<"          ☆  数 ☆ ☆ 据 ☆  ☆ 库 ☆ ☆ 系  ☆  ☆ 统  ☆ "<<endl;
	 cout<<"            ☆★☆   ☆★☆    ☆★☆   ☆★☆      ☆★☆   "<<endl;
     cout<<"              ↓     ↓      ↓     ↓          ↓      "<<endl;
	 cout<<"              ※     ※      ※     ※          ※      "<<endl;
	 cout<<"〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓"<<endl;
     cout<<"                                                             【20064486--张旭】"<<endl;
	 cout<<"                                                             ▓▓▓▓▓▓▓▓▓ ";

		initialize();
		login();
        return 0;
}

⌨️ 快捷键说明

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