标题:[原创]航空售票系统
只看楼主
没牙的狼
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-4-23
 问题点数:0 回复次数:10 
[原创]航空售票系统

自己写了一个小东西,有很多不足,欢迎大家指点,批评....
您的意见是我的动力..
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/************************************************************************************/
/************** 机票部分 *****************/
/************** ****************/
/************************************************************************************/

/***************************机票链表********************************/
typedef struct Plane
{
int tick;//票数
float TickTrend;
char number[10];
float FirstPiece;
float EndPiece;
char start[10];
char end[10];
struct Plane *next;
}PlaneLink;


/******************************************************************/
/****************************机票链表初始化**************************************/
PlaneLink *InitPlane()
{
PlaneLink *Q;
Q=(PlaneLink*)malloc(sizeof(PlaneLink));
if(Q==NULL)
return NULL;
Q->next=NULL;
return Q;
}
/**************************************************************************/
/******************************创建机票链表***********************************/
int CreatPlane(PlaneLink *Q)
{
int flag;
PlaneLink *s;
while(flag)
{
s=(PlaneLink*)malloc(sizeof(PlaneLink));
printf("请输入航班票号:");
scanf("%s",s->number);
printf("请输入起始城市:");
scanf("%s",s->start);
printf("请输入到达城市:");
scanf("%s",s->end);
/***********************************************/
printf("请输入机票原价格:");
scanf("%f",&s->FirstPiece);
while(s->FirstPiece<=0)
{
getchar();
printf("请输入机票原价格:");
scanf("%f",&s->FirstPiece);
}
printf("请输入折扣后价格:");
scanf("%f",&s->EndPiece);
while(s->EndPiece<=0)
{
getchar();
printf("请输入机票原价格:");
scanf("%f",&s->EndPiece);
}
/***********************************************/
printf("请输入机票欲售数量:");
scanf("%d",&s->tick);
while(s->tick<=0)
{
getchar();
printf("请输入机票欲售数量:");
scanf("%d",&s->tick);
}
/***********************************************/
s->TickTrend=(s->EndPiece/s->FirstPiece)*10;
s->TickTrend*=10;//把小数点后一位左移,6.3345->63.345
s->TickTrend=(int)//把实数变整数,如63.345=63
s->TickTrend=(float)s->TickTrend/10;//把整数变成实数,最终保留小数点后一位
s->next=Q->next;
Q->next=s;

printf("是否继续输入:(1/0)");
scanf("%d",&flag);
while(flag!=0&&flag!=1)
{
getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&flag);

}
}
printf("输入结束!\n");
return 1;
}
/********************************************************************/
/********************************查询飞机始发地*******************************/
int InsultPlace(PlaneLink *Q,char *pStart,char *pEnd,int pTick)
{
int n=0;
PlaneLink *q;
q=Q;
while(q->next!=NULL)
{
q=q->next;
if((strcmp(pStart,q->start)||strcmp(pEnd,q->end))==0)
{
printf("符合条件的班次:\n");
printf("|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
printf("|%8s|%8s|%8s|%8.1f|%10.1f|%8.1f|%8d|\n",q->number,q->start,q->end,q->FirstPiece,q->EndPiece,q->TickTrend,q->tick);
n++;
}

}
if(n==0)
return 0;
else
return 1;
}
/********************************************************************/

/**********************************************************************/
int InsultPlaneNumber(PlaneLink *Q,char *Tname)
{
int InsultTick=0,Iflag;
PlaneLink *p;
p=Q;
while(p->next!=NULL)
{
p=p->next;
if((strcmp(p->number,Tname))==0)
{
if(p->tick==0)
{
printf("对不起,机票以欲售完!");
return InsultTick;
}

printf("您所选择的班次剩余%d张票:\n",p->tick);
printf("请选择购买票数:");
scanf("%d",&InsultTick);
getchar();//可纠正输入错误
if(InsultTick>p->tick)
{
printf("所剩机票少于旅客所需机票,是否全部购买?(1/0)");
scanf("%d",&Iflag);
while(Iflag!=0&&Iflag!=1)
{

getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&Iflag);
}
if(Iflag==1)
{
p->tick=0;
return InsultTick;
}
else
{
printf("请重新选择路线!\n");
InsultTick=0;
return InsultTick;
}
}
else

{
p->tick=p->tick-InsultTick;
return InsultTick;
}

}
}
if(p->next==NULL)
printf("没有该班次.请重新输入");
return InsultTick;
}
/**************************************************************************/


/**********************************打折票查询****************************************/
int InsultOnsaleTick(float Ttick,PlaneLink *Q)
{
int n=0;
PlaneLink *q;
q=Q;
if(q->next==NULL)
{
printf("无机票信息!\n");
return 0;
}
while(q->next!=NULL)
{
q=q->next;
if(Ttick==q->TickTrend)
{
printf("符合条件的班次:\n");
printf("|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
printf("|%8s|%8s|%8s|%8.1f|%10.1f|%8.1f|%8d|\n",q->number,q->start,q->end,q->FirstPiece,q->EndPiece,q->TickTrend,q->tick);
n++;
}
}
if(n==0)
return 0;
else
return 1;
}
/**************************************************************************/

/********************输出机票链表***************************/
void PrintPlane(PlaneLink *Q)
{
PlaneLink *q;
q=Q;
if(q->next==NULL)
printf("没有输入机票!");
else
{
printf("|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
while(q->next!=NULL)
{
q=q->next;
printf("|%8s|%8s|%8s|%8.1f|%10.1f|%8.1f|%8d|\n",q->number,q->start,q->end,q->FirstPiece,q->EndPiece,q->TickTrend,q->tick);

}

}
}
/******************************************************************************************/

/************************************************************************************/
/************** 机票完毕 *****************/
/************** ****************/
/************************************************************************************/

/************************************************************************************/
/************** 旅客部分 *****************/
/************** ****************/
/************************************************************************************/

/************************************旅客链表***************************************/
typedef struct Trust
{
int TrustTick;
int TrustNumber;
char TrustName[10];
char TrustEnd[10];
char TrustStart[10];
char TrustPlane[10];
struct Trust *next;

}TrustLink;
/********************************************************************************/

/***********************************初始化旅客************************************/
TrustLink *InitTrust()
{
TrustLink *Q;
Q=(TrustLink*)malloc(sizeof(TrustLink));
Q->next=NULL;
return Q;
}
/*******************************************************************************/

/**********************************构造旅客链表**********************************/
int CreatTurst(TrustLink *Q,PlaneLink *L)
{
int flag,Cflag;
float Ctick;
TrustLink *p;
while(flag)
{
p=(TrustLink*)malloc(sizeof(TrustLink));
printf("请选择查询方式(1.始发与终点 2.特价票 0.返回上一步):\n");
scanf("%d",&Cflag);
switch(Cflag)
{
case 1:
printf("请输入始发站:");
scanf("%s",p->TrustStart);
printf("请输入终点站:");
scanf("%s",p->TrustEnd);
if(InsultPlace(L,p->TrustStart,p->TrustEnd,p->TrustTick)==1)
{
printf("请输入你选择的航班号:");
scanf("%s",p->TrustPlane);
if((p->TrustTick=InsultPlaneNumber(L,p->TrustPlane))==0)
{
printf("请重新选择.\n");
break;
}
printf("请输入旅客姓名:");
scanf("%s",p->TrustName);
printf("请输入有效证件号码:");
scanf("%d",&p->TrustNumber);
p->next=Q->next;
Q->next=p;
}
else
printf("对不起,没有符合的机票!\n");
printf("是否继续查询(1/0):");
scanf("%d",&flag);
while(flag!=0&&flag!=1)
{

getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&flag);
}
break;
case 2:
printf("请输入您期望的折扣价:");
scanf("%f",&Ctick);
while(Ctick<0||Ctick>10)
{

getchar();
printf("输入错误!\n");
printf("请输入您期望的折扣价:");
scanf("%f",&Ctick);
}

if((InsultOnsaleTick(Ctick,L))==1)
{
printf("请输入你选择的航班号:");
scanf("%s",p->TrustPlane);
if((p->TrustTick=InsultPlaneNumber(L,p->TrustPlane))==0)
{
printf("请重新选择.\n");
break;
}
printf("请输入始发站:");
scanf("%s",p->TrustStart);
printf("请输入终点站:");
scanf("%s",p->TrustEnd);
printf("请输入旅客姓名:");
scanf("%s",p->TrustName);
printf("请输入有效证件号码:");
scanf("%d",&p->TrustNumber);
p->next=Q->next;
Q->next=p;
}
else
printf("对不起,没有符合的机票!\n");
printf("是否继续查询(1/0):");
scanf("%d",&flag);
while(flag!=0&&flag!=1)
{

getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&flag);
}
break;
case 0:
return 0;
}
}
}
/***********************************************************************/
/******************************输出客户资料****************************/
void PrintTrust(TrustLink *Q)
{
TrustLink *p;
p=Q;
if(p->next==NULL)
printf("无客户资料!\n");
else
{
printf("全部客户资料:\n");
while(p->next!=NULL)
{
p=p->next;
printf("|客户姓名|有效证件|航班编号|始发站|终点站|机票数量|\n");
printf("|%8s|%8d|%8s|%6s|%6s|%8d|\n",p->TrustName,p->TrustNumber,p->TrustPlane,p->TrustStart,p->TrustEnd,p->TrustTick);
}
}
}
/********************************************************************************************/


/********************************************************************************************/
/*************** 菜单 ****************/
/********************************************************************************************/
int menu()
{
int flag;
printf("\n\n\t\t\t\t航空售票系统\t\t\t\n");
printf("********************************************************************************\n");
printf("1.输入航班资料\t\t\t2.查询所需航班\t\t\t3显示航班资料\t\t\t\n");
printf("4.显示客户资料\t\t\t5.存储信息\t\t\t6.调取信息\t\t\t\n");
printf("0.退出程序\n");
printf("\n********************************************************************************\n");
printf("请输入操作方式:");
scanf("%d",&flag);
getchar();

return flag;
}
/********************************************************************************************/

/********************************************************************************************/
/*************** 操作功能 ****************/
/********************************************************************************************/
void UseSystem()
{
int Uflag,Mflag;
PlaneLink *Q,*q;
TrustLink *T,*t;
Q=InitPlane();
T=InitTrust();

while(Uflag)
{
Mflag=menu();

switch(Mflag)
{
case 1:CreatPlane(Q);
system("cls");
break;
case 2:CreatTurst(T,Q);

system("cls");

break;
case 3:PrintPlane(Q);
printf("请按任意键继续........\n");
getch();

system("cls");
break;
case 4:PrintTrust(T);
printf("请按任意键继续........\n");
getch();

system("cls");
break;
case 5:Save(Q,T);
printf("请按任意键继续........\n");
getch();

system("cls");
break;
case 6:
q=InitPlane();
t=InitTrust();
Load(q,t);
printf("请按任意键继续........\n");
getch();

system("cls");
break;
}
if(Mflag==0)

break;

}

}
/*************************************************************************************/

/********************************************************************************************/
/*************** 储存信息 ****************/
/********************************************************************************************/
int Save(PlaneLink *Q,TrustLink *L)
{
int Sflag;
PlaneLink *q;
TrustLink *t;
FILE *fp;
q=Q;
t=L;
if(t->next==NULL&&q->next==NULL)
{
printf("未建立信息!\n");
return 0;
}
printf("存储信息(1.旅客信息 2.机票信息 0.返回):");
scanf("%d",&Sflag);
while(Sflag!=0&&Sflag!=1&&Sflag!=2)
{

getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&Sflag);
}
switch(Sflag)
{
case 1:
if(t->next==NULL)
{
printf("未建立客户资料!\n");
printf("存储失败!\n");
return 0;
}
if((fp=fopen("D:/客户资料.txt","w+"))==NULL)
{
printf("输入路径错误!\n");
return 0;
}
fprintf(fp,"\t\t\t\t\t航空客户资料\t\t\t\t\n");
fprintf(fp,"---------------------------------------------------------------------------------------------------------\n");
fprintf(fp,"\t\t|客户姓名|有效证件|航班编号|始发站|终点站|机票数量|\n");
while(t->next!=NULL)
{
t=t->next;
fprintf(fp,"|%8s|%8d|%8s|%6s|%6s|%8d|\n",t->TrustName,t->TrustNumber,t->TrustPlane,t->TrustStart,t->TrustEnd,t->TrustTick);
}
printf("客户资料在D盘存储成功.\n");

fclose(fp);
return 1;
case 2:

if(q->next==NULL)
{
printf("未建立即票资料!\n");
printf("存储失败!\n");
return 0;
}

if((fp=fopen("D:/机票资料.txt","w+"))==NULL)
{
printf("输入路径错误!\n");
return 1;
}
fprintf(fp,"\t\t\t\t\t航空公司机票资料\t\t\t\t\n");
fprintf(fp,"---------------------------------------------------------------------------------------------------------\n");
fprintf(fp,"\t\t|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
while(q->next!=NULL)
{
q=q->next;
fprintf(fp,"\t\t|%8s|%8s|%8s|%8.1f|%10.1f|%8.1f|%8d|\n",q->number,q->start,q->end,q->FirstPiece,q->EndPiece,q->TickTrend,q->tick);
}
printf("机票资料在D盘存储成功.\n");
fclose(fp);
return 1;
case 0:return 0;
}



}
/****************************************************************************************/


/********************************************************************************************/
/*************** 导入资料 ****************/
/********************************************************************************************/
int Load(PlaneLink *Q,TrustLink *T)
{
int Lflag;
PlaneLink *q;
TrustLink *t;
FILE *fp;

T->next=NULL;
Q->next=NULL;
printf("请选择导入资料(1.机票资料 2.客户资料):");
scanf("%d",&Lflag);
while(Lflag!=0&&Lflag!=1&&Lflag!=2)
{

getchar();
printf("输入错误!\n");
printf("是否继续输入:(1/0)");
scanf("%d",&Lflag);
}
switch(Lflag)
{
case 1:
if((fp=fopen("D:/机票资料.txt","r+"))==NULL)
{
printf("导入失败!\n");
return NULL;
}
printf("成功导入资料:\n");
fscanf(fp,"\t\t\t\t\t航空公司机票资料\t\t\t\t\n");
fscanf(fp,"---------------------------------------------------------------------------------------------------------\n");
fscanf(fp,"\t\t|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
//printf("\t\t\t航空公司机票资料\t\t\t\n");
//printf("----------------------------------------------------------------------------\n");
//printf("|航班编号|始发站 |终点站 |机票原价|机票折扣价|机票折扣|机票数量|\n");
do
{
q=(PlaneLink*)malloc(sizeof(PlaneLink));
fscanf(fp,"%s\n%s%s%f%f%f%d\n",q->number,q->start,q->end,&q->FirstPiece,&q->EndPiece,&q->TickTrend,&q->tick);
//printf("|%8s|%8s|%8s|%8.1f|%10.1f|%8.1f|%8d|\n",q->number,q->start,q->end,q->FirstPiece,q->EndPiece,q->TickTrend,q->tick);
printf("%s\n",q->number);
q->next=Q->next;
Q->next=q;
}while(!feof(fp));
fclose(fp);
PrintPlane(q);
return Q;

case 2:
if((fp=fopen("D:/客户资料.txt","r+"))==NULL)
{
printf("导入失败!\n");
return NULL;
}
printf("成功导入资料:\n");
fscanf(fp,"\t\t\t\t\t航空客户资料\t\t\t\t\n");
fscanf(fp,"---------------------------------------------------------------------------------------------------------\n");
fscanf(fp,"\t\t|客户姓名|有效证件|航班编号|始发站|终点站|机票数量|\n");
printf("\t\t\t\t\t航空客户资料\t\t\t\t\n");
printf("---------------------------------------------------------------------------------------------------------\n");
printf("\t\t|客户姓名|有效证件|航班编号|始发站|终点站|机票数量|\n");
do
{
t=(TrustLink*)malloc(sizeof(TrustLink));
fscanf(fp,"|%8s|%8d|%8s|%6s|%6s|%8d|\n",t->TrustName,t->TrustNumber,t->TrustPlane,t->TrustStart,t->TrustEnd,t->TrustTick);
printf(fp,"|%8s|%8d|%8s|%6s|%6s|%8d|\n",t->TrustName,t->TrustNumber,t->TrustPlane,t->TrustStart,t->TrustEnd,t->TrustTick);
t->next=T->next;
T->next=t;
}while(!feof(fp));
fclose(fp);
return T;

case 0:return NULL;
}
}

/********************************************************************************************/
/*************** 主函数 ****************/
/********************************************************************************************/
void main()
{
UseSystem();


system("pause");

}




[此贴子已经被作者于2007-2-9 19:38:38编辑过]

搜索更多相关主题的帖子: 航空 机票 系统 售票 include 
2007-02-09 10:48
yangxu0703
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-1-15
得分:0 
哇,太复杂了,什么时候能学到可以会编这种程序,此生无撼了..
2007-02-09 13:02
pc新手
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-1-28
得分:0 
以下是引用yangxu0703在2007-2-9 13:02:31的发言:
哇,太复杂了,什么时候能学到可以会编这种程序,此生无撼了..


不进则退
2007-02-09 13:18
delpiero
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-2-8
得分:0 
LZ  我俩一个学校的你是哪届的?甚么专业啊?有空认识一下

2007-02-09 14:31
没牙的狼
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-4-23
得分:0 
回复:(delpiero)LZ 我俩一个学校的你是哪届的?甚...
我大三的,计算机

2007-02-09 14:52
delpiero
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-2-8
得分:0 
我大二的 一个专业的 呵呵 学哥好啊

2007-02-09 14:57
陈翠
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-2-5
得分:0 
哇,编这程序的人是哪个啊,还收徒弟不

2007-02-09 19:33
没牙的狼
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-4-23
得分:0 
回复:(陈翠)哇,编这程序的人是哪个啊,还收徒弟不
我们都是学生

2007-02-09 19:39
fangfangff
Rank: 1
等 级:新手上路
威 望:2
帖 子:479
专家分:0
注 册:2006-12-22
得分:0 

编译器是哪个啊
怎么我在VC++里面编译不通过啊!!


千里冰封---My Love 尽管相隔千里 , 依然拥有冰封
2007-06-10 11:46
多多だЬù哭
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-6-24
得分:0 
有错误拉~!!
2008-06-25 14:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-120329-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137270 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved