这个程序中删除总是删不对,应该怎么改
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 20 struct Guest { char name[10];//姓名 int num;//订餐号 char time[20];//时间 char place[10];//地点 char food[100];//食物 char tel[20];//电话 }g[MAX]; void order(int *count) { int i=0;int sum;//人数 FILE*fp; if((fp=fopen("F:\\订餐系统\\课程设计数据.txt","a"))==NULL) {printf("文件打开失败\n"); exit(0); } printf("请输入客户姓名\n:"); scanf("%s",g[i].name); fprintf(fp,"姓名:%s\t",g[i].name); printf("请输入用餐人数:\n"); scanf("%d",&sum); if(sum>MAX) printf("对不起,本店暂时没有太大包间。"); else { fprintf(fp,"人数:%d\t",sum); printf("请输入用餐地点:包间、大厅\n"); scanf("%s",&g[i].place); fprintf(fp,"地点:%s\t",g[i].place); printf("请输入用餐时间:\n"); scanf("%s",&g[i].time); fprintf(fp,"时间:%s\t",g[i].time); printf("************************************************************************\n"); printf("1、盖浇饭 \t2、拉面 \n3、面食 \t4、特色小菜\n"); printf("请选择菜单:\n"); scanf("%s",&g[i].food);//多选时,选项之间不能是空格。 fprintf(fp,"菜单号:%s\t",g[i].food); printf("请输入客户电话:\n"); scanf("%s",&g[i].tel); fprintf(fp,"电话:%s\n",g[i].tel); printf("订餐成功!\n"); printf("您的订餐号是:%s\n",g[i].tel); } fclose(fp); FILE *fp1; switch(*count) { case 0:if((fp1=fopen("f:\\订餐系统\\用户信息0.txt","w+"))==NULL) { printf("用户信息0文件打开失败!"); exit(0); }break; case 1:if((fp1=fopen("f:\\订餐系统\\用户信息1.txt","w+"))==NULL) { printf("用户信息1文件打开失败!"); exit(0); }break; case 2:if((fp1=fopen("f:\\订餐系统\\用户信息2.txt","w+"))==NULL) { printf("用户信息2文件打开失败!"); exit(0); }break; case 3:if((fp1=fopen("f:\\订餐系统\\用户信息3.txt","w+"))==NULL) { printf("用户信息3文件打开失败!"); exit(0);}break; case 4:if((fp1=fopen("f:\\订餐系统\\用户信息4.txt","w+"))==NULL) { printf("用户信息4文件打开失败!"); exit(0);}break; default:printf("无多余空间!"); } fprintf(fp1,"姓名:%s\n",g[i].name); fprintf(fp1,"人数:%d\n",sum); fprintf(fp1,"地点:%s\n",g[i].place); fprintf(fp1,"用餐时间:%s\n",g[i].time); fprintf(fp1,"食物:%s\n",g[i].food); fprintf(fp1,"电话:%s\n",g[i].tel); fclose(fp1); (*count)++; } void search() { FILE*fp; char Name[10]; int line; char str[1024]; if((fp=fopen("F:\\订餐系统\\课程设计数据.txt","r"))==NULL) {printf("文件打开失败\n"); exit(0); } printf("请输入客户姓名或订餐号:"); scanf("%s",&Name); while(fgets(str,sizeof(str),fp)) { line++; if(strstr(str,Name)) { printf("您的订单如下:\n"); printf("%s",str); fclose(fp); } } fclose(fp);//printf("对不起,您还未下订单!\n");这句不能完全作用,暂时舍弃。 } void del(int *count) { int n; FILE*fp; char Name[10]; int line; char str[1024]; if((fp=fopen("F:\\订餐系统\\课程设计数据.txt","r"))==NULL) {printf("文件打开失败\n"); exit(0); } printf("请输入客户姓名或订餐号:"); scanf("%s",&Name); while(fgets(str,sizeof(str),fp)) { line++; if(strstr(str,Name)) { printf("您的订单如下:\n"); printf("%s",str); printf("是否删除该订单?\n"); printf("1、是,2、否\n"); scanf("%d",&n); switch(n) { case 1: switch(*count) { case 0:if(remove("f:\\订餐系统\\用户信息0.txt")==0) printf("删除成功\n"); else printf("删除失败\n");break; case 1:if(remove("f:\\订餐系统\\用户信息1.txt")==0) printf("删除成功\n"); else printf("删除失败\n");break; case 2:if(remove("f:\\订餐系统\\用户信息2.txt")==0) printf("删除成功\n"); else printf("删除失败\n");break; case 3:if(remove("f:\\订餐系统\\用户信息3.txt")==0) printf("删除成功\n"); else printf("删除失败\n");break; case 4:if(remove("f:\\订餐系统\\用户信息4.txt")==0) printf("删除成功\n"); else printf("删除失败\n");break; };break;//删除相关信息 case 2:break; } } } (*count)--; } void evaluate() { int c; FILE*fp; char Name[10]; int line; char str[1024]; if((fp=fopen("F:\\订餐系统\\课程设计数据.txt","r"))==NULL)//r+格式不确定 {printf("文件打开失败\n"); exit(0); } printf("请输入客户姓名:"); scanf("%s",&Name); while(fgets(str,sizeof(str),fp)) { line++; if(strstr(str,Name)) { printf("您的订单如下:\n"); printf("%s",str); fprintf(fp,Name); printf("请输入客户评价:\n"); printf("1、★ \n"); printf("2、★★ \n"); printf("3、★★★ \n"); printf("4、★★★★ \n"); printf("5、★★★★★\n"); do { scanf("%d",&c); if(c!=1&&c!=2&&c!=3&&c!=4&&c!=5) puts("输入有错,请重新输入!\n"); }while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5); switch(c) { case 1:fprintf(fp,"用户评价: ★ \n");break; case 2:fprintf(fp,"用户评价: ★★ \n");break; case 3:fprintf(fp,"用户评价: ★★★ \n");break; case 4:fprintf(fp,"用户评价: ★★★★ \n");break; case 5:fprintf(fp,"用户评价: ★★★★★\n");break; } fclose(fp); puts("评价成功!\n"); } } fclose(fp); } int main() { int n,count=0; do { printf("\t\1(^o^)订餐系统\1\n"); printf("\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n"); printf("\n"); printf("*********************************************\n"); printf("1--用户订餐\t2--删除订单\n3--查询订单\t4--用户评价\n5--退出\n"); printf("*********************************************\n"); printf("\n"); printf("请选择服务类型:\n"); scanf("%d",&n); while(n>5) { printf("输入错误!!!\n请重新选择服务类型:\n"); scanf("%d",&n); } if(n==1) order(&count); if(n==2) del(&count); if(n==3) search(); if(n==4) evaluate(); if(n==5) printf("欢迎再次光临!"); }while(n!=5); return 0; } 我想的是可以删除对应的用户信息
[此贴子已经被作者于2016-9-7 09:48编辑过]