版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件課程設(shè)計(jì)報(bào)告 班級: 光信1005班 姓名: 學(xué)號: 1軟件設(shè)計(jì)11.1設(shè)計(jì)題目11.2設(shè)計(jì)要求11.3設(shè)計(jì)思想11.4流程圖22軟件測試92.1航班信息查詢模塊測試92.2訂票模塊測試142.3機(jī)票信息查詢模塊測試172.4退票模塊測試183算法改進(jìn)214開發(fā)體會22附錄:源代碼清單24參考文獻(xiàn)42設(shè)計(jì)題目 1.1設(shè)計(jì)題目飛機(jī)票銷售系統(tǒng)。1.2設(shè)計(jì)要求 運(yùn)用c語言基本知識,結(jié)合相關(guān)算法思想和數(shù)據(jù)結(jié)構(gòu),編寫一個(gè)單微機(jī)系統(tǒng)下運(yùn)行的飛機(jī)票銷售系統(tǒng)。飛機(jī)票銷售系統(tǒng)應(yīng)實(shí)現(xiàn)航班信息查詢、機(jī)票購買、機(jī)票信息查詢、機(jī)票退購等功能。1.3設(shè)計(jì)思想 程序分為四個(gè)功能模塊,即航班信息查詢、訂票、乘客機(jī)票信息查
2、詢和退票。程序中定義了2種結(jié)構(gòu)為 struct airline,struct passenger,分別用于航班信息、旅客機(jī)票信息的存取和修改。其中又為了方便從txt文件用鏈表讀取和處理數(shù)據(jù)又創(chuàng)建了linecreat()和passengercreat()兩個(gè)函數(shù)。其中對數(shù)據(jù)的查找與處理我覺得不是很大可以放入各個(gè)功能模塊中進(jìn)行。對于已經(jīng)處理過的數(shù)據(jù)一般都要儲存,所以為了儲存文件信息分別創(chuàng)建了saveairline,與savepassenger兩個(gè)函數(shù)。其中函數(shù)中需要的信息與數(shù)據(jù)分別存在“乘客信息.txt”與“南航公司航班信息.txt”航班信息查詢模塊的功能主要由函數(shù)insult實(shí)現(xiàn),而航班信息查詢
3、模塊中又分為按航班號查詢航班信息模塊、按目的地查詢航班信息模塊和按起飛時(shí)間段查詢航班信息模塊三個(gè)小模塊 。訂票模塊的功能由函數(shù)book( )實(shí)現(xiàn)。機(jī)票信息查詢模塊功能由函數(shù)search( )實(shí)現(xiàn)。退票模塊功能由函數(shù)returnticket( )實(shí)現(xiàn)。每個(gè)模塊的函數(shù)都通過對結(jié)構(gòu)鏈表和文件的操作來實(shí)現(xiàn)對數(shù)據(jù)的存取和修改,從而實(shí)現(xiàn)各自的功能。程序中采用的查找數(shù)據(jù)方式為順序查找。1.4流程圖以下依次為main函數(shù)流程圖;insult函數(shù)流程圖;book函數(shù)流程圖;search函數(shù)流程圖;returnticket函數(shù)流程圖; 2軟件測試2.1航班信息查詢模塊測試運(yùn)行程序,首先進(jìn)入主菜單界面。選擇1進(jìn)入航
4、班信息查詢按照起飛時(shí)間查詢,輸入可以乘機(jī)的時(shí)間段找到的航班信息如下按任意鍵繼續(xù),軟件可以由此退出選擇2,航班號查詢得到界面如下如果選取3按照目的地查詢2訂票進(jìn)入買票系統(tǒng)進(jìn)入后依次輸入信息買票如果輸入航班有誤則會出現(xiàn)若一人未購票先查找買票查詢可見剛才購票成功。3退出售票系統(tǒng)進(jìn)入查詢系統(tǒng)選擇查詢方式,如果選擇按照姓名查詢?nèi)绻x擇機(jī)票號查詢與用姓名查詢的結(jié)果相同如果沒有相應(yīng)的乘客4,退票模塊查詢輸入相應(yīng)的乘客的姓名與編號即可刪除如果有一人已購票查詢得:刪除之;再次查詢未找到即證明已經(jīng)刪除算法改進(jìn)改進(jìn)1在該程序調(diào)試時(shí)我發(fā)現(xiàn)程序中很多的輸入與輸出可以做成一些功能模塊,像是查錯與提示錯誤的功能便是經(jīng)常需要
5、的部分。如果能夠?qū)⑦@些部分做成一些簡單的函數(shù)則能夠顯著提高函數(shù)的可讀性與函數(shù)的內(nèi)聚性改進(jìn)2在查找過程中,由于文件儲存時(shí)就是按照順序儲存的,可以采用二分法查找。這樣可以大大提高函數(shù)的運(yùn)行效率。改進(jìn)3函數(shù)在運(yùn)行過程中我發(fā)現(xiàn)并沒有航班的添加程序,可以加一個(gè)管理員系統(tǒng),這樣就可以更加好的去管理航班銷售系統(tǒng)。開發(fā)體會在此次軟件開發(fā)過程當(dāng)中,發(fā)現(xiàn)了自己好多的不足。首先就是于軟件開發(fā)過程當(dāng)中,對于各類函數(shù)的不熟悉。造成我犯了很多知識性的錯誤。我體會到要想在編程上有所突破光靠自己的奇思妙想是不夠的,必須建立在對程序充分的熟悉上。對于各類算法只有充分的熟悉,才能夠知道自己在哪些方面的不足。然后就是,我覺得對于函
6、數(shù)的返回操作做的并不是很好。主要就是采用while循環(huán)然而在做這個(gè)的過程中發(fā)現(xiàn)自己對于這個(gè)其實(shí)做的也不是很好然后我感覺到程序的編寫有的時(shí)候并不是一蹴而就的,必須要做到胸有成竹。做到自頂而下不斷細(xì)分,只有這樣才能夠加強(qiáng)對軟件的理解。做軟件和做事情一樣需要有一個(gè)清晰地規(guī)劃。做好規(guī)劃也就是成功的一半。所以遇到事情以后應(yīng)當(dāng)先充分的了解對象。建立在對事物的充分了解之上才能夠進(jìn)一步的去按照需求改進(jìn)它。在做軟件的過程中雖然很累很枯燥,但是還是會感到一種榮譽(yù)與驕傲當(dāng)看到軟件調(diào)試失敗時(shí)確實(shí)會感到沮喪,但是一旦運(yùn)行成功就會有一種莫名的高興與動力。也許這就叫一種榮譽(yù)感吧。有的時(shí)候問題并不是自己做的好不好而是是否真正
7、的體會到了什么,可以說在做軟件的過程中,真正的體味到彩虹總在風(fēng)雨后。甚至有的時(shí)候感覺有種驀然回首那人卻在燈火闌珊處,也許治學(xué)最高境界就是這樣吧。其實(shí)在做軟件的過程中葉體會到了友誼的味道。正所謂當(dāng)局者迷旁觀者清,遇到同學(xué)糾結(jié)的問題旁邊的同學(xué)站在一個(gè)新的視角或許就會找出問題的所在,而在這過程中,可以體會到一種非常溫馨的感覺。寫到這里忽然想起來,有一次一個(gè)女同學(xué)調(diào)試半天不成功后哭了。在同學(xué)的安慰下她終于艱難地完成了,有的時(shí)候我真的會莫名的感動覺得有一種年輕的力量在我的身體里蕩漾?;蛟S真的就是一種不服輸?shù)木裎覀兊南热藗儾拍軌騽?chuàng)造出這樣一個(gè)美好的世界。那么說到自己,我覺得在以后的人生路上遇到什么樣的挫
8、折與磨難,自己也應(yīng)當(dāng)有一種不服輸?shù)膭蓬^吧,不輕言放棄,永不言敗才能到達(dá)人生理想的彼岸。恩,無論怎么樣軟件課程設(shè)計(jì)還是結(jié)束了在這過程中確實(shí)收獲了很多。我覺得學(xué)校很多的課程都可以設(shè)計(jì)成這樣,體味一種近乎實(shí)戰(zhàn)的環(huán)境才能夠讓我們學(xué)有所用。才是真的授之以漁而非授之以魚。在當(dāng)今填鴨式的中國教育模式下我覺得這或許可以做 一個(gè)突破點(diǎn)。然而,不幸的是據(jù)傳學(xué)校居然在以后的學(xué)生當(dāng)中不開設(shè)這門課了,我表示非常的不爽。為什么現(xiàn)在很多人都說高等學(xué)校教育質(zhì)量越來越差就是因?yàn)檫@嗎讓學(xué)弟學(xué)妹們體驗(yàn)這非一般的難度,才能讓他們有所成長源代碼#include#include#include#include#include typed
9、ef struct airline/定義變量儲存飛機(jī)信息char linenum20;char des20;char start20;char time20;int last;int sold;int price;struct airline *next;struct passenger/定義結(jié)構(gòu)體儲存乘客信息char linenum20;int ticketnum;char des20;char time20;char name20;char gender20;int price;struct passenger *next; ;static int m=10;static int n=50
10、;void insult();/航班查詢函數(shù)void book();/機(jī)票訂購void search();/機(jī)票查找函數(shù)void returnticket();/退票函數(shù)struct airline *linecreat();/為航班創(chuàng)立鏈表struct passenger *passengercreat();/為乘客信息創(chuàng)立鏈表void saveline(struct airline *pp);/保存信息至文件當(dāng)中void savepassenger(struct passenger *pp);/保存信息至文件當(dāng)中void main()int i,x; while(1)/采用while循環(huán)以
11、便返回 printf( t * n t 歡迎進(jìn)入南航公司機(jī)票銷售系統(tǒng) n t * n/輸出主界面 t n t n t n t & 機(jī)票信息查詢請輸入 1 n t & 購買機(jī)票請輸入 2 n t & 查詢機(jī)票信息請輸入 3 n t & 如需退票請輸入 4 n t * n t welcome to nanhang china n t * n t 請選擇 bb);scanf(%d,&i);/選擇需要進(jìn)行的服務(wù)類型 system(cls);/清屏函數(shù) switch(i)/用switch函數(shù)進(jìn)行選擇 case 1: insult(); printf(請記住您要乘坐的航班號以便購票,按回車回到主界面繼續(xù)n
12、); getch(); system(cls); break; case 2: book(); printf(按回車回到主界面); getch(); system(cls); break; case 3: search(); printf(按回車回到主界面); getch(); system(cls); break; case 4: returnticket(); printf(按回車回到主界面); getch(); system(cls); break; printf(退出請輸入0,繼續(xù)請輸入1n);/退出程序 scanf(%d,&x); if(x=0)break; void insult(
13、) int i,n;struct airline *pp ; char str120,str220; pp=linecreat(); n=0;puts(按照起飛的時(shí)間查詢請選擇1nn);/輸出選項(xiàng) puts(按照航班號查詢請選擇2nn); puts(按照目的地查詢請輸入3nn); scanf(%d,&i);if(i=1) switch(i) case 1:/按照所選時(shí)間段進(jìn)行查詢 printf(請輸入您的乘機(jī)時(shí)間段:輸入格式如01:00-02:00n); scanf(%s,str1);printf(到);scanf(%s,str2); while(pp-next!=null)/利用strcmp
14、函數(shù)查詢符合時(shí)間段的航班并輸出 if(strcmp(pp-time,str1)=0)&(strcmp(pp-time,str2)linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+; pp=pp-next; if(n=0)printf(sorry not foundn); break; case 2:/按照航班號進(jìn)行查詢 printf(請輸入航班號n); scanf(%s,str1); while(pp-next!=null)/利用strcmp函數(shù)查詢符合時(shí)間段的航班并輸出 if(strcmp(pp-linenum,str1
15、)=0) printf(航班號 目的地 始發(fā)地 起飛時(shí)間 剩余票數(shù) 已售票數(shù) 票價(jià)n ); printf(%s%9s%9s%9s%9d%9d%9dn,pp-linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+;pp=pp-next; if(n=0)printf(sorry not foundn); break; case 3:/按照目的地查詢 printf(請輸入目的地n); scanf(%s,str1); while(pp-next!=null)/利用strcmp函數(shù)查詢符合時(shí)間段的航班并輸出 if(strcmp(pp-d
16、es,str1)=0) printf(航班號 目的地 始發(fā)地 起飛時(shí)間 剩余票數(shù) 已售票數(shù) 票價(jià)n ); printf(%s%9s%9s%9s%9d%9d%9dn,pp-linenum,pp-des,pp-start,pp-time,pp-last,pp-sold,pp-price); n+; pp=pp-next; if(n=0)printf(sorry not foundn);/是否查找到,定義一個(gè)int型的數(shù)來判斷 break; else printf(對不起您的輸入有誤,按回車回到主界面); getch(); return; void book() struct airline *he
17、ad1,*p1,*p2; struct passenger *head2,*q1,*q2; int j,flag; printf(您確定要買票嗎?確定請輸入1,退出請輸入0 n);/確定進(jìn)入買票系統(tǒng) scanf(%d,&j); head1=p2=p1=linecreat(); head2=q2=passengercreat(); j=1; flag=0; if(j!=0) while(p2-next!=null)/利用strcmp函數(shù)查詢符合時(shí)間段的航班并輸出 printf(%10s%10s%10s%10s%7d%7d%7dn,p2-linenum,p2-des,p2-start,p2-tim
18、e,p2-last,p2-sold,p2-price);/輸出航班信息方便 p2=p2-next; while(j!=0) printf(請依次填寫以下信息:n); printf(航班號:); scanf(%s,q1-linenum);/輸入乘客信息 printf(姓名:); scanf(%s,q1-name); printf(性別:); scanf(%s,q1-gender); while(p1!=null) if(strcmp(q1-linenum,p1-linenum)=0) strcpy(q1-time,p1-time); strcpy(q1-des,p1-des);/將航班中的某些信
19、息放到乘客信息中 q1-price=p1-price; p1-sold+=1; p1-last-=1; flag=flag+1; q1-ticketnum=n+1;/靜態(tài)變量加一 saveline(head1);/保存信息至文本信息中while(q2-next!=null) q2=q2-next;/調(diào)整q2至文章末尾 q2-next=q1; q1-next=null; n=n+1; savepassenger(head2);/保存文件 break; p1=p1-next; if(flag=0) printf(對不起您輸入的航班有誤,重新輸入請輸入1,退出售票請輸入0:n); scanf(%d,
20、&j); else printf(購票成功n); n=n+1; printf(退出售票請輸入0,繼續(xù)請輸入1n); scanf(%d,&j); else printf(歡迎使用本系統(tǒng)); return; void search() int i,j,n; char string120; struct passenger *pp; n=0; pp=passengercreat(); printf(請選擇查詢方式:n); printf(按照姓名查詢請輸入1n);printf(按照機(jī)票信息查詢請輸入2n);/選擇查詢方式 scanf(%d,&i);switch(i)case 1:printf(請輸入您
21、的姓名:);scanf(%s,string1);while(pp!=null ) ; if(strcmp(pp-name,string1)=0)/尋找與之相符的量 printf(航班號t機(jī)票號t時(shí)間t目的地t姓名tn); printf(%s%7d%7s%9s%9sn,pp-linenum,pp-ticketnum,pp-time,pp-des,pp-name); n=n+1; break; pp=pp-next;if(n=0)printf(對不起,未找到符合條件的信息);break;case 2:printf(請輸入您的機(jī)票編號:);scanf(%d,&j); while(pp!=null)
22、if(j-pp-ticketnum)=0)/尋找機(jī)票號一致的乘客 printf(航班號t機(jī)票號t時(shí)間t目的地t姓名tn); printf(%7s%7d%7s%9s%9sn,pp-linenum,pp-ticketnum,pp-time,pp-des,pp-name);/輸出 n=n+1; break; pp=pp-next; if(n=0)printf(對不起,未找到符合條件的信息); break; return; void returnticket() char string120;int i,flag;struct passenger *p1,*p2,*head1;struct airli
23、ne *q1,*head2;flag=0;printf(請輸入您的姓名:); scanf(%s,string1); printf(請輸入您的機(jī)票編號:); scanf(%d,&i);head1=p1=passengercreat();while(p1!=null)if(strcmp(p1-name,string1)=0)&(p1-ticketnum-i)=0)/二者都要符合才能夠確定 p2-next=p1-next;flag=1;/鏈表刪除 break; p2=p1; p1=p1-next; if(flag=1) head2=q1=linecreat(); while(q1!=null) if
24、(strcmp(q1-linenum,p1-linenum)=0) q1-last+=1;/修改航班文件中的信息 q1-sold-=1; printf(刪除成功n);savepassenger(head1);/保存至文件當(dāng)中saveline(head2); break; q1=q1-next; else printf(對不起,未找到該乘客); return; struct airline *linecreat() int i; struct airline *head,*p1,*p2; file *fp;p1=p2=(struct airline *)malloc(sizeof(struct
25、airline ); if(fp=fopen(南方航空公司航班信息.txt,rt+)=null)/內(nèi)存中分配文件的空間 printf(不能打開文件,按任意鍵退出!); getch(); exit(1); fscanf(fp,%s%s%s%s%d%d%dn,p1-linenum,p1-des,p1-start,p1-time,&p1-last,&p1-sold,&p1-price);/先讀取一次 head=p1; for(i=0;inext=p1; p2=p1; p1=(struct airline *)malloc(sizeof(struct airline); fscanf(fp,%s%s%
26、s%s%d%d%dn,p1-linenum,p1-des,p1-start,p1-time,&p1-last,&p1-sold,&p1-price);/將航班的信息讀入到內(nèi)存當(dāng)中p2-next=p1; p1-next=null; return(head);/free(p1); /free(p2);struct passenger *passengercreat()int i; struct passenger *head,*p1,*p2; file *fp;p1=p2=(struct passenger *)malloc(sizeof(struct passenger ); if(fp=fopen(乘客信息.txt,rt+)=null)/內(nèi)存中分配文件的空間 printf(不能打開文件,按任意鍵退出!); getch(); exit
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度祠堂文化教育培訓(xùn)與推廣承包合同3篇
- 2025年地臺成型合同
- 二零二五年車輛抵押車輛租賃擔(dān)保合同2篇
- 二零二五年度住宅小區(qū)車位租賃合同書范本2篇
- 二零二五年度礦產(chǎn)資源承包經(jīng)營權(quán)轉(zhuǎn)讓合同范本4篇
- 二零二五年度民爆物品安全使用與維護(hù)服務(wù)合同4篇
- 【課件】房地產(chǎn)標(biāo)桿企業(yè)研究(經(jīng)營管理模式):萬科、合生創(chuàng)展、保利
- 二零二五年度模特個(gè)人品牌推廣合同8篇
- 《英文時(shí)間表達(dá)法》課件
- 2025年度新型節(jié)能大門生產(chǎn)安裝工程合同4篇
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 小學(xué)道德與法治學(xué)科高級(一級)教師職稱考試試題(有答案)
- 申請使用物業(yè)專項(xiàng)維修資金征求業(yè)主意見表
- 河北省承德市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 實(shí)用性閱讀與交流任務(wù)群設(shè)計(jì)思路與教學(xué)建議
- 應(yīng)急柜檢查表
- 通風(fēng)設(shè)施標(biāo)準(zhǔn)
- 酒店市場營銷教案
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
- 環(huán)保有限公司營銷策劃方案
評論
0/150
提交評論