#include
#include
#include
typedefstructfeiji//存储结构结构体
{
charn[20];//航班号
charqd[20];//起点
charzd[20];//终点
chartime[10];//时间
charysps[10];//预售票数
charscps[10];//售出票数
};
structfeijihb[50];//结构体数组
intnum;//全局变量代表航班信息数量用于控制循环
voidduqu()//从文件中读取信息到结构体
{
FILE*fp;//文件指针
num=0;//初始化航班信息数目
if((fp=fopen("D:飞机航班.txt","r"))==NULL)//如果直接打开失败
{
if((fp=fopen("D:飞机航班.txt","w+"))==NULL)//则通过创建文件的方式来打开文
件
{
printf("文件读取失败!");
return;
}
}
while(!feof(fp))//fp指向的位置为空时,feof函数的值为0
{
fread(&hb[num],sizeof(structfeiji),1,fp);
num++;//数目加一
}
num--;
fclose(fp);//关闭文件指针
}
voidxieru()//将结构体中的信息写入到文件中
{
FILE*fp;//定义文件指针
inti;
if((fp=fopen("D:飞机航班.txt","w"))==NULL)//直接打开文件
{
printf("文件读取失败!");
return;
}
for(i=0;i
{
fwrite(&hb[i],sizeof(structfeiji),1,fp);
}
fclose(fp);
}
voidluru()//添加航班信息录入
{
inti;
printf("请输入该航班的航班号n");
scanf("%s",hb[num].n);//因为结构体中有num个航班信息,hb[num]是第num+1个,
所以用hb[num].n来接收输入的航班号
for(i=0;i
{
if(!strcmp(hb[i].n,hb[num].n))//如果有,则说明重复录入,提示并返回strcmp字
符串比较函数string.h
{
printf("已有该航班号号记录,请重新输入!n");
printf("请输入该航班的航班号n");
scanf("%s",hb[num].n);
}
}
printf("请输入该航班的起点n");//完善航班信息
scanf("%s",hb[num].qd);
printf("请输入该航班的终点n");
scanf("%s",hb[num].zd);
printf("请输入该航班的飞行时间(星期)n");
scanf("%s",hb[num].time);
printf("请输入该航班的剩余票数n");
scanf("%s",hb[num].ysps);
printf("请输入该航班的已售票数n");
scanf("%s",hb[num].scps);
num++;//添加后全局变量num航班信息数量加一
xieru();//写入到文件中
}
voidliulan()//浏览航班信息
{
inti;
if(num==0)//总量为0则无航班信息记录
{
printf("无任何记录!n");
}
for(i=0;i
{
printf("航班号:%s起点:%s终点:%s时间:%s预售票数:%s已售票
数:%sn",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps);
}
}
voidchaxun()//查询
{
inti=0,b=0;
charc[20];
while(i!=1&&i!=2&&i!=3&&i!=4)//若输入的值不是1234中的一个,则不断输出下边
的信息
{
printf("1.按航班号查询n2.按起点查询n3.按终点查询n4.按飞行时间查询n");
scanf("%d",&i);
}
switch(i)
{
case1:printf("请输入航班号:");//按航班号查询
scanf("%s",c);//用字符串C接收用户输入的航班号
for(i=0;i
号相同的
{
if(!strcmp(hb[i].n,c))//若有相同,则输出该航班信息
{
printf("航班号:%s起点:%s终点:%s时间:%s预售票数:%s
已售票数:%sn",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps);
b++;//改变标示位
}
}
if(b==0)//查看表示位是否改变
printf("无记录!n");
return;
case2:printf("请输入起始地点:");//按起始地点查询
scanf("%s",c);
for(i=0;i
{
if(!strcmp(hb[i].qd,c))
{
printf("航班号:%s起点:%s终点:%s时间:%s预售票数:%s
已售票数:%sn",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps);
b++;
}
}
if(b==0)
printf("无记录!n");
return;
case3:printf("请输入终点:");//按终点查询
scanf("%s",c);
for(i=0;i
{
if(!strcmp(hb[i].zd,c))
{
printf("航班号:%s起点:%s终点:%s时间:%s预售票数:%s
已售票数:%sn",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps);
b++;
}
}
if(b==0)
printf("无记录!n");
return;
case4:printf("请输入航班飞行时间:");//按时间查询
scanf("%s",c);
for(i=0;i
{
if(!strcmp(hb[i].time,c))
{
printf("航班号:%s起点:%s终点:%s时间:%s预售票数:%s
已售票数:%sn",hb[i].n,hb[i].qd,hb[i].zd,hb[i].time,hb[i].ysps,hb[i].scps);
b++;
}
}
if(b==0)
{printf("无记录!n");}
return;
}
}
voidshanchu()//删除航班信息
{
inti,j;
charb[20];
printf("请输入要删除的航班号n");//输入要删除的航班号
scanf("%s",b);
for(i=0;i
{
if(!strcmp(hb[i].n,b))//若找到
{
for(j=i;j
{
hb[j]=hb[j+1];
}
num--;//航班信息数目减一
xieru();//写入文件中
printf("删除成功!n");
return;
}
}
printf("无该卡号记录,请核实后再行删除!n");
}
voidmain()
{
inti=1;
duqu();
while(i)
{
printf("*********************************************************************
***********");
printf("******按照下面菜单提示进行操作******nn");
printf("********1.录入新的航班信息********n");
printf("********2.浏览所有的航班信息********n");
printf("********3.查询某一航班信息********n");
printf("********4.删除某一航班信息********n");
printf("********0.退出系统********n");
printf("*********************************************************************
***********");
scanf("%d",&i);
switch(i)
{
case1:luru();break;
case2:liulan();break;
case3:chaxun();break;
case4:shanchu();
}
}
}
本文发布于:2023-02-23 20:53:15,感谢您对本站的认可!
本文链接:http://www.yoguilin.com/write/167715679666184.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |