回 帖 发 新 帖 刷新版面

主题:求救:请高手用C语言编写航空客运订票系统

航空客运订票系统(C语言写)
1.    问题描述
      航空客运订票的业务活动包括: 查询航线, 客票预订,和办理退票, 试设计一个航空客运订票系统, 以使上述业务可以借助计算机来实现.
2.    基本要求:
(1)    每条航线所涉及的信息有: 终点站名, 航班号, 乘员定额,余票量,
       已顶票的客户名单(姓名, 订票量) 以及等候替补的客户名单.
(2)    作为示意系统, 全部数据可以只放在内存中.
(3)    系统能实现的操作和功能如下:
a)    首先生成航线信息表(终点站名, 航班号,乘员定额, 余票量)
b)    查询航线: 根据旅客提出的终点站名输出下列信息:
      终点站名, 航班号, 定员, 余额
      (作简化处理,省略日期)
c)    承办订票业务;根据客户提出的要求(终到站名,航班号,订票量)
     查询该航班票额情况,若尚有余票,则为客户办理订票手续,客户
      输入姓名后,系统给出座位号,若已满员或余额少于订票额,则需
     重新询问客户需要排队侯补,若需要,可登记姓名排队候补.
d)    承办退票业务;客户提供退票张数,然后再输入到达站名,航班号,
     座位号,为客户办理退票业务,然后查询该航班是否有人排队候补,
     首先为排在第一的客户订票,如有余票再依次为下一客户订票.
3.    实现提示
      系统需汇总各条航线的情况(终到站名,航班号,定员,余额) ,登录在一张线性表上,
   由于航线基本不变,可采用顺序存储结构,订票客户名单可由线性表实现,为查找方便,
   已订票的客户的线性表应以链表作存储结构(旅客姓名,订票量) ,而候补排队旅客名单
   应用队列实现.
       但订票客户链表和候补队列链表和航班号,终到站名有关,如果有 i条航线信息,那就
   必须准备i个旅客名单表和i个候补队列表.
4.    具体步骤:
4.1 #include “stdio.h”
      #include “string.h”
      #include “malloc.h”
      #define ok   1
      #define  error  0
      typedef   int    status
4.2 结构
      typedef struct  info{//旅客姓名结构
                          char    name[10];
                          int       number;
                         }info;
     typedef  struct qnode{//已订票旅客姓名链表
                               info    data;
                      struct qnode  *next;
                        }qnode,*queueptr;
     typedef struct airlist{//航线表中各项
                             char  tostation[10];// 终到站名
                             char flight[10];// 航班号
                           int   total;// 定员
                           int   lift;// 余额
                          }airlist
typedef  struct{//候补旅客姓名队列
                        queueptr      front;// 队头指针
                        queueptr       rear;// 队尾指针
                       }linkqueue;
typedef  struct{//航线表顺序存储
                       airlist    *elem;
                       int       length;
                       int       listsize;
                       }sqlist;

回复列表 (共1个回复)

沙发


接上面的,太长了,要分俩次,谢谢你的帮忙.我的邮箱zwfan0888@126.com.以下为题目的后半部分(C语言编写):
4.3需准备的子程序
a)    构造一个空的线性表(顺序存储)
status initlist_sq(sqlist &l);
b)    在顺序线性表中插入元素
status listinsert_sq(sqlist&l,int i,airlist e);
c)    构造一个空的线性链表
status init_l(queueptr &l);
d)    在带头结点的单链线性表中第i个位置之前插入元素e
status listinsert_l(queueptr&l,int i,info e);
e)    在带头结点的单链线性表中删除第i个元素,并由e返回
status listdelete_l(queueptr&l,int i,info &e);
f)    构造一个空队列q
status initqueue(linkqueue &q);
g)    插入元素e为q 的新的队尾元素
status enqueue(linkqueue &q,info e);
h)    删除队列的头元素并由 e 返回
status dequeue(linkqueue &q,info &e);
4.4    实现步骤
(1)    宣布变量名单航线表表长  n=10,queueptr[10], 旅客名单表
linkqueue[10], 候补旅客名单队列
(2)    首先输入航线表表长n, 然后生成航线表.
(3)    为了调试方便设三种操作,ID=’I’, 查询,ID=‘O’,订票,
ID=’R’, 退票
输入ID,
根据ID的值switch三种情况
用于测试程序,暂时用三次循环即测试查询,定票和退票三种操作。
(4)    ID=‘I’查询
      首先输入到站名,然后根据到站名在航线表中查询所有等于到站名的航线
      输出,内容有(到站名,航班号,定员,余额)
(5)    ID=’O’ 订票
a)    输入旅客的到达站名,航班号,订票数量
b)    初始化订票客户名单数组和候补排队数组
c)    在航线表中查到站名,航班号和旅客要求相等的航线
d)    如果航线的余票满足或部份满足,先给客户订票,输入旅客姓名,
      输出座位号,并把姓名加入到旅客姓名表中

e)    如果余票额不满足或部份满足,订票后还有的旅客没有订上,
     询问旅客是否候补排队,如果是”y”, 不是”n”
     “y” 输入姓名,候补排队上了,将其存入旅客排队队列
f)  订票名单加1
(6)    ID=’R’ 退票
a)    输入退票数量,终到站名,航班号
b)    在航线表中查询到终到站和航班号相等的航线
c)    然后旅客给出座位号,删去航线上旅客名单上这个座位的旅客
d)    在候补排队队列中有候补旅客,将第一个旅客订票,他的座位号就是
       刚刚删去的座位号,并将这个旅客以座位号插入到旅客名单中
5    . 测试数据
             n=2 航线表长度
            生成航线表的信息
            第一记录   到站    pek
                            航班号  c242
                            票量      2
                             余票量   2
            第二记录     到站    pek
                             航班号  c204
                             票量       2
                              余票量   2
  id=I     查询
                要查询的站名输入    pek
                输出
                            到站=pek,    航班号=c242,      票量=2,     余票量=2
                                  =pek,              =c204,            =2,              =2
id=O    订票
             输入
                    目的地站名      pek
                     航班号           c204
                     订票量            4
                     旅客1姓名      duan       输出     your seat is 1
                     旅客2姓名       li           输出      your seat is  2
又输出      There is not enougth tickets, are you wating for booking or not? y or n:
             输入     y       输出    2
             输入旅客3姓名      anlun
             输入旅客4姓名      kailun
id=R    输出     do you want  to return ticket, how many?
            输入     2
                     站名     pek
                      航班号   c204
                      座位号    1         输出   name    anlun  seat   is   1
             输入   座位号    2         输出   name    kailun  seat   is  2           
        

我来回复

您尚未登录,请登录后再回复。点此登录或注册