版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、高級語言程序設計課程設計報告 I 課程設計報告 課程名稱: 高級語言程序設計課程設計 姓 名: 班級學號: 指導教師: 完成日期: 6 月 20 日 高級語言程序設計課程設計報告 II 目 錄 1 課程設計目的與要求.1 2 問題描述 .2 3 總體設計 .3 3.1 功能分析.3 3.2 系統(tǒng)主要使用的函數(shù).3 3.3 系統(tǒng)使用的主要數(shù)據(jù)結構.4 4 詳細設計 .6 4.1 程序總體結構圖.6 4.2 程序流程圖.6 5 功能測試 .8 5.1 航班售票系統(tǒng).8 6 程序設計調(diào)試情況(程序設計及調(diào)試過程中碰到的問題及解決的 方法).12 7 課程設計小結 .13 參考文獻.14 附錄 系統(tǒng)源
2、程序.15 高級語言程序設計課程設計報告 1 1 課程設計目的與要求 高級語言程序設計是本科工科類各專業(yè)的重要基礎課,課程以影響深遠的、 傳統(tǒng)的、面向過程的優(yōu)秀編程語言 C 語言為基礎,學習程序設計的基本概念和 方法,通過本門課程學習,應使同學掌握高級語言的基本原理,熟練掌握程序 設計的基礎知識、基本概念;掌握程序設計的思想和編程技巧。 課程設計是在學生已經(jīng)具備了使用 C 語言編寫簡單的應用程序的能力,為 使學生對 C 語言有更全面的理解,進一步提高運用 C 語言編程解決實際問題的 能力,通過提出算法、指定輸入輸出來設計一個解決方案。經(jīng)過該實踐環(huán)節(jié), 培養(yǎng)學生的探索精神和創(chuàng)新能力。通過答辯訓練
3、學生的綜合表達能力。 參加本課程設計的學生,應當認真完成本課程設計的全部過程。并以最終 課程設計成果來證明其獨立完成各種實際任務的能力。從而反映出理解和運用 本課程知識的水平和能力。具體如下: (1)數(shù)據(jù)組織方面盡量使用到:數(shù)組、鏈表、結構體、文件; (2)程序結構方面做到函數(shù)調(diào)用,盡量采用指針運算; (3)代碼編寫規(guī)范,形成良好的編程習慣; (4)程序須有一定的健壯性和必要的提示信息,考慮問題的多種可能和邊 界數(shù)據(jù)。 (5)課設完成須進行答辯,提交課設報告電子稿、裝訂的打印稿。課設報 告內(nèi)容包括以下幾個方面: 程序的總體設計和算法分析。 程序流程圖、函數(shù)說明 源程序代碼清單 測試數(shù)據(jù)和測試過
4、程記錄 遇到的問題及解決方法分析 課程設計小結 高級語言程序設計課程設計報告 2 2 問題描述 航班售票系統(tǒng): (1)系統(tǒng)以菜單方式工作 (2)假設該民航有若干航班,要求實現(xiàn)增加航班和取消某個航班的功能。 (3)查詢:根據(jù)用戶提出的終到站查詢航班號、售票情況等航班信息;也可根 據(jù)航班號,列出該航班已訂票的乘客名單。 (4)訂票:根據(jù)航班號為客戶訂票,如該航班有余票,則為客戶訂票;如該航 班已滿員,則顯示相應信息。 (5)退票:按乘客要求退出已預定的機票。 高級語言程序設計課程設計報告 3 3 總體設計 3.1 功能分析 系統(tǒng)提供主界面,各種功能操作以獨立的函數(shù)為基礎,運用對鏈表操作的 技術來實
5、現(xiàn)航班的管理,同時對操作結果在計算機中做永久保存。 ) 3.1.1 航班售票系統(tǒng) (1)訂票功能: 此功能是 Reserve 函數(shù)來實現(xiàn)的,里面嵌套調(diào)用了 3 個函數(shù) Deletereturn,Addcustomer, WriteCustomer, (2)退票功能: 我用的是 ReturnTicket 函數(shù)來實現(xiàn)的,里面嵌套調(diào)用了 3 個函數(shù) AddReturn,DeleteCustomer,WriteCustomer, (3)修改航線功能: 在實現(xiàn)這個功能的時候,必須有航線的增加,取消,和修改三個不同的功能, 所以我編寫了 3 個不同的函數(shù), AddAirFlight,DeleteAirFl
6、ight,ChangeAirFlight, (4)查詢航班及乘客信息功能 WriteCustomer 的作用在本部分當中體現(xiàn),它用來輸出客戶的信息,在 Init 函數(shù) 中,我事先置入了 3 個默認的乘客,分別是我們小組的 3 個人,OutInfo 函數(shù)則 輸出了所有航班的信息 3.2 系統(tǒng)主要使用的函數(shù) int Reserve(char name,int airNum,int i) /*訂票系統(tǒng)函數(shù)*/ void ReturnTicket (int i,int airNum,int seat) /*退票系統(tǒng)函數(shù)*/ int DeleteReturn(AirFlight *p) /*刪除退票函數(shù)
7、*/ void AddReturn (AirFlight *p,int seat) /*添加退票信息函數(shù)*/ void ChangeAirFlight() /*修改航線函數(shù)*/ void DeleteAirFlight() /*刪除航線函數(shù)*/ void DestroyCustomer(CNode *p) /*刪除客戶信息函數(shù)*/ void AddCustomer(AirFlight *p,char *name,int airNum,int seat) /*添加客戶信 高級語言程序設計課程設計報告 4 息函數(shù)*/ void DeleteCustomer(AirFlight *p,int sea
8、t) /*刪除客戶信息函數(shù)*/ void AddAirFlight() /*添加航線信息函數(shù)*/ void WriteAirInfo(FILE *fp) /*輸出輸出航線函數(shù)*/ void OutInfo() /*輸出所有信息*/ void WriteCustomer(FILE *fp) /*輸出客戶文件函數(shù)*/ 3.3 系統(tǒng)使用的主要數(shù)據(jù)結構 typedef struct Return /*定義退票系統(tǒng)的結構體*/ int seat; struct Return *next; Return; typedef struct /*定義客戶信息的結構體*/ char name20; int air
9、Num; int seat; Customer; typedef struct CNode /*定義客戶單鏈表的結構體*/ Customer cust; struct CNode *next; CNode; typedef struct AirFlight /*定義航班信息的結構體*/ int flight; int plane; int reservation; int availnum; CNode *cHead; Return *rHead; struct AirFlight *next; AirFlight; typedef struct Airline /*定義航線信息的結構體*/
10、高級語言程序設計課程設計報告 5 char dest20; AirFlight *head; Airline; Airline airInfo3; /*定義三條航線為全局變量*/ 高級語言程序設計課程設計報告 6 4 4 詳細設計詳細設計 4.1 程序總體結構圖 圖圖 4-14-1 航班售票系統(tǒng)結構圖航班售票系統(tǒng)結構圖 4.2 程序流程圖 圖圖 4-2-14-2-1 航班售票系統(tǒng)中的航班售票系統(tǒng)中的 AddCustomerAddCustomer()() 高級語言程序設計課程設計報告 7 圖圖 4-2-24-2-2 航班售票系統(tǒng)中的航班售票系統(tǒng)中的 ChangeAirFlightChangeAi
11、rFlight()() 圖圖 4-2-34-2-3 航班售票系統(tǒng)中的航班售票系統(tǒng)中的 operation3operation3()() 高級語言程序設計課程設計報告 8 5 功能測試 5.1 航班售票系統(tǒng) 圖圖 5-2-15-2-1 運行后文件中的截圖運行后文件中的截圖 圖圖 5-2-25-2-2 航班售票系統(tǒng)主菜單航班售票系統(tǒng)主菜單 高級語言程序設計課程設計報告 9 圖圖 5-2-35-2-3 訂票提示語訂票提示語 圖圖 5-2-45-2-4 訂票成功訂票成功 圖圖 5-2-55-2-5 退票成功退票成功 圖圖 5-2-65-2-6 修改航線提示語修改航線提示語 高級語言程序設計課程設計報告
12、 10 圖圖 5-2-75-2-7 增加航線提示語增加航線提示語 圖圖 5-2-85-2-8 增加航線成功增加航線成功 圖圖 5-2-85-2-8 取消航線成功取消航線成功 圖圖 5-2-85-2-8 修改航線成功修改航線成功 圖圖 5-2-95-2-9 顯示乘客信息顯示乘客信息 高級語言程序設計課程設計報告 11 6 程序設計調(diào)試情況(程序設計及調(diào)試過程程序設計調(diào)試情況(程序設計及調(diào)試過程 中碰到的問題及解決的方法)中碰到的問題及解決的方法) 在程序設計中,我遇到的最大的問題就是結構體變量的定義和鏈表的運用, 應為一開始在學習鏈表的時候我就感覺到很吃力,所以在編航空售票系統(tǒng)的大 程序時,我上
13、網(wǎng)查找了很多資料,有不懂的也去百度,或者在同學之間討論, 至今還有一些不能熟練運用,但和之前相比已經(jīng)有了很大的進步,我會在今后 的學習中進一步鞏固。 在調(diào)試過程中,也有不少的問題。比如,漏加了取地址符,導致程序沒有 錯誤而無法運行;字符串輸入函數(shù) getchar 的用法出錯,導致無法輸入菜單命令; 頭文件的名字和文件名不一致而出錯,這是連接時候出現(xiàn)的問題;還有曾遇到, 同樣一個文件,以.c 的后綴運行時有錯,以.cpp 的后綴運行時就沒有錯了,老 師說這涉及到了兼容性的問題??傊捎诖中拇笠夥傅腻e誤,自己是可以找 出來的,實在太隱蔽的,我也就只能求助同學或者老師了。 高級語言程序設計課程設計
14、報告 12 7 7 課程設計小結課程設計小結 本次課程設計已經(jīng)完成,編寫好的程序整體上運行與題目要求很吻合,算 法大多比較通用,各個函數(shù)模塊的正確性、完備性、對輸入的容錯能力以及算 法的進一步改進在設計中都有表述,這道題使我熟悉了文件的輸入輸出操作, 也深刻認識到了鏈表在實際的操作中有多么的難,我會在進一步的學習中,對 鏈表進行深層次的理解。 本次程序編寫我從簡單入手,在進行復雜的編寫過程。首先我搜集資料, 掌握航空售票系統(tǒng)方面的種種相關知識,其次我們對這個系統(tǒng)應該如何編譯作 了一個簡單的思考和討論,確定要運用到的知識和相關難點,并對這些難點進 行解決,最終到發(fā)雜的程序上。 回望本次的課程設計
15、,我學到了很多的東西。無論是枯燥的搜集資料,還 是一遍遍地調(diào)試程序給我?guī)淼钠v感,都在最終看到程序正常運行的那刻消 失殆盡,感受到了努力付出,然后收獲碩果的成就感。 總結我這周的實訓,我學到了很多的知識。不論是理論知識的掌握亦或是 實踐經(jīng)驗的積累,我都有了進一步的提升。面對科學實踐過程中所遇到的難題, 我不能退縮,要嚴謹,認真,無所畏懼地面對它。正如本次的課程設計,編寫 的過程很艱難,一個小小的錯誤都會導致最終程序無法正常運行。因此,只有 我們每個人認真嚴謹?shù)耐瓿勺约旱娜蝿眨怀霈F(xiàn)一絲一毫的馬虎,才能獲得最 后的成功。 本以為掌握課本上所教授的理論知識對于我們當代大學生而言就足夠了。 然而,
16、在實訓過后才發(fā)現(xiàn)這樣的理解是十分錯誤的。理論知識若沒有經(jīng)過實踐 的考驗,那它便是經(jīng)不起推敲的。只有把實踐和理論結合起來,用理論知識支 持實踐,用實踐來肯定理論知識,才能提高自己的學習能力和動手能力。 在設計的過程中我們遇到了各種各樣的問題,也發(fā)現(xiàn)了自己的不足之處, 對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計, 把以前所學過的知識重新溫故,鞏固了所學的知識,也能夠了解到自己相對薄 弱的環(huán)節(jié)。總而言之,本次實訓我真的受益匪淺。 小組成員分工: 組長: 負責 修改航線信息和查詢航班信息 模塊 組員: 負責 主程序模塊 高級語言程序設計課程設計報告 13 負責訂票、退票 模塊
17、高級語言程序設計課程設計報告 14 參考文獻 1. 遲劍,劉艷飛等C 語言寶典北京:電子工業(yè)出版社,20096 2. 李恬,邱小平等C 語言程序設計實訓與應用教程北京:清華大學出版 社,20102 3. 黃銳軍C#程序設計項目實訓教程北京:化學工業(yè)出版社,200910 4. 耿祥義,張躍平C 語言程序設計實用教程北京:清華大學出版社, 201011 高級語言程序設計課程設計報告 15 附錄 系統(tǒng)源程序 #include #include #include #include typedef struct Return int seat; struct Return *next; Return;
18、typedef struct char name20; int airNum; int seat; Customer; typedef struct CNode Customer cust; struct CNode *next; CNode; typedef struct AirFlight int flight; int plane; int reservation; int availnum; CNode *cHead; Return *rHead; struct AirFlight *next; AirFlight; typedef struct Airline char dest20
19、; 高級語言程序設計課程設計報告 16 AirFlight *head; Airline; Airline airInfo3; int Reserve(char name,int airNum,int i) int DeleteReturn(AirFlight *p); void AddCustomer(AirFlight *p,char *name,int airNum,int seat); void WriteCustomer(FILE *fp); FILE *fp; AirFlight *p; int seat; for(p=airInfoi.head;pp=p-next); if(p=
20、NULL) return -2; if(p-availnum=0) return -1; else if(p-rHead!=NULL) seat=DeleteReturn(p); else seat =p-reservation; p-availnum-; p-reservation+; AddCustomer (p,name,airNum,seat); if(!(fp=fopen(customer.txt,w) puts(對不起,操作有誤,無法打開文件customer.txt!); return -2; WriteCustomer(fp); return seat; void ReturnT
21、icket (int i,int airNum,int seat) void AddReturn(AirFlight*p,int seat); void DeleteCustomer (AirFlight *p,int seat); void WriteCustomer(FILE *fp); 高級語言程序設計課程設計報告 17 FILE *fp; AirFlight *p; for(p=airInfoi.head;pp=p-next); if(p=NULL) puts(對不起,操作有誤,沒有找到退票信息!n); else AddReturn(p,seat); p-availnum+; p-re
22、servation-; DeleteCustomer(p,seat); if(!(fp=fopen(customer.txt,w) puts(對不起,操作有誤,無法打開文件customer.txt!); return; WriteCustomer(fp); return; int DeleteReturn(AirFlight *p) Return *temp; int seat; temp=p-rHead; p-rHead=temp-next; seat=temp-seat; free(temp); return seat; void AddReturn (AirFlight *p,int s
23、eat) Return *temp; temp=(Return *)malloc(sizeof(Return); if(temp=NULL) 高級語言程序設計課程設計報告 18 puts(對不起,操作有誤,分配空間失敗!); return; temp-seat=seat; temp-next=p-rHead; p-rHead=temp; void ChangeAirFlight() int airFlight,k,changeFlight; AirFlight *p; CNode *pC; puts(請輸入您所要修改的航線:n); scanf(%d, if(0airFlight else if
24、(300airFlight else if(600airFlightp=p-next); if(p!=NULL) puts(請輸入您的新航線:n); scanf(%d, p-flight=changeFlight; for(pC=p-cHead; pC; pC=pC-next) pC-cust.airNum=changeFlight; printf(恭喜!航線 %d 已成功修改成 %d.n,airFlight,p-flight); else printf(對不起,不存在該航線%d!n,airFlight); void DeleteAirFlight() void DestroyCustomer
25、(CNode *p); void DestroyReturn(Return *p); 高級語言程序設計課程設計報告 19 void OutInfo(); int airFlight,k; AirFlight *p,*pre=NULL; puts(請輸入您要取消的航線!n); scanf(%d, if(0airFlight else if(300airFlight else if(600airFlightp=p-next) pre=p; if(p=NULL) printf(對不起,不存在該航線%d!n,airFlight); return; if(pre=NULL) airInfok.head=
26、p-next; else pre-next=p-next; DestroyCustomer(p-cHead); DestroyReturn(p-rHead); free(p); printf(恭喜!已成功取消該航線%dn,airFlight); OutInfo(); void DestroyCustomer(CNode *p) CNode *pNext; while(p!=NULL) pNext=p-next; free(p); p=pNext; void DestroyReturn(Return *p) 高級語言程序設計課程設計報告 20 Return *pNext; while(p!=NU
27、LL) pNext=p-next; free(p); p=pNext; void AddCustomer(AirFlight *p,char *name,int airNum,int seat) CNode *temp; if(!(temp=(CNode*)malloc(sizeof(CNode) puts(對不起,操作有誤,開辟空間失敗!n); return; temp-cust.airNum=airNum; temp-cust.seat=seat; strcpy(,name); temp-next=p-cHead; p-cHead=temp; void Dele
28、teCustomer(AirFlight *p,int seat) CNode *temp,*pre=NULL; for(temp=p-cHead;temptemp=temp-next) pre=temp; if(temp=NULL) puts(對不起,沒有找到相應的客戶,請您核對后繼續(xù)!); return; if(pre=NULL) p-cHead=temp-next; else pre-next=temp-next; free(temp); 高級語言程序設計課程設計報告 21 void WriteCustomer(FILE *fp) int i; AirFlight *p; CNode *
29、q; fputs(n,fp); fputs(以下為本航空公司提供的乘客信息:n,fp); for(i=0;inext) fputs(nn,fp); fputs(航班t 座位號t 乘客姓名n,fp); for(q=p-cHead;q;q=q-next) fprintf(fp,%dt%dt%sn,q-cust.airNum,q-cust.seat,q- ); void WriteAirInfo(FILE *fp) int i; AirFlight *p,*q; fputs(n,fp); fputs(以下為本航空公司提供的航班信息:n,fp); for(i=0;inext) 高級語
30、言程序設計課程設計報告 22 fputs(nn,fp); for(q=p;q;q=q-next) fprintf(fp,t 航班號:%dnt 飛機號:%dnt 訂票數(shù): %dnt 余票數(shù):%dn,q-flight,q-plane,q-reservation,q-availnum); void OutInfo() FILE *fp,*fp2; if(!(fp=fopen(airinfo.txt,w) puts(對不起,操作有誤,無法打開文件airinfo.txt!n); return; WriteAirInfo(fp); fclose(fp); if(!(fp2=fopen(customer.t
31、xt,w) puts(對不起,操作有誤,無法打開文件airinfo.txt!n); return; WriteCustomer(fp2); fclose(fp2); void AddAirFlight() int k,airflight; AirFlight *temp; puts(請選擇本次航程的著陸點:0/1/2n); puts(0.北京n1.上海n2.廣州n); scanf(%d, if(k2) puts(對不起,操作有誤,輸入無效!); 高級語言程序設計課程設計報告 23 return; printf(請輸入航班號:); switch(k) case 0: puts(1300:); b
32、reak; case 1: puts(301600:); break; case 2: puts(601900:); scanf(%d, if(airflight300*(k+1) puts(Wrong input!); return; temp=(AirFlight*)malloc(sizeof(AirFlight); if(temp=NULL) puts(對不起,操作有誤,開辟空間失敗!n); return; temp-availnum=100; temp-reservation=0; temp-cHead=NULL; temp-rHead=NULL; temp-plane=1; temp
33、-flight=airflight; temp-next=airInfok.head; airInfok.head=temp; printf(恭喜!新航線已成功建立!n); OutInfo(); void Init() int i; 高級語言程序設計課程設計報告 24 strcpy(airInfo0.dest,Beijing); strcpy(airInfo1.dest,Shanghai); strcpy(airInfo2.dest,Guangzhou); for(i=0;iflight=300*i+1; airInfoi.head-plane=i+1; airInfoi.head-reser
34、vation=0; airInfoi.head-availnum=100; airInfoi.head-cHead=NULL; airInfoi.head-rHead=NULL; airInfoi.head-next=NULL; Reserve(梁建軍,1,0); Reserve(卿澤華,301,1); Reserve(呂繼東,601,2); void Operation1() int i,seat; int airNum; char name20; printf(本航空公司為您提供的航班有:n); printf(航線 1 飛往北京:航班號 1-300n); printf(航線 2 飛往上海:航班號 301-600n); printf(航線 3 飛往廣州:航班號 601-900n); printf(n 若開始訂票,請輸入您的姓名及航班號:n); printf(友情提示:姓名和航班號用空格隔開n); scanf(%s %d,name, 高級語言程序設計課程設計報告 25 if(0airNum else if(300airNum else if(600airNum else puts(對不起,操作有誤,輸入無效!); seat=Reserve(name,airNum,i); if(seat=-2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年古色古香游合同
- 2025年作品著作權使用許可協(xié)議
- 2025年度木工工藝研發(fā)與推廣分包合同4篇
- 二零二五版房屋裝修設計、施工及監(jiān)理合同2篇
- 2025年中國連鎖經(jīng)營行業(yè)市場深度調(diào)查評估及投資方向研究報告
- 二零二五版離婚協(xié)議書針對存款賬戶的專項管理協(xié)議3篇
- 2025年度私人借款與信用評估機構合作協(xié)議
- 2025年度二零二五年度車牌借用與保險理賠合作協(xié)議
- 2025年度航空行業(yè)競業(yè)協(xié)議敬業(yè)精神承諾合同
- 二零二五年度網(wǎng)約車平臺車主與駕駛員合作協(xié)議書
- 教師招聘(教育理論基礎)考試題庫(含答案)
- 2024年秋季學期學校辦公室工作總結
- 鋪大棚膜合同模板
- 長亭送別完整版本
- 智能養(yǎng)老院視頻監(jiān)控技術方案
- 你比我猜題庫課件
- 無人駕駛航空器安全操作理論復習測試附答案
- 建筑工地春節(jié)留守人員安全技術交底
- 默納克-NICE1000技術交流-V1.0
- 蝴蝶蘭的簡介
- 老年人心理健康量表(含評分)
評論
0/150
提交評論