📄 dml.h
字号:
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 + -