资源简介

基于C++数据结构编写的航空订票系统,含有源代码,可以运行,很好!

资源截图

代码片段和文件信息

#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<

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

     文件        836  2014-03-13 10:32  2-08-胡锋-航空订票系统\Makefile.win

     文件      19027  2014-03-13 10:32  2-08-胡锋-航空订票系统\航空订票系统.cpp

     文件        841  2014-03-13 10:32  2-08-胡锋-航空订票系统\航空订票系统.dev

     文件     454569  2014-03-13 10:32  2-08-胡锋-航空订票系统\航空订票系统.exe

     文件      41517  2014-03-13 10:32  2-08-胡锋-航空订票系统\航空订票系统.o

     目录          0  2014-03-13 10:32  2-08-胡锋-航空订票系统

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

               516790                    6


评论

共有 条评论