




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
r~i基于C語言的航空訂票系統(tǒng)的設(shè)計與實現(xiàn)口習(xí)不、IE不白而rjj術(shù)牛學(xué)10212811135號武漢理工大學(xué)華夏學(xué)院課程設(shè)計課程名稱數(shù)據(jù)結(jié)構(gòu)題目基于c語言的航空訂票系統(tǒng)的設(shè)計與實現(xiàn)――訂票模塊專業(yè)軟件工程班級軟件1111班姓名成績-指導(dǎo)教師黃啟荃2012年6月18日至2012年6月21日課程設(shè)計任務(wù)書設(shè)計題目:基于C語言的航空訂票系統(tǒng)的設(shè)計與實現(xiàn)----訂票模塊
奸口
僧而設(shè)計目的學(xué)會分析研究數(shù)據(jù)對象的特性;學(xué)會數(shù)據(jù)的組織方法;選擇合適的數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)以及相應(yīng)操作,把現(xiàn)實世界中的問題轉(zhuǎn)換為計算機(jī)內(nèi)部的表示和處理;提高學(xué)生的程序設(shè)計能力、提高算法設(shè)計質(zhì)量與程序設(shè)計素質(zhì);設(shè)計任務(wù)(在規(guī)定的時間內(nèi)完成下列任務(wù))本項目旨在通過一個簡化的航空訂票系統(tǒng)項目,使學(xué)生在完成對C程序設(shè)計語言和基本數(shù)據(jù)結(jié)構(gòu)與算法課程的學(xué)習(xí)后,綜合運用所學(xué)到的語法和算法知識,構(gòu)建一個接近實際應(yīng)用場景的軟件系統(tǒng),以達(dá)到復(fù)習(xí)和鞏固前期課程內(nèi)容并為后續(xù)課程奠定基礎(chǔ)的目的。本系統(tǒng)要求實現(xiàn)訂票功能模塊,訂票功能模塊通過航班號普通用戶可以在輸入自己姓名和身份證號后,完成訂票操作。(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;具體要完成的任務(wù)是:編制完成上述問題的C語言程序、進(jìn)行程序調(diào)試并能得出正確的運行結(jié)果。寫出規(guī)范的課程設(shè)計說明書;時間安排(第19周—6.18至6.25)第一天 布置課程設(shè)計任務(wù),講授VC安裝,程序結(jié)構(gòu)、數(shù)組、函數(shù)、文件;第二天 查閱資料,講授排序,查詢算法實現(xiàn);了解航空售票管理系統(tǒng)的需求;第三天 講授快速排序、最短路徑問題、哈希查找的算法實現(xiàn),準(zhǔn)備程序第四天 完成訂票模塊的設(shè)計與實現(xiàn),上機(jī)調(diào)試程序,教師驗收;712第五天 提交課程設(shè)計報告,下午4點前提交課程設(shè)計報告及文檔至綜合樓712O具體要求課程設(shè)計報告按統(tǒng)一通用格式書寫,具體內(nèi)容包括:①設(shè)計任務(wù)與要求②總體方案與說明 ③軟件主要模塊的流程圖④源程序清單與注釋⑤問題分析與解決方案⑥小結(jié)與體會附錄:①源程序(必須有簡單注釋) ②使用說明 ③參考資料扌指導(dǎo)教師簽名:2012年6月15日教研室主任(或責(zé)任教師)簽名:專輛2012年6月16日數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告1.設(shè)計任務(wù)與要求1.1設(shè)計任務(wù)全面熟悉、掌握C語言和數(shù)據(jù)結(jié)構(gòu)基本知識。掌握C程序設(shè)計中的一系列問題,把C語言與數(shù)據(jù)結(jié)構(gòu)和實際結(jié)合起來,增強(qiáng)對不同問題的一些處理。掌握分析結(jié)果的若干有效方法,進(jìn)一步提高上機(jī)動手能力這次設(shè)計任務(wù)是通過一個簡化的航空訂票系統(tǒng)項目,使學(xué)生在完成對C程序設(shè)計語言和基本數(shù)據(jù)結(jié)構(gòu)與算法課程的學(xué)習(xí)后,綜合運用所學(xué)到的語法和算法知識,構(gòu)建一個接近實際應(yīng)用場景的軟件系統(tǒng),以達(dá)到復(fù)習(xí)和鞏固前期課程內(nèi)容并為后續(xù)課程奠定基礎(chǔ)的目的口口口口不盲而1.2設(shè)計要求這設(shè)計要求實現(xiàn)訂票功能模塊,訂票功能模塊通過航班號普通用戶可以在輸入自己姓名和身份證號后,完成訂票操作。(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班。編制完c語言程序后進(jìn)行程序調(diào)試并能得出正確的運行結(jié)果且寫出規(guī)范的課程設(shè)計明書。2.總體方案填寫具體內(nèi)容在這次課設(shè)中,我們需要運用到很多函數(shù),包括文件的打開,結(jié)構(gòu)體的運用,函數(shù)與函數(shù)之間的互相調(diào)用,并且,還涉及到基本的輸入輸出,另外,還涉及到的一個顯示界面問題,這是就需要運用printf這個標(biāo)準(zhǔn)輸出函數(shù),為我們的乘客設(shè)計一個選擇界面和提示,在這個整體中,大多數(shù)的函數(shù)都是我們用戶自定義的函數(shù),所以,在運用時需要先定義后使用。我們總體的設(shè)計方案(僅僅對于訂票系統(tǒng)而言)是當(dāng)用戶輸入航班號訂票,當(dāng)訂票成功時,則將該用戶的信息存儲到原來的訂票記不盲而錄中,并將該航班的剩余票數(shù)時,系統(tǒng)會自動檢查此航班,如果存在此航班,則再次檢查該航班是否還有票,如果沒有該航班,則顯示一個提示信息“本航班還未開通,請選擇其他航班”,如果有票,則輸入身份證號和姓名,并把此次訂票的記錄記錄在一個文本文件(即pass.dat)里,如果沒有票了,則顯示"沒票了,是否需要其他航班(y/n)”當(dāng)點擊“y”時,繼續(xù)上述操作,直到結(jié)束減一即可,這樣就完成了訂票了。3.詳細(xì)設(shè)計撰寫具體內(nèi)容(詳細(xì)設(shè)計包括主要模塊的流程圖)不盲而3.1其實,對于程序的主要設(shè)計,在方案中已經(jīng)做了具體說明了,這里只需對做一個簡單的陳述。(1)輸入航班號(2) 判斷航班號是否存在,并做相應(yīng)操作(3) 判斷是否還有剩票,并作相應(yīng)的操作(4) 輸入身份證號和姓名(5) 記錄用戶的訂票信息3.1.6退出訂票系統(tǒng)3.2部分程序流程圖如圖1所示開始訂票AA234航班查詢機(jī)票查詢乘客的輸入選擇退票管理員操作開始訂票AA234航班查詢機(jī)票查詢乘客的輸入選擇退票管理員操作口口lr=h□EHffiCBD請輸入您的身份證C!=y&&Plane=plane_check_id(id,0)無票,是否航班不存請輸入您的姓名輸出用戶的姓名,身份證號,航班是否確定(y/n)以讀的方式打開問件lr=h□EHffi輸出乘客的姓名,身份證關(guān)閉文件沒有找到相應(yīng)的記錄圖1航空訂票系統(tǒng)訂票模塊流程圖4.源程序清單與注釋/*******************************/#include<stdio.h>******/訂票系統(tǒng):航班和用戶信息**********************************#ifndef_INFOR_H#define_INFOR_H〃機(jī)票信息typedefstruct{int m_planeID;//航班號char m_from[10];//出發(fā)城市char m_to[10];//到達(dá)城市char m_date[10];//出發(fā)日期int m_left;〃剩余票數(shù)int m_capacity;//容量float m_price;//價格不盲而intm_rebate;//打折}AirPlane;〃用戶信息typedefstruct(charm_ID[20];//身份證號charm_name[20];//姓名intm_planeID;//航班號charm_ticketnum[15];//票號intm_isFlog;//0確認(rèn)訂票,1取消訂票}Passenger;#endif//_INFOR_Hintmain()(menu();}voidmenu(){intc;while(1){printf("\n—MENU \n");printf("\t[1]航班查詢\n");printf("\t[2]機(jī)票查詢\n");printf("\t[3]訂票\n");printf("\t[4]退票\n");printf("\t[0]退出\n");printf(" \n");printf("\t[5]管理員操作\n");printf(" \n");printf("請輸入:”);scanf("%d",&c);switch(c){case1:奸口僧而plane_check();break;case2:user_check();break;case3:book_ticket();break;case4:return_ticket();break;case5:{charname[20]={0};charpasswd[20]={0};printf("\n請輸入管理員用戶名和密碼:\n");printf("測試:admin1234");scanf("%s%s”,name,passwd);if(strcmp(name,ADMIN)==0&&strcmp(passwd,PASSWD)==0)else{printf("沒有權(quán)限?。。n");}}break;case0:return;}}}voidbook_ticket()//訂票系統(tǒng){intid=0;charc;AirPlaneplane={0};Passengerpass={0};printf("\n—訂票 \n");while(1){printf("請輸入航班號:(0退出訂票)\n");scanf("%d",&id);if(0==id)break;plane=plane_check_id(id,0);
奸口
僧而if(plane.m_planeID==0){printf("航班不存在\n");continue;}if(plane.m_left==0){printf("無票,是否定其它航班(y/n)\n〃);scanf("%c",&c);if(c!='y'&&c!='Y')break;elsecontinue;}printf("請輸入你的身份證號\n");scanf("%s",pass.m_ID);printf("請輸入你的姓名:\n");scanf("%s",pass.m_name);showticket(&plane,&pass);printf("是否確定(y/n)\n");scanf("%c",&c);if(c==,y,||c==,Y,)if(c==,y,||c==,Y,){ticket(pass.m_ticketnum);printf("%s\n",pass.m_ticketnum);pass.m_planeID=plane.m_planeID;showAllUser();}break;}printf("--訂票結(jié)束}void{showAllUser()//顯示所有用戶intr=0;FILE*fd=fopen(USERDAT,"r");Passengerpass={0};if(NULL==fd){printf("%sOPENERROR!\n",USERDAT);return;}printf("\nUSER:\n");printf("|%10s|%20s|PlaneID|%20s\n","NAME","ID","TicketNum");while(1)不盲而不盲而不盲而不盲而口{r=fread(&pass,sizeof(pass),1,fd);if(r<=0)break;printf("|%10s|%20s|%7d|%20s\n",pass.m_name,pass.m_ID,pass.m_planeID,pass.m_ticketnum);break;}fclose(fd);}問題分析與解決方案首先,我當(dāng)時遇到的第一個問題就是如何在“窗體”上顯示乘客的選擇和一些提示信息,然而,我遇到的第二個問題就是不知道如何存儲乘客信息和如何打印出航班信息,作為航班的訂票系統(tǒng)來說,很大一部分內(nèi)容就是保存乘客訂票成功后的信息,對于這兩個問題,后來在老師的講解下,我搞懂了,對于如何在“窗體”上顯示一些信息,解決方案是用printf這個標(biāo)準(zhǔn)函數(shù)在“窗體”上輸出即可,而對于第二個問題,我們則用到了文件的打開和存儲(因為我在學(xué)c的時候老師基本沒講,所以不知道怎么做了),打開用到了fopen函數(shù),而存儲則用到了fread和fwrite等用于存儲的函數(shù),在編程時遇到了一個難點就是函數(shù)的調(diào)用,因為這里面涉及到很多自定義函數(shù)的定義和聲明,所以,運用起來很不熟,后來這個問題在老師的帶領(lǐng)下也得到了很好的解決??诳诩榭谏〗Y(jié)與體會在這一周將盡四天的時間里,在我們指導(dǎo)老師肖老師的帶領(lǐng)下我們進(jìn)行航空訂票系統(tǒng)的課程設(shè)計,在這期間我學(xué)到了很多。我們還是大一的學(xué)生,只學(xué)過一些基礎(chǔ)的知識,并未接觸到我們的專業(yè)課。這次的編程主要是以C語言來編寫,結(jié)合數(shù)據(jù)結(jié)構(gòu)的知識。這幾天老師和們一起復(fù)習(xí)了C的知識,讓我們能夠更加熟練的應(yīng)用C中的運算符,結(jié)構(gòu)體和數(shù)組等內(nèi)容。同時老師也告訴我一些書本上的誤區(qū),如:整形數(shù)據(jù)在十六位機(jī)上是占兩個字節(jié),但是在三十二位機(jī)上是占四個字節(jié)的。我們現(xiàn)在用的基本上是三十二位的機(jī)子,所以書上所說的整形數(shù)據(jù)占兩個字節(jié)是一個誤區(qū)。航空訂票系統(tǒng)由航班錄入,查詢,訂票和退票這四個模塊組成。由于知識的有限,老師帶領(lǐng)我們進(jìn)行各個模塊的編譯。在這期間,老師不斷地對程序和各個模塊進(jìn)行修改,編譯,試調(diào),運行,期間也遇到了很多的問題:由于知識的有限,在編寫是老師采用了相對簡單的基礎(chǔ)語言,代替了較為復(fù)雜的語句,是我們更加的容易理解,但同時也降低了運行的效率。在程序開始設(shè)計時,如果函數(shù)定義的數(shù)據(jù)類型出現(xiàn)了問題,對函數(shù)的定義不清楚,字符的不正確定義都會造成后期大量的糾錯工作。有時忘記C的一些規(guī)范使用在試調(diào)過程中會出現(xiàn)一些不易發(fā)現(xiàn)的錯誤。定的可靠性和穩(wěn)定性。經(jīng)過這次實習(xí)我對試調(diào)掌握得更加熟練,意識到程序語言的規(guī)范性以及我們在編程時要有嚴(yán)謹(jǐn)?shù)膽B(tài)度。在編程序時適當(dāng)?shù)募右恍┳⒔猓员阍黾映绦虻目勺x性,是的自己在讀時覺得更加簡單容易。同時在這里我也非常感謝肖老師對我們的指導(dǎo),不盲而她在給我們上課時非常的認(rèn)真仔細(xì),也很幽默風(fēng)趣。在她的講解下,我們理解了此次編程的基本不過這也提醒我們在編寫程序是要認(rèn)真仔細(xì)。附錄1使用說明1.主界面:作
詢詢踐
查查S一
班票票票理出一一IJ111-1- [L[2r3[4[5[0一一..一-A-
一輸
一壇冃2進(jìn)入用戶平臺(1)查詢航班,旬查詢一」局查班-地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職工認(rèn)購協(xié)議書
- 基金會項目執(zhí)行協(xié)議書
- 獲取拆遷協(xié)議書
- 花木租擺協(xié)議書
- 綠植租賃協(xié)議書
- 股東辦學(xué)協(xié)議書
- 和父母斷絕合同協(xié)議書
- 承包蛋糕店合同協(xié)議書
- 幼兒園投資分紅協(xié)議書
- 續(xù)簽合伙協(xié)議書
- 建平磷鐵礦業(yè)有限公司磷(含磁鐵磷灰石)礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- DB22∕T 3181-2020 公路水路行業(yè)安全生產(chǎn)風(fēng)險分級管控和隱患排查治理雙重預(yù)防機(jī)制建設(shè)通用規(guī)范
- GB/T 36713-2018能源管理體系能源基準(zhǔn)和能源績效參數(shù)
- GB/T 25068.1-2020信息技術(shù)安全技術(shù)網(wǎng)絡(luò)安全第1部分:綜述和概念
- “二級甲等婦幼保健院”評審匯報材料
- 《狼王夢》讀書分享PPT
- 三年級美術(shù)下冊第10課《快樂的節(jié)日》優(yōu)秀課件1人教版
- 電力市場交易模式
- 第四課《單色版畫》 課件
- 門診手術(shù)麻醉原則課件
- 自動噴水滅火系統(tǒng)質(zhì)量驗收項目缺陷判定記錄
評論
0/150
提交評論