溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言如何實現車票管理系統

發布時間:2022-05-30 13:45:31 來源:億速云 閱讀:276 作者:iii 欄目:開發技術

C語言如何實現車票管理系統

引言

車票管理系統是一個常見的應用場景,主要用于管理車票的銷售、查詢、退票等功能。本文將介紹如何使用C語言實現一個簡單的車票管理系統。我們將從系統設計、數據結構選擇、功能實現等方面進行詳細講解。

系統設計

功能需求

一個基本的車票管理系統應具備以下功能:

  1. 車票信息錄入:管理員可以錄入車票信息,包括車次、出發地、目的地、發車時間、票價等。
  2. 車票查詢:用戶可以根據車次、出發地、目的地等條件查詢車票信息。
  3. 車票購買:用戶可以選擇車次并購買車票。
  4. 車票退票:用戶可以退掉已購買的車票。
  5. 車票信息修改:管理員可以修改車票信息。
  6. 車票信息刪除:管理員可以刪除車票信息。

數據結構選擇

為了實現上述功能,我們需要選擇合適的數據結構來存儲車票信息。常見的選擇有數組、鏈表、文件等。本文將使用鏈表來存儲車票信息,因為鏈表可以動態地增加和刪除節點,適合處理車票的增刪改查操作。

功能實現

1. 車票信息錄入

首先,我們需要定義一個結構體來表示車票信息:

typedef struct Ticket {
    char trainNumber[20];  // 車次
    char departure[50];    // 出發地
    char destination[50];  // 目的地
    char departureTime[20];// 發車時間
    float price;           // 票價
    struct Ticket* next;   // 指向下一個車票的指針
} Ticket;

接下來,我們可以編寫一個函數來錄入車票信息:

Ticket* createTicket() {
    Ticket* newTicket = (Ticket*)malloc(sizeof(Ticket));
    printf("請輸入車次: ");
    scanf("%s", newTicket->trainNumber);
    printf("請輸入出發地: ");
    scanf("%s", newTicket->departure);
    printf("請輸入目的地: ");
    scanf("%s", newTicket->destination);
    printf("請輸入發車時間: ");
    scanf("%s", newTicket->departureTime);
    printf("請輸入票價: ");
    scanf("%f", &newTicket->price);
    newTicket->next = NULL;
    return newTicket;
}

2. 車票查詢

我們可以根據車次、出發地、目的地等條件查詢車票信息。以下是一個根據車次查詢車票信息的函數:

void searchTicketByTrainNumber(Ticket* head, char* trainNumber) {
    Ticket* current = head;
    while (current != NULL) {
        if (strcmp(current->trainNumber, trainNumber) == 0) {
            printf("車次: %s, 出發地: %s, 目的地: %s, 發車時間: %s, 票價: %.2f\n",
                   current->trainNumber, current->departure, current->destination,
                   current->departureTime, current->price);
            return;
        }
        current = current->next;
    }
    printf("未找到車次為 %s 的車票信息。\n", trainNumber);
}

3. 車票購買

車票購買功能可以通過修改車票的狀態來實現。我們可以為車票結構體增加一個狀態字段:

typedef struct Ticket {
    char trainNumber[20];
    char departure[50];
    char destination[50];
    char departureTime[20];
    float price;
    int status;  // 0: 未售出, 1: 已售出
    struct Ticket* next;
} Ticket;

然后,編寫一個函數來購買車票:

void buyTicket(Ticket* head, char* trainNumber) {
    Ticket* current = head;
    while (current != NULL) {
        if (strcmp(current->trainNumber, trainNumber) == 0 && current->status == 0) {
            current->status = 1;
            printf("車次 %s 的車票購買成功!\n", trainNumber);
            return;
        }
        current = current->next;
    }
    printf("車次 %s 的車票已售罄或不存在。\n", trainNumber);
}

4. 車票退票

退票功能與購買功能類似,只需將車票的狀態從“已售出”改為“未售出”:

void refundTicket(Ticket* head, char* trainNumber) {
    Ticket* current = head;
    while (current != NULL) {
        if (strcmp(current->trainNumber, trainNumber) == 0 && current->status == 1) {
            current->status = 0;
            printf("車次 %s 的車票退票成功!\n", trainNumber);
            return;
        }
        current = current->next;
    }
    printf("車次 %s 的車票未售出或不存在。\n", trainNumber);
}

5. 車票信息修改

車票信息修改功能可以通過遍歷鏈表找到目標車票,然后修改其信息:

void modifyTicket(Ticket* head, char* trainNumber) {
    Ticket* current = head;
    while (current != NULL) {
        if (strcmp(current->trainNumber, trainNumber) == 0) {
            printf("請輸入新的出發地: ");
            scanf("%s", current->departure);
            printf("請輸入新的目的地: ");
            scanf("%s", current->destination);
            printf("請輸入新的發車時間: ");
            scanf("%s", current->departureTime);
            printf("請輸入新的票價: ");
            scanf("%f", &current->price);
            printf("車次 %s 的信息修改成功!\n", trainNumber);
            return;
        }
        current = current->next;
    }
    printf("未找到車次為 %s 的車票信息。\n", trainNumber);
}

6. 車票信息刪除

刪除車票信息需要找到目標車票并將其從鏈表中移除:

Ticket* deleteTicket(Ticket* head, char* trainNumber) {
    Ticket* current = head;
    Ticket* previous = NULL;
    while (current != NULL) {
        if (strcmp(current->trainNumber, trainNumber) == 0) {
            if (previous == NULL) {
                head = current->next;
            } else {
                previous->next = current->next;
            }
            free(current);
            printf("車次 %s 的車票信息刪除成功!\n", trainNumber);
            return head;
        }
        previous = current;
        current = current->next;
    }
    printf("未找到車次為 %s 的車票信息。\n", trainNumber);
    return head;
}

總結

通過以上步驟,我們實現了一個簡單的車票管理系統。該系統使用鏈表來存儲車票信息,并實現了車票的錄入、查詢、購買、退票、修改和刪除等功能。雖然這個系統相對簡單,但它展示了如何使用C語言進行基本的數據管理和操作。在實際應用中,還可以進一步擴展功能,如增加用戶管理、車票統計等功能,以滿足更復雜的需求。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女