| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1438 人关注过本帖
标题:这个程序中删除总是删不对,应该怎么改
只看楼主 加入收藏
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:13 
这个程序中删除总是删不对,应该怎么改
程序代码:
#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编辑过]

2016-09-07 09:46
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
收藏
得分:0 
提前谢谢各位了!
2016-09-07 09:49
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
你保存数据的时候,count是0,那么第一个数据保存在用户信息0中,然后count加1,删除的时候,count是1,你删除的是用户信息1,所以会失败
2016-09-07 10:23
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
收藏
得分:0 
回复 3楼 grmmylbs
那应该怎们弄,,我大概明白是怎么错的,但改不好
2016-09-07 10:36
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
设计有 问题,不好改,为啥还要单独保存用户信息?
2016-09-07 10:50
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
收藏
得分:0 
回复 5楼 grmmylbs
题目要求,,单独保存一份客户信息,删除时只删除单独保存的
2016-09-07 10:58
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
那你从 主 文件里读数据没有任何意义啊,要是删除了还是能读到。只能挨个从用户文件里读,读到相同的数据就删除。另外你用strstr来确认用户名的方法也不对,比如名字abc,输入b也能查到。
2016-09-07 11:02
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
收藏
得分:0 
回复 7楼 grmmylbs
那里,现在倒是无所谓,,,,我现在想的就是删除问题,删除问题一解决,其他的我就有办法了。
2016-09-07 11:09
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
只能挨个从用户文件里读了。
2016-09-07 11:09
默看
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-9-1
收藏
得分:0 
回复 9楼 grmmylbs
????
2016-09-07 11:11
快速回复:这个程序中删除总是删不对,应该怎么改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018136 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved