visual stdio 2022程序问题


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void menu();
void fa();
void fb();
void fc();
void fd();
void f1();
void f2();
void f3(int i);
int f4();
struct train
{
    char 车次号[20];
    char 起始地[30];
    char 发车时间[30];
    char 目的地[30];
    int 最多载人;
    int 火车票价;
    char 座次订出与否的标记[30];
    int 已售火车票;
    char 购票人员信息[100][100];
}M[10] = {
{{"G01"},{"兰州"},{"July 1st 10:00am"},{"北京"},150,669,{"已订:100,未订:5"},100},
{{"G02"},{"兰州"},{"July 1st 12:00am"},{"青海"},150,720,{"已订:50,未订:18"},60},
{{"G03"},{"兰州"},{"July 1st 12:30pm"},{"合肥"},150,499,{"已订:25,未订:5"},25},
{{"G04"},{"兰州"},{"July 1st 02:40pm"},{"贵州"},150,549,{"已订:21,未订:9"},21},
{{"G05"},{"兰州"},{"July 1st 03:30pm"},{"合肥"},150,399,{"已订:12,未订:18"},12},
{{"G06"},{"兰州"},{"July 1st 04:20pm"},{"天津"},150,599,{"已订:15,未订:15"},15},
{{"G07"},{"兰州"},{"July 1st 05:40pm"},{"广州"},150,569,{"已订:13,未订:17"},13},
{{"G08"},{"兰州"},{"July 1st 08:30pm"},{"三亚"},150,489,{"已订:17,未订:13"},17},
{{"G09"},{"兰州"},{"July 1st 11:00pm"},{"成都"},150,389,{"已订:21,未订:9"},21},
{{"G10"},{"兰州"},{"July 2nd 06:30am"},{"上海"},150,479,{"已订:10,未订:20"},10} };
int main()
{
    printf("\n\n\t\t    ★---您好,欢迎进入火车订票管理系统!---★\n");
    printf("\n================================================================================\n\n\n");
    printf("\t请按 Enter 键继续....\n\n\n\n\n");
    printf("----------------------------------------------------------------------------------\n");
    getchar();
    menu();
}
void menu()//主菜单
{
    int n, w1;
    do
    {
        system("cls");
        puts("\n\t\t                           火车订票管理系统!   \n\n");
        puts("\t\t***********************************MENU*********************************\n");
        puts("\t\t                                 1.显示车次\n");
        puts("\t\t                                 2.查找车次\n");
        puts("\t\t                                 3.售票\n");
        puts("\t\t                                 4.退票\n");
        puts("\t\t                                 5.退出系统\n");
        puts("\t\t========================================================================\n");
        printf("\t\t请选择服务项目(1-5): [ ]\b\b");
        scanf("%d", &n);
        if (n < 1 || n>5)
        {
            w1 = 1;
            printf("你的选项不存在,请重新输入:");
            getchar();
            getchar();
        }
        else
            w1 = 0;
    } while (w1 == 1);
    switch (n)
    {
    case 1:fa(); break;//显示车次
    case 2:fb(); break;//查找车次
    case 3:fc(); break;//售票
    case 4:fd(); break;//退票
    case 5:exit(0);

    }
}
void fa()//显示车次
{
    int i, c;
    char p[10];
    system("cls");
    printf(" *********************************欢迎进入显示窗口!*******************************\n");
    printf("----------------------------------------------------------------------------------\n");
    printf("1、查询近期车次\n");
    printf("2、查询特定车次\n");
    scanf("%d", &c);
    if (c == 1)
    {
        printf("1、查询近期车次\n");
        printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
        printf("----------------------------------------------------------------------------------\n");
        for (i = 0; i < 10; i++)
        {
            printf("%5s %6s  %6s  %6s     %3d         %3d    %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);
        }
        getchar();
        getchar();
        system("cls");
        menu();

    }

    if (c == 2)
    {
        printf("2、查询特定车次\n");
        printf("请输入查询车次号(1-10)?:\n");
        printf("--------------------------------------------------------------------------------------------\n");
        printf("| G01 G02 G03 G04 G05 G06 G07 G08 G09 G10 |\n");
        printf("--------------------------------------------------------------------------------------------\n");
        scanf("%d", &i);
        printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
        printf("----------------------------------------------------------------------------------\n");
        printf("%5s %6s  %6s  %6s     %3d         %3d    %6s \n", M[i - 1].车次号, M[i - 1].起始地, M[i - 1].发车时间, M[i - 1].目的地, M[i - 1].最多载人, M[i - 1].火车票价, M[i - 1].座次订出与否的标记);
        printf("\n---------------------------------------------------\n");
        printf("|                        是否购票?(输入是或否)            |\n");
        printf("-----------------------------------------------------\n");
        scanf("%s", &p);
        if (strcmp(p, "是") == 0)
        {
            getchar();
            system("cls");
            fc();
        }
        else if (strcmp(p, "否") == 0)
        {
            getchar();
            system("cls");
            menu();
        }

    }


}
void fb()//查找车次
{
    int n, w1;//w1缩小n的范围,n确定选项
    do
    {
        system("cls");
        printf(" *********************************欢迎进入查找窗口!*******************************\n");
        printf("----------------------------------------------------------------------------------\n");
        puts("\n\t\t\t\t  *车次查询*\n\n");
        puts("\t\t**************************************************\n\n");
        puts("\t\t\t\t1.按照起始地查找车次");
        puts("\t\t\t\t2.按照目的地查找车次");
        puts("\t\t\t\t3.返回主菜单");
        puts("\n\n\t\t**********************************************\n");
        printf("Choice your number(1-3): [ ]\b\b");
        scanf("%d", &n);
        if (n < 1 || n>3)
        {
            w1 = 1;
            printf("你的选项不存在,请重新输入");
            getchar();
            getchar();
        }
        else
            w1 = 0;
    } while (w1 == 1);
    switch (n)
    {
    case 1:f1(); break;//起始地查找
    case 2:f2(); break;//目的地查找
    case 3:menu(); break;//返回主菜单
    }
}
void fc()//售票
{
    int i;
    char p[10];
    system("cls");
    printf(" *********************************欢迎进入售票窗口!*******************************\n");
    printf("----------------------------------------------------------------------------------\n");
    getchar();
    i = f4();
    if (i != -1)
    {
        if (M[i].已售火车票 == 30)
        {
            printf("\n该趟车次火车票已售完!");
        }
        else
        {
            printf("    ------------\n");
            printf("    |是否购票?|\n");
            printf("    ------------\n");
            scanf("%s", &p);
            if (strcmp(p, "是") == 0)
            {
                getchar();
                system("cls");
                printf(" *********************************欢迎进入售票窗口!*******************************\n");
                printf("----------------------------------------------------------------------------------\n");
                printf("%5s %6s  %6s  %6s     %3d         %3d    %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);
                printf("请输入个人信息:\n姓名:    身份证号:    车次号:    起始地:    目的地:\n");
                getchar();
                FILE* fp;
                fp = fopen("该车次成员数据.txt", "ab");
                if (fp == NULL)
                    printf("error");
                else
                    fwrite(&M[i].购票人员信息, sizeof(struct train), 1, fp);
                fclose(fp);
                getchar();
                system("cls");
                getchar();
                printf(" *********************************欢迎进入售票窗口!*******************************\n");
                printf("----------------------------------------------------------------------------------\n");
                printf("\n                            购票成功!祝你路途愉快\n");
                printf("                                 按回车键返回主菜单");
                getchar();
                getchar();
                menu();
            }
            else if (strcmp(p, "否") == 0)
            {
                system("cls");
                printf(" *********************************欢迎进入售票窗口!*******************************\n");
                printf("----------------------------------------------------------------------------------\n");
                printf("\n                                  购票失败!\n");
                getchar();
                getchar();
                menu();
            }

        }
    }
    else
    {
        printf(" *********************************欢迎进入售票窗口!*******************************\n");
        printf("----------------------------------------------------------------------------------\n");
        printf("                                近期不存在该路线车次\n");
        getchar();
        system("cls");
        menu();
    }
    getchar();
    getchar();

}
void fd()//退票
{
    int s = 0;
    char p[10], xm[30], sf[20];
    system("cls");
    printf(" ************************************欢迎进入退票窗口!**********************************\n");
    printf("-----------------------------------------------------------------------------------------\n");
    printf("\n\n输入车次代号:\n");
    printf("-----------------------------------------------------------------------------------------\n");
    printf("G01 G02 G03 G04 G05 G06 G07 G08 G09 G10\n");
    scanf("%d", s);
    printf("第%d次车次信息如下:\n");
    printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
    printf("-----------------------------------------------------------------------------------------\n");
    f3(s - 1);
    printf("-----------------------------------------------------------------------------------------\n");
    printf("请输入你的个人信息:\n");
    printf("姓名:");
    scanf("%s", &xm);
    printf("\n身份证号:");
    scanf("%s", &sf);
    printf("是否退票?\n");
    scanf("%s", &p);
    if (p == "是")
    {
        system("cls");
        printf(" *********************************欢迎进入退票窗口!*******************************\n");
        printf("----------------------------------------------------------------------------------\n");
        M[s].已售火车票--;
        printf("\n                                  退票成功!\n");
        printf("退款金额已退至您的账户!!共%d元", M[s - 1].火车票价);
    }
    else if (p == "否")
    {
        printf("\n                                  退票失败\n");
    }
    getchar();
    getchar();
    menu();
}
void f1()//起始地查询
{
    int i, k;
    struct train s;
    system("cls");
    printf(" *********************************欢迎进入查询窗口!*******************************\n");
    printf("----------------------------------------------------------------------------------\n");
    printf("\n\n请输入起始地点:");
    scanf("%s", &s.起始地);
    printf("\n-------------------------------------------------------------------------------\n");
    printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
    for (i = 0; i < 10; i++)
    {
        if (strcmp(s.起始地, M[i].起始地) == 0)
        {
            k = i;
            f3(k);
        }
    }
    getchar();
    getchar();
    menu();
}
void f2()//目的地查找
{
    int i, m = 0;
    struct train s;
    system("cls");
    printf(" *********************************欢迎进入查找窗口!*******************************\n");
    printf("----------------------------------------------------------------------------------\n");
    printf("\n请输入目的地:");
    scanf("%s", &s.目的地);

    printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
    printf("\n-------------------------------------------------------------------------------\n");
    for (i = 0; i < 10; i++)
    {
        if (strcmp(s.目的地, M[i].目的地) == 0)
        {
            m = i;
            f3(m); break;
        }
    }
    getchar();
    getchar();
    menu();
}
void f3(int i)//显示某车次
{
    printf("%5s %6s  %6s  %6s     %3d         %3d    %6s \n", M[i].车次号, M[i].起始地, M[i].发车时间, M[i].目的地, M[i].最多载人, M[i].火车票价, M[i].座次订出与否的标记);

}
int f4()//查找车次号
{
    int i, k;
    struct train s;
    k = -1;
    system("cls");
    printf(" *********************************欢迎进入查找窗口!*******************************\n");
    printf("----------------------------------------------------------------------------------\n");
    printf("\n\n请输入要订票的起始地点:");
    scanf("%s", &s.起始地);
    printf("\n\n请输入要订票的下车地点:");
    scanf("%s", &s.目的地);
    printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
    for (i = 0; i < 10; i++)
    {
        if (strcmp(s.起始地, M[i].起始地) == 0 && strcmp(s.目的地, M[i].目的地) == 0)
        {
            k = i;
            f3(k);
            break;
        }
    }
    if (k == -1)
    {
        printf("近期无该路线车次");
    }
    return k;
}


请问为什么执行到退票就有问题

字符串判断不能用==,用strcmp

void fd()//退票
{
    int s = 0;
    char p[10], xm[30], sf[20];
    system("cls");
    printf(" ************************************欢迎进入退票窗口!**********************************\n");
    printf("-----------------------------------------------------------------------------------------\n");
    printf("\n\n输入车次代号:\n");
    printf("-----------------------------------------------------------------------------------------\n");
    printf("G01 G02 G03 G04 G05 G06 G07 G08 G09 G10\n");
    scanf("%d", s);
    printf("第%d次车次信息如下:\n");
    printf("车次号    起始地   发车时间         目的地   最多载人  火车票价   座次订出与否\n");
    printf("-----------------------------------------------------------------------------------------\n");
    f3(s - 1);
    printf("-----------------------------------------------------------------------------------------\n");
    printf("请输入你的个人信息:\n");
    printf("姓名:");
    scanf("%s", &xm);
    printf("\n身份证号:");
    scanf("%s", &sf);
    printf("是否退票?\n");
    scanf("%s", &p);
    if (strcmp(p,"是")==0)
    {
        system("cls");
        printf(" *********************************欢迎进入退票窗口!*******************************\n");
        printf("----------------------------------------------------------------------------------\n");
        M[s].已售火车票--;
        printf("\n                                  退票成功!\n");
        printf("退款金额已退至您的账户!!共%d元", M[s - 1].火车票价);
    }
    else if (strcmp(p,"否")==0)
    {
        printf("\n                                  退票失败\n");
    }
    getchar();
    getchar();
    menu();
}

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7645215
  • 你也可以参考下这篇文章:Visual Stdio 2022 C语言源文件调试教程
  • 除此之外, 这篇博客: Visual Stdio的使用(C语言)中的 2.新建项目(这里以C语言为例) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 过程中注意观察源文件夹中每一步都生成什么了
    (1)文件—>新建—>项目
    (2)选择语言:这里选择Visual C++—>windows控制台应用程序(下面的解决方案名称是总项目名称,就是.sln文件的名字,名称是项目名称(如上所述.vcxproj文件))
    1-2.1
    点击下一步,进一步设置
    1-2.2
    之后选择空项目,取消安全开发生命周期(SML)检查
    1-2.3
    进入项目内部
    1-2.4
    (3)源代码在项目(如:test1)下的右击“源文件”—>添加—>新建项(下面名称中设置名字和代码类别.cpp 或者.c,这里我设置为test1_1.c)(图1)
    头文件:你也可以右击“头文件”—>添加—>头文件
    多个项目:右击解决方案—>添加—>新建项目之后如2.(2)(图2)
    到这里这个vs的功能分配雏形已经显现出来了。
    }1-2.6
    1-2.7

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632