




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 實(shí)驗(yàn)課程: 航班信息系統(tǒng) 班 級(jí): 軟件13301 組 長(zhǎng): XXXX 成 員:XXXX、XXXX、XXXXXX、XXXX 學(xué) 號(hào):XXXXXXXXXX、1XXXXXXXXX、 1XXXXXXXXX、XXXXXXXXXX 指導(dǎo)教師: XXXXXXX 目錄一、概述:2二、系統(tǒng)分析:22.1 輸入/輸出形式和輸出值22.2 功能需求32.3 系統(tǒng)特點(diǎn)3三、概要設(shè)計(jì):33.1 設(shè)計(jì)思路33.2 數(shù)據(jù)處理33.3 基本概念和數(shù)據(jù)處理43.4 數(shù)據(jù)流圖6四、詳細(xì)設(shè)計(jì):74.1 設(shè)計(jì)說(shuō)明74.2 算法設(shè)計(jì)與分析7二分查找74.3 算法實(shí)現(xiàn)8五、運(yùn)行與測(cè)試:9六、總結(jié)與心得:11附錄:程序
2、代碼12一、 概述:設(shè)計(jì)一個(gè)航班信息查詢與檢索系統(tǒng)。可事先按要求錄入航班信息、刪除航班信息、查看全部航班信息及按航班的航班號(hào)、起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、以及到達(dá)時(shí)間等信息進(jìn)行查詢。二、系統(tǒng)分析:2.1 輸入/輸出形式和輸出值進(jìn)入系統(tǒng)后,首先按照要求輸入航班信息,包括:航班號(hào)、起點(diǎn)站、終點(diǎn)站、航班期、起飛時(shí)間、到達(dá)時(shí)間、票價(jià)。除票價(jià)為整型外,其他均為字符型。信息完成后均以Enter結(jié)束。當(dāng)輸入完一個(gè)航班信息后,會(huì)提示是否繼續(xù)輸入,若要繼續(xù)輸入則重復(fù)上述步驟,否顯示主菜單。根據(jù)主菜單輸入功能序號(hào)選擇,若用戶輸入的值超過(guò)給定范圍,則提示錯(cuò)誤并要求重新輸入。2.2 功能需求(1)輸入航班信息(2)刪除
3、航班信息,可按航班號(hào)、起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間等刪除(3)按不同類型查詢航班信息,如航班號(hào)、起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間等(4)顯示當(dāng)前所有的航班記錄(5)退出系統(tǒng)2.3 系統(tǒng)特點(diǎn)本系統(tǒng)的使用者是航空公司,操作人員只需具備基本的計(jì)算機(jī)操作技巧即可。三、概要設(shè)計(jì):3.1 設(shè)計(jì)思路根據(jù)設(shè)計(jì)要求,程序必須實(shí)現(xiàn)航班信息的錄入和查詢。程序首先定義了一個(gè)用于存儲(chǔ)航班信息的數(shù)據(jù)類型,再由用戶錄入航班數(shù)據(jù)路,在錄入的同時(shí)并對(duì)數(shù)據(jù)進(jìn)行排序,最后執(zhí)行數(shù)據(jù)查詢和檢索。在設(shè)計(jì)過(guò)程中,使用二分查找法對(duì)航班數(shù)據(jù)按航班號(hào)實(shí)現(xiàn)快速查找,按起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間查找。3.2 數(shù)據(jù)處理航班信息管理系統(tǒng)
4、退出顯示全部記錄查詢航班信息刪除航班信息錄入航班信息按終點(diǎn)站刪除查詢按起飛時(shí)間刪除查詢按到達(dá)時(shí)間刪除查詢按航班號(hào)刪除查詢按起點(diǎn)站刪除查詢3.3 基本概念和數(shù)據(jù)處理開(kāi)始初始化信息主菜單顯示輸入查詢序號(hào)判斷序號(hào)是否合法按地點(diǎn)查詢按時(shí)間查詢按航班號(hào)查詢按票價(jià)查詢輸出航班信息結(jié)束3.4 數(shù)據(jù)流圖航班信息航班信息管理員業(yè)務(wù)處理用 戶查詢關(guān)鍵字四、詳細(xì)設(shè)計(jì):4.1 設(shè)計(jì)說(shuō)明1)利用起點(diǎn)站、終點(diǎn)站、起飛時(shí)間、到達(dá)時(shí)間為關(guān)鍵字來(lái)查詢航班信息。該查找算法使用最簡(jiǎn)單的順序查找方法進(jìn)行。即按照航班信息的結(jié)構(gòu)體數(shù)組依次與被查找信息進(jìn)行比較,若找到,則輸出結(jié)構(gòu)即可,若沒(méi)找到,則輸出相關(guān)的提示信息。 2)利用航班號(hào)作為關(guān)
5、鍵字進(jìn)行查詢由于設(shè)計(jì)內(nèi)容要求使用基數(shù)排序?qū)@組航班信息進(jìn)行排序,并利用二分查找法對(duì)排好的航班記錄按航班號(hào)實(shí)現(xiàn)快速查找,因此此算法設(shè)計(jì)包括基數(shù)排序和二分查找。4.2 算法設(shè)計(jì)與分析基數(shù)排序基數(shù)排序是一種借助多關(guān)鍵字排序的思想對(duì)單邏輯關(guān)鍵字進(jìn)行排序的方法,其是通過(guò)“分配”和“收集”兩種操作對(duì)相應(yīng)關(guān)鍵字進(jìn)行排序。算法思路是按照排序關(guān)鍵字的每一位字符進(jìn)行排序。排序前,先定義一個(gè)隊(duì)列數(shù)組,每個(gè)隊(duì)列數(shù)組與某個(gè)關(guān)鍵字位對(duì)應(yīng),某隊(duì)列中只能存放與該關(guān)鍵字位對(duì)應(yīng)的元素。首先先從關(guān)鍵字的最后一位字符進(jìn)行判斷,根據(jù)關(guān)鍵字位,把這個(gè)元素放入相應(yīng)的隊(duì)列中去,這就是“分配”過(guò)程。等到所有元素均被分配到相應(yīng)隊(duì)列中之后,在把各
6、個(gè)隊(duì)列中的元素,按照隊(duì)列數(shù)組順序,依次重新放回原元素?cái)?shù)組中,這就是“收集”過(guò)程。經(jīng)過(guò)“分配”和“收集”后,一次排序完成。接著再以關(guān)鍵字的倒數(shù)第二位字符作為關(guān)鍵字位進(jìn)行上述排序過(guò)程,直到按照關(guān)鍵字的所有位全部進(jìn)行排序過(guò)后,整個(gè)序列就成為有序序列,排序完成。二分查找二分查找是對(duì)有序序列進(jìn)行快速查找的一種有效方法。它的基本思想是,每次都與這個(gè)有序序列的中間元素進(jìn)行比較,若找到,則輸出元素信息,若沒(méi)找到,則判斷這個(gè)中間元素比待查找的元素大還是小,如果大,那么查找工作繼續(xù)在該有序序列的前半段進(jìn)行;反之,則繼續(xù)查找該有序序列的后半段。如此一直查找,直到找到該元素或者查找到只剩下一個(gè)元素而這個(gè)元素與待查找元
7、素不相符時(shí),查找結(jié)束。前一種情況找到了待查找元素,輸出該元素,后一種沒(méi)有找到,輸出相應(yīng)提示信息。4.3 算法實(shí)現(xiàn)1定義數(shù)據(jù)類型根據(jù)設(shè)計(jì)要求,所用到的數(shù)據(jù)記錄只有航班信息,因此要定義相關(guān)的數(shù)據(jù)類型。本系統(tǒng)采用鏈?zhǔn)酱鎯?chǔ)的存儲(chǔ)結(jié)構(gòu),分別定義三個(gè)結(jié)構(gòu)體。 typedef struct /定義航班信息的結(jié)構(gòu)體,靜態(tài)鏈表類型char terminal6; /定義起點(diǎn)站char end6; /定義終點(diǎn)站char flightNo10; /定義航班期char startTime5; /定義起飛時(shí)間char endTime5; /定義到達(dá)時(shí)間char type10; /定義機(jī)型int price; /定義票價(jià)i
8、nfotype;typedef structkeytype keyskeylen; /航班號(hào),動(dòng)態(tài)鏈表infotype others;int next;slnode;typedef struct/定義存儲(chǔ)信息的結(jié)構(gòu)體slnode slMAX;int keynum; /信息數(shù)量,最大表長(zhǎng)int length; /信息長(zhǎng)度,當(dāng)前表長(zhǎng)sllist; /順序表類型2實(shí)現(xiàn)排序的各函數(shù)說(shuō)明(1)顯示一條航班記錄函數(shù)void Display(SLList L,int i)(2)刪除記錄函數(shù)void del(SLList L, keytype key,int i)(3)顯示所有記錄函數(shù)void display
9、all(SLList L)(4)順序查找函數(shù)void SeqSearch(sllist l,keytype key,int i)(5)查詢檢索菜單void serachcon (sllist l)(6)錄入航班數(shù)據(jù)函數(shù)void InputData(sllist &l)(7)主函數(shù)void main()初始化;數(shù)據(jù)輸入;排序處理;接受查找要求及查找關(guān)鍵字;查找處理;輸出查找結(jié)果;五、運(yùn)行與測(cè)試:1、錄入航班信息 2、刪除航班信息3、按起點(diǎn)站查詢航班4、按終點(diǎn)站查詢航班及顯示全部航班信息5、退出航班信息與檢索系統(tǒng)六、總結(jié):XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX! XXXX附錄:程序代碼#include <stdio.h>#include <string.h>#include <stdlib.h>struct SLNode char start10; /起點(diǎn) char end 10;/終點(diǎn) char sche10;/班期 char time16;/起飛時(shí)間 char time26;/到達(dá)時(shí)間 char model4;/機(jī)型 int price;/票價(jià) char
11、keys6; /關(guān)鍵字(航班號(hào));/航班記錄類型/靜態(tài)鏈表節(jié)點(diǎn)類型typedef struct SLNode *sl;/動(dòng)態(tài)鏈表 int listsize;/最大表長(zhǎng) int length;/當(dāng)前表長(zhǎng)SLList;/順序表類型/顯示一條航班記錄函數(shù)void Display(SLList L,int i) printf("航班號(hào) 起點(diǎn)站 終點(diǎn)站 航班期 起飛時(shí)間 到達(dá)時(shí)間 機(jī)型 票價(jià)n"); printf("%6s%6s %6s %6s %6s %6s %4s %dn",L.sli.keys,L.sli.start,L.sli.end,L.sli.sche
12、,L.sli.time1,L.sli.time2,L.sli.model,L.sli.price);/順序查找函數(shù)void SeqSearch(SLList L,char key,int i) int k,j,m=0; for(j=1;j<=L.length;j+) switch(i) case 1: k=strcmp(key,L.slj.keys); break; case 2: k=strcmp(key,L.slj.start); break;/起點(diǎn)站 case 3: k=strcmp(key,L.slj.end); break;/終點(diǎn)站 case 4: k=strcmp(key,L
13、.slj.time1); break;/起飛時(shí)間 case 5: k=strcmp(key,L.slj.time2); break;/到達(dá)時(shí)間 if(k=0) m=1; Display(L,j); if(m=0) printf("無(wú)此航班信息,您可能輸入錯(cuò)誤!n"); void del(SLList &L,char key,int i) int k,j,m=0;char ch; for(j=1;j<=L.length;j+) switch(i) case 1: k=strcmp(key,L.slj.keys); break; case 2: k=strcmp(
14、key,L.slj.start);break;/起點(diǎn)站 case 3: k=strcmp(key,L.slj.end);break;/終點(diǎn)站 case 4: k=strcmp(key,L.slj.time1);break;/起飛時(shí)間 case 5: k=strcmp(key,L.slj.time2);break;/到達(dá)時(shí)間 if(k=0) m=1; Display(L,j); printf("是否刪除此記錄?Y/N:"); scanf("%c",&ch); getchar(); if(ch='Y'|ch='y')
15、strcpy(L.slj.keys,L.slL.length.keys); strcpy(L.slj.end,L.slL.length.end); strcpy(L.slj.model,L.slL.length.model); L.slj.price=L.slL.length.price; strcpy(L.slj.sche,L.slL.length.sche); strcpy(L.slj.start,L.slL.length.start); strcpy(L.slj.time1,L.slL.length.time1); strcpy(L.slj.time2,L.slL.length.time
16、2); L.length = L.length-1; printf("刪除成功!n"); if(m=0) printf("無(wú)此航班信息,您可能輸入錯(cuò)誤!n"); /查詢檢索菜單控制程序void serachcon(SLList L) int i=1; char key10,kl8; while(1) printf("*n"); printf("* 航班信息查詢系統(tǒng) *n"); printf("*n"); printf("* 1.航 班 號(hào) *n"); printf("
17、;* 2.起 點(diǎn) 站 *n"); printf("* 3.終 點(diǎn) 站 *n"); printf("* 4.起飛時(shí)間 *n"); printf("* 5.到達(dá)時(shí)間 *n"); printf("* 0.返 回 *n"); printf("*n"); printf("* 請(qǐng)輸入(0-5):"); scanf("%d",&i); getchar(); if(i>=0 && i<=5) switch(i) case 1
18、: printf("請(qǐng)輸入要查詢的航班號(hào)(字母要大寫):"); scanf("%s",key); getchar(); SeqSearch(L,key,i); break; case 2 : printf("請(qǐng)輸入要查詢的航班的起始站名:"); scanf("%s",key); getchar(); SeqSearch(L,key,i); break; case 3 : printf("請(qǐng)輸入要查詢的航班的終點(diǎn)站名:"); scanf("%s",key); getchar()
19、; SeqSearch(L,key,i); break; case 4 : printf("請(qǐng)輸入要查詢的航班的起飛時(shí)間:"); scanf("%s",kl); getchar(); SeqSearch(L,kl,i); break; case 5 : printf("請(qǐng)輸入要查詢的航班的到達(dá)時(shí)間:"); scanf("%s",kl); getchar(); SeqSearch(L,kl,i); break; case 0 : return ; else printf("您輸入的信息錯(cuò)誤!n")
20、; /輸入航班記錄函數(shù)void InputData(SLList &L) int i;char yn='y'while(yn='y'|yn='Y') if(L.listsize<=L.length) SLNode *newbase; newbase = (SLNode *)realloc(L.sl,(L.listsize+100)*sizeof(SLNode); if(!newbase) printf("存儲(chǔ)分配失敗"); return; /存儲(chǔ)分配失敗 L.sl = newbase; /新基址 L.listsi
21、ze += 100; /增加存儲(chǔ)容量 i=+L.length; printf("航班號(hào) 起點(diǎn)站 終點(diǎn)站 航班期 起飛時(shí)間 到達(dá)時(shí)間 機(jī)型 票價(jià)n"); scanf("%s %s %s %s %s %s %s %d",L.sli.keys,L.sli.start,L.sli.end,L.sli.sche,L.sli.time1,L.sli.time2,L.sli.model,&L.sli.price); printf("繼續(xù)輸入嗎?y/n:"); getchar(); scanf("%c",&yn);
22、 getchar();void menu() printf("*n"); printf("* 航班信息查詢與檢索系統(tǒng) *n"); printf("*n"); printf("* 1.錄 入 航 班 信 息 *n"); printf("* 2.刪 除 航 班 信 息 *n"); printf("* 3.查 詢 航 班 信 息 *n"); printf("* 4.顯 示 全 部 記 錄 *n"); printf("* 0.退 出 *n");
23、 printf("*n"); printf("* 請(qǐng)輸入(0-4):"); void del_SNode(SLList &L)getchar();if(L.length>0) int i; char key10,kl8; while(1) printf("*n"); printf("* 航班信息刪除系統(tǒng) *n"); printf("*n"); printf("* 1. 按 航 班 號(hào) 刪 除 *n"); printf("* 2. 按 起 點(diǎn) 站 刪 除
24、 *n"); printf("* 3. 按 終 點(diǎn) 站 刪 除 *n"); printf("* 4. 按 起飛時(shí)間 刪 除 *n"); printf("* 5. 按 到達(dá)時(shí)間 刪 除 *n"); printf("* 0. 返 回 *n"); printf("*n"); printf("* 請(qǐng)輸入(0-5):"); scanf("%d",&i); getchar(); if(i>=0 && i<=5) switc
25、h(i) case 1 : printf("請(qǐng)輸入要?jiǎng)h除的航班號(hào)(字母要大寫):"); scanf("%s",key); getchar(); del(L,key,i); break; case 2 :printf("請(qǐng)輸入要?jiǎng)h除的航班的起始站名:"); scanf("%s",key); getchar();del(L,key,i); break; case 3 :printf("請(qǐng)輸入要?jiǎng)h除的航班的終點(diǎn)站名:"); scanf("%s",key); getchar();del(L,key,i); break; case 4 :printf("請(qǐng)輸入要?jiǎng)h除的航班的起飛時(shí)間:"); scanf("%s",kl); getchar();del(L,kl,i); break; case 5 :printf("請(qǐng)輸入要?jiǎng)h除的航班的到達(dá)時(shí)間:"); scanf("%s",kl); getchar();de
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年英國(guó)大學(xué)入學(xué)考試UCAT醫(yī)德決策模擬試題:真實(shí)案例深度解析
- 提升農(nóng)業(yè)科技創(chuàng)新體系經(jīng)濟(jì)效益和社會(huì)效益
- 守護(hù)校園安全起航
- 產(chǎn)科健康教育總結(jié)
- 兒童康復(fù)翻身訓(xùn)練指南
- 2025年精密檢測(cè)設(shè)備項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 資產(chǎn)維修合同協(xié)議書范本
- 2025至2030年中國(guó)商業(yè)型條碼標(biāo)簽打印機(jī)行業(yè)投資前景及策略咨詢報(bào)告
- 2025保險(xiǎn)公司最高額借款合同范本
- 2025至2030年中國(guó)口紅生產(chǎn)線行業(yè)投資前景及策略咨詢報(bào)告
- 氣壓傳動(dòng)課件 項(xiàng)目八任務(wù)一 公共汽車門氣壓傳動(dòng)系統(tǒng)
- 制鞋業(yè)鞋類產(chǎn)品設(shè)計(jì)與生產(chǎn)流程規(guī)范
- DB42-T 2275-2024 消防給水設(shè)施物聯(lián)網(wǎng)系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- Unit4Friendsforever短文巧記單詞學(xué)習(xí)任務(wù)單高中英語(yǔ)
- 2024年春七年級(jí)地理下冊(cè) 第8章 第三節(jié) 俄羅斯教案 (新版)湘教版
- 1旅游概述《旅游學(xué)概論》省公開(kāi)課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- DL∕T 5390-2014 發(fā)電廠和變電站照明設(shè)計(jì)技術(shù)規(guī)定
- 2024-2030年電影放映機(jī)行業(yè)市場(chǎng)現(xiàn)狀供需分析及重點(diǎn)企業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 日內(nèi)高頻交易策略研究
- 2024年長(zhǎng)沙市中考數(shù)學(xué)真題試卷及答案
- 語(yǔ)文綜合實(shí)踐《走進(jìn)傳統(tǒng)節(jié)日探尋文化根脈》課件-【中職專用】高一語(yǔ)文同步課件(高教版2023·基礎(chǔ)模塊下冊(cè))
評(píng)論
0/150
提交評(píng)論