2301_79710490 2024-12-06 10:02 采纳率: 0%
浏览 65
已结题

c语言数据结构高铁订票系统

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息

在运行后使用第三个订票系统时程序错误

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

代码是去GitHub上找的,然后修改文件地址运行后发现效果不一样https://github.com/xuzhihaoup/Base-C-language-Rail-System

运行结果及详细报错内容

无法查询余和订票

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

正确的效果应该和作者演示的一样https://www.bilibili.com/video/BV1Gm421n7jj/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=ec6c7e1f8b775bd7157c4f5ea6d21a34 但目前我使用的开源代码只有第三个订票系统中的查询余票和订票功能有错误,最后我还想改成读写操作能够运行程序的时候改变文件里面的内容不知道能不能实现

  • 写回答

34条回答 默认 最新

  • 就是这样,喵~ 2024-12-06 10:03
    关注

    题主您好,本回答参考AIGC,并由本人整理提供,如问题解决,望采纳;如仍有疑问,请评论回复。

    好的,我理解你的问题。你在使用一个高铁订票系统时遇到了错误,并且希望查询余票和订票功能能够正常工作。以下是一些可能的解决方法和思路:

    1. 检查代码逻辑

    首先,确保你的代码逻辑是正确的。特别是涉及到文件读写的部分,需要仔细检查文件路径、文件格式以及读写操作是否正确。

    2. 调试信息

    在关键位置添加调试信息,以便更好地了解程序运行过程中的状态。例如,可以在读取文件、处理数据和写入文件的地方打印一些调试信息。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    // 假设这是你的数据结构定义
    typedef struct {
        char train_number[10];
        char departure[20];
        char destination[20];
        int first_class;
        int second_class;
    } Train;
    
    // 假设这是你的函数声明
    void queryTickets(const char* filename);
    void bookTicket(const char* filename, const char* train_number, int class, int num);
    
    int main() {
        queryTickets("trains.txt");
        bookTicket("trains.txt", "G123", 1, 2);
        return 0;
    }
    
    void queryTickets(const char* filename) {
        FILE *file = fopen(filename, "r");
        if (file == NULL) {
            perror("Error opening file");
            return;
        }
    
        Train train;
        while (fscanf(file, "%s %s %s %d %d", train.train_number, train.departure, train.destination, &train.first_class, &train.second_class) != EOF) {
            printf("Train Number: %s, Departure: %s, Destination: %s, First Class: %d, Second Class: %d\n",
                   train.train_number, train.departure, train.destination, train.first_class, train.second_class);
        }
    
        fclose(file);
    }
    
    void bookTicket(const char* filename, const char* train_number, int class, int num) {
        FILE *file = fopen(filename, "r+");
        if (file == NULL) {
            perror("Error opening file");
            return;
        }
    
        Train train;
        long pos;
        int found = 0;
        while (fscanf(file, "%s %s %s %d %d", train.train_number, train.departure, train.destination, &train.first_class, &train.second_class) != EOF) {
            if (strcmp(train.train_number, train_number) == 0) {
                found = 1;
                pos = ftell(file) - sizeof(train); // 回退到当前记录的开始位置
                break;
            }
        }
    
        if (!found) {
            printf("Train not found\n");
            fclose(file);
            return;
        }
    
        if (class == 1 && train.first_class >= num) {
            train.first_class -= num;
        } else if (class == 2 && train.second_class >= num) {
            train.second_class -= num;
        } else {
            printf("Not enough tickets available\n");
            fclose(file);
            return;
        }
    
        fseek(file, pos, SEEK_SET);
        fprintf(file, "%s %s %s %d %d\n", train.train_number, train.departure, train.destination, train.first_class, train.second_class);
        fclose(file);
    }
    

    3. 检查文件路径和权限

    确保你的程序有正确的文件路径和读写权限。如果文件路径不正确或者没有权限,会导致文件无法打开或读写失败。

    4. 确认文件格式

    确保你的文件格式与程序预期的一致。例如,每行的数据应该按照特定的格式存储,否则 fscanf 会解析失败。

    5. 使用调试工具

    可以使用调试工具(如 gdb)来逐步执行程序,查看变量的值和程序的执行流程,找出问题所在。

    6. 参考作者的演示视频

    根据你提供的视频链接,可以对照视频中的操作步骤,检查你的代码是否遗漏了某些步骤或逻辑。

    通过以上方法,你应该能够找到并解决程序中的错误。如果仍然有问题,请提供更多详细的错误信息和代码片段,以便进一步帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月14日
  • 修改了问题 12月6日
  • 创建了问题 12月6日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题