C语言飞机订票系统设计.docx
《C语言飞机订票系统设计.docx》由会员分享,可在线阅读,更多相关《C语言飞机订票系统设计.docx(9页珍藏版)》请在冰豆网上搜索。
![C语言飞机订票系统设计.docx](https://file1.bdocx.com/fileroot1/2022-11/23/10c70677-fb83-435c-a584-5f3be542f8b9/10c70677-fb83-435c-a584-5f3be542f8b91.gif)
C语言飞机订票系统设计
#include //标准输入、输出头文件
#include //包含字符串函数处理头文件
#include //包含动态存储与释放函数头文件
#defineN10000
structair //定义结构体数组
{
intnum;
charstart[20];
charover[20];
chartime[10];
intcount;
}s[N];
inti;
intm=0;
#definePRINT"%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定义输出格式
voidinput(); //输入航班信息
voidprint(); //输出航班信息
voidsave(); //保存航班信息
voidread(); //读取航班信息
voidsearch(); //查找航班信息
voidshanchu(); //删除航班信息
voiddingpiao();//订票信息
voidtuipiao(); //退票信息
voidxiugai(); //修改信息
voidmain()
{
int j;
printf(" ★---您好,欢迎进入中国民航管理系统!
---★\n");
printf("================================================================================\n");
do
{
printf(" --------☆ 1.输入航班信息 ☆--------\n\n"
" --------☆ 2.浏览航班信息 ☆--------\n\n"
" --------☆ 3.修改航班信息 ☆--------\n\n"
" --------☆ 4.查找航班信息 ☆--------\n\n"
" --------☆ 5.删除航班信息 ☆--------\n\n"
" --------☆ 6.订票信息 ☆--------\n\n"
" --------☆ 7.退票信息 ☆--------\n\n"
" --------☆ 0.退出 ☆--------\n\n");
printf("================================================================================\n");
printf("请在0-7中选择以回车键结束:
\n\n");
scanf("%d",&j);
switch(j)
{
case1:
input();//调用输入模块
break;
case2:
print();//调用打印模块
break;
case3:
xiugai();//调用修改模块
break;
case4:
search();//调用查找模块
break;
case5:
shanchu(); //调用删除模块
break;
case6:
dingpiao();//调用订票模块
break;
case7:
tuipiao();//调用退票模块
break;
case0:
;
break;
}
}while(j!
=0); //判断结束
printf("谢谢使用,再见!
\n");
}//主函数结束
voidinput()//打印模块程序
{
charf[]="2008china"; //设置密码
inty;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f); //读取密码
if(strcmp(f,"2008china")==0)
{
printf("请依次输入航班信息(机票数位0结束输入):
\n\n"
"完成输入信息请键入w以回车键结束\n\n"); //打印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i {
printf("请输入航班号:
\n");
scanf("%d",&s[i].num); //读取航班号
printf("请输入起始站:
\n");
scanf("%s",s[i].start);//读取起始站
printf("请输入终点站:
\n");
scanf("%s",s[i].over);//读取终点站
printf("请输入时间:
\n");
scanf("%s",s[i].time);//读取时间
printf("请输入机票数(机票数为0结束输入):
\n",m);
scanf("%d",&s[i].count);//读取机票数
m++;
printf("第%d个信息已经输完是否继续?
按任意键继续,按0结束",m);
scanf("%d",&y);
if(y==0)
{
save();//将结构体信息存盘
print();//输出输入的航班信息
break;
}
}
}
else
printf("输入密码错误!
请检查您的密码是否正确!
谢谢!
再见!
\n\n");
}
voidsave()//保存模块程序
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
for(i=0;i if(fwrite(&s[i],sizeof(structair),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!
\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
voidread()//从文件读取信息模块
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i {
fread(&s[i],sizeof(air),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
voidprint()//打印模块
{
charw[10];
read();//调用读取文件函数
printf("航班号 起始站 终点站 时间 机票数\n");
for(i=0;i {
printf(PRINT);//打印信息
}
printf("请按任意键回车键结束返回上层菜单以:
\n");
scanf("%s",w);
}
voidsearch()//查询模块
{
charname1[20];
charname2[20];
charii[10];
intn,no;
do
{
printf("请选择查找方式:
\n\n");//打印查询方式菜单
printf("1.按航班号查找\n\n"
"2.按终点站查找\n\n"
"3.按航线查找\n\n"
"0.返回\n\n");
printf("请在0-3中选择:
\n\n"
"按其他键以回车键结束返回主菜单:
\n\n");
scanf("%d",&n);//读取查找方式
if(n==0)
break;
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&no);//航班号
break;
case2:
printf("请输入终点站名称:
\n");
scanf("%s",name2);//读取终点站
break;
case3:
printf("请输入起始站名称:
\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:
\n");
scanf("%s",name2);//终点站
break;
}
read();//调用读取函数
for(i=0;i {
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件
{
printf("\n查找航班信息成功!
\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
if(s[i].num==no)//按航班号判断输出条件
{
printf("\n查找航班信息成功!
\n");
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);//打印信息
break;
}
}
no=0;//将航班号赋值为0
printf("没有您需要的信息或查找完毕:
\n\n"
"是否继续查找?
请键入yes或no以回车键结束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判断结束
}
voidshanchu()//删除模块
{
charname1[20];
charname2[20];
charii[10];
charf[]="2008china";//设置密码
intno,n;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"2008china")==0) //判断密码是否正确
{
do
{
printf("请选择删除以方式回车键结束:
\n\n");//打印删除方式菜单
printf("*1.按航班号删除\n\n"
"*2.按航线删除\n\n"
"*0.返回\n\n");
printf("请在0-2中选择以回车键结束:
\n");
scanf("%d",&n);//读取删除方式
if(n==0)
break; //跳出循环
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&no);//读取航班号
read();//调用读取函数
break;//跳出循环
case2:
printf("请输入起始站名称:
\n");
scanf("%s",name1);//读取起始站
printf("请输入终点站名称:
\n");
scanf("%s",name2);//读取终点站
read();//调用读取函数
break;//跳出循环
}
for(i=0;i {
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判断输入信息是否存在
{
s[i]=s[m-1];
m--;
}
}
printf("查找完毕或没有这个信息\n\n");
printf("是否继续删除\n");
printf("请键入yes或no以回车键结束\n");
scanf("%s",ii); //读取是否继续信息
save();//调用读取函数
if(!
strcmp(ii,"yes")) //判断是否继续删除
printf("请按任意键以回车键结束返回上层菜单:
\n");
break;
}while(n!
=1&&n!
=2&&n!
=3&&n!
=4&&n!
=0); //判断结束
}
else
printf("对不起密码错误!
您不是管理员,不能使用此项功能!
谢谢!
再见!
\n\n");
}
voiddingpiao()//订票模块
{
intn;
chara[10];
do
{
search();//调用查询模块
printf("请输入您要订的机票数以回车键结束:
\n");
scanf("%d",&n);//读取所订机票数
if(n<0)
{
printf("请输入有效的机票数!
\n");//判断机票数是否出错
break;
}
if(s[i].count!
=0&&s[i].count>=n)//判断是否出错
{
s[i].count=s[i].count-n;
save();//调用保存函数
printf("订票成功!
\n\n");
break;
}
if(s[i].count {
printf("请输入有效的机票数:
\n");
break;
}
printf("是否继续?
请输入yes或no以回车键结束:
\n");//判断是否继续订票
scanf("%s",a);
}while(!
strcmp(a,"yes"));//判断结束
}
voidtuipiao()//退票模块
{
intn;
chara[10];
do
{
search();//调用查询模块
printf("请输入您要退的机票数目:
\n");
scanf("%d",&n);//输入所退票数
if(n<0)//判断票数是否有效
printf("请输入有效的机票数!
\n");
s[i].count=s[i].count+n;
save(); //调用保存模块
printf("退票成功!
\n\n");
printf("是否继续?
请键入yes或no以回车键结束:
\n\n");//判断是否继续退票
scanf("%s",a);
}while(!
strcmp(a,"yes"));//判断并跳出循环
getchar();
}
voidxiugai() //修改模块
{
structxiu //定义结构体
{
intno;
charname1[20];
charname2[20];
chartime[20];
intcount;
}x[1];
charj[10];
charf[]="2008china";//设置密码
intn;
printf("请输入密码并以回车键结束:
\n\n");
scanf("%s",f);//读取密码
if(strcmp(f,"2008china")==0)//判断是否出错
{
read();//调用读取模块
do
{
printf("请选择修改方式:
\n\n"
"*1,按航班号修改:
\n\n"
"*2,按航线修改:
\n\n");
printf("请在1---2中修改以回车键结束:
\n\n");
scanf("%d",&n);//读取修改方式
switch(n)
{
case1:
printf("请输入航班号:
\n");
scanf("%d",&x[0].no);//读取航班号
break;
case2:
printf("请输入起始站:
\n");
scanf("%s",x[0].name1);//读取起始站
printf("请输入终点站:
\n");
scanf("%s",x[0].name2);//读取终点站
break;
}
for(i=0;i {
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判断输出条件
{
printf("航班号 起始站 终点站 时间 机票数\n");
printf(PRINT);
break;
}
}
x[0].no=0; //将结构体中的号为零
printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:
\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定义输入格式
s[i].num=x[0].no;//替换航班号
strcpy(s[i].start,x[0].name1);//替换其始站
strcpy(s[i].over,x[0].name2);//替换终点站
strcpy(s[i].time,x[0].time);//替换时间
s[i].count=x[0].count;//替换机票数
save();//调用保存模块
printf("是否继续?
请键入yes或no以回车键结束:
\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判断结束
}
else
printf("对不起密码错误!
您不是管理员,不能使用此项功能!
谢谢!
再见!
\n\n");
}