下沙论坛

标题: 飞机订票系统 [打印本页]

作者: 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. pint  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 Tint 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 uint 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 Vint 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                else0 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