현재 위치 - 회사기업대전 - 중국 기업 정보 - 데이터 구조 항공 예약 시스템 데이터 구조 항공편 예약 시스템

데이터 구조 항공 예약 시스템 데이터 구조 항공편 예약 시스템

1, 데이터 구조 과정 설계-항공 예약 시스템 (C 언어 2, 데이터 구조 항공 여객 예약 업무 활동에는 3, 데이터 구조 실습 C 언어 항공 예약 시스템 데이터 구조 과정 설계-항공 예약 시스템 (C 언어

1) 이 포함됩니다. 상술한 업무를 컴퓨터로 완성할 수 있도록 항공 여객 예약 시스템을 설계해 보세요. 2, 기능 요구 사항: 1 입력: 항공편 상황 입력 가능 (데이터 파일, 데이터 구조, 특정 데이터 사용자 정의 2 쿼리: 항로 상황 조회 가능 (예: 항공편 번호 입력, 이착륙 시간 조회, 이륙 도착 시, 항공편 요금, 운임 할인, 항공편이 가득 찼는지 여부 확인) 이륙하여 도시에 도착하고, 비행기 비행 상황을 확인할 수 있습니다. 3 표 예약: (표 예약 상황은 데이터 파일에 있을 수 있습니다. 구조는 스스로 예매할 수 있습니다. 만약 그 항공편이 이미 표가 없다면 관련 선택 가능한 항공편을 제공할 수 있습니다. 4 환불: 환불 가능, 환불 후 관련 데이터 파일 수정 5 고객 정보: 이름, 증명서 번호, 예약 수량 및 항공편 상황, 주문서에 번호가 있어야 합니다. 6 항공편 정보 수정: 항공편 정보가 변경되면 항공편 데이터 파일을 수정할 수 있습니다.

3, 좋은 인터페이스 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 4, 수요 분석 시스템 요구 사항 (시스템 요구 사항 구현 기능의 구체적인 상황 5, 요약 설계 시스템 분석 (분석 Includestdio.h

# includestring.h

# includeconio.h

Overflow

# defineok1

typedefstructyidingkehu {//단일 체인 테이블

; //예약한 고객 이름

intdingpiaoshu; //예약 수량

< p /p>

structYidingkehu*next1;; //

}Yidingkehu, * link;

typedefstructweidingkehu {//단일 체인

charname [15]; //티켓을 예약한 고객 이름

intyudingpiao; //예약 예정 수량

< p /p>

structWeidingkehu*next2;; //다음 체인 대기열 노드 포인터

}Weidingkehu, * qptr;

typedefstruct {

qptrfront; //단일 체인 대기열 헤더 노드

분기; //단일 체인 끝 노드

} link queue;

typedefstructHangxian{// 6 개 정보가 포함된 구조 작성

< p /p>

charhangbanhao[15];]; //항공편 번호-

charfeijihao [15]; //항공기 번호

intfeixingriqi; //이륙 시간

intchenkerenshu; //좌석 수

intyupiao; //남은 티켓

< p /p>

charzhongdianzhai[15];]; //착륙시

< p /p>

structHangxian*next;; //다음 체인점에 대한 포인터

< p /p>

structYidingkehu*yiding;; //예매한 고객에 대한 헤더 포인터 정의

structweidingkehu * yudingqueue;

} 행진, * link list;

< p /p>

structHangxian*L=NULL; = null; //

//

structYidingkehu*H; * h; //예약된 고객 체인팀을 위해 공간 신청

link queue q; 공간을 요청하기 위한 //linkQueue 유형

linklistinitlinklist (; //01

intinsertlinklist (link listhead1; //02

//02

voidhbhchaxun(; (; //항공편 번호로

voidmddchaxun 조회 (; //목적지를 통한 조회

voidlurugongneng (; //입력 기능 초기화

voidchaxungongnen (; //쿼리 기능

P >

voiddingpiaogongnen (; //예약 기능

voidtuipiaogongnen (; //환불 기능

voidmain (

{

h = (structyidingkehu * malloc)

q.front = q.rear = (qptrmalloc (sizeof (weidingkehu;

init link list (;

intn;

do{// 인쇄 기본 인터페이스

printf("t 항공 여객 예약 시스템 n ";

인쇄 ("t+++++++++++++++++++++++++++n";

printf("t==1. 입력 기능 = = n ";

printf("t==2. 쿼리 기능 = = n ";

printf("t==3. 예약 기능 = = n ";

printf("t==4. 환불 기능 = = n ";

printf("t==5. 종료 = = n ";

인쇄 ("t+++++++++++++++++++++++++++n";

printf("t 선택: ";

scanf("d ",n; Printf("n"; n ";

스위치 (n

{

case1: lurugongneng (; //입력 기능

break;

< p /p>

case2:chaxungongnen(; (; //쿼리 기능

break;

< p /p>

case3:dingpiaogongnen(; (; //예약 기능

break;

< p /p>

case4:tuipiaogongnen(; (; //환불 기능

break;

default: exit (0; //종료

}

} while (n = = 1 | | n = = 2 | | n = = 3 | | n =

}

voidlurugongneng (//초기화된 단일 체인 테이블 * * * * * * * * * * * * * * * * * * * * *

do{

if (! InsertLinklist((LinklistL// 항공편 정보 추가

{

printf ("메모리 가득 참 n"; 종료 (개요;

}// 연결된 목록에 노드 추가

printf("t 다음 항로 레코드를 입력하시겠습니까? N ";

printf("t 예 1n ";

printf("t 아니요 2nt ";

scanf("d ",m; //다음 항로기

} while (m = = 1;

}

linklistinitlinklist ({//01

l = (linklistmalloop

if (! 렉시 (overflow;

l-next = null; //헤더 노드가 있는 단일 체인 테이블 만들기

복귀 (l;

}

intinsertlinklist (link list l//02 경로 링크 테이블에 새 노드 추가

{

link link

//intm, n;

p = (link listmalloc (sizeof (행진; //새 노드에 공간 할당

if (! Pexit (오버플로;

printf("t 다음을 차례로 입력하십시오. nn "; //여기 입력은 단일 입력을 사용하여 무분별한 할당 현상을 방지합니다.

printf ("항공편 번호 n";

gets (p-hangbanhao; //여기 있는 두 개의 gets 는 주로 Enter 에서의 입력 때문이며, 그 중 첫 번째는 마지막 캐리지 리턴

< P > Gets (P-Hangbanhao;

printf ("비행기 번호 n";

gets (p-feijihao;

printf ("터미널 n";

gets (p-Zhongdian Zhai;

printf ("비행일 n";

scanf("d ",p-feixingriqi;

printf ("총 승객 수 n";

scanf("d ",p-chenkerenshu;

printf ("남은 투표 수 n";

scanf("d ",p-Yu Piao;

p-yiding = (structyidingkehu * malloc (sizeof (yiding kehu; //공간 요청

p-yudingqueue = q.front = q.rear = (qptrmalloc (sizeof (weidingkehu) //공간 요청

p-next = l-next; //

l-next = p; //이 두 문장은 연결된 목록의 플러그 삽입 노드

return (ok;

}

voidchaxungongnen (//* * * * * * * * * * * * * * * * * * *

printf("t 경로 정보 n 찾기 ";

인쇄 ("t+++++++++++++++++++++++++++n";

printf("t==1. 목적지 조회를 통해 = = n ";

printf("t==2. 항공편 번호로 조회 = = n ";

인쇄 ("t+++++++++++++++++++++++++++n";

printf("t 선택: ";

scanf("d ",n;

printf ("n"; //포맷

스위치 (n

{

case1: MDD chaxun (;

break;

case2: hbh chaxun (;

break;

default: break;

}

}

voidmddchaxun (//대상별 조회

{<

intm;

link listp = l; < /p

>

printf("t 조회할 대상 입력: ";

gets (c;

gets (c; //위와 같은 이유

do {

p = p-next;

if (p

{

m = strcmpi ((* p. Zhongdian Zhai, c) //만약 = = 이면 m = 0;

if (m = = 0

{

printf ("t 항공편 정보: n";

printf("t 항공편 번호: sn ",p-hangbanhao;

printf("t 항공기 번호: sn ",p-feiji Hao;

printf("t 비행 시간: 주간 dn ",p-feixingriqi;

printf("t 잔고: dn ",p-Yu Piao;

}

}

else

{//일치하지 않으면

를 수행합니다 M = 0;

}

}while(m! = 0;

}

voidhbhchaxun(// 대상별 조회

{

charc >

intm;

link listp = l;

printf("t 조회할 항공편 번호를 입력하십시오. ";

gets (c; Gets (c; Printf("n"; n ";

do {

p = p-next;

if (p

{

m = strcmpi ((* p. hangbanhao, c; //만약 = = 이면 m = 0; 여기서 (* p. 는 p- 와 같은

if (m = = 0

{

printf (

printf("t 항공편 번호: sn ",p-hangbanhao;

printf("t 항공기 번호: sn ",p-feiji Hao;

printf("t 비행 시간: 주간 dn ",p-feixingriqi;

printf("t 잔고: dnn ",p-Yu Piao;

}

}

else

{//일치하지 않으면

를 수행합니다 M = 0;

}

}while(m! = 0;

}

voiddingpiaogongnen (//* * * * * * * * * * * * * * * * //Linklist 유형 l 은 링크 헤더

Yidingkehu*h=H, * h1; //Yidingkehu 고객의 노드를 정의하여

link queue q = q; 를 쉽게 삽입 및 제거할 수 있습니다 //linkQueue 유형

charc [15];

intm=1, Piao, ydpiao=0, yd=0, n; //

gets (c;

printf ("터미널 이름 입력:"; Gets (c; Printf("n"; n ";

p = l-next;

<

if(p{

do{// 이 항공편

if (! P

{

printf ("죄송합니다. 찾으시는 비행기는 없습니다. nn";

goto loop1;

}

m = strcmpi (p-Zhongdian Zhai, c;

if (m = = 0

{

printf ("항공편 정보: n";

printf ("항공편 번호: sn", p-hangbanhao;

printf ("비행기 번호: sn", p-feijihao;

printf ("비행 시간: 주간 dn", p-feixingriqi;

printf ("잔고: dn", p-Yu Piao; }

elsep = p-next;

}while(m! = 0;

if (m = = 0

{

do {

printf (") Scanf("d ",piao;;

if (Piao = p-Yu Piao

{

h = p-yiding;

if (h

{

h1 = h;

h = h-next1;

h = (structyidingkehu * malloc (sizeof (yiding kehu;

printf ("이름을 입력하십시오.";

gets (h-name; Gets (h-name;

h-dingpiaoshu = Piao;

h-next1 = h1-next1;

h1-next1 = h;

p-Yu Piao = p-Yu Piao-Piao;

printf ("예약 성공: n"; M = 2;

}

}

else

{printf ("잔고: dn")

printf ("죄송합니다. 남은 티켓 d 장이 부족하여 예약 nn 을 완료할 수 없습니다.", p-Yu Piao;

printf ("다시 예약하시겠습니까? N ";

printf ("1 을 입력해야 합니다. 그렇지 않으면 2 를 눌러 예약하십시오. 3:";

scanf("d ",m;

printf ("n";

if (m = = 3 goto loop 3;

}

} while (m = = 1;

}

}

elseif (! P {

루프 3: structweidingkehu * Q3;

printf ("죄송합니다. 이 항공편의 표는 이미 n" 이 매진되었습니다.

q.front = p-yudingqueue;

if(q.front==q.rearprintf ("아무도 티켓을 예약하지 않았습니다. 예약하시겠습니까? N ";

elseif(q.front! =q.rearprintf ("이미 표가 예약되었습니다. 예약하시겠습니까? N ";

printf ("예약하려면 1 을 입력하거나 2:";

scanf("d ",n;

printf ("n";

if (n = = 1

{

Q3 = (qptrmalloc (sizeof (weidid)

printf ("

이름을 입력하십시오. " Gets (Q3-name; Gets (Q3-name; //q3 은 name

printf 를 가리킬 수 없습니다 ("예약 번호를 입력하십시오"; Scanf("d ",q3-yudingpiao;;

Q3-next2 = null;

q.rear-next2 = Q3;

q.rear = Q3;

printf ("이미 예약하셨습니다! N ";

}

}

루프 1:;

}

voidtuipiaogongnen (//* * * * * * * * * * * * * * * * * *

Yidingkehu*h=H, *h1, * H2;

link queue q = q;

charc[15], name 1 [15];

intm=1, Piao, n; //

gets (c;

printf ("항공편 번호 입력:"; Gets (c;

p = l; ///-next;;

if(p

{

do{// dowhile 을 사용하여 이 항공편이 있는지 확인

; P

{// 꼬리말에 도달했는데 일치하지 않으면 goto 에서 항공편 번호

printf("n 죄송합니다. 찾으시는 항공편이 없습니다. n ";

goto loop1;

}

m = strcmpi (p-hangbanhao, c; //일치하는 경우 m = 0

if (m = = 0

{

printf ("t 항공편 정보

printf ("항공편 번호: sn", p-hangbanhao;

printf ("비행기 번호: sn", p-feijihao;

printf ("비행 시간: 주간 dn", p-feixingriqi;

printf ("잔고: dn", p-Yu Piao; }

elsep = p-next;

}while(m! = 0;

if(m==0

{// 발견된 경우 환불

do {

<

if (h

{

printf ("이름을 입력하십시오.";

gets (이름 1; //gets (이름 1;

printf ("주문한 투표 수를 입력하십시오.";

scanf("d ",piao;;

printf ("n";

h1 = h;

h = h-next1;

if(strcmpi(h-name, name1==0h-dingpiaoshu==piao// 이름과 예약 투표 수가 같으면 예약 취소 <

H2 = h;

h1-next1 = h-next1;

free (H2;

printf ("예약 취소 성공: nn";

< p /p>

structWeidingkehu*q3;;

q.front=p-yud

Ingqueue;;

if (q.front = = q.rear {printf ("아무도 티켓을 예약하지 않았습니다. n"; 고토 루프 1; }

if ((p-Yu Piao = (q.front-next2-yudingpiao

{

strcpy(h2-name, q.front-next2-name;

H2-dingpiaoshu = q.front-next2-yudingpiao;

n = p-Yu Piao-q.front-next2-yudingpiao;

p-Yu Piao = n;

Q3 = q.front-next2; //

q.front-next2 = Q3-next2; //이 두 문은 노드

if (q.rear = = q3q.rear = q.front;

free (Q3; //여유 공간 확보

printf ("체인에서 성공 n 제거";

H2-next1 = h-next1;

h-next1 = H2; //예약된 고객 링크 목록에 삽입

printf ("예약된 고객에 대한 예약 성공 n";

}

elseprintf ("남은 투표 수가 부족하여 예약 고객을 위해 예약할 수 없습니다! N ";

}

else

{// 찾을 수 없는 경우 시스템에 해당 개인에 대한 정보가 없으면

를 다시 찾을 것인지 묻는 메시지가 표시됩니다

printf ("다시 찾아 예약을 취소하시겠습니까? N ";

printf ("1 을 입력해야 합니다. 그렇지 않으면 2" 를 누르십시오.

scanf("d ",m;

printf ("n";

}

}

} while (m = = 1;

}

}

루프 1:;

}

데이터 구조 실습 c 언어 항공 예약 시스템

코드는 다음과 같습니다. (그러나 귀하의 요구 사항과 정확히 동일하지는 않습니다. 변경하십시오!

# includestdio.h

# includestring.h

# includestdlib DefinePUB_MAX100// 게시 단위 최대 이름

#defineTIME100// 게시 시간

typedefstructbooks

charname [name _ max];

< p /p>

charwriter[WRITER_MAX]; _ max];

int identify;

charpub [pub _ max];

chartime [시간];

intprice;

< p /p>

structbooks*next;;

} book;

// 헤드 노드는 정보

voidinit (book * head

{

를 저장하지 않습니다

head-next = null;

}

// 일부 환영 단어 인쇄 등. 。 。 。 。

voidwelcome (

{

printf ("* * * * * * @ @ @ 에 오신 것을 환영합니다

printf ("nn";

printf("1: 도서 정보 입력 기능 n ";

printf("2: 책의 모든 정보 n "을 표시하는 책 정보 탐색 기능;

printf("3: 도서 정보 조회 기능: 책 제목별 조회 및 작성자 이름별 조회 n ";

printf("4: 도서 정보 수정 및 삭제, 해당 데이터 수정 및 삭제 n ";

}

/책 정보 표시

voidprint _ the _ book (book * P1)

printf ("name:";

puts (P1-name;

printf ("n";

printf ("writer:";

puts (P1-writer;

printf ("n";

printf ("identify: d * * * n", p1-identify;;

printf ("n";

printf ("pub:";

puts (P1-pub;

printf ("n";

printf ("time:";

puts (P1-시간;

printf ("n";

printf ("price: d * * * n", p1-price;;

}

int chong fu (book * head, book * p

{

inta = 0;

while(p1! = null

{

if (strcmp (P1-name, p-name = = 0

copyright 2024회사기업대전