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
//02voidhbhchaxun(; (; //항공편 번호로
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