1.項(xiàng)目背景
為了免去在窗口排隊(duì)買票的麻煩,飛機(jī)訂票系統(tǒng)應(yīng)運(yùn)而生。用戶通過(guò)該系統(tǒng)可以快速,詳細(xì)地了解需要的信息,并提供了一個(gè)很好的購(gòu)票渠道。
2.設(shè)計(jì)目的?
如何合理設(shè)計(jì)不同數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)航班信息、旅客信息、訂票信息等不同數(shù)據(jù)
如何合理設(shè)計(jì)不同的鏈表節(jié)點(diǎn)來(lái)封裝不同的實(shí)體信息;
如何合理設(shè)計(jì)多個(gè)鏈表結(jié)構(gòu)來(lái)管理不同實(shí)體的若干記錄;
進(jìn)一步強(qiáng)化學(xué)習(xí)鏈表的創(chuàng)建、插入、查找、修改和刪除等基本操作;
進(jìn)一步強(qiáng)化學(xué)習(xí)內(nèi)存中鏈表數(shù)據(jù)和外部文件之間的存取操作;
如何利用time.h中的函數(shù)獲取系統(tǒng)日期時(shí)間
3.項(xiàng)目功能需求
添加機(jī)票信息
能夠添加機(jī)票的航班號(hào)、起飛降落時(shí)間、目的地、出發(fā)地、票價(jià)、可定的剩余票數(shù)以及折扣信息等。
查詢可預(yù)訂的機(jī)票信息
能夠根據(jù)用戶的具體需求即航班號(hào)或目的地,查詢可定的機(jī)票并輸出相應(yīng)的機(jī)票信息,支持標(biāo)準(zhǔn)格式輸出多條機(jī)票信息。
預(yù)定機(jī)票并輸入個(gè)人信息
查詢機(jī)票后,根據(jù)用戶的選擇,決定是否訂票,并輸入信息。
修改機(jī)票信息
能修改已經(jīng)存在的機(jī)票信息。
退票
根據(jù)目的地和最早出發(fā)時(shí)間,系統(tǒng)可以推薦合適的機(jī)票信息
顯示當(dāng)前時(shí)間
系統(tǒng)的功能結(jié)構(gòu)圖
?
功能模塊介紹
添加模塊
可以連續(xù)添加多條航班信息,包括航班號(hào)、出發(fā)城市、到達(dá)城市、出發(fā)時(shí)間、到達(dá)時(shí)間、票價(jià)、折扣信息、票數(shù)
查找模塊
用戶在訂票之前需要先查詢滿足自己出行需要的機(jī)票信息,本功能模塊支持按照“航班號(hào)”查詢和按照“目的地”查詢兩種方式
訂票模塊
輸入目的地信息,可以輸出所有滿足該目的地的航班信息,并提示用戶是否訂票
修改模塊
輸入需要修改的航班號(hào),可以修改航班信息
退票模塊
能支持用戶退票操作顯示模塊
顯示模塊可以展示所有航班信息,供旅客查看選擇
推薦模塊
推薦模塊的功能是根據(jù)旅客輸入的目的地信息和最早出發(fā)時(shí)間,向旅客推薦滿足要求的航班信息,幫助旅客快速搜索符合時(shí)間要求的航班
保存模塊
能將航班信息和旅客訂票信息保存到磁盤文件中,再次啟動(dòng)系統(tǒng)時(shí),則可以自動(dòng)讀取文件中的航班信息和旅客訂票信息
時(shí)間模塊
支持實(shí)時(shí)查詢當(dāng)前時(shí)間功能
主函數(shù)
功能設(shè)計(jì)
主函數(shù)用于實(shí)現(xiàn)主菜單的顯示,并響應(yīng)用戶對(duì)菜單項(xiàng)的選擇。
本系統(tǒng)的主函數(shù)主要兩大功能:保存信息和菜單選擇。
某個(gè)功能執(zhí)行完之后,還能按任意鍵自動(dòng)回到主菜單,便于用戶進(jìn)行其他操作。
主界面顯示如下
添加模塊
功能設(shè)計(jì)
用于對(duì)飛機(jī)班次,始發(fā)地,目的地,起飛時(shí)間,降落時(shí)間,票價(jià),折扣以及所剩票數(shù)等信息的輸入與保存。
添加模塊流程圖
查找模塊
功能設(shè)計(jì)
用于根據(jù)輸入的飛機(jī)班次或到達(dá)城市來(lái)進(jìn)行查找,了解航班的信息。
提供了兩種查詢方式:一是根據(jù)飛機(jī)班次查詢,二是根據(jù)到達(dá)城市查詢。按照目的地查找機(jī)票界面
還有一些功能不再演示 如上面所述,功能齊全文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-776687.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// 定義結(jié)構(gòu)體存儲(chǔ)機(jī)票信息
struct Ticket {
//聯(lián)系博主獲取:lxt123lxp456
};
// 聲明全局變量用于存儲(chǔ)機(jī)票信息
struct Ticket tickets[50];
int totalTickets = 0;
// 添加機(jī)票信息
void addTicket() {
tickets[i].departureTime, tickets[i].arrivalTime,
tickets[i].destination, tickets[i].departureCity,
tickets[i].price, tickets[i].availableSeats, tickets[i].discount);
}
}
} else if (searchType == 2) {
printf("請(qǐng)輸入目的地: ");
scanf("%s", searchDestination);
printf("查詢結(jié)果:\n");
printf("航班號(hào)\t起飛時(shí)間\t降落時(shí)間\t目的地\t\t出發(fā)地\t\t票價(jià)\t可預(yù)訂票數(shù)\t折扣信息\n");
for (int i = 0; i < totalTickets; i++) {
if (strcmp(tickets[i].destination, searchDestination) == 0) {
printf("%s\t%s\t\t%s\t\t%s\t\t%s\t\t%.2f\t%d\t\t%.2f\n",
tickets[i].flightNumber, tickets[i].departureTime, tickets[i].arrivalTime,
tickets[i].destination, tickets[i].departureCity,
tickets[i].price, tickets[i].availableSeats, tickets[i].discount);
}
}
} else {
printf("無(wú)效的查詢類型!\n");
}
}
// 預(yù)定機(jī)票并輸入個(gè)人信息
//聯(lián)系博主獲?。簂xt123lxp456
// 修改機(jī)票信息
void modifyTicket() {
printf("\n修改機(jī)票信息\n");
char searchFlightNumber[20];
int selectedTicket = -1;
printf("請(qǐng)輸入需要修改的機(jī)票航班號(hào): ");
scanf("%s", searchFlightNumber);
for (int i = 0; i < totalTickets; i++) {
if (strcmp(tickets[i].flightNumber, searchFlightNumber) == 0) {
selectedTicket = i;
break;
}
}
if (selectedTicket == -1) {
printf("未找到匹配的機(jī)票!\n");
return;
}
struct Ticket ticket = tickets[selectedTicket];
printf("請(qǐng)輸入新的票價(jià): ");
scanf("%f", &ticket.price);
printf("請(qǐng)輸入新的剩余票數(shù): ");
scanf("%d", &ticket.availableSeats);
tickets[selectedTicket] = ticket;
printf("機(jī)票信息修改成功!\n");
}
// 退票
void cancelTicket() {
printf("\n退票\n");
char searchDestination[50];
char earliestDepartureTime[20];
int selectedTicket = -1;
printf("請(qǐng)輸入目的地: ");
scanf("%s", searchDestination);
printf("請(qǐng)輸入最早出發(fā)時(shí)間: ");
scanf("%s", earliestDepartureTime);
for (int i = 0; i < totalTickets; i++) {
if (strcmp(tickets[i].destination, searchDestination) == 0 &&
strcmp(tickets[i].departureTime, earliestDepartureTime) >= 0) {
selectedTicket = i;
break;
}
}
if (selectedTicket == -1) {
printf("未找到匹配的退票機(jī)票!\n");
return;
}
struct Ticket ticket = tickets[selectedTicket];
// 增加可預(yù)訂票數(shù)
ticket.availableSeats++;
tickets[selectedTicket] = ticket;
printf("退票成功!\n");
printf("退票信息:\n");
printf("航班號(hào): %s\n", ticket.flightNumber);
printf("出發(fā)地: %s\n", ticket.departureCity);
printf("目的地: %s\n", ticket.destination);
printf("票價(jià): %.2f\n", ticket.price);
printf("剩余票數(shù): %d\n", ticket.availableSeats);
}
// 推薦合適的機(jī)票信息
// 顯示當(dāng)前時(shí)間
void displayCurrentTime() {
// 獲取當(dāng)前系統(tǒng)時(shí)間并進(jìn)行格式化輸出
time_t current_time;
char* c_time_string;
current_time = time(NULL);
c_time_string = ctime(¤t_time);
printf("\n當(dāng)前時(shí)間: %s", c_time_string);
}
int main() {
int choice;
do {
printf("\n---------------------\n");
printf("機(jī)票預(yù)訂系統(tǒng)\n");
printf("---------------------\n");
printf("1. 添加機(jī)票信息\n");
printf("2. 查詢機(jī)票信息\n");
printf("3. 預(yù)訂機(jī)票并輸入個(gè)人信息\n");
printf("4. 修改機(jī)票信息\n");
printf("5. 退票\n");
printf("6. 推薦合適的機(jī)票信息\n");
printf("7. 顯示當(dāng)前時(shí)間\n");
printf("0. 退出系統(tǒng)\n");
printf("---------------------\n");
printf("請(qǐng)選擇操作: ");
scanf("%d", &choice);
printf("---------------------\n");
//聯(lián)系博主獲取
} while (choice != 0);
return 0;
}
需要全部代碼可以聯(lián)系我:lxt123lxp456? 制作不易 伸手黨勿擾文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-776687.html
到了這里,關(guān)于【c/c++飛機(jī)訂票系統(tǒng)】c/c++飛機(jī)訂票系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!