资源简介
航线信息:终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量)。
系统实现如下功能:
(1) 查询:根据旅客提出的终点站名输出信息(例如航班号、飞机号、星期几飞行,最近一天航班的日期和余票额等);
(2) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或剩余票额少于定票额,则需重新询问客户要求。若无票,可登记排队候补或提供相关可选择航班;
(3) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户;
(4) 修改航班信息:当航班信息改变可以修改航班数据文件。
代码中用了数据结构中的线性表、哈希表、二分查找树等知识,代码上传前已经运行过,绝对可行!
系统实现如下功能:
(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; i ret^=(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.em
文件 728 2012-09-05 16:24 niebin\niebin\Debug\niebin.exe.em
文件 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
- 上一篇:数据结构实验魔王语言
- 下一篇:背景差分法 多目标跟踪
相关资源
- 数据结构实验魔王语言
- Access数据库在线编辑器
- Php 导出数据为EXCEL程序
- 数据采集系统——ADC0808的应用,单片
- 航空订票系统_数据结构课程设计
- 28335写的用spi读取传感器数据并用CA
- 人大金仓数据库系统表
- 莱卡 全站仪数据格式转换程序,有源
- 读取串口数据并画实时曲线的VC 程序
- DirectDraw 直接修改显存数据
- 模拟ATM柜员机系统--连接数据库
- 多项式求和(数据结构C 版)
- 软件工程(数据流图) 实例
- 用工厂模式开发多数据库连接类
- 尚观培训linux董亮老师关于数据结构的
- 一个读取地震数据seg2或dat格式的程序
- CY7C68013A固件程序(用于摄像机采集)
- 用C 实现的对网络上的ARP数据包进行
- 数据结构 知识点总结
- 华南理工大学数据结构复习提纲二
- 华南理工大学数据结构复习提纲一
- 数据结构用C 写的停车场系统源代码
- 图片存储到数据库保存二进制文件并
- 数据库水印嵌入提取数据库水印数据
- 自动复制U盘数据程序
- 基于AT89C51的数据采集系统设计新方法
- 串口绘制曲线 将收到的数据进行曲线
- C 源码 画出wav文件声音数据的波形曲
- 数据结构(河北科技大学)
- 数据结构考前习题 清华大学出版社
评论
共有 条评论