这个程序中删除总是删不对,应该怎么改
程序代码:#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编辑过]









