車票管理系統是一個常見的應用場景,主要用于管理車票的銷售、查詢、退票等功能。本文將介紹如何使用C語言實現一個簡單的車票管理系統。我們將從系統設計、數據結構選擇、功能實現等方面進行詳細講解。
一個基本的車票管理系統應具備以下功能:
為了實現上述功能,我們需要選擇合適的數據結構來存儲車票信息。常見的選擇有數組、鏈表、文件等。本文將使用鏈表來存儲車票信息,因為鏈表可以動態地增加和刪除節點,適合處理車票的增刪改查操作。
首先,我們需要定義一個結構體來表示車票信息:
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;
}
我們可以根據車次、出發地、目的地等條件查詢車票信息。以下是一個根據車次查詢車票信息的函數:
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);
}
車票購買功能可以通過修改車票的狀態來實現。我們可以為車票結構體增加一個狀態字段:
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);
}
退票功能與購買功能類似,只需將車票的狀態從“已售出”改為“未售出”:
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);
}
車票信息修改功能可以通過遍歷鏈表找到目標車票,然后修改其信息:
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", ¤t->price);
printf("車次 %s 的信息修改成功!\n", trainNumber);
return;
}
current = current->next;
}
printf("未找到車次為 %s 的車票信息。\n", trainNumber);
}
刪除車票信息需要找到目標車票并將其從鏈表中移除:
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語言進行基本的數據管理和操作。在實際應用中,還可以進一步擴展功能,如增加用戶管理、車票統計等功能,以滿足更復雜的需求。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。