




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄一、航空客運(yùn)訂票系統(tǒng)基本要求 1.二、問(wèn)題描述1.三、需求分析 1.四、概要設(shè)計(jì)2.1、系統(tǒng)的抽象數(shù)據(jù)類型2.2、程序中用到的庫(kù)函數(shù)3.3、程序的四大模塊3.4、函數(shù)間調(diào)用關(guān)系3.5、算法設(shè)計(jì):(每個(gè)模塊的算法設(shè)計(jì)說(shuō)明如下:)46、存儲(chǔ)結(jié)才設(shè)計(jì):4.五、詳細(xì)設(shè)計(jì)6.1、主程序中需要的全程量 6.2.部分函數(shù)模塊以及流程圖: 61) 主函數(shù)模塊6.2) .錄入信息函數(shù)模塊: 8.3) .查詢航班信息函數(shù)模塊9.4) .訂票功能函數(shù)模塊:1.15) .退票功能函數(shù)模塊136)顯示信息函數(shù)模塊:15六、測(cè)試分析1.71 .數(shù)據(jù)測(cè)試1.72 .測(cè)試評(píng)價(jià):213 .遇到的問(wèn)題及解決方法 22七、數(shù)據(jù)
2、結(jié)構(gòu)實(shí)習(xí)心得體會(huì) 22八、參考文獻(xiàn):23九、附錄:源程序24、航空客運(yùn)訂票系統(tǒng)基本要求1、每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛機(jī)周日(星期幾)、 乘員定額、余票量、訂定票的客戶名單(包括姓名、訂票量、艙位等級(jí)1, 2或3)以及等候替補(bǔ)的客戶名單(包括姓名、所需數(shù)量)。2、系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:1)查詢航線:根據(jù)客戶提出的終點(diǎn)站名輸出如下信息:航班號(hào)、飛機(jī)號(hào)、 星期幾飛行,最近一天航班的日期和余票額;2) 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨?票額情況,若有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或 余票少余訂票額,則需重新詢問(wèn)客戶要求。若
3、需要,可登記排隊(duì)候補(bǔ);3)承辦退票業(yè)務(wù):根據(jù)客戶提出的情況(日期、航班號(hào)),為客戶辦理退票 手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問(wèn)排在第一的客戶,若 所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問(wèn)其它排隊(duì) 候補(bǔ)的客戶。實(shí)現(xiàn)提示:兩個(gè)客戶名單可分別由線性表和隊(duì)列實(shí)現(xiàn)。 為查找方便,已訂票客戶 的線性表應(yīng)按客戶姓名有序,并且,為了插入和刪除方便,應(yīng)以鏈表作為存儲(chǔ)結(jié) 構(gòu)。由于預(yù)約人數(shù)無(wú)法預(yù)計(jì),隊(duì)列也應(yīng)以鏈表作為存儲(chǔ)結(jié)構(gòu)。、問(wèn)題描述設(shè)計(jì)一個(gè)航班信息查詢與訂票系統(tǒng)程序, 要求設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié) 構(gòu),并實(shí)現(xiàn)以下功能:士 錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)
4、據(jù)結(jié)構(gòu)、具 體數(shù)據(jù)自定)士 查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵 達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉(cāng));可以輸入起飛抵達(dá)城 市,查詢飛機(jī)航班情況;$ 訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如 果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班;$ 退票:可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票 數(shù)量及航班情況,訂單要有編號(hào)。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件三、需求分析1 .本程序以動(dòng)態(tài)鏈表為存儲(chǔ)結(jié)構(gòu),有兩個(gè)鏈表,第一個(gè)鏈表:每個(gè)航班信息開 辟一個(gè)節(jié)點(diǎn)空間,在節(jié)點(diǎn)中存放航班信息,如航班號(hào),起飛時(shí)間,出發(fā)地
5、, 目的地,總座位數(shù),折扣,票價(jià)等。第二個(gè)鏈表:每個(gè)乘客開辟一個(gè)節(jié)點(diǎn), 存放乘客的記錄:姓名,證件號(hào)碼,預(yù)定的航班號(hào),定單號(hào)碼及訂票的數(shù)量。2 .本程序有五大模塊組成,分別為基本信息輸入模塊(包括航班信息輸入和客 戶信息輸入),信息查詢模塊,訂票模塊,修改模塊(包括退票模塊及修改航 班信息模塊)。信息輸入模塊的功能是錄入各航班的基本信息;信息查詢模塊 的功能為提供各種信息查詢的操作;訂票模塊是錄入各訂票人的基本信息; 信息修改模塊是退票和修改航班信息。3 .程序執(zhí)行的命令:1.錄入信息 2. 查詢 3. 訂票 4.退票 5. 修改 6.顯示航班信息7.顯示客戶信息8. 退出4 .測(cè)試數(shù)據(jù):航班
6、數(shù)據(jù)庫(kù)中的數(shù)據(jù)。以xiaying.txt文件保存。(附在源程序四、概要設(shè)計(jì)1、系統(tǒng)的抽象數(shù)據(jù)類型設(shè)定民航航班信息查詢與客票發(fā)售服務(wù)系統(tǒng)的抽象數(shù)據(jù)類型定義:ADT hanban數(shù)據(jù)對(duì)象:D=ai|ai CharSet,i=1,2, ,n,n>=0數(shù)據(jù)關(guān)系:R= <c1,c2> cl c2 基本操作:creat() ;操作結(jié)果:錄入航班信息。search() ;操作結(jié)果:進(jìn)入航班查詢系統(tǒng)。order() ;操作結(jié)果:進(jìn)行訂票。quit() ;操作結(jié)果:進(jìn)行退票。revise() ;操作結(jié)果:修改航班信息。print ();操作結(jié)果:顯示航班信息。print2();操作結(jié)果:顯示客
7、戶資料。Clear() ;操作結(jié)果:清除記錄。 ADT hanban2、程序中用到的庫(kù)函數(shù)#include <stdio.h>#include <string.h>#include <conio.h>#include <ctype.h>#include <math.h>#include <stdlib.h>#include <malloc.h>3、程序的四大模塊(1)主程序模塊:Void main()do接受命令;處理命令;while(命令!=退出);(2)信息輸入模塊一一完成基本信息的輸入和修改;(3)實(shí)現(xiàn)功
8、能模塊一一實(shí)現(xiàn)信息查詢、訂票和退票功能操作;(4)信息顯示模塊一一實(shí)現(xiàn)錄入信息的顯示。4、函數(shù)間調(diào)用關(guān)系主函數(shù)錄 入 信 息退航 班 號(hào) 查 詢起落地查詢修 改 信 息航 班 信 息客 戶 信 息圖1整體思想方框圖5、算法設(shè)計(jì):(每個(gè)模塊的算法設(shè)計(jì)說(shuō)明如下:)(1)錄入模塊:查找單鏈表的鏈尾,在鏈尾插入一個(gè)“航班信息”的新結(jié)點(diǎn)。(2)查詢模塊:提供兩種查方式:按航號(hào)和按航線查詢,1代表按航號(hào)查詢,2代表按航線查詢。0則表示退出查詢。順著單鏈表查找,如果與航班號(hào)(航線)一致,輸出相關(guān)信息,否則,查詢不成功。(3)訂票模塊:查找乘客要訂的航班號(hào),判斷此航班是否有空位,有則輸入乘客有關(guān)信息,訂票 成
9、功,否則失敗。(4)退票模塊:輸入要退票的乘客姓名以及證件號(hào)碼,查找乘客資料的鏈表中是否有這位乘客,有則刪去此結(jié)點(diǎn),并在空位加上1,無(wú)則退票失敗。(5)修改模塊:輸入密碼,確認(rèn)是否有權(quán)限對(duì)航班信息進(jìn)行修改,有則在航班信息鏈表中查找要修改的結(jié)點(diǎn),進(jìn)行修改,否則不能修改。6、存儲(chǔ)結(jié)構(gòu)設(shè)計(jì):(1)航班的信息:為了便于查找和修改,航班的情況存儲(chǔ)結(jié)構(gòu)采用單鏈表, 每 個(gè)元素表示一個(gè)航班的情況,包括航班號(hào)、起飛達(dá)到的時(shí)間、余票和出發(fā) 地、目的地、票價(jià)以及總票數(shù)八個(gè)數(shù)據(jù)項(xiàng):航班號(hào)起飛時(shí)問(wèn)達(dá)到時(shí)問(wèn)出發(fā)地目的地總票數(shù)余票票價(jià)單鏈表如下: D1 d D2 D3每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域:C語(yǔ)言描述如下:typed
10、ef struct Planechar planeNo10;char start30;char end_time30;char startplace30;char end_place30; int price;int discount;int total;int tamount;struct Plane *next;/*/*/*/*/*/*/*/*/*/*航班信息*/ 航班號(hào)*/起飛時(shí)間*/ 到達(dá)時(shí)間*/ 起飛城市*/ 到達(dá)城市*/ 機(jī)票價(jià)格*/ 折后價(jià)格*/ 機(jī)票總數(shù)*/ 剩余票數(shù)*/數(shù)據(jù)域指針域20Plane;(2)旅客的資料:為了便于插入、刪除和修改,其采用單鏈表存儲(chǔ)結(jié)構(gòu),每個(gè)數(shù)據(jù)元素包
11、括姓名、證件號(hào)碼、航班號(hào)和座位號(hào)四個(gè)數(shù)據(jù)項(xiàng):旅客姓名證件號(hào)碼航班號(hào)C語(yǔ)言描述如下:定義乘客資料結(jié)點(diǎn)*/typedef struct passengernode /* char name20;char ID_num20;char air_num20;struct passengernode *next;passengernode;五、詳細(xì)設(shè)計(jì)1、主程序中需要的全程量struct Plane/*char planeNo10;/*char start30;/*char end_time30;/*char startplace30;/*char end_place30;/*int price;/*in
12、t discount ;/*int total;/*int tamount/*struct Plane *next; Plane;struct customer/* char name30;/*char ID30;/*int tamount;/*char plane30;/*char no30;/*航班信息*/ 航班號(hào)*/ 起飛時(shí)間*/ 降落時(shí)間?*/ 起飛城市*/ 降落城市*/ 機(jī)票價(jià)格*/ 折后價(jià)格*/ 總機(jī)票數(shù)*/ 剩余機(jī)票數(shù)*/客戶資料*/ 客戶姓名*/ 證件號(hào)*/ 訂票數(shù)量*/ 航班號(hào)*/ 訂單編號(hào)*/struct customer *next;customer;Struct pla
13、ne *head=NULL;struct customer *glist=NULL;2.部分函數(shù)模塊以及流程圖1)主函數(shù)模塊main() int i;while(1) system( "cls ");printf("nt*定*票*系*統(tǒng)*11);printf("n");printf("nt*1.錄入信息 *");printf("n");printf("n");printf("nt *2.查詢*");printf("n");printf("
14、;nt *3.訂票*");printf("n");printf("nt *4.退票*");printf("n");printf("nt *5.修改*");printf("n");printf("nt *6.顯示航班信息*");printf("n");printf("nt *7.顯示客戶信息*");printf("n");printf("nt *8.退出*");printf("n
15、");printf("nn *");printf("n請(qǐng)選擇操作命令:");while(1)scanf("%d",&i);if(i>=1&&i<=8)break;else printf("n choose 1,2,3,4,5,6,7,8");switch(i)case 1:system(“cls ”);creat();break;case 2:system(“cls ”)search();break;case 3:system(cls )order();break;ca
16、se 4:system(cls )quit();break;case 5:system(cls )revise();break;case 6:system(cls )print();break;case 7:system(cls )print2();break;case 8:exit(0);default:break;主函數(shù)流程圖2) .錄入信息函數(shù)模塊:void *creat()Plane *info;while(1)建立新結(jié)點(diǎn)*/info=(Plane*)malloc(sizeof(Plane);/* if(!info)printf("EMS has been full!n&qu
17、ot;);return NULL;printf("n輸入航班號(hào):");scanf("%s",info->planeNo);printf("輸入起飛時(shí)間:");scanf("%s",info->start);printf(" 輸入到達(dá)時(shí)間:");scanf("%s",info->end_time);printf("輸入起飛地點(diǎn):");scanf("%s",info->startplace);printf("
18、; 輸入到達(dá)地點(diǎn):");scanf("%s",info->end_place);printf("輸入機(jī)票后評(píng) :");scanf("%d”,&info->price);printf("輸入折后價(jià)格:");scanf("%d”,&info->discount);printf("輸入總機(jī)票數(shù):");scanf("%d”,&info->total);printf("輸入剩余票數(shù):");scanf("%d”
19、,&info->tamount);info->next=head;head=info;system("cls");printf(" 是否繼續(xù)? y/n");if(getch()='n'|getch()='N') break;save1(head);輸入信息函數(shù)流程圖圖3輸入信息函數(shù)流程圖3) .查詢航班信息函數(shù)模塊void search()char s130,s230;Plane *p;int i=0,ch;while(1) p=head;printf("請(qǐng)選擇 n");printf
20、("1.按航班號(hào)查詢n");printf("2.按起落城市查詢n");printf("3.退出 n");scanf("%d",&ch);if(ch=1) printf("n 請(qǐng)輸入航班號(hào)n");scanf("%s",s1);/*讀如航班號(hào) */while(p)if(!strcmp(s1,p->planeNo)printf("n起飛地點(diǎn):%s",p->startplace);printf("n起飛時(shí)間:s",p->
21、;start);printf("n到達(dá)地點(diǎn):s",p->end_place);printf("n到達(dá)時(shí)間:s",p->end_time);printf("n機(jī)票價(jià)格:d",p->price);printf("n折后價(jià)格:d",p->discount);printf("n總機(jī)票數(shù):d",p->total);printf("n剩余票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿
22、!n");/*提示此航班已滿 */p=p->next;i+;else p=p->next;if(!i) printf(" 無(wú)此航班 n"); i=0;if(ch=2)printf("輸入起飛地點(diǎn):");scanf("%s",s1)/printf("n 輸入到達(dá)地點(diǎn):");scanf("%s",s2);while(p)if(!strcmp(s1,p->startplace)&&!strcmp(s2,p->end_place)printf("
23、;起飛地點(diǎn):%s",p->startplace);printf("n起飛時(shí)間:s",p->start);printf("n 到達(dá)地點(diǎn):s",p->end_place);printf("n到達(dá)時(shí)間:s",p->end_time);printf("n機(jī)票價(jià)格:d",p->price);printf("n折后價(jià)格:d",p->discount);printf("n總機(jī)票數(shù):d",p->total);printf("n剩余
24、票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿!n");p=p->next;i+;else p=p->next;if(!i) printf("無(wú)此航班 n"); i=0;if(ch=3) break;查詢函數(shù)流程圖4) .訂票功能函數(shù)模塊:void order()customer *info;Plane *p,*q;char s30; int flag=0;while(1)p=q=head;printf("您想預(yù)定哪趟航班");scanf(&quo
25、t;%s",&s);if(strcmp(p->planeNo,s)!=0) /*判斷 */printf("無(wú)此航班");/* 出錯(cuò)提示*/p=p->next;getch();break;if(p->tamount=0)printf("此航班已滿.n是否需要預(yù)定其他到達(dá)該城市的航班:y/n'n");if(getch()='n'|getch()='N') break;elsewhile(q)if(!strcmp(p->end_place,q->end_place)&
26、;&p!=q)printf("您可以預(yù)定s號(hào)航班到達(dá)該城市n",q->planeNo);flag=1;q=q->next;if(flag=0)printf("沒(méi)有到打該城市的其他航班");getch();break;elseprintf("目前此航班還有%d張票”,p->tamount);info=(customer*)malloc(sizeof(customer);if(!info)printf("EMS has been full!n");exit(0);printf("n姓名:&qu
27、ot;);scanf("%s",info->name);printf("n身份證號(hào)碼:");scanf("%s",info->ID);printf("n航班號(hào):");scanf("%s",info->planeNo);printf("n訂票數(shù)量(<=%d):",p->tamount);scanf("%d”,&info->tamount);p->tamount=p->tamount-info->tamoun
28、t;info->no=num;printf("n您的訂單號(hào)是 dn",info->no);num+;info->next=glist;glist=info;printf("是否繼續(xù)? y/n");if('n'=getch()|'N'=getch() break; system( “cls ” );savel(head);save2(glist);訂票函數(shù)流程圖T圖5訂票函數(shù)流程圖5) .退票功能函數(shù)模塊 void quit()char s130,s230,s330;int m=0;Plane *p ;cu
29、stomer *q,*r;while(1) p=head;r=q=glist;printf("輸入姓名:n");scanf("%s",s2);if(strcmp(s2,q->name)!=0) /* 判斷 */printf("您沒(méi)有預(yù)定機(jī)票");getch(); break; /* 出錯(cuò)提示*/ else printf("您想退訂哪趟航班:n");scanf("%s",s1);if(strcmp(s1,q->planeNo)!=0) /*判斷*/printf("您沒(méi)有預(yù)定此
30、航班n");getch();break; /*出錯(cuò)提示*/ elseprintf("輸入身份證號(hào):n");scanf("%s",s3);if(strcmp(s3,q->ID)!=0) /*判斷 */printf("n您輸入的身份證號(hào)碼有誤 n");getch();break; /*出錯(cuò)提示*/ elseprintf("想退幾張機(jī)票:n");scanf("%d",&m);while(strcmp(p->planeNo,s1)p=p->next;p->tam
31、ount=p->tamount+m;while(strcmp(q->name,s2)q=q->next;printf("n姓名:s",q->name);/* 輸出原始定單 */printf("n身份證號(hào)碼:s",q->ID);printf("n航班號(hào):%s",q->planeNo);printf("n訂票數(shù)量:d",q->tamount);printf("nn 真的要退訂嗎?(Y/N)n");if(getch()='y')q->ta
32、mount=q->tamount-m;printf("n姓名:s",q->name);/*打印新的定單 */printf("n身份證號(hào)碼:s",q->ID);printf("n航班號(hào):%s",q->planeNo);printf("n訂票數(shù)量:d",q->tamount);if(!q->tamount) q=q->next;while(r!=q) r->no-;r=r->next;printf("nn退票成功!nn");printf(&quo
33、t; 是否繼續(xù)? y/n");if('n'=getch()|'N'=getch() break;savel(head);save2(glist);6)顯示信息函數(shù)模塊:print()struct Plane *p; p=head->next;system( “cls ” ); if(!p)puts("nNO any data.");printf("n請(qǐng)按任意鍵返回");getch();return;折扣printf("n 航班號(hào)起飛時(shí)間抵達(dá)時(shí)間 出發(fā)城市 目的地 價(jià)格總票數(shù)剩余票數(shù)n")
34、;for(;p!=NULL;p=p->next) printf("%s %s %s %s %s %d %s %d %dn",p->planeNo,p->start,p->end_time,p->startplace,p->end_place,p->price,p->discount,p->total,p->start);printf("n請(qǐng)按任意鍵返回");getch();顯示函數(shù)流程圖prlntH'n青痘白面強(qiáng)追回圖7顯示函數(shù)流程圖六、測(cè)試分析1.數(shù)據(jù)測(cè)試主菜單界面1)錄入信息QI &
35、#39;T:Oocurrients and EetzintMAdministrEcirQebLiQTCciE.exe"Gllell長(zhǎng)上 fl V ! I ! s05 y- 0 M 6 4 128 6 2 2"點(diǎn)點(diǎn)數(shù)地番不 班飛達(dá)飛達(dá)IM后機(jī)排 爵到起亂機(jī)制 不入入A-入入入入入入 是 mlfi! i一| x2) 查詢B "二A口CKurr白nts wnd £ertirgs' Ac:nnrierriTct' PmbjgTCppLmxf"孽牖蠢3-息出請(qǐng)輸入航班號(hào)L1TG12200眇-Z海-5長(zhǎng)10二11麻6421點(diǎn)問(wèn)點(diǎn)何數(shù)世第香k
36、飛飛達(dá)端后機(jī)余 起起金至機(jī)折上心此沅孤已滿,請(qǐng)呼、 ,1 .發(fā)航班號(hào)查詢2 .法起營(yíng)城市查詢3 一息出國(guó)'2:'Jocunert5 and Settnai' AdmniFtratcir. DebloCpr 1.exe"此航租已加:專航班笈查詢,強(qiáng)運(yùn)落城市查詢.顯出IS人起飛地點(diǎn),長(zhǎng)沙3)訂票5 0 04 8 67 116 S 沙必京刈 箕1B北11達(dá)點(diǎn)間點(diǎn)間數(shù) 到地Br±*Br4J 香 k 人飛飛達(dá)達(dá)器機(jī)余因 C:Docunnent5 and 5ettinq5.AdmirrisUat&r'-,DebugCppl.exe您想預(yù)定哪趟航班
37、LVG1W2 且前此航班還者2B8張票 姓名;SUD身份證號(hào)招:220航班號(hào):LYG12:2訂票數(shù)量”2曲”2酗您的訝單號(hào)是1 是否生續(xù)? y"4)退票S3 'C:'Documents and Settinos' Adrnristrator' DebuG2ppl.exe"BUD您想退訂哪趟航班工LYG122扁人身份記號(hào)?220想退幾張機(jī)票m 49處名=£UD異橋記號(hào)弼出白 再理手中設(shè)方 訂祟費(fèi)量:20日真的濱返訂嗎7四力0 是否維維? iF/n-腔狗拼音舉:國(guó),rC:!|,DDCjmant5 rind Settings' A
38、dmin stntor'.Dbugrpp 1.exe輸入姓名;BUD您想退訂班?巡航班,LVG122 輸入身份心號(hào) 221您輸入的身份證號(hào)犯有誤5)修改航班信息219 "C:Doajrrients and SettingslA dmiostratorXOeb u gCp n 1. exe0 01S .V4/ 000B1012長(zhǎng)廣打46310n翌K咸叼, 飛達(dá)因四票后計(jì)余息縝 起到起招數(shù)心熟B信繼 Ar入入入入入入入:1改否18像是326)顯示客戶信息2 .測(cè)試評(píng)價(jià):該測(cè)試結(jié)果完全符合預(yù)計(jì)的結(jié)果,載入航班數(shù)據(jù)庫(kù)信息,進(jìn)而預(yù)訂機(jī)票, 仍后輸出預(yù)訂后航班信息。相應(yīng)的信息應(yīng)是原來(lái)的出
39、去被預(yù)訂的。由測(cè)試結(jié) 果來(lái)看,輸出結(jié)果完全真確。3 .遇到的問(wèn)題及解決方法(1)在輸出數(shù)據(jù)時(shí)出現(xiàn)亂碼,后來(lái)發(fā)現(xiàn)輸出的參數(shù)個(gè)數(shù)與前面預(yù)想輸出個(gè)數(shù) 不同。保持個(gè)數(shù)一致就可以解決。(2)存盤時(shí)發(fā)現(xiàn)路徑錯(cuò)誤,輸入真確的存盤路徑即可。(3)最初完成程序的時(shí)候功能里的錯(cuò)誤提示功能很弱,輸入信息出錯(cuò)時(shí)不能 很好的提示錯(cuò)誤,在謹(jǐn)慎全面的考慮到出錯(cuò)情況之后經(jīng)反復(fù)修改終于達(dá) 到功能要求。七、數(shù)據(jù)結(jié)構(gòu)實(shí)習(xí)心得體會(huì)經(jīng)過(guò)短短兩個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)數(shù)據(jù)結(jié)構(gòu)有了更進(jìn)一步的認(rèn)識(shí)和 了解,要想學(xué)好它要重在實(shí)踐,要通過(guò)不斷的上機(jī)操作才能更好地學(xué)習(xí)它。這次實(shí)踐的三個(gè)任務(wù)我全部是用鏈表來(lái)完成的, 自己以前對(duì)鏈表和指針這部 分
40、的知識(shí)掌握不是很扎實(shí),所以在實(shí)踐中給自己設(shè)定了一個(gè)很大的挑戰(zhàn)。 用連表 來(lái)實(shí)現(xiàn)功能方便又高效,但同時(shí)也復(fù)雜,更容易出錯(cuò),從函數(shù)結(jié)構(gòu)體的定義到調(diào) 用,每個(gè)細(xì)節(jié)都要認(rèn)真謹(jǐn)慎的編寫程序, 地址和數(shù)值的傳遞也非常重要,理解不 透,運(yùn)用不好就會(huì)出現(xiàn)很多奇怪的問(wèn)題, 無(wú)從下手。通過(guò)動(dòng)手操作編程也確實(shí)讓 我對(duì)這部分的知識(shí)更深刻的理解、更好的掌握了。不在象以前那樣害怕接觸這方 面的程序了。由于這次的任務(wù)都是設(shè)計(jì)一些實(shí)用性很強(qiáng)的應(yīng)用系統(tǒng),對(duì)各方面要求都比較 高,不僅是可以簡(jiǎn)單的實(shí)現(xiàn)要求的功能, 同時(shí)要十分重要出錯(cuò)提示,即輸入錯(cuò)誤 信息或者不存在想要查詢的信息時(shí)候, 系統(tǒng)要能夠靈敏的報(bào)錯(cuò),并且提供相關(guān)參 考信息。
41、這在以前的編程實(shí)習(xí)中是沒(méi)有注意的強(qiáng)調(diào)的。 雖然錯(cuò)誤提示只是簡(jiǎn)單的 幾句控制語(yǔ)句和輸出語(yǔ)句,但是卻對(duì)系統(tǒng)的嚴(yán)密性非常重要,所以這次的實(shí)習(xí)還 讓我懂得要想讓程序更有生命力一定要在功能實(shí)現(xiàn)的同時(shí)更加完善,綜合全面的考慮各種可能的情況,并做出相應(yīng)的提示信息和解決辦法,尤其是飛機(jī)定票系統(tǒng) 的定票功能,要求在滿航的時(shí)候給出其他參考航班, 這就提示我們不要滿足于可 以實(shí)現(xiàn)功能,而要追求全面和完善,編程與其他工作一樣要精益求精。通過(guò)實(shí)踐,還提高了我的自信心。從開始的害怕緊張到后來(lái)熟練應(yīng)用程序, 我對(duì)C語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)知識(shí)的了解進(jìn)一步加深了。 它使我認(rèn)識(shí)到每個(gè)功能強(qiáng)大的系統(tǒng)都是由簡(jiǎn)單的小程序、子函數(shù)構(gòu)成的,只要把
42、層次關(guān)系弄清楚,調(diào)用關(guān)系弄 明白,系統(tǒng)的框架就清晰的展現(xiàn)出來(lái)了,層層分析,層層編寫,最后發(fā)現(xiàn)原來(lái)最 簡(jiǎn)單的排序,輸入,輸出函數(shù)組合到一起就可以是功能強(qiáng)大的應(yīng)用系統(tǒng)。 所以我 懂得了要用平和的心態(tài)去接受每個(gè)任務(wù),自信可以完成,然后認(rèn)真對(duì)待,是可以獲得自己滿意的結(jié)果的。在實(shí)踐中提高了自己的動(dòng)手能力,以前總是看別人的程序,很少自己真的動(dòng) 手去編程,所以在剛開始編程的時(shí)候經(jīng)常犯一些不應(yīng)該的錯(cuò)誤,比如忘記;,輸入不加&,缺少等等。同時(shí)還增強(qiáng)了計(jì)算機(jī)方面的基礎(chǔ)知識(shí),比如一些軟件操作 和使用。學(xué)習(xí)在于實(shí)踐,在學(xué)習(xí)過(guò)程中,我會(huì)更加注視實(shí)踐操作,將理論知識(shí)與 實(shí)踐相結(jié)合,使自己更好地學(xué)好編程語(yǔ)言,各方面
43、的知識(shí)都更加扎實(shí)和牢固。八、參考文獻(xiàn):11嚴(yán)蔚敏、吳偉民數(shù)據(jù)結(jié)構(gòu)2008.721嚴(yán)蔚敏數(shù)據(jù)結(jié)構(gòu)題集2008.931王曙燕C語(yǔ)言程序設(shè)計(jì)2007.841耿國(guó)華數(shù)據(jù)結(jié)構(gòu)一一C語(yǔ)言描述2008.10九、附錄:源程序#include <stdio.h>#include <string.h>#include <conio.h>#include<dos.h>#include <ctype.h>#include <math.h>#include <stdlib.h>#include <malloc.h>typed
44、ef struct Plane/*航班信息*/char planeNo10;/*航班號(hào)*/char start30;/*起飛時(shí)間 */char end_time30;/*到達(dá)時(shí)間*/char startplace30;/*char end_place30;/*int price;/*int discount;/*起飛城市*/到達(dá)城市*/機(jī)票價(jià)格*/折后價(jià)格*/int total;/*機(jī)票總數(shù)*/剩余票數(shù)*/printf("n保存n");int tamount;/*struct Plane *next;Plane;typedef struct customer/*客戶資料*/
45、char name30;/*客戶姓名*/char ID30;/*證件號(hào)碼*/int tamount;/*訂票數(shù)量*/char planeNo30;/*航班號(hào)*/int no;/*定單號(hào)*/struct customer *next;customer;Plane *head=NULL;customer *glist=NULL;int num=1;/*/*保存航班信息*/void save1(Plane *L) FILE *fp;Plane *p;if(fp=fopen("plane","wb")=NULL)printf("不能打開此文件!!n&q
46、uot;);exit(1);p=L;while(p!=NULL)fwrite(p,sizeof(Plane),1,fp);p=p->next;fclose(fp);printf("保存成功 n");/*/*保存客戶信息*/void save2(customer *L) FILE *fp;customer *p;if(fp=fopen("customer","wb")=NULL)printf("不能打開此文件!!n");exit(1);printf("nSaving'n");p=L;
47、while(p!=NULL)fwrite(p,sizeof(customer),1,fp);p=p->next;fclose(fp);printf("保存成功 n");*/*錄入航班信息*/void *creat()Plane *info;while(1)info=(Plane*)malloc(sizeof(Plane); /*創(chuàng)建新結(jié)點(diǎn) */if(!info)printf("EMS has been full!n");return NULL;printf("n輸入航班號(hào):");scanf("%s",info
48、->planeNo);printf("輸入起飛時(shí)間:");scanf("%s",info->start);printf("輸入到達(dá)時(shí)間:");scanf("%s",info->end_time);printf("輸入起飛地點(diǎn):");scanf("%s",info->startplace);printf("輸入到達(dá)地點(diǎn):”);scanf("%s",info->end_place);printf("輸入機(jī)票價(jià)格
49、:");scanf("%d",&info->price);printf("輸入折后價(jià)格:");scanf("%d",&info->discount);printf("輸入總機(jī)票數(shù):");scanf("%d",&info->total);printf("輸入剩余票數(shù):");scanf("%d",&info->tamount);info->next=head;head=info;syste
50、m("cls");printf("是否繼續(xù)? y/n");/*一個(gè)信息輸入結(jié)束,是否繼續(xù)輸入 */if(getchO='n'|getchO='N') break;savel(head);/*/*查詢航班信息*/void search()char s130,s230;Plane *p;int i=0,ch;while(1)p=head;printf("請(qǐng)選擇 n");printf("1.按航班號(hào)查詢n");printf("2.按起落城市查詢n");printf(&q
51、uot;3.退出 n");scanf("%d",&ch);if(ch=1) printf("n請(qǐng)輸入人班號(hào)n");scanf("%s",s1);while(p)if(!strcmp(s1,p->planeNo)printf("n起飛地點(diǎn):%s",p->startplace);printf("n起飛時(shí)間:s",p->start);printf("n到達(dá)地點(diǎn):s",p->end_place);printf("n到達(dá)時(shí)間:s&qu
52、ot;,p->end_time);printf("n機(jī)票價(jià)格:d",p->price);printf("n折后價(jià)格:d",p->discount);printf("n總機(jī)票數(shù):d",p->total);printf("n剩余票數(shù):dnn",p->tamount);if(p->tamount=0)printf("n此航班已滿!n");/*滿航判定 */p=p->next;i+;else p=p->next;if(!i) printf("無(wú)此
53、航班 n"); i=0; /* 錯(cuò)誤提示 */if(ch=2)printf("輸入起飛地點(diǎn):");scanf("%s",s1);printf("n 輸入到達(dá)地點(diǎn):");scanf("%s",s2);while(p) if(!strcmp(s1,p->startplace)&&!strcmp(s2,p->end_place)printf("起飛地點(diǎn):%s",p->startplace);printf("n起飛時(shí)間:s",p->s
54、tart);printf("n 到達(dá)地點(diǎn):s",p->end_place);printf("n到達(dá)時(shí)間:s",p->end_time);printf("n機(jī)票價(jià)格:d",p->price);printf("n折后價(jià)格:d",p->discount);printf("n總機(jī)票數(shù):%d",p->total);printf("n剩余票數(shù):%dnn",p->tamount);if(p->tamount=0)printf("n此航班已
55、滿!n");p=p->next;i+;else p=p->next;if(!i) printf("無(wú)此航班 n"); i=0;if(ch=3) break; /*/*訂票函數(shù)*/void order()customer *info;Plane *p,*q;char s30; int flag=0;while(1)p=q=head;printf("您想預(yù)定哪趟航班");scanf("%s",&s);if(strcmp(p->planeNo,s)!=0)printf("無(wú)此航班");
56、p=p->next;getch();break;if(p->tamount=0)printf("此航班已滿.n是否需要預(yù)定其他到達(dá)該城市的航班:y/nn");if(getch()='n'|getch()='N') break;elsewhile(q)if(!strcmp(p->end_place,q->end_place)&&p!=q)printf("您可以預(yù)定s號(hào)航班到達(dá)該城市n",q->planeNo);flag=1;q=q->next;if(flag=0)print
57、f("沒(méi)有到打該城市的其他航班");getch();break;elseprintf("目前此航班還有 %d張票",p->tamount);/* 訂票數(shù)量控制*/info=(customer*)malloc(sizeof(customer);if(!info)printf("EMS has been full!n");exit(0);姓名:"); printf("nscanf("%s",info->name);printf("n身份證號(hào)碼:");scanf("%s",info->ID);printf("n航班號(hào):");scanf("%s",info->planeNo);printf("n訂票數(shù)量(<=%d):",p->tamount);scanf("%d",&info->tamount);if(info->tamount>p->tamount)printf("此航班剩余機(jī)票不夠");/* 出錯(cuò)提示*/break;elsep->tamount=p->tamoun
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 23698:2024 EN Cosmetics - Measurement of the sunscreen efficacy by diffuse reflectance spectroscopy
- 【正版授權(quán)】 ISO/IEC TR 24722:2024 EN Information technology - Biometrics - Multimodal and other multibiometric fusion
- 【正版授權(quán)】 ISO 16173:2025 EN Ships and marine technology - Jacking system appliances on self-elevating unit - Rack pinion leg fixation system
- 【正版授權(quán)】 ISO 1171:2024 EN Coal and coke - Determination of ash
- 2025年度玻璃隔斷安裝與品牌授權(quán)合同
- 2025年度金融科技企業(yè)員工試工合作協(xié)議
- 2025年度高速公路服務(wù)區(qū)草坪綠化與旅客服務(wù)合同
- 2025年度草種研發(fā)與市場(chǎng)推廣合作協(xié)議
- 2025年度社會(huì)組織勞動(dòng)合同范本解讀與應(yīng)用4篇
- 個(gè)人財(cái)務(wù)規(guī)劃的重要階段計(jì)劃
- 軟件開發(fā)項(xiàng)目工作量及報(bào)價(jià)模板
- 八年級(jí)上冊(cè)英語(yǔ)閱讀還原50題-含答案
- 中國(guó)鋁業(yè)股份有限公司鞏義市齊興鋁土礦礦產(chǎn)資源開采與生態(tài)修復(fù)方案
- 腹膜透析相關(guān)性腹膜炎的護(hù)理查房
- 網(wǎng)優(yōu)案例匯總
- 病毒性心肌炎病歷模板
- 倉(cāng)庫(kù)每日檢查記錄表倉(cāng)庫(kù)每日檢查內(nèi)容及每日巡查事項(xiàng)
- 唐詩(shī)長(zhǎng)恨歌白居易注音版
- (8.2)-7.2舞臺(tái)服裝設(shè)計(jì)-舞臺(tái)服裝色彩
- 早產(chǎn)兒視網(wǎng)膜病變
- 矮小癥診治指南
評(píng)論
0/150
提交評(píng)論