//删除一个记录
void Deletelog(FILE *cfptr)
{
FILE *fp1;
struct LogData log[1000],*plog=log;/*假定文件不超过 1000 记录*/
long logcount,logid,i,index=-1;
printf("Input LogID:");
scanf("%ld",&logid);/*输入要删除的记录 ID*/
/*查找帐户号是否存在,若存在则更新*/
logcount=getLogcount(cfptr);/*获取记录数*/
rewind(cfptr);
fread(plog,size,logcount,cfptr);
for(i=0;i<logcount;i++)
{
if(logid==log[i].logid) /*已经找到*/
{/*显示当前记录*/
printf("logid logdate lognote charge balance\n");
/*输出当前记录*/
printf("%6ld %-11s %-15s %10.2lf %10.2lf\n",
log[i].logid,log[i].logdate,log[i].lognote,log[i].charge,log[i].balance);
index=i;
getch();
break;
}
}
rewind(cfptr);
for(i=index;i<=logcount-1;i++)
{
log[i].logid=i+1;
strcpy(log[i].logdate,log[i+1].logdate);
strcpy(log[i].lognote,log[i+1].lognote);
log[i].charge=log[i+1].charge;
log[i].balance=log[i-1].balance+log[i].charge;
}
printf("logid logdatelognote charge balance\n");
for(i=0;i<logcount-1;i++)
{
/*输出当前记录*/
printf("%6ld %-11s %-15s %10.2lf %10.2lf\n",
log[i].logid,log[i].logdate,log[i].lognote,log[i].charge,log[i].balance);
}
getch();
fp1=fopen("cashbox.dat", "wb+");
fwrite(plog,size,logcount-1,fp1);/*写回去更新*/
fclose(fp1);
printf("Press any key to continue...");
getch();
}
int main(void){
FILE *fp;int choice;
if((fp=fopen("cashbox.dat","ab+"))==NULL){
printf("can not open file cashbox.dat!\n");
exit(0);
}
size=sizeof(struct LogData);
choice=inputchoice();
while(choice!=0){
switch(choice){
case 1:
fp=fopen("cashbox.dat","ab+");
AddNewLog(fp);break;
case 2:
fp=fopen("cashbox.dat","ab+");
ListAllLog(fp);break;
case 3:
fp=fopen("cashbox.dat","ab+");
QueryLastLog(fp);break;
case 4:
fp=fopen("cashbox.dat","ab+");
Updatelog(fp);break;
case 5:
fp=fopen("cashbox.dat","ab+");
Deletelog(fp);break;
default:
printf("Input Error!");break;
}
}
if(fclose(fp)){
printf("Can not close the file\n");
exit(0);
}
}