基于C語言的航空訂票系統的設計與實現_第1頁
基于C語言的航空訂票系統的設計與實現_第2頁
基于C語言的航空訂票系統的設計與實現_第3頁
基于C語言的航空訂票系統的設計與實現_第4頁
基于C語言的航空訂票系統的設計與實現_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

r~i基于C語言的航空訂票系統的設計與實現口習不、IE不白而rjj術牛學10212811135號武漢理工大學華夏學院課程設計課程名稱數據結構題目基于c語言的航空訂票系統的設計與實現――訂票模塊專業軟件工程班級軟件1111班姓名成績-指導教師黃啟荃2012年6月18日至2012年6月21日課程設計任務書設計題目:基于C語言的航空訂票系統的設計與實現----訂票模塊

奸口

僧而設計目的學會分析研究數據對象的特性;學會數據的組織方法;選擇合適的數據的邏輯結構和存儲結構以及相應操作,把現實世界中的問題轉換為計算機內部的表示和處理;提高學生的程序設計能力、提高算法設計質量與程序設計素質;設計任務(在規定的時間內完成下列任務)本項目旨在通過一個簡化的航空訂票系統項目,使學生在完成對C程序設計語言和基本數據結構與算法課程的學習后,綜合運用所學到的語法和算法知識,構建一個接近實際應用場景的軟件系統,以達到復習和鞏固前期課程內容并為后續課程奠定基礎的目的。本系統要求實現訂票功能模塊,訂票功能模塊通過航班號普通用戶可以在輸入自己姓名和身份證號后,完成訂票操作。(訂票情況可以存在一個數據文件中,結構自己設定)如果該航班已經無票,可以提供相關可選擇航班;具體要完成的任務是:編制完成上述問題的C語言程序、進行程序調試并能得出正確的運行結果。寫出規范的課程設計說明書;時間安排(第19周—6.18至6.25)第一天 布置課程設計任務,講授VC安裝,程序結構、數組、函數、文件;第二天 查閱資料,講授排序,查詢算法實現;了解航空售票管理系統的需求;第三天 講授快速排序、最短路徑問題、哈希查找的算法實現,準備程序第四天 完成訂票模塊的設計與實現,上機調試程序,教師驗收;712第五天 提交課程設計報告,下午4點前提交課程設計報告及文檔至綜合樓712O具體要求課程設計報告按統一通用格式書寫,具體內容包括:①設計任務與要求②總體方案與說明 ③軟件主要模塊的流程圖④源程序清單與注釋⑤問題分析與解決方案⑥小結與體會附錄:①源程序(必須有簡單注釋) ②使用說明 ③參考資料扌指導教師簽名:2012年6月15日教研室主任(或責任教師)簽名:專輛2012年6月16日數據結構課程設計報告1.設計任務與要求1.1設計任務全面熟悉、掌握C語言和數據結構基本知識。掌握C程序設計中的一系列問題,把C語言與數據結構和實際結合起來,增強對不同問題的一些處理。掌握分析結果的若干有效方法,進一步提高上機動手能力這次設計任務是通過一個簡化的航空訂票系統項目,使學生在完成對C程序設計語言和基本數據結構與算法課程的學習后,綜合運用所學到的語法和算法知識,構建一個接近實際應用場景的軟件系統,以達到復習和鞏固前期課程內容并為后續課程奠定基礎的目的口口口口不盲而1.2設計要求這設計要求實現訂票功能模塊,訂票功能模塊通過航班號普通用戶可以在輸入自己姓名和身份證號后,完成訂票操作。(訂票情況可以存在一個數據文件中,結構自己設定)如果該航班已經無票,可以提供相關可選擇航班。編制完c語言程序后進行程序調試并能得出正確的運行結果且寫出規范的課程設計明書。2.總體方案填寫具體內容在這次課設中,我們需要運用到很多函數,包括文件的打開,結構體的運用,函數與函數之間的互相調用,并且,還涉及到基本的輸入輸出,另外,還涉及到的一個顯示界面問題,這是就需要運用printf這個標準輸出函數,為我們的乘客設計一個選擇界面和提示,在這個整體中,大多數的函數都是我們用戶自定義的函數,所以,在運用時需要先定義后使用。我們總體的設計方案(僅僅對于訂票系統而言)是當用戶輸入航班號訂票,當訂票成功時,則將該用戶的信息存儲到原來的訂票記不盲而錄中,并將該航班的剩余票數時,系統會自動檢查此航班,如果存在此航班,則再次檢查該航班是否還有票,如果沒有該航班,則顯示一個提示信息“本航班還未開通,請選擇其他航班”,如果有票,則輸入身份證號和姓名,并把此次訂票的記錄記錄在一個文本文件(即pass.dat)里,如果沒有票了,則顯示"沒票了,是否需要其他航班(y/n)”當點擊“y”時,繼續上述操作,直到結束減一即可,這樣就完成了訂票了。3.詳細設計撰寫具體內容(詳細設計包括主要模塊的流程圖)不盲而3.1其實,對于程序的主要設計,在方案中已經做了具體說明了,這里只需對做一個簡單的陳述。(1)輸入航班號(2) 判斷航班號是否存在,并做相應操作(3) 判斷是否還有剩票,并作相應的操作(4) 輸入身份證號和姓名(5) 記錄用戶的訂票信息3.1.6退出訂票系統3.2部分程序流程圖如圖1所示開始訂票AA234航班查詢機票查詢乘客的輸入選擇退票管理員操作開始訂票AA234航班查詢機票查詢乘客的輸入選擇退票管理員操作口口lr=h□EHffiCBD請輸入您的身份證C!=y&&Plane=plane_check_id(id,0)無票,是否航班不存請輸入您的姓名輸出用戶的姓名,身份證號,航班是否確定(y/n)以讀的方式打開問件lr=h□EHffi輸出乘客的姓名,身份證關閉文件沒有找到相應的記錄圖1航空訂票系統訂票模塊流程圖4.源程序清單與注釋/*******************************/#include<stdio.h>******/訂票系統:航班和用戶信息**********************************#ifndef_INFOR_H#define_INFOR_H〃機票信息typedefstruct{int m_planeID;//航班號char m_from[10];//出發城市char m_to[10];//到達城市char m_date[10];//出發日期int m_left;〃剩余票數int m_capacity;//容量float m_price;//價格不盲而intm_rebate;//打折}AirPlane;〃用戶信息typedefstruct(charm_ID[20];//身份證號charm_name[20];//姓名intm_planeID;//航班號charm_ticketnum[15];//票號intm_isFlog;//0確認訂票,1取消訂票}Passenger;#endif//_INFOR_Hintmain()(menu();}voidmenu(){intc;while(1){printf("\n—MENU \n");printf("\t[1]航班查詢\n");printf("\t[2]機票查詢\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("沒有權限!!!\n");}}break;case0:return;}}}voidbook_ticket()//訂票系統{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("--訂票結束}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);}問題分析與解決方案首先,我當時遇到的第一個問題就是如何在“窗體”上顯示乘客的選擇和一些提示信息,然而,我遇到的第二個問題就是不知道如何存儲乘客信息和如何打印出航班信息,作為航班的訂票系統來說,很大一部分內容就是保存乘客訂票成功后的信息,對于這兩個問題,后來在老師的講解下,我搞懂了,對于如何在“窗體”上顯示一些信息,解決方案是用printf這個標準函數在“窗體”上輸出即可,而對于第二個問題,我們則用到了文件的打開和存儲(因為我在學c的時候老師基本沒講,所以不知道怎么做了),打開用到了fopen函數,而存儲則用到了fread和fwrite等用于存儲的函數,在編程時遇到了一個難點就是函數的調用,因為這里面涉及到很多自定義函數的定義和聲明,所以,運用起來很不熟,后來這個問題在老師的帶領下也得到了很好的解決。口口奸口僧而小結與體會在這一周將盡四天的時間里,在我們指導老師肖老師的帶領下我們進行航空訂票系統的課程設計,在這期間我學到了很多。我們還是大一的學生,只學過一些基礎的知識,并未接觸到我們的專業課。這次的編程主要是以C語言來編寫,結合數據結構的知識。這幾天老師和們一起復習了C的知識,讓我們能夠更加熟練的應用C中的運算符,結構體和數組等內容。同時老師也告訴我一些書本上的誤區,如:整形數據在十六位機上是占兩個字節,但是在三十二位機上是占四個字節的。我們現在用的基本上是三十二位的機子,所以書上所說的整形數據占兩個字節是一個誤區。航空訂票系統由航班錄入,查詢,訂票和退票這四個模塊組成。由于知識的有限,老師帶領我們進行各個模塊的編譯。在這期間,老師不斷地對程序和各個模塊進行修改,編譯,試調,運行,期間也遇到了很多的問題:由于知識的有限,在編寫是老師采用了相對簡單的基礎語言,代替了較為復雜的語句,是我們更加的容易理解,但同時也降低了運行的效率。在程序開始設計時,如果函數定義的數據類型出現了問題,對函數的定義不清楚,字符的不正確定義都會造成后期大量的糾錯工作。有時忘記C的一些規范使用在試調過程中會出現一些不易發現的錯誤。定的可靠性和穩定性。經過這次實習我對試調掌握得更加熟練,意識到程序語言的規范性以及我們在編程時要有嚴謹的態度。在編程序時適當的加一些注解,以便增加程序的可讀性,是的自己在讀時覺得更加簡單容易。同時在這里我也非常感謝肖老師對我們的指導,不盲而她在給我們上課時非常的認真仔細,也很幽默風趣。在她的講解下,我們理解了此次編程的基本不過這也提醒我們在編寫程序是要認真仔細。附錄1使用說明1.主界面:作

詢詢踐

查查S一

班票票票理出一一IJ111-1- [L[2r3[4[5[0一一..一-A-

一輸

一壇冃2進入用戶平臺(1)查詢航班,旬查詢一」局查班-地

溫馨提示

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

評論

0/150

提交評論