下沙论坛
标题:
飞机订票系统
[打印本页]
作者:
zelhzm
时间:
2007-12-25 09:36
标题:
飞机订票系统
#include<stdio.h>
; I/ z1 m& N: d7 @+ c5 H2 u
#include<stdlib.h>
+ k+ w9 [) Z0 z V' H# `! F
#include<string.h>
* l3 W& x2 Z( B3 u
#include<conio.h>
' G, m: ] @7 X5 ^# H* u+ m
#define OK 1
& T9 {' U, \: }4 J2 k2 W
#define ERROR 0
+ n. @4 {! {* B* n, G
typedef struct airline{
& H, u) P: C* m+ \) h6 n) e8 ]6 A q q) ~
char air_num[8];
9 T% Y0 i7 V5 y2 D# ^2 I* ~
char plane_num[8];
/ @! o. \7 g, N* q( f
char end_place[20];
+ u. f5 X7 q- }1 b
int total;
4 M* G6 v" e3 |
int left;
+ H/ Y+ D* C/ A' C b
struct airline *next;
8 q1 d. u, T6 N
}airline;
4 D$ r. h3 C6 D G& Y3 o3 |
typedef struct customer{
1 a, t: A, \. o9 g3 b
char name[8];
# d/ p3 A$ X+ V' w$ Z2 `
char air_num[8];
' {1 `4 a1 V4 H; \( S
int seat_num;
0 p( ^! e3 U& U/ d) L( k
struct customer *next;
1 C9 B/ J! [4 m6 A" U. e E- E
}customer;
1 G- k) P) X+ Y; l$ b
airline *start_air()
* U( T: X2 I8 k9 Z1 T0 |/ d4 N
{
_1 d1 P6 X2 S6 X
airline *a;
0 P1 l2 ? {, ^
a=(airline*)malloc(sizeof(airline));
3 x& ]0 F8 `9 q- T
if(a==NULL)
* Z* R9 Y9 }$ G% |8 @5 e
a->next=NULL;
) h) h L7 b1 ?
return a;
! S& e7 [; y$ f; F r+ @8 Q! }" d
}
* p# a9 `* Y+ P0 ]7 T6 ?
customer *start_cus()
- f+ m- \* D2 \3 d
{
/ ~- }6 `5 ^( j+ _
customer *c;
& _5 @7 c" f& s0 o6 C! B! ]
c=(customer*)malloc(sizeof(customer));
' T% K) z. t" H6 D5 E; r
if(c==NULL)
$ ]3 ]# ]/ b5 F" \- j
c->next=NULL;
. @4 L0 S9 N1 Y5 [4 G- y; l& [
return c;
" i+ K! @( p* q6 N2 g
}
6 h5 n9 x8 A; o- @1 M2 b
airline *modefy_airline(airline *l,char *air_num)
* Q- d9 j1 \. B. r0 C7 ^! C
{
) h6 n5 A0 J( p6 y, ]; D# ?
airline *p;
& _+ W; q' `0 ]8 C/ r8 A5 m3 i
p=l->next;
4 p! M% k& n8 W8 e0 p
for(;p!=NULL;p=p->next)
4 S' w- t8 B3 b# r% `1 a' Q6 V
{
! G- s4 K* G: D- y0 i: B) S4 f, c5 P
if(strcmp(air_num,p->air_num)==0)
: Y: F" u$ Z7 q. @; T4 r5 c( b
{
# X5 |3 m3 V; w' S7 O) ^+ p
p->left++;
9 m% P4 A- E r+ b4 f% b% S1 G
return l;
; _' z+ }. J; [0 M8 i( _
}
0 f) y% I9 h4 h; ~9 Q3 h- M) F
printf("NO the airline!");
0 l" C! L8 y: Z8 m. b1 y* R$ l
return 0;
4 r! E# S5 S! E) h* Q. o3 T
}
+ I2 q+ Q7 ?; J+ X3 L2 W! R5 O5 ?
}
6 Z& ~( i0 e2 l* x( o7 [
int insert_air(airline **p,char *air_num,char *plane_num,char *end_place,int total,int left)
& b) h; G- \$ H) v h- @
{
$ x6 J, B* j* q
airline *q;
/ k9 D9 T' Z. r( J
q=(airline*)malloc(sizeof(airline));
8 x7 v" i. B" m8 q/ b0 p
strcpy(q->air_num,air_num);
) `. z( ]' l/ b! H2 y
strcpy(q->plane_num,plane_num);
" ^1 h- {0 z( K: _
strcpy(q->end_place,end_place);
) X1 i8 ]0 B r
q->total=total;
; I, l7 p: g+ z
q->left=left;
$ G H/ d: f/ L* J
q->next=NULL;
+ ^% U2 d, _, b5 C6 [4 `
(*p)->next=q;
% N+ ^2 `4 U3 X3 k
(*p)=(*p)->next;
( `# X! _( c* j, k
return OK;
% p9 c. h0 K3 F; {: o7 r* y
}
4 r1 x+ b1 Q5 t4 R: ]2 x. p
int insert_cus(customer **p,char *name,char *air_num,int seat_num)
, R& H8 R2 y( L4 i+ `
{
- \8 ? q: i. a4 z ?
customer *q;
2 T' C( \' Y% e3 m# S
q=(customer*)malloc(sizeof(customer));
2 z/ I e w7 }- o
strcpy(q->name,name);
; `* B' Q" e0 o5 Q5 B3 @
strcpy(q->air_num,air_num);
; G0 [ k1 [% j" i2 y4 l6 E
q->seat_num=seat_num;
: j, |$ k) e- A/ f
q->next=NULL;
: f6 t4 a1 W! y0 ?; [+ @
(*p)->next=q;
7 o# @& ~5 i5 K+ ^/ K2 k' n9 [
(*p)=(*p)->next;
1 Z* i: V5 F( U# H
return OK;
+ T; g& B! Y1 [
}
# }% p& J) {% r9 V" D8 S8 B/ e
int book(airline *a,char *air_num,customer *c,char *name)
( @2 f# d$ l1 ?
{
% X& D" `( W% l2 p, G2 q7 i& o
airline *p=a;
" t; L! s' ?. Z7 {% ^; L
customer *q=c->next;
- E. l( j' l8 y0 N* t* ^( y
p=a->next;
~- Z# i# t/ ~2 p8 C& V
for(;q->next!=NULL;q=q->next){}
: ]5 U8 b: i$ n6 ]$ Z
for(;p->next!=NULL;p=p->next)
3 e- a* P1 w* H2 q2 M5 ^8 y2 P& q
{
/ F8 `) ~( s; R$ E
if(p->left>0)
/ a3 q q. v" E3 h# y" w+ B) I7 [
{
: T* {5 M4 [" L; b# s. U% p
printf("Your seat number is %d",(p->total-p->left+1));
) n5 w7 k- h/ d0 b3 f0 r. P) A
insert_cus(&q,name,air_num,p->total-p->left+1);
3 z) U4 Y0 g" D. U6 \7 M
p->left--;
% X2 A1 J& x- E, }1 Z2 B
return OK;
$ [$ h/ g0 b. @$ |& z8 g/ V5 ^1 F
}
: z `8 p; C: J. z+ R# u- I
else
" h- V0 F' M2 M2 S& z% G& d
{
2 u' s" o% e7 l$ {2 L" }
printf("seat is full");
& I7 @: v* o! Q
return 0;
) f7 h1 L7 u e# Q+ h7 u) u
}
1 I, n h$ y7 }% r" O, ^
}
- Y4 W3 V! p1 Y! i- z$ c
return OK;
; d ]6 C/ {# w0 @ O4 Q* P7 k
}
; l/ {' t1 k0 a, C( w. X8 M# _
int del_cus(customer *c,airline *l,char *name)
8 W9 w2 f6 j& T# E$ C& o! ]4 z
{
4 a) y, R' |3 o2 V% Y/ f
customer *p,*pr;
8 T1 M9 x, W3 h& z* i5 e& d
char air_num[8];
9 X {* H$ w" w% [& J
pr=c;
4 j, m3 _* C3 a! X5 s
p=pr->next;
7 Q+ j" `' A2 o$ c% G% q3 h0 j4 O
while(p!=NULL)
0 z$ \) W7 n) N1 N |
{
8 N4 x* h- j0 `. A; Q; J- R& L
if(strcmp(p->name,name)==0)
2 s2 U5 M/ h3 t7 O
{
3 a$ J* |' g0 }- e5 ~1 q& X
strcpy(air_num,p->air_num);
9 Q3 m; }6 P. r; u$ C8 x
l=modefy_airline(l,air_num);
8 S& |5 C' E6 [6 S
pr->next=p->next;
/ P$ K3 b4 k$ w M2 i
p=pr->next;
" {$ J, V1 k) p" i8 f6 Y
printf("finish!");
3 X# I. I% ]0 `: \' ]
return OK;
3 T8 a( J5 T6 k+ A
}
# n% }9 x4 i1 a! @- T
pr=pr->next;
$ R' P: @; d! G" ?) b4 n) o! k g% C
p=pr->next;
/ h/ Q; L3 I7 _; G/ ^+ C9 q* W
}
* H: m: z) D+ G1 X2 [/ E8 I
printf("NO the customer!");
, k! S& c3 B$ J2 x" \; F" E
return ERROR;
; m' F, b3 a6 o" z: v" Y
}
5 k& e% X2 E5 ?
int search_air(airline *head)
7 F7 x/ [ e3 W7 d
{
' }" K) }7 L4 Q" X
airline *p=head->next;
. q* u, W* q+ V" y# m
printf("air_num plane_num end_place total left\n");
; a5 l' q3 F( |5 ^6 [' R
for(;p!=NULL;p=p->next)
7 Q6 I$ q* y2 g
{
1 N8 M' ]5 W. w7 b
printf("%s %-10s %-8s %-8d%-8d\n",p->air_num,p->plane_num,p->end_place,p->total,p->left);
! n0 |3 l5 { K E. q; e
}
! |* `2 A! q* p+ N. o
return OK;
5 b& Q4 j" g8 n2 E4 J
}
( K0 [9 C" @) s; ^: `3 ^2 T
int search_cus(customer *head)
) d* B& W, { i5 _: G, F
{
& c& F4 H+ F, S( Z, k6 [' s
struct customer *q=head->next;
/ D+ i' {. p, q- ]! D4 I& S
printf("name air_num seat_num\n");
4 Z s- [& c( h6 E2 {- X1 F7 d; L
for(;q!=NULL;q=q->next)
1 R# ^7 V. a, d o3 i8 V0 I
{
1 f7 }1 E4 v2 y2 D' u
printf("%-8s%-12s%-d\n",q->name,q->air_num,q->seat_num);
# M: C8 ~! a# m( U E. o+ k
}
[# a' O! M% y, v' y S, V
return OK;
7 {4 k' R; c, O" m) N/ G5 ?
}
2 w6 D. |0 t1 u
int creat_air(airline **l)
, ?0 H& C/ e, A9 S0 h5 @
{
( ^3 o* N% @' v( j0 f
airline *p=*l;
3 A/ |' V0 Z& q. v% Y
int i=0;
# h/ ?: I _: ~3 _$ I
char *air_num[3]={"007af","008af","009af"};
& P8 t" q! V1 w, N* Z( Q! ~
char *plane_num[3]={"plane1","plane2","plane3"};
' o4 Q% c5 Z7 m8 ]
char *end_place[3]={"Beijing","Shanghai","Tianjin"};
) I, T6 I6 q Z7 u, T* X
int total[3]={100,100,100};
1 x8 j' V/ |& }
int left[3]={52,54,76};
9 f( g) t4 A5 C" I) n5 h- L
for(i=0;i<3;i++)
3 a! c# Q* Q4 Y: A* P9 P
insert_air(&p,air_num
,plane_num
,end_place
,total
,left
);
4 h; F: P* P/ T m( B- U6 I
return OK;
! u$ s0 n- f' T- L3 r
}
( \% c+ {( r7 C0 u5 P( U8 R9 V
int creat_cus(customer **l)
6 E& f* v0 _. L8 k- }, P9 v: Y
{
; _5 z& w) N" Q$ n, ?
customer *p=*l;
& O" l/ ]7 c7 s4 ~7 ?6 K' H. r
int i=0;
/ C5 K: \# j- [. a; ], i
char *name[3]={"zhsan","lisi","wangwu"};
9 `! ?# Q. ?' b
char *air_num[3]={"007af","008af","009af"};
/ X6 }. C3 }# u: s! V; m( c5 q; b
int seat_num[3]={2,5,7};
( {" k/ G5 U3 \/ v9 c W
for(i=0;i<3;i++)
2 J- Z! N& A& w9 d1 X: d
insert_cus(&p,name
,air_num
,seat_num
);
0 R, ~ t5 `# _% g. J; _
return OK;
7 o; u# {( f7 k* ?! f
}
$ L& n4 Y* t/ z9 [
void main()
" M* {( a9 d) H3 V$ o
{
! \! a- Z Y) a4 S5 n( @
int t=1;
! L# ]5 l# }1 S$ a/ N v
customer *cus=start_cus();
/ m E2 W5 p# M) D; D
airline *air=start_air();
5 N7 w7 |5 X1 Z" L$ y
char name[8],air_num[8],ch;
, I: o: P& v1 M1 R* {7 F* t- t. H
creat_air(&air);
9 _/ I, {" o( D6 g
creat_cus(&cus);
& g C; [' u+ ]! M, K) z l
while(t==1)
) Y }) [( N" T" U6 i/ U4 B
{
0 m; D6 E% R5 F3 ^3 o% u
printf("\n");
' D; ^1 U7 ?3 N( Q8 ?% O7 a+ w
printf("*********************************\n");
5 ~ C( e/ m! E; i& _
printf("* Welcome to air firm! *\n");
3 |( Q9 z- D" `" ]8 s# n
printf("* book--------1 *\n");
! l6 b) J, ~. x j& A0 n" M" f! {- S- i; Y
printf("* cancel------2 *\n");
5 R, B( u2 i; U
printf("* search------3 *\n");
7 @4 i0 V8 p0 ?/ f0 G4 V# B
printf("* exit--------4 *\n");
" `1 }" ]/ D2 A9 c
printf("*********************************\n");
1 A7 G5 O' P1 y: F' ^
ch=getch();
. k5 J8 y& W+ H {' c
if(ch=='1')
5 t4 E' p: _6 ?4 S* g8 |0 H8 I
{
' @" P) c1 d& M+ V5 }' E6 c! ]
printf("Please input a airline number:");
$ v( C' i# G" o- R$ ^4 }
scanf("%s",air_num);
: i6 S3 w# S6 c" ~. l
printf("Please input a name:");
0 Z+ B% M# L* U
scanf("%s",name);
# T/ O% ]- g h4 H# O2 T k
book(air,air_num,cus,name);
4 N, Q- ?+ {+ V/ c. d
}
) ]. e) J& A$ _& n
else
0 U$ E- D. h( `5 g
if(ch=='2')
5 Q2 I, K0 v1 u8 N! p5 s) x7 u- E9 C3 e
{
7 K# n3 y, Q' s5 y e& ~0 z
printf("Please input the cancel name:");
- d3 r8 l% ~ U! j9 Q( q' f
scanf("%s",name);
- D) } f% p' D* q& _ p# D
del_cus(cus,air,name);
" q4 Y1 L5 i7 u- ?8 \
}
- p5 q5 y) H& X
else
1 U* e; t; W( ~& M% M; j4 {
if(ch=='3')
" V6 z+ A: a" b
{
. M c, y* t+ T: X0 Y+ p0 {2 B
search_air(air);
9 {( {; S; p6 Z- E6 @9 B' |5 D* s
printf("\n");
Y' B$ c9 t" M5 k9 w' l
search_cus(cus);
: ~4 N! h0 Z* Y1 e: B \; v& Z
}
! F8 @% l1 Q) V0 Z4 u
else
: P- r5 j. @, d9 h0 B5 M( u _1 E
if(ch=='4')
) k! m2 x. q/ W1 E
{
Z w1 i8 i; I9 L( }1 l( V
t=0;
4 K" _0 I- @' D2 R& N+ F% d1 I; [
}
+ A7 V1 w+ I! |. \. a2 g
}
* i/ ]. }7 n- k: }7 A5 Q/ z
}
- }* b" b7 f. |1 g4 f, h9 i
/*任务:通过此系统可以实现如下功能:
! Y4 Y, t- i9 K; W# k# ^; G
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
. ~% A0 q% J9 f4 X- ~6 X
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
: L* P$ _' d1 s1 N5 F/ ~2 A3 s2 `2 A
可以输入起飞抵达城市,查询飞机航班情况;
7 g) T# T0 f" X+ {4 c7 b0 M
订票:(订票情况可以存在一个数据文件中,结构自己设定)
; W7 u; ]3 I* ?
可以订票,如果该航班已经无票,可以提供相关可选择航班;
1 ?9 y8 P6 s7 O- n
退票:可退票,退票后修改相关数据文件;
Y2 g) a" [9 d
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
" T8 h. q4 f$ b+ _. d$ H
修改航班信息:当航班信息改变可以修改航班数据文件
$ ^8 M! [ k/ h3 G' a- N3 ?
要求:
- Q# S/ {# k8 C$ Z3 X: p1 [
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;*/
欢迎光临 下沙论坛 (http://bbs.xiasha.cn/)
Powered by Discuz! X3.3