📄 address.txt
字号:
sunlin29 2006-12-09 00:12
先一.问题描述
航班查询系统
系统功能
查询起飞城市至抵达城市的航班情况
查询起飞城市的航班情况
查询抵达城市的航班情况
航班情况
航班号,起降时间,起飞城市,抵达
城市,航班票价,票价折扣
二、系统分析
通过对题目要求的阅读,要求本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。
具体分析如下:
1、录入功能
可以录入航班信息,如录入航班号,起飞城市,到达城市,起飞时间,到达时间,飞机票数,票价及折扣。利用结构体数组存放数据。
2、查询功能
可以查询航班的各项信息,如输入航班号可以查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,可以查询航班号。
3、订票功能
可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。利用结构体数组存放数据。
4、退票功能
可以退票并且记录乘客的相关信息以及退票信息。利用结构体数组存放数据。
5、修改功能
可以根据需要由管理员对航班信息进行修改更正。
三、系统设计
为了完成需求分析的功能,我设计了九个小模块来完成:查询模块,订票模块,退票模块,信息保存模块,信息读取模块,信息输出(显示)模块,信息录入模块,信息修改模块,信息删除模块。
1、查询模块
定义search()函数完成查询功能。
2、订票模块
定义book()函数完成订票功能。
3、退票模块
定义cancel()函数完成退票功能。
4、信息保存模块
定义save()函数完成航班信息存储功能;用c_save()函数完成用户信息存储功能。
5、信息读取模块
定义read()函数完成航班信息读取功能;用c_read()函数完成用户信息读取功能。
6、信息输出(显示)模块
定义print()函数完成航班信息输出显示功能;用c_print()函数完成用户信息输出显示功能。
7、信息录入模块
定义input()函数完成航班信息录入功能。
8、信息修改模块
定义edit()函数完成航班信息修改功能。
9、信息删除模块
定义del()函数完成航班信息删除功能。
10、相关存储结构的说明
为了能够方便的存储数据,这里利用结构体数据来存储航班信息和用户信息
航班信息:struct air{ 用户信息:struct customer{
若干航班信息}s[N] 若干用户信息}c[N]
其中N为预定义正整常数。
11、主流程图和各个模块流程图:
图(1)订票系统主流程图
图(2)查询模块流程图
图(3)订票模块流程图
图(4)退票模块流程图
图(5)信息存储模块
左图为save();右图为c_save()
图(6)信息读取模块
左图为read();右图为c_read()
图(7)信息输出显示模块
左图为print();右图为c_print()
1、查询模块
void search()//查询模块
{
char start[10];
char end[10];
char temp[3];
char num[10];
int n;
do
{
printf("请选择查找方式:\n\n");//打印查询方式菜单
printf(
"1.按航班号查找\n\n"
"2.按航线查找\n\n"
"0.返回\n\n");
printf(
"请在0--2中选择:\n\n");
scanf("%d",&n);//读取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("请输入航班号:\n");
scanf("%s",num);//航班号
break;
case 2:
printf("请输入起始站名称:\n");
scanf("%s",start);//读取起始站
printf("请输入终点站名称:\n");
scanf("%s",end);//终点站
break;
}
read();//调用读取函数
for(i=0;i<m;i++)
{
if((strcmp(s.start,start)==0&&strcmp(s.end,end)==0)||strcmp(s.num,num)==0)//按终点站起始站判断输出条件
{
printf("\n查找航班信息成功!\n");
printf("航班号 起始站 终点站 起飞时间 到达时间 机票数 票价(¥) 折扣\n");
printf(PRINT);//打印信息
break;
}
}
printf(
"没有您需要的信息或查找完毕:\n\n"
"是否继续查找?请键入yes或no以回车键结束\n");
scanf("%s",temp);
}while(strcmp(temp,"yes")==0);//判断结束
}
2、订票模块
void book()//订票模块
{
int n;
char temp[3];
do
{
search();//调用查询模块
printf("请输入您要订的机票数以回车结束:\n");
scanf("%d",&n);//读取所订机票数
if(n<0)
{
printf("请输入有效的机票数!\n");//判断机票数是否出错
break;
}
if(s.count!=0&&s.count>=n)//判断是否出错
{
s.count=s.count-n;
printf("请输入您的姓名:\n");
scanf("%s",c[k].name); //读取乘客姓名
printf("请输入5位身份证号(ID):\n");
scanf("%s",c[k].id);//读取id
strcpy(c[k].num,s.num);//替换航班号
strcpy(c[k].start,s.start);//替换起始站
strcpy(c[k].end,s.end);//替换终点站
strcpy(c[k].time,s.time);//替换起飞时间
strcpy(c[k].time1,s.time1);//替换到达时间
c[k].count=c[k].count+n;//替换机票数
c[k].price=s.price;//替换机票价格
c[k].zhekou=s.zhekou;//替换票价折扣
k++;
q++;
save();//调用保存函数
c_save();
print();
c_print();
printf("订票成功!\n\n");
break;
}
if(s.count<n)//判断是否出错
{
printf("请输入有效的机票数:\n");
break;
}
printf("是否继续? 请输入yes或no以回车键结束:\n");//判断是否继续订票
scanf("%s",temp);
}while(!strcmp(temp,"yes"));//判断结束
}
3、退票模块
void cancel()//退票模块
{
int n;
char temp[3];
do
{
search();//调用查询模块
c_read();//读取乘客信息
printf("请输入您要退的机票数目:\n");
scanf("%d",&n);//输入所退票数
if(n<0) //判断票数是否有效
printf("请输入有效的机票数!\n");
s.count=s.count+n;
c.count=c.count-n;
save(); //调用保存模块
k--;
q--;
c_save();//保存乘客信息
printf("退票成功!\n\n");
printf("是否继续? 请键入yes或no以回车结束:\n\n");//判断是否继续退票
scanf("%s",temp);
}while(!strcmp(temp,"yes"));//判断并跳出循环
getchar();
}
4、信息保存模块
void save()//保存模块程序
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("log.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("num.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&s,sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void c_save()//乘客信息
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("book.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("c_no.dat","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
for(k=0;k<q;k++)
if(fwrite(&c[k],sizeof(struct customer),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",q);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
5、信息读取模块
void read()//从文件读取信息模块
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("log.dat","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("num.dat","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++)
{
fread(&s,sizeof(struct air),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
void c_read()//乘客信息
{
FILE *fp,*fp1;//定义文件指针
if((fp=fopen("book.dat","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("c_no.dat","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&q);
fclose(fp1);//关闭文件
for(k=0;k<q;k++)
{
fread(&c[k],sizeof(struct customer),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
6、信息输出(显示)模块
void print()//打印模块
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -