资源简介

航线信息:终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量)。
系统实现如下功能:
(1) 查询:根据旅客提出的终点站名输出信息(例如航班号、飞机号、星期几飞行,最近一天航班的日期和余票额等);
(2) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或剩余票额少于定票额,则需重新询问客户要求。若无票,可登记排队候补或提供相关可选择航班;
(3) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户;
(4) 修改航班信息:当航班信息改变可以修改航班数据文件。


代码中用了数据结构中的线性表、哈希表、二分查找树等知识,代码上传前已经运行过,绝对可行!

资源截图

代码片段和文件信息

#include
#include
#include
#include
#define M 450//定义数组的空间为不可改变的整数
using namespace std;
int main();//申明主函数
struct flight//航班信息
{char terminal[10];//终点站名
char number[10];//航班号
char id[10];//飞机号
char date[10];//飞行日期
int member;//乘员定额
int rest;//余票量
struct flight * next;//指向下一个节点的指针
};
struct custom//客户信息
{char name[10];//姓名
char number[10];//航班号
int count;//数量
int grade;//舱位等级
struct custom * next;//指向下一个节点的指针
};
struct flight *a[M];//flight类型的指针数组
struct node//二叉树节点
{ struct custom * base;  
   node *r;//左孩子
   node *l;//右孩子
}; 
char ch[100];
int judge(char (&ch)[100])
 {
    int is=0x=0;
    if(strlen(ch)==3)
{for(i=0;i    {
    if(ch[i]>=‘0‘&&ch[i]<=‘9‘)
    s++;
    }
    if(s==strlen(ch))
{for(i=0;i x=x*10+ch[i]-48;
return x;
}
    else
    return 0;
}
else return 0;
 }
int hash(unsigned long k)
{return k%M;}//取余
unsigned long hashvalue(char *str)//将输入字符串转换成长整型数返回
{int il; 
unsigned long ret=0; 
unsigned short *s; 
if (str == NULL) return(0); 
l=(strlen(str)+1)/2; 
s=(unsigned short *)str; 
for (i=0; iret^=(s[i]<<(i&0x0f)); 
return(ret); 

void hashlist()//建立哈希表
{fstream obj;
flight *s=new flight*t=new flight;
int i=0val;
obj.open(“d:\\fly.txt“ios::in);//打开航班信息的文件
while(obj>>s->terminal>>s->number>>s->id>>s->date>>s->member>>s->rest)//提取文件信息
{val=hash(hashvalue(s->terminal));
while(a[hash(val)]!=NULL)//如果数组中的元素不为空,建立链表
{if(!strcmp(a[hash(val)]->terminals->terminal))
{t=a[hash(val)];
while(t->next)//将节点往下移,直至最后节点
{t=t->next;}
t->next=s;
t=s;
t->next=NULL;//末尾节点的next赋空
break;
}
else val++;//哈希表冲突,往数组后面的空位移动
}
if(a[hash(val)]==NULL)//如果哈希表中元素为空,赋给从文件中提取的值
{a[hash(val)]=s;
a[hash(val)]->next=NULL;}
s=new flight;
}
obj.close();//关闭文件
}
void create(node *&rootcustom *&s) //生成二分查找树 
{ custom *t=new custom;
if(root==NULL)  //当该节点为空时赋值
    {   root=new node;  
        root->base=s;
        root->l=NULL;  
        root->r=NULL; 
    }  
else if(hash(hashvalue(s->name))>hash(hashvalue(root->base->name)))
create(root->rs); //比当前节点小,往左孩子移
else if(hash(hashvalue(s->name))base->name)))  
create(root->ls); //比当前节点大,往右孩子移
else //等于当前节点
{t=root->base;
while(t->next!=NULL)//将节点往下移,直至最后节点
t=t->next;
t->next=s;//到尾部添加形成线性表
t=s;
t->next=NULL;//末尾节点的next赋空
}
}
void print(node *&rootchar *&name)//输出要查找的值
{custom *t=new custom;
if(root!=NULL)//如果节点不为空
{if(root->l!=NULL && hash(hashvalue(name))base->name)))
print(root->lname);//比当前节点小
else if(root->r!=NULL && hash(hashvalue(name))>hash(hashvalue(root->base->name)))
print(root->rname);//比当前节点大
else if(hash(hashvalue(name))==hash(hashvalue(root->base->name)))//等于当前节点
{t=root->base;
cout< “票量“<while(t!=NULL)//输出找到的线性表
{cout<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      52224  2012-09-05 17:35  niebin\Debug\niebin.exe

     文件     465184  2012-09-05 17:35  niebin\Debug\niebin.ilk

     文件     584704  2012-09-05 17:35  niebin\Debug\niebin.pdb

     文件       8010  2012-09-05 17:35  niebin\niebin\Debug\BuildLog.htm

     文件         65  2012-09-05 17:35  niebin\niebin\Debug\mt.dep

     文件        663  2012-09-05 16:24  niebin\niebin\Debug\niebin.exe.embed.manifest

     文件        728  2012-09-05 16:24  niebin\niebin\Debug\niebin.exe.embed.manifest.res

     文件        621  2012-09-05 17:35  niebin\niebin\Debug\niebin.exe.intermediate.manifest

     文件     149805  2012-09-05 17:35  niebin\niebin\Debug\niebin.obj

     文件     183296  2012-09-05 17:35  niebin\niebin\Debug\vc90.idb

     文件     233472  2012-09-05 17:35  niebin\niebin\Debug\vc90.pdb

     文件      19048  2012-09-05 17:35  niebin\niebin\niebin.cpp

     文件       3916  2012-08-26 22:21  niebin\niebin\niebin.vcproj

     文件       1411  2012-09-05 17:57  niebin\niebin\niebin.vcproj.聂斌-PC.聂斌.user

     文件    2255872  2012-09-05 18:01  niebin\niebin.ncb

     文件        884  2012-08-26 21:49  niebin\niebin.sln

    ..A..H.     12800  2012-09-05 17:57  niebin\niebin.suo

     目录          0  2012-09-05 18:01  niebin\niebin\Debug

     目录          0  2012-09-05 18:01  niebin\Debug

     目录          0  2012-09-05 18:01  niebin\niebin

     目录          0  2012-09-05 18:01  niebin

----------- ---------  ---------- -----  ----

              3972703                    21


评论

共有 条评论