C語言課程設(shè)計報告—飛機訂票系統(tǒng)解讀_第1頁
C語言課程設(shè)計報告—飛機訂票系統(tǒng)解讀_第2頁
C語言課程設(shè)計報告—飛機訂票系統(tǒng)解讀_第3頁
C語言課程設(shè)計報告—飛機訂票系統(tǒng)解讀_第4頁
C語言課程設(shè)計報告—飛機訂票系統(tǒng)解讀_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言課程設(shè)計報告題目飛機訂票系統(tǒng)學院資源學院專業(yè) 資源勘查工程(工科基地班) 姓名 劉豪杰班級020141學號 20141003116指導教師張冬梅目錄C語言課程設(shè)計目的 第3頁題目要求第3頁需求分析第3頁整體設(shè)計與模塊劃分 第4頁詳細分模塊設(shè)計 第4頁上機操作第11頁程序代碼第13頁總結(jié)與反思第18頁10C語言課程設(shè)計報告C語言課程設(shè)計的目的c語言的教學是學生根據(jù)課堂講授內(nèi)容,學生做相應的自主練習, 消化課堂所講解的內(nèi)容;通過調(diào)試典型例題或習題積累調(diào)試C程序的經(jīng)驗;通過完成輔導教材中的編程題,逐漸培養(yǎng)學生的編程能力、用計算機解決實際問題的能力。具體來說:1 .進一步掌握和利用 C語言進行程

2、設(shè)計的能力;2、進一步理解和運用結(jié)構(gòu)化程設(shè)計的思想和方法;3、初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;4、學會調(diào)試一個較長程序的基本方法;5、學會利用流程圖或 N-S圖表示算法;6、 掌握書寫程設(shè)計開發(fā)文檔的能力(書寫課程設(shè)計報告);二、課程設(shè)計報告正文(1)課程設(shè)計題目的原文;假定民航機場共有 n個航班:航班號、起始站、終點站、飛機號、飛機時間、乘員定額、余票量。試設(shè)計一民航訂票系統(tǒng),使之能提供下列服務:航班信息錄入功能(文件保存)完成航班信息瀏覽功能;查詢航線(至少一種查詢方式)。(2)題目的分析(需求分析);任務:通過此系統(tǒng)可以實現(xiàn)如下功能:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)

3、文件中)瀏覽:航班信息瀏覽功能需要提供顯示操作;查詢:可提供按照航班號、起點站、終點站、飛行時間、查詢,可以查詢某個航線的情況(如,輸入航班號,起飛抵達城市,確定航班是否滿倉);另外要提供鍵盤式選擇菜單以實現(xiàn)功能選擇。要求:根據(jù)以上功能說明,設(shè)計航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計程序完成功能??梢越⒑桨嘟Y(jié)構(gòu)體,結(jié)構(gòu)體成員包括航班號、起點站、終點站、飛行時間、預售票總數(shù)、已售票數(shù)。(3) 整體設(shè)計與模塊劃分;根據(jù)需求分析,該程序可分為以下四大模塊:飛機訂票系統(tǒng)輸入模塊顯示模塊查詢模塊退出模塊(4) 代碼設(shè)計;包括一一各功能模塊的流程圖;重要模塊中關(guān)鍵部分的代碼分析;關(guān)鍵函數(shù)的算法設(shè)計和分析;等

4、等;(一) 主函數(shù)(1) 分析:主函數(shù)的功能比較簡單,形式比較簡潔,主要功能為:在系統(tǒng) 中沒有程序所要的文件時,為程序建立一個所需的文件;調(diào)用菜單函數(shù)。 程序中的各模塊都要用到同一個文件,如果該文件不存在,則該程序就無 法正常運行,增加第一個功能就是保證文件的可用切可打開!本來只要在 主函數(shù)里調(diào)用各功能模塊就行了,但是為了讓程序能夠方便的回到主函數(shù) 里,所以就建立了一個菜單函數(shù)。菜單函數(shù)的功能是替主函數(shù)調(diào)用個功能模塊函數(shù),因而設(shè)計的基本思路很 簡單,即:用一個輸入來接受用戶的選擇,加以個循環(huán)來讓輸入錯誤的用 戶繼續(xù)輸入,直到輸入正確為止;用一個 switch語句來選擇用戶所要用到 的函數(shù)。(2

5、) 程序:void menu()int n,w;doputs(tt*MENU* nn);puts(tttt 1.e nter new data);puts(tttt 2.Browse all);puts(tttt 3.Search);puts(tttt 4.exit);puts(nn tt* n);prin tf(Choice your number(1-4): bb);scan f(%d,&n);if(n 4)w=1; getchar();else w=0;while(w=1);switch( n)case 1:e nter();break;case 2:Browse();break;cas

6、e 3:Search();break;case 4:exit(0);主函*mai n() menu();(二)公共函數(shù)(1) 分析:各功能模塊中的分程序中的交錯的較多,因而,本程序的公共函有5個, 這使得各功能模塊函數(shù)顯得簡潔,這是程序的一個特點。此處的公共函數(shù)的功能較為簡單,但他很實用。(2) 程序:1、把航班信息輸入到文件中的函數(shù)。void in put(i)struct flight t;prin tf(nflight_ nostartstati onen dstati on flytime pla n_ticketsell_ticketn);scan f(%d%s%s%s%d%d, &

7、t.flight_ no,t.startstatio n,t.e ndstatio n, t.flytime,& t.plan_ticket, &t.sell_ticket);fp=fope n(flydata.txt,ab);if(!fp)pri ntf(ca n n ot ope n this filen);exit(0);else fwrite(&t,sizeof(struct flight),1,fp);fclose(fp);2、輸出一個航班信息函數(shù)void printf_on eflight(i nt i)prin tf(n%5d%20s%20s%10s%4d%4dn,flyi.fl

8、ight_no,flyi.startstation ,flyi.e ndstatio n,flyi.flytime,flyi.plan_ticket,flyi.sell_ticket)J3、輸出文件內(nèi)容結(jié)構(gòu)函數(shù)void prin tf_face()prin tf(ntNO. startstatio n en dstatio nflytimepla n_ticketsell_ticketn);4、載入函數(shù)實現(xiàn)文件內(nèi)容載入程序,并返回飛機航班數(shù)值。int load()FILE *fp;int i;if(fp=fope n(flydata.txt,rb)=NULL)prin tf(nCan not

9、ope n file n);exit(O);for(i=0;!feof(fp);i+)fread( &flyi,sizeof(struct flight),1,fp);fclose(fp);return(i-l);5、返回退出函數(shù)實現(xiàn)程序退出、返回。void prin tf_back()int w;prin tf(nn tSuccessful.A_Ann ”);printf(Whatdo you want to do?nnt1).Browse all nowt2).back:bb);scan f(%d,&w);if(w=1) Browse();else menu();(三) 航班基本信息輸入模

10、塊航班信息錄入函數(shù):(1)分析:航班的基本信息,對它們輸入后,要存進原文件,采用fwrite 函數(shù)就可以實現(xiàn)。但是,用該函數(shù)存進文件的數(shù)據(jù)都是以二進制的形式存在的,不是通 常所采用的形式,可以改用fprintf函數(shù)來實現(xiàn)該功能。不過本程序采用的是fwrite 函數(shù)。再用戶輸入完成后,程序會詢問是否繼續(xù)輸入,這個功能更具人性 化,可以省去返回到主函數(shù)在進入這個函數(shù)的麻煩!(2)程序:void en ter()int i,n;prin tf(How many flights do you want in put? : bb); scan f(%d, &n);prin tf(n En ter dat

11、a nownn ”);for(i=0;i n ;i+)prin tf(n In put %dth float record.n,i+1);in put(i);prin tf_back();航班信息瀏覽函數(shù):流程圖顯示信息顯示航班信息:void Browse()int i,n;n=load();prin tf_face();for(i=0;i n ;i+)if(i%10=0)printf(nPress any key to contiune .); getchar();puts(nn);puts(nn);printf_on eflight(i);prin tf(tThere are %d rec

12、ord.n, n); prin tf(nPress any key to back .n); getchar();menu();(四)查詢模塊:分析:基本信息的查詢按查詢可供選擇的方式比較豐富,可按航班號查詢。在查詢小 模塊中采用了直接查找的方法。本模塊可以通過多種查詢方式進行完善。這是本程序沒有做的地方。流程圖程序:void Search()int m,i,flight_no,flag=0;prin tf(Please in put flight_ no:n); scan f(%d, &flight_ no); m=load();for(i=0;im;i+)12if(flight_ no=f

13、lyi.flight_no)flag=1;prin tf(nThe flight message is:n); printf_on eflight(i);if(flag=1)prin tf(Fou nd!);elseprin tf(Not Fou nd!);prin tf_back();(5) 運行與測試報告:在第一步編程過程中很順利的編寫好了各模塊,最后整合成了一個完整的程序, 但在調(diào)試過程中遇到了許多問題。如一些由于粗心導致分號,括號,字母輸錯的例子 很多。但都很快改正。還有函數(shù)調(diào)用錯誤fp=fope n(flydata.txt,ab);我在寫時丟了 fopen結(jié)果一直錯誤,并且發(fā)現(xiàn)不了,

14、后來請老師才解決問題。還有寫程序中我 經(jīng)常忘記頭文件包含命令,以及函數(shù)聲明,導致調(diào)試中出現(xiàn)警告。這讓我體會到只有 耐心的一行一行的改錯誤才能把程序調(diào)試好。運行中遇到問題:例如,對數(shù)據(jù)的寫文件操作中,我把存在flyN中的數(shù)據(jù)以fwrite( &flyN,sizeof(struct flight),1,fp)寫入文件,結(jié)果發(fā)現(xiàn)文件中總是不能出現(xiàn)數(shù)據(jù)。以至程序不能運行后面部分。后來才發(fā)現(xiàn)取得地址錯了應改成 fwrite(&t,sizeof(struct flight),1,fp)。在機票顯示階段就是這問題讓程序出現(xiàn)錯誤。不能正確讀出輸入的飛機航班信息。21頭文件包含命令*/結(jié)構(gòu)體存放航班信息的結(jié)構(gòu)*

15、/三、程序代碼:#i nclude /*#in clude#defi ne N 50struct flight/*int flight_ no;char startstati on 20; char en dstati on 20;char flytime10; int pla n_ticket;int sell_ticket;flyN;/* 定義結(jié)構(gòu)體變量*/FILE* fp;void Browse();void printf_on eflight(i nt i);void menu();void in put(i)/*把航班信息輸入到文件 */struct flight t;pla n_t

16、icketprin tf(nflight_ nostartstati onen dstatio nflytimesell_ticket n);scan f(%d%s%s%s%d%d, &t.flight_ no,t.startstatio n,t.e ndstatio n, t.flytime, &t .plan_ticket,& t.sell_ticket);fp=fope n(flydata.txt,ab);if(!fp)pri ntf(ca n not ope n this filen);exit(0);else fwrite( &t,sizeof(struct flight),1,fp

17、);fclose(fp);void printf_oneflight(int i) /*輸出一個 航班信息 */prin tf(n%5d%20s%20s%10s%4d%4dn,flyi.flight_ no,flyi.startstatio n,fl yi.e ndstatio n,flyi.flytime,flyi.plan_ticket,flyi.sell_ticket);void prin tf_face() /*輸出文件內(nèi)容結(jié)構(gòu) */flytimepla n_ticketprin tf(ntNO. startstati on en dstati on sell_ticketn);in

18、t load()/*載入函數(shù)實現(xiàn)文件內(nèi)容載入程序,并返回飛機航班數(shù)值*/FILE *fp;int i;if(fp=fope n(flydata.txt,rb)=NULL)prin tf(nCan not ope n filen);exit(0);for(i=0;!feof(fp);i+)fread( &flyi,sizeof(struct flight),1,fp);fclose(fp);return(i-l);void prin tf_back() /*返回退出函數(shù)實現(xiàn)程序退出、返回*/int w;prin tf(nntSuccessful.A_Ann);prin tf(What do yo

19、u want to do?nnt1).Browse all nowt2).back:bb); scan f(%d,&w);if(w=1) Browse();else menu();void enter()/*航班信息錄入*/int i,n;prin tf(How many flights do you want in put? : bb);scan f(%d,&n);prin tf(n En ter data nownn ”);for(i=0;i n;i+)prin tf(n In put %dth float record.n,i+1);in put(i);prin tf_back();vo

20、id Browse()int i,n;n=load();prin tf_face();for(i=0;i n;i+)if(i%10=0)prin tf(nPress any key to con ti une .);getchar();puts(nn);puts(nn);printf_on eflight(i);prin tf(tThere are %d record. n, n);prin tf(nPress any key to back .n); getchar(); /*沒有返回植*/menu();void Search。/*查詢 */int m,i,flight_ no ,flag=

21、0;prin tf(Please in put flight_ no:n);scan f(%d, &flight_no);m=load(); for(i=0;im;i+)if(flight_ no=flyi.flight_ no)flag=1;prin tf(nThe flight message is:n); printf_on eflight(i);if(flag=1)prin tf(Fou nd!);elseprin tf(Not Fou nd!);prin tf_back(); void menu() int n,w;doputs(tt*MENU*puts(tttt 1.e nter

22、new data);puts(tttt 2.Browse all);puts(tttt 3.Search); puts(tttt 4.exit); puts(nntt* n);*prin tf(Choice your number(1-4): bb); scan f(%d, &n);if(n 4)w=1;getchar(); else w=0;while(w=1);switch( n)case 1:e nter();break; case 2:Browse();break;case 3:Search();break; case 4:exit(0);主函數(shù) */* main ()men u();/*菜單函數(shù)的功能是替主函數(shù)調(diào)用個功能模塊函數(shù)*/心、課程設(shè)計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓練和考察過程隨著科學技術(shù)發(fā)展的日新月異,當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設(shè)計是十分必要的。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來

溫馨提示

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

評論

0/150

提交評論