軟件課程設(shè)計(jì)報(bào)告飛機(jī)票銷售系統(tǒng)_第1頁(yè)
軟件課程設(shè)計(jì)報(bào)告飛機(jī)票銷售系統(tǒng)_第2頁(yè)
軟件課程設(shè)計(jì)報(bào)告飛機(jī)票銷售系統(tǒng)_第3頁(yè)
軟件課程設(shè)計(jì)報(bào)告飛機(jī)票銷售系統(tǒng)_第4頁(yè)
軟件課程設(shè)計(jì)報(bào)告飛機(jī)票銷售系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件課程設(shè)計(jì)報(bào)告 班級(jí): 光信1005班 姓名: 學(xué)號(hào): 1軟件設(shè)計(jì)11.1設(shè)計(jì)題目11.2設(shè)計(jì)要求11.3設(shè)計(jì)思想11.4流程圖22軟件測(cè)試92.1航班信息查詢模塊測(cè)試92.2訂票模塊測(cè)試142.3機(jī)票信息查詢模塊測(cè)試172.4退票模塊測(cè)試183算法改進(jìn)214開(kāi)發(fā)體會(huì)22附錄:源代碼清單24參考文獻(xiàn)42設(shè)計(jì)題目 1.1設(shè)計(jì)題目飛機(jī)票銷售系統(tǒng)。1.2設(shè)計(jì)要求 運(yùn)用c語(yǔ)言基本知識(shí),結(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ī)票購(gòu)買、機(jī)票信息查詢、機(jī)票退購(gòu)等功能。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ù)。其中對(duì)數(shù)據(jù)的查找與處理我覺(jué)得不是很大可以放入各個(gè)功能模塊中進(jìn)行。對(duì)于已經(jīng)處理過(guò)的數(shù)據(jù)一般都要儲(chǔ)存,所以為了儲(chǔ)存文件信息分別創(chuàng)建了saveairline,與savepassenger兩個(gè)函數(shù)。其中函數(shù)中需要的信息與數(shù)據(jù)分別存在“乘客信息.txt”與“南航公司航班信息.txt”航班信息查詢模塊的功能主要由函數(shù)insult實(shí)現(xiàn),而航班信息查詢

3、模塊中又分為按航班號(hào)查詢航班信息模塊、按目的地查詢航班信息模塊和按起飛時(shí)間段查詢航班信息模塊三個(gè)小模塊 。訂票模塊的功能由函數(shù)book( )實(shí)現(xiàn)。機(jī)票信息查詢模塊功能由函數(shù)search( )實(shí)現(xiàn)。退票模塊功能由函數(shù)returnticket( )實(shí)現(xiàn)。每個(gè)模塊的函數(shù)都通過(guò)對(duì)結(jié)構(gòu)鏈表和文件的操作來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取和修改,從而實(shí)現(xiàn)各自的功能。程序中采用的查找數(shù)據(jù)方式為順序查找。1.4流程圖以下依次為main函數(shù)流程圖;insult函數(shù)流程圖;book函數(shù)流程圖;search函數(shù)流程圖;returnticket函數(shù)流程圖; 2軟件測(cè)試2.1航班信息查詢模塊測(cè)試運(yùn)行程序,首先進(jìn)入主菜單界面。選擇1進(jìn)入航

4、班信息查詢按照起飛時(shí)間查詢,輸入可以乘機(jī)的時(shí)間段找到的航班信息如下按任意鍵繼續(xù),軟件可以由此退出選擇2,航班號(hào)查詢得到界面如下如果選取3按照目的地查詢2訂票進(jìn)入買票系統(tǒng)進(jìn)入后依次輸入信息買票如果輸入航班有誤則會(huì)出現(xiàn)若一人未購(gòu)票先查找買票查詢可見(jiàn)剛才購(gòu)票成功。3退出售票系統(tǒng)進(jìn)入查詢系統(tǒng)選擇查詢方式,如果選擇按照姓名查詢?nèi)绻x擇機(jī)票號(hào)查詢與用姓名查詢的結(jié)果相同如果沒(méi)有相應(yīng)的乘客4,退票模塊查詢輸入相應(yīng)的乘客的姓名與編號(hào)即可刪除如果有一人已購(gòu)票查詢得:刪除之;再次查詢未找到即證明已經(jīng)刪除算法改進(jìn)改進(jìn)1在該程序調(diào)試時(shí)我發(fā)現(xiàn)程序中很多的輸入與輸出可以做成一些功能模塊,像是查錯(cuò)與提示錯(cuò)誤的功能便是經(jīng)常需要

5、的部分。如果能夠?qū)⑦@些部分做成一些簡(jiǎn)單的函數(shù)則能夠顯著提高函數(shù)的可讀性與函數(shù)的內(nèi)聚性改進(jìn)2在查找過(guò)程中,由于文件儲(chǔ)存時(shí)就是按照順序儲(chǔ)存的,可以采用二分法查找。這樣可以大大提高函數(shù)的運(yùn)行效率。改進(jìn)3函數(shù)在運(yùn)行過(guò)程中我發(fā)現(xiàn)并沒(méi)有航班的添加程序,可以加一個(gè)管理員系統(tǒng),這樣就可以更加好的去管理航班銷售系統(tǒng)。開(kāi)發(fā)體會(huì)在此次軟件開(kāi)發(fā)過(guò)程當(dāng)中,發(fā)現(xiàn)了自己好多的不足。首先就是于軟件開(kāi)發(fā)過(guò)程當(dāng)中,對(duì)于各類函數(shù)的不熟悉。造成我犯了很多知識(shí)性的錯(cuò)誤。我體會(huì)到要想在編程上有所突破光靠自己的奇思妙想是不夠的,必須建立在對(duì)程序充分的熟悉上。對(duì)于各類算法只有充分的熟悉,才能夠知道自己在哪些方面的不足。然后就是,我覺(jué)得對(duì)于函

6、數(shù)的返回操作做的并不是很好。主要就是采用while循環(huán)然而在做這個(gè)的過(guò)程中發(fā)現(xiàn)自己對(duì)于這個(gè)其實(shí)做的也不是很好然后我感覺(jué)到程序的編寫有的時(shí)候并不是一蹴而就的,必須要做到胸有成竹。做到自頂而下不斷細(xì)分,只有這樣才能夠加強(qiáng)對(duì)軟件的理解。做軟件和做事情一樣需要有一個(gè)清晰地規(guī)劃。做好規(guī)劃也就是成功的一半。所以遇到事情以后應(yīng)當(dāng)先充分的了解對(duì)象。建立在對(duì)事物的充分了解之上才能夠進(jìn)一步的去按照需求改進(jìn)它。在做軟件的過(guò)程中雖然很累很枯燥,但是還是會(huì)感到一種榮譽(yù)與驕傲當(dāng)看到軟件調(diào)試失敗時(shí)確實(shí)會(huì)感到沮喪,但是一旦運(yùn)行成功就會(huì)有一種莫名的高興與動(dòng)力。也許這就叫一種榮譽(yù)感吧。有的時(shí)候問(wèn)題并不是自己做的好不好而是是否真正

7、的體會(huì)到了什么,可以說(shuō)在做軟件的過(guò)程中,真正的體味到彩虹總在風(fēng)雨后。甚至有的時(shí)候感覺(jué)有種驀然回首那人卻在燈火闌珊處,也許治學(xué)最高境界就是這樣吧。其實(shí)在做軟件的過(guò)程中葉體會(huì)到了友誼的味道。正所謂當(dāng)局者迷旁觀者清,遇到同學(xué)糾結(jié)的問(wèn)題旁邊的同學(xué)站在一個(gè)新的視角或許就會(huì)找出問(wèn)題的所在,而在這過(guò)程中,可以體會(huì)到一種非常溫馨的感覺(jué)。寫到這里忽然想起來(lái),有一次一個(gè)女同學(xué)調(diào)試半天不成功后哭了。在同學(xué)的安慰下她終于艱難地完成了,有的時(shí)候我真的會(huì)莫名的感動(dòng)覺(jué)得有一種年輕的力量在我的身體里蕩漾?;蛟S真的就是一種不服輸?shù)木裎覀兊南热藗儾拍軌騽?chuàng)造出這樣一個(gè)美好的世界。那么說(shuō)到自己,我覺(jué)得在以后的人生路上遇到什么樣的挫

8、折與磨難,自己也應(yīng)當(dāng)有一種不服輸?shù)膭蓬^吧,不輕言放棄,永不言敗才能到達(dá)人生理想的彼岸。恩,無(wú)論怎么樣軟件課程設(shè)計(jì)還是結(jié)束了在這過(guò)程中確實(shí)收獲了很多。我覺(jué)得學(xué)校很多的課程都可以設(shè)計(jì)成這樣,體味一種近乎實(shí)戰(zhàn)的環(huán)境才能夠讓我們學(xué)有所用。才是真的授之以漁而非授之以魚(yú)。在當(dāng)今填鴨式的中國(guó)教育模式下我覺(jué)得這或許可以做 一個(gè)突破點(diǎn)。然而,不幸的是據(jù)傳學(xué)校居然在以后的學(xué)生當(dāng)中不開(kāi)設(shè)這門課了,我表示非常的不爽。為什么現(xiàn)在很多人都說(shuō)高等學(xué)校教育質(zhì)量越來(lái)越差就是因?yàn)檫@嗎讓學(xué)弟學(xué)妹們體驗(yàn)這非一般的難度,才能讓他們有所成長(zhǎng)源代碼#include#include#include#include#include typed

9、ef struct airline/定義變量?jī)?chǔ)存飛機(jī)信息char linenum20;char des20;char start20;char time20;int last;int sold;int price;struct airline *next;struct passenger/定義結(jié)構(gòu)體儲(chǔ)存乘客信息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ī)票訂購(gòu)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ī)票信息查詢請(qǐng)輸入 1 n t & 購(gòu)買機(jī)票請(qǐng)輸入 2 n t & 查詢機(jī)票信息請(qǐng)輸入 3 n t & 如需退票請(qǐng)輸入 4 n t * n t welcome to nanhang china n t * n t 請(qǐng)選擇 bb);scanf(%d,&i);/選擇需要進(jìn)行的服務(wù)類型 system(cls);/清屏函數(shù) switch(i)/用switch函數(shù)進(jìn)行選擇 case 1: insult(); printf(請(qǐng)記住您要乘坐的航班號(hào)以便購(gòu)票,按回車回到主界面繼續(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(退出請(qǐng)輸入0,繼續(xù)請(qǐng)輸入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í)間查詢請(qǐng)選擇1nn);/輸出選項(xiàng) puts(按照航班號(hào)查詢請(qǐng)選擇2nn); puts(按照目的地查詢請(qǐng)輸入3nn); scanf(%d,&i);if(i=1) switch(i) case 1:/按照所選時(shí)間段進(jìn)行查詢 printf(請(qǐng)輸入您的乘機(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:/按照航班號(hào)進(jìn)行查詢 printf(請(qǐng)輸入航班號(hào)n); scanf(%s,str1); while(pp-next!=null)/利用strcmp函數(shù)查詢符合時(shí)間段的航班并輸出 if(strcmp(pp-linenum,str1

15、)=0) printf(航班號(hào) 目的地 始發(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(請(qǐng)輸入目的地n); scanf(%s,str1); while(pp-next!=null)/利用strcmp函數(shù)查詢符合時(shí)間段的航班并輸出 if(strcmp(pp-d

16、es,str1)=0) printf(航班號(hào) 目的地 始發(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ù)來(lái)判斷 break; else printf(對(duì)不起您的輸入有誤,按回車回到主界面); getch(); return; void book() struct airline *he

17、ad1,*p1,*p2; struct passenger *head2,*q1,*q2; int j,flag; printf(您確定要買票嗎?確定請(qǐng)輸入1,退出請(qǐng)輸入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(請(qǐng)依次填寫以下信息:n); printf(航班號(hào):); 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(對(duì)不起您輸入的航班有誤,重新輸入請(qǐng)輸入1,退出售票請(qǐng)輸入0:n); scanf(%d,

20、&j); else printf(購(gòu)票成功n); n=n+1; printf(退出售票請(qǐng)輸入0,繼續(xù)請(qǐng)輸入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(請(qǐng)選擇查詢方式:n); printf(按照姓名查詢請(qǐng)輸入1n);printf(按照機(jī)票信息查詢請(qǐng)輸入2n);/選擇查詢方式 scanf(%d,&i);switch(i)case 1:printf(請(qǐng)輸入您

21、的姓名:);scanf(%s,string1);while(pp!=null ) ; if(strcmp(pp-name,string1)=0)/尋找與之相符的量 printf(航班號(hào)t機(jī)票號(hào)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(對(duì)不起,未找到符合條件的信息);break;case 2:printf(請(qǐng)輸入您的機(jī)票編號(hào):);scanf(%d,&j); while(pp!=null)

22、if(j-pp-ticketnum)=0)/尋找機(jī)票號(hào)一致的乘客 printf(航班號(hào)t機(jī)票號(hào)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(對(duì)不起,未找到符合條件的信息); break; return; void returnticket() char string120;int i,flag;struct passenger *p1,*p2,*head1;struct airli

23、ne *q1,*head2;flag=0;printf(請(qǐng)輸入您的姓名:); scanf(%s,string1); printf(請(qǐng)輸入您的機(jī)票編號(hào):); 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(對(duì)不起,未找到該乘客); 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(不能打開(kāi)文件,按任意鍵退出!); 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(不能打開(kāi)文件,按任意鍵退出!); getch(); exit

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論