您的位置首页百科问答

飞机订票系统设计

飞机订票系统设计

的有关信息介绍如下:

飞机订票系统设计

飞机订票系统

学生姓名:兰海军指导老师:易禹

摘要本系统主要是为了方便用户飞机订票,能使用户方便快捷的了解各航线信息。本系统设置了航线创建功能、浏览航班信息和查询航线信息功能、订票退票功能及查看剩余票数功能。在该系统当中,系统开发平台是Windows XP,程序设计设计语言采用Visual C++,数据库采用Microsoft Access,程序运行平台为Windows XP。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以在应用中解决实际问题。

关键词Access;Visual C++;飞机订票

目录

1问题描述与分析2

2数据结构设计描述3

3软件结构设计(系统功能模块图)3

4算法设计思想3

5调试分析6

6总结127参考文献138附录(源程序清单)14飞机订票系统要求可以实现如下功能:可以录入航班情况,可以查询某个航线的情况,如输入飞机到达城市,查询飞机航班情况;可以订票、退票。从问题的描述分析,该飞机定票系统必须具备以下几个功能模块:1)航线创建功能模块:包括终点站名、航班号、分机号、飞行日期、乘员定额、及余票量,准载人数等信息.。

2)浏览航班信息功能模块:查看创建的所有航线信息。

3)查询航线信息功能模块:可通过航班号查询,也可通过飞机到达地点查询。

4)订票功能模块:包括航班号、定票数量、订票客户姓名、舱位等级、身份证号码。所以采用如下方案:int tkt_sur;/*4.2.4我的心得也就这么多了,总之,不管学会的还是学不会的的

#include

#include

#include

#include

#include

#include

#include //overflow

#define ok 1

typedef struct Yidingkehu

{//单链表

char name;//已订票的客户姓名

int dingpiaoshu;//已订票数量

struct Yidingkehu *next1;//

}Yidingkehu,*Link;

typedef struct Weidingkehu

{//单链队

char name;//预订票的客户姓名

int yudingpiao;// 要订票数量

struct Weidingkehu *next2;//下一个链队结点指针

}Weidingkehu,*Qptr;

typedef struct Hangxian

{//创建一个含有六个信息的结构体

char hangbanhao;//航班号-

char feijihao;//飞机号

int feixingriqi;//起飞时间

int chenkerenshu;//座位数

int yupiao;//余票

char zhongdianzhai;//降落城市

struct Hangxian *next;//指向下一个链结点的指针

struct Yidingkehu *yiding;//定义一个指向已订票客户的头结点指针

struct Weidingkehu *yudingqueue;

}Hangxian,*Linklist;

Linklist InitLinklist();//01

int InsertLinklist(Linklist &head1);//02

void hbhchaxun();//通过航班号查询

void mddchaxun();//通过目的地查询

void lurugongneng();//初始化录入功能

void chaxungongnen();//查询功能

void dingpiaogongnen();//订票功能

void tuipiaogongnen();//退票功能

void main()

{

int n;

do{ //打印主界面

printf("\t 欢迎使用航空客运订票系统\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t==>1. 录入功能 ==\n");

printf("\t==>2. 查询功能 ==\n");

printf("\t==>3. 订票功能 ==\n");

printf("\t==>4. 退票功能 ==\n");

printf("\t==>5. 退出 ==\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t请选择:");

scanf("%d",&n);printf("\n");

switch(n)

{

case 1: lurugongneng();//录入功能

break;

case 2: chaxungongnen();//查询功能

break;

case 3: dingpiaogongnen();//订票功能

break;

case 4:tuipiaogongnen();//退票功能

break;

default :exit(0);//退出

}

}while(n==1||n==2||n==3||n==4);

}

void lurugongneng()//初始化的单链表*********************************************************录入功能

{

Linklist p;

//int m,n;

if(!p) exit(OVERFLOW);

printf("\t请依次输入下面几项内容:\n\n");//这里的输入采用一个个单独输入,避免了乱赋值的现象

printf("航班号\n");

gets(p->hangbanhao);//这里的二个gets主要是因为在回车键的输入,其中的第一个是来接收上次的回车

gets(p->hangbanhao);

printf("飞机号\n");

gets(p->feijihao);

printf("终点站\n");

gets(p->zhongdianzhai);

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

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

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

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

printf("余票数\n");

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

}

void chaxungongnen()//******************************************************************查询功能

{

int n;

printf("\t 查 找 航 线 信 息 \n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t==>1. 通过目的地查询 ==\n");

printf("\t==>2. 通过航班号查询 ==\n");

printf("\t+++++++++++++++++++++++++++++\n");

printf("\t请选择:");

scanf("%d",&n);

printf("\n");//格式化

switch(n)

{

case 1:mddchaxun();

break;

case 2:hbhchaxun();

break;

default :break;

}

}

void mddchaxun()//通过目的地查询

{

char c;

int m;

Linklist p=L;

printf("\t请输入要查询的目的地:");

gets(c);

gets(c);//原因同上

do{

p=p->next;

if(p)

{

m=strcmpi((*p).zhongdianzhai,c);//如果==的话则m=0;

if(m==0)

{

printf("\t航班信息:\n");

printf("\t航班号:%s\n",p->hangbanhao);

printf("\t飞机号:%s\n",p->feijihao);

printf("\t飞行时间:周%d\n",p->feixingriqi);

printf("\t余票量:%d\n",p->yupiao);

}

}

else

{//如果不匹配的话就做

printf("\t对不起没有你要找的目的地:\n\n"); m=0;

}

}while(m!=0);

}

void hbhchaxun()//通过目的地查询

{

char c;

int m;

Linklist p=L;

printf("\t请输入要查询的航班号:");

gets(c); gets(c);printf("\n");

do{

p=p->next;

if(p)

{

m=strcmpi((*p).hangbanhao,c);//如果==的话则m=0;这里的(*p).与p->的作用是一样的

if(m==0)

{

printf("\t航班信息:\n");

printf("\t航班号:%s\n",p->hangbanhao);

printf("\t飞机号:%s\n",p->feijihao);

printf("\t飞行时间:周%d\n",p->feixingriqi);

printf("\t余票量:%d\n\n",p->yupiao);

}

}

else

{//如果不匹配的话就做

printf("\t对不起没有你要找的航班号:\n"); m=0;

}

}while(m!=0);

}

void dingpiaogongnen()//***************************************************************订票功能

{

char c;

int m=1,piao,ydpiao=0,yd=0,n;//

gets(c);

printf("请输入终点站名:"); gets(c); printf("\n");

p=L->next;

if(p) {

do{//查找一下,是否有这个航班

if(!p)

{

printf("对不起,没有你要找的航班:\n\n");

goto loop1;

}

m=strcmpi(p->zhongdianzhai,c);

if(m==0)

{

printf("航班信息:\n");

printf("航班号:%s\n",p->hangbanhao);

printf("飞机号:%s\n",p->feijihao);

printf("飞行时间:周%d\n",p->feixingriqi);

printf("余票量:%d\n",p->yupiao);}

else p=p->next;

}while(m!=0);

if(m==0)

{

do{

printf("\n请输入你要订的票数:"); scanf("%d",&piao);

if(piao<=p->yupiao)

{

h=p->yiding;

if(h)

{

h1=h;

h=h->next1;

h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));

printf("请输入你的名字:");

gets(h->name);gets(h->name);

h->dingpiaoshu=piao;

h->next1=h1->next1;

h1->next1=h;

p->yupiao=p->yupiao-piao;

printf("订票成功:\n"); m=2;

}

}

else

{

printf("余票量:%d\n",p->yupiao);

printf("对不起,余票 %d 张不足,不能完成订票\n\n",p->yupiao);

printf(" 是否要重新订票?\n");

printf("需要请输入1 否则请按2 预订请输入3 : ");

scanf("%d",&m);

printf("\n");

if(m==3) goto loop3;

}

}while(m==1);

}

}

else if(!p)

{

loop3: struct Weidingkehu *q3;

printf("对不起,该航班的票已售完\n");

q.front=p->yudingqueue;

if(q.front==q.rear) printf("没有人预订票,是否要预订?\n");

else if(q.front!=q.rear) printf("已有人预订票,是否要预订?\n");

printf("预订请输入1 否则输入2 : ");

scanf("%d",&n);

printf("\n");

if(n==1)

{

printf("请输入你的姓名"); gets(q3->name); gets(q3->name);//q3不能指向name???

printf("请输入订票数"); scanf("%d",&q3->yudingpiao);

q3->next2=NULL;

q.rear->next2=q3;

q.rear=q3;

printf(" 你已经预订了 !\n");

}

}

loop1:;

}

void tuipiaogongnen()//***************************************************************退票功能

{

}

以上回答你满意么?