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

📄 索引.cpp

📁 数据库,实现对主关键字的索引功能。 实现对其它关键字的索引功能。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include"stdio.h"
#include"ctype.h"
#include"iostream.h"
#include"iomanip.h"
#include"string.h"
#include"stdlib.h"
typedef struct student
{
	char s[3];
	char sname[10];
	int age;
	char sex;
}s2;
s2 s0[6];
typedef struct study
{
	char s[3];
	char c[3];
	int grade;
	int mark;
}z2;
z2 z0[17];
typedef struct course
{
	char c[3];
	char cname[10];
	char teacher[10];
}c2;
c2 c0[5];
typedef struct da
{
	char date[10];
	s2 *ps[10];
	z2 *pz[10];
	c2 *pc[10];
}date;
typedef struct in
{
  struct in *left;
  date  only;
  struct in *right;
}index;
index head[10];
index *p,*s1,*fu;
int indexcount,num1,num2;
char index_name[10][10];



void main()
{
  
  int y;
 
  void display();
  void intinal();
  void create_index();
  void del_index();
  void _select();
  void connect();
  intinal();
  indexcount=0;
  
 l: display();
    cout<<"请选择:";
  cin>>y;
  switch(y)
  {case 1:
      create_index();goto l;
  case 2:
	  del_index();goto l;
  case 3:
	  _select();goto l;
  case 4:
      connect();goto l;
  case 0:
	   exit(0);
  default:
	  cout<<"选择错误!请重新输入选择!"<<endl;goto l;
  }
   
}
void create_index()
{   
    int findshuxing(char name[10],char tablename);
	int result,i,bijiao,j,dd;
	char indexname[10],tablename,shuxingname[10],k[10];
	cout<<"请输入您要新建索引名:";
	cin>>indexname;
	cout<<"请输入索引所建在的表名:";
l:	cin>>tablename;
	if(tablename!='s'&&tablename!='z'&&tablename!='c')
	{cout<<"不存在该表,需重新输入!"<<endl;goto l;}
l1:	cout<<"请输入索引的属性名:";
	cin>>shuxingname;
    result=findshuxing(shuxingname,tablename);
	if(result==0) {cout<<"表"<<tablename<<"不存在属性"<<shuxingname<<"需重新输入!"<<endl;goto l1;}
    strcpy(index_name[indexcount],indexname);
	if(tablename=='s')
	{    if(!strcmp(shuxingname,"s"))
        	{  s2 *place;
		       strcpy(head[indexcount].only.date,s0[0].s);
			   head[indexcount].only.ps[0]=&s0[0];
			   head[indexcount].only.pc[0]=NULL;
               head[indexcount].only.pz[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<6;i++)
			   {
				   strcpy(k,s0[i].s);
				   place=&s0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.ps[0]=place;
										   s1->only.pc[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.ps[0]=place;
										   s1->only.pc[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					        cout<<"出错!"<<endl;
				   }
			   }
	        }
	 if(!strcmp(shuxingname,"sname"))
        	{  s2 *place;
		       strcpy(head[indexcount].only.date,s0[0].sname);
			   head[indexcount].only.ps[0]=&s0[0];
			   head[indexcount].only.pc[0]=NULL;
               head[indexcount].only.pz[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<6;i++)
			   {
				   strcpy(k,s0[i].sname);
				   place=&s0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					   cout<<bijiao<<endl;
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.ps[0]=place;
										   s1->only.pc[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.ps[0]=place;
										   s1->only.pc[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					        cout<<"出错!"<<endl;
				   }
			   }
	        }


	   indexcount++;cout<<"*************恭喜:第"<<indexcount<<"个索引"<<index_name[indexcount]<<"已经创建成功!************"<<endl;
	}
 else if(tablename=='c')
	{    if(!strcmp(shuxingname,"c"))
        	{  c2 *place;
		       strcpy(head[indexcount].only.date,c0[0].c);
			   head[indexcount].only.pc[0]=&c0[0];
			   head[indexcount].only.ps[0]=NULL;
               head[indexcount].only.pz[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<5;i++)
			   {
				   strcpy(k,c0[i].c);
				   place=&c0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					        cout<<"出错!"<<endl;
				   }
			   }
	        }
	 if(!strcmp(shuxingname,"cname"))
        	{  c2 *place;
		       strcpy(head[indexcount].only.date,c0[0].cname);
			   head[indexcount].only.pc[0]=&c0[0];
			   head[indexcount].only.ps[0]=NULL;
               head[indexcount].only.pz[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<5;i++)
			   {
				   strcpy(k,c0[i].cname);
				   place=&c0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					  
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					        cout<<"出错!"<<endl;
				   }
			   }
 
	        }
	  if(!strcmp(shuxingname,"teacher"))
        	{  c2 *place;
		       strcpy(head[indexcount].only.date,c0[0].teacher);
			   head[indexcount].only.pc[0]=&c0[0];
			   head[indexcount].only.ps[0]=NULL;
               head[indexcount].only.pz[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<5;i++)
			   {
				   strcpy(k,c0[i].teacher);
				   place=&c0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					  
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pc[0]=place;
										   s1->only.ps[0]=NULL;
										   s1->only.pz[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					        cout<<"出错!"<<endl;
				   }
			   }
 
	        }
	 indexcount++;cout<<"第"<<indexcount<<"个索引"<<index_name[indexcount]<<"已经创建成功!"<<endl;
	 }
	 else if(tablename=='z')
	{    if(!strcmp(shuxingname,"s"))
        	{  z2 *place;
		       strcpy(head[indexcount].only.date,z0[0].s);
			   head[indexcount].only.pz[0]=&z0[0];
			   head[indexcount].only.ps[0]=NULL;
               head[indexcount].only.pc[0]=NULL;
               head[indexcount].left=NULL;
			   head[indexcount].right=NULL;
			   for(i=1;i<17;i++)
			   {   num1=1;num2=1;
				   strcpy(k,z0[i].s);
				   place=&z0[i];
				   p=&head[indexcount];
				   fu=p;
				   while(p!=NULL)
				   {
					   bijiao=strcmp(k,p->only.date);
					   if(bijiao==-1)
					   {
										   if(p->left!=NULL) {fu=p;p=p->left;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pz[0]=place;
										   s1->only.pz[1]=NULL;
										   s1->only.pz[2]=NULL;
										   s1->only.pz[3]=NULL;
										   s1->only.pz[4]=NULL;
										   s1->only.ps[0]=NULL;
										   s1->only.pc[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->left=s1;
										   p=NULL;
										   }
					   }
					   else if(bijiao==1)
					   {
                                           if(p->right!=NULL) {fu=p;p=p->right;}
										   else
										   {
										   s1=(index *)malloc(sizeof(index));
										   strcpy(s1->only.date,k);
										   s1->only.pz[0]=place;
										     s1->only.pz[1]=NULL;
										   s1->only.pz[2]=NULL;
										   s1->only.pz[3]=NULL;
										   s1->only.pz[4]=NULL;
										   s1->only.ps[0]=NULL;
										   s1->only.pc[0]=NULL;
										   s1->left=NULL;
										   s1->right=NULL;
										   p->right=s1;
										   p=NULL;
										   }
					   }
					   else 
					   {                   
					                        for(j=0;j<5;j++)
											{
												if(p->only.pz[j]==NULL)
												{

⌨️ 快捷键说明

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