飛機(jī)定票系統(tǒng)C語言課程報(bào)告_第1頁
飛機(jī)定票系統(tǒng)C語言課程報(bào)告_第2頁
飛機(jī)定票系統(tǒng)C語言課程報(bào)告_第3頁
飛機(jī)定票系統(tǒng)C語言課程報(bào)告_第4頁
飛機(jī)定票系統(tǒng)C語言課程報(bào)告_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 / 80 文檔可自由編輯打印一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1設(shè)計(jì)內(nèi)容:見附錄2設(shè)計(jì)要求:1) 設(shè)計(jì)正確,方案合理。2) 界面友好,使用方便。3) 程序精煉,結(jié)構(gòu)清晰。4) 設(shè)計(jì)報(bào)告 5000 字以上,含程序設(shè)計(jì)說明,用戶使用說明,源程序清單及程序框圖。5) 上機(jī)演示。二、進(jìn)度安排第一周 星期五: 課題分配,查閱資料第二周星期日: 總體設(shè)計(jì),詳細(xì)設(shè)計(jì)星期二: 編程,上機(jī)調(diào)試、修改程序星期四: 編程,上機(jī)調(diào)試、修改程序星期五: 答辯撰寫課程設(shè)計(jì)報(bào)告附:課程設(shè)計(jì)報(bào)告裝訂順序:封面、任務(wù)書、目錄、正文、評(píng)分、附件(A4 大小的圖紙及程序清單) 。 正文的格式:一級(jí)標(biāo)題用 3 號(hào)黑體,二級(jí)標(biāo)題用四號(hào)宋體加粗

2、,正文用小四號(hào)宋體;行距為 22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖) ;三、主要功能的實(shí)現(xiàn)(至少要有一個(gè)主要模塊的流程圖) ;四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對(duì)程序?qū)懗霰匾淖⑨專?。正文總字?jǐn)?shù)要求在 5000 字以上(不含程序原代碼) 。2 / 80 文檔可自由編輯打印設(shè)計(jì)課題四:飛機(jī)訂票系統(tǒng)設(shè)計(jì)課題四:飛機(jī)訂票系統(tǒng)一、問題描述:本系統(tǒng)可以用來實(shí)現(xiàn)對(duì)訂票信息進(jìn)行輸出,顯示,退票,查詢,保存等,并保存文件中,以達(dá)到對(duì)飛機(jī)訂票信息進(jìn)行隨時(shí)的訂票,查詢何退票的操作管理系統(tǒng).二、功能描述:本系統(tǒng)采用一個(gè)包含 N 個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)

3、數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:航班號(hào),出發(fā)地,目的地,價(jià)格,等信息,。完成以下模塊:1.訂票2.顯示3.退票4.查詢5.保存6.退出系統(tǒng)3、測(cè)試四、其它:對(duì)該系統(tǒng)有興趣的同學(xué)可以在實(shí)現(xiàn)系統(tǒng)基本功能后,完善系統(tǒng)的其它功能。3 / 80 文檔可自由編輯打印目錄一、功能簡(jiǎn)介一、功能簡(jiǎn)介.1 11.11.1 主要功能介紹主要功能介紹 .1 12.12.1 輸入輸出的要求輸入輸出的要求 .1 1二、概要設(shè)計(jì)二、概要設(shè)計(jì).2 22.12.1 程序的模塊程序的模塊 .2 22.22.2 結(jié)構(gòu)體結(jié)構(gòu)體 .2 22.32.3 文件的定義文件的定義 .3 3三、三、 測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù).4 43.13.1 機(jī)票信息文件機(jī)票信

4、息文件 .4 43.23.2 旅客信息信息登記旅客信息信息登記 .4 4四、詳細(xì)設(shè)計(jì)四、詳細(xì)設(shè)計(jì).5 54.14.1 系統(tǒng)總體結(jié)構(gòu)系統(tǒng)總體結(jié)構(gòu) .5 54.24.2 密碼模塊函數(shù)密碼模塊函數(shù) voidvoid checkcode()checkcode() .6 64.34.3 機(jī)票信息錄入機(jī)票信息錄入 voidvoid inputinfoinputinfo()流程圖()流程圖.7 74.44.4 訂票系統(tǒng)訂票系統(tǒng) voidvoid bookticket()bookticket()流程圖流程圖.8 84.54.5 顯示模塊顯示模塊 voidvoid display()display()流程圖流程

5、圖.9 94.64.6 退票系統(tǒng)退票系統(tǒng) voidvoid returnticket()returnticket()流程圖流程圖.1010五、使用說明五、使用說明.11115.15.1 主界面主界面 .11115.25.2 機(jī)票信息管理(保存)機(jī)票信息管理(保存) .12125.35.3 訂票系統(tǒng)使用訂票系統(tǒng)使用 .15154 / 80 文檔可自由編輯打印5.45.4 退票系統(tǒng)退票系統(tǒng) .1717六、課程設(shè)計(jì)總結(jié)六、課程設(shè)計(jì)總結(jié).19196.16.1 課程設(shè)計(jì)心得:課程設(shè)計(jì)心得: .19196.26.2 在程序設(shè)計(jì)中的問題和解決:在程序設(shè)計(jì)中的問題和解決: .1919附錄附錄.2020源程序清

6、單(帶注釋)源程序清單(帶注釋).20201.1.機(jī)票信息錄入(帶注釋):機(jī)票信息錄入(帶注釋):.20203.3.源程序清單:(附)源程序清單:(附).3131參考文獻(xiàn)參考文獻(xiàn).7575計(jì)算機(jī)與通信學(xué)院課程設(shè)計(jì)評(píng)分表計(jì)算機(jī)與通信學(xué)院課程設(shè)計(jì)評(píng)分表.76761 / 80 文檔可自由編輯打印一、功能簡(jiǎn)介1.11.1 主要功能介紹主要功能介紹 本程序能輸入最多 1000 個(gè)機(jī)票信息,管理員在保存功能中通過密碼驗(yàn)證輸入機(jī)票信息,可以對(duì)機(jī)票信息進(jìn)行查詢;修改;刪除等功能。一般用戶可以使用訂票;顯示;退票等功能,在訂票時(shí)用戶輸入密碼在退票時(shí)通過驗(yàn)證后成功退票。具體功能如下:1 、保存模塊: 1 機(jī)票信息

7、錄入 2 查詢所有機(jī)票 3 修改機(jī)票信息 4 刪除機(jī)票信息有機(jī)票信息的管理,對(duì)機(jī)票信息輸入,查詢,修改,刪除。2、訂票模塊:當(dāng)有機(jī)票信息后可以訂票,訂票時(shí)輸入航班號(hào)(進(jìn)入時(shí)有可以查詢 所有機(jī)票信息)出現(xiàn)航班信息,確定訂票后輸入個(gè)人信息:姓名,性別,證件號(hào),聯(lián)系電話,密碼(退票時(shí)用) 。出現(xiàn)您的個(gè)人信息,確定后回車訂票結(jié)束。3 顯示模塊: 1 全部 2 航班號(hào) 3 出發(fā)地 4 目的地按上述方式查看機(jī)票信息4 退票模塊:(可以選擇查看航班信息) 1 姓名 2 證件號(hào)當(dāng)輸入姓名或證件號(hào)后會(huì)顯示您定的航班信息,再要求輸入密碼,當(dāng)密碼正 確時(shí)會(huì)顯示您的個(gè)人信息,回車再是否確定退票。5 查詢模塊:(輸入管

8、理密碼)輸入航班號(hào),顯示航班信息 和所有乘客個(gè)人信息2.12.1 輸入輸出的要求輸入輸出的要求當(dāng)要輸入密碼時(shí)一般為 1234,在界面中無提示時(shí)當(dāng)要繼續(xù)請(qǐng)按回車,其他的請(qǐng)按提示操作,由于時(shí)間和能力的關(guān)系沒有考慮到意外情況請(qǐng)按提示操作。2 / 80 文檔可自由編輯打印二、概要設(shè)計(jì)2.12.1 程序的模塊程序的模塊1、 保存模塊:含有機(jī)票信息的管理,對(duì)機(jī)票信息輸入,查詢,修改,刪除。2、訂票模塊:當(dāng)有機(jī)票信息后可以訂票,訂票時(shí)輸入航班號(hào)(進(jìn)入時(shí)有可以查詢 所有機(jī)票信息)出現(xiàn)航班信息,確定訂票后輸入個(gè)人信息:姓名,性別,證件號(hào), 聯(lián)系電話,密碼(退票時(shí)用) 。出現(xiàn)您的個(gè)人信息,確定后回車訂票 結(jié)束。3

9、、顯示模塊:含全部;航班號(hào);出發(fā)地;目的地等方式查詢所有機(jī)票信息。4、退票模塊:當(dāng)輸入姓名或證件號(hào)后會(huì)顯示您定的航班信息,再要求輸入密碼,當(dāng)密碼正確時(shí)會(huì)顯示您的個(gè)人信息,回車再是否確定退票。5 查詢模塊:(輸入管理密碼)輸入航班號(hào),顯示航班信息 和所有乘客個(gè)人信息2.22.2 結(jié)構(gòu)體結(jié)構(gòu)體struct travellerinfo/旅客信息結(jié)構(gòu)char fightnum 10;/航班號(hào)char name 10; /姓名char sex 5; /性別char idnum 20;/證件號(hào)碼char password 10;/密碼char poto 12; /聯(lián)系電話;struct fightinfo

10、/機(jī)票信息結(jié)構(gòu)體3 / 80 文檔可自由編輯打印char fightnum 10;/航班號(hào)char start 8;/出發(fā)地char destination 8;/目的地unsigned int price;/價(jià)格unsigned int goyear;/出發(fā)時(shí)間 年unsigned int gomoth;/月unsigned int goday;/日unsigned int gohour;/時(shí)unsigned int gominute;/分unsigned int arryear;/到達(dá)時(shí)間 年unsigned int arrmoth;/月unsigned int arrday;/日unsi

11、gned int arrhour;/時(shí)unsigned int arrminute;/分unsigned int rebate;/折扣unsigned int allsticket;/總票數(shù)unsigned int surplusticket;/剩余票數(shù);struct allfightinfo /機(jī)票全部結(jié)構(gòu)struct travellerinfo fight;/旅客信息結(jié)構(gòu)struct fightinfo fight1;/機(jī)票信息結(jié)構(gòu)體;2.32.3 文件的定義文件的定義FILE *traveller; /存旅客信息數(shù)據(jù)文件FILE *fight; /存機(jī)票信息數(shù)據(jù)文件char =旅客信息信

12、息登記.dat; /記錄旅客信息登記char =機(jī)票信息.dat; /記錄機(jī)票信息4 / 80 文檔可自由編輯打印3、測(cè)試數(shù)據(jù)3.13.1 機(jī)票信息文件機(jī)票信息文件航班號(hào)出發(fā)地目的地 價(jià)格 發(fā)月-日| 時(shí)-分到月-日| 時(shí)-分|折扣| 總票|余票123長(zhǎng)沙 衡陽 170 1-1 12: 0 2-2 13: 0 89 240 238T1234 衡陽 廣州 280 1-1 12:0 2-2 13: 0 60 240 240 T12345 衡陽 廣州 230 1-1 12:11 2-2 13:12 60 241 2413.23.2 旅客信息信息登記旅客信息信息登記航班號(hào) | 姓名 | 性別| 證件號(hào)

13、 | 聯(lián)系電話 | 密碼 123 肖雙喜 男 2 123123 余榮川 男 2 2142452314 12345 5 / 80 文檔可自由編輯打印四、詳細(xì)設(shè)計(jì)4 4.1.1 系統(tǒng)總體結(jié)構(gòu)系統(tǒng)總體結(jié)構(gòu)退圖 4.1 系統(tǒng)總體結(jié)構(gòu)圖在這個(gè)總體框架中,我們可以整體地看到這個(gè)系統(tǒng)運(yùn)行流程,所調(diào)用幾個(gè)重要函數(shù)。 訂票查詢所有航班輸入旅客信息輸入航班號(hào)顯示 全部 航班號(hào) 出發(fā)地 目的地 退票查詢所有航班姓名證件號(hào)查詢密碼輸入航班號(hào)航班信息和旅客信息保存 機(jī)票信息錄入 查詢所有機(jī)票 修改機(jī)票刪除機(jī)票信息飛機(jī)訂票系統(tǒng)6 / 80 文檔可自由編輯打印4.24.2 密碼模塊函數(shù)密碼模塊函數(shù) voidvoid che

14、ckcodecheckcode()()該模塊包括密碼的輸入并驗(yàn)證,修改密碼。算法如下:N YN Y開始打開 code.txt打開文件成功?讀出正確密碼到co20輸入要驗(yàn)證的密碼到 co120并驗(yàn)證密碼正確?進(jìn)入管理系統(tǒng)結(jié)束初始化密碼到 co20將該密碼寫入到 code.txt重新輸入密碼正確?7 / 80 文檔可自由編輯打印密碼驗(yàn)證4.3 機(jī)票信息錄入機(jī)票信息錄入 void inputinfo()流程圖()流程圖 無效重新輸入 無效重新輸入 無效重新輸入 打開文件讀取數(shù)據(jù)輸入航班號(hào)輸入出發(fā)信息輸入到達(dá)信息折扣寫入文件是否輸入下一個(gè)信息8 / 80 文檔可自由編輯打印4.44.4 訂票系統(tǒng)訂票系

15、統(tǒng) voidvoid bookticketbookticket()()流程圖流程圖在有航班信息的情況下可以進(jìn)行訂票操作。否 是否 是否 是否 是否否否結(jié)束開始打開文件1輸入航班號(hào)讀取文件 1打開文件 2讀取文件 2輸入個(gè)人信息顯示航班信息保存查詢所有確定訂票提示放棄顯示航班信息9 / 80 文檔可自由編輯打印4.54.5 顯示模塊顯示模塊 voidvoid display()display()流程圖流程圖否 是 否 是是 否結(jié)束顯示模塊打開文件顯示查詢方式讀取數(shù)據(jù)輸入查詢信息顯示航班信息有無數(shù)據(jù)全部查詢10 / 80 文檔可自由編輯打印顯示所有或條件航班信息4.64.6 退票系統(tǒng)退票系統(tǒng) vo

16、idvoid returnticket()returnticket()流程圖流程圖否 是否 是否 是否 是否否返回開始打開文件1讀取文件 1打開文件 2讀取文件 2顯示個(gè)人信息顯示航班信息密碼?顯示信息輸入方式確定退票提示密碼錯(cuò)誤輸入方式及信息11 / 80 文檔可自由編輯打印五、使用說明 5.15.1 主界面主界面5-15-11.程序歡迎界面(對(duì)系統(tǒng)的說明,及程序分組名單)停留 15s 結(jié)束12 / 80 文檔可自由編輯打印5-25-2 2、程序主界面(按數(shù)字 1-5 再回車)進(jìn)入其他功能5.25.2 機(jī)票信息管理(保存)機(jī)票信息管理(保存)5-35-31、輸入密碼(第一次設(shè)置密碼 1234

17、)機(jī)票信息管理13 / 80 文檔可自由編輯打印5-45-42、選 1 進(jìn)入機(jī)票信息錄入5-55-53、選 2 查詢所有航班信息5-614 / 80 文檔可自由編輯打印4、選 3 修改航班信息,確定后進(jìn)入查詢所有航班 5-7 5、輸入航班號(hào) 顯示航班信息 要求輸入修改信息5-815 / 80 文檔可自由編輯打印6、刪除請(qǐng)謹(jǐn)慎,全部刪除會(huì)刪除所有文件5.3 訂票系統(tǒng)使用訂票系統(tǒng)使用5-81、定票時(shí)查詢所有的航班信息5-916 / 80 文檔可自由編輯打印2、輸入正確的航班號(hào)5-103、訂票時(shí)輸入個(gè)人信息17 / 80 文檔可自由編輯打印5.45.4 退票系統(tǒng)退票系統(tǒng)5-111、進(jìn)入退票系統(tǒng)是否查

18、詢所有機(jī)票信息5-1218 / 80 文檔可自由編輯打印2、選擇輸入信息輸入的方式并輸入5-133、退票時(shí)的信息顯示然后確定19 / 80 文檔可自由編輯打印六、課程設(shè)計(jì)總結(jié)6.16.1 課程設(shè)計(jì)心得:課程設(shè)計(jì)心得: 課程設(shè)計(jì)給我一個(gè)學(xué)以致用的機(jī)會(huì),剛開始的時(shí)候還以為學(xué)這黑黑的東西沒用,只是一些簡(jiǎn)單的計(jì)算。經(jīng)過了這次的練習(xí)我才發(fā)現(xiàn)原來的黑屏有它自己的好處,通過學(xué)習(xí)也發(fā)現(xiàn)原來這種黑屏就是那些應(yīng)用程序的原型,不論你以后學(xué)程序開發(fā)還是網(wǎng)頁的制作都有很好大好處,這些基礎(chǔ)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)

19、技術(shù)發(fā)展的日新月異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計(jì)算機(jī)開發(fā)技術(shù)是十分重要的。回顧起此次課程設(shè)計(jì),至今我們?nèi)愿锌H多,的確,自從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。通過這次的學(xué)習(xí)我發(fā)現(xiàn)以后不管是哪一科我們盡量要把它拿過來使用,只有把知識(shí)應(yīng)用到實(shí)際生活

20、中才能說這知識(shí)是自己的啦。在以后找工作中這些作品就會(huì)是我的學(xué)習(xí)憑證,是我的能力的體現(xiàn),不難想象一個(gè)公司要的是一些實(shí)際的東西不需要太多的理論。6.2 在程序在程序設(shè)計(jì)設(shè)計(jì)中的中的問題問題和解決:和解決:在訂票系統(tǒng)中我們發(fā)現(xiàn),在訂票時(shí)我們的把機(jī)票信息中的剩余票數(shù)要減少一個(gè),而在20 / 80 文檔可自由編輯打印退票時(shí)我們的把剩余票數(shù)加以個(gè),由于在文件的定義時(shí)不好把機(jī)票信息文件和旅客信息文件放一起,所以在修改機(jī)票剩余票數(shù)的是侯的打開兩個(gè)文件然后得對(duì)兩個(gè)文件進(jìn)行修改。再保存模塊得把機(jī)票的信息錄入進(jìn)去,所以有很多不分都得寫,像機(jī)票信息的錄入,修改,刪除,這樣一來就像是寫一個(gè)機(jī)票信息管理系統(tǒng)一樣,這樣一來

21、導(dǎo)致這個(gè)文件會(huì)很大,很繁瑣。但是還好 c 語言是面向過程的導(dǎo)致很多的程序代碼重復(fù),這樣就在寫好一部分代碼以后就可以進(jìn)行復(fù)制,然后進(jìn)行修改就行,總體來說工作量還不是很大。.附錄源程序清單(帶注釋)源程序清單(帶注釋)1.1.機(jī)票信息錄入(帶注釋):機(jī)票信息錄入(帶注釋):/*機(jī)票信息錄入*/void inputinfo(struct allfightinfo *p_fight)int count;/變量的定義char ch,ch1;/定義變量system(cls);/清屏if(fight(,a+b)=NULL)/打開文件printf(不能打開文件,請(qǐng)確認(rèn)磁盤已滿或 機(jī)票信息.dat 文件沒有損壞

22、);getch();exit(1);/不能打開時(shí)的處理rewind(fightfile); /定位文件頭開始讀取for(count=0;fread(&p_fightcount.fight1,sizeof(struct fightinfo),1,fight)continue; /讀取并計(jì)數(shù)已經(jīng)存的數(shù)據(jù)量printf(ntt-您好,歡迎進(jìn)入中國(guó)民航機(jī)票信息登記系統(tǒng)!-21 / 80 文檔可自由編輯打印n);/輸出字符及提示語句printf(nttt 飛機(jī)票信息登記表n);printf(n 請(qǐng)正確填寫以下信息(系統(tǒng)目前不能完全支持中文(中文有可能出錯(cuò)) ,請(qǐng)用英文或拼音n); printf(-nn)

23、;printf(航班號(hào):);while(countfightMAX&gets(p_fightcount.fight1.fightnum)!=NULL /輸入航班號(hào)&p_fightcount.fight1.fightnum0!=0)printf(n 出發(fā)地:);gets(p_fightcount.fight1.start); /輸入出發(fā)地printf(n 目的地:);gets(p_fightcount.fight1.destination); /輸入目的地fflush(stdin);/清空緩存printf(n 價(jià)格:);scanf(%d,&p_fightcount.fight1.price);/

24、輸入價(jià)格fflush(stdin);/清空緩存ye:printf(n 出發(fā)時(shí)間年:);scanf(%d,&p_fightcount.fight1.goyear);/輸入出發(fā)時(shí)間if(!(1500p_fightcount.fight1.goyear&p_fightcount.fight1.goyear4000)/ 判斷年份是否為有效值printf(ntt 您輸入的年份有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);/不符合時(shí)的處理(下面的輸入一樣)ch1=getch();if(ch1=n|ch=N)/詢問出錯(cuò)時(shí)是否重新輸入22 / 80 文檔可自由編輯打印printf(ntt 您放棄重新輸入年份!)

25、;goto mo;/轉(zhuǎn)至輸入月份printf(ntt 請(qǐng)重新輸入年份!);goto ye;/轉(zhuǎn)至輸入年份fflush(stdin);/清空緩存mo:printf(n 出發(fā)時(shí)間月:);scanf(%d,&p_fightcount.fight1.gomoth);/時(shí)間的輸入if(!(0p_fightcount.fight1.gomoth&p_fightcount.fight1.gomoth=12)/判斷是否有效printf(ntt 您輸入的月份有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);/無效時(shí)的處理ch1=getch();if(ch1=n|ch=N)printf(ntt 您放棄重新輸入月份!);

26、goto da;/轉(zhuǎn)至輸入時(shí)間天printf(ntt 請(qǐng)重新輸入月份!);goto mo;/轉(zhuǎn)至輸入時(shí)間月fflush(stdin);/清空緩存da:printf(n 出發(fā)時(shí)間日:);/時(shí)間天的輸入23 / 80 文檔可自由編輯打印scanf(%d,&p_fightcount.fight1.goday);if(!(0p_fightcount.fight1.goday&p_fightcount.fight1.goday=31)/判斷是否有效printf(ntt 您輸入的日有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);/無效時(shí)的處理ch1=getch();if(ch1=n|ch=N)printf(n

27、tt 您放棄日重新輸入!);goto go;/轉(zhuǎn)至輸入出發(fā)時(shí)間printf(ntt 請(qǐng)重新輸入日!);goto da;/轉(zhuǎn)至輸入時(shí)間天fflush(stdin);/清空緩存go:printf(n 出發(fā)時(shí)間時(shí):);/出發(fā)時(shí)間時(shí)的輸入scanf(%d,&p_fightcount.fight1.gohour);if(!(0=p_fightcount.fight1.gohour&p_fightcount.fight1.gohour=23)/不合適時(shí)的處理printf(ntt 您輸入的時(shí)間有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();/輸入一個(gè)字符if(ch1=n|ch=N)/判斷

28、字符printf(ntt 您放棄時(shí)間重新輸入!);goto gomi; /轉(zhuǎn)至出發(fā)分的輸入24 / 80 文檔可自由編輯打印printf(ntt 請(qǐng)重新輸入時(shí)間!);goto go;fflush(stdin);gomi:printf(n 出發(fā)時(shí)間分:);scanf(%d,&p_fightcount.fight1.gominute);if(!(0=p_fightcount.fight1.gominute&p_fightcount.fight1.gominute=59)printf(ntt 您輸入的時(shí)間有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();if(ch1=n|ch=N)

29、printf(ntt 您放棄時(shí)間重新輸入!);goto arry;printf(ntt 請(qǐng)重新輸入時(shí)間!);goto gomi;fflush(stdin);arry:printf(n 到達(dá)時(shí)間年:);/輸入到達(dá)時(shí)間scanf(%d,&p_fightcount.fight1.arryear);if(p_fightcount.fight1.arryearp_fightcount.fight1.goyear)/判斷輸入到達(dá)的年份是否為有效,到達(dá)時(shí)間不能小于出發(fā)時(shí)間(下同)printf(您輸入的到達(dá)時(shí)間小于起飛時(shí)間,請(qǐng)重新輸入到達(dá)時(shí)間年!25 / 80 文檔可自由編輯打印);goto arry;if(

30、!(1500p_fightcount.fight1.arryear&p_fightcount.fight1.arryear4000)printf(ntt 您輸入的年份有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();if(ch1=n|ch=N)printf(ntt 您放棄重新輸入年份!);goto arrm;printf(ntt 請(qǐng)重新輸入年份!);goto arry;fflush(stdin);arrm:printf(n 到達(dá)時(shí)間月:);scanf(%d,&p_fightcount.fight1.arrmoth);if(p_fightcount.fight1.arryear

31、=p_fightcount.fight1.goyear&p_fightcount.fight1.arrmothp_fightcount.fight1.gomoth)printf(您輸入的到達(dá)時(shí)間小于起飛時(shí)間,請(qǐng)重新輸入到達(dá)時(shí)間月!);goto arrm;if(!(0p_fightcount.fight1.arrmoth&p_fightcount.fight1.arrmo26 / 80 文檔可自由編輯打印th=12)printf(ntt 您輸入的月份有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();if(ch1=n|ch=N)printf(ntt 您放棄重新輸入月份!);got

32、o arrd;printf(ntt 請(qǐng)重新輸入月份!);goto arrm;fflush(stdin);arrd:printf(n 到達(dá)時(shí)間日:);scanf(%d,&p_fightcount.fight1.arrday);if(p_fightcount.fight1.arrmoth=p_fightcount.fight1.gomoth&p_fightcount.fight1.arrdayp_fightcount.fight1.goday)printf(您輸入的到達(dá)時(shí)間小于起飛時(shí)間,請(qǐng)重新輸入到達(dá)時(shí)間日!);goto arrd;if(!(0p_fightcount.fight1.arrday&

33、p_fightcount.fight1.arrday=31)printf(ntt 您輸入的日有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();27 / 80 文檔可自由編輯打印if(ch1=n|ch=N)printf(ntt 您放棄日重新輸入!);goto arrh;printf(ntt 請(qǐng)重新輸入日!);goto arrd;fflush(stdin);arrh:printf(n 到達(dá)時(shí)間時(shí):);scanf(%d,&p_fightcount.fight1.arrhour);if(p_fightcount.fight1.arrmoth=p_fightcount.fight1.g

34、omoth&p_fightcount.fight1.arrday=p_fightcount.fight1.goday&p_fightcount.fight1.arrhourp_fightcount.fight1.gohour)printf(您輸入的到達(dá)時(shí)間小于起飛時(shí)間,請(qǐng)重新輸入到達(dá)時(shí)間時(shí)!);goto arrh;if(!(0=p_fightcount.fight1.arrhour&p_fightcount.fight1.arrhour=23)printf(ntt 您輸入的時(shí)間有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();if(ch1=n|ch=N)printf(ntt

35、您放棄時(shí)間重新輸入!);28 / 80 文檔可自由編輯打印goto arrmi;printf(ntt 請(qǐng)重新輸入時(shí)間!);goto arrh;fflush(stdin);arrmi:printf(n 到達(dá)時(shí)間分:);scanf(%d,&p_fightcount.fight1.arrminute);if(p_fightcount.fight1.arrmoth=p_fightcount.fight1.gomoth&p_fightcount.fight1.arrday=p_fightcount.fight1.goday&p_fightcount.fight1.arrhour=p_fightcount

36、.fight1.gohour&p_fightcount.fight1.arrminutep_fightcount.fight1.gominute)printf(您輸入的到達(dá)時(shí)間小于起飛時(shí)間,請(qǐng)重新輸入到達(dá)時(shí)間分!);goto arrmi;if(!(0=p_fightcount.fight1.arrminute&p_fightcount.fight1.arrminute=59)printf(ntt 您輸入的時(shí)間有點(diǎn)不和實(shí)際!請(qǐng)確定是否重新輸入(y/n);ch1=getch();if(ch1=n|ch=N)printf(ntt 您放棄時(shí)間重新輸入!);goto reb;printf(ntt 請(qǐng)重新

37、輸入時(shí)間!);29 / 80 文檔可自由編輯打印goto arrmi;fflush(stdin);reb:printf(n 折扣:);scanf(%d,&p_fightcount.fight1.rebate);if(!(0p_fightcount.fight1.rebate&p_fightcount.fight1.rebatep_fightcount.fight1.allsticket)30 / 80 文檔可自由編輯打印printf(您輸入的剩余票不合乎實(shí)際!請(qǐng)重新輸入!);goto surp;fflush(stdin);/清空緩存fwrite(&p_fightcount+.fight1,si

38、zeof(struct fightinfo),1,fightfile); /將信息寫入文件 printf(是否錄入下一個(gè)飛機(jī)票信息(y/n);/詢問是否輸入下一個(gè)機(jī)票信息ch=getch(); /輸入一個(gè)字符if(ch=y|ch=Y)/判斷字符的輸入system(cls);printf(n 請(qǐng)輸入下一個(gè)飛機(jī)票信息n);printf(n 航班號(hào):); continue; /繼續(xù)輸入下一個(gè)飛機(jī)票信息 elseprintf(nn 飛機(jī)票信息錄入結(jié)束,返回!);fclose(fightfile); /關(guān)閉文件 getch(); /返回子菜單system(cls);/清屏return ; printf(

39、輸入有誤,終止飛機(jī)票信息錄信,返回!);getch();/等待輸入字符system(cls);31 / 80 文檔可自由編輯打印return ; /返回 3.3.源程序清單:(附)源程序清單:(附)/* * * Author:飛機(jī)訂票系統(tǒng)組 * Datetime:2010/06*/#include#include#include#include#include#define fightMAX 1000void inputinfo(struct allfightinfo *);/機(jī)票信息錄入void (struct allfightinfo *);/旅客信息信息讀取void allabout(s

40、truct allfightinfo *); /查詢所有信息void mofinfo(struct allfightinfo *);/修改機(jī)票信息void password();/密碼驗(yàn)證int checkcode();/身份驗(yàn)證void modifycode();/修改登陸密碼void delinfo(struct allfightinfo *);/刪除void fightcontrol(struct allfightinfo *);/機(jī)票管理模塊void bookticket(struct allfightinfo *p_fight);/訂票系統(tǒng)void display(struct al

41、lfightinfo *p_fight);/顯示模塊void returnticket(struct allfightinfo *p_fight);/退票void enquiry(struct allfightinfo *p_fight);/查詢模塊void welcome();/歡迎int submeun();struct travellerinfo/旅客信息結(jié)構(gòu)char fightnum 10;/航班號(hào)char name 10; /姓名char sex 5; /性別char idnum 20;/證件號(hào)碼char password 10;/密碼char poto 12; /聯(lián)系電話32 /

42、80 文檔可自由編輯打印;struct fightinfo/機(jī)票信息結(jié)構(gòu)體char fightnum 10;/航班號(hào)char start 8;/出發(fā)地char destination 8;/目的地unsigned int price;/價(jià)格unsigned int goyear;/出發(fā)時(shí)間 年unsigned int gomoth;/月unsigned int goday;/日unsigned int gohour;/時(shí)unsigned int gominute;/分unsigned int arryear;/到達(dá)時(shí)間 年unsigned int arrmoth;/月unsigned int

43、arrday;/日unsigned int arrhour;/時(shí)unsigned int arrminute;/分unsigned int rebate;/折扣unsigned int allsticket;/總票數(shù)unsigned int surplusticket;/剩余票數(shù);struct allfightinfo /機(jī)票全部結(jié)構(gòu)struct travellerinfo fight;/旅客信息結(jié)構(gòu)struct fightinfo fight1;/機(jī)票信息結(jié)構(gòu)體;FILE *traveller; /存旅客信息數(shù)據(jù)文件FILE *fight; /存機(jī)票信息數(shù)據(jù)文件char =旅客信息信息登記.

44、dat; /記錄旅客信息登記char =機(jī)票信息.dat; /記錄機(jī)票信息 int main(viod)int in;time_t start,end;struct allfightinfo fightmaxfightMAX; /最大機(jī)票數(shù)struct allfightinfo *p_fight; /指向結(jié)構(gòu)指針p_fight=fightmax;welcome();system(cls);do33 / 80 文檔可自由編輯打印system(cls);in=submeun();switch(in)case 1:bookticket(p_fight);/訂票break;case 2:display

45、(p_fight);/顯示break;case 3:returnticket(p_fight);/退票break;case 4:enquiry(p_fight);/查詢break;case 5:fightcontrol(p_fight);/修改break;case 6:system(cls);printf(nnnnnntttt 暫時(shí)沒有此模塊!);/systemhelp();/幫助getch(); break;case 7:break;while(in!=7);printf(nnnttt 感 謝 使 用 本 系 統(tǒng) ! ! );start=time(NULL);end=time(NULL);w

46、hile(end-start1.5)end=time(NULL);return;/*顯示子菜單*/int submeun()int in;char ch;system(cls);system(color 07);printf(antt-您好,歡迎進(jìn)入中國(guó)民航飛機(jī)訂票系統(tǒng)!-n);printf(nnn);printf(tt-n);printf(tt 飛 機(jī) 訂 票 系 統(tǒng) n);34 / 80 文檔可自由編輯打印printf(tt-n);printf(tt1. 訂 票 n);printf(ttn);printf(tt2. 顯 示 n);printf(ttn);printf(tt3. 退 票 n)

47、;printf(ttn);printf(tt4. 查 詢 n);printf(ttn); printf(tt5. 保 存 n);printf(ttn);printf(tt6. 幫 助 n);printf(ttn);printf(tt7. 退出系統(tǒng) n);printf(tt-n);printf(tt 請(qǐng)您正確選擇:);while(scanf(%d,&in)!=1|(!(0in&in8)while(ch=getchar()!=n)putchar(ch);fflush(stdin);return in;void welcome()time_t start,end;system(color 06);3

48、5 / 80 文檔可自由編輯打印printf(nnn);printf(ttt 歡 迎 使 用 飛 機(jī) 訂 票 系 統(tǒng)!);start=time(NULL);end=time(NULL);while(end-start1)end=time(NULL);printf(nnttt 系統(tǒng)的初始密碼為 1234n);printf(nt 本系統(tǒng)目前不能完全支持中文,可使用英語或拼音等助記方式!n);printf(nt 如果使用修改和刪除功能請(qǐng)謹(jǐn)慎,建議先將資料做好備份,以免因nnttt 系統(tǒng)出錯(cuò)造成數(shù)據(jù)丟失!nn);printf(ttt*組員名單及其任務(wù)分配!*n);printf(訂票 *盧劍鋒 *黃俠n

49、 void bookticket(p_fight);/訂票系統(tǒng) 含(訂票時(shí)乘客信息輸入,對(duì)剩余票的更改)n);printf(顯示 *雷芳桂 *曾蓉n void display(p_fight);/顯示系統(tǒng) 含(瀏覽所有機(jī)票信息(已寫 allabout(p_fight);),按出發(fā)地方式,按到達(dá)地方式, )n);printf(退票 *陳賢威 *陳陽鋒n void returnticket(p_fight);退票系統(tǒng) 含(刪除該乘客的信息,對(duì)剩余票加一)n);printf(查詢 *嚴(yán)旭明 *劉彥亮n void enquiry(p_fight);查詢系統(tǒng) 含(顯示某一機(jī)票所有乘客信息(含密碼) )n

50、);printf(保存 *肖雙喜n void fightcontrol(p_fight);機(jī)票管理模塊 含(機(jī)票信息錄入 void inputinfo(p_fight);,查詢所有信息 void allabout(p_fight);,修改機(jī)票信息 void mofinfo(p_fight); ,刪 除 void delinfo(p_fight);)!);start=time(NULL);end=time(NULL);while(end-start10)end=time(NULL);/*查詢模塊*/void enquiry(struct allfightinfo *p_fight)int cou

51、nt,count1,i,in,j;char ch,ch1;char *temp=NULL;password();system(cls);if(traveller(,r)=NULL)printf(不能打開文件,請(qǐng)確認(rèn)磁盤已滿或 旅客信息.dat 文件沒有損壞);36 / 80 文檔可自由編輯打印getch();exit(1);rewind(travellerfile); /定位文件頭開始讀取for(count1=0;fread(&p_fightcount1.fight,sizeof(struct travellerinfo),1,traveller)continue; fclose(travel

52、lerfile);if(!count1)printf(不能讀取數(shù)據(jù),請(qǐng)確定文件是否存在或已經(jīng)成功錄入數(shù)據(jù)!);getch();system(cls);return ; /反回重新操作 if(fight(,r)=NULL)printf(不能打開文件,請(qǐng)確認(rèn)磁盤已滿或 機(jī)票信息.dat 文件沒有損壞);getch();exit(1);rewind(fightfile); /定位文件頭開始讀取for(count=0;fread(&p_fightcount.fight1,sizeof(struct fightinfo),1,fight)continue;fclose(fightfile); /讀完后關(guān)

53、閉文件if(!count)printf(不能讀取數(shù)據(jù),請(qǐng)確定文件是否存在或已經(jīng)成功錄入數(shù)據(jù)!);getch();system(cls);return ; /反回重新操作 temp=(char*)malloc(20*sizeof(char); /分配內(nèi)存system(cls);fflush(stdin);printf(nnt請(qǐng)輸入你查詢的航班號(hào):);while(gets(temp)!=NULL&temp0!=0)system(cls);for(i=0;icount;i+)37 / 80 文檔可自由編輯打印if(!strcmp(temp,p_fighti.fight1.fightnum)print

54、f(nttt*您要找的航班信息*n);printf( 航班號(hào)|出發(fā)地|目的地| 價(jià)格|發(fā)月-日| 時(shí)-分|到月-日| 時(shí)-分|折扣| 總票|余票n);printf( *n);printf(%10s|%6s|%6s| %4d| %2d-%2d| %2d:%2d|,p_fighti.fight1.fightnum,p_fighti.fight1.start,p_fighti.fight1.destination,p_fighti.fight1.price,p_fighti.fight1.gomoth,p_fighti.fight1.goday,p_fighti.fight1.gohour,p_fi

55、ghti.fight1.gominute);printf( %2d-%2d| %2d:%2d| %2d| %2d| %2d|,p_fighti.fight1.arrmoth,p_fighti.fight1.arrday,p_fighti.fight1.arrhour,p_fighti.fight1.arrminute,p_fighti.fight1.rebate,p_fighti.fight1.allsticket,p_fighti.fight1.surplusticket);printf(nnttt*您找的該航班旅客信息*);printf(n 航班號(hào) | 姓名 | 性別| 證件號(hào) | 聯(lián)系電

56、話 | 密碼 |);printf(n *);for(j=0;jcount1;j+)if(!strcmp(p_fighti.fight1.fightnum,p_fightj.fight.fightnum)printf(n%10s |%10s |%4s |%20s |%12s |%12s|,p_fightj.fight.fightnum,p_,p_fightj.fight.sex,p_fightj.fight.idnum,p_fightj.fight.poto,p_fightj.fight.password);free(temp);printf(繼續(xù)請(qǐng)按任意鍵!)

57、;getch();system(cls);return ;/*退票系統(tǒng)*/38 / 80 文檔可自由編輯打印void returnticket(struct allfightinfo *p_fight)int count,count1,i,j,tmp,in;char ch,ch1;static char *temp=NULL;char *newtemp=NULL;time_t start,end;system(cls);if(fight(,rb)=NULL)printf(不能打開文件,請(qǐng)確認(rèn)磁盤已滿或 機(jī)票信息.dat 文件沒有損壞);getch();exit(1);rewind(fightf

58、ile); /定位文件頭開始讀取for(count=0;fread(&p_fightcount.fight1,sizeof(struct fightinfo),1,fight)continue; fclose(fightfile);if(!count)printf(找不到個(gè)人數(shù)據(jù),請(qǐng)確定文件存在和已經(jīng)成功錄入!);getch();system(cls);return;if(traveller(,a+b)=NULL)printf(不能打開文件,請(qǐng)確認(rèn)磁盤已滿或 旅客信息.dat 文件沒有損壞);getch();exit(1);rewind(travellerfile); /定位文件頭開始讀取fo

59、r(count1=0;fread(&p_fightcount1.fight,sizeof(struct travellerinfo),1,traveller)continue; fclose(travellerfile);printf(ntt-您好,歡迎進(jìn)入中國(guó)民航飛機(jī)退票系統(tǒng)!-n);printf(-nn);printf(是否要查詢所有飛機(jī)票信息(y/n);/39 / 80 文檔可自由編輯打印ch=getch(); if(ch=y|ch=Y)allabout(p_fight); system(cls);fflush(stdin);printf(nnnn);printf(tn);printf(

60、t 退 票 選 擇 n);printf(t-n);printf(tt 1. 姓 名 n);printf(tn);printf(tt 2. 證 件 號(hào) n);printf(tn);printf(tt 3. 返 回 n);printf(tn);printf(t n);printf(t 請(qǐng)您正確選擇:);while(scanf(%d,&in)!=1|(!(0in&in=3)while(ch=getchar()!=n)putchar(ch);fflush(stdin);if(in=3)return;temp=(char*)malloc(20*sizeof(char); /分配內(nèi)存newtemp=(ch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論