航班信息管理系統(tǒng)_第1頁(yè)
航班信息管理系統(tǒng)_第2頁(yè)
航班信息管理系統(tǒng)_第3頁(yè)
航班信息管理系統(tǒng)_第4頁(yè)
航班信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課 程 設(shè) 計(jì) 課程名稱 C語(yǔ)言課程設(shè)計(jì) 題目名稱 航班信息管理系統(tǒng) 學(xué)生學(xué)院 物理與光電工程學(xué)院 專業(yè)班級(jí) 電子科學(xué)與技術(shù)(4)班學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 2015 年 10 月 23 日目 錄一 設(shè)計(jì)目的- 2 -二 課程設(shè)計(jì)的內(nèi)容- 2 -三 課程設(shè)計(jì)的要求與數(shù)據(jù)- 2 -四 課程設(shè)計(jì)應(yīng)完成的工作- 3 -五 總體設(shè)計(jì)- 3 -六 詳細(xì)設(shè)計(jì)- 3 -七 調(diào)試分析- 9 -7.1 源程序及注釋- 9 -7.2 調(diào)試與測(cè)試- 30 -7.2.1 算法調(diào)試過程中出現(xiàn)的問題及解決方法:- 30 -7.2.2 主要程序運(yùn)行結(jié)果- 32 -八 總結(jié)- 35 -九 參考文獻(xiàn)- 36 -一 設(shè)計(jì)目的進(jìn)

2、一步加深、鞏固所學(xué)專業(yè)課程(C語(yǔ)言程序設(shè)計(jì))的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運(yùn)用C語(yǔ)言獨(dú)立地編寫、調(diào)試應(yīng)用程序和進(jìn)行其他相關(guān)設(shè)計(jì)的技能。二 課程設(shè)計(jì)的內(nèi)容對(duì)航班信息(包括航班號(hào)、最大載客數(shù)、起飛地點(diǎn)、起飛時(shí)間、降落地點(diǎn)、降落時(shí)間、單價(jià))和乘客信息(包括航班號(hào)、身份證號(hào)碼姓名、性別、出生年月、座位號(hào))進(jìn)行管理,包括航班信息與乘客信息的輸入、輸出、查詢、刪除、統(tǒng)計(jì)、退出。假設(shè)現(xiàn)收集到了一個(gè)機(jī)場(chǎng)的所有的航班信息,要求用C語(yǔ)言編寫一個(gè)簡(jiǎn)單的航班信息管理系統(tǒng),可進(jìn)行錄入、查詢、修改和瀏覽航班信息的功能;乘客提出航班號(hào)、起飛地點(diǎn)、起飛時(shí)間、降落地點(diǎn)、訂票數(shù)等訂

3、票要求,根據(jù)事先保存的航班數(shù)據(jù)決定乘客能否訂票。只有全部滿足了乘客的訂票要求并且所訂航班有足夠的未訂座位之后才能完成訂票處理,并且修改該航班的未訂座位數(shù)(每個(gè)航班的未訂座位數(shù)的初始值就是該航班的最大載客數(shù)),否則,訂票失敗,并且給出不能訂票的原因。三 課程設(shè)計(jì)的要求與數(shù)據(jù)1、對(duì)航班信息(包括航班號(hào)、最大載客數(shù)、起飛地點(diǎn)、起飛時(shí)間、降落地點(diǎn)、降落時(shí)間、單價(jià))和乘客信息(包括航班號(hào)、身份證號(hào)碼、姓名、性別、出生年月、座位號(hào))進(jìn)行管理,包括航班信息與乘客信息的輸入、輸出、查詢、刪除、統(tǒng)計(jì)、退出;2、航班信息內(nèi)容較多,要求設(shè)計(jì)的管理系統(tǒng)能夠完成以下功能:(1)、航班信息錄入功能:航班信息用文件保存,可

4、以一次完成若干條記錄的輸入;(2)、航班信息瀏覽功能:完成全部航班記錄的顯示;(3)、查詢功能:完成按航班號(hào)或按目的地查找航班記錄,并顯示;(4)、航班信息的修改:按航班號(hào)進(jìn)行修改某個(gè)航班的信息;(5)、航班信息的刪除:按航班號(hào)進(jìn)行刪除某個(gè)航班的信息;(6)、訂票處理:按乘客的訂票方式完成航班訂票處理;(7)、應(yīng)提供一個(gè)界面來調(diào)節(jié)各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀! 四 課程設(shè)計(jì)應(yīng)完成的工作1、 編寫算法;2、 算法測(cè)試,并有具體的測(cè)試結(jié)果和結(jié)果分析;3、 撰寫課程設(shè)計(jì)報(bào)告,內(nèi)容包括:(1) 封面扉頁(yè)(2) 設(shè)計(jì)任務(wù)書(3) 目錄(4) 總體設(shè)計(jì)方案(包括流程圖)(5) 使

5、用說明及運(yùn)行實(shí)例(包括界面)(6) 成員設(shè)計(jì)內(nèi)容簡(jiǎn)介(7) 項(xiàng)目源代碼(注意注釋的使用)(8) 指導(dǎo)老師評(píng)語(yǔ)五 總體設(shè)計(jì)1、 功能1:航班信息的輸入并對(duì)輸入的內(nèi)容進(jìn)行錯(cuò)誤檢查;2、 功能2:航班信息的顯示瀏覽;3、 功能3:航班信息的修改并對(duì)修改的內(nèi)容進(jìn)行錯(cuò)誤檢查;4、 功能4:航班信息的刪除;5、 功能5:航班信息的查詢;6、 功能6:乘客信息輸入并對(duì)輸入的內(nèi)容進(jìn)行錯(cuò)誤檢查;7、 功能7:訂票處理檢查是否還有空座位;8、 退出系統(tǒng)。六 詳細(xì)設(shè)計(jì)系統(tǒng)的整體框圖如圖1所示:開始輸出菜單打開文件根據(jù)菜單輸入n的值選擇程序退出保存刪除修改查詢顯示輸出輸入結(jié)束圖1 整體框圖1、 打開存放著航班信息與乘

6、客信息的文件:分別打開航班文件與乘客文件,存放在鏈表中,供后續(xù)函數(shù)調(diào)用;可用函數(shù)void read_psg_data(void)、void read_pla_data(void)來實(shí)現(xiàn)此操作。這是兩個(gè)無參函數(shù),用來讀取存儲(chǔ)在文件中的信息當(dāng)?shù)竭_(dá)文件尾時(shí)關(guān)閉文件并退出函數(shù),帶回指向鏈表頭的一個(gè)指針和指向鏈表尾的指針。算法:fopen()函數(shù)打開文件后讀取一定長(zhǎng)度的信息存到malloc()分配的內(nèi)存地址空間,聲明兩個(gè)全局指針pla_head和psg_head,每讀取一組數(shù)據(jù)就將其地址存放在pla1節(jié)點(diǎn)中,并鏈接到之前列表的尾端。N-S流程圖如圖2所示(以讀取航班信息為例):fp=fopen(文件)w

7、hile(不到文件尾) malloc()分配內(nèi)存pla1是否成功否是分配內(nèi)存失敗返回菜單 fread()讀取一定長(zhǎng)度字節(jié)數(shù)據(jù)到pla1pla1置為NULL是否pla_head是否為空 pla_end-next = pla1; pla_head = pla1; pla_end = pla1; pla_end = pla1;pla_end_next置為NULL讀取成功標(biāo)志位置為0關(guān)閉文件圖2 打開文件讀取數(shù)據(jù)流程圖2、 輸入航班數(shù)據(jù)與乘客數(shù)據(jù)(以航班數(shù)據(jù)為例):輸入信息包括航班號(hào)、最大載客數(shù)、起飛地點(diǎn)等相關(guān)信息;用函數(shù)void add_pla_info(void),函數(shù)再調(diào)用int check_p

8、la_num(PLA *pla)、void check_time(int *hour, int *min)、void check_string(char name20)分別進(jìn)行航班號(hào)、輸入的時(shí)間、輸入的地點(diǎn)等信息的正確性驗(yàn)證,從源頭避免出錯(cuò)。算法:打開待保存輸入信息的文件,在一個(gè)while循環(huán)里面分配內(nèi)存并輸入數(shù)據(jù),對(duì)輸入的數(shù)據(jù)進(jìn)行正確性驗(yàn)證,如果出錯(cuò)則會(huì)提示重新輸入,正確輸入完一個(gè)航班后將數(shù)據(jù)保存到鏈表尾端并將新的航班數(shù)據(jù)寫入打開的文件中。N-S流程圖如圖3所示(以讀取航班信息為例):fp=fopen(文件)while(繼續(xù)輸入)是 提示出錯(cuò)后返回否malloc()分配內(nèi)存pla是否成功輸入

9、航班號(hào) 重新輸入否是航班記錄已存在?輸入載客數(shù)是 重新輸入否是否數(shù)字且在正常范圍 輸入起飛時(shí)間否是 重新輸入 時(shí)間格式正確? 輸入降落地點(diǎn) 重新輸入是否 地點(diǎn)格式正確?輸入降落時(shí)間 重新輸入是否時(shí)間格式正確?輸入單價(jià)是 重新輸入否是否數(shù)字?是否pla_head為空? pla_end-next = pla; pla_head = pla; pla_end = pla;pla_end = pla;保存新航班數(shù)據(jù)到文件圖3 輸入航班數(shù)據(jù)流程圖3、 顯示瀏覽航班信息:顯示信息包括航班號(hào)、最大載客數(shù)、起飛地點(diǎn)、起飛時(shí)間、降落地點(diǎn)、降落時(shí)間、單價(jià)、剩余票數(shù),調(diào)用了時(shí)間函數(shù)localtime()獲取當(dāng)前系統(tǒng)

10、時(shí)間;用函數(shù)void display_pla_info(void)完成此操作。算法:把讀取文件后產(chǎn)生的鏈表按照一定的格式輸出到屏幕上。N-S流程圖如圖4所示:將鏈表頭賦給航班結(jié)構(gòu)體局部變量while(未到鏈表尾)printf(pla1);pla1 = pla1-next;圖4 顯示航班信息流程圖4、 刪除航班信息:刪除一個(gè)航班的所有信息,調(diào)用函數(shù)void delete_pla_data(void)完成是刪除操作。算法:顯示所有航班信息,要求用戶輸入需刪除的航班號(hào),在while循環(huán)中遍歷鏈表,找到數(shù)據(jù)則顯示出來,再次要求用戶確認(rèn)刪除,若刪除,該數(shù)據(jù)的下一條數(shù)據(jù)地址將會(huì)取代當(dāng)前的數(shù)據(jù)地址,即從鏈表

11、中刪除了,調(diào)用save_pla_info()保存新的鏈表;若沒有找到航班則要求用戶重新輸入。N-S流程圖如圖5所示:輸入航班號(hào)否是 到達(dá)鏈表尾?是否提示找不到航班,重新輸入 輸入的航班號(hào)與pla1_num相同?是否pla2 = pla1;輸出該航班信息否是pla1 = pla1-next;確認(rèn)刪除?返回菜單刪除的航班是鏈表頭?pla_head = pla1-next; pla2-next = pla1-next;釋放pla1;保存文件標(biāo)志位置位;調(diào)用save_pla_info()保存新的鏈表;提示刪除成功;返回菜單圖5 刪除航班信息流程圖5、 修改航班信息:修改一個(gè)航班的信息,調(diào)用void m

12、odify_data(void)實(shí)現(xiàn)此操作。算法:顯示所有航班信息,用戶輸入一個(gè)航班號(hào),在while循環(huán)中遍歷鏈表,找到要修改的數(shù)據(jù)則顯示出來,再次要求用戶確認(rèn)修改,若修改,則開始輸入信息;若沒有找到航班則返回菜單。這里用到了添加航班時(shí)的信息檢查函數(shù)。N-S流程圖如圖6所示:輸入航班號(hào)是否while(未到鏈表尾) 輸入的航班號(hào)與pla1_num相同?是否pla2 = pla1; 輸出該航班信息pla1 = pla1-next;確認(rèn)修改?返回菜單輸入新的航班號(hào)、載客數(shù)、起飛時(shí)間、降落地點(diǎn)、降落時(shí)間、單價(jià),并檢查每一項(xiàng)的格式是否符合要求提示修改成功返回菜單提示未找到該航班并返回菜單圖6 修改航班信

13、息流程圖6、 查詢航班信息:查詢信息時(shí)分為航班號(hào)查詢與目的地查詢,用戶可輸入航班號(hào)或目的地進(jìn)行查詢并訂票,調(diào)用void search(void)函數(shù),內(nèi)部再調(diào)用void search_pla_num(void)和void search_destination(void)兩個(gè)函數(shù)實(shí)現(xiàn)此操作。算法:進(jìn)入查詢后顯示另一個(gè)菜單要求用戶選擇相應(yīng)的查詢條件。按航班號(hào)查詢時(shí),用戶輸入一個(gè)航班號(hào),在while循環(huán)中遍歷鏈表,找到要修改的數(shù)據(jù)則顯示出來,詢問用戶是否要訂票,若訂票則會(huì)進(jìn)入訂票函數(shù)buy_check();若不訂票則返回菜單;若沒有找到相應(yīng)的航班信息則返回上一層菜單。N-S流程圖如圖7所示:按目的地

14、顯示菜單選擇程序按航班號(hào) 選擇相應(yīng)的操作輸入航班號(hào)輸入目的地否是否while(不到鏈表尾)while(不到鏈表尾)航班號(hào)相同? 目的地相同?是pla2 = pla1;顯示航班信息pla2 = pla1;顯示航班信息否pla1 = pla1-next; 詢問是否訂票pla1 = pla1-next;進(jìn)入search_pla_num()返回 執(zhí)行訂票流程詢問是否訂票 未找到相應(yīng)的航班信息未找到相應(yīng)的航班信息圖7 查詢航班信息流程圖7、 訂票處理:進(jìn)入訂票時(shí),會(huì)調(diào)用search_pla_num()函數(shù)完成操作。算法:調(diào)用display_pla_info()輸出所有航班信息,然后調(diào)用search_pl

15、a_num()和buy_check()訂票并完成乘客身份信息的輸入與格式檢驗(yàn)。N-S流程圖如圖8所示:display_pla_info()顯示所有航班信息提示用戶輸入相應(yīng)的航班號(hào)while(未到鏈表尾)否是 航班號(hào)相同? pla2 = pla1;顯示信息否是 pla1 = pla1-next;調(diào)用buy_check()檢查該航班已滿人數(shù)?提示用戶選擇其他航班調(diào)用buy_ticket()函數(shù)完成乘客信息的錄入(包括姓名、身份證號(hào)、性別等信息),并對(duì)正確性進(jìn)行檢查,然后把信息存放到乘客文件中。提示訂票成功并返回提示未找到航班信息后返回菜單8、退出系統(tǒng):用戶在主菜單界面時(shí)按照提示即可退出系統(tǒng),調(diào)用一

16、個(gè)exit()函數(shù)來實(shí)現(xiàn)。七 調(diào)試分析7.1 源程序及注釋/* 航班信息管理系統(tǒng) */#include #include #include #include #include #include #define LEN1 sizeof(PSG)#define LEN sizeof(PLA)#define FORMAT %3d%7d%5d%7d:%2d%12s%8d:%2d%6s%8dn#define INFO pla_num, pla1-p_num, pla1-l_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla

17、1-down_min, pla1-price, (pla1-l_num - pla1-buy_num)typedef struct passengerint p_num; / 航班號(hào)char id_num20; / 身份證號(hào)char name20; char sex5; int year_born;char dot;int month_born;int site_num;struct passenger *next; / 下一個(gè)乘客 PSG;typedef struct planeint p_num; / 航班號(hào)int l_num; / 載客數(shù)int up_hour; / 起飛時(shí)int up_

18、min; / 起飛分char addr_dst20; / 降落地點(diǎn)int down_hour; / 降落時(shí)int down_min; / 降落分char price10; / 單價(jià)int buy_num; / 已訂票數(shù)struct plane *next; / 下一航班struct PSG *first; / 第一位乘客 PLA;PSG *psg_head = NULL, *psg_end = NULL; / 乘客信息鏈表頭指針和尾指針PLA *pla_head = NULL, *pla_end = NULL; / 航班信息鏈表頭指針和尾指針char gfirst, pfirst, gsave

19、, psave; / 判斷標(biāo)志int bflag = 0; / 訂票成功標(biāo)志 /* 保存乘客數(shù)據(jù) */void save_psg_info(void)FILE *fd;PSG *psg1;if (0 = psave) return;if (fd = fopen(passenger.dat,wb) = NULL) printf(n無法打開文件passenger.dat!);getch();return;psg1 = psg_head;while (psg1) if (fwrite(psg1, LEN1, 1, fd) != 1) printf(n寫入數(shù)據(jù)出錯(cuò)!);fclose(fd);getch

20、();return;psg1 = psg1-next;psave = 0;fclose(fd);/* 保存航班數(shù)據(jù) */void save_pla_info(void)FILE *fp;PLA *pla1;if (0 = gsave) return;if (fp = fopen(airplanes.dat,wb) = NULL) printf(n無法打開文件airplanes.dat!);getch();return;pla1 = pla_head;while (pla1) if (fwrite(pla1, LEN, 1, fp) != 1) printf(n寫入數(shù)據(jù)出錯(cuò)!);fclose(f

21、p);getch();return;pla1 = pla1-next;gsave = 0;fclose(fp);void make_line(char ch, int i)while (i-)putchar(ch);putchar(n);/* 檢查時(shí)間輸入正確 */void check_time(int *hour, int *min)int i;for (i=1; i != 2; i=1) if (i = scanf(%d:%d, hour, min) != 2) printf(輸入格式錯(cuò)誤! 請(qǐng)以小時(shí):分鐘格式重新輸入: );fflush(stdin); continue;if (!(*h

22、our = 0) printf(小時(shí)不在正常范圍! 請(qǐng)重新輸入: );fflush(stdin); continue;if (!(*min = 0) printf(分鐘不在正常范圍! 請(qǐng)重新輸入: );fflush(stdin); continue;return;/* 顯示航班信息 */void display_pla_info(void)PLA *pla1;time_t nowtime = time(0);struct tm *timeinfo;char tmp64;int pla_num = 0; / 記錄航班信息數(shù)目 timeinfo = localtime(&nowtime);/* 顯

23、示時(shí)間 */system(cls);strftime(tmp, sizeof(tmp), 現(xiàn)在是%z %Y-%m-%d %X %A, timeinfo);puts(tmp);pla1 = pla_head;printf(n序號(hào) 航班號(hào) 載客數(shù) 起飛時(shí)間 降落地點(diǎn) 降落時(shí)間 單價(jià) 剩余票數(shù)n);make_line(_, 70);while (pla1)pla_num+;printf(FORMAT, INFO);make_line(_, 70);pla1 = pla1-next;/* 刪除數(shù)據(jù) */void delete_pla_data(void)int num;char del_pla; PL

24、A *pla1, *pla2;system(cls);display_pla_info();del_again:printf(請(qǐng)輸入要?jiǎng)h除的航班號(hào)(非數(shù)字鍵返回上層:);fflush(stdin);if (!(scanf(%d, &num)return;pla1 = pla_head;pla2 = pla1;while (pla1) if (num = pla1-p_num) printf(n航班號(hào) 載客數(shù) 起飛時(shí)間 降落地點(diǎn) 降落時(shí)間 單價(jià)n);make_line(_, 50);printf(%4d%6d%7d:%2d%13s%7d:%2d%6sn, pla1-p_num, pla1-l_n

25、um, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price);make_line(_, 50);printf(警告!您確定要?jiǎng)h除該航班嗎? (y / n) );fflush(stdin);del_pla = getchar();if (del_pla != y & del_pla != Y)return;if (pla_head = pla1)pla_head = pla1-next;else pla2-next = pla1-next;free(pla1);gsave = 1;

26、save_pla_info();printf(刪除成功! 任意鍵返回n);getch();return;else pla2 = pla1;pla1 = pla1-next;printf(n未找到航班信息!n);goto del_again;return; /* 檢查字符串 */void check_string(char name20)int i, flag = 0;char check20;for (i = 0; i 20; i+)checki = 0;fflush(stdin);while (scanf(%s, check) fflush(stdin);for (i = 0; i 20;

27、i+) if (checki32 | checki90 | checki122) flag = 1;break;if (flag = 1) for (i = 0; i p_num = pla1-p_num; / 航班號(hào)psg1-site_num = pla1-buy_num; / 座位號(hào)printf(警告:請(qǐng)勿惡意輸入,否則將導(dǎo)致您訂票失敗!n);printf(請(qǐng)輸入您的相關(guān)信息:n);fflush(stdin);make_line(_, 70);printf(身份證號(hào):);id_again:for (i = 0; i id_numi = 0;scanf(%s, psg1-id_num);if

28、 (psg1-id_num17=0 | psg1-id_num18!=0) printf(n您輸入的身份證號(hào)碼長(zhǎng)度有誤,請(qǐng)檢查后重新輸入: );goto id_again;for (i = 14; i id_numiid_numi57 | psg1-id_numiid_numiid_numi90 | psg1-id_numiid_numi122) printf(n您輸入的身份證號(hào)碼有誤,請(qǐng)檢查后重新輸入: );goto id_again;for (i = 0; i id_numiid_numi=0) ) printf(n您輸入的身份證號(hào)碼有誤,請(qǐng)檢查后重新輸入: );goto id_again

29、;printf(姓名:);check_string(psg1-name);printf(性別(男/女/male/female):);sex_again:fflush(stdin);scanf(%s, psg1-sex);if (strcmp(psg1-sex, 男) & strcmp(psg1-sex, 女) & strcmp(psg1-sex, male) & strcmp(psg1-sex, female) printf(n輸入出錯(cuò),請(qǐng)輸入您的正確性別:);goto sex_again;printf(出生年月(如:1994-10):);/psg1-born = (char *)malloc

30、(8);born_again:/for (i = 0; i borni = 0;fflush(stdin);while (scanf(%d-%d, &psg1-year_born, &psg1-month_born) != 2) fflush(stdin);printf(n輸入出錯(cuò),請(qǐng)重新輸入: );if (psg1-year_born 2015 | psg1-year_born month_born 12 | psg1-month_born next = NULL;if (pla1-first = NULL) / 指向第一個(gè)乘客pla1-first = psg1;else psg_end =

31、 pla1-first;while (psg_end) if (NULL = psg_end-next) psg_end-next = psg1;else psg_end = psg_end-next;if (fwrite(psg1, LEN1, 1, fd) != 1) printf(保存信息出錯(cuò)!n);fclose(fd);getch();return;fclose(fd);/free(psg1-born); free(psg1);return;/* 訂票檢查 */void buy_check(PLA *pla1)char find = y;if (pla1-l_num - pla1-bu

32、y_num) up_hour, pla1-up_min, pla1-addr_dst, pla1-p_num, +pla1-buy_num);bflag = 1; / 訂票成功 gsave = 1;save_pla_info(); / 保存文件/* 按航班號(hào)查詢 */void search_pla_num(void)int num;char find;PLA *pla1, *pla2;while (1) buy_again:printf(請(qǐng)輸入你需要預(yù)訂的航班號(hào)(非數(shù)字鍵返回上層):);fflush(stdin);if (!(scanf(%d, &num)return;pla1 = pla_h

33、ead;pla2 = pla1;while (pla1) if (num = pla1-p_num) printf(n航班:%d的信息如下:, pla1-p_num);printf(n航班號(hào) 載客數(shù) 起飛時(shí)間 降落地點(diǎn) 降落時(shí)間 單價(jià) 剩余票數(shù)n);make_line(_, 70);printf(%d%9d%6d:%2d%11s%7d:%2d%7s%8dn, pla1-p_num, pla1-l_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price, (pla1-l_nu

34、m - pla1-buy_num);make_line(_, 70);buy_check(pla1);make_line(_, 70); printf(繼續(xù)訂票請(qǐng)鍵入y,其他鍵返回上一層菜單:);fflush(stdin);find = getchar();if (y != find & Y != find)return;goto buy_again;else pla2 = pla1;pla1 = pla1-next;printf(n未找到該航班信息!n);/getch();/return;/* 按降落地點(diǎn)查詢 */void search_destination(void)int num =

35、0;char dst15;PLA *pla1, *pla2;printf(請(qǐng)輸入目的地:);scanf(%s, dst);pla1 = pla_head;pla2 = pla1;while (pla1) if (strcmp(dst, pla1-addr_dst) = 0) /* 有多個(gè)航班有同一個(gè)降落地點(diǎn)時(shí) */ if (num = 0) / 只顯示一次 printf(n航班號(hào) 載客數(shù) 起飛時(shí)間 降落地點(diǎn) 降落時(shí)間 單價(jià) 剩余票數(shù)n);make_line(_, 70);num+;printf(%d%9d%6d:%2d%10s%8d:%2d%7s%7dn, pla1-p_num, pla1-l

36、_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price,(pla1-l_num - pla1-buy_num);make_line(_, 70);pla2 = pla1;pla1 = pla1-next;if (0 = num) printf(n抱歉,飛往%s的航班尚未開通。n任意鍵返回上層菜單. , dst);getch();return;search_pla_num();/* 查詢航班信息 */void search(void)char n = 1;while (n)

37、 system(cls);printf(t查詢航班信息n);make_line(_, 40);printf(t1. 按航班號(hào)查詢n); printf(t2. 按降落地點(diǎn)n);printf(t0. 返回主菜單n); make_line(_, 40); printf(n請(qǐng)選擇菜單:); while (n) search_again: fflush(stdin);n = getchar();fflush(stdin);switch (n) case 1: system(cls); search_pla_num(); break; case 2: system(cls); search_destina

38、tion(); break;case 0: return;default: printf(錯(cuò)誤!請(qǐng)重新輸入: );goto search_again;break;/* 檢查所要增加的航班記錄是否存在 */int check_pla_num(PLA *pla)int p_num, i = 0;char ch = c;PLA *pla1, *pla2;while (c = ch) printf(航班號(hào):);fflush(stdin);while (scanf(%d, &p_num) != 1) fflush(stdin);printf(n輸入出錯(cuò),請(qǐng)輸入數(shù)字: );pla1 = pla_head;

39、pla2 = pla1;while (pla1) if (pla1-p_num = p_num) printf(n航班%d已存在,請(qǐng)重新確認(rèn)!n, pla1-p_num);make_line(_, 30);printf(n鍵入“C”繼續(xù)添加信息,其余鍵返回: );fflush(stdin);scanf(%c, &ch);getchar();if (ch != c & ch != C) return 1;system(cls);break;else pla2 = pla1;pla1 = pla1-next;ch = y;if (pla1 = NULL) pla-p_num = p_num;ret

40、urn 0;return 0;/*檢查價(jià)格*/void check_price(char price10)int i;while (scanf(%s, price) for (i = 0; i 9 | pricei p_num) printf(n航班號(hào) 載客數(shù) 起飛時(shí)間 降落地點(diǎn) 降落時(shí)間 單價(jià)n);make_line(_, 70);printf(%4d%6d%7d:%2d%12s%7d:%2d%7sn, pla1-p_num, pla1-l_num, pla1-up_hour, pla1-up_min, pla1-addr_dst, pla1-down_hour, pla1-down_min, pla1-price);make_line(_, 70);printf(您確定要修改該航班嗎? (y / n) );fflush(stdin);mod_pla = getchar();if (y != mod_pla & Y != mod_pla)return;system(cls);m = check_pla_num(pla1); / 檢查所要增

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論