c语言航空订票系统程序设计,C语言航空订票系统
C語言航空訂票系統(tǒng)
這 是 一 篇 用 C 語 言 編 寫 的 航 空 訂 票 系 統(tǒng) 的 論 文 。 該 系 統(tǒng) 使 用 的 是十 字 鏈 表 結 構 , 包 含 有 訂 票 , 退 票 , 錄 入 航 班 信 息 , 查 詢 航 班 余 票 , 查詢 個 人 訂 票 信 息 這 些 功 能 。內 含 詳 細 論 文 格 式 及 程 序 源 代 碼 ( 源 代 碼 附 有 詳 細 注 釋 )XXXXXXXXXX項 目 名 稱 : 航 空 信 息 管 理 系 統(tǒng) 學 生 姓 名 : XXXXXX 學 號 : XXXXXXXXX 班 級 : XXXXXX 指 導 教 師 : XXX 2012 年 12 月 25 日目錄1.系統(tǒng)需求分析 .12.數(shù)據(jù)結構設計及用法說明 .23.詳細設計和編碼 .43.1 訂票模塊 43.2 退票模塊 63.3 錄入模塊 83.4 查詢模塊 94.實驗結果 .104.1 主菜單界面 104.2 查詢功能模塊 104.3 訂票功能模塊 114.4 退票功能模塊 124.5 錄入航班信息模塊 125.體會 .13參考文獻 14附錄:源程序清單 151.系統(tǒng)需求分析本次課程設計要求使用 C 語言編寫一個航空客運訂票系統(tǒng)程序,根據(jù)所有內容都可以只在內存中運行可得知該模擬的航空客運訂票系統(tǒng)不需要用文件保存相關輸入,運行過程中的數(shù)據(jù)。同時該航空客運訂票系統(tǒng)要求模擬實際航空訂票系統(tǒng),具有查詢航線,客票預訂,辦理退票,錄入航班信息等基本功能。查詢航線功能根據(jù)實際分析應該具有通過用戶輸入的要查詢終點站名輸出該終點站的終點站,航班號,飛機號,飛行日期,剩余票量的功能。訂票功能應當設計能夠根據(jù)用戶輸入的姓名和終點站,查詢該終點站的余票并提示剩余票數(shù),之后讓用戶輸入需要訂購的票數(shù)并執(zhí)行相關操作。退票功能可設計成要求用戶輸入姓名和航班號來查找該用戶的的訂票信息并打印,再詢問是否退票。錄入功能是必要的,用來錄入航班節(jié)點信息。2.數(shù)據(jù)結構設計及用法說明根據(jù)該航空信息管理系統(tǒng)的功能要求,應當設計菜單模塊,查詢模塊,訂票模塊,退票模塊,錄入信息模塊等幾個基本模塊,main 函數(shù)里調用菜單模塊打印選項菜單,然后用switch case 接收用戶選擇,并依此跳轉到相應模塊執(zhí)行。同時,為達到能夠執(zhí)行一個模塊后繼續(xù)返回主菜單執(zhí)行而不是直接退出的目的設計將菜單模塊及相應子功能模塊放入 for死循環(huán)里,當輸入 5 則直接退出程序。按該系統(tǒng)的功能分析得出存放在系統(tǒng)中各項數(shù)據(jù)不需要使用排序功能,因而使用鏈表保存數(shù)據(jù)比用順序表和數(shù)組要便捷并且占用內存少,所以定義 linklist 類型,內部有data,next 指針 2 個數(shù)據(jù)。其中定義一個 flight 類型的結構體用來存放實際數(shù)據(jù):typedef struct{char flightname[MAX];//終點站名 int flightid;//航班號 int date;//飛行日期 int max;//乘員定額 int left;//余票量 int wait;//排隊中的票數(shù)}flight;//存儲 “航班信息“ 中 “實際數(shù)據(jù)“ 的結構體。flight 結構體中 left 存放航班剩余票數(shù),wait 存放當前航班候處于候補狀態(tài)的人缺票的總數(shù)。同時建另一條 linklist_2 類型保存訂票人員的相關信息,包括用戶姓名,用戶已定票數(shù),用戶缺少票數(shù),指向下一個節(jié)點的 next 指針等數(shù)據(jù):typedef struct lnode_2{char name[MAX];//用戶姓名 int num;//當前用戶定的的票數(shù)int need;//當前用戶缺少的票數(shù)lnode_2 *next;//指向下一個節(jié)點的指針}linklist_2;//存儲 用戶信息 的鏈表。 其中 need 代表當前用戶缺少的票數(shù),這些票數(shù)之和存放在航班候補票數(shù)中。上述 2 個結構體類型構成 linklist 類型:typedef struct lnode_1{flight *data;//“航班信息“實際數(shù)據(jù) lnode_1 *next;//指向下一個節(jié)點的指針 }linklist;//存儲“航班信息“的鏈表。其中 data 用來存放實際數(shù)據(jù),里面包含終點站名,航班號,飛行日期,乘員定額,余票量,處于排隊中的票數(shù)等等信息,next 是指向下一個結點的指針。而根據(jù)系統(tǒng)功能實際分析發(fā)現(xiàn)實際算法中經常需要查詢航班下對應的有哪些人員定了該航班票,因而將人員信息鏈表鏈接到航班信息鏈表中更為方便,在航班連表的 data 實際數(shù)據(jù)里放一個人員信息鏈表的頭指針:linklist_2 *top2;,當有新人員訂票則新建一個人員節(jié)點,將節(jié)點連接到這個頭指針下面,這樣的鏈表結構更方便保存和查詢系統(tǒng)中各項數(shù)據(jù)。最后在程序開頭創(chuàng)建鏈表頭結點并分配內存:linklist *top=(linklist *)malloc(sizeof(linklist));程序運行過程中產生的數(shù)據(jù)依次保存在這個頭結點后面的結點。圖 2-1 航班鏈表存儲結構圖3.詳細設計和編碼 3.1 訂票模塊進入訂票模塊先要求用戶輸入姓名,再輸入需要定票的終點站名,然后遍歷所有航班節(jié)點的名稱信息看是否存在該終點站,如果不存在則提示“ 沒有該站點信息,請重新輸入:“要求重新輸入終點站名,知道輸入的終點站名存在,然后創(chuàng)建新人員節(jié)點并分配空間:linklist_2 *s=(linklist_2 *)malloc(sizeof(linklist_2));再用尾插法插入新節(jié)點:while(p-next!=NULL)//定位當前人員連表的到最后一個節(jié)點p=p-next;p-next=s;//將新節(jié)點 s 連接上s-next=NULL;//初始化新節(jié)點下一個節(jié)點為空并保存當前訂票人的名子,輸入的訂票數(shù)量。當輸入訂票數(shù)量時進行對票數(shù)進行判斷if(num0while(m!=NULL){if(strcmp(flightname1,m-data-flightname)==0)break;//退出循環(huán)m=m-next;}程序流程圖如 3-2 所示:不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不圖 3-2 退票模塊結構圖3.3 錄入模塊錄入航班信息模塊先創(chuàng)建新航班節(jié)點并為新節(jié)點分配內存空間:linklist *n=(linklist *)malloc(sizeof(linklist));再用尾插法將新節(jié)點插入:while(m-next!=NULL)m=m-next;//使 m 指針指向最后一個節(jié)點m-next=n;n-next=NULL;//使新節(jié)點下一個節(jié)點為空然后初始化當前航班節(jié)點的實際數(shù)據(jù)里的保存人員信息的頭指針為空:flight *a=(flight *)malloc(sizeof(flight));linklist_2 *b=(linklist_2 *)malloc(sizeof(linklist_2));n-data=a;//初始化新節(jié)點里的 data 數(shù)據(jù)n-data-top2=b;//初
總結
以上是生活随笔為你收集整理的c语言航空订票系统程序设计,C语言航空订票系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces 803E--Rom
- 下一篇: [小技巧] ArrayList与Link