数据结构课程设计航空客运订票系统.docx

上传人:b****6 文档编号:6464493 上传时间:2023-01-06 格式:DOCX 页数:49 大小:214.81KB
下载 相关 举报
数据结构课程设计航空客运订票系统.docx_第1页
第1页 / 共49页
数据结构课程设计航空客运订票系统.docx_第2页
第2页 / 共49页
数据结构课程设计航空客运订票系统.docx_第3页
第3页 / 共49页
数据结构课程设计航空客运订票系统.docx_第4页
第4页 / 共49页
数据结构课程设计航空客运订票系统.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

数据结构课程设计航空客运订票系统.docx

《数据结构课程设计航空客运订票系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计航空客运订票系统.docx(49页珍藏版)》请在冰豆网上搜索。

数据结构课程设计航空客运订票系统.docx

数据结构课程设计航空客运订票系统

湖南工业大学

课程设计

资料袋

计算机与通信学院(系、部)2009~2010学年第二学期

课程名称数据结构指导教师职称教授

学生姓名专业班级学号

题目航空客运订票系统

成绩起止日期2010年6月28日~2010年7月日

目录清单

序号

材料名称

资料数量

备注

1

课程设计任务书

1

2

课程设计说明书

1

3

课程设计图纸

1

4

5

6

湖南工业大学

课程设计任务书

2009—2010学年第二学期

计算机与通信学院(系、部)专业班级

课程名称:

数据结构

设计题目:

航空客运订票系统

完成期限:

自2010年6月28日至2010年7月日共1周

一、设计的主要技术参数

使用队列让预定客户排队等候已定客户退票后再实现买票功能

二、设计任务

使用C语言实现各个模块的功能.

三、设计工作量

本人独自完成这些基本要求,完成了航班信息的输入,查询航线的功能以及订票和退票等功能的实现!

起止日期

工作内容

2010-6-27

设计本程序思路

2010-6-28

实现子程序模块函数

2010-6-29

将子程序和主程序构建成完整的C源程序,并且进行相关编译调试

2010-6-30

数据测试、形成文档

<<面向对象C语言程序设计>>

<<数据结构(C语言版)>>

<<图算法>>

<>

指导教师(签字):

年月日

系(教研室)主任(签字):

年月日

数据结构

设计说明书

数据结构课程设计

航空客运订票系统

起止日期:

2010年6月28日至2010年7月日

 

学生姓名

班级

学号

成绩

指导教师(签字)

 

计算机与通信学院(部)

年月日

湖南工业大学课程设计情况分析表

课程设计名称

数据结构

设计周数

17周

学院(部)

计算机与通信学院

系(教研室)

通信工程系

指导教师

文志诚

学生专业、班级

通信工程0903

选题

 

航空客运订票系统

成绩分布

及格

不及格

学生数

百分比

学生课程设计存在的主要问题

改进措施及建议

指导教师(签字):

年月日

系(教研室)主任(签字):

年月日

备注:

本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。

1.题目及需求分析……………………………VI

2.概要设计……………………………………VII

3.详细设计……………………………………X

4.调试分析……………………………………XIX

5.用户手册……………………………………XXI

6.测试结果……………………………………XXIII

7.附录程序清单……………………………XXV

 

题目:

航空客运订票系统

扩展:

增加了运行面板的颜色;

增加添加了进入要密码输入功能;

显示功能比要求的多了些,意在增加程序的智能化

一.需求分析

(1)以线性表存储航班信息,以队列存储预定客户的名单。

(2)设计交互界面,用户只需输入选择就可做想做的事情.

(3)用户可以自己输入航班信息的多少,然后由程序自动打印出航班信息.

(4)一切操作都有向导.

二.概要设计

1.设定线性表的抽象数据类型定义:

ADTList{

数据对象:

D={ai|ai∈int,i=0,1,2……n,n≥0}

数据关系:

R1={|ai-1,ai∈D,i=2,……n}

基本操作:

InitList(&L)

操作结果:

构造一个空的线性表L.

DestroyList(&L)

初始条件:

线性表L已存在。

操作结果:

销毁线性表L。

ClearList(&L)

初始条件:

线性表L已存在。

操作结果:

将L重新置为空表。

ListEmpty(L)

初始条件:

线性表L已存在。

操作结果:

判断线性表是否为空

}ADTList;

2.设定队列的抽象数据类型

ADTQueue{

数据对象:

D={ai|ai∈int,i=1,2,3,4,···,n,n>=0}

数据关系:

R1={|ai-1,ai∈D,i=2,……n}

基本操作:

InitQueue(&Q)

操作结果:

构造一个空队列Q.

DestoryQueue(&Q)

初始条件:

队列Q已存在。

操作结果:

队列Q被摧毁,不再存在。

ClearEmpty(Q)

初始条件:

队列Q已存在。

操作结果:

将队列Q清为空队列。

EnQueue(&Q,e)

初始条件:

队列Q已存在。

操作结果:

插入元素e为Q的新的队尾元素。

DeQueue(&Q,&e)

初始条件:

Q为非空队列。

操作结果:

删除Q的队头元素,并用e返回其值。

}ADTQueue;

3.本程序包含3个模块

 

1)主程序模块:

intmain()

{

主菜单函数,实现主要操作界面.

return0;

}//主函数

2)线性表模块----实现线性表抽象数据类型

3)队列模块----实现队列抽象数据类型

 

各模块之间的调用如下:

 

 

4.求解预定票实现的伪码算法:

设定当前订票的情况;

Do

{

若与票数足够,

则{

则为客户订票;

}

否则{

若客户愿意等候买票

则{

办理预定票手术

}

否则{

推出订票功能

}

}

}while(票数存在);

三.详细设计

工程文件视图:

 

类视图:

 

 

--------------------------头文件设计(部分)-----------------------

1.源程序头文件

#include"stdafx.h"

#include"malloc.h"

#include"math.h"

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#include"process.h"

typedefstructyidingkehu

{

intname;

intdingpiaoliang;

intchuangweidengji;

structyidingkehu*next1;

}yiding,*link;

typedefstructdenghoukehu

{

intname;

intpiaoshu;

intchuangweidengji;

structdenghoukehu*next2;

}denghou,*Qptr;

typedefstructhangxian

{

intzhongdianzhan;

inthangbanhao;

intfeijihao;

intfeixingzhouri;

intchengyuanzongshu;

intyupiaoliang;

structhangxian*next;

structyidingkehu*yiding;

structdenghoukehu*denghou;

}hangxian,*linklist;

 

typedefstruct

{

Qptrfront;

Qptrrear;

}linkqueue;

structhangxian*L=NULL;

structyidingkehu*H;

linkqueueQ;

-------------------------实现文件(部分)---------------------------

1.voidhangbanxinxi()

{

inti=1;

while(i==1)

{

if(!

insertlinklist((linklist)L))

{printf("不能再输入航班信息!

\n");

exit(0);

}

printf("是否输入航班信息?

\n");

printf("1:

是\n");

printf("2:

否\n");

scanf("%d",&i);

printf("\n");

}

}

2.intinsertlinklist(linklist&L)

{

linklistp;

p=(linklist)malloc(sizeof(hangxian));

if(!

p)exit(0);

printf("\t请依次输入下面几项内容:

\n\n");

printf("航班号\n");

scanf("%d",&p->hangbanhao);

printf("飞机号\n");

scanf("%d",&p->feijihao);

printf("终点站\n");

scanf("%d",&p->zhongdianzhan);

printf("飞行周日\n");

scanf("%d",&p->feixingzhouri);

printf("乘客总数\n");

scanf("%d",&p->chengyuanzongshu);

printf("余票数\n");

scanf("%d",&p->yupiaoliang);

p->yiding=(yidingkehu*)malloc(sizeof(yidingkehu));

p->denghou=Q.front=Q.rear=(Qptr)malloc(sizeof(denghoukehu));

p->next=L->next;

L->next=p;

return1;

}

3.voiddingpiaoyewu()

{

linklistp=(linklist)malloc(sizeof(hangxian));

p=L;

yiding*h=H,*h1;

linkqueueq=Q;

inti,j,k,piao,yudingpiao=0,yidingpiao=0;

if(!

p->next)

printf("没有航班信息!

\n请输入航班信息!

\n\n");

else

{

printf("请输入终点站:

");

scanf("%d",&i);

printf("\n");

p=L->next;

if(p){

do{

if(!

p)

{

printf("对不起!

没有你要查询的航班!

\n\n\n");

break;

}

j=p->zhongdianzhan-i;

if(j==0)

{

printf("\t航班信息:

\n");

printf("\t航班号:

%d\n",p->hangbanhao);

printf("\t飞机号:

%d\n",p->feijihao);

printf("\t乘客总数:

%d\n",p->chengyuanzongshu);

printf("\t飞行时间:

周%d\n",p->feixingzhouri);

printf("\t余票量:

%d\n",p->yupiaoliang);

}

else

p=p->next;

}while(j!

=0);

if(j==0)

{

do

{

printf("\n请输入你要定的票数:

");

scanf("%d",&piao);

printf("\n");

if(piao<=p->yupiaoliang)

{

h=p->yiding;

if(h)

{

h1=h;

h=h->next1;

h=(yiding*)malloc(sizeof(yiding));

printf("\t请输入你的名字:

");

scanf("%d",&h->name);

printf("\n");

printf("\t你要的窗位等级:

");

scanf("%d",&h->chuangweidengji);

printf("\n");

if((h->chuangweidengji>=1)&&(h->chuangweidengji<=3))

{

h->dingpiaoliang=piao;

h->next1=h1->next1;

h1->next1=h;

p->yupiaoliang=p->yupiaoliang-piao;

printf("订票成功!

\n");

j=2;

}

else

{

printf("没有这等窗位!

\n");

break;

}

}

}

else

{

printf("余票量:

%d\n",p->yupiaoliang);

printf("余票量%d张不能满足你的订票量\n\n\n",p->yupiaoliang);

printf("是否要订票?

");

printf("1:

需要2:

不需要3:

预定");

scanf("%d",&j);

printf("\n");

if(j==3)

{

structdenghoukehu*q1;

printf("航班的票已经售完!

\n");

q.front=p->denghou;

if(q.front==q.rear)

printf("没有人预定,是否预定?

\n");

else

printf("有人预定,是否预定?

\n");

printf("1预定:

2:

不预定\n");

scanf("%d",&k);

printf("\n");

if(k==1)

{

q1=(Qptr)malloc(sizeof(denghou));

printf("请输入你的名字:

");

scanf("%d",&q1->name);

printf("\n");

printf("请输入你要预定的票数:

");

scanf("%d",&q1->piaoshu);

printf("\n");

printf("请输入你要预定的窗位等级:

");

scanf("%d",&q1->chuangweidengji);

if((q1->chuangweidengji>3)||(q1->chuangweidengji<1))

{

printf("没有这等窗位等级!

\n");

break;

}

printf("\n");

q1->next2=NULL;

q.rear->next2=q1;

q.rear=q1;

printf("预定成功!

\n");

}

}

}

}while(j==1);

}

}

elseif(!

p)

{

structdenghoukehu*q1;

printf("航班的票已经售完!

\n");

q.front=p->denghou;

if(q.front==q.rear)

printf("没有人预定,是否预定?

\n");

else

printf("有人预定,是否预定?

\n");

printf("1预定:

2:

不预定\n");

scanf("%d",&k);

printf("\n");

if(k==1)

{

q1=(Qptr)malloc(sizeof(denghou));

printf("请输入你的名字:

");

scanf("%d",&q1->name);

printf("\n");

printf("请输入你要预定的票数:

");

scanf("%d",&q1->piaoshu);

printf("\n");

q1->next2=NULL;

q.rear->next2=q1;

q.rear=q1;

printf("预定成功!

\n");

}

}

}

}

4.voidchaxunhangxian()

{

inti;

printf("1:

特定查询2:

全部查询3:

最近一天航班信息\n");

printf("请选择功能:

");

scanf("%d",&i);

printf("\n");

switch(i)

{

case1:

tdcx();

break;

case2:

qbcx();

break;

case3:

zjyt();

break;

}

}

5.voidtdcx()

{

inti,j,k=1;

linklistp=(linklist)malloc(sizeof(hangxian));

p=L;

if(p->next==NULL)

printf("还没有航班信息!

\n请输入航班信息!

\n\n");

else

{

printf("请输入终点站名字:

");

scanf("%d",&i);

printf("\n");

do

{

p=p->next;

if(p)

{

j=p->zhongdianzhan-i;

if(j==0)

{

printf("\t航班信息%d如下:

\n",k);

printf("\t航班号:

%d\n",p->hangbanhao);

printf("\t飞机号:

%d\n",p->feijihao);

printf("\t飞行周日:

%d\n",p->feixingzhouri);

printf("\t余票量:

%d\n\n",p->yupiaoliang);

k++;

}

}

else

{

printf("\t没有你要查询的航班号!

\n\n");

break;

}

}while(j!

=0);

}

}

 

6.voidqbcx()

{

intk=1;

linklistp=(linklist)malloc(sizeof(hangxian));

p=L;

if(p->next==NULL)

printf("还没有航班信息!

\n请输入航班信息!

\n\n");

else

{

do

{

p=p->next;

if(p)

{

{

printf("\t航班信息%d如下:

\n",k);

printf("\t航班号:

%d\n",p->hangbanhao);

printf("\t飞机号:

%d\n",p->feijihao);

printf("\t飞行周日:

%d\n",p->feixingzhouri);

printf("\t余票量:

%d\n\n",p->yupiaoliang);

}

k++;

}

}while(p);

}

}

7.voidzjyt()

{

inti,j,k=1;

linklistp=(linklist)malloc(sizeof(hangxian));

p=L;

if(p->next==NULL)

printf("还没有航班信息!

\n请输入航班信息!

\n\n");

else

{

printf("请输入特定某天的航班信息的日期!

\n");

scanf("%d",&i);

printf("\t%d号最近一天的航班信息如下所示:

\n\n",i);

do

{

p=p->next;

j=p->feixingzhouri-i;

if(fabs(j)<=1)

{

{

printf("\t航班信息%d如下:

\n",k);

printf("\t航班号:

%d\n",p->hangbanhao);

printf("\t飞机号:

%d\n",p->feijihao);

printf("\t飞行周日:

%d\n",p->feixingzhouri);

printf("\t余票量:

%d\n\n",p->yupiaoliang);

k++;

}

}

elseif(p->next==NULL)

printf("\t没有航班信息!

\n");

}while(p->next);

}

}

8.voidtuipiaoyewu()

{

linklistp=(linklist)malloc(sizeof(hangxian));

p=L;

if(p->next==NULL)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1