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

📄 dml.h

📁 c语言编写的微型数据库 实现了插入、删除、更新等基本功能
💻 H
📖 第 1 页 / 共 4 页
字号:
                        else 
                        {
                            fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                            
                            printf("%-10d",k);
                            
                            fwrite(&k,sizeof(int),1,fp);
                        }
                    }
                }
                printf("\n");
                
            }
            

            else  /* 不满足删除条件的写入临时新文件 */
            {
                fseek(WA[0]->DbFi_P,HeadSize+(m-1)*WA[0]->RecLen,SEEK_SET);
                
                for(j=1;j<=WA[0]->FldNum;j++)
                
                {
                    if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                    
                    {
                        fread(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                        
                        fwrite(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                        
                    }
                    else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                    
                    {
                        fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                        
                        fwrite(&f,sizeof(float),1,fp);
                        
                    }
                    else 
                    {
                        fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                        
                        fwrite(&k,sizeof(int),1,fp);
                    }
                }
            }
            
            break ;
            case 4 :
            
            if(strcmp(Compare_C(ch,Condition),Condition.OPTR)==0)
            {
                fseek(WA[0]->DbFi_P,HeadSize+(m-1)*WA[0]->RecLen,SEEK_SET);
                
                for(j=1;j<=WA[0]->FldNum;j++)
                
                {
                    
                    if(strcmp(WA[0]->FldInfor_P[j-1].FldName,Condition1.WhichFld)==0)
                    {
                        if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                        
                        {
                            fread(ch,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                            
                            printf("%-10s",Condition1.Value);
                            
                            fwrite(Condition1.Value,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                            
                        }
                        else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                        
                        {
                            fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                            
                            if(strcmp(Condition1.OPTR,"+")==0)
                            {
                                f=f+atof(Condition1.Value);
                                
                            }
                            else if(strcmp(Condition1.OPTR,"-")==0)
                            {
                                f=f-atof(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"*")==0)
                            {
                                f=f*atof(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"/")==0)
                            {
                                f=f/atof(Condition1.Value);
                                
                            }
                            
                            else f=atof(Condition1.Value);
                            
                            printf("%-10f",f);
                            
                            fwrite(&f,sizeof(float),1,fp);
                            
                        }
                        else 
                        {
                            fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                            
                            if(strcmp(Condition1.OPTR,"+")==0)
                            {
                                k=k+atoi(Condition1.Value);
                                
                            }
                            else if(strcmp(Condition1.OPTR,"-")==0)
                            {
                                k=k-atoi(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"*")==0)
                            {
                                k=k*atoi(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"/")==0)
                            {
                                k=k/atoi(Condition1.Value);
                                
                            }
                            else k=atoi(Condition1.Value);
                            
                            printf("%-10d",k);
                            
                            fwrite(&k,sizeof(int),1,fp);
                        }
                        
                    }
                    
                    else 
                    {
                        if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                        
                        {
                            fread(ch,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                            
                            printf("%-10s",ch);
                            
                            fwrite(ch,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                            
                        }
                        else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                        
                        {
                            fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                            
                            printf("%-10f",f);
                            
                            fwrite(&f,sizeof(float),1,fp);
                            
                        }
                        else 
                        {
                            fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                            
                            printf("%-10d",k);
                            
                            fwrite(&k,sizeof(int),1,fp);
                        }
                    }
                }
                printf("\n");
                
            }
            

            else /* 不满足删除条件的写入临时新文件 */
            {
                fseek(WA[0]->DbFi_P,HeadSize+(m-1)*WA[0]->RecLen,SEEK_SET);
                
                for(j=1;j<=WA[0]->FldNum;j++)
                
                {
                    if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                    
                    {
                        fread(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                        
                        fwrite(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                        
                    }
                    else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                    
                    {
                        fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                        
                        fwrite(&f,sizeof(float),1,fp);
                        
                    }
                    else 
                    {
                        fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                        
                        fwrite(&k,sizeof(int),1,fp);
                    }
                }
            }
            
            break ;
            
            case 5 :
            
            if(strcmp(Compare_F(f,Condition),Condition.OPTR)==0)
            {
                fseek(WA[0]->DbFi_P,HeadSize+(m-1)*WA[0]->RecLen,SEEK_SET);
                
                for(j=1;j<=WA[0]->FldNum;j++)
                
                {
                    
                    if(strcmp(WA[0]->FldInfor_P[j-1].FldName,Condition1.WhichFld)==0)
                    {
                        if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                        
                        {
                            fread(ch,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                            
                            printf("%-10s",Condition1.Value);
                            
                            fwrite(Condition1.Value,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                            
                        }
                        else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                        
                        {
                            fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                            
                            if(strcmp(Condition1.OPTR,"+")==0)
                            {
                                f=f+atof(Condition1.Value);
                                
                            }
                            else if(strcmp(Condition1.OPTR,"-")==0)
                            {
                                f=f-atof(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"*")==0)
                            {
                                f=f*atof(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"/")==0)
                            {
                                f=f/atof(Condition1.Value);
                                
                            }
                            else f=atof(Condition1.Value);
                            
                            printf("%-10f",f);
                            
                            fwrite(&f,sizeof(float),1,fp);
                            
                        }
                        else 
                        {
                            fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                            
                            if(strcmp(Condition1.OPTR,"+")==0)
                            {
                                k=k+atoi(Condition1.Value);
                                
                            }
                            else if(strcmp(Condition1.OPTR,"-")==0)
                            {
                                k=k-atoi(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"*")==0)
                            {
                                k=k*atoi(Condition1.Value);
                            }
                            else if(strcmp(Condition1.OPTR,"/")==0)
                            {
                                k=k/atoi(Condition1.Value);
                                
                            }
                            else k=atoi(Condition1.Value);
                            
                            printf("%-10d",k);
                            
                            fwrite(&k,sizeof(int),1,fp);
                        }
                        
                    }
                    
                    else 
                    {
                        if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                        
                        {
                            fread(ch,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                            
                            printf("%-10s",ch);
                            
                            fwrite(ch,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                            
                        }
                        else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                        
                        {
                            fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                            
                            printf("%-10f",f);
                            
                            fwrite(&f,sizeof(float),1,fp);
                            
                        }
                        else 
                        {
                            fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                            
                            printf("%-10d",k);
                            
                            fwrite(&k,sizeof(int),1,fp);
                        }
                    }
                }
                printf("\n");
                
            }
            

            else  /* 不满足更新条件的写入临时新文件 */
            {
                fseek(WA[0]->DbFi_P,HeadSize+(m-1)*WA[0]->RecLen,SEEK_SET);
                
                for(j=1;j<=WA[0]->FldNum;j++)
                
                {
                    if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"char")==0)
                    
                    {
                        fread(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,WA[0]->DbFi_P);
                        
                        fwrite(ch1,1,WA[0]->FldInfor_P[j-1].FldLen,fp);
                        
                    }
                    else if(strcmp(WA[0]->FldInfor_P[j-1].FldClass,"float")==0)
                    
                    {
                        fread(&f,sizeof(float),1,WA[0]->DbFi_P);
                        
                        fwrite(&f,sizeof(float),1,fp);
                        
                    }
                    else 
                    {
                        fread(&k,sizeof(int),1,WA[0]->DbFi_P);
                        
                        fwrite(&k,sizeof(int),1,fp);
                    }
                }
            }
            
            break ;
            
            default :
            break ;
        }
        
    }

    if(remove(Tem)!=0)  /* 删除旧文件 */
    {
        perror("remove");
    }
    
    rename("TEP.TXT",Tem); /* 将临时新文件名更新为旧文件名 */

    fclose(fp);
    
    fclose( WA[0]->DbFi_P);

     WA[0]->DbFi_P=NULL; /* 关关闭数据文件*/

    WA[0]=NULL;


}

/* ------------------------------------------------------------------- */
Do_Help(){

     clrscr();

     textbackground(BLUE);

     textcolor(YELLOW);

     puts("The Command Line Format are as follows:");

     puts("1.create table tablename (FldName FldClass FldLen,...)");

     puts("eg:create table stu (name char 10,age int 2,score float 2 2)\n");

     puts("2.drop table tablename    eg:drop table stu\n");

     puts("3.insert into table tablename values (value1,value2,...)");

     puts("eg:insert into table stu values (wang,21,89.5)\n");

     puts("4.select * from table  tablename (where condition)");

     puts("  select Fld1,Fld2.. from table tablename (where condition)");

     puts("eg:select * from table stu (where score<98)\n");

     puts("5.update table tablename Expression(where condition)");

     puts("eg:update table stu score=score+5 (where score<60)\n");

     puts("6.delete table tablename (where condition)");

     puts("eg:delete table stu (where name=wang)\n");

     puts("!!!WARNING:If Your Iuputs Do Not Fit Those Formats,You Will Not Get The Right   Results!");
}
#endif 
/* ------------------------------------------------------------------ */

⌨️ 快捷键说明

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